<?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>238071</bug_id>
          
          <creation_ts>2022-03-18 05:24:07 -0700</creation_ts>
          <short_desc>VideoFrame does not need to inherit from MediaSample</short_desc>
          <delta_ts>2022-03-24 10:05:22 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236496</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237884</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852683</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-18 05:24:07 -0700</bug_when>
    <thetext>VideoFrame does not need to inherit from MediaSample</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852686</commentid>
    <comment_count>1</comment_count>
      <attachid>455089</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-18 05:34:02 -0700</bug_when>
    <thetext>Created attachment 455089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853716</commentid>
    <comment_count>2</comment_count>
      <attachid>455384</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-22 09:40:07 -0700</bug_when>
    <thetext>Created attachment 455384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853722</commentid>
    <comment_count>3</comment_count>
      <attachid>455384</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-03-22 09:52:53 -0700</bug_when>
    <thetext>Comment on attachment 455384
Patch

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

r=me once the bots are happy

&gt; Source/WebCore/platform/VideoFrame.cpp:69
&gt; +#if PLATFORM(COCOA) &amp;&amp; USE(AVFOUNDATION)
&gt;  RefPtr&lt;VideoFrameCV&gt; VideoFrame::asVideoFrameCV()
&gt;  {
&gt; +    if (isCV())
&gt; +        return downcast&lt;VideoFrameCV&gt;(this);
&gt; +
&gt;      auto buffer = pixelBuffer();
&gt;      if (!buffer)
&gt;          return nullptr;
&gt; -
&gt;      return VideoFrameCV::create(presentationTime(), isMirrored(), rotation(), buffer);
&gt;  }
&gt; +#endif // PLATFORM(COCOA) &amp;&amp; USE(AVFOUNDATION)
&gt; +
&gt; +#if !PLATFORM(COCOA)
&gt; +RefPtr&lt;JSC::Uint8ClampedArray&gt; VideoFrame::getRGBAImageData() const
&gt; +{
&gt; +    return nullptr;
&gt; +}
&gt;  #endif

Can these move to VideoFrame.mm?

