<?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>141782</bug_id>
          
          <creation_ts>2015-02-18 16:59:10 -0800</creation_ts>
          <short_desc>[GTK] Accelerated compositing should support hidpi</short_desc>
          <delta_ts>2015-09-30 06:18:14 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=726507</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christopher Bayliss">christopher.j.bayliss</reporter>
          <assigned_to name="Gwang Yoon Hwang">yoon</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>christopher.j.bayliss</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fastcat</cc>
    
    <cc>gustavo</cc>
    
    <cc>janousek.jiri</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mike</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>realh69</cc>
    
    <cc>yoon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1070285</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Bayliss">christopher.j.bayliss</who>
    <bug_when>2015-02-18 16:59:10 -0800</bug_when>
    <thetext>Some sites do not display at HiDPI when using WebKit2GTK+. An example is https://duckduckgo.com/ It looks blurry on my HiDPI screen whereas https://google.com/ is fine.

The version of WebKit2GTK+ is 2.6.5 https://www.archlinux.org/packages/extra/x86_64/webkit2gtk/

It can be reproduced using GNOME Web (Epiphany) or my own test web-browser: https://github.com/cjbayliss/web-browser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070542</commentid>
    <comment_count>1</comment_count>
    <who name="Christopher Bayliss">christopher.j.bayliss</who>
    <bug_when>2015-02-19 15:31:41 -0800</bug_when>
    <thetext>Two more example sites that are blurry are youtube.com and plus.google.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084258</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-10 02:51:47 -0700</bug_when>
    <thetext>HiDPI depends on the GTK+ and cairo versions found when building. What version of GTK+ and cairo are you using?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084422</commentid>
    <comment_count>3</comment_count>
    <who name="Christopher Bayliss">christopher.j.bayliss</who>
    <bug_when>2015-04-10 17:15:56 -0700</bug_when>
    <thetext>I&apos;m now using Arch linux with GTK+ 3.16.1, Cario 1.14.2, and WebKit2GTK+ 2.8.0. I still have the same problem where some site are not HiDPI.

I had this problem on Fedora 21 too. (GTK+ 3.14.x, WebKit2GTK+ 2.6.x, and I don&apos;t know the Cario version.)

refs:
https://www.archlinux.org/packages/extra/x86_64/cairo/
https://www.archlinux.org/packages/extra/x86_64/gtk3/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087442</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-04-22 10:36:26 -0700</bug_when>
    <thetext>The 2.6.0 release notes say we have &quot;HighDPI support for non-accelerated compositing contents&quot; -- could that be the issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091439</commentid>
    <comment_count>5</comment_count>
    <who name="Jiří Janoušek">janousek.jiri</who>
    <bug_when>2015-05-04 11:00:39 -0700</bug_when>
    <thetext>Which version of Cairo is required for proper HiDPI support?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091448</commentid>
    <comment_count>6</comment_count>
    <who name="Matthew Gabeler-Lee">fastcat</who>
    <bug_when>2015-05-04 11:17:00 -0700</bug_when>
    <thetext>I&apos;ve noticed that some google sites (esp. the music player) initially start in HiDpi, and then drop down to &quot;blurry&quot; mode as the rest of the page starts to load.

On the other hand, arstechnica.com seems to stay in hidpi mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091703</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-04 23:01:30 -0700</bug_when>
    <thetext>It could be that HiDPI is not implemented in accelerated composited mode, so when switching to AC mode, we lose the HiDPI support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111601</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Gratton">mike</who>
    <bug_when>2015-07-22 23:45:47 -0700</bug_when>
    <thetext>Github is another example I&apos;ve noticed that can be initially crisp then degrading while still loading.

I&apos;m finding that with v2.8.3 the page load starts crisp, then presumably when switching to accelerated compositing the content area flashes with some random corruption, then repaints itself blurry.