&gt; Source/WebCore/platform/VideoFrame.mm:46
&gt; +    const OSType imageFormat = kCVPixelFormatType_32RGBA;
&gt; +    RetainPtr&lt;CFNumberRef&gt; imageFormatNumber = adoptCF(CFNumberCreate(nullptr,  kCFNumberIntType,  &amp;imageFormat));
&gt; +
&gt; +    RetainPtr&lt;CFMutableDictionaryRef&gt; conformerOptions = adoptCF(CFDictionaryCreateMutable(0, 1, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +    CFDictionarySetValue(conformerOptions.get(), kCVPixelBufferPixelFormatTypeKey, imageFormatNumber.get());
&gt; +    PixelBufferConformerCV pixelBufferConformer(conformerOptions.get());

I think this be simplified to something like:

    auto pixelBufferConformer(@{ (__bridge NSString *)kCVPixelBufferPixelFormatTypeKey: @(kCVPixelFormatType_32RGBA) });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854069</commentid>
    <comment_count>4</comment_count>
      <attachid>455471</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-23 00:39:55 -0700</bug_when>
    <thetext>Created attachment 455471
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854076</commentid>
    <comment_count>5</comment_count>
      <attachid>455473</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-23 01:11:41 -0700</bug_when>
    <thetext>Created attachment 455473
GStreamer fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854097</commentid>
    <comment_count>6</comment_count>
      <attachid>455480</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-23 03:11:51 -0700</bug_when>
    <thetext>Created attachment 455480
GStreamer fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854103</commentid>
    <comment_count>7</comment_count>
      <attachid>455482</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-23 03:28:25 -0700</bug_when>
    <thetext>Created attachment 455482
GStreamer fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854113</commentid>
    <comment_count>8</comment_count>
      <attachid>455487</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-23 03:59:44 -0700</bug_when>
    <thetext>Created attachment 455487
GStreamer fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854122</commentid>
    <comment_count>9</comment_count>
      <attachid>455491</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-23 05:19:27 -0700</bug_when>
    <thetext>Created attachment 455491
GStreamer fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854150</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-23 06:55:51 -0700</bug_when>
    <thetext>Committed r291744 (248776@main): &lt;https://commits.webkit.org/248776@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455491.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854217</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-23 09:48:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/90705308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854722</commentid>
    <comment_count>12</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-24 10:03:29 -0700</bug_when>
    <thetext>It looks like this fixed the timeout in fast/mediastream/captureStream/canvas3d.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455089</attachid>
            <date>2022-03-18 05:34:02 -0700</date>
            <delta_ts>2022-03-22 09:40:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238071-20220318133400.patch</filename>
            <type>text/plain</type>
            <size>28730</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNlYWNmM2EzZDJjZWJi
ODFmNGEyYzQ1ZGNiNGYzNzQyNWE1NjA1YS4uNWNhNjEyMTQxM2E4ZmE4YzZlYTBjMGYwNzc4OTBm
M2FjMzMxNjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgTWVkaWFTYW1wbGUsIE1lZGlhU2Ft
cGxlQVZGT2JqQyBhbmQgVmlkZW9GcmFtZSBhY2NvcmRpbmcgdGhlIHNlcGFyYXRpb24uCisgICAg
ICAgIFRoaXMgaXMgYSByZWZhY3RvcmluZywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9G
cmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUubW06IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbToKKwogMjAyMi0wMy0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBs
ZU9ic2VydmVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSB0byBWaWRlb0ZyYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAppbmRleCAwMjlmNmUxOGUxZGJjYzg1ZmZkM2Y0MGZkN2E2YWQ2MzBmYzNjMjM2
Li5iNTc3MGYyMGM2YTA5ZjVhYWMxZTljM2YwNzAzODFjYTU1ZTgwMjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTIzMiw2ICsyMzIsNyBAQCBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorcGxhdGZvcm0vVmlkZW9GcmFtZS5tbQogcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5h
dGlvbkNvY29hLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNDQwZjg5Y2YxZjM0MmQ4ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uMzQ4MGI5
NTY5ZTk2MzIyOGIxZTcxY2NmZDNkZThiY2VhMTg4NWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3NSw2ICsxMDc1LDcg
QEAKIAkJNDExNEZFMzIyNUJFQkQxOTAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTE0RkUyRjI1QkVC
RDE4MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDEyMzA4MUIxMzhD
NDI5NzAwQkNDRkNBIC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdl
YkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NGQ0EgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayAqLzsgfTsKKwkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8qIFZpZGVvRnJh
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNUEz
REFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOUM5OTcxRjU5Qjk2MzAwOUQ3NDAzIC8q
IEZldGNoQm9keVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8qIEZldGNoQm9keVNvdXJjZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOUE5
MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThDMzk1RjFDOEYw
QUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOUFCMUY1OUM1
NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4QzM5NUIxQzhGMEE2MTAwNTFDOEEzIC8qIFJl
YWRhYmxlU3RyZWFtU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTI0MTgsNyArMjQxOSw2IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2
NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxp
c3QuaCAqLzsgfTsKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
MTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIx
RTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0Zy
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVB
M0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAv
KiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTky
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1
NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjcyMEIw
QzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIw
QTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg1
ODMsNiArODU4Myw3IEBACiAJCTQxMjA5RTk0MjE2RUE2OUEwMEE3M0ExMiAvKiBSVENDZXJ0aWZp
Y2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDZXJ0aWZp
Y2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk1MjE2RUMzNEUw
MEE3M0ExMiAvKiBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oOyBwYXRo
ID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk2MjE2RUMzNEYwMEE3M0ExMiAvKiBMaWJXZWJSVEND
ZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHA7IHBhdGggPSBsaWJ3ZWJydGMv
TGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTI4MjdCMDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvRnJhbWUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjlDOTgwMUY1ODYxQzcwMDlENzQwMyAvKiBSZWFkYWJs
ZVN0cmVhbVNpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1TaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjlDOTgxMUY1ODYx
QzcwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlYWRhYmxlU3RyZWFtU2luay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMjlDOTg3MUY1ODY2MkQwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1TaW5rLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjM5LDYgKzMwMjQwLDcgQEAKIAkJCQk4
M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oICovLAogCQkJCTdC
NUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLywKIAkJCQk3QjVBM0RB
RDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovLAorCQkJCTQxMjgyN0IwMjdFNEE5
QzMwMDVBRERFMiAvKiBWaWRlb0ZyYW1lLm1tICovLAogCQkJCTQxREVFRkI0MjcxOUJBMTkwMENC
OEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLywKIAkJCQk0MTYwNDkzMTI3NDNCMEU3MDBB
ODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oICovLAogCQkJCTUxNUY3OTUxMUNGQ0Ez
QzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovLApAQCAtMzczMDUs
NiArMzczMDcsNyBAQAogCQkJCTUxRjE3NTYzMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29y
a2VySm9iLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU2NDFGM0VCQzgzMDBDNzQ5NTAgLyog
U2VydmljZVdvcmtlckpvYkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1NjkxRjQ1
MzlCOTAwQjU0REVEIC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTI4MjdCMjI3RTRBQzNDMDA1QURERTIgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODM4Q0E2QkQxRkMwREZFOTAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1NkExRjQ1MzlDMDAwQjU0REVEIC8q
IFNlcnZpY2VXb3JrZXJKb2JUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU2NjFGM0VC
QzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTM3OTQyLDcgKzM3OTQ1LDYgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBEMzdBREIgLyogVmVs
b2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0Qg
LyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFRUYzQjI1
Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0JFMzdGODcyN0JCQjcwODAwN0E2Q0QzIC8qIFZpZGVvRnJhbWVDVi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJS
VEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRl
b0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlh
U2FtcGxlLmgKaW5kZXggOTQwNzI1OGFhMTk5NGM1ZGY1Mjc0MGE1NDkxYzQ5YjJkZTAwYTBkMC4u
YTg1NjFkZjQ0OGFiNjYwMDZkOTI5OWMyY2Y0YWY0MjYyM2EwNGFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJGb3Vy
Q0MuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CiAj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nLmg+CiAKQEAgLTkyLDggKzkyLDYgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFs
IFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VE
YXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAgZW51bSBTYW1wbGVGbGFncyB7
CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAxIDw8IDAsCkBAIC0xMTEsMjAg
KzEwOSw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxCeXRl
UmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCi0gICAg
ZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIFVw
c2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0gICAgICAgIExlZnQgPSAyNzAs
Ci0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90YXRpb24oKSBjb25zdCB7IHJl
dHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWlycm9yZWQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgcGl4ZWxGb3Jt
YXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVh
bCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQ
cm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4g
ZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNwbGF5aW5nKCkgY29uc3QgeyBy
ZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAgIGJvb2wgaGFzQWxwaGEoKSBj
b25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAgLTE5MSw3ICsxNzUsNiBAQCBz
dHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAgICAgRmxvYXRTaXplIGRpc3Bs
YXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAgICAgUGxhdGZvcm1WaWRlb0Nv
bG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4NCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJWaWRlb0luZm8pIGNvbnN0IGZp
bmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25jYXN0PGNvbnN0IFZpZGVvSW5m
bz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6ZSA9PSBvdGhlci5zaXplICYm
IGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJpdERlcHRoID09IG90aGVyLmJp
dERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFjZSAmJiByb3RhdGlvbiA9PSBv
dGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIuYXRvbURhdGEpIHx8IChhdG9t
RGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0gKm90aGVyLmF0b21EYXRhKSk7
CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYgZGlzcGxheVNpemUgPT0gb3Ro
ZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0RGVwdGggJiYgY29sb3JTcGFj
ZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYmICFvdGhlci5hdG9tRGF0YSkg
fHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9tRGF0YSA9PSAqb3RoZXIuYXRv
bURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OSw2IEBAIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24+IHsKLSAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNp
ZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Umln
aHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0Ci0g
ICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dBcmd1bWVudDsK
IHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZWU3OWU1ODJlMmEwYWZh
OWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uODgyN2I3OTA1NTdkZWM2MjlhYWVhZTczZmQ4M2Rh
YzUwOTEyOTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTM0
LDEwNiArMzQsNDAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WaWRlb0ZyYW1lOjpWaWRl
b0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVv
Um90YXRpb24gcm90YXRpb24pCitWaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uKQogICAgIDog
bV9wcmVzZW50YXRpb25UaW1lKHByZXNlbnRhdGlvblRpbWUpCiAgICAgLCBtX2lzTWlycm9yZWQo
aXNNaXJyb3JlZCkKICAgICAsIG1fcm90YXRpb24ocm90YXRpb24pCiB7CiB9CiAKLVZpZGVvRnJh
bWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OwotCi1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJl
c2VudGF0aW9uVGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsK
LX0KLQotVmlkZW9GcmFtZTo6Um90YXRpb24gVmlkZW9GcmFtZTo6cm90YXRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBtX3JvdGF0aW9uOwotfQotCi1ib29sIFZpZGVvRnJhbWU6OmlzTWlycm9y
ZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzTWlycm9yZWQ7Ci19Ci0KLVdlYkNvcmU6OlBs
YXRmb3JtU2FtcGxlIFZpZGVvRnJhbWU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4geyBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGUsIHsgfSB9Owot
fQotCi1QbGF0Zm9ybVNhbXBsZTo6VHlwZSBWaWRlb0ZyYW1lOjpwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdAotewotICAgIHJldHVybiBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFt
ZVR5cGU7Ci19Ci0KLU1lZGlhVGltZSBWaWRlb0ZyYW1lOjpkZWNvZGVUaW1lKCkgY29uc3QKLXsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1NZWRpYVRp
bWUgVmlkZW9GcmFtZTo6ZHVyYXRpb24oKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUF0b21TdHJpbmcgVmlkZW9GcmFtZTo6dHJhY2tJ
RCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsK
LX0KLQotc2l6ZV90IFZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpv
ZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikKLXsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IE1lZGlhVGltZSYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLVJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRlTm9uRGlzcGxh
eWluZ0NvcHkoKSBjb25zdAotewotICAgIENSQVNIKCk7Ci19Ci0KLU1lZGlhU2FtcGxlOjpTYW1w
bGVGbGFncyBWaWRlb0ZyYW1lOjpmbGFncygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhU2Ft
cGxlOjpTYW1wbGVGbGFnczo6Tm9uZTsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50
U3RyZWFtJikgY29uc3QKLXsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjppbml0aWFsaXplQ2hhcmFj
dGVyaXN0aWNzKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZp
ZGVvUm90YXRpb24gcm90YXRpb24pCit2b2lkIFZpZGVvRnJhbWU6OmluaXRpYWxpemVDaGFyYWN0
ZXJpc3RpY3MoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90
YXRpb24gcm90YXRpb24pCiB7CiAgICAgY29uc3RfY2FzdDxNZWRpYVRpbWUmPihtX3ByZXNlbnRh
dGlvblRpbWUpID0gcHJlc2VudGF0aW9uVGltZTsKICAgICBjb25zdF9jYXN0PGJvb2wmPihtX2lz
TWlycm9yZWQpID0gaXNNaXJyb3JlZDsKLSAgICBjb25zdF9jYXN0PFZpZGVvUm90YXRpb24mPiht
X3JvdGF0aW9uKSA9IHJvdGF0aW9uOworICAgIGNvbnN0X2Nhc3Q8Um90YXRpb24mPihtX3JvdGF0
aW9uKSA9IHJvdGF0aW9uOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIFVTRShBVkZPVU5EQVRJT04pCiBSZWZQdHI8VmlkZW9GcmFtZUNWPiBWaWRlb0Zy
YW1lOjphc1ZpZGVvRnJhbWVDVigpCiB7CisgICAgaWYgKGlzQ1YoKSkKKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFZpZGVvRnJhbWVDVj4odGhpcyk7CisKICAgICBhdXRvIGJ1ZmZlciA9IHBpeGVs
QnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAg
ICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHByZXNlbnRhdGlvblRpbWUoKSwgaXNNaXJy
b3JlZCgpLCByb3RhdGlvbigpLCBidWZmZXIpOwogfQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorUmVmUHRyPEpT
Qzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25z
dAoreworICAgIHJldHVybiBudWxscHRyOworfQogI2VuZGlmCiAKIH0KIAotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCmluZGV4
IDhhYTQyZWVmZmFhZjZhYjRkMzdlOWE4NTZhMjQ1OTdjY2JhNTcwMTUuLmI2NGIzYmNiM2MwMjBm
YTU1ZjUyMTZmZTA0ZTZhNDVhMTA3MmFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmgKQEAgLTI3LDY1ICsyNyw3NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVk
ZSAiTWVkaWFTYW1wbGUuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9UeXBlZEFycmF5cy5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19D
VkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBQcm9jZXNzSWRlbnRpdHk7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikgJiYgUExBVEZPUk0oQ09D
T0EpCiBjbGFzcyBWaWRlb0ZyYW1lQ1Y7CiAjZW5kaWYKIAogLy8gQSBjbGFzcyByZXByZXNlbnRp
bmcgYSB2aWRlbyBmcmFtZSBmcm9tIGEgZGVjb2RlciwgY2FwdHVyZSBzb3VyY2UsIG9yIHNpbWls
YXIuCi0vLyBGSVhNRTogQ3VycmVudGx5IGZvciBpbXBsZW1lbnRhdGlvbiBwdXJwb3NlcyBpbmhl
cnRzIGZyb20gTWVkaWFTYW1wbGUgdW50aWwgY2FwdHVyZSBjb2RlCi0vLyBzdG9wcyByZWZlcnJp
bmcgdG8gTWVkaWFTYW1wbGUKLWNsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVkaWFTYW1wbGUg
eworY2xhc3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWaWRlb0Zy
YW1lPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKKyAgICB2
aXJ0dWFsIH5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCisgICAgZW51bSBjbGFzcyBSb3RhdGlv
biB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBVcHNpZGVEb3duID0gMTgwLAorICAgICAg
ICBSaWdodCA9IDkwLAorICAgICAgICBMZWZ0ID0gMjcwLAorICAgIH07CiAKLSAgICB1c2luZyBS
b3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOworICAgIE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lOyB9CisgICAg
Um90YXRpb24gcm90YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JvdGF0aW9uOyB9CisgICAgYm9v
bCBpc01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01pcnJvcmVkOyB9CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpOworI2VuZGlmCisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBj
b25zdDsKIAotICAgIC8vIFdlYkNvcmU6Ok1lZGlhU2FtcGxlIG92ZXJyaWRlcy4KLSAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IGZpbmFsOwotICAg
IFdFQkNPUkVfRVhQT1JUIFJvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgZmluYWw7Ci0gICAgLy8gRklYTUU6
IFdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUsIHRoZXNlIHdpbGwgbm90IGJlIG5l
ZWRlZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9y
bVNhbXBsZSgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtU2FtcGxl
OjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IGZpbmFsOworICAgIHZpcnR1YWwgRmxv
YXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1aW50MzJf
dCBwaXhlbEZvcm1hdCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZVBy
b3h5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaWJXZWJS
VEMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2lmIFVTRShBVkZPVU5EQVRJT04pCiAgICAg
dmlydHVhbCBib29sIGlzQ1YoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPFZpZGVvRnJhbWVDVj4g
YXNWaWRlb0ZyYW1lQ1YoKTsKLSNlbmRpZgorICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vz
c0lkZW50aXR5JikgeyB9CiAKLSAgICB2b2lkIGluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVk
aWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7
CisgICAgdm9pZCBpbml0aWFsaXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBwcmVzZW50YXRp
b25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uKTsKIAogcHJvdGVjdGVkOgotICAgIFdF
QkNPUkVfRVhQT1JUIFZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFt
ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbik7
CisKK3ByaXZhdGU6CiAgICAgY29uc3QgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGltZTsKICAg
ICBjb25zdCBib29sIG1faXNNaXJyb3JlZDsKLSAgICBjb25zdCBWaWRlb1JvdGF0aW9uIG1fcm90
YXRpb247CisgICAgY29uc3QgUm90YXRpb24gbV9yb3RhdGlvbjsKK307CiAKLXByaXZhdGU6Ci0g
ICAgLy8gRklYTUU6IFRoZXNlIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlc2Ug
b2JqZWN0cy4KLSAgICAvLyBXZWJDb3JlOjpNZWRpYVNhbXBsZSBvdmVycmlkZXMuCi0gICAgV0VC
Q09SRV9FWFBPUlQgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
TWVkaWFUaW1lJikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNP
UkVfRVhQT1JUIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7Cit9CisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlZpZGVvRnJh
bWU6OlJvdGF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24sCisgICAgICAgIFdlYkNvcmU6OlZpZGVvRnJh
bWU6OlJvdGF0aW9uOjpOb25lLAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6VXBzaWRlRG93biwKKyAgICAgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246OlJp
Z2h0LAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdAorICAgID47
CiB9OwogCiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9G
cmFtZSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUm
IG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZVR5cGUoKSA9
PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGU7IH0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4YjI1MTA5NGQ1MmQ2MTk5
ZDRhMjFkOTQ5YmVmMjY5ZjI4M2MxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxF
KFZJREVPKSAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5oIgorCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gVmlkZW9GcmFt
ZTo6Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0Cit7CisgICAgY29uc3QgT1NUeXBlIGltYWdlRm9y
bWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyUkdCQTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJS
ZWY+IGltYWdlRm9ybWF0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRyLCAg
a0NGTnVtYmVySW50VHlwZSwgICZpbWFnZUZvcm1hdCkpOworCisgICAgUmV0YWluUHRyPENGTXV0
YWJsZURpY3Rpb25hcnlSZWY+IGNvbmZvcm1lck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoMCwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGNvbmZvcm1lck9wdGlvbnMuZ2V0KCksIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5
LCBpbWFnZUZvcm1hdE51bWJlci5nZXQoKSk7CisgICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViBw
aXhlbEJ1ZmZlckNvbmZvcm1lcihjb25mb3JtZXJPcHRpb25zLmdldCgpKTsKKworICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSB0aGlzLT5waXhlbEJ1ZmZlcigpOworICAgIGF1dG8gcmdiYVBpeGVsQnVm
ZmVyID0gcGl4ZWxCdWZmZXJDb25mb3JtZXIuY29udmVydChwaXhlbEJ1ZmZlcik7CisgICAgYXV0
byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5n
ZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0
YXR1cywgc3RhdHVzID09IG5vRXJyKTsKKworICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVy
R2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwgMCk7CisgICAgc2l6
ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSAqIENW
UGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0OworICAgIGF1dG8gcmVzdWx0ID0g
SlNDOjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZShkYXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CisKKyAgICBzdGF0dXMgPSBDVlBp
eGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhl
bEJ1ZmZlckxvY2tfUmVhZE9ubHkpOworICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
LmgKaW5kZXggNmM1YWU1MzNiODdmMDA1MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNkNy4uNGM0YzM0
NzUxOTc0NzFlOTEzZjQyMmIyMDIzYzA3NDcwZGY5ZWRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTQzLDkgKzQzLDYgQEAgY2xhc3MgTWVkaWFT
YW1wbGVBVkZPYmpDIDogcHVibGljIE1lZGlhU2FtcGxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwg
dWludDY0X3QgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9i
akMoc2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbVN0cmluZyB0cmFja0lEKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQp
KTsgfQotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6
Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2FtcGxlQVZGT2JqQyhzYW1wbGUsIHJvdGF0aW9uLCBtaXJyb3JlZCkpOyB9Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0
YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRl
OwpAQCAtNjUsMTIgKzYyLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3Qg
TWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yb3RhdGlvbjsgfQotICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWlycm9yZWQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50
MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFs
OwotCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9zYW1wbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNIb21vZ2VuZW91cygpIGNvbnN0OwpAQCAt
ODMsMjAgKzc0LDE1IEBAIHB1YmxpYzoKICAgICBLZXlJRHMmIGtleUlEcygpIHsgcmV0dXJuIG1f
a2V5SURzOyB9CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIG9uY2UgVmlk
ZW9GcmFtZSBpcyBub3QgYSBNZWRpYVNhbXBsZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
VmlkZW9GcmFtZUNWPiB2aWRlb0ZyYW1lKCkgY29uc3Q7CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVy
UmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZm
ZXJSZWYsIEF0b21TdHJpbmcgdHJhY2tJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1w
bGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmLCB1aW50NjRfdCB0cmFja0lEKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYsIFZpZGVvUm90
YXRpb24sIGJvb2wgbWlycm9yZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfk1lZGlh
U2FtcGxlQVZGT2JqQygpOwogCiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX3Nh
bXBsZTsKICAgICBBdG9tU3RyaW5nIG1faWQ7Ci0gICAgVmlkZW9Sb3RhdGlvbiBtX3JvdGF0aW9u
IHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwotICAgIGJvb2wgbV9taXJyb3JlZCB7IGZhbHNlIH07
CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCiAgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggMTMxMWIz
MzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3NWZkOTYzYzhkMC4uNWIxMzhlNjQ1MGQyOGYxMWQ1MDJi
ZWJkZDRhNjBmMzYxMTIxYWIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbQpAQCAtNjYsMTIgKzY2LDYgQEAgTWVkaWFTYW1wbGVBVkZPYmpDOjpNZWRp
YVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0kK
ICAgICAsIG1faWQoQXRvbVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKQogewogfQotTWVkaWFTYW1w
bGVBVkZPYmpDOjpNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQotICAgIDogbV9zYW1wbGUoc2Ft
cGxlKQotICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKLSAgICAsIG1fbWlycm9yZWQobWlycm9y
ZWQpCi17Ci19CiAKIE1lZGlhU2FtcGxlQVZGT2JqQzo6fk1lZGlhU2FtcGxlQVZGT2JqQygpID0g
ZGVmYXVsdDsKIApAQCAtMTEwLDIyICsxMDQsNiBAQCBQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBs
ZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKICAgICByZXR1cm4gc2FtcGxlOwogfQog
Ci11aW50MzJfdCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29uc3QKLXsKLSAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Ci0gICAgcmV0dXJu
IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwotfQotCi1SZWZQ
dHI8VmlkZW9GcmFtZUNWPiBNZWRpYVNhbXBsZUFWRk9iakM6OnZpZGVvRnJhbWUoKSBjb25zdAot
ewotICAgIGlmICghbV9zYW1wbGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxl
QnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLSAgICBpZiAoIXBpeGVsQnVm
ZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpj
cmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCBtX21pcnJvcmVkLCBtX3JvdGF0aW9uLCBSZXRhaW5Q
dHIgeyBwaXhlbEJ1ZmZlciB9KTsKLX0KLQogc3RhdGljIGJvb2wgaXNDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRSYW5kb21BY2Nlc3MoQ0ZEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnREaWN0KQogewog
ICAgIHJldHVybiAhQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoYXR0YWNobWVudERpY3QsIFBBTDo6
a0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jKTsKQEAgLTMxMiwzOSArMjkwLDYgQEAgUmVm
PE1lZGlhU2FtcGxlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5
KCkgY29uc3QKICAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoYWRvcHRDRihu
ZXdTYW1wbGVCdWZmZXIpLmdldCgpLCBtX2lkKTsKIH0KIAotUmVmUHRyPEpTQzo6VWludDhDbGFt
cGVkQXJyYXk+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0Ci17
Ci0gICAgY29uc3QgT1NUeXBlIGltYWdlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyUkdC
QTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGltYWdlRm9ybWF0TnVtYmVyID0gYWRvcHRD
RihDRk51bWJlckNyZWF0ZShudWxscHRyLCAga0NGTnVtYmVySW50VHlwZSwgICZpbWFnZUZvcm1h
dCkpOwotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNvbmZvcm1lck9w
dGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCksIGtDVlBp
eGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBpbWFnZUZvcm1hdE51bWJlci5nZXQoKSk7Ci0g
ICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViBwaXhlbEJ1ZmZlckNvbmZvcm1lcihjb25mb3JtZXJP
cHRpb25zLmdldCgpKTsKLQotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBp
eGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUu
Z2V0KCkpKTsKLSAgICBhdXRvIHJnYmFQaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyQ29uZm9ybWVy
LmNvbnZlcnQocGl4ZWxCdWZmZXIpOwotICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckxv
Y2tCYXNlQWRkcmVzcyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19S
ZWFkT25seSk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsIHN0YXR1cyA9PSBub0Vycik7Ci0K
LSAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2Jh
UGl4ZWxCdWZmZXIuZ2V0KCksIDApOwotICAgIHNpemVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1
ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgKiBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxC
dWZmZXIpICogNDsKLSAgICBhdXRvIHJlc3VsdCA9IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5
dGVMZW5ndGgpOwotCi0gICAgc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNz
KHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKLSAg
ICBBU1NFUlQoc3RhdHVzID09IG5vRXJyKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRTYW1wbGVCdWZmZXJBc0Rpc3BsYXlJbW1lZGlhdGVseShDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCi17Ci0gICAgQ0ZBcnJheVJlZiBhdHRhY2htZW50
c0FycmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2Ft
cGxlQnVmZmVyLCB0cnVlKTsKLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0
Q291bnQoYXR0YWNobWVudHNBcnJheSk7ICsraSkgewotICAgICAgICBDRk11dGFibGVEaWN0aW9u
YXJ5UmVmIGF0dGFjaG1lbnRzID0gY2hlY2tlZF9jZl9jYXN0PENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwgaSkpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywgUEFMOjprQ01TYW1wbGVBdHRhY2ht
ZW50S2V5X0Rpc3BsYXlJbW1lZGlhdGVseSwga0NGQm9vbGVhblRydWUpOwotICAgIH0KLX0KLQog
Ym9vbCBNZWRpYVNhbXBsZUFWRk9iakM6OmlzSG9tb2dlbmVvdXMoKSBjb25zdAogewogICAgIENG
QXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVB
dHRhY2htZW50c0FycmF5KG1fc2FtcGxlLmdldCgpLCB0cnVlKTsKQEAgLTQxNSwxNyArMzYwLDQg
QEAgVmVjdG9yPFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+PiBNZWRpYVNhbXBsZUFWRk9iakM6OmRp
dmlkZUludG9Ib21vZ2VuZW91c1NhbXBsZXMKICAgICByZXR1cm4gc2FtcGxlczsKIH0KIAotQ1ZQ
aXhlbEJ1ZmZlclJlZiBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsQnVmZmVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Ci19Ci0KLXZvaWQgTWVkaWFTYW1w
bGVBVkZPYmpDOjpzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmIHJl
c291cmNlT3duZXIpCi17Ci0gICAgQVNTRVJUKHJlc291cmNlT3duZXIpOwotICAgIGF1dG8gYnVm
ZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBzZXRPd25lcnNo
aXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoYnVmZmVyLCByZXNvdXJjZU93bmVyKTsKLX0KLQog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455384</attachid>
            <date>2022-03-22 09:40:07 -0700</date>
            <delta_ts>2022-03-23 00:39:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238071-20220322174005.patch</filename>
            <type>text/plain</type>
            <size>28816</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ0YzBkNDQ1NzdjYWZm
ZjM1ZTIwMjllNjJlMTE4YTU4ZjViMDdjNi4uNzBmMGZhMzkzZTc1YmM4YzU1ZjY0OTBjZjYxYTM0
MGU3MWY2MzQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgTWVkaWFTYW1wbGUsIE1lZGlhU2Ft
cGxlQVZGT2JqQyBhbmQgVmlkZW9GcmFtZSBhY2NvcmRpbmcgdGhlIHNlcGFyYXRpb24uCisgICAg
ICAgIFRoaXMgaXMgYSByZWZhY3RvcmluZywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9G
cmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUubW06IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbToKKwogMjAyMi0wMy0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29tcHV0YXRpb24gb2YgRG9jdW1lbnQgc2l0ZUZvckNvb2tp
ZXMgaXMgYnVnZ3kgaW4gY2FzZSBkb2N1bWVudCBpcyBjcmVhdGVkIGJ5IHdpbmRvdy5vcGVuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0NGVjOTZlNjIyMTA4ZjRjYjMzOTUzYjJlNmUwMTY2
ZjQ3YzhlZTA4Li44OTMzYjlmOTViNGMzMGRmNzUxNDE3OWI2MDMxN2UzODlkMTQyOTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTIzMiw2ICsyMzIsNyBAQCBwYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorcGxhdGZvcm0vVmlkZW9GcmFtZS5tbQog
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggM2Q0ZGZiNDc2ODM4NzFmNmYyZjkxZjNhOGM2MjM0ZGEwZDc0NWEy
Ni4uYWMwNTdkMTg2MzUxYjVlMWViODMzZGE1ZTJjZjEzMjI1N2ZmMmMxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3Niw2
ICsxMDc2LDcgQEAKIAkJNDExNEZFMzIyNUJFQkQxOTAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTE0
RkUyRjI1QkVCRDE4MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDEy
MzA4MUIxMzhDNDI5NzAwQkNDRkNBIC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5
QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NG
Q0EgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8q
IFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOUM5OTcxRjU5Qjk2MzAw
OUQ3NDAzIC8qIEZldGNoQm9keVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8qIEZldGNoQm9keVNv
dXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThD
Mzk1RjFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlD
OUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4QzM5NUIxQzhGMEE2MTAwNTFD
OEEzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0MjEsNyArMjQyMiw2IEBACiAJCTdBRjlCMjBGMThD
RkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZU
VFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBo
aWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMz
OUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAw
QzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAv
KiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQw
MDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0
aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg1OTAsNiArODU5MCw3IEBACiAJCTQxMjA5RTk0MjE2RUE2OUEwMEE3M0ExMiAvKiBS
VENDZXJ0aWZpY2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
VENDZXJ0aWZpY2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk1
MjE2RUMzNEUwMEE3M0ExMiAvKiBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRv
ci5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk2MjE2RUMzNEYwMEE3M0ExMiAvKiBM
aWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHA7IHBhdGggPSBs
aWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTI4MjdCMDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvRnJhbWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjlDOTgwMUY1ODYxQzcwMDlENzQwMyAv
KiBSZWFkYWJsZVN0cmVhbVNpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhZGFibGVTdHJlYW1TaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjlD
OTgxMUY1ODYxQzcwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMjlDOTg3MUY1ODY2MkQwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1T
aW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjU5LDYgKzMwMjYwLDcg
QEAKIAkJCQk4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oICov
LAogCQkJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLywKIAkJ
CQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovLAorCQkJCTQxMjgy
N0IwMjdFNEE5QzMwMDVBRERFMiAvKiBWaWRlb0ZyYW1lLm1tICovLAogCQkJCTQxREVFRkI0Mjcx
OUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLywKIAkJCQk0MTYwNDkzMTI3
NDNCMEU3MDBBODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oICovLAogCQkJCTUxNUY3
OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovLApA
QCAtMzczMjgsNiArMzczMzAsNyBAQAogCQkJCTUxRjE3NTYzMUYzRUJDODMwMEM3NDk1MCAvKiBT
ZXJ2aWNlV29ya2VySm9iLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU2NDFGM0VCQzgzMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlckpvYkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
NjQ1NjkxRjQ1MzlCOTAwQjU0REVEIC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTI4MjdCMjI3RTRBQzNDMDA1QURERTIgLyogVmlkZW9GcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODM4Q0E2QkQxRkMwREZFOTAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1NkExRjQ1MzlDMDAw
QjU0REVEIC8qIFNlcnZpY2VXb3JrZXJKb2JUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYx
NzU2NjFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM3OTY2LDcgKzM3OTY5LDYgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBEMzdB
REIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEw
MDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0JFMzdGODcyN0JCQjcwODAwN0E2Q0QzIC8qIFZpZGVvRnJhbWVDVi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMzRTNFIC8qIFZpZGVvRnJh
bWVMaWJXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3
NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhU2FtcGxlLmgKaW5kZXggOTQwNzI1OGFhMTk5NGM1ZGY1Mjc0MGE1NDkxYzQ5YjJk
ZTAwYTBkMC4uYTg1NjFkZjQ0OGFiNjYwMDZkOTI5OWMyY2Y0YWY0MjYyM2EwNGFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNs
dWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJy
YXlzLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nLmg+CiAKQEAgLTkyLDggKzkyLDYgQEAgcHVibGljOgogICAgIH0KICAg
ICB2aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRS
R0JBSW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAgZW51bSBTYW1w
bGVGbGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAxIDw8IDAsCkBA
IC0xMTEsMjAgKzEwOSw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogCi0gICAgZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9uZSA9IDAsCi0g
ICAgICAgIFVwc2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0gICAgICAgIExl
ZnQgPSAyNzAsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90YXRpb24oKSBj
b25zdCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0
eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5jKCkgY29uc3Qg
eyByZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNwbGF5aW5nKCkg
Y29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAgIGJvb2wgaGFz
QWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAgLTE5MSw3ICsx
NzUsNiBAQCBzdHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAgICAgRmxvYXRT
aXplIGRpc3BsYXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAgICAgUGxhdGZv
cm1WaWRlb0NvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiByb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4NCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJWaWRlb0luZm8p
IGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25jYXN0PGNvbnN0
IFZpZGVvSW5mbz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6ZSA9PSBvdGhl
ci5zaXplICYmIGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJpdERlcHRoID09
IG90aGVyLmJpdERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFjZSAmJiByb3Rh
dGlvbiA9PSBvdGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIuYXRvbURhdGEp
IHx8IChhdG9tRGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0gKm90aGVyLmF0
b21EYXRhKSk7CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYgZGlzcGxheVNp
emUgPT0gb3RoZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0RGVwdGggJiYg
Y29sb3JTcGFjZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYmICFvdGhlci5h
dG9tRGF0YSkgfHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9tRGF0YSA9PSAq
b3RoZXIuYXRvbURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OSw2IEBAIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24+IHsK
LSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpVcHNpZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6UmlnaHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpMZWZ0Ci0gICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dB
cmd1bWVudDsKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFT
YW1wbGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZWU3OWU1
ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uODgyN2I3OTA1NTdkZWM2MjlhYWVh
ZTczZmQ4M2RhYzUwOTEyOTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5j
cHAKQEAgLTM0LDEwNiArMzQsNDAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WaWRlb0Zy
YW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9y
ZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24pCitWaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlh
VGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9u
KQogICAgIDogbV9wcmVzZW50YXRpb25UaW1lKHByZXNlbnRhdGlvblRpbWUpCiAgICAgLCBtX2lz
TWlycm9yZWQoaXNNaXJyb3JlZCkKICAgICAsIG1fcm90YXRpb24ocm90YXRpb24pCiB7CiB9CiAK
LVZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OwotCi1NZWRpYVRpbWUgVmlkZW9G
cmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJlc2VudGF0
aW9uVGltZTsKLX0KLQotVmlkZW9GcmFtZTo6Um90YXRpb24gVmlkZW9GcmFtZTo6cm90YXRpb24o
KSBjb25zdAotewotICAgIHJldHVybiBtX3JvdGF0aW9uOwotfQotCi1ib29sIFZpZGVvRnJhbWU6
OmlzTWlycm9yZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzTWlycm9yZWQ7Ci19Ci0KLVdl
YkNvcmU6OlBsYXRmb3JtU2FtcGxlIFZpZGVvRnJhbWU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4geyBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGUs
IHsgfSB9OwotfQotCi1QbGF0Zm9ybVNhbXBsZTo6VHlwZSBWaWRlb0ZyYW1lOjpwbGF0Zm9ybVNh
bXBsZVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6
VmlkZW9GcmFtZVR5cGU7Ci19Ci0KLU1lZGlhVGltZSBWaWRlb0ZyYW1lOjpkZWNvZGVUaW1lKCkg
Y29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9OwotfQot
Ci1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZHVyYXRpb24oKSBjb25zdAotewotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUF0b21TdHJpbmcgVmlkZW9GcmFt
ZTo6dHJhY2tJRCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIHsgfTsKLX0KLQotc2l6ZV90IFZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBWaWRl
b0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLVJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRl
Tm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAotewotICAgIENSQVNIKCk7Ci19Ci0KLU1lZGlhU2Ft
cGxlOjpTYW1wbGVGbGFncyBWaWRlb0ZyYW1lOjpmbGFncygpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFnczo6Tm9uZTsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpk
dW1wKFByaW50U3RyZWFtJikgY29uc3QKLXsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjppbml0aWFs
aXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24pCit2b2lkIFZpZGVvRnJhbWU6OmluaXRpYWxp
emVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJy
b3JlZCwgUm90YXRpb24gcm90YXRpb24pCiB7CiAgICAgY29uc3RfY2FzdDxNZWRpYVRpbWUmPiht
X3ByZXNlbnRhdGlvblRpbWUpID0gcHJlc2VudGF0aW9uVGltZTsKICAgICBjb25zdF9jYXN0PGJv
b2wmPihtX2lzTWlycm9yZWQpID0gaXNNaXJyb3JlZDsKLSAgICBjb25zdF9jYXN0PFZpZGVvUm90
YXRpb24mPihtX3JvdGF0aW9uKSA9IHJvdGF0aW9uOworICAgIGNvbnN0X2Nhc3Q8Um90YXRpb24m
PihtX3JvdGF0aW9uKSA9IHJvdGF0aW9uOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYg
UExBVEZPUk0oQ09DT0EpICYmIFVTRShBVkZPVU5EQVRJT04pCiBSZWZQdHI8VmlkZW9GcmFtZUNW
PiBWaWRlb0ZyYW1lOjphc1ZpZGVvRnJhbWVDVigpCiB7CisgICAgaWYgKGlzQ1YoKSkKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFZpZGVvRnJhbWVDVj4odGhpcyk7CisKICAgICBhdXRvIGJ1ZmZl
ciA9IHBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotCiAgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHByZXNlbnRhdGlvblRpbWUo
KSwgaXNNaXJyb3JlZCgpLCByb3RhdGlvbigpLCBidWZmZXIpOwogfQorI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
UmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURh
dGEoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQogI2VuZGlmCiAKIH0KIAotI2Vu
ZGlmCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFt
ZS5oCmluZGV4IDhhYTQyZWVmZmFhZjZhYjRkMzdlOWE4NTZhMjQ1OTdjY2JhNTcwMTUuLmI2NGIz
YmNiM2MwMjBmYTU1ZjUyMTZmZTA0ZTZhNDVhMTA3MmFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmgKQEAgLTI3LDY1ICsyNyw3NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQog
Ci0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5cy5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwordHlwZWRlZiBz
dHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBQcm9jZXNzSWRlbnRpdHk7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikgJiYgUExB
VEZPUk0oQ09DT0EpCiBjbGFzcyBWaWRlb0ZyYW1lQ1Y7CiAjZW5kaWYKIAogLy8gQSBjbGFzcyBy
ZXByZXNlbnRpbmcgYSB2aWRlbyBmcmFtZSBmcm9tIGEgZGVjb2RlciwgY2FwdHVyZSBzb3VyY2Us
IG9yIHNpbWlsYXIuCi0vLyBGSVhNRTogQ3VycmVudGx5IGZvciBpbXBsZW1lbnRhdGlvbiBwdXJw
b3NlcyBpbmhlcnRzIGZyb20gTWVkaWFTYW1wbGUgdW50aWwgY2FwdHVyZSBjb2RlCi0vLyBzdG9w
cyByZWZlcnJpbmcgdG8gTWVkaWFTYW1wbGUKLWNsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVk
aWFTYW1wbGUgeworY2xhc3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWaWRlb0ZyYW1lPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWUo
KTsKKyAgICB2aXJ0dWFsIH5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCisgICAgZW51bSBjbGFz
cyBSb3RhdGlvbiB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBVcHNpZGVEb3duID0gMTgw
LAorICAgICAgICBSaWdodCA9IDkwLAorICAgICAgICBMZWZ0ID0gMjcwLAorICAgIH07CiAKLSAg
ICB1c2luZyBSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOworICAgIE1lZGlh
VGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1l
OyB9CisgICAgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JvdGF0aW9uOyB9
CisgICAgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01pcnJvcmVkOyB9CisK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpOworI2VuZGlmCisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFn
ZURhdGEoKSBjb25zdDsKIAotICAgIC8vIFdlYkNvcmU6Ok1lZGlhU2FtcGxlIG92ZXJyaWRlcy4K
LSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIFJvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgZmluYWw7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgZmluYWw7Ci0gICAg
Ly8gRklYTUU6IFdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUsIHRoZXNlIHdpbGwg
bm90IGJlIG5lZWRlZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBs
ZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRm
b3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IGZpbmFsOworICAgIHZp
cnR1YWwgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c1JlbW90ZVByb3h5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNMaWJXZWJSVEMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2lmIFVTRShBVkZPVU5EQVRJ
T04pCiAgICAgdmlydHVhbCBib29sIGlzQ1YoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPFZpZGVv
RnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1YoKTsKLSNlbmRpZgorICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29u
c3QgUHJvY2Vzc0lkZW50aXR5JikgeyB9CiAKLSAgICB2b2lkIGluaXRpYWxpemVDaGFyYWN0ZXJp
c3RpY3MoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbik7CisgICAgdm9pZCBpbml0aWFsaXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uKTsKIAogcHJvdGVjdGVk
OgotICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQg
VmlkZW9GcmFtZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBS
b3RhdGlvbik7CisKK3ByaXZhdGU6CiAgICAgY29uc3QgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9u
VGltZTsKICAgICBjb25zdCBib29sIG1faXNNaXJyb3JlZDsKLSAgICBjb25zdCBWaWRlb1JvdGF0
aW9uIG1fcm90YXRpb247CisgICAgY29uc3QgUm90YXRpb24gbV9yb3RhdGlvbjsKK307CiAKLXBy
aXZhdGU6Ci0gICAgLy8gRklYTUU6IFRoZXNlIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBm
b3IgdGhlc2Ugb2JqZWN0cy4KLSAgICAvLyBXZWJDb3JlOjpNZWRpYVNhbXBsZSBvdmVycmlkZXMu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFdlYkNv
cmU6Ok1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IGZpbmFsOwot
ICAgIFdFQkNPUkVfRVhQT1JUIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWw7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7Cit9CisK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OlZpZGVvRnJhbWU6OlJvdGF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
KyAgICAgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24sCisgICAgICAgIFdlYkNvcmU6
OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1l
OjpSb3RhdGlvbjo6VXBzaWRlRG93biwKKyAgICAgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90
YXRpb246OlJpZ2h0LAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVm
dAorICAgID47CiB9OwogCiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6VmlkZW9GcmFtZSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVk
aWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBs
ZVR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGU7IH0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURF
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNzFjZWZk
ZDMzNGZhMWE1MTY2YjFhMzNkNGY0OGI2YmRkNTM4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisj
aWYgRU5BQkxFKFZJREVPKSAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGlu
ZXMuaD4KKworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxKU0M6
OlVpbnQ4Q2xhbXBlZEFycmF5PiBWaWRlb0ZyYW1lOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QK
K3sKKyAgICBjb25zdCBPU1R5cGUgaW1hZ2VGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJS
R0JBOworICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaW1hZ2VGb3JtYXROdW1iZXIgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJmltYWdlRm9y
bWF0KSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVy
T3B0aW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSwga0NW
UGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIGltYWdlRm9ybWF0TnVtYmVyLmdldCgpKTsK
KyAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKGNvbmZvcm1l
ck9wdGlvbnMuZ2V0KCkpOworCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHRoaXMtPnBpeGVsQnVm
ZmVyKCk7CisgICAgYXV0byByZ2JhUGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckNvbmZvcm1lci5j
b252ZXJ0KHBpeGVsQnVmZmVyKTsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJMb2Nr
QmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVh
ZE9ubHkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCBzdGF0dXMgPT0gbm9FcnIpOworCisg
ICAgdm9pZCogZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocmdiYVBp
eGVsQnVmZmVyLmdldCgpLCAwKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IENWUGl4ZWxCdWZm
ZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpICogQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVm
ZmVyKSAqIDQ7CisgICAgYXV0byByZXN1bHQgPSBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlD
cmVhdGUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVMZW5ndGgpLCAwLCBieXRl
TGVuZ3RoKTsKKworICAgIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhy
Z2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAg
QVNTRVJUKHN0YXR1cyA9PSBub0Vycik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA2YzVhZTUzM2I4N2YwMDUzNGE3
ZWVlNGVkYWU4NWFjYWYwNmUyM2Q3Li40YzRjMzQ3NTE5NzQ3MWU5MTNmNDIyYjIwMjNjMDc0NzBk
ZjllZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApA
QCAtNDMsOSArNDMsNiBAQCBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFT
YW1wbGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVh
dGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lEKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsgfQogICAg
IHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlLCBBdG9tU3RyaW5nIHRyYWNrSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFT
YW1wbGVBVkZPYmpDKHNhbXBsZSwgdHJhY2tJRCkpOyB9Ci0gICAgc3RhdGljIFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvUm90YXRp
b24gcm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2Up
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgcm90YXRp
b24sIG1pcnJvcmVkKSk7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OlVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBN
ZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIE1lZGlhVGlt
ZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02NSwxMiArNjIsNiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0
cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IFVzZUVuZFRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxNZWRpYVNhbXBs
ZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFZpZGVv
Um90YXRpb24gcm90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvdGF0aW9uOyB9
Ci0gICAgYm9vbCBpc01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3Jl
ZDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgZmlu
YWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNv
bnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHko
Y29uc3QgUHJvY2Vzc0lkZW50aXR5JikgZmluYWw7Ci0KICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBz
YW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZS5nZXQoKTsgfQogCiAgICAgYm9v
bCBpc0hvbW9nZW5lb3VzKCkgY29uc3Q7CkBAIC04MywyMCArNzQsMTUgQEAgcHVibGljOgogICAg
IEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJRHM7IH0KICNlbmRpZgogCi0gICAgLy8g
RklYTUU6IFRvIGJlIHJlbW92ZWQgb25jZSBWaWRlb0ZyYW1lIGlzIG5vdCBhIE1lZGlhU2FtcGxl
LgotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IHZpZGVvRnJhbWUoKSBj
b25zdDsKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMo
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRp
YVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYpOwogICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwgQXRvbVN0cmluZyB0cmFja0lEKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYs
IHVpbnQ2NF90IHRyYWNrSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxlQVZGT2Jq
QyhDTVNhbXBsZUJ1ZmZlclJlZiwgVmlkZW9Sb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+TWVkaWFTYW1wbGVBVkZPYmpDKCk7CiAKICAgICBSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fc2FtcGxlOwogICAgIEF0b21TdHJpbmcgbV9pZDsK
LSAgICBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07Ci0g
ICAgYm9vbCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQppbmRleCAxMzExYjMzNzE4YTg0ZTMzZDEzOTMxMTMwMmQwNDc1ZmQ5
NjNjOGQwLi41YjEzOGU2NDUwZDI4ZjExZDUwMmJlYmRkNGE2MGYzNjExMjFhYjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC02NiwxMiArNjYs
NiBAQCBNZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSQogICAgICwgbV9pZChBdG9tU3RyaW5nOjpudW1i
ZXIodHJhY2tJRCkpCiB7CiB9Ci1NZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxlQVZGT2Jq
QyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wg
bWlycm9yZWQpCi0gICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgLCBtX3JvdGF0aW9uKHJvdGF0
aW9uKQotICAgICwgbV9taXJyb3JlZChtaXJyb3JlZCkKLXsKLX0KIAogTWVkaWFTYW1wbGVBVkZP
YmpDOjp+TWVkaWFTYW1wbGVBVkZPYmpDKCkgPSBkZWZhdWx0OwogCkBAIC0xMTAsMjIgKzEwNCw2
IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKSBj
b25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQzMl90IE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGl4ZWxGb3JtYXQoKSBjb25zdAotewotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIo
bV9zYW1wbGUuZ2V0KCkpKTsKLSAgICByZXR1cm4gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0
VHlwZShwaXhlbEJ1ZmZlcik7Ci19Ci0KLVJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IE1lZGlhU2FtcGxl
QVZGT2JqQzo6dmlkZW9GcmFtZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3NhbXBsZSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENW
UGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBs
ZS5nZXQoKSkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIG1f
bWlycm9yZWQsIG1fcm90YXRpb24sIFJldGFpblB0ciB7IHBpeGVsQnVmZmVyIH0pOwotfQotCiBz
dGF0aWMgYm9vbCBpc0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudFJhbmRvbUFjY2VzcyhDRkRpY3Rp
b25hcnlSZWYgYXR0YWNobWVudERpY3QpCiB7CiAgICAgcmV0dXJuICFDRkRpY3Rpb25hcnlDb250
YWluc0tleShhdHRhY2htZW50RGljdCwgUEFMOjprQ01TYW1wbGVBdHRhY2htZW50S2V5X05vdFN5
bmMpOwpAQCAtMzEyLDM5ICsyOTAsNiBAQCBSZWY8TWVkaWFTYW1wbGU+IE1lZGlhU2FtcGxlQVZG
T2JqQzo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAogICAgIHJldHVybiBNZWRpYVNh
bXBsZUFWRk9iakM6OmNyZWF0ZShhZG9wdENGKG5ld1NhbXBsZUJ1ZmZlcikuZ2V0KCksIG1faWQp
OwogfQogCi1SZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gTWVkaWFTYW1wbGVBVkZPYmpD
OjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKLXsKLSAgICBjb25zdCBPU1R5cGUgaW1hZ2VGb3Jt
YXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBOwotICAgIFJldGFpblB0cjxDRk51bWJlclJl
Zj4gaW1hZ2VGb3JtYXROdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBr
Q0ZOdW1iZXJJbnRUeXBlLCAgJmltYWdlRm9ybWF0KSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVyT3B0aW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
Y29uZm9ybWVyT3B0aW9ucy5nZXQoKSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXks
IGltYWdlRm9ybWF0TnVtYmVyLmdldCgpKTsKLSAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHBp
eGVsQnVmZmVyQ29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpOwotCi0gICAgYXV0byBw
aXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVC
dWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotICAgIGF1dG8gcmdiYVBpeGVs
QnVmZmVyID0gcGl4ZWxCdWZmZXJDb25mb3JtZXIuY29udmVydChwaXhlbEJ1ZmZlcik7Ci0gICAg
YXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZl
ci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKLSAgICBBU1NFUlRfVU5VU0VE
KHN0YXR1cywgc3RhdHVzID09IG5vRXJyKTsKLQotICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVm
ZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwgMCk7Ci0gICAg
c2l6ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSAq
IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0OwotICAgIGF1dG8gcmVzdWx0
ID0gSlNDOjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0dXMgPSBD
VlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQ
aXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOwotICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHNldFNhbXBsZUJ1
ZmZlckFzRGlzcGxheUltbWVkaWF0ZWx5KENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikK
LXsKLSAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBQQUw6OkNNU2FtcGxlQnVmZmVy
R2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIsIHRydWUpOwotICAgIGZvciAo
Q0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChhdHRhY2htZW50c0FycmF5KTsgKytp
KSB7Ci0gICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0YWNobWVudHMgPSBjaGVja2Vk
X2NmX2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChh
dHRhY2htZW50c0FycmF5LCBpKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGF0dGFj
aG1lbnRzLCBQQUw6OmtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBr
Q0ZCb29sZWFuVHJ1ZSk7Ci0gICAgfQotfQotCiBib29sIE1lZGlhU2FtcGxlQVZGT2JqQzo6aXNI
b21vZ2VuZW91cygpIGNvbnN0CiB7CiAgICAgQ0ZBcnJheVJlZiBhdHRhY2htZW50c0FycmF5ID0g
UEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkobV9zYW1wbGUuZ2V0
KCksIHRydWUpOwpAQCAtNDE1LDE3ICszNjAsNCBAQCBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZG
T2JqQz4+IE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlSW50b0hvbW9nZW5lb3VzU2FtcGxlcwog
ICAgIHJldHVybiBzYW1wbGVzOwogfQogCi1DVlBpeGVsQnVmZmVyUmVmIE1lZGlhU2FtcGxlQVZG
T2JqQzo6cGl4ZWxCdWZmZXIoKSBjb25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDVlBp
eGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUu
Z2V0KCkpKTsKLX0KLQotdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNldE93bmVyc2hpcElkZW50
aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikKLXsKLSAgICBBU1NFUlQo
cmVzb3VyY2VPd25lcik7Ci0gICAgYXV0byBidWZmZXIgPSBwaXhlbEJ1ZmZlcigpOwotICAgIEFT
U0VSVChidWZmZXIpOwotICAgIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihi
dWZmZXIsIHJlc291cmNlT3duZXIpOwotfQotCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455471</attachid>
            <date>2022-03-23 00:39:55 -0700</date>
            <delta_ts>2022-03-23 02:16:08 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-238071-20220323083953.patch</filename>
            <type>text/plain</type>
            <size>29234</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ0YzBkNDQ1NzdjYWZm
ZjM1ZTIwMjllNjJlMTE4YTU4ZjViMDdjNi4uNGY1MzYxYzY3OWJjZDBmZDdkN2UxZDc1Y2MxZDQ0
YTkwMjkyZjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXBkYXRlIE1lZGlhU2FtcGxlLCBNZWRpYVNhbXBs
ZUFWRk9iakMgYW5kIFZpZGVvRnJhbWUgYWNjb3JkaW5nIHRoZSBzZXBhcmF0aW9uLgorICAgICAg
ICBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW06CisKIDIwMjItMDMtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIENvbXB1dGF0aW9uIG9mIERvY3VtZW50IHNpdGVGb3JDb29raWVz
IGlzIGJ1Z2d5IGluIGNhc2UgZG9jdW1lbnQgaXMgY3JlYXRlZCBieSB3aW5kb3cub3BlbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNDRlYzk2ZTYyMjEwOGY0Y2IzMzk1M2IyZTZlMDE2NmY0
N2M4ZWUwOC4uODkzM2I5Zjk1YjRjMzBkZjc1MTQxNzliNjAzMTdlMzg5ZDE0MjkzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMzIsNiArMjMyLDcgQEAgcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KK3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0KIHBs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZmMmY5MWYzYThjNjIzNGRhMGQ3NDVhMjYu
LjA5NWI3M2U1YmQ4YWZkYjE3NDNkZmI2YjI3Y2NiYzk0YTYxMTA1NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzYsNiAr
MTA3Niw3IEBACiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExNEZF
MkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87IH07CiAJCTQxMjMw
ODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFC
QyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhDNDJGRjAwQkNDRkNB
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCTQxMjgyN0IyMjdFNEFDM0MwMDVBRERFMiAvKiBW
aWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOTk3MUY1OUI5NjMwMDlE
NzQwMyAvKiBGZXRjaEJvZHlTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RiAvKiBGZXRjaEJvZHlTb3Vy
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4QzM5
NUYxQzhGMEFBQjAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5QzlB
QjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEMzOTVCMUM4RjBBNjEwMDUxQzhB
MyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNDIxLDcgKzI0MjIsNiBAQAogCQk3QUY5QjIwRjE4Q0ZC
NUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNWVFRS
ZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMTAzMzlG
MjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyog
VmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2
NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGll
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2
REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC04NTkwLDYgKzg1OTAsNyBAQAogCQk0MTIwOUU5NDIxNkVBNjlBMDBBNzNBMTIgLyogUlRD
Q2VydGlmaWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRD
Q2VydGlmaWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NTIx
NkVDMzRFMDBBNzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3Iu
aDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NjIxNkVDMzRGMDBBNzNBMTIgLyogTGli
V2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwOyBwYXRoID0gbGli
d2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDEyODI3QjAyN0U0QTlDMzAwNUFEREUyIC8qIFZpZGVvRnJhbWUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0ZyYW1lLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3MDA5RDc0MDMgLyog
UmVhZGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4
MTFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDI1OSw2ICszMDI2MCw3IEBA
CiAJCQkJODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCAqLywK
IAkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5jcHAgKi8sCiAJCQkJ
N0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLywKKwkJCQk0MTI4MjdC
MDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5tbSAqLywKIAkJCQk0MURFRUZCNDI3MTlC
QTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJCQkJNDE2MDQ5MzEyNzQz
QjBFNzAwQTg2RkEwIC8qIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCAqLywKIAkJCQk1MTVGNzk1
MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKQEAg
LTM3OTY2LDcgKzM3OTY4LDcgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBEMzdBREIgLyogVmVs
b2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0Qg
LyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFRUYzQjI1
Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8qIFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdCRTM3Rjg3MjdCQkI3MDgwMDdBNkNEMyAvKiBWaWRlb0ZyYW1lQ1YuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBWaWRlb0ZyYW1lTGli
V2ViUlRDLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyog
VmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVNhbXBsZS5oCmluZGV4IDk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5MWM0OWIyZGUwMGEw
ZDAuLjVjNTM5MDdlNjZmYzExNjAxYzRhZWMxZTA3ODg3ZjUwOWNjODQ5NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMjksMTAgKzI5LDEwIEBACiAjaW5jbHVkZSAi
Rm91ckNDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5cy5o
PgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbVN0cmluZy5oPgogCkBAIC01Niw4ICs1Niw3IEBAIHN0cnVjdCBQbGF0Zm9ybVNhbXBsZSB7
CiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUs
CiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCi0gICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5
cGUsCi0gICAgICAgIFZpZGVvRnJhbWVUeXBlLCAvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVu
IFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgorICAgICAgICBCeXRlUmFuZ2VTYW1wbGVU
eXBlCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKICAgICAgICAgY29uc3QgTW9ja1NhbXBsZUJv
eCogbW9ja1NhbXBsZUJveDsKQEAgLTkyLDggKzkxLDYgQEAgcHVibGljOgogICAgIH0KICAgICB2
aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JB
SW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAgZW51bSBTYW1wbGVG
bGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAxIDw8IDAsCkBAIC0x
MTEsMjAgKzEwOCw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
Ci0gICAgZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAg
ICAgIFVwc2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0gICAgICAgIExlZnQg
PSAyNzAsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90YXRpb24oKSBjb25z
dCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWly
cm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgcGl4
ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
dmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShj
b25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyBy
ZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNwbGF5aW5nKCkgY29u
c3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAgIGJvb2wgaGFzQWxw
aGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAgLTE5MSw3ICsxNzQs
NiBAQCBzdHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAgICAgRmxvYXRTaXpl
IGRpc3BsYXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAgICAgUGxhdGZvcm1W
aWRlb0NvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4Myw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJWaWRlb0luZm8pIGNv
bnN0IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25jYXN0PGNvbnN0IFZp
ZGVvSW5mbz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6ZSA9PSBvdGhlci5z
aXplICYmIGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJpdERlcHRoID09IG90
aGVyLmJpdERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFjZSAmJiByb3RhdGlv
biA9PSBvdGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIuYXRvbURhdGEpIHx8
IChhdG9tRGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0gKm90aGVyLmF0b21E
YXRhKSk7CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYgZGlzcGxheVNpemUg
PT0gb3RoZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0RGVwdGggJiYgY29s
b3JTcGFjZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYmICFvdGhlci5hdG9t
RGF0YSkgfHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9tRGF0YSA9PSAqb3Ro
ZXIuYXRvbURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OCw2IEBAIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24+IHsKLSAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb246Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpVcHNpZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6UmlnaHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpM
ZWZ0Ci0gICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dBcmd1
bWVudDsKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1w
bGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZWU3OWU1ODJl
MmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uMGQ4YTdjZWU0N2U2ODBiNmZiNWVjYTRk
YjQxNjk5YzM2NjgzMTU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAK
QEAgLTI2LDExNCArMjYsMzEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWaWRl
b0ZyYW1lLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJWaWRlb0ZyYW1lQ1Yu
aCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1ZpZGVvRnJhbWU6OlZpZGVvRnJh
bWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24g
cm90YXRpb24pCiAgICAgOiBtX3ByZXNlbnRhdGlvblRpbWUocHJlc2VudGF0aW9uVGltZSkKICAg
ICAsIG1faXNNaXJyb3JlZChpc01pcnJvcmVkKQogICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikK
IHsKIH0KIAotVmlkZW9GcmFtZTo6flZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7Ci0KLU1lZGlhVGlt
ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
cmVzZW50YXRpb25UaW1lOwotfQotCi1WaWRlb0ZyYW1lOjpSb3RhdGlvbiBWaWRlb0ZyYW1lOjpy
b3RhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcm90YXRpb247Ci19Ci0KLWJvb2wgVmlk
ZW9GcmFtZTo6aXNNaXJyb3JlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNNaXJyb3JlZDsK
LX0KLQotV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgVmlkZW9GcmFtZTo6cGxhdGZvcm1TYW1wbGUo
KSBjb25zdAotewotICAgIHJldHVybiB7IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpWaWRlb0Zy
YW1lVHlwZSwgeyB9IH07Ci19Ci0KLVBsYXRmb3JtU2FtcGxlOjpUeXBlIFZpZGVvRnJhbWU6OnBs
YXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3Jt
U2FtcGxlOjpWaWRlb0ZyYW1lVHlwZTsKLX0KLQotTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmRlY29k
ZVRpbWUoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB7
IH07Ci19Ci0KLU1lZGlhVGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotQXRvbVN0cmluZyBW
aWRlb0ZyYW1lOjp0cmFja0lEKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4geyB9OwotfQotCi1zaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMoKSBj
b25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi12
b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFZpZGVvRnJhbWU6OnNldFRpbWVz
dGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKLXsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBWaWRlb0ZyYW1l
OjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0Ci17Ci0gICAgQ1JBU0goKTsKLX0KLQot
TWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIFZpZGVvRnJhbWU6OmZsYWdzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzOjpOb25lOwotfQotCi12b2lkIFZpZGVv
RnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdAotewotfQotCi12b2lkIFZpZGVvRnJhbWU6
OmluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJv
b2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgVmlkZW9GcmFtZTo6
aW5pdGlhbGl6ZUNoYXJhY3RlcmlzdGljcyhNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9v
bCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBjb25zdF9jYXN0PE1lZGlh
VGltZSY+KG1fcHJlc2VudGF0aW9uVGltZSkgPSBwcmVzZW50YXRpb25UaW1lOwogICAgIGNvbnN0
X2Nhc3Q8Ym9vbCY+KG1faXNNaXJyb3JlZCkgPSBpc01pcnJvcmVkOwotICAgIGNvbnN0X2Nhc3Q8
VmlkZW9Sb3RhdGlvbiY+KG1fcm90YXRpb24pID0gcm90YXRpb247CisgICAgY29uc3RfY2FzdDxS
b3RhdGlvbiY+KG1fcm90YXRpb24pID0gcm90YXRpb247CiB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkKLVJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWU6OmFzVmlkZW9GcmFtZUNWKCkKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gVmlkZW9G
cmFtZTo6Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0byBidWZmZXIgPSBwaXhl
bEJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlzTWly
cm9yZWQoKSwgcm90YXRpb24oKSwgYnVmZmVyKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNl
bmRpZgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZpZGVvRnJhbWUuaAppbmRleCA4YWE0MmVlZmZhYWY2YWI0ZDM3ZTlhODU2YTI0NTk3
Y2NiYTU3MDE1Li5iNjRiM2JjYjNjMDIwZmE1NWY1MjE2ZmUwNGU2YTQ1YTEwNzJhZTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0yNyw2NSArMjcsNzcgQEAKIAogI2lm
IEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisjaW5jbHVkZSAiRmxv
YXRTaXplLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMuaD4KKyNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc0lkZW50aXR5OwogI2lmIFVTRShBVkZP
VU5EQVRJT04pICYmIFBMQVRGT1JNKENPQ09BKQogY2xhc3MgVmlkZW9GcmFtZUNWOwogI2VuZGlm
CiAKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJhbWUgZnJvbSBhIGRlY29kZXIs
IGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgotLy8gRklYTUU6IEN1cnJlbnRseSBmb3IgaW1w
bGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2FtcGxlIHVudGlsIGNhcHR1
cmUgY29kZQotLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxlCi1jbGFzcyBWaWRlb0Zy
YW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK2NsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8VmlkZW9GcmFtZT4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIH5WaWRlb0ZyYW1lKCk7CisgICAgdmlydHVhbCB+VmlkZW9GcmFtZSgpID0gZGVmYXVsdDsK
KworICAgIGVudW0gY2xhc3MgUm90YXRpb24geworICAgICAgICBOb25lID0gMCwKKyAgICAgICAg
VXBzaWRlRG93biA9IDE4MCwKKyAgICAgICAgUmlnaHQgPSA5MCwKKyAgICAgICAgTGVmdCA9IDI3
MCwKKyAgICB9OwogCi0gICAgdXNpbmcgUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjsKKyAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlc2VudGF0aW9uVGltZTsgfQorICAgIFJvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNNaXJyb3JlZDsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShBVkZPVU5EQVRJT04p
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFZpZGVvRnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1Yo
KTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Q7CiAKLSAgICAvLyBXZWJDb3JlOjpNZWRpYVNh
bXBsZSBvdmVycmlkZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSb3RhdGlvbiByb3RhdGlv
bigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNaXJyb3JlZCgpIGNv
bnN0IGZpbmFsOwotICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2Ft
cGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCi0gICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29y
ZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25z
dCBmaW5hbDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzTGliV2ViUlRDKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSNp
ZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgYm9vbCBpc0NWKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCk7Ci0jZW5kaWYKKyAgICB2
aXJ0dWFsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9OwogI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldE93bmVy
c2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIHsgfQogCi0gICAgdm9pZCBpbml0
aWFsaXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlz
TWlycm9yZWQsIFZpZGVvUm90YXRpb24pOworICAgIHZvaWQgaW5pdGlhbGl6ZUNoYXJhY3Rlcmlz
dGljcyhNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlv
bik7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBWaWRlb0ZyYW1lKE1lZGlhVGlt
ZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24pOworICAg
IFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJv
b2wgaXNNaXJyb3JlZCwgUm90YXRpb24pOworCitwcml2YXRlOgogICAgIGNvbnN0IE1lZGlhVGlt
ZSBtX3ByZXNlbnRhdGlvblRpbWU7CiAgICAgY29uc3QgYm9vbCBtX2lzTWlycm9yZWQ7Ci0gICAg
Y29uc3QgVmlkZW9Sb3RhdGlvbiBtX3JvdGF0aW9uOworICAgIGNvbnN0IFJvdGF0aW9uIG1fcm90
YXRpb247Cit9OwogCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgbm90IGludGVu
ZGVkIHRvIGJlIHVzZWQgZm9yIHRoZXNlIG9iamVjdHMuCi0gICAgLy8gV2ViQ29yZTo6TWVkaWFT
YW1wbGUgb3ZlcnJpZGVzLgotICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkZWNvZGVUaW1l
KCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGR1cmF0aW9uKCkg
Y29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQXRvbVN0cmluZyB0cmFja0lEKCkgY29u
c3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3Qg
TWVkaWFUaW1lJikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lc3RhbXBz
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHko
KSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVGbGFncyBmbGFncygpIGNv
bnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0IGZpbmFsOworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbj4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uLAor
ICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwKKyAgICAgICAgV2Vi
Q29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd24sCisgICAgICAgIFdlYkNvcmU6
OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCwKKyAgICAgICAgV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6Um90YXRpb246OkxlZnQKKyAgICA+OwogfTsKIAogfQogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWUpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1w
bGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlZpZGVv
RnJhbWVUeXBlOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0jZW5kaWYKKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9W
aWRlb0ZyYW1lLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yYTdkYzM5NzE4N2JiZTUwMzZhYmI1YTJlY2Y1NzUxZGI0Mjk2ZTJmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5tbQpAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZp
ZGVvRnJhbWUuaCIKKworI2lmIEVOQUJMRShWSURFTykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNp
bXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ1Yu
aCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CisKKyNpbXBv
cnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExp
bmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRB
cnJheT4gVmlkZW9GcmFtZTo6Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0Cit7CisgICAgUGl4ZWxC
dWZmZXJDb25mb3JtZXJDViBwaXhlbEJ1ZmZlckNvbmZvcm1lcigoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRU
eXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMlJHQkEpIH0pOworCisgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IHRoaXMtPnBpeGVsQnVmZmVyKCk7CisgICAgYXV0byByZ2JhUGl4ZWxCdWZmZXIg
PSBwaXhlbEJ1ZmZlckNvbmZvcm1lci5jb252ZXJ0KHBpeGVsQnVmZmVyKTsKKyAgICBhdXRvIHN0
YXR1cyA9IENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgp
LCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVz
LCBzdGF0dXMgPT0gbm9FcnIpOworCisgICAgdm9pZCogZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRC
YXNlQWRkcmVzc09mUGxhbmUocmdiYVBpeGVsQnVmZmVyLmdldCgpLCAwKTsKKyAgICBzaXplX3Qg
Ynl0ZUxlbmd0aCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpICogQ1ZQaXhl
bEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSAqIDQ7CisgICAgYXV0byByZXN1bHQgPSBKU0M6
OlVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGJ5dGVMZW5ndGgpLCAwLCBieXRlTGVuZ3RoKTsKKworICAgIHN0YXR1cyA9IENWUGl4ZWxC
dWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVm
ZmVyTG9ja19SZWFkT25seSk7CisgICAgQVNTRVJUKHN0YXR1cyA9PSBub0Vycik7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKK1JlZlB0cjxWaWRlb0Zy
YW1lQ1Y+IFZpZGVvRnJhbWU6OmFzVmlkZW9GcmFtZUNWKCkKK3sKKyAgICBpZiAoaXNDVigpKQor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8VmlkZW9GcmFtZUNWPih0aGlzKTsKKworICAgIGF1dG8g
YnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHByZXNlbnRhdGlvblRp
bWUoKSwgaXNNaXJyb3JlZCgpLCByb3RhdGlvbigpLCBidWZmZXIpOworfQorI2VuZGlmIC8vIFVT
RShBVkZPVU5EQVRJT04pCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmlu
ZGV4IDZjNWFlNTMzYjg3ZjAwNTM0YTdlZWU0ZWRhZTg1YWNhZjA2ZTIzZDcuLjRjNGMzNDc1MTk3
NDcxZTkxM2Y0MjJiMjAyM2MwNzQ3MGRmOWVkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC00Myw5ICs0Myw2IEBAIGNsYXNzIE1lZGlhU2FtcGxl
QVZGT2JqQyA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIHVpbnQ2
NF90IHRyYWNrSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNh
bXBsZSwgdHJhY2tJRCkpOyB9CiAgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNy
ZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIEF0b21TdHJpbmcgdHJhY2tJRCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0K
LSAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZSwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUs
IGJvb2wgbWlycm9yZWQgPSBmYWxzZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBs
ZUFWRk9iakMoc2FtcGxlLCByb3RhdGlvbiwgbWlycm9yZWQpKTsgfQotCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZTsKQEAg
LTY1LDEyICs2Miw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVm
UHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlh
VGltZSYgcHJlc2VudGF0aW9uVGltZSwgVXNlRW5kVGltZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcm90YXRpb247IH0KLSAgICBib29sIGlzTWlycm9yZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX21pcnJvcmVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSBmaW5hbDsKLQog
ICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Ft
cGxlLmdldCgpOyB9CiAKICAgICBib29sIGlzSG9tb2dlbmVvdXMoKSBjb25zdDsKQEAgLTgzLDIw
ICs3NCwxNSBAQCBwdWJsaWM6CiAgICAgS2V5SURzJiBrZXlJRHMoKSB7IHJldHVybiBtX2tleUlE
czsgfQogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCBvbmNlIFZpZGVvRnJh
bWUgaXMgbm90IGEgTWVkaWFTYW1wbGUuCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFZpZGVv
RnJhbWVDVj4gdmlkZW9GcmFtZSgpIGNvbnN0OwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQ
T1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVm
LCBBdG9tU3RyaW5nIHRyYWNrSUQpOwogICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxlQVZG
T2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwgdWludDY0X3QgdHJhY2tJRCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmLCBWaWRlb1JvdGF0aW9u
LCBib29sIG1pcnJvcmVkKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5NZWRpYVNhbXBs
ZUFWRk9iakMoKTsKIAogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9zYW1wbGU7
CiAgICAgQXRvbVN0cmluZyBtX2lkOwotICAgIFZpZGVvUm90YXRpb24gbV9yb3RhdGlvbiB7IFZp
ZGVvUm90YXRpb246Ok5vbmUgfTsKLSAgICBib29sIG1fbWlycm9yZWQgeyBmYWxzZSB9OwogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQog
ICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDEzMTFiMzM3MThh
ODRlMzNkMTM5MzExMzAyZDA0NzVmZDk2M2M4ZDAuLjViMTM4ZTY0NTBkMjhmMTFkNTAyYmViZGQ0
YTYwZjM2MTEyMWFiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFW
Rk9iakMubW0KQEAgLTY2LDEyICs2Niw2IEBAIE1lZGlhU2FtcGxlQVZGT2JqQzo6TWVkaWFTYW1w
bGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJCiAgICAg
LCBtX2lkKEF0b21TdHJpbmc6Om51bWJlcih0cmFja0lEKSkKIHsKIH0KLU1lZGlhU2FtcGxlQVZG
T2JqQzo6TWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgVmlkZW9S
b3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKLSAgICA6IG1fc2FtcGxlKHNhbXBsZSkK
LSAgICAsIG1fcm90YXRpb24ocm90YXRpb24pCi0gICAgLCBtX21pcnJvcmVkKG1pcnJvcmVkKQot
ewotfQogCiBNZWRpYVNhbXBsZUFWRk9iakM6On5NZWRpYVNhbXBsZUFWRk9iakMoKSA9IGRlZmF1
bHQ7CiAKQEAgLTExMCwyMiArMTA0LDYgQEAgUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZP
YmpDOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNhbXBsZTsKIH0KIAotdWlu
dDMyX3QgTWVkaWFTYW1wbGVBVkZPYmpDOjpwaXhlbEZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotICAgIHJldHVybiBDVlBp
eGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKLX0KLQotUmVmUHRyPFZp
ZGVvRnJhbWVDVj4gTWVkaWFTYW1wbGVBVkZPYmpDOjp2aWRlb0ZyYW1lKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fc2FtcGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBpeGVs
QnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZl
ckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Ci0gICAgaWYgKCFwaXhlbEJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRl
KHByZXNlbnRhdGlvblRpbWUoKSwgbV9taXJyb3JlZCwgbV9yb3RhdGlvbiwgUmV0YWluUHRyIHsg
cGl4ZWxCdWZmZXIgfSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzQ01TYW1wbGVCdWZmZXJBdHRhY2ht
ZW50UmFuZG9tQWNjZXNzKENGRGljdGlvbmFyeVJlZiBhdHRhY2htZW50RGljdCkKIHsKICAgICBy
ZXR1cm4gIUNGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGF0dGFjaG1lbnREaWN0LCBQQUw6OmtDTVNh
bXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYyk7CkBAIC0zMTIsMzkgKzI5MCw2IEBAIFJlZjxNZWRp
YVNhbXBsZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNv
bnN0CiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKGFkb3B0Q0YobmV3U2Ft
cGxlQnVmZmVyKS5nZXQoKSwgbV9pZCk7CiB9CiAKLVJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBNZWRpYVNhbXBsZUFWRk9iakM6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAotewotICAg
IGNvbnN0IE9TVHlwZSBpbWFnZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV8zMlJHQkE7Ci0g
ICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBpbWFnZUZvcm1hdE51bWJlciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmaW1hZ2VGb3JtYXQpKTsK
LQotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjb25mb3JtZXJPcHRpb25z
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDEsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb25mb3JtZXJPcHRpb25zLmdldCgpLCBrQ1ZQaXhlbEJ1
ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgaW1hZ2VGb3JtYXROdW1iZXIuZ2V0KCkpOwotICAgIFBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1YgcGl4ZWxCdWZmZXJDb25mb3JtZXIoY29uZm9ybWVyT3B0aW9u
cy5nZXQoKSk7Ci0KLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1
ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgp
KSk7Ci0gICAgYXV0byByZ2JhUGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckNvbmZvcm1lci5jb252
ZXJ0KHBpeGVsQnVmZmVyKTsKLSAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJMb2NrQmFz
ZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9u
bHkpOwotICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCBzdGF0dXMgPT0gbm9FcnIpOwotCi0gICAg
dm9pZCogZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocmdiYVBpeGVs
QnVmZmVyLmdldCgpLCAwKTsKLSAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IENWUGl4ZWxCdWZmZXJH
ZXRIZWlnaHQocGl4ZWxCdWZmZXIpICogQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVy
KSAqIDQ7Ci0gICAgYXV0byByZXN1bHQgPSBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVMZW5ndGgpLCAwLCBieXRlTGVu
Z3RoKTsKLQotICAgIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhyZ2Jh
UGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7Ci0gICAgQVNT
RVJUKHN0YXR1cyA9PSBub0Vycik7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMg
aW5saW5lIHZvaWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRpYXRlbHkoQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlQnVmZmVyKQotewotICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJh
eSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1
ZmZlciwgdHJ1ZSk7Ci0gICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50
KGF0dGFjaG1lbnRzQXJyYXkpOyArK2kpIHsKLSAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiBhdHRhY2htZW50cyA9IGNoZWNrZWRfY2ZfY2FzdDxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzQXJyYXksIGkpKTsKLSAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoYXR0YWNobWVudHMsIFBBTDo6a0NNU2FtcGxlQXR0YWNobWVudEtl
eV9EaXNwbGF5SW1tZWRpYXRlbHksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICB9Ci19Ci0KIGJvb2wg
TWVkaWFTYW1wbGVBVkZPYmpDOjppc0hvbW9nZW5lb3VzKCkgY29uc3QKIHsKICAgICBDRkFycmF5
UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNo
bWVudHNBcnJheShtX3NhbXBsZS5nZXQoKSwgdHJ1ZSk7CkBAIC00MTUsMTcgKzM2MCw0IEBAIFZl
Y3RvcjxSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4gTWVkaWFTYW1wbGVBVkZPYmpDOjpkaXZpZGVJ
bnRvSG9tb2dlbmVvdXNTYW1wbGVzCiAgICAgcmV0dXJuIHNhbXBsZXM7CiB9CiAKLUNWUGl4ZWxC
dWZmZXJSZWYgTWVkaWFTYW1wbGVBVkZPYmpDOjpwaXhlbEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJH
ZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotfQotCi12b2lkIE1lZGlhU2FtcGxlQVZG
T2JqQzo6c2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJj
ZU93bmVyKQotewotICAgIEFTU0VSVChyZXNvdXJjZU93bmVyKTsKLSAgICBhdXRvIGJ1ZmZlciA9
IHBpeGVsQnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgc2V0T3duZXJzaGlwSWRl
bnRpdHlGb3JDVlBpeGVsQnVmZmVyKGJ1ZmZlciwgcmVzb3VyY2VPd25lcik7Ci19Ci0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCmluZGV4IDFjODBjMjJlMDI2NjU5NjZkMTdiOThh
ODZjMTI1MjZlMTZmYjkwOWYuLjg2NGNmMjRmMjE4NTE2YjFhZmI1MmQyNmJhYTA4Mzc2ODM5YmM2
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaApAQCAtMjMsNiArMjMsOSBAQAog
CiAjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVNZXRhZGF0YUdT
dHJlYW1lci5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKwordHlwZWRlZiBzdHJ1
Y3QgX0dzdFNhbXBsZSBHc3RTYW1wbGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAo=
</data>
<flag name="commit-queue"
          id="483482"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455473</attachid>
            <date>2022-03-23 01:11:41 -0700</date>
            <delta_ts>2022-03-23 03:11:46 -0700</delta_ts>
            <desc>GStreamer fix</desc>
            <filename>bug-238071-20220323091138.patch</filename>
            <type>text/plain</type>
            <size>30905</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ1ZDM1YzNhMzU1NzE1
MWM0ZmQ3NzIwNDk2YmM2NzBiZmU0M2ZiMy4uNmMxYTRlODc3ZDQ0ODRiM2Y1ZDI3ZDgwNjZjOGEz
NDNmMGFjYjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXBkYXRlIE1lZGlhU2FtcGxlLCBNZWRpYVNhbXBs
ZUFWRk9iakMgYW5kIFZpZGVvRnJhbWUgYWNjb3JkaW5nIHRoZSBzZXBhcmF0aW9uLgorICAgICAg
ICBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmg6CisKIDIwMjItMDMtMjIgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGF0aW9uIG9mIERvY3VtZW50IHNp
dGVGb3JDb29raWVzIGlzIGJ1Z2d5IGluIGNhc2UgZG9jdW1lbnQgaXMgY3JlYXRlZCBieSB3aW5k
b3cub3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNDRlYzk2ZTYyMjEwOGY0Y2IzMzk1
M2IyZTZlMDE2NmY0N2M4ZWUwOC4uODkzM2I5Zjk1YjRjMzBkZjc1MTQxNzliNjAzMTdlMzg5ZDE0
MjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMzIsNiArMjMyLDcgQEAgcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KK3BsYXRmb3JtL1ZpZGVv
RnJhbWUubW0KIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZmMmY5MWYzYThjNjIz
NGRhMGQ3NDVhMjYuLjA5NWI3M2U1YmQ4YWZkYjE3NDNkZmI2YjI3Y2NiYzk0YTYxMTA1NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwNzYsNiArMTA3Niw3IEBACiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENS
dGNwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDExNEZFMkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87
IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgy
NDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhD
NDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEz
MSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCTQxMjgyN0IyMjdFNEFDM0Mw
MDVBRERFMiAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOTk3
MUY1OUI5NjMwMDlENzQwMyAvKiBGZXRjaEJvZHlTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RiAvKiBG
ZXRjaEJvZHlTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEMzOTVCMUM4
RjBBNjEwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDIxLDcgKzI0MjIsNiBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjVBM0RBRjI3QUJGOEM1
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRE
RDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBB
TkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04NTkwLDYgKzg1OTAsNyBAQAogCQk0MTIwOUU5NDIxNkVBNjlBMDBB
NzNBMTIgLyogUlRDQ2VydGlmaWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUlRDQ2VydGlmaWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTIwOUU5NTIxNkVDMzRFMDBBNzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3IuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NjIxNkVDMzRGMDBB
NzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3Bw
OyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyODI3QjAyN0U0QTlDMzAwNUFEREUyIC8qIFZp
ZGVvRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRl
b0ZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTI5Qzk4MTFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVT
dHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDI1OSw2
ICszMDI2MCw3IEBACiAJCQkJODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25C
dWJibGUuaCAqLywKIAkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5j
cHAgKi8sCiAJCQkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLywK
KwkJCQk0MTI4MjdCMDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5tbSAqLywKIAkJCQk0
MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJCQkJ
NDE2MDQ5MzEyNzQzQjBFNzAwQTg2RkEwIC8qIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCAqLywK
IAkJCQk1MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVy
LmNwcCAqLywKQEAgLTM3OTY2LDcgKzM3OTY4LDcgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBE
MzdBREIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTND
MDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8qIFZpZGVvRnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCRTM3Rjg3MjdCQkI3MDgwMDdBNkNEMyAvKiBWaWRlb0Zy
YW1lQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBW
aWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFB
MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5
MWM0OWIyZGUwMGEwZDAuLjVjNTM5MDdlNjZmYzExNjAxYzRhZWMxZTA3ODg3ZjUwOWNjODQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMjksMTAgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2Uu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9U
eXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCkBAIC01Niw4ICs1Niw3IEBAIHN0cnVjdCBQbGF0
Zm9ybVNhbXBsZSB7CiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCi0gICAgICAgIEJ5dGVS
YW5nZVNhbXBsZVR5cGUsCi0gICAgICAgIFZpZGVvRnJhbWVUeXBlLCAvLyBGSVhNRTogVG8gYmUg
cmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgorICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKICAgICAgICAgY29uc3Qg
TW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKQEAgLTkyLDggKzkxLDYgQEAgcHVibGljOgog
ICAgIH0KICAgICB2aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAg
ZW51bSBTYW1wbGVGbGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAx
IDw8IDAsCkBAIC0xMTEsMjAgKzEwOCw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogCi0gICAgZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9u
ZSA9IDAsCi0gICAgICAgIFVwc2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0g
ICAgICAgIExlZnQgPSAyNzAsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5j
KCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNw
bGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAg
LTE5MSw3ICsxNzQsNiBAQCBzdHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAg
ICAgRmxvYXRTaXplIGRpc3BsYXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAg
ICAgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
IH07CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJW
aWRlb0luZm8pIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25j
YXN0PGNvbnN0IFZpZGVvSW5mbz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6
ZSA9PSBvdGhlci5zaXplICYmIGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJp
dERlcHRoID09IG90aGVyLmJpdERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFj
ZSAmJiByb3RhdGlvbiA9PSBvdGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIu
YXRvbURhdGEpIHx8IChhdG9tRGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0g
Km90aGVyLmF0b21EYXRhKSk7CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYg
ZGlzcGxheVNpemUgPT0gb3RoZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0
RGVwdGggJiYgY29sb3JTcGFjZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYm
ICFvdGhlci5hdG9tRGF0YSkgfHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9t
RGF0YSA9PSAqb3RoZXIuYXRvbURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OCw2
IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0Ci0gICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0
cnVjdCBMb2dBcmd1bWVudDsKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5k
ZXggZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uNzMzMmQ4ZGNlMjg4
YWM1MWMwZWJkNzI3Yzg0ODYwN2E5MjljMjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5jcHAKQEAgLTI2LDExNCArMjYsMzEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJW
aWRlb0ZyYW1lQ1YuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1ZpZGVvRnJh
bWU6OlZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3Jl
ZCwgUm90YXRpb24gcm90YXRpb24pCiAgICAgOiBtX3ByZXNlbnRhdGlvblRpbWUocHJlc2VudGF0
aW9uVGltZSkKICAgICAsIG1faXNNaXJyb3JlZChpc01pcnJvcmVkKQogICAgICwgbV9yb3RhdGlv
bihyb3RhdGlvbikKIHsKIH0KIAotVmlkZW9GcmFtZTo6flZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7
Ci0KLU1lZGlhVGltZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lOwotfQotCi1WaWRlb0ZyYW1lOjpSb3RhdGlvbiBW
aWRlb0ZyYW1lOjpyb3RhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcm90YXRpb247Ci19
Ci0KLWJvb2wgVmlkZW9GcmFtZTo6aXNNaXJyb3JlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aXNNaXJyb3JlZDsKLX0KLQotV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgVmlkZW9GcmFtZTo6cGxh
dGZvcm1TYW1wbGUoKSBjb25zdAotewotICAgIHJldHVybiB7IFdlYkNvcmU6OlBsYXRmb3JtU2Ft
cGxlOjpWaWRlb0ZyYW1lVHlwZSwgeyB9IH07Ci19Ci0KLVBsYXRmb3JtU2FtcGxlOjpUeXBlIFZp
ZGVvRnJhbWU6OnBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OlBsYXRmb3JtU2FtcGxlOjpWaWRlb0ZyYW1lVHlwZTsKLX0KLQotTWVkaWFUaW1lIFZpZGVv
RnJhbWU6OmRlY29kZVRpbWUoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiB7IH07Ci19Ci0KLU1lZGlhVGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQot
QXRvbVN0cmluZyBWaWRlb0ZyYW1lOjp0cmFja0lEKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1zaXplX3QgVmlkZW9GcmFtZTo6c2l6
ZUluQnl0ZXMoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biAwOwotfQotCi12b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRp
YVRpbWUmKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFZpZGVvRnJh
bWU6OnNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKLXsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
PiBWaWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0Ci17Ci0gICAgQ1JB
U0goKTsKLX0KLQotTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIFZpZGVvRnJhbWU6OmZsYWdzKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzOjpOb25lOwotfQot
Ci12b2lkIFZpZGVvRnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdAotewotfQotCi12b2lk
IFZpZGVvRnJhbWU6OmluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQg
VmlkZW9GcmFtZTo6aW5pdGlhbGl6ZUNoYXJhY3RlcmlzdGljcyhNZWRpYVRpbWUgcHJlc2VudGF0
aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBjb25z
dF9jYXN0PE1lZGlhVGltZSY+KG1fcHJlc2VudGF0aW9uVGltZSkgPSBwcmVzZW50YXRpb25UaW1l
OwogICAgIGNvbnN0X2Nhc3Q8Ym9vbCY+KG1faXNNaXJyb3JlZCkgPSBpc01pcnJvcmVkOwotICAg
IGNvbnN0X2Nhc3Q8VmlkZW9Sb3RhdGlvbiY+KG1fcm90YXRpb24pID0gcm90YXRpb247CisgICAg
Y29uc3RfY2FzdDxSb3RhdGlvbiY+KG1fcm90YXRpb24pID0gcm90YXRpb247CiB9CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkKLVJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWU6OmFzVmlkZW9G
cmFtZUNWKCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoR1NUUkVBTUVSKQorUmVmUHRy
PEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBj
b25zdAogewotICAgIGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpj
cmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZl
cik7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIAogfQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9W
aWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKaW5kZXgg
OGFhNDJlZWZmYWFmNmFiNGQzN2U5YTg1NmEyNDU5N2NjYmE1NzAxNS4uNDMyNjI2MTUyMzU0YjY3
Njk2YThhZDQyN2U2ZjkzNTMwMGUzMWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJh
bWUuaApAQCAtMjcsNjUgKzI3LDgwIEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRl
ICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCit0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IFByb2Nlc3NJZGVudGl0eTsKICNpZiBVU0UoQVZGT1VOREFUSU9OKSAmJiBQTEFURk9STShDT0NP
QSkKIGNsYXNzIFZpZGVvRnJhbWVDVjsKICNlbmRpZgogCiAvLyBBIGNsYXNzIHJlcHJlc2VudGlu
ZyBhIHZpZGVvIGZyYW1lIGZyb20gYSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2ltaWxh
ci4KLS8vIEZJWE1FOiBDdXJyZW50bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGluaGVy
dHMgZnJvbSBNZWRpYVNhbXBsZSB1bnRpbCBjYXB0dXJlIGNvZGUKLS8vIHN0b3BzIHJlZmVycmlu
ZyB0byBNZWRpYVNhbXBsZQotY2xhc3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7
CitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZpZGVvRnJh
bWU+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOworICAgIHZp
cnR1YWwgflZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNzIFJvdGF0aW9u
IHsKKyAgICAgICAgTm9uZSA9IDAsCisgICAgICAgIFVwc2lkZURvd24gPSAxODAsCisgICAgICAg
IFJpZ2h0ID0gOTAsCisgICAgICAgIExlZnQgPSAyNzAsCisgICAgfTsKIAotICAgIHVzaW5nIFJv
dGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb247CisgICAgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblRpbWU7IH0KKyAgICBS
b3RhdGlvbiByb3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb247IH0KKyAgICBib29s
IGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWlycm9yZWQ7IH0KKworI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCk7CisjZW5kaWYKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNv
bnN0OwogCi0gICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgotICAgIFdFQkNP
UkVfRVhQT1JUIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBmaW5hbDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKLSAgICAvLyBGSVhNRTog
V2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVl
ZGVkLgotICAgIFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6
OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWw7CisgICAgdmlydHVhbCBGbG9h
dFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVpbnQzMl90
IHBpeGVsRm9ybWF0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVtb3RlUHJv
eHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpYldlYlJU
QygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2
aXJ0dWFsIGJvb2wgaXNDVigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8VmlkZW9GcmFtZUNWPiBh
c1ZpZGVvRnJhbWVDVigpOworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgdmlydHVhbCBib29sIGlz
R1N0cmVhbWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JikgeyB9CiAK
LSAgICB2b2lkIGluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgdm9pZCBpbml0aWFs
aXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFJvdGF0aW9uKTsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVv
RnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZShNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbik7CisKK3ByaXZhdGU6CiAgICAg
Y29uc3QgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGltZTsKICAgICBjb25zdCBib29sIG1faXNN
aXJyb3JlZDsKLSAgICBjb25zdCBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb247CisgICAgY29uc3Qg
Um90YXRpb24gbV9yb3RhdGlvbjsKK307CiAKLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IFRoZXNl
IGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlc2Ugb2JqZWN0cy4KLSAgICAvLyBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSBvdmVycmlkZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRp
bWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5n
IHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9mZnNldFRpbWVz
dGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBjcmVhdGVOb25E
aXNwbGF5aW5nQ29weSgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIFNhbXBsZUZs
YWdzIGZsYWdzKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3QgZmluYWw7Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6Um90YXRpb24sCisgICAgICAgIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25l
LAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93biwKKyAg
ICAgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0LAorICAgICAgICBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdAorICAgID47CiB9OwogCiB9CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9GcmFtZSkKLSAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJl
dHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZVR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9y
bVNhbXBsZTo6VmlkZW9GcmFtZVR5cGU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
LSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRl
b0ZyYW1lLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhN2RjMzk3MTg3YmJlNTAzNmFiYjVhMmVjZjU3NTFkYjQy
OTZlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLm1tCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBQTEFURk9S
TShDT0NPQSkKKworI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgorI2luY2x1ZGUg
IlZpZGVvRnJhbWVDVi5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGlu
ZXMuaD4KKworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxKU0M6
OlVpbnQ4Q2xhbXBlZEFycmF5PiBWaWRlb0ZyYW1lOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QK
K3sKKyAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyUkdCQSkgfSk7CisK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gdGhpcy0+cGl4ZWxCdWZmZXIoKTsKKyAgICBhdXRvIHJn
YmFQaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyQ29uZm9ybWVyLmNvbnZlcnQocGl4ZWxCdWZmZXIp
OworICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhyZ2JhUGl4
ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAgQVNTRVJU
X1VOVVNFRChzdGF0dXMsIHN0YXR1cyA9PSBub0Vycik7CisKKyAgICB2b2lkKiBkYXRhID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDAp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1
ZmZlcikgKiBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICogNDsKKyAgICBhdXRv
IHJlc3VsdCA9IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShKU0M6OkFycmF5QnVm
ZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgpOworCisgICAgc3Rh
dHVzID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQo
KSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlQoc3RhdHVzID09IG5v
RXJyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQor
UmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0ZyYW1lQ1YoKQoreworICAg
IGlmIChpc0NWKCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxWaWRlb0ZyYW1lQ1Y+KHRoaXMp
OworCisgICAgYXV0byBidWZmZXIgPSBwaXhlbEJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUo
cHJlc2VudGF0aW9uVGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZlcik7Cit9
CisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLmgKaW5kZXggNmM1YWU1MzNiODdmMDA1MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNk
Ny4uNGM0YzM0NzUxOTc0NzFlOTEzZjQyMmIyMDIzYzA3NDcwZGY5ZWRhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTQzLDkgKzQzLDYgQEAgY2xh
c3MgTWVkaWFTYW1wbGVBVkZPYmpDIDogcHVibGljIE1lZGlhU2FtcGxlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNh
bXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2Ft
cGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbVN0cmluZyB0
cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUs
IHRyYWNrSUQpKTsgfQotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUo
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uID0gVmlkZW9S
b3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHJvdGF0aW9uLCBtaXJyb3JlZCkpOyB9Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdC
QUltYWdlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtNjUsMTIgKzYyLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZp
ZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlp
bmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yb3RhdGlvbjsgfQotICAgIGJvb2wgaXNNaXJyb3Jl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWlycm9yZWQ7IH0KLSAgICBXRUJDT1JFX0VY
UE9SVCB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQ
T1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0
eSYpIGZpbmFsOwotCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNIb21vZ2VuZW91cygpIGNv
bnN0OwpAQCAtODMsMjAgKzc0LDE1IEBAIHB1YmxpYzoKICAgICBLZXlJRHMmIGtleUlEcygpIHsg
cmV0dXJuIG1fa2V5SURzOyB9CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVk
IG9uY2UgVmlkZW9GcmFtZSBpcyBub3QgYSBNZWRpYVNhbXBsZS4KLSAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8VmlkZW9GcmFtZUNWPiB2aWRlb0ZyYW1lKCkgY29uc3Q7CiBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2Ft
cGxlQnVmZmVyUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01T
YW1wbGVCdWZmZXJSZWYsIEF0b21TdHJpbmcgdHJhY2tJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
TWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmLCB1aW50NjRfdCB0cmFja0lEKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYs
IFZpZGVvUm90YXRpb24sIGJvb2wgbWlycm9yZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfk1lZGlhU2FtcGxlQVZGT2JqQygpOwogCiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBtX3NhbXBsZTsKICAgICBBdG9tU3RyaW5nIG1faWQ7Ci0gICAgVmlkZW9Sb3RhdGlvbiBt
X3JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwotICAgIGJvb2wgbV9taXJyb3JlZCB7
IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCiAgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9r
ZXlJRHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5k
ZXggMTMxMWIzMzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3NWZkOTYzYzhkMC4uNWIxMzhlNjQ1MGQy
OGYxMWQ1MDJiZWJkZDRhNjBmMzYxMTIxYWIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtNjYsMTIgKzY2LDYgQEAgTWVkaWFTYW1wbGVBVkZP
YmpDOjpNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1aW50NjRf
dCB0cmFja0kKICAgICAsIG1faWQoQXRvbVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKQogewogfQot
TWVkaWFTYW1wbGVBVkZPYmpDOjpNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQotICAgIDogbV9z
YW1wbGUoc2FtcGxlKQotICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKLSAgICAsIG1fbWlycm9y
ZWQobWlycm9yZWQpCi17Ci19CiAKIE1lZGlhU2FtcGxlQVZGT2JqQzo6fk1lZGlhU2FtcGxlQVZG
T2JqQygpID0gZGVmYXVsdDsKIApAQCAtMTEwLDIyICsxMDQsNiBAQCBQbGF0Zm9ybVNhbXBsZSBN
ZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKICAgICByZXR1cm4gc2Ft
cGxlOwogfQogCi11aW50MzJfdCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29u
c3QKLXsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJl
Zj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Ci0g
ICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwot
fQotCi1SZWZQdHI8VmlkZW9GcmFtZUNWPiBNZWRpYVNhbXBsZUFWRk9iakM6OnZpZGVvRnJhbWUo
KSBjb25zdAotewotICAgIGlmICghbV9zYW1wbGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6
OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLSAgICBpZiAo
IXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCBtX21pcnJvcmVkLCBtX3JvdGF0aW9u
LCBSZXRhaW5QdHIgeyBwaXhlbEJ1ZmZlciB9KTsKLX0KLQogc3RhdGljIGJvb2wgaXNDTVNhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnRSYW5kb21BY2Nlc3MoQ0ZEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRE
aWN0KQogewogICAgIHJldHVybiAhQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoYXR0YWNobWVudERp
Y3QsIFBBTDo6a0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jKTsKQEAgLTMxMiwzOSArMjkw
LDYgQEAgUmVmPE1lZGlhU2FtcGxlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZU5vbkRpc3Bs
YXlpbmdDb3B5KCkgY29uc3QKICAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUo
YWRvcHRDRihuZXdTYW1wbGVCdWZmZXIpLmdldCgpLCBtX2lkKTsKIH0KIAotUmVmUHRyPEpTQzo6
VWludDhDbGFtcGVkQXJyYXk+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Z2V0UkdCQUltYWdlRGF0YSgp
IGNvbnN0Ci17Ci0gICAgY29uc3QgT1NUeXBlIGltYWdlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyUkdCQTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGltYWdlRm9ybWF0TnVtYmVy
ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRyLCAga0NGTnVtYmVySW50VHlwZSwgICZp
bWFnZUZvcm1hdCkpOwotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNv
bmZvcm1lck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMSwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbmZvcm1lck9wdGlvbnMuZ2V0
KCksIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBpbWFnZUZvcm1hdE51bWJlci5n
ZXQoKSk7Ci0gICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViBwaXhlbEJ1ZmZlckNvbmZvcm1lcihj
b25mb3JtZXJPcHRpb25zLmdldCgpKTsKLQotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIo
bV9zYW1wbGUuZ2V0KCkpKTsKLSAgICBhdXRvIHJnYmFQaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVy
Q29uZm9ybWVyLmNvbnZlcnQocGl4ZWxCdWZmZXIpOwotICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhl
bEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVm
ZmVyTG9ja19SZWFkT25seSk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsIHN0YXR1cyA9PSBu
b0Vycik7Ci0KLSAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQ
bGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDApOwotICAgIHNpemVfdCBieXRlTGVuZ3RoID0g
Q1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgKiBDVlBpeGVsQnVmZmVyR2V0V2lk
dGgocGl4ZWxCdWZmZXIpICogNDsKLSAgICBhdXRvIHJlc3VsdCA9IEpTQzo6VWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZUxlbmd0
aCksIDAsIGJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jh
c2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRP
bmx5KTsKLSAgICBBU1NFUlQoc3RhdHVzID09IG5vRXJyKTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTYW1wbGVCdWZmZXJBc0Rpc3BsYXlJbW1lZGlh
dGVseShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCi17Ci0gICAgQ0ZBcnJheVJlZiBh
dHRhY2htZW50c0FycmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRz
QXJyYXkoc2FtcGxlQnVmZmVyLCB0cnVlKTsKLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBD
RkFycmF5R2V0Q291bnQoYXR0YWNobWVudHNBcnJheSk7ICsraSkgewotICAgICAgICBDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRzID0gY2hlY2tlZF9jZl9jYXN0PENGTXV0YWJsZURp
Y3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwgaSkp
OwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywgUEFMOjprQ01TYW1w
bGVBdHRhY2htZW50S2V5X0Rpc3BsYXlJbW1lZGlhdGVseSwga0NGQm9vbGVhblRydWUpOwotICAg
IH0KLX0KLQogYm9vbCBNZWRpYVNhbXBsZUFWRk9iakM6OmlzSG9tb2dlbmVvdXMoKSBjb25zdAog
ewogICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJH
ZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KG1fc2FtcGxlLmdldCgpLCB0cnVlKTsKQEAgLTQxNSwx
NyArMzYwLDQgQEAgVmVjdG9yPFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+PiBNZWRpYVNhbXBsZUFW
Rk9iakM6OmRpdmlkZUludG9Ib21vZ2VuZW91c1NhbXBsZXMKICAgICByZXR1cm4gc2FtcGxlczsK
IH0KIAotQ1ZQaXhlbEJ1ZmZlclJlZiBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsQnVmZmVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Ci19Ci0KLXZvaWQg
TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRl
bnRpdHkmIHJlc291cmNlT3duZXIpCi17Ci0gICAgQVNTRVJUKHJlc291cmNlT3duZXIpOwotICAg
IGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBz
ZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoYnVmZmVyLCByZXNvdXJjZU93bmVy
KTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwCmluZGV4IGI5ZDM4
ZjA0NzQ4ZGQxM2IzZDRmZDJlMzI2NzA4NjM1ODU3ZjI1YmIuLjVkNjJmMzFiNjgyZmM3ODAzNjU5
Zjk2YjE1ZTE1YTc4NjRjMDMyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5j
cHAKQEAgLTEwNCw5ICsxMDQsMTIgQEAgVmlkZW9GcmFtZUdTdHJlYW1lcjo6VmlkZW9GcmFtZUdT
dHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwgY29uc3QKIHsKIH0KIAot
UmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmdldFJH
QkFJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVv
RnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAogewotICAgIGF1dG8qIGNhcHMgPSBnc3Rf
c2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsKKyAgICBpZiAoIWlzR1N0cmVhbWVyKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogY2FwcyA9IGdzdF9zYW1wbGVf
Z2V0X2NhcHMoc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZUdTdHJlYW1lcio+KHRoaXMpLT5tX3NhbXBs
ZS5nZXQoKSk7CiAgICAgR3N0VmlkZW9JbmZvIGlucHV0SW5mbzsKICAgICBpZiAoIWdzdF92aWRl
b19pbmZvX2Zyb21fY2FwcygmaW5wdXRJbmZvLCBjYXBzKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaAppbmRleCAxYzgwYzIyZTAyNjY1OTY2
ZDE3Yjk4YTg2YzEyNTI2ZTE2ZmI5MDlmLi42N2Q2OTI0NDBhZTRiYjRmMDU1YzVjNDJmNWUzY2Fk
ZDRlZjZhMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKQEAgLTIzLDYgKzIz
LDkgQEAKIAogI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lTWV0
YWRhdGFHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK3R5cGVk
ZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ5LDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
Um90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9u
U2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQotICAgIFJl
ZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmlu
YWw7CiAgICAgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CisgICAgYm9vbCBpc0dTdHJlYW1lcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX3NhbXBsZTsKICAgICBGbG9hdFNpemUgbV9wcmVzZW50
YXRpb25TaXplOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455480</attachid>
            <date>2022-03-23 03:11:51 -0700</date>
            <delta_ts>2022-03-23 03:51:51 -0700</delta_ts>
            <desc>GStreamer fix</desc>
            <filename>bug-238071-20220323111149.patch</filename>
            <type>text/plain</type>
            <size>30911</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ1ZDM1YzNhMzU1NzE1
MWM0ZmQ3NzIwNDk2YmM2NzBiZmU0M2ZiMy4uNmMxYTRlODc3ZDQ0ODRiM2Y1ZDI3ZDgwNjZjOGEz
NDNmMGFjYjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXBkYXRlIE1lZGlhU2FtcGxlLCBNZWRpYVNhbXBs
ZUFWRk9iakMgYW5kIFZpZGVvRnJhbWUgYWNjb3JkaW5nIHRoZSBzZXBhcmF0aW9uLgorICAgICAg
ICBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmg6CisKIDIwMjItMDMtMjIgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGF0aW9uIG9mIERvY3VtZW50IHNp
dGVGb3JDb29raWVzIGlzIGJ1Z2d5IGluIGNhc2UgZG9jdW1lbnQgaXMgY3JlYXRlZCBieSB3aW5k
b3cub3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNDRlYzk2ZTYyMjEwOGY0Y2IzMzk1
M2IyZTZlMDE2NmY0N2M4ZWUwOC4uODkzM2I5Zjk1YjRjMzBkZjc1MTQxNzliNjAzMTdlMzg5ZDE0
MjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMzIsNiArMjMyLDcgQEAgcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KK3BsYXRmb3JtL1ZpZGVv
RnJhbWUubW0KIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZmMmY5MWYzYThjNjIz
NGRhMGQ3NDVhMjYuLjA5NWI3M2U1YmQ4YWZkYjE3NDNkZmI2YjI3Y2NiYzk0YTYxMTA1NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwNzYsNiArMTA3Niw3IEBACiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENS
dGNwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDExNEZFMkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87
IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgy
NDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhD
NDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEz
MSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCTQxMjgyN0IyMjdFNEFDM0Mw
MDVBRERFMiAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOTk3
MUY1OUI5NjMwMDlENzQwMyAvKiBGZXRjaEJvZHlTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RiAvKiBG
ZXRjaEJvZHlTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEMzOTVCMUM4
RjBBNjEwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDIxLDcgKzI0MjIsNiBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjVBM0RBRjI3QUJGOEM1
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRE
RDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBB
TkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04NTkwLDYgKzg1OTAsNyBAQAogCQk0MTIwOUU5NDIxNkVBNjlBMDBB
NzNBMTIgLyogUlRDQ2VydGlmaWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUlRDQ2VydGlmaWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTIwOUU5NTIxNkVDMzRFMDBBNzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3IuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NjIxNkVDMzRGMDBB
NzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3Bw
OyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyODI3QjAyN0U0QTlDMzAwNUFEREUyIC8qIFZp
ZGVvRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRl
b0ZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTI5Qzk4MTFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVT
dHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDI1OSw2
ICszMDI2MCw3IEBACiAJCQkJODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25C
dWJibGUuaCAqLywKIAkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5j
cHAgKi8sCiAJCQkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLywK
KwkJCQk0MTI4MjdCMDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5tbSAqLywKIAkJCQk0
MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJCQkJ
NDE2MDQ5MzEyNzQzQjBFNzAwQTg2RkEwIC8qIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCAqLywK
IAkJCQk1MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVy
LmNwcCAqLywKQEAgLTM3OTY2LDcgKzM3OTY4LDcgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBE
MzdBREIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTND
MDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8qIFZpZGVvRnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCRTM3Rjg3MjdCQkI3MDgwMDdBNkNEMyAvKiBWaWRlb0Zy
YW1lQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBW
aWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFB
MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5
MWM0OWIyZGUwMGEwZDAuLjVjNTM5MDdlNjZmYzExNjAxYzRhZWMxZTA3ODg3ZjUwOWNjODQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMjksMTAgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2Uu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9U
eXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCkBAIC01Niw4ICs1Niw3IEBAIHN0cnVjdCBQbGF0
Zm9ybVNhbXBsZSB7CiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCi0gICAgICAgIEJ5dGVS
YW5nZVNhbXBsZVR5cGUsCi0gICAgICAgIFZpZGVvRnJhbWVUeXBlLCAvLyBGSVhNRTogVG8gYmUg
cmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgorICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKICAgICAgICAgY29uc3Qg
TW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKQEAgLTkyLDggKzkxLDYgQEAgcHVibGljOgog
ICAgIH0KICAgICB2aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAg
ZW51bSBTYW1wbGVGbGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAx
IDw8IDAsCkBAIC0xMTEsMjAgKzEwOCw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogCi0gICAgZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9u
ZSA9IDAsCi0gICAgICAgIFVwc2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0g
ICAgICAgIExlZnQgPSAyNzAsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5j
KCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNw
bGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAg
LTE5MSw3ICsxNzQsNiBAQCBzdHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAg
ICAgRmxvYXRTaXplIGRpc3BsYXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAg
ICAgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
IH07CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJW
aWRlb0luZm8pIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25j
YXN0PGNvbnN0IFZpZGVvSW5mbz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6
ZSA9PSBvdGhlci5zaXplICYmIGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJp
dERlcHRoID09IG90aGVyLmJpdERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFj
ZSAmJiByb3RhdGlvbiA9PSBvdGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIu
YXRvbURhdGEpIHx8IChhdG9tRGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0g
Km90aGVyLmF0b21EYXRhKSk7CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYg
ZGlzcGxheVNpemUgPT0gb3RoZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0
RGVwdGggJiYgY29sb3JTcGFjZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYm
ICFvdGhlci5hdG9tRGF0YSkgfHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9t
RGF0YSA9PSAqb3RoZXIuYXRvbURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OCw2
IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0Ci0gICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0
cnVjdCBMb2dBcmd1bWVudDsKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5k
ZXggZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uNzMzMmQ4ZGNlMjg4
YWM1MWMwZWJkNzI3Yzg0ODYwN2E5MjljMjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5jcHAKQEAgLTI2LDExNCArMjYsMzEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJW
aWRlb0ZyYW1lQ1YuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1ZpZGVvRnJh
bWU6OlZpZGVvRnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3Jl
ZCwgUm90YXRpb24gcm90YXRpb24pCiAgICAgOiBtX3ByZXNlbnRhdGlvblRpbWUocHJlc2VudGF0
aW9uVGltZSkKICAgICAsIG1faXNNaXJyb3JlZChpc01pcnJvcmVkKQogICAgICwgbV9yb3RhdGlv
bihyb3RhdGlvbikKIHsKIH0KIAotVmlkZW9GcmFtZTo6flZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7
Ci0KLU1lZGlhVGltZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lOwotfQotCi1WaWRlb0ZyYW1lOjpSb3RhdGlvbiBW
aWRlb0ZyYW1lOjpyb3RhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcm90YXRpb247Ci19
Ci0KLWJvb2wgVmlkZW9GcmFtZTo6aXNNaXJyb3JlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aXNNaXJyb3JlZDsKLX0KLQotV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgVmlkZW9GcmFtZTo6cGxh
dGZvcm1TYW1wbGUoKSBjb25zdAotewotICAgIHJldHVybiB7IFdlYkNvcmU6OlBsYXRmb3JtU2Ft
cGxlOjpWaWRlb0ZyYW1lVHlwZSwgeyB9IH07Ci19Ci0KLVBsYXRmb3JtU2FtcGxlOjpUeXBlIFZp
ZGVvRnJhbWU6OnBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OlBsYXRmb3JtU2FtcGxlOjpWaWRlb0ZyYW1lVHlwZTsKLX0KLQotTWVkaWFUaW1lIFZpZGVv
RnJhbWU6OmRlY29kZVRpbWUoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiB7IH07Ci19Ci0KLU1lZGlhVGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQot
QXRvbVN0cmluZyBWaWRlb0ZyYW1lOjp0cmFja0lEKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1zaXplX3QgVmlkZW9GcmFtZTo6c2l6
ZUluQnl0ZXMoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biAwOwotfQotCi12b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRp
YVRpbWUmKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFZpZGVvRnJh
bWU6OnNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKLXsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
PiBWaWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0Ci17Ci0gICAgQ1JB
U0goKTsKLX0KLQotTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIFZpZGVvRnJhbWU6OmZsYWdzKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzOjpOb25lOwotfQot
Ci12b2lkIFZpZGVvRnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdAotewotfQotCi12b2lk
IFZpZGVvRnJhbWU6OmluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQg
VmlkZW9GcmFtZTo6aW5pdGlhbGl6ZUNoYXJhY3RlcmlzdGljcyhNZWRpYVRpbWUgcHJlc2VudGF0
aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBjb25z
dF9jYXN0PE1lZGlhVGltZSY+KG1fcHJlc2VudGF0aW9uVGltZSkgPSBwcmVzZW50YXRpb25UaW1l
OwogICAgIGNvbnN0X2Nhc3Q8Ym9vbCY+KG1faXNNaXJyb3JlZCkgPSBpc01pcnJvcmVkOwotICAg
IGNvbnN0X2Nhc3Q8VmlkZW9Sb3RhdGlvbiY+KG1fcm90YXRpb24pID0gcm90YXRpb247CisgICAg
Y29uc3RfY2FzdDxSb3RhdGlvbiY+KG1fcm90YXRpb24pID0gcm90YXRpb247CiB9CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkKLVJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWU6OmFzVmlkZW9G
cmFtZUNWKCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoR1NUUkVBTUVSKQorUmVmUHRy
PEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBj
b25zdAogewotICAgIGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpj
cmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZl
cik7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIAogfQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9W
aWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKaW5kZXgg
OGFhNDJlZWZmYWFmNmFiNGQzN2U5YTg1NmEyNDU5N2NjYmE1NzAxNS4uNDMyNjI2MTUyMzU0YjY3
Njk2YThhZDQyN2U2ZjkzNTMwMGUzMWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJh
bWUuaApAQCAtMjcsNjUgKzI3LDgwIEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRl
ICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCit0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IFByb2Nlc3NJZGVudGl0eTsKICNpZiBVU0UoQVZGT1VOREFUSU9OKSAmJiBQTEFURk9STShDT0NP
QSkKIGNsYXNzIFZpZGVvRnJhbWVDVjsKICNlbmRpZgogCiAvLyBBIGNsYXNzIHJlcHJlc2VudGlu
ZyBhIHZpZGVvIGZyYW1lIGZyb20gYSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2ltaWxh
ci4KLS8vIEZJWE1FOiBDdXJyZW50bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGluaGVy
dHMgZnJvbSBNZWRpYVNhbXBsZSB1bnRpbCBjYXB0dXJlIGNvZGUKLS8vIHN0b3BzIHJlZmVycmlu
ZyB0byBNZWRpYVNhbXBsZQotY2xhc3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7
CitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZpZGVvRnJh
bWU+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOworICAgIHZp
cnR1YWwgflZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNzIFJvdGF0aW9u
IHsKKyAgICAgICAgTm9uZSA9IDAsCisgICAgICAgIFVwc2lkZURvd24gPSAxODAsCisgICAgICAg
IFJpZ2h0ID0gOTAsCisgICAgICAgIExlZnQgPSAyNzAsCisgICAgfTsKIAotICAgIHVzaW5nIFJv
dGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb247CisgICAgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblRpbWU7IH0KKyAgICBS
b3RhdGlvbiByb3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb247IH0KKyAgICBib29s
IGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWlycm9yZWQ7IH0KKworI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCk7CisjZW5kaWYKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNv
bnN0OwogCi0gICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgotICAgIFdFQkNP
UkVfRVhQT1JUIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBmaW5hbDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKLSAgICAvLyBGSVhNRTog
V2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVl
ZGVkLgotICAgIFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6
OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWw7CisgICAgdmlydHVhbCBGbG9h
dFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVpbnQzMl90
IHBpeGVsRm9ybWF0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVtb3RlUHJv
eHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpYldlYlJU
QygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2
aXJ0dWFsIGJvb2wgaXNDVigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8VmlkZW9GcmFtZUNWPiBh
c1ZpZGVvRnJhbWVDVigpOworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgdmlydHVhbCBib29sIGlz
R1N0cmVhbWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JikgeyB9CiAK
LSAgICB2b2lkIGluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgdm9pZCBpbml0aWFs
aXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFJvdGF0aW9uKTsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVv
RnJhbWUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZShNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbik7CisKK3ByaXZhdGU6CiAgICAg
Y29uc3QgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGltZTsKICAgICBjb25zdCBib29sIG1faXNN
aXJyb3JlZDsKLSAgICBjb25zdCBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb247CisgICAgY29uc3Qg
Um90YXRpb24gbV9yb3RhdGlvbjsKK307CiAKLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IFRoZXNl
IGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlc2Ugb2JqZWN0cy4KLSAgICAvLyBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSBvdmVycmlkZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRp
bWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5n
IHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9mZnNldFRpbWVz
dGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBjcmVhdGVOb25E
aXNwbGF5aW5nQ29weSgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIFNhbXBsZUZs
YWdzIGZsYWdzKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3QgZmluYWw7Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6Um90YXRpb24sCisgICAgICAgIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25l
LAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93biwKKyAg
ICAgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0LAorICAgICAgICBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdAorICAgID47CiB9OwogCiB9CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9GcmFtZSkKLSAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJl
dHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZVR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9y
bVNhbXBsZTo6VmlkZW9GcmFtZVR5cGU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
LSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRl
b0ZyYW1lLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhN2RjMzk3MTg3YmJlNTAzNmFiYjVhMmVjZjU3NTFkYjQy
OTZlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLm1tCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBQTEFURk9S
TShDT0NPQSkKKworI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgorI2luY2x1ZGUg
IlZpZGVvRnJhbWVDVi5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGlu
ZXMuaD4KKworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxKU0M6
OlVpbnQ4Q2xhbXBlZEFycmF5PiBWaWRlb0ZyYW1lOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QK
K3sKKyAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyUkdCQSkgfSk7CisK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gdGhpcy0+cGl4ZWxCdWZmZXIoKTsKKyAgICBhdXRvIHJn
YmFQaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyQ29uZm9ybWVyLmNvbnZlcnQocGl4ZWxCdWZmZXIp
OworICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhyZ2JhUGl4
ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAgQVNTRVJU
X1VOVVNFRChzdGF0dXMsIHN0YXR1cyA9PSBub0Vycik7CisKKyAgICB2b2lkKiBkYXRhID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDAp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1
ZmZlcikgKiBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICogNDsKKyAgICBhdXRv
IHJlc3VsdCA9IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShKU0M6OkFycmF5QnVm
ZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgpOworCisgICAgc3Rh
dHVzID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQo
KSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlQoc3RhdHVzID09IG5v
RXJyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQor
UmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0ZyYW1lQ1YoKQoreworICAg
IGlmIChpc0NWKCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxWaWRlb0ZyYW1lQ1Y+KHRoaXMp
OworCisgICAgYXV0byBidWZmZXIgPSBwaXhlbEJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUo
cHJlc2VudGF0aW9uVGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZlcik7Cit9
CisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLmgKaW5kZXggNmM1YWU1MzNiODdmMDA1MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNk
Ny4uNGM0YzM0NzUxOTc0NzFlOTEzZjQyMmIyMDIzYzA3NDcwZGY5ZWRhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTQzLDkgKzQzLDYgQEAgY2xh
c3MgTWVkaWFTYW1wbGVBVkZPYmpDIDogcHVibGljIE1lZGlhU2FtcGxlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNh
bXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2Ft
cGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbVN0cmluZyB0
cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUs
IHRyYWNrSUQpKTsgfQotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUo
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uID0gVmlkZW9S
b3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHJvdGF0aW9uLCBtaXJyb3JlZCkpOyB9Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdC
QUltYWdlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtNjUsMTIgKzYyLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZp
ZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlp
bmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yb3RhdGlvbjsgfQotICAgIGJvb2wgaXNNaXJyb3Jl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWlycm9yZWQ7IH0KLSAgICBXRUJDT1JFX0VY
UE9SVCB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQ
T1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0
eSYpIGZpbmFsOwotCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNIb21vZ2VuZW91cygpIGNv
bnN0OwpAQCAtODMsMjAgKzc0LDE1IEBAIHB1YmxpYzoKICAgICBLZXlJRHMmIGtleUlEcygpIHsg
cmV0dXJuIG1fa2V5SURzOyB9CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVk
IG9uY2UgVmlkZW9GcmFtZSBpcyBub3QgYSBNZWRpYVNhbXBsZS4KLSAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8VmlkZW9GcmFtZUNWPiB2aWRlb0ZyYW1lKCkgY29uc3Q7CiBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2Ft
cGxlQnVmZmVyUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01T
YW1wbGVCdWZmZXJSZWYsIEF0b21TdHJpbmcgdHJhY2tJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
TWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmLCB1aW50NjRfdCB0cmFja0lEKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYs
IFZpZGVvUm90YXRpb24sIGJvb2wgbWlycm9yZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfk1lZGlhU2FtcGxlQVZGT2JqQygpOwogCiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBtX3NhbXBsZTsKICAgICBBdG9tU3RyaW5nIG1faWQ7Ci0gICAgVmlkZW9Sb3RhdGlvbiBt
X3JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwotICAgIGJvb2wgbV9taXJyb3JlZCB7
IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCiAgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9r
ZXlJRHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5k
ZXggMTMxMWIzMzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3NWZkOTYzYzhkMC4uNWIxMzhlNjQ1MGQy
OGYxMWQ1MDJiZWJkZDRhNjBmMzYxMTIxYWIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtNjYsMTIgKzY2LDYgQEAgTWVkaWFTYW1wbGVBVkZP
YmpDOjpNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1aW50NjRf
dCB0cmFja0kKICAgICAsIG1faWQoQXRvbVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKQogewogfQot
TWVkaWFTYW1wbGVBVkZPYmpDOjpNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQotICAgIDogbV9z
YW1wbGUoc2FtcGxlKQotICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKLSAgICAsIG1fbWlycm9y
ZWQobWlycm9yZWQpCi17Ci19CiAKIE1lZGlhU2FtcGxlQVZGT2JqQzo6fk1lZGlhU2FtcGxlQVZG
T2JqQygpID0gZGVmYXVsdDsKIApAQCAtMTEwLDIyICsxMDQsNiBAQCBQbGF0Zm9ybVNhbXBsZSBN
ZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKICAgICByZXR1cm4gc2Ft
cGxlOwogfQogCi11aW50MzJfdCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29u
c3QKLXsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJl
Zj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Ci0g
ICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwot
fQotCi1SZWZQdHI8VmlkZW9GcmFtZUNWPiBNZWRpYVNhbXBsZUFWRk9iakM6OnZpZGVvRnJhbWUo
KSBjb25zdAotewotICAgIGlmICghbV9zYW1wbGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6
OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLSAgICBpZiAo
IXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCBtX21pcnJvcmVkLCBtX3JvdGF0aW9u
LCBSZXRhaW5QdHIgeyBwaXhlbEJ1ZmZlciB9KTsKLX0KLQogc3RhdGljIGJvb2wgaXNDTVNhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnRSYW5kb21BY2Nlc3MoQ0ZEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRE
aWN0KQogewogICAgIHJldHVybiAhQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoYXR0YWNobWVudERp
Y3QsIFBBTDo6a0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jKTsKQEAgLTMxMiwzOSArMjkw
LDYgQEAgUmVmPE1lZGlhU2FtcGxlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZU5vbkRpc3Bs
YXlpbmdDb3B5KCkgY29uc3QKICAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUo
YWRvcHRDRihuZXdTYW1wbGVCdWZmZXIpLmdldCgpLCBtX2lkKTsKIH0KIAotUmVmUHRyPEpTQzo6
VWludDhDbGFtcGVkQXJyYXk+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Z2V0UkdCQUltYWdlRGF0YSgp
IGNvbnN0Ci17Ci0gICAgY29uc3QgT1NUeXBlIGltYWdlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyUkdCQTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGltYWdlRm9ybWF0TnVtYmVy
ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRyLCAga0NGTnVtYmVySW50VHlwZSwgICZp
bWFnZUZvcm1hdCkpOwotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNv
bmZvcm1lck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMSwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbmZvcm1lck9wdGlvbnMuZ2V0
KCksIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBpbWFnZUZvcm1hdE51bWJlci5n
ZXQoKSk7Ci0gICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViBwaXhlbEJ1ZmZlckNvbmZvcm1lcihj
b25mb3JtZXJPcHRpb25zLmdldCgpKTsKLQotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIo
bV9zYW1wbGUuZ2V0KCkpKTsKLSAgICBhdXRvIHJnYmFQaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVy
Q29uZm9ybWVyLmNvbnZlcnQocGl4ZWxCdWZmZXIpOwotICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhl
bEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVm
ZmVyTG9ja19SZWFkT25seSk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsIHN0YXR1cyA9PSBu
b0Vycik7Ci0KLSAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQ
bGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDApOwotICAgIHNpemVfdCBieXRlTGVuZ3RoID0g
Q1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgKiBDVlBpeGVsQnVmZmVyR2V0V2lk
dGgocGl4ZWxCdWZmZXIpICogNDsKLSAgICBhdXRvIHJlc3VsdCA9IEpTQzo6VWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZUxlbmd0
aCksIDAsIGJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jh
c2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRP
bmx5KTsKLSAgICBBU1NFUlQoc3RhdHVzID09IG5vRXJyKTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTYW1wbGVCdWZmZXJBc0Rpc3BsYXlJbW1lZGlh
dGVseShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCi17Ci0gICAgQ0ZBcnJheVJlZiBh
dHRhY2htZW50c0FycmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRz
QXJyYXkoc2FtcGxlQnVmZmVyLCB0cnVlKTsKLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBD
RkFycmF5R2V0Q291bnQoYXR0YWNobWVudHNBcnJheSk7ICsraSkgewotICAgICAgICBDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRzID0gY2hlY2tlZF9jZl9jYXN0PENGTXV0YWJsZURp
Y3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwgaSkp
OwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywgUEFMOjprQ01TYW1w
bGVBdHRhY2htZW50S2V5X0Rpc3BsYXlJbW1lZGlhdGVseSwga0NGQm9vbGVhblRydWUpOwotICAg
IH0KLX0KLQogYm9vbCBNZWRpYVNhbXBsZUFWRk9iakM6OmlzSG9tb2dlbmVvdXMoKSBjb25zdAog
ewogICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJH
ZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KG1fc2FtcGxlLmdldCgpLCB0cnVlKTsKQEAgLTQxNSwx
NyArMzYwLDQgQEAgVmVjdG9yPFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+PiBNZWRpYVNhbXBsZUFW
Rk9iakM6OmRpdmlkZUludG9Ib21vZ2VuZW91c1NhbXBsZXMKICAgICByZXR1cm4gc2FtcGxlczsK
IH0KIAotQ1ZQaXhlbEJ1ZmZlclJlZiBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsQnVmZmVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Ci19Ci0KLXZvaWQg
TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRl
bnRpdHkmIHJlc291cmNlT3duZXIpCi17Ci0gICAgQVNTRVJUKHJlc291cmNlT3duZXIpOwotICAg
IGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBz
ZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoYnVmZmVyLCByZXNvdXJjZU93bmVy
KTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwCmluZGV4IGI5ZDM4
ZjA0NzQ4ZGQxM2IzZDRmZDJlMzI2NzA4NjM1ODU3ZjI1YmIuLjhiZDE1ODNjNmI5ZmJmMTYyYzM5
ZDJiZDFkOWZmN2Y3MzQwZWQwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5j
cHAKQEAgLTEwNCw5ICsxMDQsMTIgQEAgVmlkZW9GcmFtZUdTdHJlYW1lcjo6VmlkZW9GcmFtZUdT
dHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwgY29uc3QKIHsKIH0KIAot
UmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmdldFJH
QkFJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZpZGVv
RnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAogewotICAgIGF1dG8qIGNhcHMgPSBnc3Rf
c2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsKKyAgICBpZiAoIWlzR1N0cmVhbWVyKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogY2FwcyA9IGdzdF9zYW1wbGVf
Z2V0X2NhcHMoc3RhdGljX2Nhc3Q8Y29uc3QgVmlkZW9GcmFtZUdTdHJlYW1lcio+KHRoaXMpLT5t
X3NhbXBsZS5nZXQoKSk7CiAgICAgR3N0VmlkZW9JbmZvIGlucHV0SW5mbzsKICAgICBpZiAoIWdz
dF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5wdXRJbmZvLCBjYXBzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaAppbmRleCAxYzgwYzIyZTAy
NjY1OTY2ZDE3Yjk4YTg2YzEyNTI2ZTE2ZmI5MDlmLi42N2Q2OTI0NDBhZTRiYjRmMDU1YzVjNDJm
NWUzY2FkZDRlZjZhMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKQEAgLTIz
LDYgKzIzLDkgQEAKIAogI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0Zy
YW1lTWV0YWRhdGFHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisK
K3R5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ5LDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBWaWRlb0ZyYW1lR1N0cmVhbWVy
KGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9u
VGltZSwgUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2Vu
dGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQot
ICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29u
c3QgZmluYWw7CiAgICAgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAwOyB9CisgICAgYm9vbCBpc0dTdHJlYW1lcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX3NhbXBsZTsKICAgICBGbG9hdFNpemUgbV9w
cmVzZW50YXRpb25TaXplOwo=
</data>
<flag name="commit-queue"
          id="483495"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455482</attachid>
            <date>2022-03-23 03:28:25 -0700</date>
            <delta_ts>2022-03-23 05:05:23 -0700</delta_ts>
            <desc>GStreamer fix</desc>
            <filename>bug-238071-20220323112823.patch</filename>
            <type>text/plain</type>
            <size>31622</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ1ZDM1YzNhMzU1NzE1
MWM0ZmQ3NzIwNDk2YmM2NzBiZmU0M2ZiMy4uNmMxYTRlODc3ZDQ0ODRiM2Y1ZDI3ZDgwNjZjOGEz
NDNmMGFjYjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXBkYXRlIE1lZGlhU2FtcGxlLCBNZWRpYVNhbXBs
ZUFWRk9iakMgYW5kIFZpZGVvRnJhbWUgYWNjb3JkaW5nIHRoZSBzZXBhcmF0aW9uLgorICAgICAg
ICBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmg6CisKIDIwMjItMDMtMjIgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGF0aW9uIG9mIERvY3VtZW50IHNp
dGVGb3JDb29raWVzIGlzIGJ1Z2d5IGluIGNhc2UgZG9jdW1lbnQgaXMgY3JlYXRlZCBieSB3aW5k
b3cub3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNDRlYzk2ZTYyMjEwOGY0Y2IzMzk1
M2IyZTZlMDE2NmY0N2M4ZWUwOC4uODkzM2I5Zjk1YjRjMzBkZjc1MTQxNzliNjAzMTdlMzg5ZDE0
MjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMzIsNiArMjMyLDcgQEAgcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KK3BsYXRmb3JtL1ZpZGVv
RnJhbWUubW0KIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZmMmY5MWYzYThjNjIz
NGRhMGQ3NDVhMjYuLjA5NWI3M2U1YmQ4YWZkYjE3NDNkZmI2YjI3Y2NiYzk0YTYxMTA1NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwNzYsNiArMTA3Niw3IEBACiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENS
dGNwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDExNEZFMkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87
IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgy
NDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhD
NDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEz
MSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCTQxMjgyN0IyMjdFNEFDM0Mw
MDVBRERFMiAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOTk3
MUY1OUI5NjMwMDlENzQwMyAvKiBGZXRjaEJvZHlTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RiAvKiBG
ZXRjaEJvZHlTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEMzOTVCMUM4
RjBBNjEwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDIxLDcgKzI0MjIsNiBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjVBM0RBRjI3QUJGOEM1
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRE
RDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBB
TkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04NTkwLDYgKzg1OTAsNyBAQAogCQk0MTIwOUU5NDIxNkVBNjlBMDBB
NzNBMTIgLyogUlRDQ2VydGlmaWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUlRDQ2VydGlmaWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTIwOUU5NTIxNkVDMzRFMDBBNzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3IuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NjIxNkVDMzRGMDBB
NzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3Bw
OyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyODI3QjAyN0U0QTlDMzAwNUFEREUyIC8qIFZp
ZGVvRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRl
b0ZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTI5Qzk4MTFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVT
dHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDI1OSw2
ICszMDI2MCw3IEBACiAJCQkJODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25C
dWJibGUuaCAqLywKIAkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5j
cHAgKi8sCiAJCQkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLywK
KwkJCQk0MTI4MjdCMDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5tbSAqLywKIAkJCQk0
MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJCQkJ
NDE2MDQ5MzEyNzQzQjBFNzAwQTg2RkEwIC8qIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCAqLywK
IAkJCQk1MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVy
LmNwcCAqLywKQEAgLTM3OTY2LDcgKzM3OTY4LDcgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBE
MzdBREIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTND
MDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8qIFZpZGVvRnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCRTM3Rjg3MjdCQkI3MDgwMDdBNkNEMyAvKiBWaWRlb0Zy
YW1lQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBW
aWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFB
MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5
MWM0OWIyZGUwMGEwZDAuLjVjNTM5MDdlNjZmYzExNjAxYzRhZWMxZTA3ODg3ZjUwOWNjODQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMjksMTAgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2Uu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9U
eXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCkBAIC01Niw4ICs1Niw3IEBAIHN0cnVjdCBQbGF0
Zm9ybVNhbXBsZSB7CiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCi0gICAgICAgIEJ5dGVS
YW5nZVNhbXBsZVR5cGUsCi0gICAgICAgIFZpZGVvRnJhbWVUeXBlLCAvLyBGSVhNRTogVG8gYmUg
cmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgorICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKICAgICAgICAgY29uc3Qg
TW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKQEAgLTkyLDggKzkxLDYgQEAgcHVibGljOgog
ICAgIH0KICAgICB2aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAg
ZW51bSBTYW1wbGVGbGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAx
IDw8IDAsCkBAIC0xMTEsMjAgKzEwOCw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogCi0gICAgZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9u
ZSA9IDAsCi0gICAgICAgIFVwc2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0g
ICAgICAgIExlZnQgPSAyNzAsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5j
KCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNw
bGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAg
LTE5MSw3ICsxNzQsNiBAQCBzdHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAg
ICAgRmxvYXRTaXplIGRpc3BsYXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAg
ICAgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
IH07CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJW
aWRlb0luZm8pIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25j
YXN0PGNvbnN0IFZpZGVvSW5mbz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6
ZSA9PSBvdGhlci5zaXplICYmIGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJp
dERlcHRoID09IG90aGVyLmJpdERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFj
ZSAmJiByb3RhdGlvbiA9PSBvdGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIu
YXRvbURhdGEpIHx8IChhdG9tRGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0g
Km90aGVyLmF0b21EYXRhKSk7CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYg
ZGlzcGxheVNpemUgPT0gb3RoZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0
RGVwdGggJiYgY29sb3JTcGFjZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYm
ICFvdGhlci5hdG9tRGF0YSkgfHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9t
RGF0YSA9PSAqb3RoZXIuYXRvbURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OCw2
IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0Ci0gICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0
cnVjdCBMb2dBcmd1bWVudDsKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5k
ZXggZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uOWEyM2VjZWIxNmJm
Mjg3MmJjNjljMDdkOWUyNjI5M2VjYmJiMTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5jcHAKQEAgLTI2LDExNCArMjYsNDAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJW
aWRlb0ZyYW1lQ1YuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaWYgVVNFKEdT
VFJFQU1FUikKKyNpbmNsdWRlICJWaWRlb0ZyYW1lR1N0cmVhbWVyLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1WaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24pCitW
aWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlz
TWlycm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uKQogICAgIDogbV9wcmVzZW50YXRpb25UaW1lKHBy
ZXNlbnRhdGlvblRpbWUpCiAgICAgLCBtX2lzTWlycm9yZWQoaXNNaXJyb3JlZCkKICAgICAsIG1f
cm90YXRpb24ocm90YXRpb24pCiB7CiB9CiAKLVZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBk
ZWZhdWx0OwotCi1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsKLX0KLQotVmlkZW9GcmFtZTo6Um90
YXRpb24gVmlkZW9GcmFtZTo6cm90YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX3JvdGF0
aW9uOwotfQotCi1ib29sIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2lzTWlycm9yZWQ7Ci19Ci0KLVdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIFZpZGVvRnJh
bWU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBXZWJDb3JlOjpQbGF0
Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGUsIHsgfSB9OwotfQotCi1QbGF0Zm9ybVNhbXBsZTo6
VHlwZSBWaWRlb0ZyYW1lOjpwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdAotewotICAgIHJldHVy
biBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGU7Ci19Ci0KLU1lZGlhVGlt
ZSBWaWRlb0ZyYW1lOjpkZWNvZGVUaW1lKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZHVyYXRp
b24oKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB7IH07
Ci19Ci0KLUF0b21TdHJpbmcgVmlkZW9GcmFtZTo6dHJhY2tJRCgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc2l6ZV90IFZpZGVvRnJh
bWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29u
c3QgTWVkaWFUaW1lJikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBW
aWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVJlZjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAotewot
ICAgIENSQVNIKCk7Ci19Ci0KLU1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBWaWRlb0ZyYW1lOjpm
bGFncygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFnczo6Tm9u
ZTsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKLXsKLX0K
LQotdm9pZCBWaWRlb0ZyYW1lOjppbml0aWFsaXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24p
Cit2b2lkIFZpZGVvRnJhbWU6OmluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24pCiB7CiAg
ICAgY29uc3RfY2FzdDxNZWRpYVRpbWUmPihtX3ByZXNlbnRhdGlvblRpbWUpID0gcHJlc2VudGF0
aW9uVGltZTsKICAgICBjb25zdF9jYXN0PGJvb2wmPihtX2lzTWlycm9yZWQpID0gaXNNaXJyb3Jl
ZDsKLSAgICBjb25zdF9jYXN0PFZpZGVvUm90YXRpb24mPihtX3JvdGF0aW9uKSA9IHJvdGF0aW9u
OworICAgIGNvbnN0X2Nhc3Q8Um90YXRpb24mPihtX3JvdGF0aW9uKSA9IHJvdGF0aW9uOwogfQog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lOjph
c1ZpZGVvRnJhbWVDVigpCisjaWYgIVBMQVRGT1JNKENPQ09BKQorUmVmUHRyPEpTQzo6VWludDhD
bGFtcGVkQXJyYXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAogewotICAg
IGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2Vu
dGF0aW9uVGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZlcik7CisjaWYgVVNF
KEdTVFJFQU1FUikKKyAgICBpZiAoaXNHU3RyZWFtZXIoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPih0aGlzKS0+Y29tcHV0ZVJHQkFJbWFnZURhdGEo
KTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydC4KKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KICNlbmRpZgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAppbmRleCA4YWE0MmVlZmZhYWY2YWI0ZDM3ZTlh
ODU2YTI0NTk3Y2NiYTU3MDE1Li40MzI2MjYxNTIzNTRiNjc2OTZhOGFkNDI3ZTZmOTM1MzAwZTMx
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0yNyw2NSArMjcsODAg
QEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMu
aD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc0lkZW50aXR5OwogI2lm
IFVTRShBVkZPVU5EQVRJT04pICYmIFBMQVRGT1JNKENPQ09BKQogY2xhc3MgVmlkZW9GcmFtZUNW
OwogI2VuZGlmCiAKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJhbWUgZnJvbSBh
IGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgotLy8gRklYTUU6IEN1cnJlbnRs
eSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2FtcGxlIHVu
dGlsIGNhcHR1cmUgY29kZQotLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxlCi1jbGFz
cyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK2NsYXNzIFZpZGVvRnJhbWUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VmlkZW9GcmFtZT4gewogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CisgICAgdmlydHVhbCB+VmlkZW9GcmFtZSgpID0g
ZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3MgUm90YXRpb24geworICAgICAgICBOb25lID0gMCwK
KyAgICAgICAgVXBzaWRlRG93biA9IDE4MCwKKyAgICAgICAgUmlnaHQgPSA5MCwKKyAgICAgICAg
TGVmdCA9IDI3MCwKKyAgICB9OwogCi0gICAgdXNpbmcgUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjsKKyAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsgfQorICAgIFJvdGF0aW9uIHJvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNNaXJyb3JlZDsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShBVkZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFZpZGVvRnJhbWVDVj4gYXNWaWRl
b0ZyYW1lQ1YoKTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OlVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Q7CiAKLSAgICAvLyBXZWJDb3Jl
OjpNZWRpYVNhbXBsZSBvdmVycmlkZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSb3RhdGlv
biByb3RhdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNaXJy
b3JlZCgpIGNvbnN0IGZpbmFsOwotICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90
IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCi0gICAgV0VCQ09SRV9FWFBP
UlQgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5
cGUoKSBjb25zdCBmaW5hbDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXpl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGliV2ViUlRDKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgYm9vbCBpc0NWKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCk7CisjaWYg
VVNFKEdTVFJFQU1FUikKKyAgICB2aXJ0dWFsIGJvb2wgaXNHU3RyZWFtZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsK
ICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNoaXBJZGVu
dGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNo
YXJhY3RlcmlzdGljcyhNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVk
LCBWaWRlb1JvdGF0aW9uKTsKKyAgICB2b2lkIGluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVk
aWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24pOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZShNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFJvdGF0aW9uKTsKKworcHJpdmF0ZToKICAgICBjb25zdCBNZWRpYVRpbWUgbV9wcmVz
ZW50YXRpb25UaW1lOwogICAgIGNvbnN0IGJvb2wgbV9pc01pcnJvcmVkOwotICAgIGNvbnN0IFZp
ZGVvUm90YXRpb24gbV9yb3RhdGlvbjsKKyAgICBjb25zdCBSb3RhdGlvbiBtX3JvdGF0aW9uOwor
fTsKIAotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG5vdCBpbnRlbmRlZCB0byBi
ZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgotICAgIC8vIFdlYkNvcmU6Ok1lZGlhU2FtcGxlIG92
ZXJyaWRlcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0
IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGlt
ZSYpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5h
bDsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiwKKyAgICAgICAg
V2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6OlZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duLAorICAgICAgICBXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6UmlnaHQsCisgICAgICAgIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpMZWZ0CisgICAgPjsKIH07CiAKIH0KIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpWaWRlb0ZyYW1lKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRm
b3JtU2FtcGxlVHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpWaWRlb0ZyYW1lVHlw
ZTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotI2VuZGlmCisjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFt
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmE3ZGMzOTcxODdiYmU1MDM2YWJiNWEyZWNmNTc1MWRiNDI5NmUyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0KQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1l
LmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNWLmgiCisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgorCisjaW1wb3J0IDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZp
ZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAoreworICAgIFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1YgcGl4ZWxCdWZmZXJDb25mb3JtZXIoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilA
eyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTog
QChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBKSB9KTsKKworICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSB0aGlzLT5waXhlbEJ1ZmZlcigpOworICAgIGF1dG8gcmdiYVBpeGVsQnVmZmVyID0gcGl4ZWxC
dWZmZXJDb25mb3JtZXIuY29udmVydChwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0dXMgPSBD
VlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4
ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgc3RhdHVz
ID09IG5vRXJyKTsKKworICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJl
c3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwgMCk7CisgICAgc2l6ZV90IGJ5dGVMZW5n
dGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJH
ZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0OworICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRl
TGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CisKKyAgICBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyVW5s
b2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tf
UmVhZE9ubHkpOworICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworI2lmIFVTRShBVkZPVU5EQVRJT04pCitSZWZQdHI8VmlkZW9GcmFtZUNWPiBW
aWRlb0ZyYW1lOjphc1ZpZGVvRnJhbWVDVigpCit7CisgICAgaWYgKGlzQ1YoKSkKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFZpZGVvRnJhbWVDVj4odGhpcyk7CisKKyAgICBhdXRvIGJ1ZmZlciA9
IHBpeGVsQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlz
TWlycm9yZWQoKSwgcm90YXRpb24oKSwgYnVmZmVyKTsKK30KKyNlbmRpZiAvLyBVU0UoQVZGT1VO
REFUSU9OKQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA2YzVh
ZTUzM2I4N2YwMDUzNGE3ZWVlNGVkYWU4NWFjYWYwNmUyM2Q3Li40YzRjMzQ3NTE5NzQ3MWU5MTNm
NDIyYjIwMjNjMDc0NzBkZjllZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaApAQCAtNDMsOSArNDMsNiBAQCBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMg
OiBwdWJsaWMgTWVkaWFTYW1wbGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1w
bGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1aW50NjRfdCB0cmFj
a0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRy
YWNrSUQpKTsgfQogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9tU3RyaW5nIHRyYWNrSUQpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgdHJhY2tJRCkpOyB9Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGUsIFZpZGVvUm90YXRpb24gcm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1p
cnJvcmVkID0gZmFsc2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpD
KHNhbXBsZSwgcm90YXRpb24sIG1pcnJvcmVkKSk7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02NSwxMiAr
NjIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZlB0cjxNZWRp
YVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHBy
ZXNlbnRhdGlvblRpbWUsIFVzZUVuZFRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JvdGF0aW9uOyB9Ci0gICAgYm9vbCBpc01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9taXJyb3JlZDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHBpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3du
ZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JikgZmluYWw7Ci0KICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZS5nZXQo
KTsgfQogCiAgICAgYm9vbCBpc0hvbW9nZW5lb3VzKCkgY29uc3Q7CkBAIC04MywyMCArNzQsMTUg
QEAgcHVibGljOgogICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJRHM7IH0KICNl
bmRpZgogCi0gICAgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgb25jZSBWaWRlb0ZyYW1lIGlzIG5v
dCBhIE1lZGlhU2FtcGxlLgotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+
IHZpZGVvRnJhbWUoKSBjb25zdDsKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRp
YVNhbXBsZUFWRk9iakMoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwgQXRvbVN0
cmluZyB0cmFja0lEKTsKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01T
YW1wbGVCdWZmZXJSZWYsIHVpbnQ2NF90IHRyYWNrSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwgVmlkZW9Sb3RhdGlvbiwgYm9vbCBt
aXJyb3JlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+TWVkaWFTYW1wbGVBVkZPYmpD
KCk7CiAKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fc2FtcGxlOwogICAgIEF0
b21TdHJpbmcgbV9pZDsKLSAgICBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0
aW9uOjpOb25lIH07Ci0gICAgYm9vbCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAxMzExYjMzNzE4YTg0ZTMzZDEz
OTMxMTMwMmQwNDc1ZmQ5NjNjOGQwLi41YjEzOGU2NDUwZDI4ZjExZDUwMmJlYmRkNGE2MGYzNjEx
MjFhYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CkBAIC02NiwxMiArNjYsNiBAQCBNZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxlQVZGT2Jq
QyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSQogICAgICwgbV9pZChB
dG9tU3RyaW5nOjpudW1iZXIodHJhY2tJRCkpCiB7CiB9Ci1NZWRpYVNhbXBsZUFWRk9iakM6Ok1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvUm90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCi0gICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgLCBt
X3JvdGF0aW9uKHJvdGF0aW9uKQotICAgICwgbV9taXJyb3JlZChtaXJyb3JlZCkKLXsKLX0KIAog
TWVkaWFTYW1wbGVBVkZPYmpDOjp+TWVkaWFTYW1wbGVBVkZPYmpDKCkgPSBkZWZhdWx0OwogCkBA
IC0xMTAsMjIgKzEwNCw2IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxh
dGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQzMl90IE1l
ZGlhU2FtcGxlQVZGT2JqQzo6cGl4ZWxGb3JtYXQoKSBjb25zdAotewotICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVy
R2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLSAgICByZXR1cm4gQ1ZQaXhlbEJ1ZmZl
ckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7Ci19Ci0KLVJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9GcmFtZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X3NhbXBsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFn
ZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50
YXRpb25UaW1lKCksIG1fbWlycm9yZWQsIG1fcm90YXRpb24sIFJldGFpblB0ciB7IHBpeGVsQnVm
ZmVyIH0pOwotfQotCiBzdGF0aWMgYm9vbCBpc0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudFJhbmRv
bUFjY2VzcyhDRkRpY3Rpb25hcnlSZWYgYXR0YWNobWVudERpY3QpCiB7CiAgICAgcmV0dXJuICFD
RkRpY3Rpb25hcnlDb250YWluc0tleShhdHRhY2htZW50RGljdCwgUEFMOjprQ01TYW1wbGVBdHRh
Y2htZW50S2V5X05vdFN5bmMpOwpAQCAtMzEyLDM5ICsyOTAsNiBAQCBSZWY8TWVkaWFTYW1wbGU+
IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAogICAg
IHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShhZG9wdENGKG5ld1NhbXBsZUJ1ZmZl
cikuZ2V0KCksIG1faWQpOwogfQogCi1SZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gTWVk
aWFTYW1wbGVBVkZPYmpDOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKLXsKLSAgICBjb25zdCBP
U1R5cGUgaW1hZ2VGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBOwotICAgIFJldGFp
blB0cjxDRk51bWJlclJlZj4gaW1hZ2VGb3JtYXROdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJmltYWdlRm9ybWF0KSk7Ci0KLSAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVyT3B0aW9ucyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSwga0NWUGl4ZWxCdWZmZXJQaXhl
bEZvcm1hdFR5cGVLZXksIGltYWdlRm9ybWF0TnVtYmVyLmdldCgpKTsKLSAgICBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkp
OwotCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+
KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotICAg
IGF1dG8gcmdiYVBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJDb25mb3JtZXIuY29udmVydChwaXhl
bEJ1ZmZlcik7Ci0gICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNz
KHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgc3RhdHVzID09IG5vRXJyKTsKLQotICAgIHZvaWQqIGRh
dGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5n
ZXQoKSwgMCk7Ci0gICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0
KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0Owot
ICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7Ci0K
LSAgICBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVm
ZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOwotICAgIEFTU0VSVChzdGF0
dXMgPT0gbm9FcnIpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGlubGluZSB2
b2lkIHNldFNhbXBsZUJ1ZmZlckFzRGlzcGxheUltbWVkaWF0ZWx5KENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlcikKLXsKLSAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBQQUw6
OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIsIHRy
dWUpOwotICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChhdHRhY2ht
ZW50c0FycmF5KTsgKytpKSB7Ci0gICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0YWNo
bWVudHMgPSBjaGVja2VkX2NmX2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChhdHRhY2htZW50c0FycmF5LCBpKSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGF0dGFjaG1lbnRzLCBQQUw6OmtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRGlzcGxh
eUltbWVkaWF0ZWx5LCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgfQotfQotCiBib29sIE1lZGlhU2Ft
cGxlQVZGT2JqQzo6aXNIb21vZ2VuZW91cygpIGNvbnN0CiB7CiAgICAgQ0ZBcnJheVJlZiBhdHRh
Y2htZW50c0FycmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJy
YXkobV9zYW1wbGUuZ2V0KCksIHRydWUpOwpAQCAtNDE1LDE3ICszNjAsNCBAQCBWZWN0b3I8UmVm
PE1lZGlhU2FtcGxlQVZGT2JqQz4+IE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlSW50b0hvbW9n
ZW5lb3VzU2FtcGxlcwogICAgIHJldHVybiBzYW1wbGVzOwogfQogCi1DVlBpeGVsQnVmZmVyUmVm
IE1lZGlhU2FtcGxlQVZGT2JqQzo6cGl4ZWxCdWZmZXIoKSBjb25zdAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VC
dWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLX0KLQotdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNl
dE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikK
LXsKLSAgICBBU1NFUlQocmVzb3VyY2VPd25lcik7Ci0gICAgYXV0byBidWZmZXIgPSBwaXhlbEJ1
ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIHNldE93bmVyc2hpcElkZW50aXR5Rm9y
Q1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIpOwotfQotCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKaW5kZXggYjlkMzhmMDQ3NDhkZDEzYjNkNGZkMmUzMjY3
MDg2MzU4NTdmMjViYi4uNGU4NDNjMzRjMTRkZTQyZjY0ZjQ0YzhmMzIwMjVkZWEwMjMxZGRiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1JlZlB0cjxH
c3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0CiB7CiB9CiAKLVJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBl
ZEFycmF5PiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKK1Jl
ZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjb21wdXRl
UkdCQUltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0
X2NhcHMobV9zYW1wbGUuZ2V0KCkpOwogICAgIEdzdFZpZGVvSW5mbyBpbnB1dEluZm87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaAppbmRleCAxYzgwYzIyZTAyNjY1OTY2ZDE3Yjk4YTg2
YzEyNTI2ZTE2ZmI5MDlmLi5hNjIyNGU5OWU2YzFjYjc0YWNmMWM1ZTBjNmZiMGFjMWQwMDEwMTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9GcmFtZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKQEAgLTIzLDYgKzIzLDkgQEAKIAog
I2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lTWV0YWRhdGFHU3Ry
ZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0
IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDE0
ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBj
cmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJiwgY29uc3QgTWVkaWFUaW1lJiBwcmVz
ZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBjb25zdCBJbnRTaXplJiBk
ZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFtZVJhdGUgPSAxLCBSb3RhdGlvbiB2aWRl
b1JvdGF0aW9uID0gUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9IGZhbHNlLCBz
dGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0YWRhdGEgPSBzdGQ6Om51
bGxvcHQpOwogCiAgICAgR3N0U2FtcGxlKiBzYW1wbGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZS5nZXQoKTsgfQorICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBjb21wdXRlUkdC
QUltYWdlRGF0YSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVHU3RyZWFtZXIo
R1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwg
Y29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxz
ZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpudWxsb3B0
KTsKICAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNv
bnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9u
ZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQotICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdWludDMyX3QgcGl4ZWxG
b3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc0dTdHJlYW1lcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBt
X3NhbXBsZTsKICAgICBGbG9hdFNpemUgbV9wcmVzZW50YXRpb25TaXplOwo=
</data>
<flag name="commit-queue"
          id="483499"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455487</attachid>
            <date>2022-03-23 03:59:44 -0700</date>
            <delta_ts>2022-03-23 05:51:24 -0700</delta_ts>
            <desc>GStreamer fix</desc>
            <filename>bug-238071-20220323115941.patch</filename>
            <type>text/plain</type>
            <size>32323</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ1ZDM1YzNhMzU1NzE1
MWM0ZmQ3NzIwNDk2YmM2NzBiZmU0M2ZiMy4uNmMxYTRlODc3ZDQ0ODRiM2Y1ZDI3ZDgwNjZjOGEz
NDNmMGFjYjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXBkYXRlIE1lZGlhU2FtcGxlLCBNZWRpYVNhbXBs
ZUFWRk9iakMgYW5kIFZpZGVvRnJhbWUgYWNjb3JkaW5nIHRoZSBzZXBhcmF0aW9uLgorICAgICAg
ICBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmg6CisKIDIwMjItMDMtMjIgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGF0aW9uIG9mIERvY3VtZW50IHNp
dGVGb3JDb29raWVzIGlzIGJ1Z2d5IGluIGNhc2UgZG9jdW1lbnQgaXMgY3JlYXRlZCBieSB3aW5k
b3cub3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNDRlYzk2ZTYyMjEwOGY0Y2IzMzk1
M2IyZTZlMDE2NmY0N2M4ZWUwOC4uODkzM2I5Zjk1YjRjMzBkZjc1MTQxNzliNjAzMTdlMzg5ZDE0
MjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMzIsNiArMjMyLDcgQEAgcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KK3BsYXRmb3JtL1ZpZGVv
RnJhbWUubW0KIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZmMmY5MWYzYThjNjIz
NGRhMGQ3NDVhMjYuLjA5NWI3M2U1YmQ4YWZkYjE3NDNkZmI2YjI3Y2NiYzk0YTYxMTA1NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwNzYsNiArMTA3Niw3IEBACiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENS
dGNwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDExNEZFMkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87
IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgy
NDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhD
NDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEz
MSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCTQxMjgyN0IyMjdFNEFDM0Mw
MDVBRERFMiAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOTk3
MUY1OUI5NjMwMDlENzQwMyAvKiBGZXRjaEJvZHlTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RiAvKiBG
ZXRjaEJvZHlTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEMzOTVCMUM4
RjBBNjEwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDIxLDcgKzI0MjIsNiBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjVBM0RBRjI3QUJGOEM1
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRE
RDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBB
TkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04NTkwLDYgKzg1OTAsNyBAQAogCQk0MTIwOUU5NDIxNkVBNjlBMDBB
NzNBMTIgLyogUlRDQ2VydGlmaWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUlRDQ2VydGlmaWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTIwOUU5NTIxNkVDMzRFMDBBNzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3IuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NjIxNkVDMzRGMDBB
NzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3Bw
OyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyODI3QjAyN0U0QTlDMzAwNUFEREUyIC8qIFZp
ZGVvRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRl
b0ZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTI5Qzk4MTFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVT
dHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDI1OSw2
ICszMDI2MCw3IEBACiAJCQkJODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25C
dWJibGUuaCAqLywKIAkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5j
cHAgKi8sCiAJCQkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLywK
KwkJCQk0MTI4MjdCMDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5tbSAqLywKIAkJCQk0
MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJCQkJ
NDE2MDQ5MzEyNzQzQjBFNzAwQTg2RkEwIC8qIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCAqLywK
IAkJCQk1MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVy
LmNwcCAqLywKQEAgLTM3OTY2LDcgKzM3OTY4LDcgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBE
MzdBREIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTND
MDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8qIFZpZGVvRnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCRTM3Rjg3MjdCQkI3MDgwMDdBNkNEMyAvKiBWaWRlb0Zy
YW1lQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBW
aWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFB
MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5
MWM0OWIyZGUwMGEwZDAuLjVjNTM5MDdlNjZmYzExNjAxYzRhZWMxZTA3ODg3ZjUwOWNjODQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMjksMTAgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2Uu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9U
eXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCkBAIC01Niw4ICs1Niw3IEBAIHN0cnVjdCBQbGF0
Zm9ybVNhbXBsZSB7CiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCi0gICAgICAgIEJ5dGVS
YW5nZVNhbXBsZVR5cGUsCi0gICAgICAgIFZpZGVvRnJhbWVUeXBlLCAvLyBGSVhNRTogVG8gYmUg
cmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgorICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKICAgICAgICAgY29uc3Qg
TW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKQEAgLTkyLDggKzkxLDYgQEAgcHVibGljOgog
ICAgIH0KICAgICB2aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAg
ZW51bSBTYW1wbGVGbGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAx
IDw8IDAsCkBAIC0xMTEsMjAgKzEwOCw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogCi0gICAgZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9u
ZSA9IDAsCi0gICAgICAgIFVwc2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0g
ICAgICAgIExlZnQgPSAyNzAsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5j
KCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNw
bGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAg
LTE5MSw3ICsxNzQsNiBAQCBzdHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAg
ICAgRmxvYXRTaXplIGRpc3BsYXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAg
ICAgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
IH07CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJW
aWRlb0luZm8pIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25j
YXN0PGNvbnN0IFZpZGVvSW5mbz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6
ZSA9PSBvdGhlci5zaXplICYmIGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJp
dERlcHRoID09IG90aGVyLmJpdERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFj
ZSAmJiByb3RhdGlvbiA9PSBvdGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIu
YXRvbURhdGEpIHx8IChhdG9tRGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0g
Km90aGVyLmF0b21EYXRhKSk7CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYg
ZGlzcGxheVNpemUgPT0gb3RoZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0
RGVwdGggJiYgY29sb3JTcGFjZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYm
ICFvdGhlci5hdG9tRGF0YSkgfHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9t
RGF0YSA9PSAqb3RoZXIuYXRvbURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OCw2
IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0Ci0gICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0
cnVjdCBMb2dBcmd1bWVudDsKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5k
ZXggZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uOWEyM2VjZWIxNmJm
Mjg3MmJjNjljMDdkOWUyNjI5M2VjYmJiMTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5jcHAKQEAgLTI2LDExNCArMjYsNDAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJW
aWRlb0ZyYW1lQ1YuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaWYgVVNFKEdT
VFJFQU1FUikKKyNpbmNsdWRlICJWaWRlb0ZyYW1lR1N0cmVhbWVyLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1WaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24pCitW
aWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlz
TWlycm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uKQogICAgIDogbV9wcmVzZW50YXRpb25UaW1lKHBy
ZXNlbnRhdGlvblRpbWUpCiAgICAgLCBtX2lzTWlycm9yZWQoaXNNaXJyb3JlZCkKICAgICAsIG1f
cm90YXRpb24ocm90YXRpb24pCiB7CiB9CiAKLVZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBk
ZWZhdWx0OwotCi1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsKLX0KLQotVmlkZW9GcmFtZTo6Um90
YXRpb24gVmlkZW9GcmFtZTo6cm90YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX3JvdGF0
aW9uOwotfQotCi1ib29sIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2lzTWlycm9yZWQ7Ci19Ci0KLVdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIFZpZGVvRnJh
bWU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBXZWJDb3JlOjpQbGF0
Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGUsIHsgfSB9OwotfQotCi1QbGF0Zm9ybVNhbXBsZTo6
VHlwZSBWaWRlb0ZyYW1lOjpwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdAotewotICAgIHJldHVy
biBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGU7Ci19Ci0KLU1lZGlhVGlt
ZSBWaWRlb0ZyYW1lOjpkZWNvZGVUaW1lKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZHVyYXRp
b24oKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB7IH07
Ci19Ci0KLUF0b21TdHJpbmcgVmlkZW9GcmFtZTo6dHJhY2tJRCgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc2l6ZV90IFZpZGVvRnJh
bWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29u
c3QgTWVkaWFUaW1lJikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBW
aWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVJlZjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAotewot
ICAgIENSQVNIKCk7Ci19Ci0KLU1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBWaWRlb0ZyYW1lOjpm
bGFncygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFnczo6Tm9u
ZTsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKLXsKLX0K
LQotdm9pZCBWaWRlb0ZyYW1lOjppbml0aWFsaXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24p
Cit2b2lkIFZpZGVvRnJhbWU6OmluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24pCiB7CiAg
ICAgY29uc3RfY2FzdDxNZWRpYVRpbWUmPihtX3ByZXNlbnRhdGlvblRpbWUpID0gcHJlc2VudGF0
aW9uVGltZTsKICAgICBjb25zdF9jYXN0PGJvb2wmPihtX2lzTWlycm9yZWQpID0gaXNNaXJyb3Jl
ZDsKLSAgICBjb25zdF9jYXN0PFZpZGVvUm90YXRpb24mPihtX3JvdGF0aW9uKSA9IHJvdGF0aW9u
OworICAgIGNvbnN0X2Nhc3Q8Um90YXRpb24mPihtX3JvdGF0aW9uKSA9IHJvdGF0aW9uOwogfQog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lOjph
c1ZpZGVvRnJhbWVDVigpCisjaWYgIVBMQVRGT1JNKENPQ09BKQorUmVmUHRyPEpTQzo6VWludDhD
bGFtcGVkQXJyYXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAogewotICAg
IGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2Vu
dGF0aW9uVGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZlcik7CisjaWYgVVNF
KEdTVFJFQU1FUikKKyAgICBpZiAoaXNHU3RyZWFtZXIoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPih0aGlzKS0+Y29tcHV0ZVJHQkFJbWFnZURhdGEo
KTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydC4KKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KICNlbmRpZgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAppbmRleCA4YWE0MmVlZmZhYWY2YWI0ZDM3ZTlh
ODU2YTI0NTk3Y2NiYTU3MDE1Li40MzI2MjYxNTIzNTRiNjc2OTZhOGFkNDI3ZTZmOTM1MzAwZTMx
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0yNyw2NSArMjcsODAg
QEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMu
aD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc0lkZW50aXR5OwogI2lm
IFVTRShBVkZPVU5EQVRJT04pICYmIFBMQVRGT1JNKENPQ09BKQogY2xhc3MgVmlkZW9GcmFtZUNW
OwogI2VuZGlmCiAKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJhbWUgZnJvbSBh
IGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgotLy8gRklYTUU6IEN1cnJlbnRs
eSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2FtcGxlIHVu
dGlsIGNhcHR1cmUgY29kZQotLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxlCi1jbGFz
cyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK2NsYXNzIFZpZGVvRnJhbWUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VmlkZW9GcmFtZT4gewogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CisgICAgdmlydHVhbCB+VmlkZW9GcmFtZSgpID0g
ZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3MgUm90YXRpb24geworICAgICAgICBOb25lID0gMCwK
KyAgICAgICAgVXBzaWRlRG93biA9IDE4MCwKKyAgICAgICAgUmlnaHQgPSA5MCwKKyAgICAgICAg
TGVmdCA9IDI3MCwKKyAgICB9OwogCi0gICAgdXNpbmcgUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjsKKyAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsgfQorICAgIFJvdGF0aW9uIHJvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNNaXJyb3JlZDsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShBVkZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFZpZGVvRnJhbWVDVj4gYXNWaWRl
b0ZyYW1lQ1YoKTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OlVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Q7CiAKLSAgICAvLyBXZWJDb3Jl
OjpNZWRpYVNhbXBsZSBvdmVycmlkZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSb3RhdGlv
biByb3RhdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNaXJy
b3JlZCgpIGNvbnN0IGZpbmFsOwotICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90
IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCi0gICAgV0VCQ09SRV9FWFBP
UlQgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5
cGUoKSBjb25zdCBmaW5hbDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXpl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGliV2ViUlRDKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgYm9vbCBpc0NWKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCk7CisjaWYg
VVNFKEdTVFJFQU1FUikKKyAgICB2aXJ0dWFsIGJvb2wgaXNHU3RyZWFtZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsK
ICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNoaXBJZGVu
dGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNo
YXJhY3RlcmlzdGljcyhNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVk
LCBWaWRlb1JvdGF0aW9uKTsKKyAgICB2b2lkIGluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVk
aWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24pOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZShNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFJvdGF0aW9uKTsKKworcHJpdmF0ZToKICAgICBjb25zdCBNZWRpYVRpbWUgbV9wcmVz
ZW50YXRpb25UaW1lOwogICAgIGNvbnN0IGJvb2wgbV9pc01pcnJvcmVkOwotICAgIGNvbnN0IFZp
ZGVvUm90YXRpb24gbV9yb3RhdGlvbjsKKyAgICBjb25zdCBSb3RhdGlvbiBtX3JvdGF0aW9uOwor
fTsKIAotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG5vdCBpbnRlbmRlZCB0byBi
ZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgotICAgIC8vIFdlYkNvcmU6Ok1lZGlhU2FtcGxlIG92
ZXJyaWRlcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0
IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGlt
ZSYpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5h
bDsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiwKKyAgICAgICAg
V2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6OlZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duLAorICAgICAgICBXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6UmlnaHQsCisgICAgICAgIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpMZWZ0CisgICAgPjsKIH07CiAKIH0KIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpWaWRlb0ZyYW1lKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRm
b3JtU2FtcGxlVHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpWaWRlb0ZyYW1lVHlw
ZTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotI2VuZGlmCisjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFt
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmE3ZGMzOTcxODdiYmU1MDM2YWJiNWEyZWNmNTc1MWRiNDI5NmUyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0KQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1l
LmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNWLmgiCisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgorCisjaW1wb3J0IDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IFZp
ZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAoreworICAgIFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1YgcGl4ZWxCdWZmZXJDb25mb3JtZXIoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilA
eyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTog
QChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBKSB9KTsKKworICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSB0aGlzLT5waXhlbEJ1ZmZlcigpOworICAgIGF1dG8gcmdiYVBpeGVsQnVmZmVyID0gcGl4ZWxC
dWZmZXJDb25mb3JtZXIuY29udmVydChwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0dXMgPSBD
VlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4
ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgc3RhdHVz
ID09IG5vRXJyKTsKKworICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJl
c3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwgMCk7CisgICAgc2l6ZV90IGJ5dGVMZW5n
dGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJH
ZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0OworICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRl
TGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CisKKyAgICBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyVW5s
b2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tf
UmVhZE9ubHkpOworICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworI2lmIFVTRShBVkZPVU5EQVRJT04pCitSZWZQdHI8VmlkZW9GcmFtZUNWPiBW
aWRlb0ZyYW1lOjphc1ZpZGVvRnJhbWVDVigpCit7CisgICAgaWYgKGlzQ1YoKSkKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFZpZGVvRnJhbWVDVj4odGhpcyk7CisKKyAgICBhdXRvIGJ1ZmZlciA9
IHBpeGVsQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlz
TWlycm9yZWQoKSwgcm90YXRpb24oKSwgYnVmZmVyKTsKK30KKyNlbmRpZiAvLyBVU0UoQVZGT1VO
REFUSU9OKQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA2YzVh
ZTUzM2I4N2YwMDUzNGE3ZWVlNGVkYWU4NWFjYWYwNmUyM2Q3Li40YzRjMzQ3NTE5NzQ3MWU5MTNm
NDIyYjIwMjNjMDc0NzBkZjllZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaApAQCAtNDMsOSArNDMsNiBAQCBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMg
OiBwdWJsaWMgTWVkaWFTYW1wbGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1w
bGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1aW50NjRfdCB0cmFj
a0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRy
YWNrSUQpKTsgfQogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9tU3RyaW5nIHRyYWNrSUQpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgdHJhY2tJRCkpOyB9Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGUsIFZpZGVvUm90YXRpb24gcm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1p
cnJvcmVkID0gZmFsc2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpD
KHNhbXBsZSwgcm90YXRpb24sIG1pcnJvcmVkKSk7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02NSwxMiAr
NjIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZlB0cjxNZWRp
YVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHBy
ZXNlbnRhdGlvblRpbWUsIFVzZUVuZFRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JvdGF0aW9uOyB9Ci0gICAgYm9vbCBpc01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9taXJyb3JlZDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHBpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3du
ZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JikgZmluYWw7Ci0KICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZS5nZXQo
KTsgfQogCiAgICAgYm9vbCBpc0hvbW9nZW5lb3VzKCkgY29uc3Q7CkBAIC04MywyMCArNzQsMTUg
QEAgcHVibGljOgogICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJRHM7IH0KICNl
bmRpZgogCi0gICAgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgb25jZSBWaWRlb0ZyYW1lIGlzIG5v
dCBhIE1lZGlhU2FtcGxlLgotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+
IHZpZGVvRnJhbWUoKSBjb25zdDsKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRp
YVNhbXBsZUFWRk9iakMoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwgQXRvbVN0
cmluZyB0cmFja0lEKTsKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01T
YW1wbGVCdWZmZXJSZWYsIHVpbnQ2NF90IHRyYWNrSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwgVmlkZW9Sb3RhdGlvbiwgYm9vbCBt
aXJyb3JlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+TWVkaWFTYW1wbGVBVkZPYmpD
KCk7CiAKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fc2FtcGxlOwogICAgIEF0
b21TdHJpbmcgbV9pZDsKLSAgICBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0
aW9uOjpOb25lIH07Ci0gICAgYm9vbCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAxMzExYjMzNzE4YTg0ZTMzZDEz
OTMxMTMwMmQwNDc1ZmQ5NjNjOGQwLi41YjEzOGU2NDUwZDI4ZjExZDUwMmJlYmRkNGE2MGYzNjEx
MjFhYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CkBAIC02NiwxMiArNjYsNiBAQCBNZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxlQVZGT2Jq
QyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSQogICAgICwgbV9pZChB
dG9tU3RyaW5nOjpudW1iZXIodHJhY2tJRCkpCiB7CiB9Ci1NZWRpYVNhbXBsZUFWRk9iakM6Ok1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvUm90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCi0gICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgLCBt
X3JvdGF0aW9uKHJvdGF0aW9uKQotICAgICwgbV9taXJyb3JlZChtaXJyb3JlZCkKLXsKLX0KIAog
TWVkaWFTYW1wbGVBVkZPYmpDOjp+TWVkaWFTYW1wbGVBVkZPYmpDKCkgPSBkZWZhdWx0OwogCkBA
IC0xMTAsMjIgKzEwNCw2IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxh
dGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQzMl90IE1l
ZGlhU2FtcGxlQVZGT2JqQzo6cGl4ZWxGb3JtYXQoKSBjb25zdAotewotICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVy
R2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLSAgICByZXR1cm4gQ1ZQaXhlbEJ1ZmZl
ckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7Ci19Ci0KLVJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9GcmFtZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X3NhbXBsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFn
ZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50
YXRpb25UaW1lKCksIG1fbWlycm9yZWQsIG1fcm90YXRpb24sIFJldGFpblB0ciB7IHBpeGVsQnVm
ZmVyIH0pOwotfQotCiBzdGF0aWMgYm9vbCBpc0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudFJhbmRv
bUFjY2VzcyhDRkRpY3Rpb25hcnlSZWYgYXR0YWNobWVudERpY3QpCiB7CiAgICAgcmV0dXJuICFD
RkRpY3Rpb25hcnlDb250YWluc0tleShhdHRhY2htZW50RGljdCwgUEFMOjprQ01TYW1wbGVBdHRh
Y2htZW50S2V5X05vdFN5bmMpOwpAQCAtMzEyLDM5ICsyOTAsNiBAQCBSZWY8TWVkaWFTYW1wbGU+
IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAogICAg
IHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShhZG9wdENGKG5ld1NhbXBsZUJ1ZmZl
cikuZ2V0KCksIG1faWQpOwogfQogCi1SZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gTWVk
aWFTYW1wbGVBVkZPYmpDOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKLXsKLSAgICBjb25zdCBP
U1R5cGUgaW1hZ2VGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBOwotICAgIFJldGFp
blB0cjxDRk51bWJlclJlZj4gaW1hZ2VGb3JtYXROdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJmltYWdlRm9ybWF0KSk7Ci0KLSAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVyT3B0aW9ucyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSwga0NWUGl4ZWxCdWZmZXJQaXhl
bEZvcm1hdFR5cGVLZXksIGltYWdlRm9ybWF0TnVtYmVyLmdldCgpKTsKLSAgICBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkp
OwotCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+
KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotICAg
IGF1dG8gcmdiYVBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJDb25mb3JtZXIuY29udmVydChwaXhl
bEJ1ZmZlcik7Ci0gICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNz
KHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgc3RhdHVzID09IG5vRXJyKTsKLQotICAgIHZvaWQqIGRh
dGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5n
ZXQoKSwgMCk7Ci0gICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0
KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0Owot
ICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7Ci0K
LSAgICBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVm
ZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOwotICAgIEFTU0VSVChzdGF0
dXMgPT0gbm9FcnIpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGlubGluZSB2
b2lkIHNldFNhbXBsZUJ1ZmZlckFzRGlzcGxheUltbWVkaWF0ZWx5KENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlcikKLXsKLSAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBQQUw6
OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIsIHRy
dWUpOwotICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChhdHRhY2ht
ZW50c0FycmF5KTsgKytpKSB7Ci0gICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0YWNo
bWVudHMgPSBjaGVja2VkX2NmX2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChhdHRhY2htZW50c0FycmF5LCBpKSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGF0dGFjaG1lbnRzLCBQQUw6OmtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRGlzcGxh
eUltbWVkaWF0ZWx5LCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgfQotfQotCiBib29sIE1lZGlhU2Ft
cGxlQVZGT2JqQzo6aXNIb21vZ2VuZW91cygpIGNvbnN0CiB7CiAgICAgQ0ZBcnJheVJlZiBhdHRh
Y2htZW50c0FycmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJy
YXkobV9zYW1wbGUuZ2V0KCksIHRydWUpOwpAQCAtNDE1LDE3ICszNjAsNCBAQCBWZWN0b3I8UmVm
PE1lZGlhU2FtcGxlQVZGT2JqQz4+IE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlSW50b0hvbW9n
ZW5lb3VzU2FtcGxlcwogICAgIHJldHVybiBzYW1wbGVzOwogfQogCi1DVlBpeGVsQnVmZmVyUmVm
IE1lZGlhU2FtcGxlQVZGT2JqQzo6cGl4ZWxCdWZmZXIoKSBjb25zdAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VC
dWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLX0KLQotdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNl
dE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikK
LXsKLSAgICBBU1NFUlQocmVzb3VyY2VPd25lcik7Ci0gICAgYXV0byBidWZmZXIgPSBwaXhlbEJ1
ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIHNldE93bmVyc2hpcElkZW50aXR5Rm9y
Q1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIpOwotfQotCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKaW5kZXggYjlkMzhmMDQ3NDhkZDEzYjNkNGZkMmUzMjY3
MDg2MzU4NTdmMjViYi4uNGU4NDNjMzRjMTRkZTQyZjY0ZjQ0YzhmMzIwMjVkZWEwMjMxZGRiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1JlZlB0cjxH
c3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0CiB7CiB9CiAKLVJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBl
ZEFycmF5PiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKK1Jl
ZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjb21wdXRl
UkdCQUltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0
X2NhcHMobV9zYW1wbGUuZ2V0KCkpOwogICAgIEdzdFZpZGVvSW5mbyBpbnB1dEluZm87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaAppbmRleCAxYzgwYzIyZTAyNjY1OTY2ZDE3Yjk4YTg2
YzEyNTI2ZTE2ZmI5MDlmLi5hNjIyNGU5OWU2YzFjYjc0YWNmMWM1ZTBjNmZiMGFjMWQwMDEwMTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9GcmFtZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKQEAgLTIzLDYgKzIzLDkgQEAKIAog
I2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lTWV0YWRhdGFHU3Ry
ZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0
IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDE0
ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBj
cmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJiwgY29uc3QgTWVkaWFUaW1lJiBwcmVz
ZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBjb25zdCBJbnRTaXplJiBk
ZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFtZVJhdGUgPSAxLCBSb3RhdGlvbiB2aWRl
b1JvdGF0aW9uID0gUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9IGZhbHNlLCBz
dGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0YWRhdGEgPSBzdGQ6Om51
bGxvcHQpOwogCiAgICAgR3N0U2FtcGxlKiBzYW1wbGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZS5nZXQoKTsgfQorICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBjb21wdXRlUkdC
QUltYWdlRGF0YSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVHU3RyZWFtZXIo
R1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwg
Y29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxz
ZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpudWxsb3B0
KTsKICAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNv
bnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9u
ZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQotICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdWludDMyX3QgcGl4ZWxG
b3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc0dTdHJlYW1lcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBt
X3NhbXBsZTsKICAgICBGbG9hdFNpemUgbV9wcmVzZW50YXRpb25TaXplOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCA1NzczMjc0NmM2YmEwYmUyNTQwMGFkZjEwMzRiNTBkZGU1MWRlZDFiLi5kMDQ3
MjllMDY4OWNmNGRkMDg5YzAwMWYzNjIzMzM5MDE5YTM1YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyLmNw
cApAQCAtMjIsNiArMjIsNyBAQAogI2lmIFVTRShHU1RSRUFNRVJfV0VCUlRDKQogI2luY2x1ZGUg
IlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5oIgogCisjaW5jbHVkZSAiR1N0
cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZUdTdHJlYW1lci5oIgogI2luY2x1
ZGUgIlZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9ydHAvcnRw
Lmg+Cg==
</data>
<flag name="commit-queue"
          id="483501"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455491</attachid>
            <date>2022-03-23 05:19:27 -0700</date>
            <delta_ts>2022-03-23 06:55:52 -0700</delta_ts>
            <desc>GStreamer fix</desc>
            <filename>bug-238071-20220323131923.patch</filename>
            <type>text/plain</type>
            <size>32329</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ1ZDM1YzNhMzU1NzE1
MWM0ZmQ3NzIwNDk2YmM2NzBiZmU0M2ZiMy4uNmMxYTRlODc3ZDQ0ODRiM2Y1ZDI3ZDgwNjZjOGEz
NDNmMGFjYjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlb0ZyYW1lIGRvZXMg
bm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXBkYXRlIE1lZGlhU2FtcGxlLCBNZWRpYVNhbXBs
ZUFWRk9iakMgYW5kIFZpZGVvRnJhbWUgYWNjb3JkaW5nIHRoZSBzZXBhcmF0aW9uLgorICAgICAg
ICBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmg6CisKIDIwMjItMDMtMjIgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGF0aW9uIG9mIERvY3VtZW50IHNp
dGVGb3JDb29raWVzIGlzIGJ1Z2d5IGluIGNhc2UgZG9jdW1lbnQgaXMgY3JlYXRlZCBieSB3aW5k
b3cub3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNDRlYzk2ZTYyMjEwOGY0Y2IzMzk1
M2IyZTZlMDE2NmY0N2M4ZWUwOC4uODkzM2I5Zjk1YjRjMzBkZjc1MTQxNzliNjAzMTdlMzg5ZDE0
MjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMzIsNiArMjMyLDcgQEAgcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KK3BsYXRmb3JtL1ZpZGVv
RnJhbWUubW0KIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZmMmY5MWYzYThjNjIz
NGRhMGQ3NDVhMjYuLjA5NWI3M2U1YmQ4YWZkYjE3NDNkZmI2YjI3Y2NiYzk0YTYxMTA1NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwNzYsNiArMTA3Niw3IEBACiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENS
dGNwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDExNEZFMkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87
IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgy
NDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhD
NDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEz
MSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCTQxMjgyN0IyMjdFNEFDM0Mw
MDVBRERFMiAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjlDOTk3
MUY1OUI5NjMwMDlENzQwMyAvKiBGZXRjaEJvZHlTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RiAvKiBG
ZXRjaEJvZHlTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4QzM5NUYxQzhGMEFBQjAwNTFDOEEzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEMzOTVCMUM4
RjBBNjEwMDUxQzhBMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDIxLDcgKzI0MjIsNiBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjVBM0RBRjI3QUJGOEM1
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRE
RDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBB
TkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04NTkwLDYgKzg1OTAsNyBAQAogCQk0MTIwOUU5NDIxNkVBNjlBMDBB
NzNBMTIgLyogUlRDQ2VydGlmaWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUlRDQ2VydGlmaWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTIwOUU5NTIxNkVDMzRFMDBBNzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3IuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NjIxNkVDMzRGMDBB
NzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3Bw
OyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyODI3QjAyN0U0QTlDMzAwNUFEREUyIC8qIFZp
ZGVvRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRl
b0ZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTI5Qzk4MTFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVT
dHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDI1OSw2
ICszMDI2MCw3IEBACiAJCQkJODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25C
dWJibGUuaCAqLywKIAkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5j
cHAgKi8sCiAJCQkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLywK
KwkJCQk0MTI4MjdCMDI3RTRBOUMzMDA1QURERTIgLyogVmlkZW9GcmFtZS5tbSAqLywKIAkJCQk0
MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJCQkJ
NDE2MDQ5MzEyNzQzQjBFNzAwQTg2RkEwIC8qIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCAqLywK
IAkJCQk1MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVy
LmNwcCAqLywKQEAgLTM3OTY2LDcgKzM3OTY4LDcgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBE
MzdBREIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTND
MDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDEyODI3QjIyN0U0QUMzQzAwNUFEREUyIC8qIFZpZGVvRnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCRTM3Rjg3MjdCQkI3MDgwMDdBNkNEMyAvKiBWaWRlb0Zy
YW1lQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBW
aWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFB
MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5
MWM0OWIyZGUwMGEwZDAuLjVjNTM5MDdlNjZmYzExNjAxYzRhZWMxZTA3ODg3ZjUwOWNjODQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMjksMTAgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2Uu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9U
eXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCkBAIC01Niw4ICs1Niw3IEBAIHN0cnVjdCBQbGF0
Zm9ybVNhbXBsZSB7CiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCi0gICAgICAgIEJ5dGVS
YW5nZVNhbXBsZVR5cGUsCi0gICAgICAgIFZpZGVvRnJhbWVUeXBlLCAvLyBGSVhNRTogVG8gYmUg
cmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgorICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKICAgICAgICAgY29uc3Qg
TW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKQEAgLTkyLDggKzkxLDYgQEAgcHVibGljOgog
ICAgIH0KICAgICB2aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAg
ZW51bSBTYW1wbGVGbGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAx
IDw8IDAsCkBAIC0xMTEsMjAgKzEwOCw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogCi0gICAgZW51bSBjbGFzcyBWaWRlb1JvdGF0aW9uIHsKLSAgICAgICAgTm9u
ZSA9IDAsCi0gICAgICAgIFVwc2lkZURvd24gPSAxODAsCi0gICAgICAgIFJpZ2h0ID0gOTAsCi0g
ICAgICAgIExlZnQgPSAyNzAsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfTsKLSNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KLQogICAgIGJvb2wgaXNTeW5j
KCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNw
bGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQogICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSGFzQWxwaGE7IH0KQEAg
LTE5MSw3ICsxNzQsNiBAQCBzdHJ1Y3QgVmlkZW9JbmZvIDogcHVibGljIFRyYWNrSW5mbyB7CiAg
ICAgRmxvYXRTaXplIGRpc3BsYXlTaXplOwogICAgIHVpbnQ4X3QgYml0RGVwdGggeyA4IH07CiAg
ICAgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
IH07CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhdG9tRGF0YTsKIApAQCAtMjAxLDcgKzE4
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlcXVhbFRvKGNvbnN0IFRyYWNrSW5mbyYgb3RoZXJW
aWRlb0luZm8pIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvJiBvdGhlciA9IGRvd25j
YXN0PGNvbnN0IFZpZGVvSW5mbz4ob3RoZXJWaWRlb0luZm8pOwotICAgICAgICByZXR1cm4gc2l6
ZSA9PSBvdGhlci5zaXplICYmIGRpc3BsYXlTaXplID09IG90aGVyLmRpc3BsYXlTaXplICYmIGJp
dERlcHRoID09IG90aGVyLmJpdERlcHRoICYmIGNvbG9yU3BhY2UgPT0gb3RoZXIuY29sb3JTcGFj
ZSAmJiByb3RhdGlvbiA9PSBvdGhlci5yb3RhdGlvbiAmJiAoKCFhdG9tRGF0YSAmJiAhb3RoZXIu
YXRvbURhdGEpIHx8IChhdG9tRGF0YSAmJiBvdGhlci5hdG9tRGF0YSAmJiAqYXRvbURhdGEgPT0g
Km90aGVyLmF0b21EYXRhKSk7CisgICAgICAgIHJldHVybiBzaXplID09IG90aGVyLnNpemUgJiYg
ZGlzcGxheVNpemUgPT0gb3RoZXIuZGlzcGxheVNpemUgJiYgYml0RGVwdGggPT0gb3RoZXIuYml0
RGVwdGggJiYgY29sb3JTcGFjZSA9PSBvdGhlci5jb2xvclNwYWNlICYmICgoIWF0b21EYXRhICYm
ICFvdGhlci5hdG9tRGF0YSkgfHwgKGF0b21EYXRhICYmIG90aGVyLmF0b21EYXRhICYmICphdG9t
RGF0YSA9PSAqb3RoZXIuYXRvbURhdGEpKTsKICAgICB9CiB9OwogCkBAIC0yNzYsMTYgKzI1OCw2
IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLAotICAgICAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0Ci0gICAgPjsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0
cnVjdCBMb2dBcmd1bWVudDsKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5k
ZXggZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNC4uZDUwZDQxYzhiMzgz
YTE0YmQ2ODNlOWY5ODZiMGI0MzY4NmI0M2Y5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5jcHAKQEAgLTI2LDExNCArMjYsNDAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJW
aWRlb0ZyYW1lQ1YuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaWYgVVNFKEdT
VFJFQU1FUikKKyNpbmNsdWRlICJWaWRlb0ZyYW1lR1N0cmVhbWVyLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1WaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24pCitW
aWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlz
TWlycm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uKQogICAgIDogbV9wcmVzZW50YXRpb25UaW1lKHBy
ZXNlbnRhdGlvblRpbWUpCiAgICAgLCBtX2lzTWlycm9yZWQoaXNNaXJyb3JlZCkKICAgICAsIG1f
cm90YXRpb24ocm90YXRpb24pCiB7CiB9CiAKLVZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBk
ZWZhdWx0OwotCi1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsKLX0KLQotVmlkZW9GcmFtZTo6Um90
YXRpb24gVmlkZW9GcmFtZTo6cm90YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX3JvdGF0
aW9uOwotfQotCi1ib29sIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2lzTWlycm9yZWQ7Ci19Ci0KLVdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIFZpZGVvRnJh
bWU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBXZWJDb3JlOjpQbGF0
Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGUsIHsgfSB9OwotfQotCi1QbGF0Zm9ybVNhbXBsZTo6
VHlwZSBWaWRlb0ZyYW1lOjpwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdAotewotICAgIHJldHVy
biBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVR5cGU7Ci19Ci0KLU1lZGlhVGlt
ZSBWaWRlb0ZyYW1lOjpkZWNvZGVUaW1lKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1NZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZHVyYXRp
b24oKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB7IH07
Ci19Ci0KLUF0b21TdHJpbmcgVmlkZW9GcmFtZTo6dHJhY2tJRCgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc2l6ZV90IFZpZGVvRnJh
bWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29u
c3QgTWVkaWFUaW1lJikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBW
aWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVJlZjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAotewot
ICAgIENSQVNIKCk7Ci19Ci0KLU1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBWaWRlb0ZyYW1lOjpm
bGFncygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFnczo6Tm9u
ZTsKLX0KLQotdm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKLXsKLX0K
LQotdm9pZCBWaWRlb0ZyYW1lOjppbml0aWFsaXplQ2hhcmFjdGVyaXN0aWNzKE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24p
Cit2b2lkIFZpZGVvRnJhbWU6OmluaXRpYWxpemVDaGFyYWN0ZXJpc3RpY3MoTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24pCiB7CiAg
ICAgY29uc3RfY2FzdDxNZWRpYVRpbWUmPihtX3ByZXNlbnRhdGlvblRpbWUpID0gcHJlc2VudGF0
aW9uVGltZTsKICAgICBjb25zdF9jYXN0PGJvb2wmPihtX2lzTWlycm9yZWQpID0gaXNNaXJyb3Jl
ZDsKLSAgICBjb25zdF9jYXN0PFZpZGVvUm90YXRpb24mPihtX3JvdGF0aW9uKSA9IHJvdGF0aW9u
OworICAgIGNvbnN0X2Nhc3Q8Um90YXRpb24mPihtX3JvdGF0aW9uKSA9IHJvdGF0aW9uOwogfQog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lOjph
c1ZpZGVvRnJhbWVDVigpCisjaWYgIVBMQVRGT1JNKENPQ09BKQorUmVmUHRyPEpTQzo6VWludDhD
bGFtcGVkQXJyYXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAogewotICAg
IGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2Vu
dGF0aW9uVGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZlcik7CisjaWYgVVNF
KEdTVFJFQU1FUikKKyAgICBpZiAoaXNHU3RyZWFtZXIoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFZpZGVvRnJhbWVHU3RyZWFtZXIqPih0aGlzKS0+Y29tcHV0ZVJHQkFJbWFn
ZURhdGEoKTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydC4KKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KICNlbmRpZgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURF
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAppbmRleCA4YWE0MmVlZmZhYWY2YWI0
ZDM3ZTlhODU2YTI0NTk3Y2NiYTU3MDE1Li40MzI2MjYxNTIzNTRiNjc2OTZhOGFkNDI3ZTZmOTM1
MzAwZTMxZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0yNyw2NSAr
MjcsODAgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgi
CisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRB
cnJheXMuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxC
dWZmZXJSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc0lkZW50aXR5
OwogI2lmIFVTRShBVkZPVU5EQVRJT04pICYmIFBMQVRGT1JNKENPQ09BKQogY2xhc3MgVmlkZW9G
cmFtZUNWOwogI2VuZGlmCiAKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJhbWUg
ZnJvbSBhIGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgotLy8gRklYTUU6IEN1
cnJlbnRseSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2Ft
cGxlIHVudGlsIGNhcHR1cmUgY29kZQotLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxl
Ci1jbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK2NsYXNzIFZpZGVvRnJh
bWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VmlkZW9GcmFtZT4gewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CisgICAgdmlydHVhbCB+VmlkZW9GcmFt
ZSgpID0gZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3MgUm90YXRpb24geworICAgICAgICBOb25l
ID0gMCwKKyAgICAgICAgVXBzaWRlRG93biA9IDE4MCwKKyAgICAgICAgUmlnaHQgPSA5MCwKKyAg
ICAgICAgTGVmdCA9IDI3MCwKKyAgICB9OwogCi0gICAgdXNpbmcgUm90YXRpb24gPSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjsKKyAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsgfQorICAgIFJvdGF0aW9uIHJvdGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNNaXJyb3JlZDsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVT
RShBVkZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFZpZGVvRnJhbWVDVj4g
YXNWaWRlb0ZyYW1lQ1YoKTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6
OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Q7CiAKLSAgICAvLyBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSBvdmVycmlkZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
b3RhdGlvbiByb3RhdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNNaXJyb3JlZCgpIGNvbnN0IGZpbmFsOwotICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUg
aXMgbm90IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCi0gICAgV0VCQ09S
RV9FWFBPUlQgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBm
aW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNh
bXBsZVR5cGUoKSBjb25zdCBmaW5hbDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRp
b25TaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGliV2ViUlRDKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgYm9vbCBpc0NW
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCk7
CisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2aXJ0dWFsIGJvb2wgaXNHU3RyZWFtZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmly
dHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfTsKICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSB7IH0KIAotICAgIHZvaWQgaW5pdGlh
bGl6ZUNoYXJhY3RlcmlzdGljcyhNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01p
cnJvcmVkLCBWaWRlb1JvdGF0aW9uKTsKKyAgICB2b2lkIGluaXRpYWxpemVDaGFyYWN0ZXJpc3Rp
Y3MoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24p
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZShNZWRpYVRpbWUg
cHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWaWRlb0ZyYW1lKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29s
IGlzTWlycm9yZWQsIFJvdGF0aW9uKTsKKworcHJpdmF0ZToKICAgICBjb25zdCBNZWRpYVRpbWUg
bV9wcmVzZW50YXRpb25UaW1lOwogICAgIGNvbnN0IGJvb2wgbV9pc01pcnJvcmVkOwotICAgIGNv
bnN0IFZpZGVvUm90YXRpb24gbV9yb3RhdGlvbjsKKyAgICBjb25zdCBSb3RhdGlvbiBtX3JvdGF0
aW9uOworfTsKIAotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG5vdCBpbnRlbmRl
ZCB0byBiZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgotICAgIC8vIFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlIG92ZXJyaWRlcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZGVjb2RlVGltZSgp
IGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlvbigpIGNv
bnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0
IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZXN0YW1wcyhj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkg
Y29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dCBmaW5hbDsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsCisgICAgICAgIFdlYkNv
cmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duLAorICAgICAgICBXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQsCisgICAgICAgIFdlYkNvcmU6OlZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpMZWZ0CisgICAgPjsKIH07CiAKIH0KIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxl
LnBsYXRmb3JtU2FtcGxlVHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpWaWRlb0Zy
YW1lVHlwZTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotI2VuZGlmCisjZW5kaWYg
Ly8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmE3ZGMzOTcxODdiYmU1MDM2YWJiNWEyZWNmNTc1MWRiNDI5NmUyZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUubW0KQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRl
b0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1w
b3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNWLmgi
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgorCisjaW1wb3J0
IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5r
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJy
YXk+IFZpZGVvRnJhbWU6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAoreworICAgIFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YgcGl4ZWxCdWZmZXJDb25mb3JtZXIoKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlw
ZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBKSB9KTsKKworICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSB0aGlzLT5waXhlbEJ1ZmZlcigpOworICAgIGF1dG8gcmdiYVBpeGVsQnVmZmVyID0g
cGl4ZWxCdWZmZXJDb25mb3JtZXIuY29udmVydChwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0
dXMgPSBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwg
a0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywg
c3RhdHVzID09IG5vRXJyKTsKKworICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFz
ZUFkZHJlc3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwgMCk7CisgICAgc2l6ZV90IGJ5
dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxC
dWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0OworICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpV
aW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRh
LCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CisKKyAgICBzdGF0dXMgPSBDVlBpeGVsQnVm
ZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZl
ckxvY2tfUmVhZE9ubHkpOworICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworI2lmIFVTRShBVkZPVU5EQVRJT04pCitSZWZQdHI8VmlkZW9GcmFt
ZUNWPiBWaWRlb0ZyYW1lOjphc1ZpZGVvRnJhbWVDVigpCit7CisgICAgaWYgKGlzQ1YoKSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFZpZGVvRnJhbWVDVj4odGhpcyk7CisKKyAgICBhdXRvIGJ1
ZmZlciA9IHBpeGVsQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1l
KCksIGlzTWlycm9yZWQoKSwgcm90YXRpb24oKSwgYnVmZmVyKTsKK30KKyNlbmRpZiAvLyBVU0Uo
QVZGT1VOREFUSU9OKQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRl
eCA2YzVhZTUzM2I4N2YwMDUzNGE3ZWVlNGVkYWU4NWFjYWYwNmUyM2Q3Li40YzRjMzQ3NTE5NzQ3
MWU5MTNmNDIyYjIwMjNjMDc0NzBkZjllZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNDMsOSArNDMsNiBAQCBjbGFzcyBNZWRpYVNhbXBsZUFW
Rk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVk
aWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1aW50NjRf
dCB0cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1w
bGUsIHRyYWNrSUQpKTsgfQogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVh
dGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9tU3RyaW5nIHRyYWNrSUQpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgdHJhY2tJRCkpOyB9Ci0g
ICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGUsIFZpZGVvUm90YXRpb24gcm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBi
b29sIG1pcnJvcmVkID0gZmFsc2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVB
VkZPYmpDKHNhbXBsZSwgcm90YXRpb24sIG1pcnJvcmVkKSk7IH0KLQotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02
NSwxMiArNjIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZlB0
cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRp
bWUmIHByZXNlbnRhdGlvblRpbWUsIFVzZUVuZFRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3JvdGF0aW9uOyB9Ci0gICAgYm9vbCBpc01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHBp
eGVsRm9ybWF0KCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JikgZmluYWw7Ci0KICAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZS5nZXQoKTsgfQogCiAgICAgYm9vbCBpc0hvbW9nZW5lb3VzKCkgY29uc3Q7CkBAIC04MywyMCAr
NzQsMTUgQEAgcHVibGljOgogICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJRHM7
IH0KICNlbmRpZgogCi0gICAgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgb25jZSBWaWRlb0ZyYW1l
IGlzIG5vdCBhIE1lZGlhU2FtcGxlLgotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0Zy
YW1lQ1Y+IHZpZGVvRnJhbWUoKSBjb25zdDsKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9S
VCBNZWRpYVNhbXBsZUFWRk9iakMoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwg
QXRvbVN0cmluZyB0cmFja0lEKTsKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9i
akMoQ01TYW1wbGVCdWZmZXJSZWYsIHVpbnQ2NF90IHRyYWNrSUQpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiwgVmlkZW9Sb3RhdGlvbiwg
Ym9vbCBtaXJyb3JlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+TWVkaWFTYW1wbGVB
VkZPYmpDKCk7CiAKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fc2FtcGxlOwog
ICAgIEF0b21TdHJpbmcgbV9pZDsKLSAgICBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBWaWRl
b1JvdGF0aW9uOjpOb25lIH07Ci0gICAgYm9vbCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAxMzExYjMzNzE4YTg0
ZTMzZDEzOTMxMTMwMmQwNDc1ZmQ5NjNjOGQwLi41YjEzOGU2NDUwZDI4ZjExZDUwMmJlYmRkNGE2
MGYzNjExMjFhYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLm1tCkBAIC02NiwxMiArNjYsNiBAQCBNZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxl
QVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSQogICAgICwg
bV9pZChBdG9tU3RyaW5nOjpudW1iZXIodHJhY2tJRCkpCiB7CiB9Ci1NZWRpYVNhbXBsZUFWRk9i
akM6Ok1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvUm90
YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCi0gICAgOiBtX3NhbXBsZShzYW1wbGUpCi0g
ICAgLCBtX3JvdGF0aW9uKHJvdGF0aW9uKQotICAgICwgbV9taXJyb3JlZChtaXJyb3JlZCkKLXsK
LX0KIAogTWVkaWFTYW1wbGVBVkZPYmpDOjp+TWVkaWFTYW1wbGVBVkZPYmpDKCkgPSBkZWZhdWx0
OwogCkBAIC0xMTAsMjIgKzEwNCw2IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQz
Ml90IE1lZGlhU2FtcGxlQVZGT2JqQzo6cGl4ZWxGb3JtYXQoKSBjb25zdAotewotICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxl
QnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLSAgICByZXR1cm4gQ1ZQaXhl
bEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7Ci19Ci0KLVJlZlB0cjxWaWRl
b0ZyYW1lQ1Y+IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9GcmFtZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX3NhbXBsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1
ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJH
ZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShw
cmVzZW50YXRpb25UaW1lKCksIG1fbWlycm9yZWQsIG1fcm90YXRpb24sIFJldGFpblB0ciB7IHBp
eGVsQnVmZmVyIH0pOwotfQotCiBzdGF0aWMgYm9vbCBpc0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dFJhbmRvbUFjY2VzcyhDRkRpY3Rpb25hcnlSZWYgYXR0YWNobWVudERpY3QpCiB7CiAgICAgcmV0
dXJuICFDRkRpY3Rpb25hcnlDb250YWluc0tleShhdHRhY2htZW50RGljdCwgUEFMOjprQ01TYW1w
bGVBdHRhY2htZW50S2V5X05vdFN5bmMpOwpAQCAtMzEyLDM5ICsyOTAsNiBAQCBSZWY8TWVkaWFT
YW1wbGU+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dAogICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShhZG9wdENGKG5ld1NhbXBs
ZUJ1ZmZlcikuZ2V0KCksIG1faWQpOwogfQogCi1SZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKLXsKLSAgICBj
b25zdCBPU1R5cGUgaW1hZ2VGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBOwotICAg
IFJldGFpblB0cjxDRk51bWJlclJlZj4gaW1hZ2VGb3JtYXROdW1iZXIgPSBhZG9wdENGKENGTnVt
YmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJmltYWdlRm9ybWF0KSk7Ci0K
LSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVyT3B0aW9ucyA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSwga0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXksIGltYWdlRm9ybWF0TnVtYmVyLmdldCgpKTsKLSAgICBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMu
Z2V0KCkpOwotCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZm
ZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkp
OwotICAgIGF1dG8gcmdiYVBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJDb25mb3JtZXIuY29udmVy
dChwaXhlbEJ1ZmZlcik7Ci0gICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VB
ZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgc3RhdHVzID09IG5vRXJyKTsKLQotICAgIHZv
aWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJnYmFQaXhlbEJ1
ZmZlci5nZXQoKSwgMCk7Ci0gICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0
SGVpZ2h0KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikg
KiA0OwotICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRl
KEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0
aCk7Ci0KLSAgICBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBp
eGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOwotICAgIEFTU0VS
VChzdGF0dXMgPT0gbm9FcnIpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGlu
bGluZSB2b2lkIHNldFNhbXBsZUJ1ZmZlckFzRGlzcGxheUltbWVkaWF0ZWx5KENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlcikKLXsKLSAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkg
PSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZm
ZXIsIHRydWUpOwotICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChh
dHRhY2htZW50c0FycmF5KTsgKytpKSB7Ci0gICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
YXR0YWNobWVudHMgPSBjaGVja2VkX2NmX2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChhdHRhY2htZW50c0FycmF5LCBpKSk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGF0dGFjaG1lbnRzLCBQQUw6OmtDTVNhbXBsZUF0dGFjaG1lbnRLZXlf
RGlzcGxheUltbWVkaWF0ZWx5LCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgfQotfQotCiBib29sIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6aXNIb21vZ2VuZW91cygpIGNvbnN0CiB7CiAgICAgQ0ZBcnJheVJl
ZiBhdHRhY2htZW50c0FycmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1l
bnRzQXJyYXkobV9zYW1wbGUuZ2V0KCksIHRydWUpOwpAQCAtNDE1LDE3ICszNjAsNCBAQCBWZWN0
b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlSW50
b0hvbW9nZW5lb3VzU2FtcGxlcwogICAgIHJldHVybiBzYW1wbGVzOwogfQogCi1DVlBpeGVsQnVm
ZmVyUmVmIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGl4ZWxCdWZmZXIoKSBjb25zdAotewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0
SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKLX0KLQotdm9pZCBNZWRpYVNhbXBsZUFWRk9i
akM6OnNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VP
d25lcikKLXsKLSAgICBBU1NFUlQocmVzb3VyY2VPd25lcik7Ci0gICAgYXV0byBidWZmZXIgPSBw
aXhlbEJ1ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIHNldE93bmVyc2hpcElkZW50
aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIpOwotfQotCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKaW5kZXggYjlkMzhmMDQ3NDhkZDEzYjNkNGZk
MmUzMjY3MDg2MzU4NTdmMjViYi4uNGU4NDNjMzRjMTRkZTQyZjY0ZjQ0YzhmMzIwMjVkZWEwMjMx
ZGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1Jl
ZlB0cjxHc3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0CiB7CiB9CiAKLVJlZlB0cjxKU0M6OlVpbnQ4
Q2xhbXBlZEFycmF5PiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29u
c3QKK1JlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpj
b21wdXRlUkdCQUltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byogY2FwcyA9IGdzdF9zYW1w
bGVfZ2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkpOwogICAgIEdzdFZpZGVvSW5mbyBpbnB1dEluZm87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9GcmFtZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaAppbmRleCAxYzgwYzIyZTAyNjY1OTY2ZDE3
Yjk4YTg2YzEyNTI2ZTE2ZmI5MDlmLi5hNjIyNGU5OWU2YzFjYjc0YWNmMWM1ZTBjNmZiMGFjMWQw
MDEwMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKQEAgLTIzLDYgKzIzLDkg
QEAKIAogI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lTWV0YWRh
dGFHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK3R5cGVkZWYg
c3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQzLDE0ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVh
bWVyPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJiwgY29uc3QgTWVkaWFUaW1l
JiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBjb25zdCBJbnRT
aXplJiBkZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFtZVJhdGUgPSAxLCBSb3RhdGlv
biB2aWRlb1JvdGF0aW9uID0gUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9IGZh
bHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0YWRhdGEgPSBz
dGQ6Om51bGxvcHQpOwogCiAgICAgR3N0U2FtcGxlKiBzYW1wbGUoKSBjb25zdCB7IHJldHVybiBt
X3NhbXBsZS5nZXQoKTsgfQorICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBjb21w
dXRlUkdCQUltYWdlRGF0YSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVHU3Ry
ZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9u
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpu
dWxsb3B0KTsKICAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxl
PiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlv
bjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQotICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc0dTdHJl
YW1lcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEdSZWZQdHI8R3N0U2Ft
cGxlPiBtX3NhbXBsZTsKICAgICBGbG9hdFNpemUgbV9wcmVzZW50YXRpb25TaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0
cmVhbWVyLmNwcAppbmRleCA1NzczMjc0NmM2YmEwYmUyNTQwMGFkZjEwMzRiNTBkZGU1MWRlZDFi
Li5kMDQ3MjllMDY4OWNmNGRkMDg5YzAwMWYzNjIzMzM5MDE5YTM1YzBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2lmIFVTRShHU1RSRUFNRVJfV0VCUlRDKQogI2lu
Y2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5oIgogCisjaW5jbHVk
ZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZUdTdHJlYW1lci5oIgog
I2luY2x1ZGUgIlZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9y
dHAvcnRwLmg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>