(In reply to comment #5)
&gt; Which version of Cairo is required for proper HiDPI support?

Cairo 1.14 introduced support for device scaling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111602</commentid>
    <comment_count>9</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-07-22 23:55:51 -0700</bug_when>
    <thetext>
The reason for this problem 
is laking support of HiDPI from TextureMapper and TiledBackingStore.

It renders contents in to unscaled surface(x 1) and composite it via
scaled from (x 2) so the contents looks blurry.

Now I&apos;m trying to fix this because my new laptop has a HiDPI screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127239</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-09-18 14:31:20 -0700</bug_when>
    <thetext>Yoon, how did this development turn out? You sounded like you almost had a fix last month, but I guess ran into troubles?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127601</commentid>
    <comment_count>11</comment_count>
      <attachid>261640</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-21 01:40:40 -0700</bug_when>
    <thetext>Created attachment 261640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127605</commentid>
    <comment_count>12</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-21 01:51:38 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Yoon, how did this development turn out? You sounded like you almost had a
&gt; fix last month, but I guess ran into troubles?

After devoting amount of time, one problem left.
You can see ugly part in my patch at DrawingAreaImpl.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127856</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-09-21 17:30:05 -0700</bug_when>
    <thetext>Awesome, thanks Yoon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127968</commentid>
    <comment_count>14</comment_count>
      <attachid>261733</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-22 03:02:40 -0700</bug_when>
    <thetext>Created attachment 261733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127971</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-22 03:07:36 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129191</commentid>
    <comment_count>16</comment_count>
      <attachid>261733</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-29 02:58:03 -0700</bug_when>
    <thetext>Comment on attachment 261733
Patch

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

Thank you very much yoon. Patch works perfectly for me, I have only a few general questions/comments, since I&apos;m not graphics expert.

&gt; Source/WebCore/ChangeLog:11
&gt; +        to apply transforms currectly.

currectly -&gt; correctly.

&gt; Source/WebCore/ChangeLog:14
&gt; +        TextureMapperBackingStore, and GraphicsLayerTextureMapper do not handles

do not handles - does not handle

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:35
&gt; +    : m_contentsScale(1)
&gt; +    , m_isScaleDirty(false)
&gt; +    , m_isImage(false)

Move these initializations to the header

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:93
&gt; +    if (!m_isImage)

Could we just check if (m_image) ? and then we don&apos;t need the m_isImage member?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:173
&gt; +    m_isImage = !!m_image;

I don&apos;t get why we need m_isImage now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129286</commentid>
    <comment_count>17</comment_count>
      <attachid>261733</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-09-29 10:44:45 -0700</bug_when>
    <thetext>Comment on attachment 261733
Patch

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

Looks good to me, minus a few minor nits.

&gt; Source/WebCore/platform/graphics/texmap/BitmapTexture.h:72
&gt; +    virtual void updateContents(TextureMapper*, GraphicsLayer*, const IntRect&amp; target, const IntPoint&amp; offset, UpdateContentsFlag, float scale = 1.0f);

I think this can just be &quot;scale = 1&quot; here.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTile.h:43
&gt; +    void updateContents(TextureMapper*, GraphicsLayer*, const IntRect&amp;, BitmapTexture::UpdateContentsFlag UpdateCanModifyOriginalImageData, float scale = 1.0f);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129520</commentid>
    <comment_count>18</comment_count>
      <attachid>262143</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-30 00:05:54 -0700</bug_when>
    <thetext>Created attachment 262143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129523</commentid>
    <comment_count>19</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-30 00:22:15 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 261733 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261733&amp;action=review
&gt; 
&gt; Thank you very much yoon. Patch works perfectly for me, I have only a few
&gt; general questions/comments, since I&apos;m not graphics expert.
&gt; 

Nice!

&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        to apply transforms currectly.
&gt; 
&gt; currectly -&gt; correctly.
&gt; 

Thanks, I should enable a spell checker for my changelog editor.

&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        TextureMapperBackingStore, and GraphicsLayerTextureMapper do not handles
&gt; 
&gt; do not handles - does not handle
&gt;
Fixed.
 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:35
&gt; &gt; +    : m_contentsScale(1)
&gt; &gt; +    , m_isScaleDirty(false)
&gt; &gt; +    , m_isImage(false)
&gt; 
&gt; Move these initializations to the header
&gt;
Done.
 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:93
&gt; &gt; +    if (!m_isImage)
&gt; 
&gt; Could we just check if (m_image) ? and then we don&apos;t need the m_isImage
&gt; member?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:173
&gt; &gt; +    m_isImage = !!m_image;
&gt; 
&gt; I don&apos;t get why we need m_isImage now.

Nice catch. It was added to support seperated path for image uploading / and tile creations from my previous working set.
It is not needed for this patch anywhere.

It is Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129524</commentid>
    <comment_count>20</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-30 00:22:54 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 261733 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261733&amp;action=review
&gt; 
&gt; Looks good to me, minus a few minor nits.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTexture.h:72
&gt; &gt; +    virtual void updateContents(TextureMapper*, GraphicsLayer*, const IntRect&amp; target, const IntPoint&amp; offset, UpdateContentsFlag, float scale = 1.0f);
&gt; 
&gt; I think this can just be &quot;scale = 1&quot; here.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTile.h:43
&gt; &gt; +    void updateContents(TextureMapper*, GraphicsLayer*, const IntRect&amp;, BitmapTexture::UpdateContentsFlag UpdateCanModifyOriginalImageData, float scale = 1.0f);
&gt; 
&gt; Ditto.

Thanks, these are updated :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129528</commentid>
    <comment_count>21</comment_count>
      <attachid>262143</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-30 00:59:30 -0700</bug_when>
    <thetext>Comment on attachment 262143
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:166
&gt; +void TextureMapperTiledBackingStore::setContentsToImage(Image* image)
&gt; +{
&gt; +    m_image = image;
&gt;  }

We can leave this in the header, as it currently is.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.h:54
&gt; +    TextureMapperTiledBackingStore()
&gt; +        : m_contentsScale(1), m_isScaleDirty(false)
&gt; +    { }

This is not what I meant, see below.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.h:69
&gt; +    float m_contentsScale;
&gt; +    bool m_isScaleDirty;

float m_contentsScale { 1 };
bool m_isScaleDirty { false };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129533</commentid>
    <comment_count>22</comment_count>
      <attachid>262147</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-30 02:01:32 -0700</bug_when>
    <thetext>Created attachment 262147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129534</commentid>
    <comment_count>23</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-09-30 02:03:37 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Comment on attachment 262143 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262143&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:166
&gt; &gt; +void TextureMapperTiledBackingStore::setContentsToImage(Image* image)
&gt; &gt; +{
&gt; &gt; +    m_image = image;
&gt; &gt;  }
&gt; 
&gt; We can leave this in the header, as it currently is.
&gt;
Done.
 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.h:54
&gt; &gt; +    TextureMapperTiledBackingStore()
&gt; &gt; +        : m_contentsScale(1), m_isScaleDirty(false)
&gt; &gt; +    { }
&gt; 
&gt; This is not what I meant, see below.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.h:69
&gt; &gt; +    float m_contentsScale;
&gt; &gt; +    bool m_isScaleDirty;
&gt; 
&gt; float m_contentsScale { 1 };
&gt; bool m_isScaleDirty { false };

Ah, it looks like I&apos;m far behind. Modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129537</commentid>
    <comment_count>24</comment_count>
      <attachid>262147</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-30 02:56:24 -0700</bug_when>
    <thetext>Comment on attachment 262147
Patch

Clearing flags on attachment: 262147

Committed r190344: &lt;http://trac.webkit.org/changeset/190344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129557</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-09-30 06:06:10 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.h:69
&gt; &gt; +    float m_contentsScale;
&gt; &gt; +    bool m_isScaleDirty;
&gt; 
&gt; float m_contentsScale { 1 };
&gt; bool m_isScaleDirty { false };

You prefer this to 

float m_contentsScale = 1;
bool m_isScaleDirty = false;

? I know the C++ folks are saying to use bracket initialization everywhere to prevent narrowing, but we don&apos;t do that anywhere in WebKit and the style checker usually complains (I guess not in a header file, though).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129563</commentid>
    <comment_count>26</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-30 06:18:14 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #21)
&gt; &gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.h:69
&gt; &gt; &gt; +    float m_contentsScale;
&gt; &gt; &gt; +    bool m_isScaleDirty;
&gt; &gt; 
&gt; &gt; float m_contentsScale { 1 };
&gt; &gt; bool m_isScaleDirty { false };
&gt; 
&gt; You prefer this to 
&gt; 
&gt; float m_contentsScale = 1;
&gt; bool m_isScaleDirty = false;
&gt; 
&gt; ? I know the C++ folks are saying to use bracket initialization everywhere
&gt; to prevent narrowing, but we don&apos;t do that anywhere in WebKit and the style
&gt; checker usually complains (I guess not in a header file, though).

We use brackets everywhere in newly written WebKit code</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261640</attachid>
            <date>2015-09-21 01:40:40 -0700</date>
            <delta_ts>2015-09-22 03:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141782-20150921174023.patch</filename>
            <type>text/plain</type>
            <size>27263</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1ZmRjZjhmNjM4OWNj
MmVkMDgxOWI4MmM4NTg3YjllMDcxNzQyOC4uMjc0Yjg4MzFlNjg2MGViODg0NjJkNzRhY2Q3YWYy
OTRiMTFkMGYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA5LTIxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFN1cHBvcnQg
SGlEUEkgUHJvcGVybHkgaW4gV2ViS2l0R3RrKyB3aXRoIHRoZSBUZXh0dXJlTWFwcGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZp
eGVzIEhpRFBJIGlzc3VlIGluIHRoZSBUZXh0dXJlTWFwcGVyLgorICAgICAgICBUbyBzdXBwb3J0
IEhpRFBJIGluIHRoZSBUZXh0dXJlTWFwcGVyLCB3ZSBuZWVkIHRvIGRyYXcgc2NhbGVkIGNvbnRl
bnRzCisgICAgICAgIGluIHRoZSBUZXh0dXJlTWFwcGVyVGlsZSwgYW5kIGFwcGx5IHRoZSBnbG9i
YWwgc2NhbGUgaW4gdGhlIHJvb3QgbGF5ZXIKKyAgICAgICAgdG8gYXBwbHkgdHJhbnNmb3JtcyBj
dXJyZWN0bHkuCisKKyAgICAgICAgU3VwcG9ydGluZyB0aGUgZGV2aWNlIHNjYWxlIGlzIGhhbmRs
ZWQgYXQgVGV4dHVyZU1hcHBlckxheWVyIGFuZAorICAgICAgICBUZXh0dXJlTWFwcGVyQmFja2lu
Z1N0b3JlLCBhbmQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgZG8gbm90IGhhbmRsZXMKKyAg
ICAgICAgdGhlIGRldmljZSBzY2FsZSBkaXJlY3RseS4KKworICAgICAgICBGcm9tIHRoZSBUZXh0
dXJlTWFwcGVyTGF5ZXIsIGRldmljZVNjYWxlIGFuZCBwYWdlU2NhbGUgZG8gbm90IGhhdmUgdG8g
YmUKKyAgICAgICAgaGFuZGxlZCBkaWZmZXJlbnRseS4gVGhlc2UgYXJlIG11bHRpcGxpZWQgYW5k
IHByb3ZpZGVkIHRvCisgICAgICAgIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnQpOgorCisgICAgICAgICAg
ICBNb2RpZmllZCB0byBhcHBseSBzY2FsZSBvcGVyYXRpb24gYmVmb3JlIHRyYXZlcnNpbmcgY2hp
bGRyZW4gdG8gcmVkdWNlCisgICAgICAgICAgICBjb2RlIGNvbXBsZXhpdHkgdG8gbW9kaWZ5IGVh
Y2ggdHJhbnNmb3JtIG9wZXJhdGlvbnMgZm9yIGVhY2ggY2hpbGQuCisKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW4pOgorCisgICAgICAg
ICAgICBXZSBuZWVkIHRvIGFwcGx5IHNjYWxlIG1hdHJpeCBiZWZvcmUgYXBwbHlpbmcgb2Zmc2V0
IG9mIGNsaXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0
ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcDoKKworICAgICAgICAgICAgTW9kaWZpZWQgdG8gaW5j
cmVhc2UgdGhlIGNvdmVyIHJlY3QgZm9yIHRpbGVzIGNyZWF0aW9uLiBGb3IgdGhlIGltYWdlCisg
ICAgICAgICAgICBjb250ZW50cywgaXQganVzdCBjcmVhdGVzIHRleHR1cmUgd2l0aCBhIGltYWdl
IHNpemUsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgICAgICBjb250ZW50cyBzY2FsZS4KKwog
MjAxNS0wOS0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgTnVs
bCBkZXJlZmVyZW5jZSBsb2FkaW5nIEJsaW5rIGxheW91dCB0ZXN0IHN2Zy9maWx0ZXJzL2ZlSW1h
Z2UtZmFpbGVkLWxvYWQtY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGRkMDIzZGRkMDgxZjBhNGVk
NDFhYTllMTQ3ZGU2YjdjNzQxODM0YzIuLjNmZDU5MDAwZDA4Zjc5YWU0M2UwZmFhOTVlNzk5MGFj
YjIxZTc4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNS0wOS0yMSAgR3dhbmcg
WW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBTdXBwb3J0IEhp
RFBJIFByb3Blcmx5IGluIFdlYktpdEd0aysgd2l0aCB0aGUgVGV4dHVyZU1hcHBlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6CisKKyAgICAgICAgICAgIE1vZGlmaWVkIHRvIGNy
ZWF0ZSBzY2FsZWQgc2l6ZSBvZiB3aW5kb3cuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBs
OjpEcmF3aW5nQXJlYUltcGwpOgorCisgICAgICAgICAgICBXSVA6IFRoaXMgcGF0Y2ggaXMgc3Rp
bGwgd29ya2luZyBpbiBwcm9ncmVzcy4KKyAgICAgICAgICAgIFRoZXJlIGlzIGEgcmVhbGx5IHVn
bHkgY29kZSBpbiBEcmF3aW5nQXJlYUltcGwuY3BwOjg2CisgICAgICAgICAgICBJJ20gd29ya2lu
ZyBvbiB0byBhdm9pZCB0aGlzIGlzc3VlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dEd0azo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisKKyAgICAgICAgICAgIFdlIHNob3VsZCBh
cHBseSBkZXZpY2Ugc2NhbGUgZmFjdG9yIHRvIHRoZSByb290IGxheWVyIHRvIGFwcGx5CisgICAg
ICAgICAgICB0aGUgc2NhbGUgbWF0cml4IGJlZm9yZSBhcHBseWluZyBvdGhlciB0cmFuc2Zvcm0g
bWF0cmljZXMuCisKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlU2Nh
bGVGYWN0b3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6cGFn
ZVNjYWxlRmFjdG9yKTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmg6CisKIDIwMTUtMDktMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODk5
MDguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5jcHAKaW5kZXggNjhjZTMxM2UxZjBmNzQ3ZWFjZmY2ZGFhOTYwYmYw
NDgwZWQ2ZjJkYy4uZmU4YmE5YmQ3MzE4NDc0OWZlYTY5M2ZjZDg1NDlkNTk0MGNjNTUwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRh
dGVDb250ZW50c0ZsYWcpCit2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25z
dCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250
ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkKIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0
YXJnZXRSZWN0LnNpemUoKSk7CiAKQEAgLTQ2LDcgKzQ2LDEwIEBAIHZvaWQgQml0bWFwVGV4dHVy
ZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NM
YXllcioKIAogICAgIEludFJlY3Qgc291cmNlUmVjdCh0YXJnZXRSZWN0KTsKICAgICBzb3VyY2VS
ZWN0LnNldExvY2F0aW9uKG9mZnNldCk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUoLW9mZnNldC54
KCksIC1vZmZzZXQueSgpKTsKKyAgICBzb3VyY2VSZWN0LnNjYWxlKDEgLyBzY2FsZSk7CisgICAg
Y29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKHNjYWxlKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSk7CisKICAgICBzb3VyY2VMYXll
ci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgc291cmNlUmVjdCk7CiAKICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAppbmRleCA2NjI1ZjJmZjcwYzM4NDkwMmNjMjNjNDQ1
ZGU5NDk2ZmNkNzNkMmM3Li44MWFkMDczZWI3NzZlYThmMDU0MmQ5YjQwZDhhOWFiYjMyYWQ0OGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRl
bnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0
ZUNvbnRlbnRzRmxhZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3Qg
SW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZywg
ZmxvYXQgc2NhbGUgPSAxLjBmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29u
c3Qgdm9pZCosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwg
aW50IGJ5dGVzUGVyTGluZSwgVXBkYXRlQ29udGVudHNGbGFnKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAgICAgaW5saW5lIEZsYWdzIGZsYWdzKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFnczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKaW5kZXggZDUzNDcwNDRlODhjMDhlZGJhNGQ0NjA0NjlmM2Y5MDdhMDBiOWRjMS4uNGNl
Mzg1NWI0YWYzZWVmNjE2NjRmYzNlOWVmMmM3NGNhMGIwZWM1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zMDAsNiArMzAwLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkK
ICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29tcG9zaXRl
ZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKICAgICAg
ICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CisgICAgICAg
IG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZhY3Rvcigp
ICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9
IG51bGxwdHI7CkBAIC0zNDUsNiArMzQ2LDExIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAgICAgbm90aWZ5Q2hhbmdl
KERlYnVnVmlzdWFsc0NoYW5nZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCit7CisgICAgbm90aWZ5Q2hhbmdl
KENvbnRlbnRzU2NhbGVDaGFuZ2VkKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmIG9mZnNldCkKIHsKICAg
ICBpZiAob2Zmc2V0LmlzWmVybygpKQpAQCAtNDkzLDYgKzQ5OSw5IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAgICAgaWYgKG1fY2hhbmdl
TWFzayAmIENvbW1pdHRlZFNjcm9sbE9mZnNldENoYW5nZSkKICAgICAgICAgbV9sYXllci5kaWRD
b21taXRTY3JvbGxPZmZzZXQobV9jb21taXR0ZWRTY3JvbGxPZmZzZXQpOwogCisgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIENvbnRlbnRzU2NhbGVDaGFuZ2VkKQorICAgICAgICBtX2xheWVyLnNldENv
bnRlbnRzU2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZUZhY3RvcigpKTsKKwog
ICAgIG1fY2hhbmdlTWFzayA9IE5vQ2hhbmdlczsKIH0KIApAQCAtNTQ1LDcgKzU1NCw5IEBAIHZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVk
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250
ZW50c1NjYWxlKHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKKyAg
ICBkaXJ0eVJlY3Quc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcigp
KTsKICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMs
IG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5h
bEltYWdlRGF0YSk7CiAKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBmNTZjZjUxODU5Y2RjN2FiZDgwYzM2YTY5
YWZkMDZjMjg4YTM0YzMzLi42Y2MyZjI1NGJhMDEwMmFiYTM0M2YyYTk1ZDM4Mjk3MjFlNDdhNzdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtODMsNiArODMs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9y
JiwgZmxvYXQgd2lkdGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UmVwYWlu
dENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQYWdl
U2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hD
b21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KGJvb2wpIG92
ZXJyaWRlOwogCkBAIC0xNTgsNyArMTYwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgQW5pbWF0aW9u
U3RhcnRlZCA9ICAgICAgICAgICgxTCA8PCAyNyksCiAKICAgICAgICAgQ29tbWl0dGVkU2Nyb2xs
T2Zmc2V0Q2hhbmdlID0gICAgICgxTCA8PCAyOCksCi0gICAgICAgIElzU2Nyb2xsYWJsZUNoYW5n
ZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjkpCisgICAgICAgIElzU2Nyb2xsYWJsZUNoYW5nZSA9
ICAgICAgICAgICAgICAoMUwgPDwgMjkpLAorCisgICAgICAgIENvbnRlbnRzU2NhbGVDaGFuZ2Vk
ID0gICAgICAgICAgICAgICgxTCA8PCAzMCkKICAgICB9OwogICAgIHZvaWQgbm90aWZ5Q2hhbmdl
KENoYW5nZU1hc2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGU4MTIyZDlm
OGUwYjBkNjkxOWQwMGJkNWFjNjMxZjQ3Y2M3ODc4NzcuLjQ5MmNmYTMwYjNjY2VmNzliN2MyYzVh
MTcwZGM3NjMwODEzZmU2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC04MSw2
ICs4MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludCgpCiAgICAgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlciA9IG1f
dGV4dHVyZU1hcHBlcjsKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKDAp
OworICAgIG9wdGlvbnMudHJhbnNmb3JtLnNjYWxlKG1fY29udGVudHNTY2FsZSk7CiAgICAgcGFp
bnRSZWN1cnNpdmUob3B0aW9ucyk7CiB9CiAKQEAgLTE2OSw2ICsxNzAsNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYgbwogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IG1fc3RhdGUubWFza3NUb0JvdW5k
cyAmJiAhbV9zdGF0ZS5wcmVzZXJ2ZXMzRDsKICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjbGlwVHJhbnNmb3JtOworICAgICAgICBjbGlwVHJhbnNm
b3JtLnNjYWxlKG1fY29udGVudHNTY2FsZSk7CiAgICAgICAgIGNsaXBUcmFuc2Zvcm0udHJhbnNs
YXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsKICAg
ICAgICAgY2xpcFRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7CiAgICAgICAg
IGNsaXBUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpOwpA
QCAtNjM1LDYgKzYzNywxNCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0
b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYgogICAgIG1fYmFja2lu
Z1N0b3JlID0gYmFja2luZ1N0b3JlOwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKK3sKKyAgICBpZiAobV9jb250ZW50c1NjYWxlID09
IHNjYWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsK
K30KKwogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5p
bmdBbmltYXRpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV9hbmltYXRpb25zLmhhc1J1bm5pbmdB
bmltYXRpb25zKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggMGM5ZGE3MWJiMTk1Y2I0
ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMi4uMmUxM2VkZGRlYTI4NDYzZjFmODE5MGQxMmQwYmQx
ZTEyM2I1MzkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9zY3JvbGxDbGllbnQoMCkKICAgICAgICAgLCBtX2lzU2Nyb2xs
YWJsZShmYWxzZSkKICAgICAgICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm1EaXJ0eShmYWxzZSkKKyAg
ICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJMYXllcigpOwpAQCAtMTE4LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0
IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUo
UGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRDb250
ZW50c1NjYWxlKGZsb2F0KTsKIAogICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29s
IGRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CkBAIC0yNTks
NiArMjYxLDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9hY2N1bXVsYXRlZFNjcm9sbE9m
ZnNldEZyYWN0aW9uYWxQYXJ0OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcGF0dGVyblRy
YW5zZm9ybTsKICAgICBib29sIG1fcGF0dGVyblRyYW5zZm9ybURpcnR5OworICAgIGZsb2F0IG1f
Y29udGVudHNTY2FsZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCmluZGV4IGU2
ZjNmZTgwZWU2ODIyYmMwYTQ1MDZmNzA3ZjUxOTc4ZTQ2NTZhYTIuLjFiYjBhNGYyNGFmZmY4NDRl
ODZkNDdkMWRjNWViZDljZDI1MDUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcApAQCAt
NTAsNyArNTAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZwogICAgIG1fdGV4dHVyZS0+dXBk
YXRlQ29udGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVu
dHNGbGFnKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IHVwZGF0ZUNvbnRlbnRzRmxhZykKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxh
eWVyLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRl
bnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcsIGZsb2F0IHNjYWxlKQogewogICAgIEludFJlY3Qg
dGFyZ2V0UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobV9yZWN0KTsKICAgICB0YXJnZXRSZWN0Lmlu
dGVyc2VjdChkaXJ0eVJlY3QpOwpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJU
aWxlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGlj
c0xheQogICAgICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCBCaXRtYXBU
ZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsKICAgICB9CiAKLSAgICBtX3RleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZz
ZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0
ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRh
dGVDb250ZW50c0ZsYWcsIHNjYWxlKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2Vz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA3ZTIyMTJlNTI1ZjQyZjU1ZGVhODE3YWVhMDli
ZDk1MjVkYTM0ZDcxLi44OWVmMzJiZGM5MTk0YWFkNTFhZTk4N2VjMmE0Zjk1ZWIzOTMzNWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgaW5s
aW5lIHZvaWQgc2V0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsg
fQogCiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25z
dCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1v
ZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAg
dm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0
IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9k
aWZ5T3JpZ2luYWxJbWFnZURhdGEsIGZsb2F0IHNjYWxlID0gMS4wZik7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0LCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOwogICAgIHZpcnR1YWwgflRleHR1cmVN
YXBwZXJUaWxlKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggMzYyNWMxNDg2NDMxZDQ0NWEyYTk5MTMyMGVmNTEwMWY0NWZlMTZl
ZS4uMjFmZDI2YWZlOGZiOWFkNDQzODZkODYwZjM0OTc4OTRjMjQyZjI4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NMYXllcjsKIAogVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKQor
ICAgIDogbV9jb250ZW50c1NjYWxlKDEpCisgICAgLCBtX2lzU2NhbGVEaXJ0eShmYWxzZSkKKyAg
ICAsIG1faXNJbWFnZShmYWxzZSkKIHsKIH0KIApAQCAtNjksMTIgKzcyLDI2IEBAIHZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hCiAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdOdW1iZXIocmVwYWlu
dENvdW50LCBib3JkZXJDb2xvciwgdGlsZS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFu
c2Zvcm0pOwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRl
Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKK3sKKyAgICBpZiAobV9jb250ZW50c1NjYWxlID09
IHNjYWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzU2NhbGVEaXJ0eSA9IHRydWU7Cisg
ICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFzQWxwaGEpCiB7Ci0gICAg
aWYgKHNpemUgPT0gbV9zaXplKQorICAgIGlmIChzaXplID09IG1fc2l6ZSAmJiAhbV9pc1NjYWxl
RGlydHkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9pc1Nj
YWxlRGlydHkgPSBmYWxzZTsKKworICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplKG1fc2l6ZSk7Cisg
ICAgaWYgKCFtX2lzSW1hZ2UpCisgICAgICAgIHNjYWxlZFNpemUuc2NhbGUobV9jb250ZW50c1Nj
YWxlKTsKIAogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHRpbGVSZWN0c1RvQWRkOwogICAgIFZlY3Rv
cjxpbnQ+IHRpbGVJbmRpY2VzVG9SZW1vdmU7CkBAIC04Miw4ICs5OSw4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNv
bnN0IEZsb2F0U2l6CiAKICAgICAvLyBUaGlzIG1ldGhvZCByZWN5Y2xlcyB0aWxlcy4gV2UgY2hl
Y2sgd2hpY2ggdGlsZXMgd2UgbmVlZCB0byBhZGQsIHdoaWNoIHRvIHJlbW92ZSwgYW5kIHVzZSBh
cyBtYW55CiAgICAgLy8gcmVtb3ZhYmxlIHRpbGVzIGFzIHJlcGxhY2VtZW50IGZvciBuZXcgdGls
ZXMgd2hlbiBwb3NzaWJsZS4KLSAgICBmb3IgKGZsb2F0IHkgPSAwOyB5IDwgbV9zaXplLmhlaWdo
dCgpOyB5ICs9IHRpbGVTaXplLmhlaWdodCgpKSB7Ci0gICAgICAgIGZvciAoZmxvYXQgeCA9IDA7
IHggPCBtX3NpemUud2lkdGgoKTsgeCArPSB0aWxlU2l6ZS53aWR0aCgpKSB7CisgICAgZm9yIChm
bG9hdCB5ID0gMDsgeSA8IHNjYWxlZFNpemUuaGVpZ2h0KCk7IHkgKz0gdGlsZVNpemUuaGVpZ2h0
KCkpIHsKKyAgICAgICAgZm9yIChmbG9hdCB4ID0gMDsgeCA8IHNjYWxlZFNpemUud2lkdGgoKTsg
eCArPSB0aWxlU2l6ZS53aWR0aCgpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdGlsZVJlY3Qo
eCwgeSwgdGlsZVNpemUud2lkdGgoKSwgdGlsZVNpemUuaGVpZ2h0KCkpOwogICAgICAgICAgICAg
dGlsZVJlY3QuaW50ZXJzZWN0KHJlY3QoKSk7CiAgICAgICAgICAgICB0aWxlUmVjdHNUb0FkZC5h
cHBlbmQodGlsZVJlY3QpOwpAQCAtMTQ3LDcgKzE2NCwxMyBAQCB2b2lkIFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlcgogewogICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxTaXplLCB0ZXh0
dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLCB0cnVlKTsKICAgICBmb3IgKGF1dG8mIHRpbGUg
OiBtX3RpbGVzKQotICAgICAgICB0aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNv
dXJjZUxheWVyLCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgICAgIHRpbGUu
dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBk
YXRlQ29udGVudHNGbGFnLCBtX2NvbnRlbnRzU2NhbGUpOworfQorCit2b2lkIFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKK3sK
KyAgICBtX2ltYWdlID0gaW1hZ2U7CisgICAgbV9pc0ltYWdlID0gISFtX2ltYWdlOwogfQogCiBS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0
dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
aAppbmRleCA0ZjNjY2U4OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwLi45MDhkMjFm
ZmY2OGQwNzhmYjU1OGNlNTljNzViMGZiYzIwNjgxOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00MSwyMSArNDEsMzEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291
bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOworCisg
ICAgdm9pZCB1cGRhdGVDb250ZW50c1NjYWxlKGZsb2F0KTsKICAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJl
Y3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogICAgIHZvaWQgdXBkYXRl
Q29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKIAot
ICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBtX2ltYWdlID0gaW1h
Z2U7IH0KKyAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwogCiBwcml2YXRlOgog
ICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQgY3JlYXRlT3JE
ZXN0cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGJhY2tpbmdTdG9yZVNpemUsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBib29sIGhhc0FscGhhKTsKICAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzRnJvbUltYWdlSWZOZWVkZWQoVGV4dHVyZU1hcHBlciopOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAg
ICBpbmxpbmUgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQ
b2ludDo6emVybygpLCBtX3NpemUpOyB9CisgICAgaW5saW5lIEZsb2F0UmVjdCByZWN0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9z
aXplKTsKKyAgICAgICAgcmVjdC5zY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgICAgICByZXR1
cm4gcmVjdDsKKyAgICB9CiAKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7
CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CisgICAg
ZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIGJvb2wgbV9pc1NjYWxlRGlydHk7CisgICAgYm9v
bCBtX2lzSW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5k
ZXggOGJkODNjNGVmMDA2NTI0MGI4YjZhMDQ3N2M2ZDNhYjYxZjdlYzA3MC4uNjg3OTM0YWM3YmMy
ZmM2MjQxMWQ3ZmMxMGJkYmM2YWE0NGJmYjBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNDg3LDYgKzQ4
Nyw3IEBAIHN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdSZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSoKICAgICBpZiAoIXByaXYtPnJlZGlyZWN0ZWRX
aW5kb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5k
b3ctPnNldERldmljZVNjYWxlRmFjdG9yKHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShk
cmF3aW5nQXJlYS0+c2l6ZSgpKTsKIAogICAgIGlmIChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Ug
PSBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5zdXJmYWNlKCkpIHsKQEAgLTEwNjMsNiArMTA2NCwx
MCBAQCBXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAjaWYgSEFWRShHVEtfU0NBTEVfRkFDVE9SKQogc3Rh
dGljIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSkKIHsKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
KyAgICBpZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCisgICAg
ICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5yZWRpcmVjdGVkV2luZG93LT5zZXREZXZpY2VT
Y2FsZUZhY3Rvcih3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5kZXZpY2VTY2Fs
ZUZhY3RvcigpKTsKKyNlbmRpZgogICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJv
eHktPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGd0a193aWRnZXRfZ2V0X3NjYWxlX2Zh
Y3RvcihHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSkpOwogfQogI2VuZGlmIC8vIEhBVkUo
R1RLX1NDQUxFX0ZBQ1RPUikKQEAgLTEzMzksNiArMTM0NCw3IEBAIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXCiAgICAgaWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuOwogCisgICAgcHJp
di0+cmVkaXJlY3RlZFdpbmRvdy0+c2V0RGV2aWNlU2NhbGVGYWN0b3Iod2Via2l0V2ViVmlld0Jh
c2UtPnByaXYtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgcHJpdi0+cmVk
aXJlY3RlZFdpbmRvdy0+cmVzaXplKGRyYXdpbmdBcmVhLT5zaXplKCkpOwogICAgIC8vIEZvcmNl
IGEgcmVzaXplIHRvIGVuc3VyZSB0aGUgbmV3IHJlZGlyZWN0ZWQgd2luZG93IHNpemUgaXMgdXNl
ZCBieSB0aGUgV2ViUHJvY2Vzcy4KICAgICBkcmF3aW5nQXJlYS0+Zm9yY2VSZXNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5jcHAKaW5kZXggMjE1NjJjZGJiOWViMmJhN2U5OGU5ODZjNTczYzIzYjY4
YmExMmU0Yy4uMWI0OTY4ZGU4MjRlNWJhOTI3OGM3MmY2ODFhN2E1NDYxZmYzYmQ5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShSRURJUkVDVEVE
X1hDT01QT1NJVEVfV0lORE9XKQogCisjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+CiAjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+CkBAIC0xMzgs
NiArMTM5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKEcKIFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhHZGtXaW5kb3cqIHBhcmVudFdpbmRv
dywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSkKICAgICA6IG1fZGlzcGxheShH
REtfRElTUExBWV9YRElTUExBWShnZGtfd2luZG93X2dldF9kaXNwbGF5KHBhcmVudFdpbmRvdykp
KQogICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQorICAgICwgbV9kZXZp
Y2VTY2FsZSgxKQogewogICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSA9PSBtX2Rpc3BsYXkpOwog
ICAgIFNjcmVlbiogc2NyZWVuID0gRGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOwpA
QCAtMjExLDE0ICsyMTMsMTcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdygpCiAKIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGlmIChzaXplID09IG1fc2l6ZSkK
KyAgICBJbnRTaXplIHNjYWxlZFNpemUoc2l6ZSk7CisgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2Rl
dmljZVNjYWxlKTsKKworICAgIGlmIChzY2FsZWRTaXplID09IG1fc2l6ZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gUmVzaXplIHRoZSB3aW5kb3cgdG8gYXQgbGFzdCAxeDEgc2luY2UgWCBk
b2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5kb3dzLgotICAgIFhSZXNpemVXaW5kb3co
bV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgc3RkOjptYXgoMSwgc2l6ZS53aWR0aCgpKSwgc3Rk
OjptYXgoMSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIFhSZXNpemVXaW5kb3cobV9kaXNwbGF5LCBt
X3dpbmRvdy5nZXQoKSwgc3RkOjptYXgoMSwgc2NhbGVkU2l6ZS53aWR0aCgpKSwgc3RkOjptYXgo
MSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgIFhGbHVzaChtX2Rpc3BsYXkpOwogCi0gICAg
bV9zaXplID0gc2l6ZTsKKyAgICBtX3NpemUgPSBzY2FsZWRTaXplOwogICAgIG1fbmVlZHNOZXdQ
aXhtYXBBZnRlclJlc2l6ZSA9IHRydWU7CiAgICAgaWYgKG1fc2l6ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7CkBAIC0yNTYsNiArMjYxLDcgQEAg
Y2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSgpCiAg
ICAgfQogCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAuZ2V0KCksIHdp
bmRvd0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7
CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUobmV3U3VyZmFjZS5nZXQoKSwgbV9kZXZp
Y2VTY2FsZSwgbV9kZXZpY2VTY2FsZSk7CiAKICAgICAvLyBOdmlkaWEgZHJpdmVycyBzZWVtIHRv
IHByZXBhcmUgdGhlaXIgcmVkaXJlY3RlZCB3aW5kb3cgcGl4bWFwIGFzeW5jaHJvbm91c2x5LCBz
byBmb3IgYSBmZXcgZnJhY3Rpb25zCiAgICAgLy8gb2YgYSBzZWNvbmQgYWZ0ZXIgZWFjaCByZXNp
emUsIHdoaWxlIGRvaW5nIGNvbnRpbnVvdXMgcmVzaXppbmcgKHdoaWNoIGNvbnN0YW50bHkgZGVz
dHJveXMgYW5kIGNyZWF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCA4OGE3ZTA4YjFhMDVlNGQz
M2RkNTQ5MzYyNTFkNzY1MzljMTRjNmVhLi5iZmMyYTE0ZDA5NGE4ZDY1ZDkzNGU4MGYwMjM5ZGMw
OGIyYmVhY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoK
IAogICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9
CiAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZvaWQgc2V0
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUpIHsgbV9kZXZpY2VTY2FsZSA9IHNjYWxlOyB9
CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKCk7CiAKIHByaXZhdGU6CkBAIC02MSw2ICs2
Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKICAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CiAgICAgYm9vbCBtX25lZWRzTmV3
UGl4bWFwQWZ0ZXJSZXNpemU7CisgICAgZmxvYXQgbV9kZXZpY2VTY2FsZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA1MTM5ZDlkYmMzZTQzZTk0NWYxNTA0M2Q4
OTU0OTNkYmU2MjIxN2QwLi4zY2M2MmY4MDFkYTZmNmQ3ZmIzYjRjMGNkY2YxZGUwZjQxODNkMmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWFJbXBsLmNwcApAQCAtNzgsNiArNzgsMTIgQEAgRHJhd2luZ0FyZWFJbXBsOjpEcmF3aW5n
QXJlYUltcGwoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGUK
IAogICAgIGlmIChtX2Fsd2F5c1VzZUNvbXBvc2l0aW5nKQogICAgICAgICBlbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKDApOworCisgICAgLy8gV2UgTmVlZCBUbyBJbml0aWFsaXplIExh
eWVyVHJlZUhvc3RHdGsgdG8gc3VwcG9ydCBIaURQSSBDdXJyZWN0bHkuCisgICAgLy8gSWYgd2Ug
ZGlkbid0IGludGlhbGl6ZSBMYXllclRyZWVIb3N0R3RrIGF0IHRoaXMgcG9pbnQsIG9ubHkgcXVh
dGVyIG9mCisgICAgLy8gd2VidmlldyB3b3VsZCBiZSBkcmF3bi4KKyAgICAvLyBJIGRvbid0IGtu
b3cgd2h5IGF0IHRoaXMgcG9pbnQsIEknbSBpbnZlc3RpZ2F0aW5nIG5vdy4KKyAgICBlbnRlckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKDApOwogfQogCiB2b2lkIERyYXdpbmdBcmVhSW1wbDo6
c2V0TmVlZHNEaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IGMxMDgxYTEwY2FkMzQ0
MTFjNTA2NTU2OGY1MTUzOTgzYjJiZmExNGIuLjczYjcxN2YwNmViNTA0ZDZhN2E3NWVmNjI2NmE0
MDc0OWIxZDE2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZv
aWQgTGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXpl
KQogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQo
KQogewogICAgIC8vIE90aGVyIGxheWVycyBsZWFybiBvZiB0aGUgc2NhbGUgZmFjdG9yIGNoYW5n
ZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IuCi0gICAgbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICBtX3Jv
b3RMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTGF5
ZXJUcmVlSG9zdEd0azo6Zm9yY2VSZXBhaW50KCkKQEAgLTIxOCw2ICsyMTgsMTYgQEAgdm9pZCBM
YXllclRyZWVIb3N0R3RrOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIEdyYXBoaWMKICAgICAgICAgbV93ZWJQYWdlLT5kcmF3UmVjdChncmFwaGljc0Nv
bnRleHQsIGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKIH0KIAorZmxvYXQgTGF5ZXJUcmVl
SG9zdEd0azo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBh
Z2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Cit9CisKK2Zsb2F0IExheWVyVHJlZUhvc3RHdGs6OnBh
Z2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+cGFnZVNjYWxl
RmFjdG9yKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTa2lwTmV4dEZyYW1lQmVj
YXVzZU9mQ29udGlub3VzSW1tZWRpYXRlRmx1c2hlcyhkb3VibGUgY3VycmVudCwgZG91YmxlIGxh
c3RJbW1lZGlhdGVGbHVzaFRpbWUpCiB7CiAgICAgLy8gMTAwbXMgaXMgYWJvdXQgYSBwZXJjZXB0
YWJsZSBkZWxheSBpbiBVSSwgc28gd2hlbiBzY2hlZHVsaW5nIGxheWVyIGZsdXNoZXMgaW1tZWRp
YXRlbHkgZm9yIG1vcmUgdGhhbiAxMDBtcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggZDBhY2Q4NGZm
OGQ4YzAzODFhNWNkODZhNzZlNThiZTc0MmU2NjA2ZS4uOWYwYzRiMjljZTJlYWY0YWZjYzhjMjc2
MTdiNDkwZDE4NzFjN2I0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAgLTc1LDYgKzc1LDggQEAgcHJp
dmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGZsb2F0IHBh
Z2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXMoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261733</attachid>
            <date>2015-09-22 03:02:40 -0700</date>
            <delta_ts>2015-09-30 00:05:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141782-20150922190223.patch</filename>
            <type>text/plain</type>
            <size>23115</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ5NmFiNzhkNDg4OWVh
NmEzN2U5YTU1MGZmNzQxY2IyMTZkNzlmZi4uZDI1NGE4OWQyNmMzMzcwNWI3YWI4NDIyNDE4MjU0
ODg3Y2NjM2YwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDE1LTA5LTIxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFN1cHBvcnQg
SGlEUEkgUHJvcGVybHkgaW4gV2ViS2l0R3RrKyB3aXRoIHRoZSBUZXh0dXJlTWFwcGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZp
eGVzIEhpRFBJIGlzc3VlIGluIHRoZSBUZXh0dXJlTWFwcGVyLgorICAgICAgICBUbyBzdXBwb3J0
IEhpRFBJIGluIHRoZSBUZXh0dXJlTWFwcGVyLCB3ZSBuZWVkIHRvIGRyYXcgc2NhbGVkIGNvbnRl
bnRzCisgICAgICAgIGluIHRoZSBUZXh0dXJlTWFwcGVyVGlsZSwgYW5kIGFwcGx5IHRoZSBnbG9i
YWwgc2NhbGUgaW4gdGhlIHJvb3QgbGF5ZXIKKyAgICAgICAgdG8gYXBwbHkgdHJhbnNmb3JtcyBj
dXJyZWN0bHkuCisKKyAgICAgICAgU3VwcG9ydGluZyB0aGUgZGV2aWNlIHNjYWxlIGlzIGhhbmRs
ZWQgYXQgTGF5ZXJUcmVlSG9zdEd0ayBhbmQKKyAgICAgICAgVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZSwgYW5kIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGRvIG5vdCBoYW5kbGVzCisgICAg
ICAgIHRoZSBkZXZpY2Ugc2NhbGUgZGlyZWN0bHkuCisKKyAgICAgICAgRnJvbSB0aGUgVGV4dHVy
ZU1hcHBlckxheWVyLCBkZXZpY2VTY2FsZSBhbmQgcGFnZVNjYWxlIGRvIG5vdCBoYXZlIHRvIGJl
CisgICAgICAgIGhhbmRsZWQgZGlmZmVyZW50bHkuIFRoZXNlIGFyZSBtdWx0aXBsaWVkIGFuZCBw
cm92aWRlZCB0bworICAgICAgICBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZS5jcHA6CisKKyAgICAgICAgICAgIE1vZGlmaWVkIHRvIGluY3JlYXNlIHRoZSBjb3ZlciByZWN0
IGZvciB0aWxlcyBjcmVhdGlvbi4gRm9yIHRoZSBpbWFnZQorICAgICAgICAgICAgY29udGVudHMs
IGl0IGp1c3QgY3JlYXRlcyB0ZXh0dXJlIHdpdGggYSBpbWFnZSBzaXplLCByZWdhcmRsZXNzIG9m
IHRoZQorICAgICAgICAgICAgY29udGVudHMgc2NhbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyk6CisKKyAgICAgICAgICAgIEFwcGx5IHRoZSBkZXZp
Y2Ugc2NhbGUgdG8gdGhlIGdyYXBoaWNzIGNvbnRleHQgYmVmb3JlIHBhaW50aW5nIGNvbnRlbnRz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKworICAgICAgICAg
ICAgQXBwbHkgdGhlIGRldmljZSBzY2FsZSBhbmQgdGhlIHBhZ2Ugc2NhbGUgdG8gdGhlIGJhY2tp
bmcgc3RvcmUKKworMjAxNS0wOS0yMSAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNv
bT4KKwogICAgICAgICBbVGhyZWFkZWQgQ29tcG9zaXRvcl0gTW9kaWZpZWQgdG8gdXNlIHJlZmVy
ZW5jZSBvZiBHcmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBwb2ludGVyCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkzOTkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDUzM2FiMzYxNzIzN2QxNTQ5ZmIyZGMxNGQzZGZmOTZlYjBlYzE2N2MuLjlhNzUzNzFhNDBhODRm
YmM2MmE2ODExYTY2YmQyMmYwNmUzYjZjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNyBAQAog
MjAxNS0wOS0yMSAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAorICAgICAg
ICBbR1RLXSBTdXBwb3J0IEhpRFBJIFByb3Blcmx5IGluIFdlYktpdEd0aysgd2l0aCB0aGUgVGV4
dHVyZU1hcHBlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQxNzgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6CisKKyAgICAgICAg
ICAgIE1vZGlmaWVkIHRvIGNyZWF0ZSBzY2FsZWQgc2l6ZSBvZiB3aW5kb3cuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKworICAg
ICAgICAgICAgV2Ugc2hvdWxkIGFwcGx5IGRldmljZSBzY2FsZSBmYWN0b3IgdG8gdGhlIHJvb3Qg
bGF5ZXIgdG8gYXBwbHkKKyAgICAgICAgICAgIHRoZSBzY2FsZSBtYXRyaXggYmVmb3JlIGFwcGx5
aW5nIG90aGVyIHRyYW5zZm9ybSBtYXRyaWNlcy4KKworICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0R3RrOjpkZXZpY2VTY2FsZUZhY3Rvcik6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0R3RrOjpwYWdlU2NhbGVGYWN0b3IpOiBBZGRlZC4KKworMjAxNS0wOS0yMSAg
R3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KKwogICAgICAgICBbVGhyZWFkZWQg
Q29tcG9zaXRvcl0gTW9kaWZpZWQgdG8gdXNlIHJlZmVyZW5jZSBvZiBHcmFwaGljc0NvbnRleHQg
aW5zdGVhZCBvZiBwb2ludGVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDkzOTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCmluZGV4IDY4Y2UzMTNlMWYwZjc0
N2VhY2ZmNmRhYTk2MGJmMDQ4MGVkNmYyZGMuLmZlOGJhOWJkNzMxODQ3NDlmZWE2OTNmY2Q4NTQ5
ZDU5NDBjYzU1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVD
b250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQordm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRh
dGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBz
b3VyY2VMYXllciwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIG9m
ZnNldCwgVXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUp
CiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCkpOwogCkBAIC00Niw3ICs0NiwxMCBAQCB2
b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIEdyYXBoaWNzTGF5ZXIqCiAKICAgICBJbnRSZWN0IHNvdXJjZVJlY3QodGFyZ2V0UmVj
dCk7CiAgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihvZmZzZXQpOwotICAgIGNvbnRleHQudHJh
bnNsYXRlKC1vZmZzZXQueCgpLCAtb2Zmc2V0LnkoKSk7CisgICAgc291cmNlUmVjdC5zY2FsZSgx
IC8gc2NhbGUpOworICAgIGNvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihzY2FsZSk7Cisg
ICAgY29udGV4dC50cmFuc2xhdGUoLXNvdXJjZVJlY3QueCgpLCAtc291cmNlUmVjdC55KCkpOwor
CiAgICAgc291cmNlTGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIHNv
dXJjZVJlY3QpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKaW5kZXggNjYyNWYyZmY3
MGMzODQ5MDJjYzIzYzQ0NWRlOTQ5NmZjZDczZDJjNy4uODFhZDA3M2ViNzc2ZWE4ZjA1NDJkOWI0
MGQ4YTlhYmIzMmFkNDhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0
JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xh
eWVyKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRh
dGVDb250ZW50c0ZsYWcsIGZsb2F0IHNjYWxlID0gMS4wZik7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IElu
dFBvaW50JiBvZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAgIGlubGluZSBGbGFn
cyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGQ1MzQ3MDQ0ZTg4YzA4ZWRiYTRkNDYwNDY5ZjNm
OTA3YTAwYjlkYzEuLjUwMWQyYTg5ZTllODdhZTBmZDU1MjJhYzQ4Nzc3MDk2YzNlYzBjZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzAwLDYgKzMw
MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFn
ZShJbWFnZSogaW1hZ2UpCiAgICAgICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAgICAg
ICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
Y3JlYXRlKCk7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1hZ2Uo
aW1hZ2UpOworICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2FsZShw
YWdlU2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKICAgICAgICAgbV9j
b21wb3NpdGVkSW1hZ2UgPSBudWxscHRyOwpAQCAtNTQ1LDcgKzU0Niw5IEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2Jh
Y2tpbmdTdG9yZS5nZXQoKSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50c1NjYWxl
KHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKKyAgICBkaXJ0eVJl
Y3Quc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBi
YWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwg
ZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0
YSk7CiAKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5j
cHAKaW5kZXggZTZmM2ZlODBlZTY4MjJiYzBhNDUwNmY3MDdmNTE5NzhlNDY1NmFhMi4uMWJiMGE0
ZjI0YWZmZjg0NGU4NmQ0N2QxZGM1ZWJkOWNkMjUwNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNv
bnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnCiAgICAgbV90
ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZSwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1
cGRhdGVDb250ZW50c0ZsYWcpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3Vy
Y2VMYXllciwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVD
b250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6
dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXll
ciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCiB7CiAg
ICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JlY3QpOwogICAgIHRh
cmdldFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIEdyYXBoaWNzTGF5CiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXpl
KCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAotICAgIG1fdGV4dHVy
ZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIHRhcmdldFJlY3Qs
IHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICBtX3RleHR1cmUtPnVwZGF0
ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VP
ZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZywgc2NhbGUpOwogfQogCiB2b2lkIFRleHR1cmVNYXBw
ZXJUaWxlOjpwYWludChUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25zdCB1bnNpZ25lZCBl
eHBvc2VkRWRnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCmluZGV4IDdlMjIxMmU1MjVmNDJmNTVk
ZWE4MTdhZWEwOWJkOTUyNWRhMzRkNzEuLjg5ZWYzMmJkYzkxOTRhYWQ1MWFlOTg3ZWMyYTRmOTVl
YjM5MzM1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX3Jl
Y3QgPSByZWN0OyB9CiAKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJ
bWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcg
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHZvaWQgdXBkYXRlQ29udGVu
dHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VE
YXRhKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xh
eWVyKiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBV
cGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSwgZmxvYXQgc2NhbGUgPSAxLjBmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlclRpbGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzNjI1YzE0ODY0MzFkNDQ1YTJhOTkxMzIwZWY1
MTAxZjQ1ZmUxNmVlLi4yMWZkMjZhZmU4ZmI5YWQ0NDM4NmQ4NjBmMzQ5Nzg5NGMyNDJmMjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAt
MzAsNiArMzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0xheWVyOwog
CiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZSgpCisgICAgOiBtX2NvbnRlbnRzU2NhbGUoMSkKKyAgICAsIG1faXNTY2FsZURpcnR5
KGZhbHNlKQorICAgICwgbV9pc0ltYWdlKGZhbHNlKQogewogfQogCkBAIC02OSwxMiArNzIsMjYg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWEKICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd051
bWJlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCB0aWxlLnJlY3QoKS5sb2NhdGlvbigpLCBh
ZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQoreworICAgIGlmIChtX2NvbnRl
bnRzU2NhbGUgPT0gc2NhbGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNTY2FsZURpcnR5
ID0gdHJ1ZTsKKyAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKK30KKwogdm9pZCBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBo
YSkKIHsKLSAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCisgICAgaWYgKHNpemUgPT0gbV9zaXplICYm
ICFtX2lzU2NhbGVEaXJ0eSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gc2l6ZTsK
KyAgICBtX2lzU2NhbGVEaXJ0eSA9IGZhbHNlOworCisgICAgRmxvYXRTaXplIHNjYWxlZFNpemUo
bV9zaXplKTsKKyAgICBpZiAoIW1faXNJbWFnZSkKKyAgICAgICAgc2NhbGVkU2l6ZS5zY2FsZSht
X2NvbnRlbnRzU2NhbGUpOwogCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gdGlsZVJlY3RzVG9BZGQ7
CiAgICAgVmVjdG9yPGludD4gdGlsZUluZGljZXNUb1JlbW92ZTsKQEAgLTgyLDggKzk5LDggQEAg
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZU9yRGVzdHJveVRpbGVz
SWZOZWVkZWQoY29uc3QgRmxvYXRTaXoKIAogICAgIC8vIFRoaXMgbWV0aG9kIHJlY3ljbGVzIHRp
bGVzLiBXZSBjaGVjayB3aGljaCB0aWxlcyB3ZSBuZWVkIHRvIGFkZCwgd2hpY2ggdG8gcmVtb3Zl
LCBhbmQgdXNlIGFzIG1hbnkKICAgICAvLyByZW1vdmFibGUgdGlsZXMgYXMgcmVwbGFjZW1lbnQg
Zm9yIG5ldyB0aWxlcyB3aGVuIHBvc3NpYmxlLgotICAgIGZvciAoZmxvYXQgeSA9IDA7IHkgPCBt
X3NpemUuaGVpZ2h0KCk7IHkgKz0gdGlsZVNpemUuaGVpZ2h0KCkpIHsKLSAgICAgICAgZm9yIChm
bG9hdCB4ID0gMDsgeCA8IG1fc2l6ZS53aWR0aCgpOyB4ICs9IHRpbGVTaXplLndpZHRoKCkpIHsK
KyAgICBmb3IgKGZsb2F0IHkgPSAwOyB5IDwgc2NhbGVkU2l6ZS5oZWlnaHQoKTsgeSArPSB0aWxl
U2l6ZS5oZWlnaHQoKSkgeworICAgICAgICBmb3IgKGZsb2F0IHggPSAwOyB4IDwgc2NhbGVkU2l6
ZS53aWR0aCgpOyB4ICs9IHRpbGVTaXplLndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVj
dCB0aWxlUmVjdCh4LCB5LCB0aWxlU2l6ZS53aWR0aCgpLCB0aWxlU2l6ZS5oZWlnaHQoKSk7CiAg
ICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QocmVjdCgpKTsKICAgICAgICAgICAgIHRpbGVS
ZWN0c1RvQWRkLmFwcGVuZCh0aWxlUmVjdCk7CkBAIC0xNDcsNyArMTY0LDEzIEBAIHZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyCiB7CiAgICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3Rh
bFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksIHRydWUpOwogICAgIGZvciAo
YXV0byYgdGlsZSA6IG1fdGlsZXMpCi0gICAgICAgIHRpbGUudXBkYXRlQ29udGVudHModGV4dHVy
ZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNGbGFnKTsKKyAg
ICAgICAgdGlsZS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGly
dHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcsIG1fY29udGVudHNTY2FsZSk7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2Uq
IGltYWdlKQoreworICAgIG1faW1hZ2UgPSBpbWFnZTsKKyAgICBtX2lzSW1hZ2UgPSAhIW1faW1h
Z2U7CiB9CiAKIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmU6OnRleHR1cmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZS5oCmluZGV4IDRmM2NjZTg4Y2FiZGZkMjQ0NDY4MWQ1YTdmYzEyMmJlYmMzNGFk
YjAuLjkwOGQyMWZmZjY4ZDA3OGZiNTU4Y2U1OWM3NWIwZmJjMjA2ODE4ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTQxLDIxICs0MSwzMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBD
b2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2NhbGUoZmxvYXQpOwogICAgIHZvaWQg
dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAgICAg
dm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50
c0ZsYWcpOwogCi0gICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKSB7IG1f
aW1hZ2UgPSBpbWFnZTsgfQorICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKik7CiAK
IHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCk7CiAgICAgdm9p
ZCBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgYmFja2luZ1N0
b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFzQWxwaGEpOwogICAgIHZv
aWQgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZChUZXh0dXJlTWFwcGVyKik7CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpOwotICAgIGlubGluZSBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7IH0KKyAgICBpbmxpbmUgRmxvYXRSZWN0
IHJlY3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludDo6
emVybygpLCBtX3NpemUpOworICAgICAgICByZWN0LnNjYWxlKG1fY29udGVudHNTY2FsZSk7Cisg
ICAgICAgIHJldHVybiByZWN0OworICAgIH0KIAogICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyVGls
ZT4gbV90aWxlczsKICAgICBGbG9hdFNpemUgbV9zaXplOwogICAgIFJlZlB0cjxJbWFnZT4gbV9p
bWFnZTsKKyAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgYm9vbCBtX2lzU2NhbGVEaXJ0
eTsKKyAgICBib29sIG1faXNJbWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCA4YmQ4M2M0ZWYwMDY1MjQwYjhiNmEwNDc3YzZkM2FiNjFmN2VjMDcwLi42
ODc5MzRhYzdiYzJmYzYyNDExZDdmYzEwYmRiYzZhYTQ0YmZiMGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBA
IC00ODcsNiArNDg3LDcgQEAgc3RhdGljIGJvb2wgd2Via2l0V2ViVmlld1JlbmRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKgogICAgIGlmICghcHJpdi0+
cmVkaXJlY3RlZFdpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgcHJpdi0+cmVk
aXJlY3RlZFdpbmRvdy0+c2V0RGV2aWNlU2NhbGVGYWN0b3Iod2ViVmlld0Jhc2UtPnByaXYtPnBh
Z2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRv
dy0+cmVzaXplKGRyYXdpbmdBcmVhLT5zaXplKCkpOwogCiAgICAgaWYgKGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSA9IHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnN1cmZhY2UoKSkgewpAQCAtMTA2
Myw2ICsxMDY0LDEwIEBAIFdlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICNpZiBIQVZFKEdUS19TQ0FMRV9G
QUNUT1IpCiBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogeworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+cmVkaXJlY3RlZFdp
bmRvdykKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnJlZGlyZWN0ZWRXaW5kb3ct
PnNldERldmljZVNjYWxlRmFjdG9yKHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHkt
PmRldmljZVNjYWxlRmFjdG9yKCkpOworI2VuZGlmCiAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnBy
aXYtPnBhZ2VQcm94eS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZ3RrX3dpZGdldF9n
ZXRfc2NhbGVfZmFjdG9yKEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpKSk7CiB9CiAjZW5k
aWYgLy8gSEFWRShHVEtfU0NBTEVfRkFDVE9SKQpAQCAtMTMzOSw2ICsxMzQ0LDcgQEAgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFcKICAgICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm47
CiAKKyAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5zZXREZXZpY2VTY2FsZUZhY3Rvcih3ZWJr
aXRXZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAg
ICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5yZXNpemUoZHJhd2luZ0FyZWEtPnNpemUoKSk7CiAg
ICAgLy8gRm9yY2UgYSByZXNpemUgdG8gZW5zdXJlIHRoZSBuZXcgcmVkaXJlY3RlZCB3aW5kb3cg
c2l6ZSBpcyB1c2VkIGJ5IHRoZSBXZWJQcm9jZXNzLgogICAgIGRyYXdpbmdBcmVhLT5mb3JjZVJl
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAppbmRleCAyMTU2MmNkYmI5ZWIyYmE3ZTk4ZTk4
NmM1NzNjMjNiNjhiYTEyZTRjLi4xYjQ5NjhkZTgyNGU1YmE5Mjc4YzcyZjY4MWE3YTU0NjFmZjNi
ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJv
VXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KICNp
bmNsdWRlIDxYMTEvWGxpYi5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUu
aD4KQEAgLTEzOCw2ICsxMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3c+IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUoRwogUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdka1dpbmRvdyog
cGFyZW50V2luZG93LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KQogICAgIDog
bV9kaXNwbGF5KEdES19ESVNQTEFZX1hESVNQTEFZKGdka193aW5kb3dfZ2V0X2Rpc3BsYXkocGFy
ZW50V2luZG93KSkpCiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCisg
ICAgLCBtX2RldmljZVNjYWxlKDEpCiB7CiAgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlz
cGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IG1f
ZGlzcGxheSk7CiAgICAgU2NyZWVuKiBzY3JlZW4gPSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KG1f
ZGlzcGxheSk7CkBAIC0yMTEsMTQgKzIxMywxNyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKIAogdm9pZCBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKHNpemUg
PT0gbV9zaXplKQorICAgIEludFNpemUgc2NhbGVkU2l6ZShzaXplKTsKKyAgICBzY2FsZWRTaXpl
LnNjYWxlKG1fZGV2aWNlU2NhbGUpOworCisgICAgaWYgKHNjYWxlZFNpemUgPT0gbV9zaXplKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBSZXNpemUgdGhlIHdpbmRvdyB0byBhdCBsYXN0IDF4
MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0gICAgWFJl
c2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBzdGQ6Om1heCgxLCBzaXplLndp
ZHRoKCkpLCBzdGQ6Om1heCgxLCBzaXplLmhlaWdodCgpKSk7CisgICAgWFJlc2l6ZVdpbmRvdyht
X2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBzdGQ6Om1heCgxLCBzY2FsZWRTaXplLndpZHRoKCkp
LCBzdGQ6Om1heCgxLCBzY2FsZWRTaXplLmhlaWdodCgpKSk7CiAgICAgWEZsdXNoKG1fZGlzcGxh
eSk7CiAKLSAgICBtX3NpemUgPSBzaXplOworICAgIG1fc2l6ZSA9IHNjYWxlZFNpemU7CiAgICAg
bV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplID0gdHJ1ZTsKICAgICBpZiAobV9zaXplLmlzRW1w
dHkoKSkKICAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKQEAgLTI1Niw2
ICsyNjEsNyBAQCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpz
dXJmYWNlKCkKICAgICB9CiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuZXdTdXJmYWNl
ID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX2Rpc3BsYXksIG5ld1BpeG1h
cC5nZXQoKSwgd2luZG93QXR0cmlidXRlcy52aXN1YWwsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCkpKTsKKyAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShuZXdTdXJmYWNlLmdl
dCgpLCBtX2RldmljZVNjYWxlLCBtX2RldmljZVNjYWxlKTsKIAogICAgIC8vIE52aWRpYSBkcml2
ZXJzIHNlZW0gdG8gcHJlcGFyZSB0aGVpciByZWRpcmVjdGVkIHdpbmRvdyBwaXhtYXAgYXN5bmNo
cm9ub3VzbHksIHNvIGZvciBhIGZldyBmcmFjdGlvbnMKICAgICAvLyBvZiBhIHNlY29uZCBhZnRl
ciBlYWNoIHJlc2l6ZSwgd2hpbGUgZG9pbmcgY29udGludW91cyByZXNpemluZyAod2hpY2ggY29u
c3RhbnRseSBkZXN0cm95cyBhbmQgY3JlYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCmluZGV4IDg4YTdl
MDhiMWEwNWU0ZDMzZGQ1NDkzNjI1MWQ3NjUzOWMxNGM2ZWEuLmJmYzJhMTRkMDk0YThkNjVkOTM0
ZTgwZjAyMzlkYzA4YjJiZWFjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKQEAgLTQ3LDYgKzQ3LDcg
QEAgcHVibGljOgogCiAgICAgV2luZG93IHdpbmRvd0lEKCkgY29uc3QgeyByZXR1cm4gbV93aW5k
b3cuZ2V0KCk7IH0KICAgICB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Cisg
ICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSkgeyBtX2RldmljZVNjYWxl
ID0gc2NhbGU7IH0KICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UoKTsKIAogcHJpdmF0ZToK
QEAgLTYxLDYgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpYVW5pcXVlRGFtYWdlIG1f
ZGFtYWdlOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICAgICBib29s
IG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZTsKKyAgICBmbG9hdCBtX2RldmljZVNjYWxlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCBjMTA4
MWExMGNhZDM0NDExYzUwNjU1NjhmNTE1Mzk4M2IyYmZhMTRiLi42OWVmNmFiYWE2YjZlNTZjZTY0
MThiYTFjMDRiZjFiZTdlOTdkMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTk4LDYgKzk4
LDExIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW5pdGlhbGl6ZSgpCiAgICAgbV9yb290TGF5
ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldFNpemUobV93
ZWJQYWdlLT5zaXplKCkpOwogCisgICAgbV9zY2FsZU1hdHJpeC5tYWtlSWRlbnRpdHkoKTsKKyAg
ICBtX3NjYWxlTWF0cml4LnNjYWxlKG1fd2ViUGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSAqIG1f
d2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyPigqbV9yb290TGF5ZXIpLmxheWVyKCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludDNEKCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPigqbV9y
b290TGF5ZXIpLmxheWVyKCkuc2V0VHJhbnNmb3JtKG1fc2NhbGVNYXRyaXgpOworCiAgICAgLy8g
VGhlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnRzIGFyZSBhIGNoaWxkIG9mIHRoZSByb290IGxheWVy
LgogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0
ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CkBAIC0yMDUsNiArMjEwLDEwIEBAIHZv
aWQgTGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsK
ICAgICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2YgdGhlIHNjYWxlIGZhY3RvciBjaGFuZ2Ugdmlh
IFdlYlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yLgogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisKKyAgICBtX3NjYWxl
TWF0cml4Lm1ha2VJZGVudGl0eSgpOworICAgIG1fc2NhbGVNYXRyaXguc2NhbGUobV93ZWJQYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpICogbV93ZWJQYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7Cisg
ICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikubGF5
ZXIoKS5zZXRUcmFuc2Zvcm0obV9zY2FsZU1hdHJpeCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9z
dEd0azo6Zm9yY2VSZXBhaW50KCkKQEAgLTIxOCw2ICsyMjcsMTYgQEAgdm9pZCBMYXllclRyZWVI
b3N0R3RrOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIs
IEdyYXBoaWMKICAgICAgICAgbV93ZWJQYWdlLT5kcmF3UmVjdChncmFwaGljc0NvbnRleHQsIGVu
Y2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKIH0KIAorZmxvYXQgTGF5ZXJUcmVlSG9zdEd0azo6
ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UtPmRldmlj
ZVNjYWxlRmFjdG9yKCk7Cit9CisKK2Zsb2F0IExheWVyVHJlZUhvc3RHdGs6OnBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7
Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29u
dGlub3VzSW1tZWRpYXRlRmx1c2hlcyhkb3VibGUgY3VycmVudCwgZG91YmxlIGxhc3RJbW1lZGlh
dGVGbHVzaFRpbWUpCiB7CiAgICAgLy8gMTAwbXMgaXMgYWJvdXQgYSBwZXJjZXB0YWJsZSBkZWxh
eSBpbiBVSSwgc28gd2hlbiBzY2hlZHVsaW5nIGxheWVyIGZsdXNoZXMgaW1tZWRpYXRlbHkgZm9y
IG1vcmUgdGhhbiAxMDBtcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggZDBhY2Q4NGZmOGQ4YzAzODFh
NWNkODZhNzZlNThiZTc0MmU2NjA2ZS4uOWM2N2E2N2RhYzg3ZDc0YjcxNTFmNWY1NzMzMDdiNjUw
NThhMGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3Vy
Y2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw2ICs3Niw4IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBmbG9hdCBwYWdlU2NhbGVG
YWN0b3IoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzKCk7CiAKQEAgLTk5LDYgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZDsKICAgICBHTWFpbkxvb3BTb3VyY2UgbV9sYXllckZsdXNoVGlt
ZXJDYWxsYmFjazsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3ZpZXdPdmVybGF5Um9v
dExheWVyOworICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NhbGVNYXRyaXg7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262143</attachid>
            <date>2015-09-30 00:05:54 -0700</date>
            <delta_ts>2015-09-30 00:59:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141782-20150930160529.patch</filename>
            <type>text/plain</type>
            <size>23078</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZjZmJlMzA5NzAzYjZl
MDkxNDY2ZGQxNTY3YmE0MjliMjQ1MDA4Ny4uNjhhMjQxZThjOTYzOTg4NzMyYzc5YTJjMjFlN2Vj
Yzc3NmQ0ZWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA5LTIxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFN1cHBvcnQg
SGlEUEkgUHJvcGVybHkgaW4gV2ViS2l0R3RrKyB3aXRoIHRoZSBUZXh0dXJlTWFwcGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZp
eGVzIEhpRFBJIGlzc3VlIGluIHRoZSBUZXh0dXJlTWFwcGVyLgorICAgICAgICBUbyBzdXBwb3J0
IEhpRFBJIGluIHRoZSBUZXh0dXJlTWFwcGVyLCB3ZSBuZWVkIHRvIGRyYXcgc2NhbGVkIGNvbnRl
bnRzCisgICAgICAgIGluIHRoZSBUZXh0dXJlTWFwcGVyVGlsZSwgYW5kIGFwcGx5IHRoZSBnbG9i
YWwgc2NhbGUgaW4gdGhlIHJvb3QgbGF5ZXIKKyAgICAgICAgdG8gYXBwbHkgdHJhbnNmb3JtcyBj
b3JyZWN0bHkuCisKKyAgICAgICAgU3VwcG9ydGluZyB0aGUgZGV2aWNlIHNjYWxlIGlzIGhhbmRs
ZWQgYXQgTGF5ZXJUcmVlSG9zdEd0ayBhbmQKKyAgICAgICAgVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZSwgYW5kIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGRvZXNuJ3QgaGFuZGxlCisgICAg
ICAgIHRoZSBkZXZpY2Ugc2NhbGUgZGlyZWN0bHkuCisKKyAgICAgICAgRnJvbSB0aGUgVGV4dHVy
ZU1hcHBlckxheWVyLCBkZXZpY2VTY2FsZSBhbmQgcGFnZVNjYWxlIGRvIG5vdCBoYXZlIHRvIGJl
CisgICAgICAgIGhhbmRsZWQgZGlmZmVyZW50bHkuIFRoZXNlIGFyZSBtdWx0aXBsaWVkIGFuZCBw
cm92aWRlZCB0bworICAgICAgICBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZS5jcHA6CisKKyAgICAgICAgICAgIE1vZGlmaWVkIHRvIGluY3JlYXNlIHRoZSBjb3ZlciByZWN0
IGZvciB0aWxlcyBjcmVhdGlvbi4gRm9yIHRoZSBpbWFnZQorICAgICAgICAgICAgY29udGVudHMs
IGl0IGp1c3QgY3JlYXRlcyB0ZXh0dXJlIHdpdGggYSBpbWFnZSBzaXplLCByZWdhcmRsZXNzIG9m
IHRoZQorICAgICAgICAgICAgY29udGVudHMgc2NhbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyk6CisKKyAgICAgICAgICAgIEFwcGx5IHRoZSBkZXZp
Y2Ugc2NhbGUgdG8gdGhlIGdyYXBoaWNzIGNvbnRleHQgYmVmb3JlIHBhaW50aW5nIGNvbnRlbnRz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKworICAgICAgICAg
ICAgQXBwbHkgdGhlIGRldmljZSBzY2FsZSBhbmQgdGhlIHBhZ2Ugc2NhbGUgdG8gdGhlIGJhY2tp
bmcgc3RvcmUKKwogMjAxNS0wOS0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBXZWJLaXQyIEFzeW5jVGFzayB0byBXZWJDb3JlIENyb3NzVGhyZWFk
VGFzay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBiMDM4MzNmNjMwOWE5MzlkMjY4NDVjNjdlYzQyYzM0NDA0NjM2
NWFmLi45NWE5OWFhM2JkZTA0YjZkZjlkNjY1ZmQ0OTIyYmU3NTQyODkxYjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDktMjEgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU3VwcG9ydCBIaURQSSBQcm9wZXJseSBpbiBXZWJL
aXRHdGsrIHdpdGggdGhlIFRleHR1cmVNYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuY3BwOgorCisgICAgICAgICAgICBNb2RpZmllZCB0byBjcmVhdGUgc2NhbGVkIHNpemUgb2Yg
d2luZG93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCk6CisKKyAgICAgICAgICAgIFdlIHNob3VsZCBhcHBseSBkZXZpY2Ugc2NhbGUg
ZmFjdG9yIHRvIHRoZSByb290IGxheWVyIHRvIGFwcGx5CisgICAgICAgICAgICB0aGUgc2NhbGUg
bWF0cml4IGJlZm9yZSBhcHBseWluZyBvdGhlciB0cmFuc2Zvcm0gbWF0cmljZXMuCisKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlU2NhbGVGYWN0b3IpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6cGFnZVNjYWxlRmFjdG9yKTogQWRk
ZWQuCisKIDIwMTUtMDktMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgV2ViS2l0MiBBc3luY1Rhc2sgdG8gV2ViQ29yZSBDcm9zc1RocmVhZFRhc2su
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZS5jcHAKaW5kZXggYTQ3MDg5ZjA3OTUyY2NkMTc1M2M3NjIxZDUyNmI3NTE3
NjcwMTVjMi4uZjk5ZTljMTM0MzA0M2Q2NjQ5ZGI0ZGRmNTA4NTcwOTk2MWE2MjU3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVD
b250ZW50c0ZsYWcpCit2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50
c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkKIHsKICAgICAvLyBNYWtpbmcg
YW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVz
ZSB0aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNw
ZWN0IHRoZSBhY2NlbGVyYXRlZCBiaXQuCkBAIC00OCw3ICs0OCwxMCBAQCB2b2lkIEJpdG1hcFRl
eHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBo
aWNzTGF5ZXIqCiAKICAgICBJbnRSZWN0IHNvdXJjZVJlY3QodGFyZ2V0UmVjdCk7CiAgICAgc291
cmNlUmVjdC5zZXRMb2NhdGlvbihvZmZzZXQpOwotICAgIGNvbnRleHQudHJhbnNsYXRlKC1vZmZz
ZXQueCgpLCAtb2Zmc2V0LnkoKSk7CisgICAgc291cmNlUmVjdC5zY2FsZSgxIC8gc2NhbGUpOwor
ICAgIGNvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihzY2FsZSk7CisgICAgY29udGV4dC50
cmFuc2xhdGUoLXNvdXJjZVJlY3QueCgpLCAtc291cmNlUmVjdC55KCkpOworCiAgICAgc291cmNl
TGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIHNvdXJjZVJlY3QpOwog
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKaW5kZXggNjYyNWYyZmY3MGMzODQ5MDJjYzIz
YzQ0NWRlOTQ5NmZjZDczZDJjNy4uN2Q2MTcyZTM1N2E3ZjdhNzhhOWRiMGRjZWI3NWRlMjY4MWE1
ZGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBV
cGRhdGVDb250ZW50c0ZsYWcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNv
bnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0Zs
YWcsIGZsb2F0IHNjYWxlID0gMSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNv
bnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQs
IGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAgIGlubGluZSBGbGFncyBmbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCmluZGV4IGQ1MzQ3MDQ0ZTg4YzA4ZWRiYTRkNDYwNDY5ZjNmOTA3YTAwYjlkYzEuLjUw
MWQyYTg5ZTllODdhZTBmZDU1MjJhYzQ4Nzc3MDk2YzNlYzBjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzAwLDYgKzMwMCw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2Up
CiAgICAgICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAgICAgICAgICBtX2NvbXBvc2l0
ZWRJbWFnZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CiAgICAg
ICAgIG1fY29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOworICAgICAg
ICBtX2NvbXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2FsZShwYWdlU2NhbGVGYWN0b3Io
KSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fY29tcG9z
aXRlZE5hdGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2Ug
PSBudWxscHRyOwpAQCAtNTQ1LDcgKzU0Niw5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNf
Y2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQo
KSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZhY3Rv
cigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKKyAgICBkaXJ0eVJlY3Quc2NhbGUocGFnZVNj
YWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBiYWNraW5nU3RvcmUtPnVw
ZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRt
YXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAKICAgICBtX25l
ZWRzRGlzcGxheSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAKaW5kZXggZTZmM2Zl
ODBlZTY4MjJiYzBhNDUwNmY3MDdmNTE5NzhlNDY1NmFhMi4uMWJiMGE0ZjI0YWZmZjg0NGU4NmQ0
N2QxZGM1ZWJkOWNkMjUwNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCkBAIC01MCw3
ICs1MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnCiAgICAgbV90ZXh0dXJlLT51cGRhdGVD
b250ZW50cyhpbWFnZSwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRhdGVDb250ZW50c0Zs
YWcpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBk
YXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNG
bGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCiB7CiAgICAgSW50UmVjdCB0YXJn
ZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JlY3QpOwogICAgIHRhcmdldFJlY3QuaW50ZXJz
ZWN0KGRpcnR5UmVjdCk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6
OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5
CiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAotICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVu
dHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwg
dXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1
cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNv
bnRlbnRzRmxhZywgc2NhbGUpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjpwYWludChU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyVGlsZS5oCmluZGV4IDdlMjIxMmU1MjVmNDJmNTVkZWE4MTdhZWEwOWJkOTUy
NWRhMzRkNzEuLjc5ZDczZWViMmVlM2JjOWY5OGZiMmYyNTg5NzJhYTBlNmZhY2RjN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUg
dm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CiAK
ICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IElu
dFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5
T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBl
ciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRl
Q29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50
UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2RpZnlP
cmlnaW5hbEltYWdlRGF0YSwgZmxvYXQgc2NhbGUgPSAxKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNv
bnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRp
bGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmNwcAppbmRleCAzNjI1YzE0ODY0MzFkNDQ1YTJhOTkxMzIwZWY1MTAxZjQ1ZmUxNmVlLi5kMzgz
MTU5ODdlYzM0MGU0NjU5ODAxMDdlNWY0YjNlOTIwMDYwZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMjksMTAgKzI5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xheWVyOwogCi1UZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpCi17Ci19
Ci0KIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50c0Zy
b21JbWFnZUlmTmVlZGVkKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7CiAgICAgaWYg
KCFtX2ltYWdlKQpAQCAtNjksMTIgKzY1LDI2IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hCiAg
ICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdOdW1iZXIocmVwYWludENvdW50LCBib3JkZXJDb2xv
ciwgdGlsZS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCit2b2lk
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHNTY2FsZShmbG9h
dCBzY2FsZSkKK3sKKyAgICBpZiAobV9jb250ZW50c1NjYWxlID09IHNjYWxlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2lzU2NhbGVEaXJ0eSA9IHRydWU7CisgICAgbV9jb250ZW50c1NjYWxl
ID0gc2NhbGU7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVh
dGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFzQWxwaGEpCiB7Ci0gICAgaWYgKHNpemUgPT0gbV9zaXpl
KQorICAgIGlmIChzaXplID09IG1fc2l6ZSAmJiAhbV9pc1NjYWxlRGlydHkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9pc1NjYWxlRGlydHkgPSBmYWxzZTsK
KworICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplKG1fc2l6ZSk7CisgICAgaWYgKCFtX2ltYWdlKQor
ICAgICAgICBzY2FsZWRTaXplLnNjYWxlKG1fY29udGVudHNTY2FsZSk7CiAKICAgICBWZWN0b3I8
RmxvYXRSZWN0PiB0aWxlUmVjdHNUb0FkZDsKICAgICBWZWN0b3I8aW50PiB0aWxlSW5kaWNlc1Rv
UmVtb3ZlOwpAQCAtODIsOCArOTIsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6Y3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFNpegogCiAgICAg
Ly8gVGhpcyBtZXRob2QgcmVjeWNsZXMgdGlsZXMuIFdlIGNoZWNrIHdoaWNoIHRpbGVzIHdlIG5l
ZWQgdG8gYWRkLCB3aGljaCB0byByZW1vdmUsIGFuZCB1c2UgYXMgbWFueQogICAgIC8vIHJlbW92
YWJsZSB0aWxlcyBhcyByZXBsYWNlbWVudCBmb3IgbmV3IHRpbGVzIHdoZW4gcG9zc2libGUuCi0g
ICAgZm9yIChmbG9hdCB5ID0gMDsgeSA8IG1fc2l6ZS5oZWlnaHQoKTsgeSArPSB0aWxlU2l6ZS5o
ZWlnaHQoKSkgewotICAgICAgICBmb3IgKGZsb2F0IHggPSAwOyB4IDwgbV9zaXplLndpZHRoKCk7
IHggKz0gdGlsZVNpemUud2lkdGgoKSkgeworICAgIGZvciAoZmxvYXQgeSA9IDA7IHkgPCBzY2Fs
ZWRTaXplLmhlaWdodCgpOyB5ICs9IHRpbGVTaXplLmhlaWdodCgpKSB7CisgICAgICAgIGZvciAo
ZmxvYXQgeCA9IDA7IHggPCBzY2FsZWRTaXplLndpZHRoKCk7IHggKz0gdGlsZVNpemUud2lkdGgo
KSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHRpbGVSZWN0KHgsIHksIHRpbGVTaXplLndpZHRo
KCksIHRpbGVTaXplLmhlaWdodCgpKTsKICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChy
ZWN0KCkpOwogICAgICAgICAgICAgdGlsZVJlY3RzVG9BZGQuYXBwZW5kKHRpbGVSZWN0KTsKQEAg
LTE0Nyw3ICsxNTcsMTIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKIHsKICAgICBjcmVhdGVP
ckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVy
ZVNpemUoKSwgdHJ1ZSk7CiAgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcykKLSAgICAgICAg
dGlsZS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0
LCB1cGRhdGVDb250ZW50c0ZsYWcpOworICAgICAgICB0aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1
cmVNYXBwZXIsIHNvdXJjZUxheWVyLCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxhZywgbV9j
b250ZW50c1NjYWxlKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCit7CisgICAgbV9pbWFnZSA9IGltYWdl
OwogfQogCiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjp0ZXh0dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUuaAppbmRleCA0ZjNjY2U4OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIw
Li42MTdjZjY4OTdjODU2OWI4Yzg1MTVhZDYyNjE5MjNkOTliYTVjOWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00MSwyMSArNDEsMzIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29s
b3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJy
aWRlOworCisgICAgdm9pZCB1cGRhdGVDb250ZW50c1NjYWxlKGZsb2F0KTsKICAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogICAgIHZv
aWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNG
bGFnKTsKIAotICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBtX2lt
YWdlID0gaW1hZ2U7IH0KKyAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwogCiBw
cml2YXRlOgotICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpOworICAgIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpCisgICAgICAgIDogbV9jb250ZW50c1NjYWxlKDEp
LCBtX2lzU2NhbGVEaXJ0eShmYWxzZSkKKyAgICB7IH0KICAgICB2b2lkIGNyZWF0ZU9yRGVzdHJv
eVRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBoYSk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50
c0Zyb21JbWFnZUlmTmVlZGVkKFRleHR1cmVNYXBwZXIqKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgaW5s
aW5lIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgbV9zaXplKTsgfQorICAgIGlubGluZSBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7
CisgICAgICAgIHJlY3Quc2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICAgICAgcmV0dXJuIHJl
Y3Q7CisgICAgfQogCiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlPiBtX3RpbGVzOwogICAg
IEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOworICAgIGZsb2F0
IG1fY29udGVudHNTY2FsZTsKKyAgICBib29sIG1faXNTY2FsZURpcnR5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDhiZDgzYzRlZjAwNjUyNDBiOGI2YTA0
NzdjNmQzYWI2MWY3ZWMwNzAuLjY4NzkzNGFjN2JjMmZjNjI0MTFkN2ZjMTBiZGJjNmFhNDRiZmIw
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBzdGF0aWMgYm9vbCB3ZWJraXRX
ZWJWaWV3UmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jh
c2UqCiAgICAgaWYgKCFwcml2LT5yZWRpcmVjdGVkV2luZG93KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5zZXREZXZpY2VTY2FsZUZhY3Rvcih3
ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBw
cml2LT5yZWRpcmVjdGVkV2luZG93LT5yZXNpemUoZHJhd2luZ0FyZWEtPnNpemUoKSk7CiAKICAg
ICBpZiAoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+
c3VyZmFjZSgpKSB7CkBAIC0xMDYzLDYgKzEwNjQsMTAgQEAgV2ViUGFnZVByb3h5KiB3ZWJraXRX
ZWJWaWV3QmFzZUdldFBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQog
I2lmIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKIHN0YXRpYyB2b2lkIGRldmljZVNjYWxlRmFjdG9y
Q2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7CisjaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKHdlYmtpdFdlYlZpZXdCYXNl
LT5wcml2LT5yZWRpcmVjdGVkV2luZG93KQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJp
di0+cmVkaXJlY3RlZFdpbmRvdy0+c2V0RGV2aWNlU2NhbGVGYWN0b3Iod2Via2l0V2ViVmlld0Jh
c2UtPnByaXYtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisjZW5kaWYKICAgICB3
ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5zZXRJbnRyaW5zaWNEZXZpY2VTY2Fs
ZUZhY3RvcihndGtfd2lkZ2V0X2dldF9zY2FsZV9mYWN0b3IoR1RLX1dJREdFVCh3ZWJraXRXZWJW
aWV3QmFzZSkpKTsKIH0KICNlbmRpZiAvLyBIQVZFKEdUS19TQ0FMRV9GQUNUT1IpCkBAIC0xMzM5
LDYgKzEzNDQsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0VwogICAgIGlmICghZHJhd2luZ0Fy
ZWEpCiAgICAgICAgIHJldHVybjsKIAorICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnNldERl
dmljZVNjYWxlRmFjdG9yKHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRldmlj
ZVNjYWxlRmFjdG9yKCkpOwogICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShkcmF3
aW5nQXJlYS0+c2l6ZSgpKTsKICAgICAvLyBGb3JjZSBhIHJlc2l6ZSB0byBlbnN1cmUgdGhlIG5l
dyByZWRpcmVjdGVkIHdpbmRvdyBzaXplIGlzIHVzZWQgYnkgdGhlIFdlYlByb2Nlc3MuCiAgICAg
ZHJhd2luZ0FyZWEtPmZvcmNlUmVzaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmluZGV4IDIx
NTYyY2RiYjllYjJiYTdlOThlOTg2YzU3M2MyM2I2OGJhMTJlNGMuLjFiNDk2OGRlODI0ZTViYTky
NzhjNzJmNjgxYTdhNTQ2MWZmM2JkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKIAorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheVgxMS5oPgogI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDExL2V4
dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgpAQCAtMTM4LDYgKzEzOSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
OmNyZWF0ZShHCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBk
YW1hZ2VOb3RpZnkpCiAgICAgOiBtX2Rpc3BsYXkoR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX3dp
bmRvd19nZXRfZGlzcGxheShwYXJlbnRXaW5kb3cpKSkKICAgICAsIG1fbmVlZHNOZXdQaXhtYXBB
ZnRlclJlc2l6ZShmYWxzZSkKKyAgICAsIG1fZGV2aWNlU2NhbGUoMSkKIHsKICAgICBBU1NFUlQo
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkubmF0aXZlKCkgPT0gbV9kaXNwbGF5KTsKICAgICBTY3JlZW4qIHNjcmVlbiA9IERlZmF1
bHRTY3JlZW5PZkRpc3BsYXkobV9kaXNwbGF5KTsKQEAgLTIxMSwxNCArMjEzLDE3IEBAIFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQogCiB2
b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKLSAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCisgICAgSW50U2l6ZSBzY2FsZWRTaXplKHNp
emUpOworICAgIHNjYWxlZFNpemUuc2NhbGUobV9kZXZpY2VTY2FsZSk7CisKKyAgICBpZiAoc2Nh
bGVkU2l6ZSA9PSBtX3NpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJlc2l6ZSB0aGUg
d2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1w
dHkgd2luZG93cy4KLSAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCks
IHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUuaGVpZ2h0KCkpKTsK
KyAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIHN0ZDo6bWF4KDEs
IHNjYWxlZFNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNjYWxlZFNpemUuaGVpZ2h0KCkpKTsK
ICAgICBYRmx1c2gobV9kaXNwbGF5KTsKIAotICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9zaXpl
ID0gc2NhbGVkU2l6ZTsKICAgICBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUgPSB0cnVlOwog
ICAgIGlmIChtX3NpemUuaXNFbXB0eSgpKQogICAgICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFw
U3VyZmFjZSgpOwpAQCAtMjU2LDYgKzI2MSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UoKQogICAgIH0KIAogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRl
KG1fZGlzcGxheSwgbmV3UGl4bWFwLmdldCgpLCB3aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERldmlj
ZVNjYWxlKG5ld1N1cmZhY2UuZ2V0KCksIG1fZGV2aWNlU2NhbGUsIG1fZGV2aWNlU2NhbGUpOwog
CiAgICAgLy8gTnZpZGlhIGRyaXZlcnMgc2VlbSB0byBwcmVwYXJlIHRoZWlyIHJlZGlyZWN0ZWQg
d2luZG93IHBpeG1hcCBhc3luY2hyb25vdXNseSwgc28gZm9yIGEgZmV3IGZyYWN0aW9ucwogICAg
IC8vIG9mIGEgc2Vjb25kIGFmdGVyIGVhY2ggcmVzaXplLCB3aGlsZSBkb2luZyBjb250aW51b3Vz
IHJlc2l6aW5nICh3aGljaCBjb25zdGFudGx5IGRlc3Ryb3lzIGFuZCBjcmVhdGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmgKaW5kZXggODhhN2UwOGIxYTA1ZTRkMzNkZDU0OTM2MjUxZDc2NTM5YzE0YzZlYS4u
YmZjMmExNGQwOTRhOGQ2NWQ5MzRlODBmMDIzOWRjMDhiMmJlYWNiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBXaW5kb3cgd2luZG93SUQoKSBj
b25zdCB7IHJldHVybiBtX3dpbmRvdy5nZXQoKTsgfQogICAgIHZvaWQgcmVzaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNj
YWxlKSB7IG1fZGV2aWNlU2NhbGUgPSBzY2FsZTsgfQogICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSgpOwogCiBwcml2YXRlOgpAQCAtNjEsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlhVbmlxdWVEYW1hZ2UgbV9kYW1hZ2U7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bV9zdXJmYWNlOwogICAgIGJvb2wgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplOworICAgIGZs
b2F0IG1fZGV2aWNlU2NhbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhv
c3RHdGsuY3BwCmluZGV4IGMxMDgxYTEwY2FkMzQ0MTFjNTA2NTU2OGY1MTUzOTgzYjJiZmExNGIu
LjY5ZWY2YWJhYTZiNmU1NmNlNjQxOGJhMWMwNGJmMWJlN2U5N2QzOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjppbml0aWFs
aXplKCkKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jv
b3RMYXllci0+c2V0U2l6ZShtX3dlYlBhZ2UtPnNpemUoKSk7CiAKKyAgICBtX3NjYWxlTWF0cml4
Lm1ha2VJZGVudGl0eSgpOworICAgIG1fc2NhbGVNYXRyaXguc2NhbGUobV93ZWJQYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpICogbV93ZWJQYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgZG93
bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikubGF5ZXIoKS5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikubGF5ZXIoKS5zZXRUcmFuc2Zvcm0obV9zY2Fs
ZU1hdHJpeCk7CisKICAgICAvLyBUaGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudHMgYXJlIGEgY2hp
bGQgb2YgdGhlIHJvb3QgbGF5ZXIuCiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyID0g
R3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKQEAg
LTIwNSw2ICsyMTAsMTAgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWQoKQogewogICAgIC8vIE90aGVyIGxheWVycyBsZWFybiBvZiB0aGUgc2Nh
bGUgZmFjdG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IuCiAgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5n
ZWQoKTsKKworICAgIG1fc2NhbGVNYXRyaXgubWFrZUlkZW50aXR5KCk7CisgICAgbV9zY2FsZU1h
dHJpeC5zY2FsZShtX3dlYlBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgKiBtX3dlYlBhZ2UtPnBh
Z2VTY2FsZUZhY3RvcigpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cj4oKm1fcm9vdExheWVyKS5sYXllcigpLnNldFRyYW5zZm9ybShtX3NjYWxlTWF0cml4KTsKIH0K
IAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpmb3JjZVJlcGFpbnQoKQpAQCAtMjE4LDYgKzIyNywx
NiBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NM
YXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpYwogICAgICAgICBtX3dlYlBhZ2UtPmRyYXdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChjbGlwUmVjdCkpOwogfQogCitmbG9h
dCBMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fd2ViUGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKworZmxvYXQgTGF5ZXJUcmVl
SG9zdEd0azo6cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdl
LT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KKwogc3RhdGljIGlubGluZSBib29sIHNob3VsZFNraXBO
ZXh0RnJhbWVCZWNhdXNlT2ZDb250aW5vdXNJbW1lZGlhdGVGbHVzaGVzKGRvdWJsZSBjdXJyZW50
LCBkb3VibGUgbGFzdEltbWVkaWF0ZUZsdXNoVGltZSkKIHsKICAgICAvLyAxMDBtcyBpcyBhYm91
dCBhIHBlcmNlcHRhYmxlIGRlbGF5IGluIFVJLCBzbyB3aGVuIHNjaGVkdWxpbmcgbGF5ZXIgZmx1
c2hlcyBpbW1lZGlhdGVseSBmb3IgbW9yZSB0aGFuIDEwMG1zLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAppbmRl
eCBkMGFjZDg0ZmY4ZDhjMDM4MWE1Y2Q4NmE3NmU1OGJlNzQyZTY2MDZlLi45YzY3YTY3ZGFjODdk
NzRiNzE1MWY1ZjU3MzMwN2I2NTA1OGEwZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvR0xDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNYWluTG9vcFNvdXJjZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc1LDYg
Kzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhh
c2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBm
bHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKIApAQCAtOTksNiArMTAyLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkOwogICAgIEdNYWluTG9vcFNv
dXJjZSBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrOwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXI7CisgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXggbV9zY2FsZU1hdHJpeDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="287319"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="287320"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262147</attachid>
            <date>2015-09-30 02:01:32 -0700</date>
            <delta_ts>2015-09-30 02:56:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141782-20150930180107.patch</filename>
            <type>text/plain</type>
            <size>22910</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZjZmJlMzA5NzAzYjZl
MDkxNDY2ZGQxNTY3YmE0MjliMjQ1MDA4Ny4uZmQzOTI1MWE1ZTU3M2M2MjdiMWQ0MzI5YTMxOGVj
MTk2YjU2ZTIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA5LTIxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFN1cHBvcnQg
SGlEUEkgUHJvcGVybHkgaW4gV2ViS2l0R3RrKyB3aXRoIHRoZSBUZXh0dXJlTWFwcGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGZpeGVzIEhpRFBJIGlzc3VlIGluIHRoZSBUZXh0dXJlTWFwcGVyLgorICAgICAgICBUbyBz
dXBwb3J0IEhpRFBJIGluIHRoZSBUZXh0dXJlTWFwcGVyLCB3ZSBuZWVkIHRvIGRyYXcgc2NhbGVk
IGNvbnRlbnRzCisgICAgICAgIGluIHRoZSBUZXh0dXJlTWFwcGVyVGlsZSwgYW5kIGFwcGx5IHRo
ZSBnbG9iYWwgc2NhbGUgaW4gdGhlIHJvb3QgbGF5ZXIKKyAgICAgICAgdG8gYXBwbHkgdHJhbnNm
b3JtcyBjb3JyZWN0bHkuCisKKyAgICAgICAgU3VwcG9ydGluZyB0aGUgZGV2aWNlIHNjYWxlIGlz
IGhhbmRsZWQgYXQgTGF5ZXJUcmVlSG9zdEd0ayBhbmQKKyAgICAgICAgVGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZSwgYW5kIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGRvZXNuJ3QgaGFuZGxl
CisgICAgICAgIHRoZSBkZXZpY2Ugc2NhbGUgZGlyZWN0bHkuCisKKyAgICAgICAgRnJvbSB0aGUg
VGV4dHVyZU1hcHBlckxheWVyLCBkZXZpY2VTY2FsZSBhbmQgcGFnZVNjYWxlIGRvIG5vdCBoYXZl
IHRvIGJlCisgICAgICAgIGhhbmRsZWQgZGlmZmVyZW50bHkuIFRoZXNlIGFyZSBtdWx0aXBsaWVk
IGFuZCBwcm92aWRlZCB0bworICAgICAgICBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5jcHA6CisKKyAgICAgICAgICAgIE1vZGlmaWVkIHRvIGluY3JlYXNlIHRoZSBjb3Zl
ciByZWN0IGZvciB0aWxlcyBjcmVhdGlvbi4gRm9yIHRoZSBpbWFnZQorICAgICAgICAgICAgY29u
dGVudHMsIGl0IGp1c3QgY3JlYXRlcyB0ZXh0dXJlIHdpdGggYSBpbWFnZSBzaXplLCByZWdhcmRs
ZXNzIG9mIHRoZQorICAgICAgICAgICAgY29udGVudHMgc2NhbGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyk6CisKKyAgICAgICAgICAgIEFwcGx5IHRo
ZSBkZXZpY2Ugc2NhbGUgdG8gdGhlIGdyYXBoaWNzIGNvbnRleHQgYmVmb3JlIHBhaW50aW5nIGNv
bnRlbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKworICAg
ICAgICAgICAgQXBwbHkgdGhlIGRldmljZSBzY2FsZSBhbmQgdGhlIHBhZ2Ugc2NhbGUgdG8gdGhl
IGJhY2tpbmcgc3RvcmUKKwogMjAxNS0wOS0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSBXZWJLaXQyIEFzeW5jVGFzayB0byBXZWJDb3JlIENyb3Nz
VGhyZWFkVGFzay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMDM4MzNmNjMwOWE5MzlkMjY4NDVjNjdlYzQyYzM0
NDA0NjM2NWFmLi44ZDZhZTM5MTllYzJhYzc0YzNiYmM3ODAyODFlNWFmMDIwNzIyOTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDktMjEgIEd3YW5nIFlvb24gSHdhbmcgIDx5
b29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU3VwcG9ydCBIaURQSSBQcm9wZXJseSBp
biBXZWJLaXRHdGsrIHdpdGggdGhlIFRleHR1cmVNYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3cuY3BwOgorCisgICAgICAgICAgICBNb2RpZmllZCB0byBjcmVhdGUgc2Nh
bGVkIHNpemUgb2Ygd2luZG93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisKKyAgICAgICAgICAgIFdlIHNob3VsZCBhcHBseSBk
ZXZpY2Ugc2NhbGUgZmFjdG9yIHRvIHRoZSByb290IGxheWVyIHRvIGFwcGx5CisgICAgICAgICAg
ICB0aGUgc2NhbGUgbWF0cml4IGJlZm9yZSBhcHBseWluZyBvdGhlciB0cmFuc2Zvcm0gbWF0cmlj
ZXMuCisKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlU2NhbGVGYWN0
b3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6cGFnZVNjYWxl
RmFjdG9yKTogQWRkZWQuCisKIDIwMTUtMDktMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgV2ViS2l0MiBBc3luY1Rhc2sgdG8gV2ViQ29yZSBDcm9z
c1RocmVhZFRhc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKaW5kZXggYTQ3MDg5ZjA3OTUyY2NkMTc1M2M3
NjIxZDUyNmI3NTE3NjcwMTVjMi4uZjk5ZTljMTM0MzA0M2Q2NjQ5ZGI0ZGRmNTA4NTcwOTk2MWE2
MjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IElu
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRz
RmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxh
eWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBV
cGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkKIHsKICAg
ICAvLyBNYWtpbmcgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUg
aXMgT0sgYmVjYXVzZSB0aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9y
bXMgdGhhdCByZXNwZWN0IHRoZSBhY2NlbGVyYXRlZCBiaXQuCkBAIC00OCw3ICs0OCwxMCBAQCB2
b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIEdyYXBoaWNzTGF5ZXIqCiAKICAgICBJbnRSZWN0IHNvdXJjZVJlY3QodGFyZ2V0UmVj
dCk7CiAgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihvZmZzZXQpOwotICAgIGNvbnRleHQudHJh
bnNsYXRlKC1vZmZzZXQueCgpLCAtb2Zmc2V0LnkoKSk7CisgICAgc291cmNlUmVjdC5zY2FsZSgx
IC8gc2NhbGUpOworICAgIGNvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihzY2FsZSk7Cisg
ICAgY29udGV4dC50cmFuc2xhdGUoLXNvdXJjZVJlY3QueCgpLCAtc291cmNlUmVjdC55KCkpOwor
CiAgICAgc291cmNlTGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIHNv
dXJjZVJlY3QpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKaW5kZXggNjYyNWYyZmY3
MGMzODQ5MDJjYzIzYzQ0NWRlOTQ5NmZjZDczZDJjNy4uN2Q2MTcyZTM1N2E3ZjdhNzhhOWRiMGRj
ZWI3NWRlMjY4MWE1ZGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0
JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xh
eWVyKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRh
dGVDb250ZW50c0ZsYWcsIGZsb2F0IHNjYWxlID0gMSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAgIGlubGluZSBGbGFncyBm
bGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGQ1MzQ3MDQ0ZTg4YzA4ZWRiYTRkNDYwNDY5ZjNmOTA3
YTAwYjlkYzEuLjUwMWQyYTg5ZTllODdhZTBmZDU1MjJhYzQ4Nzc3MDk2YzNlYzBjZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzAwLDYgKzMwMCw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCiAgICAgICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAgICAgICAg
ICBtX2NvbXBvc2l0ZWRJbWFnZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3Jl
YXRlKCk7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1h
Z2UpOworICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2FsZShwYWdl
U2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKICAgICAgICAgbV9jb21w
b3NpdGVkSW1hZ2UgPSBudWxscHRyOwpAQCAtNTQ1LDcgKzU0Niw5IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3Rv
cmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tp
bmdTdG9yZS5nZXQoKSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50c1NjYWxlKHBh
Z2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKKyAgICBkaXJ0eVJlY3Qu
c2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBiYWNr
aW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGly
dHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7
CiAKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAK
aW5kZXggZTZmM2ZlODBlZTY4MjJiYzBhNDUwNmY3MDdmNTE5NzhlNDY1NmFhMi4uMWJiMGE0ZjI0
YWZmZjg0NGU4NmQ0N2QxZGM1ZWJkOWNkMjUwNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnCiAgICAgbV90ZXh0
dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZSwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRh
dGVDb250ZW50c0ZsYWcpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250
ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VM
YXllciwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250
ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciog
c291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBk
YXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCiB7CiAgICAg
SW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JlY3QpOwogICAgIHRhcmdl
dFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IEdyYXBoaWNzTGF5CiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCks
IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAotICAgIG1fdGV4dHVyZS0+
dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIHRhcmdldFJlY3QsIHNv
dXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICBtX3RleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZz
ZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZywgc2NhbGUpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJU
aWxlOjpwYWludChUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25zdCB1bnNpZ25lZCBleHBv
c2VkRWRnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCmluZGV4IDdlMjIxMmU1MjVmNDJmNTVkZWE4
MTdhZWEwOWJkOTUyNWRhMzRkNzEuLjc5ZDczZWViMmVlM2JjOWY5OGZiMmYyNTg5NzJhYTBlNmZh
Y2RjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX3JlY3Qg
PSByZWN0OyB9CiAKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFn
ZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBk
YXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRh
KTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVy
KiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRh
dGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSwgZmxvYXQgc2NhbGUgPSAxKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQsIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4
dHVyZU1hcHBlclRpbGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlLmNwcAppbmRleCAzNjI1YzE0ODY0MzFkNDQ1YTJhOTkxMzIwZWY1MTAxZjQ1
ZmUxNmVlLi5jMjk4NWIzNTUwNTRiNGIzZTdkOWU5Y2EwZGVlYzVkNTg5MTExYjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMjksMTAg
KzI5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xheWVyOwogCi1U
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZSgpCi17Ci19Ci0KIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRh
dGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIp
CiB7CiAgICAgaWYgKCFtX2ltYWdlKQpAQCAtNjksMTIgKzY1LDI2IEBAIHZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hCiAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdOdW1iZXIocmVwYWludENvdW50
LCBib3JkZXJDb2xvciwgdGlsZS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0p
OwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVu
dHNTY2FsZShmbG9hdCBzY2FsZSkKK3sKKyAgICBpZiAobV9jb250ZW50c1NjYWxlID09IHNjYWxl
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzU2NhbGVEaXJ0eSA9IHRydWU7CisgICAgbV9j
b250ZW50c1NjYWxlID0gc2NhbGU7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFzQWxwaGEpCiB7Ci0gICAgaWYgKHNp
emUgPT0gbV9zaXplKQorICAgIGlmIChzaXplID09IG1fc2l6ZSAmJiAhbV9pc1NjYWxlRGlydHkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9pc1NjYWxlRGly
dHkgPSBmYWxzZTsKKworICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplKG1fc2l6ZSk7CisgICAgaWYg
KCFtX2ltYWdlKQorICAgICAgICBzY2FsZWRTaXplLnNjYWxlKG1fY29udGVudHNTY2FsZSk7CiAK
ICAgICBWZWN0b3I8RmxvYXRSZWN0PiB0aWxlUmVjdHNUb0FkZDsKICAgICBWZWN0b3I8aW50PiB0
aWxlSW5kaWNlc1RvUmVtb3ZlOwpAQCAtODIsOCArOTIsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9h
dFNpegogCiAgICAgLy8gVGhpcyBtZXRob2QgcmVjeWNsZXMgdGlsZXMuIFdlIGNoZWNrIHdoaWNo
IHRpbGVzIHdlIG5lZWQgdG8gYWRkLCB3aGljaCB0byByZW1vdmUsIGFuZCB1c2UgYXMgbWFueQog
ICAgIC8vIHJlbW92YWJsZSB0aWxlcyBhcyByZXBsYWNlbWVudCBmb3IgbmV3IHRpbGVzIHdoZW4g
cG9zc2libGUuCi0gICAgZm9yIChmbG9hdCB5ID0gMDsgeSA8IG1fc2l6ZS5oZWlnaHQoKTsgeSAr
PSB0aWxlU2l6ZS5oZWlnaHQoKSkgewotICAgICAgICBmb3IgKGZsb2F0IHggPSAwOyB4IDwgbV9z
aXplLndpZHRoKCk7IHggKz0gdGlsZVNpemUud2lkdGgoKSkgeworICAgIGZvciAoZmxvYXQgeSA9
IDA7IHkgPCBzY2FsZWRTaXplLmhlaWdodCgpOyB5ICs9IHRpbGVTaXplLmhlaWdodCgpKSB7Cisg
ICAgICAgIGZvciAoZmxvYXQgeCA9IDA7IHggPCBzY2FsZWRTaXplLndpZHRoKCk7IHggKz0gdGls
ZVNpemUud2lkdGgoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHRpbGVSZWN0KHgsIHksIHRp
bGVTaXplLndpZHRoKCksIHRpbGVTaXplLmhlaWdodCgpKTsKICAgICAgICAgICAgIHRpbGVSZWN0
LmludGVyc2VjdChyZWN0KCkpOwogICAgICAgICAgICAgdGlsZVJlY3RzVG9BZGQuYXBwZW5kKHRp
bGVSZWN0KTsKQEAgLTE0Nyw3ICsxNTcsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogewog
ICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxTaXplLCB0ZXh0dXJlTWFwcGVy
LT5tYXhUZXh0dXJlU2l6ZSgpLCB0cnVlKTsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVz
KQotICAgICAgICB0aWxlLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVy
LCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgICAgIHRpbGUudXBkYXRlQ29u
dGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVu
dHNGbGFnLCBtX2NvbnRlbnRzU2NhbGUpOwogfQogCiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA0ZjNjY2U4OGNhYmRmZDI0
NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwLi40YmUyMTQ5NTAxZjlhY2FjM2NhNjkzNTNjMGYzYWY2
ZmQ0Y2Q1Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZS5oCkBAIC00MSwyMSArNDEsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50
IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOworCisgICAgdm9pZCB1cGRhdGVDb250ZW50c1Nj
YWxlKGZsb2F0KTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFn
ZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRh
dGVDb250ZW50c0ZsYWcpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlcios
IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KIAogcHJpdmF0ZToKLSAgICBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKTsKKyAgICBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUoKSB7IH0KKwogICAgIHZvaWQgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRl
ZChjb25zdCBGbG9hdFNpemUmIGJhY2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBib29sIGhhc0FscGhhKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZO
ZWVkZWQoVGV4dHVyZU1hcHBlciopOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVk
VHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBpbmxpbmUgRmxvYXRSZWN0
IHJlY3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3Np
emUpOyB9CisgICAgaW5saW5lIEZsb2F0UmVjdCByZWN0KCkgY29uc3QKKyAgICB7CisgICAgICAg
IEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsKKyAgICAgICAgcmVj
dC5zY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgICAgICByZXR1cm4gcmVjdDsKKyAgICB9CiAK
ICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7CiAgICAgRmxvYXRTaXplIG1f
c2l6ZTsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CisgICAgZmxvYXQgbV9jb250ZW50c1Nj
YWxlIHsgMSB9OworICAgIGJvb2wgbV9pc1NjYWxlRGlydHkgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDhiZDgzYzRlZjAwNjUyNDBiOGI2
YTA0NzdjNmQzYWI2MWY3ZWMwNzAuLjY4NzkzNGFjN2JjMmZjNjI0MTFkN2ZjMTBiZGJjNmFhNDRi
ZmIwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBzdGF0aWMgYm9vbCB3ZWJr
aXRXZWJWaWV3UmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmll
d0Jhc2UqCiAgICAgaWYgKCFwcml2LT5yZWRpcmVjdGVkV2luZG93KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5zZXREZXZpY2VTY2FsZUZhY3Rv
cih3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAg
ICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5yZXNpemUoZHJhd2luZ0FyZWEtPnNpemUoKSk7CiAK
ICAgICBpZiAoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gcHJpdi0+cmVkaXJlY3RlZFdpbmRv
dy0+c3VyZmFjZSgpKSB7CkBAIC0xMDYzLDYgKzEwNjQsMTAgQEAgV2ViUGFnZVByb3h5KiB3ZWJr
aXRXZWJWaWV3QmFzZUdldFBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNl
KQogI2lmIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKIHN0YXRpYyB2b2lkIGRldmljZVNjYWxlRmFj
dG9yQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7CisjaWYg
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKHdlYmtpdFdlYlZpZXdC
YXNlLT5wcml2LT5yZWRpcmVjdGVkV2luZG93KQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+
cHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+c2V0RGV2aWNlU2NhbGVGYWN0b3Iod2Via2l0V2ViVmll
d0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisjZW5kaWYKICAg
ICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5zZXRJbnRyaW5zaWNEZXZpY2VT
Y2FsZUZhY3RvcihndGtfd2lkZ2V0X2dldF9zY2FsZV9mYWN0b3IoR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZSkpKTsKIH0KICNlbmRpZiAvLyBIQVZFKEdUS19TQ0FMRV9GQUNUT1IpCkBAIC0x
MzM5LDYgKzEzNDQsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0VwogICAgIGlmICghZHJhd2lu
Z0FyZWEpCiAgICAgICAgIHJldHVybjsKIAorICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnNl
dERldmljZVNjYWxlRmFjdG9yKHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShk
cmF3aW5nQXJlYS0+c2l6ZSgpKTsKICAgICAvLyBGb3JjZSBhIHJlc2l6ZSB0byBlbnN1cmUgdGhl
IG5ldyByZWRpcmVjdGVkIHdpbmRvdyBzaXplIGlzIHVzZWQgYnkgdGhlIFdlYlByb2Nlc3MuCiAg
ICAgZHJhd2luZ0FyZWEtPmZvcmNlUmVzaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmluZGV4
IDIxNTYyY2RiYjllYjJiYTdlOThlOTg2YzU3M2MyM2I2OGJhMTJlNGMuLjFiNDk2OGRlODI0ZTVi
YTkyNzhjNzJmNjgxYTdhNTQ2MWZmM2JkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKIAor
I2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtRGlzcGxheVgxMS5oPgogI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDEx
L2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgpAQCAtMTM4LDYgKzEzOSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c6OmNyZWF0ZShHCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBkYW1hZ2VOb3RpZnkpCiAgICAgOiBtX2Rpc3BsYXkoR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2Rr
X3dpbmRvd19nZXRfZGlzcGxheShwYXJlbnRXaW5kb3cpKSkKICAgICAsIG1fbmVlZHNOZXdQaXht
YXBBZnRlclJlc2l6ZShmYWxzZSkKKyAgICAsIG1fZGV2aWNlU2NhbGUoMSkKIHsKICAgICBBU1NF
UlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKSkubmF0aXZlKCkgPT0gbV9kaXNwbGF5KTsKICAgICBTY3JlZW4qIHNjcmVlbiA9IERl
ZmF1bHRTY3JlZW5PZkRpc3BsYXkobV9kaXNwbGF5KTsKQEAgLTIxMSwxNCArMjEzLDE3IEBAIFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQog
CiB2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCisgICAgSW50U2l6ZSBzY2FsZWRTaXpl
KHNpemUpOworICAgIHNjYWxlZFNpemUuc2NhbGUobV9kZXZpY2VTY2FsZSk7CisKKyAgICBpZiAo
c2NhbGVkU2l6ZSA9PSBtX3NpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJlc2l6ZSB0
aGUgd2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUg
ZW1wdHkgd2luZG93cy4KLSAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0
KCksIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUuaGVpZ2h0KCkp
KTsKKyAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIHN0ZDo6bWF4
KDEsIHNjYWxlZFNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNjYWxlZFNpemUuaGVpZ2h0KCkp
KTsKICAgICBYRmx1c2gobV9kaXNwbGF5KTsKIAotICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9z
aXplID0gc2NhbGVkU2l6ZTsKICAgICBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUgPSB0cnVl
OwogICAgIGlmIChtX3NpemUuaXNFbXB0eSgpKQogICAgICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4
bWFwU3VyZmFjZSgpOwpAQCAtMjU2LDYgKzI2MSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UoKQogICAgIH0KIAogICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3Jl
YXRlKG1fZGlzcGxheSwgbmV3UGl4bWFwLmdldCgpLCB3aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbCwg
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERl
dmljZVNjYWxlKG5ld1N1cmZhY2UuZ2V0KCksIG1fZGV2aWNlU2NhbGUsIG1fZGV2aWNlU2NhbGUp
OwogCiAgICAgLy8gTnZpZGlhIGRyaXZlcnMgc2VlbSB0byBwcmVwYXJlIHRoZWlyIHJlZGlyZWN0
ZWQgd2luZG93IHBpeG1hcCBhc3luY2hyb25vdXNseSwgc28gZm9yIGEgZmV3IGZyYWN0aW9ucwog
ICAgIC8vIG9mIGEgc2Vjb25kIGFmdGVyIGVhY2ggcmVzaXplLCB3aGlsZSBkb2luZyBjb250aW51
b3VzIHJlc2l6aW5nICh3aGljaCBjb25zdGFudGx5IGRlc3Ryb3lzIGFuZCBjcmVhdGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmgKaW5kZXggODhhN2UwOGIxYTA1ZTRkMzNkZDU0OTM2MjUxZDc2NTM5YzE0YzZl
YS4uYmZjMmExNGQwOTRhOGQ2NWQ5MzRlODBmMDIzOWRjMDhiMmJlYWNiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBXaW5kb3cgd2luZG93SUQo
KSBjb25zdCB7IHJldHVybiBtX3dpbmRvdy5nZXQoKTsgfQogICAgIHZvaWQgcmVzaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0
IHNjYWxlKSB7IG1fZGV2aWNlU2NhbGUgPSBzY2FsZTsgfQogICAgIGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSgpOwogCiBwcml2YXRlOgpAQCAtNjEsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlhVbmlxdWVEYW1hZ2UgbV9kYW1hZ2U7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gbV9zdXJmYWNlOwogICAgIGJvb2wgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplOworICAg
IGZsb2F0IG1fZGV2aWNlU2NhbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuY3BwCmluZGV4IGMxMDgxYTEwY2FkMzQ0MTFjNTA2NTU2OGY1MTUzOTgzYjJiZmEx
NGIuLjY5ZWY2YWJhYTZiNmU1NmNlNjQxOGJhMWMwNGJmMWJlN2U5N2QzOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjppbml0
aWFsaXplKCkKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBt
X3Jvb3RMYXllci0+c2V0U2l6ZShtX3dlYlBhZ2UtPnNpemUoKSk7CiAKKyAgICBtX3NjYWxlTWF0
cml4Lm1ha2VJZGVudGl0eSgpOworICAgIG1fc2NhbGVNYXRyaXguc2NhbGUobV93ZWJQYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpICogbV93ZWJQYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAg
ZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikubGF5ZXIo
KS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikubGF5ZXIoKS5zZXRUcmFuc2Zvcm0obV9z
Y2FsZU1hdHJpeCk7CisKICAgICAvLyBUaGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudHMgYXJlIGEg
Y2hpbGQgb2YgdGhlIHJvb3QgbGF5ZXIuCiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVy
ID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsK
ICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsK
QEAgLTIwNSw2ICsyMTAsMTAgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQoKQogewogICAgIC8vIE90aGVyIGxheWVycyBsZWFybiBvZiB0aGUg
c2NhbGUgZmFjdG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IuCiAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKTsKKworICAgIG1fc2NhbGVNYXRyaXgubWFrZUlkZW50aXR5KCk7CisgICAgbV9zY2Fs
ZU1hdHJpeC5zY2FsZShtX3dlYlBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgKiBtX3dlYlBhZ2Ut
PnBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcj4oKm1fcm9vdExheWVyKS5sYXllcigpLnNldFRyYW5zZm9ybShtX3NjYWxlTWF0cml4KTsK
IH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpmb3JjZVJlcGFpbnQoKQpAQCAtMjE4LDYgKzIy
NywxNiBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpYwogICAgICAgICBtX3dlYlBhZ2UtPmRyYXdS
ZWN0KGdyYXBoaWNzQ29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChjbGlwUmVjdCkpOwogfQogCitm
bG9hdCBMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fd2ViUGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKworZmxvYXQgTGF5ZXJU
cmVlSG9zdEd0azo6cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQ
YWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KKwogc3RhdGljIGlubGluZSBib29sIHNob3VsZFNr
aXBOZXh0RnJhbWVCZWNhdXNlT2ZDb250aW5vdXNJbW1lZGlhdGVGbHVzaGVzKGRvdWJsZSBjdXJy
ZW50LCBkb3VibGUgbGFzdEltbWVkaWF0ZUZsdXNoVGltZSkKIHsKICAgICAvLyAxMDBtcyBpcyBh
Ym91dCBhIHBlcmNlcHRhYmxlIGRlbGF5IGluIFVJLCBzbyB3aGVuIHNjaGVkdWxpbmcgbGF5ZXIg
Zmx1c2hlcyBpbW1lZGlhdGVseSBmb3IgbW9yZSB0aGFuIDEwMG1zLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaApp
bmRleCBkMGFjZDg0ZmY4ZDhjMDM4MWE1Y2Q4NmE3NmU1OGJlNzQyZTY2MDZlLi45YzY3YTY3ZGFj
ODdkNzRiNzE1MWY1ZjU3MzMwN2I2NTA1OGEwZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvR0xDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dNYWluTG9vcFNvdXJjZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc1
LDYgKzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5n
UGhhc2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9v
bCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKIApAQCAtOTksNiArMTAyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkOwogICAgIEdNYWluTG9v
cFNvdXJjZSBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrOwogICAgIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXI7CisgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXggbV9zY2FsZU1hdHJpeDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>