<?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>114276</bug_id>
          
          <creation_ts>2013-04-09 06:15:53 -0700</creation_ts>
          <short_desc>[BlackBerry] LayerTexture refactoring</short_desc>
          <delta_ts>2013-04-11 04:10:19 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95781</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>anilsson</cc>
    
    <cc>anlo</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jpetsovits</cc>
    
    <cc>mifenton</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>871723</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-09 06:15:53 -0700</bug_when>
    <thetext>Simplify LayerTexture - it&apos;s overly complicated due to having supported both Skia and BlackBerry::Platform::Graphics::GraphicsContext for a while.

Also refactor the code for getting an actual OpenGL texture ID out of these LayerTexture things into LayerTexture to keep the code DRY. Add the required state save/restore incantations for when the texture is initially conjured out of thin air by drawing the GraphicsContext stuff to FBO.

PR 322882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872794</commentid>
    <comment_count>1</comment_count>
      <attachid>197268</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-10 08:05:49 -0700</bug_when>
    <thetext>Created attachment 197268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872823</commentid>
    <comment_count>2</comment_count>
      <attachid>197268</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-04-10 09:09:21 -0700</bug_when>
    <thetext>Comment on attachment 197268
Patch

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

Looks good to me.

&gt; Source/WebCore/platform/graphics/blackberry/LayerTexture.cpp:-39
&gt; -    , m_isOpaque(false)

With the disappearance of m_isOpaque, can we instead call BlackBerry::Platform::Graphics::setBufferOpaqueHint() in the appropriate place(s) so this information is not irreversibly lost? Or was there another reason that necessitates the wholesale removal of this concept? I guess we don&apos;t currently distinguish between opaque and non-opaque textures in the compositor to control the blend mode, although that&apos;s a pity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872921</commentid>
    <comment_count>3</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-10 10:08:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 197268 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=197268&amp;action=review
&gt; 
&gt; Looks good to me.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerTexture.cpp:-39
&gt; &gt; -    , m_isOpaque(false)
&gt; 
&gt; With the disappearance of m_isOpaque, can we instead call BlackBerry::Platform::Graphics::setBufferOpaqueHint() in the appropriate place(s) so this information is not irreversibly lost? Or was there another reason that necessitates the wholesale removal of this concept? I guess we don&apos;t currently distinguish between opaque and non-opaque textures in the compositor to control the blend mode, although that&apos;s a pity.

That&apos;s a great idea, I&apos;ll add that tomorrow around where we used to detect the opacity instead of dropping it all together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873628</commentid>
    <comment_count>4</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-11 02:09:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 197268 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=197268&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good to me.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerTexture.cpp:-39
&gt; &gt; &gt; -    , m_isOpaque(false)
&gt; &gt; 
&gt; &gt; With the disappearance of m_isOpaque, can we instead call BlackBerry::Platform::Graphics::setBufferOpaqueHint() in the appropriate place(s) so this information is not irreversibly lost? Or was there another reason that necessitates the wholesale removal of this concept? I guess we don&apos;t currently distinguish between opaque and non-opaque textures in the compositor to control the blend mode, although that&apos;s a pity.
&gt; 
&gt; That&apos;s a great idea, I&apos;ll add that tomorrow around where we used to detect the opacity instead of dropping it all together.

Unfortunately, setting the opacity hint breaks the CSS Filters, probably because platform changes the blend mode or other GL state in a way webkit isn&apos;t ready for. I prefer to do that change separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873637</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-11 02:19:06 -0700</bug_when>
    <thetext>Filed PR 325040 to investigate setting the opaque hint some time in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873640</commentid>
    <comment_count>6</comment_count>
      <attachid>197530</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-11 02:28:45 -0700</bug_when>
    <thetext>Created attachment 197530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873641</commentid>
    <comment_count>7</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-11 02:29:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=197530) [details]
&gt; Patch

Same patch as last time, only now it applies =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873653</commentid>
    <comment_count>8</comment_count>
      <attachid>197530</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-04-11 02:52:31 -0700</bug_when>
    <thetext>Comment on attachment 197530
Patch

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

Nice cleanup!

&gt; Source/WebCore/ChangeLog:11
&gt; +        now it&apos;s just BB::P::G::Buffer all around.

Better say BlackBerry::Platform::Graphics::Buffer to make it clearer, I think.

&gt; Source/WebCore/platform/graphics/blackberry/LayerTexture.cpp:104
&gt; +    // Force creation if it&apos;s 0

Nit: finish the comment with a period.

&gt; Source/WebCore/platform/graphics/blackberry/LayerTexture.cpp:112
&gt; +        platformTexture = reinterpret_cast&lt;GLuint&gt;(platformBufferHandle(m_buffer));

Shouldn&apos;t it be reinterpret_cast&lt;Platform3DObject&gt; instead?

&gt; Source/WebCore/platform/graphics/blackberry/LayerTexture.h:61
&gt; +    // This will ensure a buffer is allocated for this texture with the requested backing and size

Period here too.

&gt; Source/WebCore/platform/graphics/blackberry/TextureCacheCompositingThread.cpp:110
&gt; +        Buffer* buffer = createBuffer(size, type);
&gt; +        if (!buffer)
&gt;              return false;

I think createBuffer is not expected to return 0, there&apos;s an assert in such case, so maybe we can skip this check, or add an assert here too.

&gt; Source/WebCore/platform/graphics/blackberry/TextureCacheCompositingThread.cpp:130
&gt; +    Buffer* buffer = createBuffer(size, type);
&gt; +    if (!buffer)
&gt;          return false;

Ditto.

&gt; Source/WebCore/platform/graphics/blackberry/TextureCacheCompositingThread.h:54
&gt; +    PassRefPtr&lt;LayerTexture&gt; textureForContents(BlackBerry::Platform::Graphics::Buffer* contents);

I think we can omit the parameter name in this case.

&gt; Source/WebCore/platform/graphics/blackberry/TextureCacheCompositingThread.h:58
&gt; +    PassRefPtr&lt;LayerTexture&gt; updateContents(const RefPtr&lt;LayerTexture&gt;&amp;, BlackBerry::Platform::Graphics::Buffer* contents);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873727</commentid>
    <comment_count>9</comment_count>
      <attachid>197566</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-11 03:25:09 -0700</bug_when>
    <thetext>Created attachment 197566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873728</commentid>
    <comment_count>10</comment_count>
      <attachid>197566</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-11 03:25:57 -0700</bug_when>
    <thetext>Comment on attachment 197566
Patch

Adressed cgarcia&apos;s comments, straight to cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873742</commentid>
    <comment_count>11</comment_count>
      <attachid>197566</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-11 04:10:16 -0700</bug_when>
    <thetext>Comment on attachment 197566
Patch

Clearing flags on attachment: 197566

Committed r148192: &lt;http://trac.webkit.org/changeset/148192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873743</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-11 04:10:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197268</attachid>
            <date>2013-04-10 08:05:49 -0700</date>
            <delta_ts>2013-04-11 02:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114276-20130410170527.patch</filename>
            <type>text/plain</type>
            <size>42268</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWExNTg5NTAzMzNjNzM0
ZTA1ZTE1NTAwZWJhNDI4YzFjZDU4NGUxYi4uYjFlZDAxZWYzZmMwZjA3NzZlNmIwZjE1NjIyYTdj
NWEwM2U3YjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk0IEBACiAyMDEzLTA0LTEwICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gTGF5
ZXJUZXh0dXJlIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTQyNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIEdwdUhhbmRsZSBhbmQgSG9zdFR5cGUgdHlwZWRlZnMg
ZnJvbSBMYXllclRleHR1cmUsIHRoZXkKKyAgICAgICAgZG9uJ3QgbWFrZSBhbnkgc2Vuc2Ugbm93
IHRoYXQgd2UgcmVtb3ZlZCB0aGUgU2tpYSBjb2RlIHBhdGhzLiBXaXRoIFNraWEKKyAgICAgICAg
dGhleSB1c2VkIHRvIGJlIGFuIE9wZW5HTCB0ZXh0dXJlIElEIGFuZCBhbiBTa0JpdG1hcCByZXNw
ZWN0aXZlbHksIGJ1dAorICAgICAgICBub3cgaXQncyBqdXN0IEJCOjpQOjpHOjpCdWZmZXIgYWxs
IGFyb3VuZC4KKworICAgICAgICBUaGlzIGFsbG93cyB1cyB0byByZW5hbWUgdGV4dHVyZUlkKCkg
aW50byBidWZmZXIoKSB3aGljaCBpcyBtb3JlIHRvIHRoZQorICAgICAgICBwb2ludC4gVGhlIHRl
eHR1cmUgSUQgY29uY2VwdCBpcyBub3cgdXAgZm9yIGdyYWJzIGFuZCBjYW4gYmUgdXNlZCB0bwor
ICAgICAgICBjb25zb2xpZGF0ZSBhbGwgdGhlIHZhcmlvdXMgY29kZSBmb3IgZXh0cmFjdGluZyBh
biBPcGVuR0wgdGV4dHVyZSBmcm9tCisgICAgICAgIGEgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXIuIFRoaXMgb3Bwb3J0dW5pdHkgaXMgc2VpemVkIGluCisgICAgICAgIExh
eWVyVGV4dHVyZTo6cGxhdGZvcm1UZXh0dXJlKCksIGEgbmFtZSB3aGljaCBtYWtlcyBtb3JlIHNl
bnNlIHRoYW4KKyAgICAgICAgdGV4dHVyZUlkKCkgZm9yIGFueW9uZSBmYW1pbGlhciB3aXRoIHRo
ZSBHcmFwaGljc0NvbnRleHQzRCBjb2RlLiBXZSBjYW4KKyAgICAgICAgYWxzbyBsZXZlcmFnZSB0
aGUgUGxhdGZvcm0zRE9iamVjdCB0eXBlZGVmIHRvIGF2b2lkIGluY2x1ZGluZyBnbDIuaC4KKwor
ICAgICAgICBUaGUgdmVydGV4IGF0dHJpYnV0ZSBzdGF0ZSB3YXMgZ2V0dGluZyB0cmFtcGxlZCB3
aGVuIGludGVyYWN0aW5nIHdpdGgKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBo
aWNzIGluIHRoZSBMYXllckZpbHRlclJlbmRlcmVyLiBTb21lCisgICAgICAgIGFkZGl0aW9uYWwg
R0wgc3RhdGUgc2F2ZS9yZXN0b3JlIGluY2FudGF0aW9ucyB3aGVuIGFjY2Vzc2luZyB0aGUgT3Bl
bkdMCisgICAgICAgIHRleHR1cmUgZm9yIGEgTGF5ZXJUZXh0dXJlIGluIHRoZSBuZXcgTGF5ZXJU
ZXh0dXJlOjpwbGF0Zm9ybVRleHR1cmUoKQorICAgICAgICBtZXRob2QgZml4ZXMgdmFyaW91cyBD
U1MgRmlsdGVycyB0ZXN0IGNhc2VzLgorCisgICAgICAgIFNpbmNlIHdlIHJlbW92ZWQgdGhlIFNr
aWEgaW50ZWdyYXRpb24gZnJvbSBMYXllclRpbGVyLCBub2JvZHkgY2FyZXMKKyAgICAgICAgYWJv
dXQgdGhlIGRpcnR5IHJlY3QsIHRpbGUgcmVjdCBvciBvcGFxdWVuZXNzIG9mIHRoZSB0aWxlIGNv
bnRlbnRzLiBTbworICAgICAgICByZW1vdmUgdGhvc2UgcGFyYW1ldGVycyBmcm9tIHRoZSB1cGRh
dGVDb250ZW50cyBjb2RlIHBhdGguCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4
Y2VwdCBmb3IgZml4aW5nIENTUyBGaWx0ZXJzIHRlc3RzIGxpa2UKKyAgICAgICAgY3NzMy9maWx0
ZXJzL2VmZmVjdC1ibHVyLWh3Lmh0bWwuIFRoaXMgY2FuIG9ubHkgYmUgdmVyaWZpZWQgYnkgbWFu
dWFsbHkKKyAgICAgICAgbG9va2luZyBhdCB0aGUgdGVzdHMsIHdlIGRvbid0IGhhdmUgcGl4ZWwg
dGVzdCBzdXBwb3J0IHRvIGNhdGNoIHRoaXMKKyAgICAgICAga2luZCBvZiByZWdyZXNzaW9uLgor
CisgICAgICAgIFBSIDMyMjg4MgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6cGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZp
bHRlclJlbmRlcmVyOjpwb25nKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVy
ZXI6OnB1c2hTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVy
Ojpwb3BTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjph
cHBseUFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjp1c2VTdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVy
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OkxheWVyVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6c2V0Q29udGVudHNUb0NvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGV4dHVyZTo6cHJvdGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRl
eHR1cmU6OnBsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUZXh0dXJlOjppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4
dHVyZTo6YnVmZmVyKToKKyAgICAgICAgKExheWVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRleHR1cmU6OnNldEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlOjpz
ZXRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGU6OnVwZGF0ZUNvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlOjpoYXNUZXh0dXJlKToKKyAgICAgICAgKExheWVy
VGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OnVwZGF0ZVRleHR1cmVDb250ZW50
c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OnVwbG9hZFRleHR1cmVz
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6cGVyZm9ybVRpbGVKb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6ZHJhd1RpbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlcjo6VGV4dHVyZUpvYjo6VGV4dHVyZUpvYik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyOjpUZXh0dXJlSm9iOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyOjpUZXh0dXJlSm9iOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChUZXh0
dXJlSm9iKToKKyAgICAgICAgKExheWVyVGlsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmNyZWF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6Y29sbGVj
dEdhcmJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJl
YWQ6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdU
aHJlYWQ6OnJlc2l6ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29t
cG9zaXRpbmdUaHJlYWQ6OmV2aWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkLmg6CisgICAgICAgIChUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6Wm9tYmllVGV4dHVyZTo6
Wm9tYmllVGV4dHVyZSk6CisgICAgICAgIChab21iaWVUZXh0dXJlKToKKworMjAxMy0wNC0xMCAg
QXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKICAgICAgICAgW0JsYWNrQmVycnld
IFJlbmFtZSBCbGFja0JlcnJ5IHNwZWNpZmljIFRleHR1cmUgY2xhc3MKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzgxCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nCmluZGV4IDMwOWMwMjZlNTkyMGRiOTZjMGE1NzVmMTIwOWM4OTFkZDQ4OTc5
ZjIuLjIwYjYzNTk5YWI0NDg4Y2JlNmRiYTk3MzI2M2EyY2Q4MjI5NzZlNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEzLTA0LTEwICBBcnZpZCBO
aWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gTGF5ZXJU
ZXh0dXJlIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTQyNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGFwdCB0byB0aGUgTGF5ZXJUZXh0dXJlIHJlZmFjdG9yaW5nIGRvd24gaW4g
V2ViQ29yZS4KKworICAgICAgICBQUiAzMjI4ODIKKworICAgICAgICAqIEFwaS9XZWJPdmVybGF5
LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViT3ZlcmxheUxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6
ZHJhd1RleHR1cmVzKToKKworMjAxMy0wNC0xMCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJp
bS5jb20+CisKICAgICAgICAgW0JsYWNrQmVycnldIFJlbmFtZSBCbGFja0JlcnJ5IHNwZWNpZmlj
IFRleHR1cmUgY2xhc3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1NzgxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3Bw
CmluZGV4IDBhNDAwZjk3MTdlODUwNGYyMDIzMjA4YjM5MjUzMzFmMzM3ZjNjZDkuLmJkMjI5YThk
YTg4ZmZhNzMyOWYxY2JhZDM4N2YxNTAzODAwMTkzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
ckNvbXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgTGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdUcmFuc2ZvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGV4dHVy
ZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZUFjY2Vzc2VkKGxheWVyUmVuZGVyZXJT
dXJmYWNlKCktPnRleHR1cmUoKSk7Ci0gICAgICAgIEdMdWludCBzdXJmYWNlVGV4SUQgPSByZWlu
dGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUoc3VyZmFjZVRleHR1cmUt
PnRleHR1cmVJZCgpKSk7CisgICAgICAgIEdMdWludCBzdXJmYWNlVGV4SUQgPSBzdXJmYWNlVGV4
dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCk7CiAKICAgICAgICAgaWYgKCFzdXJmYWNlVGV4SUQpIHsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjg2LDE4ICsyODYsOCBAQCB2
b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkcmF3VHJhbnNmbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hc2spIHsK
LSAgICAgICAgICAgIExheWVyVGV4dHVyZSogbWFza1RleHR1cmUgPSBtYXNrLT5jb250ZW50c1Rl
eHR1cmUoKTsKLSAgICAgICAgICAgIGlmIChtYXNrVGV4dHVyZSkgewotICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrVGV4SUQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZm
ZXJIYW5kbGUobWFza1RleHR1cmUtPnRleHR1cmVJZCgpKSk7Ci0KLSAgICAgICAgICAgICAgICAv
LyBGb3JjZSBjcmVhdGlvbiBpZiBpdCdzIDAKLSAgICAgICAgICAgICAgICBpZiAoIW1hc2tUZXhJ
RCkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNhbGwgd2lsbCBjYXVzZSBkaXNwbGF5
IGxpc3QgdG8gcmVuZGVyIHRvIGJhY2tpbmcsIHdoaWNoIGNhbiBtdXRhdGUgYSBsb3Qgb2YgR0wg
c3RhdGUuCi0gICAgICAgICAgICAgICAgICAgIEdMRVMyQ29udGV4dFN0YXRlOjpQcm9ncmFtU3Rh
dGVTYXZlciBwcm9ncmFtU2F2ZXI7Ci0gICAgICAgICAgICAgICAgICAgIEdMRVMyQ29udGV4dFN0
YXRlOjpUZXh0dXJlQW5kRkJPU3RhdGVTYXZlciB0ZXh0dXJlU2F2ZXI7Ci0gICAgICAgICAgICAg
ICAgICAgIGxvY2tBbmRCaW5kQnVmZmVyR0xUZXh0dXJlKG1hc2tUZXh0dXJlLT50ZXh0dXJlSWQo
KSwgR0xfVEVYVFVSRV8yRCk7Ci0gICAgICAgICAgICAgICAgICAgIG1hc2tUZXhJRCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShtYXNrVGV4dHVyZS0+dGV4
dHVyZUlkKCkpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTGF5ZXJUZXh0
dXJlKiBtYXNrVGV4dHVyZSA9IG1hc2stPmNvbnRlbnRzVGV4dHVyZSgpKSB7CisgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2tUZXhJRCA9IG1hc2tUZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKTsK
IAogICAgICAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7CiAgICAgICAg
ICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtYXNrVGV4SUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZp
bHRlclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKaW5kZXggZjFmZGYwODcwODc5M2JlYWY1OTU1
Y2M2YWFkNGU5ZmYxZWU2NmJiMS4uYTg0Nzg3NDhjNzYwYzRkMjYxZDBhZjA5NTMwYjgzZTIxZjg5
MDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCkBAIC01MDAsMTEg
KzUwMCw3IEBAIGJvb2wgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6aW5pdGlhbGl6ZVNoYXJlZEdMT2Jq
ZWN0cygpCiAKIHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6cGluZyhMYXllclJlbmRlcmVyU3Vy
ZmFjZSogc3VyZmFjZSkKIHsKLSAgICBHTHVpbnQgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdM
dWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUobV90ZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwotICAg
IGlmICghdGV4aWQpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjps
b2NrQW5kQmluZEJ1ZmZlckdMVGV4dHVyZShtX3RleHR1cmUtPnRleHR1cmVJZCgpLCBHTF9URVhU
VVJFXzJEKTsKLSAgICAgICAgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZv
cm1CdWZmZXJIYW5kbGUobV90ZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwotICAgIH0KKyAgICBHTHVp
bnQgdGV4aWQgPSBtX3RleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpOwogCiAgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRCgKICAgICAgICAgR0xfRlJBTUVCVUZGRVIsCkBAIC01MTUsNyArNTExLDcg
QEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpwaW5nKExheWVyUmVuZGVyZXJTdXJmYWNlKiBz
dXJmYWNlKQogICAgICk7CiAgICAgZ2xCaW5kVGV4dHVyZSgKICAgICAgICAgR0xfVEVYVFVSRV8y
RCwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxl
KHN1cmZhY2UtPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpKQorICAgICAgICBzdXJmYWNlLT50ZXh0
dXJlKCktPnBsYXRmb3JtVGV4dHVyZSgpCiAgICAgKTsKIH0KIApAQCAtNTI1LDIyICs1MjEsMTgg
QEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpwb25nKExheWVyUmVuZGVyZXJTdXJmYWNlKiBz
dXJmYWNlKQogICAgICAgICBHTF9GUkFNRUJVRkZFUiwKICAgICAgICAgR0xfQ09MT1JfQVRUQUNI
TUVOVDAsCiAgICAgICAgIEdMX1RFWFRVUkVfMkQsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShzdXJmYWNlLT50ZXh0dXJlKCktPnRleHR1cmVJ
ZCgpKSksCisgICAgICAgIHN1cmZhY2UtPnRleHR1cmUoKS0+cGxhdGZvcm1UZXh0dXJlKCksCiAg
ICAgICAgIDAKICAgICApOwogICAgIGdsQmluZFRleHR1cmUoCiAgICAgICAgIEdMX1RFWFRVUkVf
MkQsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRs
ZShtX3RleHR1cmUtPnRleHR1cmVJZCgpKSkKKyAgICAgICAgbV90ZXh0dXJlLT5wbGF0Zm9ybVRl
eHR1cmUoKQogICAgICk7CiB9CiAKIHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6cHVzaFNuYXBz
aG90KExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlLCBpbnQgc291cmNlSWQpCiB7Ci0gICAg
R0x1aW50IHRleGlkID0gcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFu
ZGxlKG1fc25hcHNob3RUZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwotICAgIGlmICghdGV4aWQpIHsK
LSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpsb2NrQW5kQmluZEJ1ZmZl
ckdMVGV4dHVyZShtX3NuYXBzaG90VGV4dHVyZS0+dGV4dHVyZUlkKCksIEdMX1RFWFRVUkVfMkQp
OwotICAgICAgICB0ZXhpZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZl
ckhhbmRsZShtX3NuYXBzaG90VGV4dHVyZS0+dGV4dHVyZUlkKCkpKTsKLSAgICB9CisgICAgR0x1
aW50IHRleGlkID0gbV9zbmFwc2hvdFRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpOwogCiAgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCgKICAgICAgICAgR0xfRlJBTUVCVUZGRVIsCkBAIC01Njgs
NyArNTYwLDcgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpwb3BTbmFwc2hvdCgpCiAgICAg
Z2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CiAgICAgZ2xCaW5kVGV4dHVyZSgK
ICAgICAgICAgR0xfVEVYVFVSRV8yRCwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+
KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1fc25hcHNob3RUZXh0dXJlLT50ZXh0dXJlSWQoKSkpCisg
ICAgICAgIG1fc25hcHNob3RUZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQogICAgICk7CiB9CiAK
QEAgLTcyMCwxMyArNzEyLDcgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlv
bnModW5zaWduZWQmIGZibywgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGEKIAogICAgICAgICBp
ZiAoYWN0aW9uc1tpXS0+c2hvdWxkUHVzaFNuYXBzaG90KCkpIHsKICAgICAgICAgICAgIFJlZlB0
cjxMYXllclRleHR1cmU+IGN1cnJlbnRUZXh0dXJlID0gKCEoaSAlIDIpID8gc3VyZmFjZS0+dGV4
dHVyZSgpIDogbV90ZXh0dXJlKTsKLSAgICAgICAgICAgIEdMdWludCB0ZXhpZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShjdXJyZW50VGV4dHVyZS0+dGV4
dHVyZUlkKCkpKTsKLSAgICAgICAgICAgIGlmICghdGV4aWQpIHsKLSAgICAgICAgICAgICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmxvY2tBbmRCaW5kQnVmZmVyR0xUZXh0dXJl
KGN1cnJlbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSwgR0xfVEVYVFVSRV8yRCk7Ci0gICAgICAgICAg
ICAgICAgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJIYW5k
bGUoY3VycmVudFRleHR1cmUtPnRleHR1cmVJZCgpKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHB1c2hTbmFwc2hvdChzdXJmYWNlLCB0ZXhpZCk7CisgICAgICAgICAgICBwdXNoU25h
cHNob3Qoc3VyZmFjZSwgY3VycmVudFRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIShpICUgMikpCiAgICAgICAgICAgICBwaW5nKHN1cmZhY2UpOyAv
LyBTZXQgZnJhbWVidWZmZXIgdG8gb3VycywgYW5kIHRleHR1cmUgdG8gcGFyZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclJlbmRlcmVyLmNwcAppbmRleCA4ODdkY2RhOTk5ZTRhYzgxZDJhYjE4ZWMyODcwMTQ5Yjli
NzNlNDc0Li5hNTc2Y2E0ZDZmYzAyZDA1N2FiYzUyMzhkNWMzMjRmZmVhNzk5OTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJSZW5kZXJlci5jcHAKQEAgLTQ0NSwxMSArNDQ1LDcgQEAgYm9vbCBMYXllclJlbmRl
cmVyOjp1c2VTdXJmYWNlKExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlKQogCiAgICAgc3Vy
ZmFjZS0+ZW5zdXJlVGV4dHVyZSgpOwogCi0gICAgR0x1aW50IHRleGlkID0gcmVpbnRlcnByZXRf
Y2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKHN1cmZhY2UtPnRleHR1cmUoKS0+dGV4
dHVyZUlkKCkpKTsKLSAgICBpZiAoIXRleGlkKSB7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6bG9ja0FuZEJpbmRCdWZmZXJHTFRleHR1cmUoc3VyZmFjZS0+dGV4dHVy
ZSgpLT50ZXh0dXJlSWQoKSwgR0xfVEVYVFVSRV8yRCk7Ci0gICAgICAgIHRleGlkID0gcmVpbnRl
cnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKHN1cmZhY2UtPnRleHR1cmUo
KS0+dGV4dHVyZUlkKCkpKTsKLSAgICB9CisgICAgR0x1aW50IHRleGlkID0gc3VyZmFjZS0+dGV4
dHVyZSgpLT5wbGF0Zm9ybVRleHR1cmUoKTsKIAogICAgIGlmICghbV9mYm8pCiAgICAgICAgIGds
R2VuRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5jcHAKaW5kZXgg
ZWRiYzUzMDE0NGRmZTVjZWE1YWYxMzYzNWMxNzAyMGY2ZDE4MzBhYy4uZTg0YzlkZDdjNWUyZjJh
MGM3M2Y1MDQ2NjY4ZWZiMmQyNzQ5ZWQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5oIgogCisj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR0xFUzJDb250ZXh0U3RhdGUuaD4KICNpbmNsdWRl
IDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxHTEVTMi9n
bDIuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTM0LDkgKzM1LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBMYXllclRleHR1cmU6OkxheWVyVGV4dHVyZShib29sIGlzQ29s
b3IpCiAgICAgOiBtX3Byb3RlY3Rpb25Db3VudCgwKQotICAgICwgbV9oYW5kbGUoMCkKKyAgICAs
IG1fYnVmZmVyKDApCiAgICAgLCBtX2lzQ29sb3IoaXNDb2xvcikKLSAgICAsIG1faXNPcGFxdWUo
ZmFsc2UpCiAgICAgLCBtX2J1ZmZlclNpemVJbkJ5dGVzKDApCiB7CiAgICAgdGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQoKS0+aW5zdGFsbCh0aGlzLCBJbnRTaXplKCksIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7CkBAIC00NywyOSArNDcs
MjggQEAgTGF5ZXJUZXh0dXJlOjp+TGF5ZXJUZXh0dXJlKCkKICAgICB0ZXh0dXJlQ2FjaGVDb21w
b3NpdGluZ1RocmVhZCgpLT50ZXh0dXJlRGVzdHJveWVkKHRoaXMpOwogfQogCi12b2lkIExheWVy
VGV4dHVyZTo6dXBkYXRlQ29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29u
dGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZSwgYm9v
bCBpc09wYXF1ZSkKK3ZvaWQgTGF5ZXJUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVyKQogewotICAgIGlmIChtX2hhbmRs
ZSkKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVy
KG1faGFuZGxlKTsKLSAgICBtX2hhbmRsZSA9IGNvbnRlbnRzOwotICAgIHNpemVfdCBuZXdCdWZm
ZXJTaXplSW5CeXRlcyA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6YnVmZmVyU2l6
ZUluQnl0ZXMobV9oYW5kbGUpOworICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVyKG1fYnVmZmVyKTsKKyAgICBtX2J1
ZmZlciA9IGJ1ZmZlcjsKKyAgICBzaXplX3QgbmV3QnVmZmVyU2l6ZUluQnl0ZXMgPSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmJ1ZmZlclNpemVJbkJ5dGVzKG1fYnVmZmVyKTsKICAg
ICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50ZXh0dXJlU2l6ZUluQnl0ZXNDaGFu
Z2VkKHRoaXMsIG5ld0J1ZmZlclNpemVJbkJ5dGVzIC0gbV9idWZmZXJTaXplSW5CeXRlcyk7CiAg
ICAgbV9idWZmZXJTaXplSW5CeXRlcyA9IG5ld0J1ZmZlclNpemVJbkJ5dGVzOwogfQogCiB2b2lk
IExheWVyVGV4dHVyZTo6c2V0Q29udGVudHNUb0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
LSAgICBtX2lzT3BhcXVlID0gIWNvbG9yLmhhc0FscGhhKCk7CiAgICAgUkdCQTMyIHJnYmEgPSBj
b2xvci5yZ2IoKTsKIAotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVyKG1faGFuZGxlKTsKKyAgICBpZiAobV9idWZm
ZXIpCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6ZGVzdHJveUJ1ZmZl
cihtX2J1ZmZlcik7CiAKLSAgICBtX2hhbmRsZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6Y3JlYXRlQnVmZmVyKEludFNpemUoMSwgMSksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpH
cmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkdyYXBoaWNzOjpQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogZ2MgPSBsb2NrQnVmZmVyRHJhd2Fi
bGUobV9oYW5kbGUpOworICAgIG1fYnVmZmVyID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBo
aWNzOjpjcmVhdGVCdWZmZXIoSW50U2l6ZSgxLCAxKSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCYWNrZWRXaGVuTmVjZXNzYXJ5KTsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBnYyA9IGxvY2tCdWZmZXJEcmF3YWJs
ZShtX2J1ZmZlcik7CiAgICAgZ2MtPnNldEZpbGxDb2xvcihyZ2JhKTsKICAgICBnYy0+YWRkRmls
bFJlY3QoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZsb2F0UmVjdCgwLCAwLCAxLCAxKSk7Ci0gICAg
cmVsZWFzZUJ1ZmZlckRyYXdhYmxlKG1faGFuZGxlKTsKKyAgICByZWxlYXNlQnVmZmVyRHJhd2Fi
bGUobV9idWZmZXIpOwogCiAgICAgSW50U2l6ZSBvbGRTaXplID0gbV9zaXplOwogICAgIG1fc2l6
ZSA9IEludFNpemUoMSwgMSk7CkBAIC03OSw3ICs3OCw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlOjpz
ZXRDb250ZW50c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBib29sIExheWVyVGV4dHVy
ZTo6cHJvdGVjdChjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkJ1ZmZlclR5cGUgdHlwZSkKIHsKLSAgICBpZiAoIWhhc1RleHR1cmUoKSkgeworICAg
IGlmICghbV9idWZmZXIpIHsKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYmVlbiBldmljdGVkIGJ5
IHRoZSBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCwKICAgICAgICAgLy8gYXR0ZW1wdCB0
byBpbnN0YWxsIHVzIGFnYWluLgogICAgICAgICBpZiAoIXRleHR1cmVDYWNoZUNvbXBvc2l0aW5n
VGhyZWFkKCktPmluc3RhbGwodGhpcywgc2l6ZSwgdHlwZSkpCkBAIC05Niw2ICs5NSwyNiBAQCBi
b29sIExheWVyVGV4dHVyZTo6cHJvdGVjdChjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OgogICAgIHJldHVybiB0cnVlOwogfQogCitQbGF0Zm9ybTNE
T2JqZWN0IExheWVyVGV4dHVyZTo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QKK3sKKyAgICB1c2lu
ZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOworCisgICAgUGxhdGZv
cm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1cmUgPSByZWludGVycHJldF9jYXN0PFBsYXRmb3JtM0RP
YmplY3Q+KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1fYnVmZmVyKSk7CisKKyAgICAvLyBGb3JjZSBj
cmVhdGlvbiBpZiBpdCdzIDAKKyAgICBpZiAoIXBsYXRmb3JtVGV4dHVyZSkgeworICAgICAgICAv
LyBUaGlzIGNhbGwgY2FuIGNhdXNlIGRpc3BsYXkgbGlzdCB0byByZW5kZXIgdG8gYmFja2luZywg
d2hpY2ggY2FuIG11dGF0ZSBhIGxvdCBvZiBHTCBzdGF0ZS4KKyAgICAgICAgR0xFUzJDb250ZXh0
U3RhdGU6OlZlcnRleEF0dHJpYnV0ZVN0YXRlU2F2ZXIgdmVydGV4QXR0cmliU3RhdGVTYXZlcjsK
KyAgICAgICAgR0xFUzJDb250ZXh0U3RhdGU6OlByb2dyYW1TdGF0ZVNhdmVyIHByb2dyYW1TYXZl
cjsKKyAgICAgICAgR0xFUzJDb250ZXh0U3RhdGU6OlRleHR1cmVBbmRGQk9TdGF0ZVNhdmVyIHRl
eHR1cmVTYXZlcjsKKworICAgICAgICBsb2NrQW5kQmluZEJ1ZmZlckdMVGV4dHVyZShtX2J1ZmZl
ciwgR0xfVEVYVFVSRV8yRCk7CisgICAgICAgIHBsYXRmb3JtVGV4dHVyZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShtX2J1ZmZlcikpOworICAgIH0KKwor
ICAgIHJldHVybiBwbGF0Zm9ybVRleHR1cmU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVy
ZS5oCmluZGV4IGQ4NmE1M2QyZTE1NzRkNDYxMDViNjVlMzE0NThkYWIxMDMyYWFjZjAuLjBkNzRh
ZTQ1OTkyYjhkMjZiM2UwYTQ5MWEyODdmYzQ3MDkxN2QxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRleHR1cmUu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNiArMjEsNyBAQAogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNE
LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
R3JhcGhpY3MuaD4KQEAgLTQ3LDI0ICs0OCwyMiBAQCBwdWJsaWM6CiAKICAgICB+TGF5ZXJUZXh0
dXJlKCk7CiAKLSAgICB0eXBlZGVmIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVm
ZmVyKiBHcHVIYW5kbGU7Ci0gICAgdHlwZWRlZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkJ1ZmZlciogSG9zdFR5cGU7CisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4g
IW1fYnVmZmVyOyB9CiAKLSAgICBHcHVIYW5kbGUgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9oYW5kbGU7IH0KLSAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9oYW5kbGU7
IH0KLSAgICBib29sIGhhc1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZTsgfQorICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgYm9vbCBpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbG9yOyB9Ci0gICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPcGFx
dWU7IH0KIAogICAgIGJvb2wgaXNQcm90ZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3Byb3RlY3Rp
b25Db3VudCA+IDA7IH0KICAgICB2b2lkIHByb3RlY3QoKSB7ICsrbV9wcm90ZWN0aW9uQ291bnQ7
IH0KICAgICB2b2lkIHVucHJvdGVjdCgpIHsgLS1tX3Byb3RlY3Rpb25Db3VudDsgfQogCi0gICAg
Ly8gVGhpcyB3aWxsIGVuc3VyZSB0aGUgdGV4dHVyZSBoYXMgYmFja2luZyB3aXRoIHRoZSBzcGVj
aWZpZWQgc2l6ZQorICAgIC8vIFRoaXMgd2lsbCBlbnN1cmUgYSBidWZmZXIgaXMgYWxsb2NhdGVk
IGZvciB0aGlzIHRleHR1cmUgd2l0aCB0aGUgcmVxdWVzdGVkIGJhY2tpbmcgYW5kIHNpemUKICAg
ICBib29sIHByb3RlY3QoY29uc3QgSW50U2l6ZSYsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6QnVmZmVyVHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QmFja2Vk
V2hlbk5lY2Vzc2FyeSk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IEhvc3RUeXBl
JiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxl
LCBib29sIGlzT3BhcXVlKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0OworCisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OkJ1ZmZlciopOwogICAgIHZvaWQgc2V0Q29udGVudHNUb0NvbG9yKGNvbnN0IENv
bG9yJik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAg
LTc4LDExICs3NywxMSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlQ2FjaGVD
b21wb3NpdGluZ1RocmVhZDsKIAogICAgIExheWVyVGV4dHVyZShib29sIGlzQ29sb3IgPSBmYWxz
ZSk7Ci0gICAgdm9pZCBzZXRUZXh0dXJlSWQoR3B1SGFuZGxlIGlkKQorICAgIHZvaWQgc2V0QnVm
ZmVyKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBidWZmZXIpCiAgICAg
ewotICAgICAgICBtX2hhbmRsZSA9IGlkOworICAgICAgICBtX2J1ZmZlciA9IGJ1ZmZlcjsKIAot
ICAgICAgICAvLyBXZSBhc3N1bWUgaXQgaXMgYSBuZXdseSBhbGxvY2F0ZWQgdGV4dHVyZSwKKyAg
ICAgICAgLy8gV2UgYXNzdW1lIGl0IGlzIGEgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciwKICAgICAg
ICAgLy8gYW5kIHRodXMgZW1wdHksIG9yIDAsIHdoaWNoIHdvdWxkIG9mIGNvdXJzZQogICAgICAg
ICAvLyBiZSBlbXB0eS4KICAgICAgICAgbV9zaXplID0gSW50U2l6ZSgpOwpAQCAtOTIsMTAgKzkx
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBt
X3NpemUgPSBzaXplOyB9CiAKICAgICBpbnQgbV9wcm90ZWN0aW9uQ291bnQ7Ci0gICAgR3B1SGFu
ZGxlIG1faGFuZGxlOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVy
KiBtX2J1ZmZlcjsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBib29sIG1faXNDb2xvcjsKLSAg
ICBib29sIG1faXNPcGFxdWU7CiAgICAgc2l6ZV90IG1fYnVmZmVyU2l6ZUluQnl0ZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyVGlsZS5jcHAKaW5kZXggMGQ5NzNhZjE0NjM3ZTlhNTlmNTA3MWRkOTZlNzRmOTJm
Zjk2ZWVlYy4uMGJkZmRjYmVlZWIwOTM0NTdmMzNhMzc4ODFkNjI1ZmRkNzgyYjNlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRp
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUaWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzksOSArMzks
OSBAQCBMYXllclRpbGU6On5MYXllclRpbGUoKQogICAgIHNldFZpc2libGUoZmFsc2UpOwogfQog
Ci12b2lkIExheWVyVGlsZTo6c2V0Q29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlw
ZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBUaWxlSW5kZXgmIGlu
ZGV4LCBib29sIGlzT3BhcXVlKQordm9pZCBMYXllclRpbGU6OnNldENvbnRlbnRzKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBjb250ZW50cykKIHsKLSAgICBzZXRUZXh0
dXJlKHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCktPnRleHR1cmVGb3JUaWxlZENvbnRl
bnRzKGNvbnRlbnRzLCB0aWxlUmVjdCwgaW5kZXgsIGlzT3BhcXVlKSk7CisgICAgc2V0VGV4dHVy
ZSh0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50ZXh0dXJlRm9yQ29udGVudHMoY29u
dGVudHMpKTsKIH0KIAogdm9pZCBMYXllclRpbGU6OnNldENvbnRlbnRzVG9Db2xvcihjb25zdCBD
b2xvciYgY29sb3IpCkBAIC00OSw5ICs0OSw5IEBAIHZvaWQgTGF5ZXJUaWxlOjpzZXRDb250ZW50
c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHNldFRleHR1cmUodGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZUZvckNvbG9yKGNvbG9yKSk7CiB9CiAKLXZvaWQg
TGF5ZXJUaWxlOjp1cGRhdGVDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBj
b250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVj
dCwgYm9vbCBpc09wYXF1ZSkKK3ZvaWQgTGF5ZXJUaWxlOjp1cGRhdGVDb250ZW50cyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogY29udGVudHMpCiB7Ci0gICAgc2V0VGV4
dHVyZSh0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT51cGRhdGVDb250ZW50cyhtX3Rl
eHR1cmUsIGNvbnRlbnRzLCBkaXJ0eVJlY3QsIHRpbGVSZWN0LCBpc09wYXF1ZSkpOworICAgIHNl
dFRleHR1cmUodGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dXBkYXRlQ29udGVudHMo
bV90ZXh0dXJlLCBjb250ZW50cykpOwogfQogCiB2b2lkIExheWVyVGlsZTo6ZGlzY2FyZENvbnRl
bnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyVGlsZS5oCmluZGV4IDI4NjA4MTdhYTY1NDdlNGI2NTAzYjExYTE0Mzk0ZGUx
NjhmZDI0ODguLmIzOTliZmNjZDA5ZjkxMWQ4MGNhM2IyOTBjYWRhMmRiYjk4MGRmMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJU
aWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDQsMTEgKzQ0LDEx
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dHNEaXJ0eSB8fCAhbV90ZXh0dXJlIHx8IG1fdGV4dHVyZS0+aXNEaXJ0eSgpOyB9CiAKLSAgICBi
b29sIGhhc1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUgJiYgbV90ZXh0dXJlLT5o
YXNUZXh0dXJlKCk7IH0KKyAgICBib29sIGhhc1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmUgJiYgbV90ZXh0dXJlLT5idWZmZXIoKTsgfQogCi0gICAgdm9pZCBzZXRDb250ZW50cyhj
b25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYsIGJvb2wgaXNPcGFxdWUpOworICAgIHZvaWQgc2V0Q29u
dGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqKTsKICAgICB2b2lk
IHNldENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYpOwotICAgIHZvaWQgdXBkYXRlQ29udGVu
dHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGJvb2wgaXNPcGFxdWUpOworICAg
IHZvaWQgdXBkYXRlQ29udGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZm
ZXIqKTsKICAgICB2b2lkIGRpc2NhcmRDb250ZW50cygpOwogCiAgICAgLy8gVGhlIGN1cnJlbnQg
dGV4dHVyZSBpcyBhbiBhY2N1cmF0ZSBwcmV2aWV3IG9mIHRoaXMgbGF5ZXIsIGJ1dCBhIG1vcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUaWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyVGlsZXIuY3BwCmluZGV4IDdjZjgxYWMyZDk1OGUyYTI1M2FlNGJkYjMxYzUxYTg4
N2MzZmM5YzYuLjcxOWQ5ZWI2NmUwOTY1YzM0NmQ3NWRiYmQwZmI4ODcyY2Q1ZTkxNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJU
aWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclRpbGVyLmNwcApAQCAtMjU0LDE4ICsyNTQsMTQgQEAgdm9pZCBMYXllclRpbGVyOjp1
cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZChkb3VibGUgc2NhbGUpCiAgICAgICAgIGlmIChC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVyID0gY3JlYXRlQnVm
ZmVyKGJ1ZmZlclNpemUpKSB7CiAgICAgICAgICAgICBJbnRSZWN0IGNvbnRlbnRzUmVjdChJbnRQ
b2ludDo6emVybygpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50
Q29udGVudHMoYnVmZmVyLCBjb250ZW50c1JlY3QsIHNjYWxlKTsKLQotICAgICAgICAgICAgYm9v
bCBpc09wYXF1ZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdl
KCkpCi0gICAgICAgICAgICAgICAgaXNPcGFxdWUgPSAhc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2Uq
PihpbWFnZSktPmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Ci0gICAgICAgICAgICBhZGRUZXh0dXJl
Sm9iKFRleHR1cmVKb2I6OnNldENvbnRlbnRzKGJ1ZmZlciwgY29udGVudHNSZWN0LCBpc09wYXF1
ZSkpOworICAgICAgICAgICAgYWRkVGV4dHVyZUpvYihUZXh0dXJlSm9iOjpzZXRDb250ZW50cyhi
dWZmZXIsIGNvbnRlbnRzUmVjdCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2xheWVy
LT5kcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBmb3IgKEhhc2hTZXQ8VGlsZUluZGV4Pjo6aXRl
cmF0b3IgaXQgPSByZW5kZXJKb2JzLmJlZ2luKCk7IGl0ICE9IHJlbmRlckpvYnMuZW5kKCk7ICsr
aXQpIHsKICAgICAgICAgICAgIGlmIChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1
ZmZlciogYnVmZmVyID0gY3JlYXRlQnVmZmVyKHRpbGVTaXplKCkpKSB7CiAgICAgICAgICAgICAg
ICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JUaWxlKCppdCwgcmVxdWlyZWRUZXh0dXJlU2l6
ZSk7CiAgICAgICAgICAgICAgICAgbV9sYXllci0+cGFpbnRDb250ZW50cyhidWZmZXIsIHRpbGVS
ZWN0LCBzY2FsZSk7Ci0gICAgICAgICAgICAgICAgYWRkVGV4dHVyZUpvYihUZXh0dXJlSm9iOjp1
cGRhdGVDb250ZW50cyhidWZmZXIsIHRpbGVSZWN0LCBtX2xheWVyLT5pc09wYXF1ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgYWRkVGV4dHVyZUpvYihUZXh0dXJlSm9iOjp1cGRhdGVDb250ZW50cyhi
dWZmZXIsIHRpbGVSZWN0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0z
NzAsMTEgKzM2Niw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChM
YXllckNvbXBvc2l0aW5nVGhyZWFkKikKICAgICAgICAgICAgIG1fdGlsZXMuYWRkKHRpbGVKb2Jz
SXRlci0+a2V5LCB0aWxlKTsKICAgICAgICAgfQogCi0gICAgICAgIEludFJlY3QgdGlsZVJlY3Qo
b3JpZ2luLCB0aWxlU2l6ZSgpKTsKLSAgICAgICAgdGlsZVJlY3Quc2V0V2lkdGgobWluKG1fcmVx
dWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpIC0gdGlsZVJlY3QueCgpLCB0aWxlUmVjdC53aWR0aCgp
KSk7Ci0gICAgICAgIHRpbGVSZWN0LnNldEhlaWdodChtaW4obV9yZXF1aXJlZFRleHR1cmVTaXpl
LmhlaWdodCgpIC0gdGlsZVJlY3QueSgpLCB0aWxlUmVjdC5oZWlnaHQoKSkpOwotCi0gICAgICAg
IHBlcmZvcm1UaWxlSm9iKHRpbGUsICp0aWxlSm9ic0l0ZXItPnZhbHVlLCB0aWxlUmVjdCk7Cisg
ICAgICAgIHBlcmZvcm1UaWxlSm9iKHRpbGUsICp0aWxlSm9ic0l0ZXItPnZhbHVlKTsKICAgICB9
CiAKICAgICBtX3RleHR1cmVKb2JzLmNsZWFyKCk7CkBAIC00MTksMTQgKzQxMSwxNCBAQCB2b2lk
IExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3QgVGlsZUluZGV4JiBpbmRleCwgY29uc3QgVGV4
dHVyZUpvYiYgam9iLCBUaWxlSgogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSAmam9iOwog
fQogCi12b2lkIExheWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSogdGlsZSwgY29u
c3QgVGV4dHVyZUpvYiYgam9iLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKK3ZvaWQgTGF5ZXJU
aWxlcjo6cGVyZm9ybVRpbGVKb2IoTGF5ZXJUaWxlKiB0aWxlLCBjb25zdCBUZXh0dXJlSm9iJiBq
b2IpCiB7CiAgICAgc3dpdGNoIChqb2IubV90eXBlKSB7CiAgICAgY2FzZSBUZXh0dXJlSm9iOjpT
ZXRDb250ZW50c1RvQ29sb3I6CiAgICAgICAgIHRpbGUtPnNldENvbnRlbnRzVG9Db2xvcihqb2Iu
bV9jb2xvcik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFRleHR1cmVKb2I6OlNldENvbnRl
bnRzOgotICAgICAgICB0aWxlLT5zZXRDb250ZW50cyhqb2IubV9jb250ZW50cywgdGlsZVJlY3Qs
IGluZGV4T2ZUaWxlKHRpbGVSZWN0LmxvY2F0aW9uKCkpLCBqb2IubV9pc09wYXF1ZSk7CisgICAg
ICAgIHRpbGUtPnNldENvbnRlbnRzKGpvYi5tX2NvbnRlbnRzKTsKICAgICAgICAgewogICAgICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZXNNdXRleCk7CiAgICAgICAgICAgICBpZiAo
dGlsZS0+cmVuZGVyU3RhdGUoKSA9PSBMYXllclRpbGU6OlJlbmRlclBlbmRpbmcpCkBAIC00MzQs
NyArNDI2LDcgQEAgdm9pZCBMYXllclRpbGVyOjpwZXJmb3JtVGlsZUpvYihMYXllclRpbGUqIHRp
bGUsIGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgY29uc3QgSW4KICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBUZXh0dXJlSm9iOjpVcGRhdGVDb250ZW50czoKLSAgICAgICAgdGls
ZS0+dXBkYXRlQ29udGVudHMoam9iLm1fY29udGVudHMsIGpvYi5tX2RpcnR5UmVjdCwgdGlsZVJl
Y3QsIGpvYi5tX2lzT3BhcXVlKTsKKyAgICAgICAgdGlsZS0+dXBkYXRlQ29udGVudHMoam9iLm1f
Y29udGVudHMpOwogICAgICAgICB7CiAgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90
aWxlc011dGV4KTsKICAgICAgICAgICAgIGlmICh0aWxlLT5yZW5kZXJTdGF0ZSgpID09IExheWVy
VGlsZTo6UmVuZGVyUGVuZGluZykKQEAgLTUwMyw3ICs0OTUsNyBAQCBib29sIExheWVyVGlsZXI6
OmRyYXdUaWxlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBkb3VibGUgc2NhbGUsIGNv
bnN0IFRpbAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZHJhd1Ry
YW5zZm9ybS5zY2FsZSgxLjAgLyBsYXllci0+Y29udGVudHNTY2FsZSgpKTsKICAgICAgICAgICAg
ICAgICBkcmF3VHJhbnNmb3JtLnNjYWxlKGxheWVyLT5zaXplSXNTY2FsZUludmFyaWFudCgpID8g
MS4wIC8gc2NhbGUgOiAxLjApOwotICAgICAgICAgICAgICAgIGJsaXRUb0J1ZmZlcigwLCB0ZXh0
dXJlLT50ZXh0dXJlSWQoKSwgcmVpbnRlcnByZXRfY2FzdDxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
VHJhbnNmb3JtYXRpb25NYXRyaXgmPihkcmF3VHJhbnNmb3JtKSwKKyAgICAgICAgICAgICAgICBi
bGl0VG9CdWZmZXIoMCwgdGV4dHVyZS0+YnVmZmVyKCksIHJlaW50ZXJwcmV0X2Nhc3Q8QmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlRyYW5zZm9ybWF0aW9uTWF0cml4Jj4oZHJhd1RyYW5zZm9ybSksCiAg
ICAgICAgICAgICAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6U291cmNl
T3ZlciwgZ2xvYmFsQWxwaGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxl
ci5oCmluZGV4IDUyYWQ1YjM3YjBjMmU2OTg3ZjNjYTBlMjYxOWE1NTcyOTI3ZDI5OTcuLmJkNDA3
MTY3NjE4YzI5NWQ4ZWM4NTkyYTRlMmEwMmUwM2E2NDkwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC04Niw3ICs4Niw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIFRleHR1cmVKb2IoVHlwZSB0eXBlLCBjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAg
ICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICAgICAgICAgICwgbV9jb250ZW50cygwKQotICAg
ICAgICAgICAgLCBtX2lzT3BhcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2RpcnR5UmVjdChJ
bnRQb2ludDo6emVybygpLCBuZXdTaXplKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
dHlwZSA9PSBSZXNpemVDb250ZW50cyk7CkBAIC05NSwxNiArOTQsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgVGV4dHVyZUpvYihUeXBlIHR5cGUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAg
ICAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICAgICAsIG1fY29udGVudHMoMCkKLSAg
ICAgICAgICAgICwgbV9pc09wYXF1ZShmYWxzZSkKICAgICAgICAgICAgICwgbV9kaXJ0eVJlY3Qo
ZGlydHlSZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBEaXNjYXJk
Q29udGVudHMgfHwgdHlwZSA9PSBEaXJ0eUNvbnRlbnRzKTsKICAgICAgICAgfQogCi0gICAgICAg
IFRleHR1cmVKb2IoVHlwZSB0eXBlLCBjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250
ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlzT3BhcXVlKQorICAgICAgICBU
ZXh0dXJlSm9iKFR5cGUgdHlwZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZm
ZXIqIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAgICAgLCBtX2NvbnRlbnRzKGNvbnRlbnRzKQotICAgICAgICAg
ICAgLCBtX2lzT3BhcXVlKGlzT3BhcXVlKQogICAgICAgICAgICAgLCBtX2RpcnR5UmVjdChkaXJ0
eVJlY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFVwZGF0ZUNvbnRl
bnRzIHx8IHR5cGUgPT0gU2V0Q29udGVudHMpOwpAQCAtMTE0LDE5ICsxMTEsMTggQEAgcHJpdmF0
ZToKICAgICAgICAgVGV4dHVyZUpvYihUeXBlIHR5cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29u
c3QgVGlsZUluZGV4JiBpbmRleCkKICAgICAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAg
ICAgICAsIG1fY29udGVudHMoMCkKLSAgICAgICAgICAgICwgbV9pc09wYXF1ZShmYWxzZSkKICAg
ICAgICAgICAgICwgbV9jb2xvcihjb2xvcikKICAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gU2V0Q29udGVudHNUb0NvbG9y
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHNldENvbnRlbnRzKGNv
bnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c1JlY3QsIGJvb2wgaXNPcGFxdWUpCisgICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHNldENv
bnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBjb250ZW50cywg
Y29uc3QgSW50UmVjdCYgY29udGVudHNSZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gVGV4dHVyZUpvYihTZXRDb250ZW50cywgY29udGVudHMsIGNvbnRlbnRzUmVjdCwgaXNPcGFx
dWUpOworICAgICAgICAgICAgcmV0dXJuIFRleHR1cmVKb2IoU2V0Q29udGVudHMsIGNvbnRlbnRz
LCBjb250ZW50c1JlY3QpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHNl
dENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFRpbGVJbmRleCYgaW5k
ZXgpIHsgcmV0dXJuIFRleHR1cmVKb2IoU2V0Q29udGVudHNUb0NvbG9yLCBjb2xvciwgaW5kZXgp
OyB9Ci0gICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IExheWVy
VGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJv
b2wgaXNPcGFxdWUpIHsgcmV0dXJuIFRleHR1cmVKb2IoVXBkYXRlQ29udGVudHMsIGNvbnRlbnRz
LCBkaXJ0eVJlY3QsIGlzT3BhcXVlKTsgfQorICAgICAgICBzdGF0aWMgVGV4dHVyZUpvYiB1cGRh
dGVDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogY29udGVu
dHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgeyByZXR1cm4gVGV4dHVyZUpvYihVcGRhdGVD
b250ZW50cywgY29udGVudHMsIGRpcnR5UmVjdCk7IH0KICAgICAgICAgc3RhdGljIFRleHR1cmVK
b2IgZGlzY2FyZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgeyByZXR1cm4gVGV4
dHVyZUpvYihEaXNjYXJkQ29udGVudHMsIGRpcnR5UmVjdCk7IH0KICAgICAgICAgc3RhdGljIFRl
eHR1cmVKb2IgcmVzaXplQ29udGVudHMoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkgeyByZXR1cm4g
VGV4dHVyZUpvYihSZXNpemVDb250ZW50cywgbmV3U2l6ZSk7IH0KICAgICAgICAgc3RhdGljIFRl
eHR1cmVKb2IgZGlydHlDb250ZW50cyhjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIHsgcmV0dXJu
IFRleHR1cmVKb2IoRGlydHlDb250ZW50cywgZGlydHlSZWN0KTsgfQpAQCAtMTM0LDggKzEzMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gbV90eXBlID09IFVu
a25vd247IH0KIAogICAgICAgICBUeXBlIG1fdHlwZTsKLSAgICAgICAgTGF5ZXJUZXh0dXJlOjpI
b3N0VHlwZSBtX2NvbnRlbnRzOwotICAgICAgICBib29sIG1faXNPcGFxdWU7CisgICAgICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBtX2NvbnRlbnRzOwogICAgICAg
ICBJbnRSZWN0IG1fZGlydHlSZWN0OwogICAgICAgICBDb2xvciBtX2NvbG9yOwogICAgICAgICBU
aWxlSW5kZXggbV9pbmRleDsKQEAgLTE1Niw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIC8vIENv
bXBvc2l0aW5nIHRocmVhZAogICAgIHZvaWQgdXBkYXRlVGlsZUNvbnRlbnRzKGNvbnN0IFRleHR1
cmVKb2ImLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBhZGRUaWxlSm9iKGNvbnN0IFRpbGVJ
bmRleCYsIGNvbnN0IFRleHR1cmVKb2ImLCBUaWxlSm9ic01hcCYpOwotICAgIHZvaWQgcGVyZm9y
bVRpbGVKb2IoTGF5ZXJUaWxlKiwgY29uc3QgVGV4dHVyZUpvYiYsIGNvbnN0IEludFJlY3QmKTsK
KyAgICB2b2lkIHBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSosIGNvbnN0IFRleHR1cmVKb2ImKTsK
ICAgICB2b2lkIHByb2Nlc3NUZXh0dXJlSm9iKGNvbnN0IFRleHR1cmVKb2ImLCBUaWxlSm9ic01h
cCYpOwogICAgIHZvaWQgcHJ1bmVUZXh0dXJlcygpOwogICAgIHZvaWQgdmlzaWJpbGl0eUNoYW5n
ZWQoYm9vbCBuZWVkc0Rpc3BsYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCBiNjUwMDViMDFiZDcwYzNmNWFlMWU1NzUyZDEw
ODk3NjhjNDQzMWY0Li4zMTRmMmM5ZWRlZTI0ZDQzYWFkYTc5YzIxY2U5N2NhZDA0M2IyOTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1Rl
eHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgPEdMRVMyL2dsMi5oPgogCiB1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJ1ZmZlcjsKK3VzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlw
ZTsKIAogI2RlZmluZSBERUJVR19URVhUVVJFX01FTU9SWV9VU0FHRSAwCiAKQEAgLTU4LDIyICs1
OSwxNiBAQCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6VGV4dHVyZUNhY2hlQ29tcG9z
aXRpbmdUaHJlYWQoKQogewogfQogCi1MYXllclRleHR1cmU6OkdwdUhhbmRsZSBUZXh0dXJlQ2Fj
aGVDb21wb3NpdGluZ1RocmVhZDo6YWxsb2NhdGVUZXh0dXJlSWQoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlIHR5cGUpCitCdWZm
ZXIqIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpjcmVhdGVCdWZmZXIoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgQnVmZmVyVHlwZSB0eXBlKQogewogICAgIHJldHVybiBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OmNyZWF0ZUJ1ZmZlcihzaXplLCB0eXBlKTsKIH0KIAotc3RhdGlj
IHZvaWQgZnJlZVRleHR1cmVJZChMYXllclRleHR1cmU6OkdwdUhhbmRsZSBpZCkKLXsKLSAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRlc3Ryb3lCdWZmZXIoaWQpOwotfQotCiB2
b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpjb2xsZWN0R2FyYmFnZSgpCiB7Ci0g
ICAgZm9yIChHYXJiYWdlOjppdGVyYXRvciBpdCA9IG1fZ2FyYmFnZS5iZWdpbigpOyBpdCAhPSBt
X2dhcmJhZ2UuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgWm9tYmllVGV4dHVyZSYgem9tYmllID0g
Kml0OwotICAgICAgICBmcmVlVGV4dHVyZUlkKHpvbWJpZS5pZCk7Ci0gICAgfQorICAgIGZvciAo
R2FyYmFnZTo6aXRlcmF0b3IgaXQgPSBtX2dhcmJhZ2UuYmVnaW4oKTsgaXQgIT0gbV9nYXJiYWdl
LmVuZCgpOyArK2l0KQorICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRl
c3Ryb3lCdWZmZXIoKCppdCkuYnVmZmVyKTsKKwogICAgIG1fZ2FyYmFnZS5jbGVhcigpOwogfQog
CkBAIC0xMDQsMTcgKzk5LDE3IEBAIHZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6
OnRleHR1cmVEZXN0cm95ZWQoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlKQogICAgIG1fdGV4dHVyZXMu
cmVtb3ZlKGl0KTsKIH0KIAotYm9vbCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6aW5z
dGFsbChMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFNpemUmIHNpemUsIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSB0eXBlKQorYm9vbCBUZXh0dXJlQ2Fj
aGVDb21wb3NpdGluZ1RocmVhZDo6aW5zdGFsbChMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFNpemUmIHNpemUsIEJ1ZmZlclR5cGUgdHlwZSkKIHsKICAgICBpZiAoIXRleHR1cmUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCF0ZXh0dXJlLT5oYXNUZXh0dXJlKCkgJiYg
IXNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIExheWVyVGV4dHVyZTo6R3B1SGFuZGxlIHRleHR1
cmVJZCA9IGFsbG9jYXRlVGV4dHVyZUlkKHNpemUsIHR5cGUpOwotICAgICAgICBpZiAoIXRleHR1
cmVJZCkKKyAgICBpZiAoIXRleHR1cmUtPmJ1ZmZlcigpICYmICFzaXplLmlzRW1wdHkoKSkgewor
ICAgICAgICBCdWZmZXIqIGJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcihzaXplLCB0eXBlKTsKKyAgICAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgdGV4
dHVyZS0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgICAgIHRleHR1cmUtPnNldEJ1ZmZl
cihidWZmZXIpOwogICAgICAgICB0ZXh0dXJlLT5zZXRTaXplKHNpemUpOwogICAgICAgICB0ZXh0
dXJlUmVzaXplZCh0ZXh0dXJlLCBJbnRTaXplKCkpOwogICAgIH0KQEAgLTEyNSwxNyArMTIwLDE3
IEBAIGJvb2wgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6Omluc3RhbGwoTGF5ZXJUZXh0
dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRTaXplCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnJlc2l6ZVRleHR1cmUoTGF5ZXJUZXh0dXJl
KiB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkJ1ZmZlclR5cGUgdHlwZSkKK2Jvb2wgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJl
YWQ6OnJlc2l6ZVRleHR1cmUoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiBz
aXplLCBCdWZmZXJUeXBlIHR5cGUpCiB7CiAgICAgSW50U2l6ZSBvbGRTaXplID0gdGV4dHVyZS0+
c2l6ZSgpOwogCiAgICAgLy8gUmVhbGxvY2F0ZSB0aGUgYnVmZmVyCi0gICAgTGF5ZXJUZXh0dXJl
OjpHcHVIYW5kbGUgdGV4dHVyZUlkID0gYWxsb2NhdGVUZXh0dXJlSWQoc2l6ZSwgdHlwZSk7Ci0g
ICAgaWYgKCF0ZXh0dXJlSWQpCisgICAgQnVmZmVyKiBidWZmZXIgPSBjcmVhdGVCdWZmZXIoc2l6
ZSwgdHlwZSk7CisgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGZyZWVUZXh0dXJlSWQodGV4dHVyZS0+dGV4dHVyZUlkKCkpOwotICAgIHRleHR1cmUtPnNldFRl
eHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
ZGVzdHJveUJ1ZmZlcih0ZXh0dXJlLT5idWZmZXIoKSk7CisgICAgdGV4dHVyZS0+c2V0QnVmZmVy
KGJ1ZmZlcik7CiAgICAgdGV4dHVyZS0+c2V0U2l6ZShzaXplKTsKICAgICB0ZXh0dXJlUmVzaXpl
ZCh0ZXh0dXJlLCBvbGRTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0Nyw3ICsxNDIsNyBA
QCB2b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpldmljdChjb25zdCBUZXh0dXJl
U2V0OjppdGVyYXRvciYgaXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheWVyVGV4dHVyZSog
dGV4dHVyZSA9ICppdDsKLSAgICBpZiAodGV4dHVyZS0+aGFzVGV4dHVyZSgpKSB7CisgICAgaWYg
KHRleHR1cmUtPmJ1ZmZlcigpKSB7CiAgICAgICAgIGludCBkZWx0YSA9IDA7CiAgICAgICAgIGRl
bHRhICs9IHRleHR1cmUtPndpZHRoKCkgKiB0ZXh0dXJlLT5oZWlnaHQoKSAqIExheWVyVGV4dHVy
ZTo6Ynl0ZXNQZXJQaXhlbCgpOwogICAgICAgICBkZWx0YSArPSB0ZXh0dXJlLT5zaXplSW5CeXRl
cygpOwpAQCAtMTU2LDcgKzE1MSw3IEBAIHZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJl
YWQ6OmV2aWN0KGNvbnN0IFRleHR1cmVTZXQ6Oml0ZXJhdG9yJiBpdCkKICAgICAgICAgbV9nYXJi
YWdlLmFwcGVuZChab21iaWVUZXh0dXJlKHRleHR1cmUpKTsKICAgICB9CiAKLSAgICB0ZXh0dXJl
LT5zZXRUZXh0dXJlSWQoMCk7CisgICAgdGV4dHVyZS0+c2V0QnVmZmVyKDApOwogfQogCiB2b2lk
IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlQWNjZXNzZWQoTGF5ZXJUZXh0
dXJlKiB0ZXh0dXJlKQpAQCAtMjA5LDE0ICsyMDQsMTQgQEAgdm9pZCBUZXh0dXJlQ2FjaGVDb21w
b3NpdGluZ1RocmVhZDo6c2V0TWVtb3J5VXNhZ2Uoc2l6ZV90IG1lbW9yeVVzYWdlKQogI2VuZGlm
CiB9CiAKLVBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1Ro
cmVhZDo6dGV4dHVyZUZvclRpbGVkQ29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlw
ZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBUaWxlSW5kZXgmIGlu
ZGV4LCBib29sIGlzT3BhcXVlKQorUGFzc1JlZlB0cjxMYXllclRleHR1cmU+IFRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yQ29udGVudHMoQnVmZmVyKiBjb250ZW50cykK
IHsKICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlID0gY3JlYXRlVGV4dHVyZSgpOwog
CiAgICAgLy8gUHJvdGVjdCBuZXdseSBjcmVhdGVkIHRleHR1cmUgZnJvbSBiZWluZyBldmljdGVk
LgogICAgIFRleHR1cmVQcm90ZWN0b3IgcHJvdGVjdG9yKHRleHR1cmUuZ2V0KCkpOwogCi0gICAg
dGV4dHVyZS0+dXBkYXRlQ29udGVudHMoY29udGVudHMsIHRpbGVSZWN0LCB0aWxlUmVjdCwgaXNP
cGFxdWUpOworICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGNvbnRlbnRzKTsKIAogICAgIHJl
dHVybiB0ZXh0dXJlLnJlbGVhc2UoKTsKIH0KQEAgLTI0Nyw3ICsyNDIsNyBAQCBQYXNzUmVmUHRy
PExheWVyVGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVGb3JD
b2xvcihjb25zdCBDbwogICAgIHJldHVybiB0ZXh0dXJlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxMYXllclRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVD
b250ZW50cyhjb25zdCBSZWZQdHI8TGF5ZXJUZXh0dXJlPiYgdGV4dHVyZUluLCBjb25zdCBMYXll
clRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBj
b25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgYm9vbCBpc09wYXF1ZSkKK1Bhc3NSZWZQdHI8TGF5ZXJU
ZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dXBkYXRlQ29udGVudHMoY29u
c3QgUmVmUHRyPExheWVyVGV4dHVyZT4mIHRleHR1cmVJbiwgQnVmZmVyKiBjb250ZW50cykKIHsK
ICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlKHRleHR1cmVJbik7CiAKQEAgLTI1OSw4
ICsyNTQsNyBAQCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRp
bmdUaHJlYWQ6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZgogICAgIC8vIFByb3RlY3QgbmV3bHkg
Y3JlYXRlZCB0ZXh0dXJlIGZyb20gYmVpbmcgZXZpY3RlZC4KICAgICBUZXh0dXJlUHJvdGVjdG9y
IHByb3RlY3Rvcih0ZXh0dXJlLmdldCgpKTsKIAotLy8gVE9ETzogaWYgdGhpcyBpcyBhIHBhcnRp
YWwgdXBkYXRlIHdlIG5lZWQgdG8gYmxpdCB0aGUgYnVmZmVyIG9uIHRvcCBvZiB0aGUgb3RoZXIK
LSAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhjb250ZW50cywgZGlydHlSZWN0LCB0aWxlUmVj
dCwgaXNPcGFxdWUpOworICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGNvbnRlbnRzKTsKIAog
ICAgIHJldHVybiB0ZXh0dXJlLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuaAppbmRleCAzN2NiM2IwMzg0MDRmYmU4NDE0M2I0
ZDA5N2Y5YmFjNDliNTMxNTJjLi4wOGIyMzQzODYyNWQzMzBjYWVlYjMzZjRiMTJjNjQ1ZTMyZjk3
MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01MSwxMSArNTEsMTEgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIC8vIFJldHJpZXZlIGEgdGV4dHVyZSBmcm9tIHRoZSBjYWNoZS4K
LSAgICBQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gdGV4dHVyZUZvclRpbGVkQ29udGVudHMoY29u
c3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBUaWxlSW5kZXgmLCBib29sIGlzT3BhcXVlKTsKKyAgICBQYXNzUmVmUHRyPExh
eWVyVGV4dHVyZT4gdGV4dHVyZUZvckNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6QnVmZmVyKiBjb250ZW50cyk7CiAgICAgUGFzc1JlZlB0cjxMYXllclRleHR1cmU+IHRl
eHR1cmVGb3JDb2xvcihjb25zdCBDb2xvciYpOwogCiAgICAgLy8gVXBkYXRlIGNvbnRlbnRzIG9m
IGFuIGV4aXN0aW5nIHRleHR1cmUsIG9yIGNyZWF0ZSBhIG5ldyBvbmUgaWYgdGV4dHVyZSBpcyAw
LgotICAgIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiB1cGRhdGVDb250ZW50cyhjb25zdCBSZWZQ
dHI8TGF5ZXJUZXh0dXJlPiYsIGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRz
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBib29s
IGlzT3BhcXVlKTsKKyAgICBQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gdXBkYXRlQ29udGVudHMo
Y29uc3QgUmVmUHRyPExheWVyVGV4dHVyZT4mLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkJ1ZmZlciogY29udGVudHMpOwogCiAgICAgc2l6ZV90IG1lbW9yeVVzYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9tZW1vcnlVc2FnZTsgfQogICAgIHNpemVfdCBtZW1vcnlMaW1pdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVtb3J5TGltaXQ7IH0KQEAgLTg3LDEzICs4NywxMyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHN0cnVjdCBab21iaWVUZXh0dXJlIHsKICAgICAgICAgZXhwbGljaXQgWm9t
YmllVGV4dHVyZShMYXllclRleHR1cmUqIHRleHR1cmUpCi0gICAgICAgICAgICA6IGlkKHRleHR1
cmUtPnRleHR1cmVJZCgpKQorICAgICAgICAgICAgOiBidWZmZXIodGV4dHVyZS0+YnVmZmVyKCkp
CiAgICAgICAgICAgICAsIHNpemUodGV4dHVyZS0+c2l6ZSgpKQogICAgICAgICAgICAgLCBzaXpl
SW5CeXRlcyh0ZXh0dXJlLT5zaXplSW5CeXRlcygpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBMYXllclRleHR1cmU6OkdwdUhhbmRsZSBpZDsKKyAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGJ1ZmZlcjsKICAgICAgICAgSW50U2l6ZSBzaXpl
OwogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXM7CiAgICAgfTsKQEAgLTEwNCw3ICsxMDQsNyBA
QCBwcml2YXRlOgogICAgIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCk7CiAgICAgflRl
eHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCk7CiAKLSAgICBMYXllclRleHR1cmU6OkdwdUhh
bmRsZSBhbGxvY2F0ZVRleHR1cmVJZChjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlKTsKKyAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogY3JlYXRlQnVmZmVyKGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUpOwog
CiAgICAgdm9pZCBpbmNNZW1vcnlVc2FnZShpbnQgZGVsdGEpIHsgc2V0TWVtb3J5VXNhZ2UobWVt
b3J5VXNhZ2UoKSArIGRlbHRhKTsgfQogICAgIHZvaWQgZGVjTWVtb3J5VXNhZ2UoaW50IGRlbHRh
KSB7IHNldE1lbW9yeVVzYWdlKG1lbW9yeVVzYWdlKCkgLSBkZWx0YSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXkuY3BwCmluZGV4IGEzZTliYjM5NGY4Y2ViY2Y1
MDgzYzhiNTk0ZjcwYjA1NzcwZDFmZDAuLjU4NDhiZGVjZTc3YTQ2ZWE3MWM4YTMyMWU3YmIyZjQz
M2JiYWI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViT3Zl
cmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNw
cApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgV2ViT3ZlcmxheUxheWVyQ29tcG9zaXRpbmdUaHJl
YWRDbGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3NpCiAgICAgaWYgKG1f
aW1hZ2UuaXNOdWxsKCkgJiYgIW1fY29sb3IuaXNWYWxpZCgpICYmICFtX2RyYXdzQ29udGVudCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdGV4dHVyZSAmJiBtX3RleHR1cmUtPnRleHR1
cmVJZCgpKQorICAgIGlmIChtX3RleHR1cmUgJiYgbV90ZXh0dXJlLT5idWZmZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY29sb3IuaXNWYWxpZCgpKSB7CkBAIC00NDYsNyArNDQ2
LDcgQEAgdm9pZCBXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6dXBsb2Fk
VGV4dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIExheWVyVGV4dHVyZTo6SG9zdFR5cGUgdGV4dHVyZUNvbnRlbnRzID0gTGF5ZXJUZXh0dXJl
OjpIb3N0VHlwZSgpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVy
KiB0ZXh0dXJlQ29udGVudHMgPSAwOwogICAgIEludFNpemUgdGV4dHVyZVNpemU7CiAKICAgICBp
ZiAobV9kcmF3c0NvbnRlbnQpIHsKQEAgLTQ5OCwxMyArNDk4LDEyIEBAIHZvaWQgV2ViT3Zlcmxh
eUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5
ZXJDb21wb3NpCiAKICAgICBtX3RleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZSgpOwogICAg
IG1fdGV4dHVyZS0+cHJvdGVjdChJbnRTaXplKCksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7Ci0gICAgSW50UmVjdCBiaXRtYXBSZWN0KDAsIDAs
IHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpKTsKLSAgICBtX3RleHR1
cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVDb250ZW50cywgYml0bWFwUmVjdCwgYml0bWFwUmVj
dCwgZmFsc2UpOworICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZUNvbnRlbnRz
KTsKIH0KIAogdm9pZCBXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6ZHJh
d1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBkb3VibGUgc2NhbGUsIGNv
bnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKLSAgICBpZiAoIW1fdGV4dHVyZSB8fCAhbV90
ZXh0dXJlLT50ZXh0dXJlSWQoKSkKKyAgICBpZiAoIW1fdGV4dHVyZSB8fCAhbV90ZXh0dXJlLT5i
dWZmZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4ID0gbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKTsKQEAgLTUxNSw3ICs1MTQsNyBAQCB2b2lkIFdl
Yk92ZXJsYXlMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMoTGF5ZXJD
b21wb3NpdGluZ1RocmVhZAogICAgICAgICBtYXRyaXguc2NhbGVOb25Vbmlmb3JtKHN0YXRpY19j
YXN0PGRvdWJsZT4obGF5ZXItPmJvdW5kcygpLndpZHRoKCkpIC8gbV9pbWFnZS53aWR0aCgpLCBz
dGF0aWNfY2FzdDxkb3VibGU+KGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSkgLyBtX2ltYWdlLmhl
aWdodCgpKTsKICAgICB9CiAgICAgbWF0cml4LnNjYWxlKGxheWVyLT5zaXplSXNTY2FsZUludmFy
aWFudCgpID8gMS4wIC8gc2NhbGUgOiAxLjApOwotICAgIGJsaXRUb0J1ZmZlcigwLCBtX3RleHR1
cmUtPnRleHR1cmVJZCgpLCByZWludGVycHJldF9jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeCY+KG1hdHJpeCksCisgICAgYmxpdFRvQnVmZmVyKDAsIG1fdGV4
dHVyZS0+YnVmZmVyKCksIHJlaW50ZXJwcmV0X2Nhc3Q8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlRy
YW5zZm9ybWF0aW9uTWF0cml4Jj4obWF0cml4KSwKICAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpTb3VyY2VPdmVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihsYXll
ci0+ZHJhd09wYWNpdHkoKSAqIDI1NSkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197530</attachid>
            <date>2013-04-11 02:28:45 -0700</date>
            <delta_ts>2013-04-11 03:25:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114276-20130411112822.patch</filename>
            <type>text/plain</type>
            <size>42249</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJjMjMxY2U5Y2FlYjVk
ZGVhODBlNWRhNjFlOGE2OGQyNTE3YzdhMS4uYTY1YjhkYWE5MzYyYzQ2Yjk1ZDIyMzMzNzZhZGE1
YjE2NDdiNGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEzLTA0LTEwICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gTGF5
ZXJUZXh0dXJlIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTQyNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIEdwdUhhbmRsZSBhbmQgSG9zdFR5cGUgdHlwZWRlZnMg
ZnJvbSBMYXllclRleHR1cmUsIHRoZXkKKyAgICAgICAgZG9uJ3QgbWFrZSBhbnkgc2Vuc2Ugbm93
IHRoYXQgd2UgcmVtb3ZlZCB0aGUgU2tpYSBjb2RlIHBhdGhzLiBXaXRoIFNraWEKKyAgICAgICAg
dGhleSB1c2VkIHRvIGJlIGFuIE9wZW5HTCB0ZXh0dXJlIElEIGFuZCBhbiBTa0JpdG1hcCByZXNw
ZWN0aXZlbHksIGJ1dAorICAgICAgICBub3cgaXQncyBqdXN0IEJCOjpQOjpHOjpCdWZmZXIgYWxs
IGFyb3VuZC4KKworICAgICAgICBUaGlzIGFsbG93cyB1cyB0byByZW5hbWUgdGV4dHVyZUlkKCkg
aW50byBidWZmZXIoKSB3aGljaCBpcyBtb3JlIHRvIHRoZQorICAgICAgICBwb2ludC4gVGhlIHRl
eHR1cmUgSUQgY29uY2VwdCBpcyBub3cgdXAgZm9yIGdyYWJzIGFuZCBjYW4gYmUgdXNlZCB0bwor
ICAgICAgICBjb25zb2xpZGF0ZSBhbGwgdGhlIHZhcmlvdXMgY29kZSBmb3IgZXh0cmFjdGluZyBh
biBPcGVuR0wgdGV4dHVyZSBmcm9tCisgICAgICAgIGEgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXIuIFRoaXMgb3Bwb3J0dW5pdHkgaXMgc2VpemVkIGluCisgICAgICAgIExh
eWVyVGV4dHVyZTo6cGxhdGZvcm1UZXh0dXJlKCksIGEgbmFtZSB3aGljaCBtYWtlcyBtb3JlIHNl
bnNlIHRoYW4KKyAgICAgICAgdGV4dHVyZUlkKCkgZm9yIGFueW9uZSBmYW1pbGlhciB3aXRoIHRo
ZSBHcmFwaGljc0NvbnRleHQzRCBjb2RlLiBXZSBjYW4KKyAgICAgICAgYWxzbyBsZXZlcmFnZSB0
aGUgUGxhdGZvcm0zRE9iamVjdCB0eXBlZGVmIHRvIGF2b2lkIGluY2x1ZGluZyBnbDIuaC4KKwor
ICAgICAgICBUaGUgdmVydGV4IGF0dHJpYnV0ZSBzdGF0ZSB3YXMgZ2V0dGluZyB0cmFtcGxlZCB3
aGVuIGludGVyYWN0aW5nIHdpdGgKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBo
aWNzIGluIHRoZSBMYXllckZpbHRlclJlbmRlcmVyLiBTb21lCisgICAgICAgIGFkZGl0aW9uYWwg
R0wgc3RhdGUgc2F2ZS9yZXN0b3JlIGluY2FudGF0aW9ucyB3aGVuIGFjY2Vzc2luZyB0aGUgT3Bl
bkdMCisgICAgICAgIHRleHR1cmUgZm9yIGEgTGF5ZXJUZXh0dXJlIGluIHRoZSBuZXcgTGF5ZXJU
ZXh0dXJlOjpwbGF0Zm9ybVRleHR1cmUoKQorICAgICAgICBtZXRob2QgZml4ZXMgdmFyaW91cyBD
U1MgRmlsdGVycyB0ZXN0IGNhc2VzLgorCisgICAgICAgIFNpbmNlIHdlIHJlbW92ZWQgdGhlIFNr
aWEgaW50ZWdyYXRpb24gZnJvbSBMYXllclRpbGVyLCBub2JvZHkgY2FyZXMKKyAgICAgICAgYWJv
dXQgdGhlIGRpcnR5IHJlY3QsIHRpbGUgcmVjdCBvciBvcGFxdWVuZXNzIG9mIHRoZSB0aWxlIGNv
bnRlbnRzLiBTbworICAgICAgICByZW1vdmUgdGhvc2UgcGFyYW1ldGVycyBmcm9tIHRoZSB1cGRh
dGVDb250ZW50cyBjb2RlIHBhdGguCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4
Y2VwdCBmb3IgZml4aW5nIENTUyBGaWx0ZXJzIHRlc3RzIGxpa2UKKyAgICAgICAgY3NzMy9maWx0
ZXJzL2VmZmVjdC1ibHVyLWh3Lmh0bWwuIFRoaXMgY2FuIG9ubHkgYmUgdmVyaWZpZWQgYnkgbWFu
dWFsbHkKKyAgICAgICAgbG9va2luZyBhdCB0aGUgdGVzdHMsIHdlIGRvbid0IGhhdmUgcGl4ZWwg
dGVzdCBzdXBwb3J0IHRvIGNhdGNoIHRoaXMKKyAgICAgICAga2luZCBvZiByZWdyZXNzaW9uLgor
CisgICAgICAgIFBSIDMyMjg4MgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6cGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZp
bHRlclJlbmRlcmVyOjpwb25nKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVy
ZXI6OnB1c2hTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVy
Ojpwb3BTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjph
cHBseUFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjp1c2VTdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVy
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OkxheWVyVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6c2V0Q29udGVudHNUb0NvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGV4dHVyZTo6cHJvdGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRl
eHR1cmU6OnBsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUZXh0dXJlOjppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4
dHVyZTo6YnVmZmVyKToKKyAgICAgICAgKExheWVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRleHR1cmU6OnNldEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlOjpz
ZXRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGU6OnVwZGF0ZUNvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlOjpoYXNUZXh0dXJlKToKKyAgICAgICAgKExheWVy
VGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OnVwZGF0ZVRleHR1cmVDb250ZW50
c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OnVwbG9hZFRleHR1cmVz
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6cGVyZm9ybVRpbGVKb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6ZHJhd1RpbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlcjo6VGV4dHVyZUpvYjo6VGV4dHVyZUpvYik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyOjpUZXh0dXJlSm9iOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyOjpUZXh0dXJlSm9iOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChUZXh0
dXJlSm9iKToKKyAgICAgICAgKExheWVyVGlsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmNyZWF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6Y29sbGVj
dEdhcmJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJl
YWQ6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdU
aHJlYWQ6OnJlc2l6ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29t
cG9zaXRpbmdUaHJlYWQ6OmV2aWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkLmg6CisgICAgICAgIChUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6Wm9tYmllVGV4dHVyZTo6
Wm9tYmllVGV4dHVyZSk6CisgICAgICAgIChab21iaWVUZXh0dXJlKToKKwogMjAxMy0wNC0xMSAg
QWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAg
ICBIaXRUZXN0UmVxdWVzdDo6QWxsb3dGcmFtZVNjcm9sbGJhcnMgZG9lcyBub3QgdGVzdCBtYWlu
IGZyYW1lIHNjcm9sbGJhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggZThhODRm
NmJhYjc1YWM0YTk0YTYxOThhNDBlMjgwMTJkMjRlOTVmMy4uNGU1Y2Q4MzM5ZGIwZmVmNzc3Yjc3
YTlhNDY5NWM0ZjJiMTExNDdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjAgQEAKIDIwMTMtMDQtMTAgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0uY29t
PgogCisgICAgICAgIFtCbGFja0JlcnJ5XSBMYXllclRleHR1cmUgcmVmYWN0b3JpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDI3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBM
YXllclRleHR1cmUgcmVmYWN0b3JpbmcgZG93biBpbiBXZWJDb3JlLgorCisgICAgICAgIFBSIDMy
Mjg4MgorCisgICAgICAgICogQXBpL1dlYk92ZXJsYXkuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6dXBsb2Fk
VGV4dHVyZXNJZk5lZWRlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYk92ZXJs
YXlMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMpOgorCisyMDEzLTA0
LTEwICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tC
ZXJyeV0gUmVuYW1lIEJsYWNrQmVycnkgc3BlY2lmaWMgVGV4dHVyZSBjbGFzcwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3ODEKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXggMGE0MDBmOTcxN2U4NTA0ZjIw
MjMyMDhiMzkyNTMzMWYzMzdmM2NkOS4uYmQyMjlhOGRhODhmZmE3MzI5ZjFjYmFkMzg3ZjE1MDM4
MDAxOTMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCkBA
IC0yNzgsNyArMjc4LDcgQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3U3VyZmFj
ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm8KICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgp
LT50ZXh0dXJlQWNjZXNzZWQobGF5ZXJSZW5kZXJlclN1cmZhY2UoKS0+dGV4dHVyZSgpKTsKLSAg
ICAgICAgR0x1aW50IHN1cmZhY2VUZXhJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0
Zm9ybUJ1ZmZlckhhbmRsZShzdXJmYWNlVGV4dHVyZS0+dGV4dHVyZUlkKCkpKTsKKyAgICAgICAg
R0x1aW50IHN1cmZhY2VUZXhJRCA9IHN1cmZhY2VUZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKTsK
IAogICAgICAgICBpZiAoIXN1cmZhY2VUZXhJRCkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yODYsMTggKzI4Niw4IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2ZvCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAobWFzaykgewotICAgICAgICAgICAgTGF5ZXJUZXh0dXJl
KiBtYXNrVGV4dHVyZSA9IG1hc2stPmNvbnRlbnRzVGV4dHVyZSgpOwotICAgICAgICAgICAgaWYg
KG1hc2tUZXh0dXJlKSB7Ci0gICAgICAgICAgICAgICAgR0x1aW50IG1hc2tUZXhJRCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShtYXNrVGV4dHVyZS0+dGV4
dHVyZUlkKCkpKTsKLQotICAgICAgICAgICAgICAgIC8vIEZvcmNlIGNyZWF0aW9uIGlmIGl0J3Mg
MAotICAgICAgICAgICAgICAgIGlmICghbWFza1RleElEKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgY2FsbCB3aWxsIGNhdXNlIGRpc3BsYXkgbGlzdCB0byByZW5kZXIgdG8gYmFja2lu
Zywgd2hpY2ggY2FuIG11dGF0ZSBhIGxvdCBvZiBHTCBzdGF0ZS4KLSAgICAgICAgICAgICAgICAg
ICAgR0xFUzJDb250ZXh0U3RhdGU6OlByb2dyYW1TdGF0ZVNhdmVyIHByb2dyYW1TYXZlcjsKLSAg
ICAgICAgICAgICAgICAgICAgR0xFUzJDb250ZXh0U3RhdGU6OlRleHR1cmVBbmRGQk9TdGF0ZVNh
dmVyIHRleHR1cmVTYXZlcjsKLSAgICAgICAgICAgICAgICAgICAgbG9ja0FuZEJpbmRCdWZmZXJH
TFRleHR1cmUobWFza1RleHR1cmUtPnRleHR1cmVJZCgpLCBHTF9URVhUVVJFXzJEKTsKLSAgICAg
ICAgICAgICAgICAgICAgbWFza1RleElEID0gcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRm
b3JtQnVmZmVySGFuZGxlKG1hc2tUZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChMYXllclRleHR1cmUqIG1hc2tUZXh0dXJlID0gbWFzay0+
Y29udGVudHNUZXh0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBHTHVpbnQgbWFza1RleElEID0g
bWFza1RleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpOwogCiAgICAgICAgICAgICAgICAgZ2xBY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKICAgICAgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1hc2tUZXhJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVy
LmNwcAppbmRleCBmMWZkZjA4NzA4NzkzYmVhZjU5NTVjYzZhYWQ0ZTlmZjFlZTY2YmIxLi5hODQ3
ODc0OGM3NjBjNGQyNjFkMGFmMDk1MzBiODNlMjFmODkwMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJGaWx0ZXJSZW5kZXJlci5jcHAKQEAgLTUwMCwxMSArNTAwLDcgQEAgYm9vbCBMYXllckZpbHRl
clJlbmRlcmVyOjppbml0aWFsaXplU2hhcmVkR0xPYmplY3RzKCkKIAogdm9pZCBMYXllckZpbHRl
clJlbmRlcmVyOjpwaW5nKExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlKQogewotICAgIEdM
dWludCB0ZXhpZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRs
ZShtX3RleHR1cmUtPnRleHR1cmVJZCgpKSk7Ci0gICAgaWYgKCF0ZXhpZCkgewotICAgICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmxvY2tBbmRCaW5kQnVmZmVyR0xUZXh0dXJl
KG1fdGV4dHVyZS0+dGV4dHVyZUlkKCksIEdMX1RFWFRVUkVfMkQpOwotICAgICAgICB0ZXhpZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShtX3RleHR1cmUt
PnRleHR1cmVJZCgpKSk7Ci0gICAgfQorICAgIEdMdWludCB0ZXhpZCA9IG1fdGV4dHVyZS0+cGxh
dGZvcm1UZXh0dXJlKCk7CiAKICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKAogICAgICAgICBH
TF9GUkFNRUJVRkZFUiwKQEAgLTUxNSw3ICs1MTEsNyBAQCB2b2lkIExheWVyRmlsdGVyUmVuZGVy
ZXI6OnBpbmcoTGF5ZXJSZW5kZXJlclN1cmZhY2UqIHN1cmZhY2UpCiAgICAgKTsKICAgICBnbEJp
bmRUZXh0dXJlKAogICAgICAgICBHTF9URVhUVVJFXzJELAotICAgICAgICByZWludGVycHJldF9j
YXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUoc3VyZmFjZS0+dGV4dHVyZSgpLT50ZXh0
dXJlSWQoKSkpCisgICAgICAgIHN1cmZhY2UtPnRleHR1cmUoKS0+cGxhdGZvcm1UZXh0dXJlKCkK
ICAgICApOwogfQogCkBAIC01MjUsMjIgKzUyMSwxOCBAQCB2b2lkIExheWVyRmlsdGVyUmVuZGVy
ZXI6OnBvbmcoTGF5ZXJSZW5kZXJlclN1cmZhY2UqIHN1cmZhY2UpCiAgICAgICAgIEdMX0ZSQU1F
QlVGRkVSLAogICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKICAgICAgICAgR0xfVEVYVFVS
RV8yRCwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFu
ZGxlKHN1cmZhY2UtPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpKSwKKyAgICAgICAgc3VyZmFjZS0+
dGV4dHVyZSgpLT5wbGF0Zm9ybVRleHR1cmUoKSwKICAgICAgICAgMAogICAgICk7CiAgICAgZ2xC
aW5kVGV4dHVyZSgKICAgICAgICAgR0xfVEVYVFVSRV8yRCwKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkp
KQorICAgICAgICBtX3RleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpCiAgICAgKTsKIH0KIAogdm9p
ZCBMYXllckZpbHRlclJlbmRlcmVyOjpwdXNoU25hcHNob3QoTGF5ZXJSZW5kZXJlclN1cmZhY2Uq
IHN1cmZhY2UsIGludCBzb3VyY2VJZCkKIHsKLSAgICBHTHVpbnQgdGV4aWQgPSByZWludGVycHJl
dF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUobV9zbmFwc2hvdFRleHR1cmUtPnRl
eHR1cmVJZCgpKSk7Ci0gICAgaWYgKCF0ZXhpZCkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6R3JhcGhpY3M6OmxvY2tBbmRCaW5kQnVmZmVyR0xUZXh0dXJlKG1fc25hcHNob3RUZXh0
dXJlLT50ZXh0dXJlSWQoKSwgR0xfVEVYVFVSRV8yRCk7Ci0gICAgICAgIHRleGlkID0gcmVpbnRl
cnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1fc25hcHNob3RUZXh0dXJl
LT50ZXh0dXJlSWQoKSkpOwotICAgIH0KKyAgICBHTHVpbnQgdGV4aWQgPSBtX3NuYXBzaG90VGV4
dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCk7CiAKICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKAog
ICAgICAgICBHTF9GUkFNRUJVRkZFUiwKQEAgLTU2OCw3ICs1NjAsNyBAQCB2b2lkIExheWVyRmls
dGVyUmVuZGVyZXI6OnBvcFNuYXBzaG90KCkKICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVf
RkFOLCAwLCA0KTsKICAgICBnbEJpbmRUZXh0dXJlKAogICAgICAgICBHTF9URVhUVVJFXzJELAot
ICAgICAgICByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUobV9z
bmFwc2hvdFRleHR1cmUtPnRleHR1cmVJZCgpKSkKKyAgICAgICAgbV9zbmFwc2hvdFRleHR1cmUt
PnBsYXRmb3JtVGV4dHVyZSgpCiAgICAgKTsKIH0KIApAQCAtNzIwLDEzICs3MTIsNyBAQCB2b2lk
IExheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9ucyh1bnNpZ25lZCYgZmJvLCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkKiBsYQogCiAgICAgICAgIGlmIChhY3Rpb25zW2ldLT5zaG91bGRQdXNo
U25hcHNob3QoKSkgewogICAgICAgICAgICAgUmVmUHRyPExheWVyVGV4dHVyZT4gY3VycmVudFRl
eHR1cmUgPSAoIShpICUgMikgPyBzdXJmYWNlLT50ZXh0dXJlKCkgOiBtX3RleHR1cmUpOwotICAg
ICAgICAgICAgR0x1aW50IHRleGlkID0gcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3Jt
QnVmZmVySGFuZGxlKGN1cnJlbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwotICAgICAgICAgICAg
aWYgKCF0ZXhpZCkgewotICAgICAgICAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6bG9ja0FuZEJpbmRCdWZmZXJHTFRleHR1cmUoY3VycmVudFRleHR1cmUtPnRleHR1cmVJ
ZCgpLCBHTF9URVhUVVJFXzJEKTsKLSAgICAgICAgICAgICAgICB0ZXhpZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShjdXJyZW50VGV4dHVyZS0+dGV4dHVy
ZUlkKCkpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHVzaFNuYXBzaG90KHN1cmZh
Y2UsIHRleGlkKTsKKyAgICAgICAgICAgIHB1c2hTbmFwc2hvdChzdXJmYWNlLCBjdXJyZW50VGV4
dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghKGkgJSAy
KSkKICAgICAgICAgICAgIHBpbmcoc3VyZmFjZSk7IC8vIFNldCBmcmFtZWJ1ZmZlciB0byBvdXJz
LCBhbmQgdGV4dHVyZSB0byBwYXJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCmluZGV4IDg4
N2RjZGE5OTllNGFjODFkMmFiMThlYzI4NzAxNDliOWI3M2U0NzQuLmE1NzZjYTRkNmZjMDJkMDU3
YWJjNTIzOGQ1YzMyNGZmZWE3OTk5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcApAQCAt
NDQ1LDExICs0NDUsNyBAQCBib29sIExheWVyUmVuZGVyZXI6OnVzZVN1cmZhY2UoTGF5ZXJSZW5k
ZXJlclN1cmZhY2UqIHN1cmZhY2UpCiAKICAgICBzdXJmYWNlLT5lbnN1cmVUZXh0dXJlKCk7CiAK
LSAgICBHTHVpbnQgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZm
ZXJIYW5kbGUoc3VyZmFjZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSkpOwotICAgIGlmICghdGV4
aWQpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpsb2NrQW5kQmlu
ZEJ1ZmZlckdMVGV4dHVyZShzdXJmYWNlLT50ZXh0dXJlKCktPnRleHR1cmVJZCgpLCBHTF9URVhU
VVJFXzJEKTsKLSAgICAgICAgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZv
cm1CdWZmZXJIYW5kbGUoc3VyZmFjZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSkpOwotICAgIH0K
KyAgICBHTHVpbnQgdGV4aWQgPSBzdXJmYWNlLT50ZXh0dXJlKCktPnBsYXRmb3JtVGV4dHVyZSgp
OwogCiAgICAgaWYgKCFtX2ZibykKICAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJUZXh0dXJlLmNwcAppbmRleCBlZGJjNTMwMTQ0ZGZlNWNlYTVhZjEzNjM1
YzE3MDIwZjZkMTgzMGFjLi5lODRjOWRkN2M1ZTJmMmEwYzczZjUwNDY2NjhlZmIyZDI3NDllZDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRleHR1cmUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlRleHR1
cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmgiCiAKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZv
cm1HTEVTMkNvbnRleHRTdGF0ZS5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgpAQCAtMzQsOSArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExheWVy
VGV4dHVyZTo6TGF5ZXJUZXh0dXJlKGJvb2wgaXNDb2xvcikKICAgICA6IG1fcHJvdGVjdGlvbkNv
dW50KDApCi0gICAgLCBtX2hhbmRsZSgwKQorICAgICwgbV9idWZmZXIoMCkKICAgICAsIG1faXND
b2xvcihpc0NvbG9yKQotICAgICwgbV9pc09wYXF1ZShmYWxzZSkKICAgICAsIG1fYnVmZmVyU2l6
ZUluQnl0ZXMoMCkKIHsKICAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT5pbnN0
YWxsKHRoaXMsIEludFNpemUoKSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCYWNr
ZWRXaGVuTmVjZXNzYXJ5KTsKQEAgLTQ3LDI5ICs0NywyOCBAQCBMYXllclRleHR1cmU6On5MYXll
clRleHR1cmUoKQogICAgIHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCktPnRleHR1cmVE
ZXN0cm95ZWQodGhpcyk7CiB9CiAKLXZvaWQgTGF5ZXJUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhj
b25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxlLCBib29sIGlzT3BhcXVlKQordm9pZCBMYXllclRl
eHR1cmU6OnVwZGF0ZUNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVm
ZmVyKiBidWZmZXIpCiB7Ci0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OmRlc3Ryb3lCdWZmZXIobV9oYW5kbGUpOwotICAgIG1faGFuZGxl
ID0gY29udGVudHM7Ci0gICAgc2l6ZV90IG5ld0J1ZmZlclNpemVJbkJ5dGVzID0gQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpidWZmZXJTaXplSW5CeXRlcyhtX2hhbmRsZSk7CisgICAg
aWYgKG1fYnVmZmVyKQorICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRl
c3Ryb3lCdWZmZXIobV9idWZmZXIpOworICAgIG1fYnVmZmVyID0gYnVmZmVyOworICAgIHNpemVf
dCBuZXdCdWZmZXJTaXplSW5CeXRlcyA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
YnVmZmVyU2l6ZUluQnl0ZXMobV9idWZmZXIpOwogICAgIHRleHR1cmVDYWNoZUNvbXBvc2l0aW5n
VGhyZWFkKCktPnRleHR1cmVTaXplSW5CeXRlc0NoYW5nZWQodGhpcywgbmV3QnVmZmVyU2l6ZUlu
Qnl0ZXMgLSBtX2J1ZmZlclNpemVJbkJ5dGVzKTsKICAgICBtX2J1ZmZlclNpemVJbkJ5dGVzID0g
bmV3QnVmZmVyU2l6ZUluQnl0ZXM7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlOjpzZXRDb250ZW50
c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIG1faXNPcGFxdWUgPSAhY29sb3Iu
aGFzQWxwaGEoKTsKICAgICBSR0JBMzIgcmdiYSA9IGNvbG9yLnJnYigpOwogCi0gICAgaWYgKG1f
aGFuZGxlKQotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRlc3Ryb3lC
dWZmZXIobV9oYW5kbGUpOworICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVyKG1fYnVmZmVyKTsKIAotICAgIG1faGFu
ZGxlID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpjcmVhdGVCdWZmZXIoSW50U2l6
ZSgxLCAxKSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCYWNrZWRXaGVuTmVjZXNz
YXJ5KTsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OlBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0KiBnYyA9IGxvY2tCdWZmZXJEcmF3YWJsZShtX2hhbmRsZSk7CisgICAgbV9idWZm
ZXIgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmNyZWF0ZUJ1ZmZlcihJbnRTaXpl
KDEsIDEpLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJhY2tlZFdoZW5OZWNlc3Nh
cnkpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6UGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqIGdjID0gbG9ja0J1ZmZlckRyYXdhYmxlKG1fYnVmZmVyKTsKICAgICBnYy0+c2V0
RmlsbENvbG9yKHJnYmEpOwogICAgIGdjLT5hZGRGaWxsUmVjdChCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6RmxvYXRSZWN0KDAsIDAsIDEsIDEpKTsKLSAgICByZWxlYXNlQnVmZmVyRHJhd2FibGUobV9o
YW5kbGUpOworICAgIHJlbGVhc2VCdWZmZXJEcmF3YWJsZShtX2J1ZmZlcik7CiAKICAgICBJbnRT
aXplIG9sZFNpemUgPSBtX3NpemU7CiAgICAgbV9zaXplID0gSW50U2l6ZSgxLCAxKTsKQEAgLTc5
LDcgKzc4LDcgQEAgdm9pZCBMYXllclRleHR1cmU6OnNldENvbnRlbnRzVG9Db2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiAKIGJvb2wgTGF5ZXJUZXh0dXJlOjpwcm90ZWN0KGNvbnN0IEludFNpemUm
IHNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSB0eXBlKQog
ewotICAgIGlmICghaGFzVGV4dHVyZSgpKSB7CisgICAgaWYgKCFtX2J1ZmZlcikgewogICAgICAg
ICAvLyBXZSBtYXkgaGF2ZSBiZWVuIGV2aWN0ZWQgYnkgdGhlIFRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkLAogICAgICAgICAvLyBhdHRlbXB0IHRvIGluc3RhbGwgdXMgYWdhaW4uCiAgICAg
ICAgIGlmICghdGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+aW5zdGFsbCh0aGlzLCBz
aXplLCB0eXBlKSkKQEAgLTk2LDYgKzk1LDI2IEBAIGJvb2wgTGF5ZXJUZXh0dXJlOjpwcm90ZWN0
KGNvbnN0IEludFNpemUmIHNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK1BsYXRmb3JtM0RPYmplY3QgTGF5ZXJUZXh0dXJlOjpwbGF0
Zm9ybVRleHR1cmUoKSBjb25zdAoreworICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtVGV4dHVy
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4ocGxhdGZvcm1CdWZmZXJIYW5k
bGUobV9idWZmZXIpKTsKKworICAgIC8vIEZvcmNlIGNyZWF0aW9uIGlmIGl0J3MgMAorICAgIGlm
ICghcGxhdGZvcm1UZXh0dXJlKSB7CisgICAgICAgIC8vIFRoaXMgY2FsbCBjYW4gY2F1c2UgZGlz
cGxheSBsaXN0IHRvIHJlbmRlciB0byBiYWNraW5nLCB3aGljaCBjYW4gbXV0YXRlIGEgbG90IG9m
IEdMIHN0YXRlLgorICAgICAgICBHTEVTMkNvbnRleHRTdGF0ZTo6VmVydGV4QXR0cmlidXRlU3Rh
dGVTYXZlciB2ZXJ0ZXhBdHRyaWJTdGF0ZVNhdmVyOworICAgICAgICBHTEVTMkNvbnRleHRTdGF0
ZTo6UHJvZ3JhbVN0YXRlU2F2ZXIgcHJvZ3JhbVNhdmVyOworICAgICAgICBHTEVTMkNvbnRleHRT
dGF0ZTo6VGV4dHVyZUFuZEZCT1N0YXRlU2F2ZXIgdGV4dHVyZVNhdmVyOworCisgICAgICAgIGxv
Y2tBbmRCaW5kQnVmZmVyR0xUZXh0dXJlKG1fYnVmZmVyLCBHTF9URVhUVVJFXzJEKTsKKyAgICAg
ICAgcGxhdGZvcm1UZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVm
ZmVySGFuZGxlKG1fYnVmZmVyKSk7CisgICAgfQorCisgICAgcmV0dXJuIHBsYXRmb3JtVGV4dHVy
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmgKaW5kZXggZDg2YTUzZDJlMTU3NGQ0
NjEwNWI2NWUzMTQ1OGRhYjEwMzJhYWNmMC4uMGQ3NGFlNDU5OTJiOGQyNmIzZTBhNDkxYTI4N2Zj
NDcwOTE3ZDExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
CiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oPgpAQCAtNDcsMjQgKzQ4
LDIyIEBAIHB1YmxpYzoKIAogICAgIH5MYXllclRleHR1cmUoKTsKIAotICAgIHR5cGVkZWYgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIEdwdUhhbmRsZTsKLSAgICB0eXBl
ZGVmIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBIb3N0VHlwZTsKKyAg
ICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KIAotICAgIEdwdUhh
bmRsZSB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZTsgfQotICAgIGJvb2wgaXNE
aXJ0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2hhbmRsZTsgfQotICAgIGJvb2wgaGFzVGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlOyB9CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAg
ICBib29sIGlzQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29sb3I7IH0KLSAgICBib29sIGlz
T3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9pc09wYXF1ZTsgfQogCiAgICAgYm9vbCBpc1Byb3Rl
Y3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdGVjdGlvbkNvdW50ID4gMDsgfQogICAgIHZvaWQg
cHJvdGVjdCgpIHsgKyttX3Byb3RlY3Rpb25Db3VudDsgfQogICAgIHZvaWQgdW5wcm90ZWN0KCkg
eyAtLW1fcHJvdGVjdGlvbkNvdW50OyB9CiAKLSAgICAvLyBUaGlzIHdpbGwgZW5zdXJlIHRoZSB0
ZXh0dXJlIGhhcyBiYWNraW5nIHdpdGggdGhlIHNwZWNpZmllZCBzaXplCisgICAgLy8gVGhpcyB3
aWxsIGVuc3VyZSBhIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZm9yIHRoaXMgdGV4dHVyZSB3aXRoIHRo
ZSByZXF1ZXN0ZWQgYmFja2luZyBhbmQgc2l6ZQogICAgIGJvb2wgcHJvdGVjdChjb25zdCBJbnRT
aXplJiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlID0gQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCYWNrZWRXaGVuTmVjZXNzYXJ5KTsKIAotICAgIHZv
aWQgdXBkYXRlQ29udGVudHMoY29uc3QgSG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGUsIGJvb2wgaXNPcGFxdWUpOworICAgIFBs
YXRmb3JtM0RPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Q7CisKKyAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKik7CiAgICAg
dm9pZCBzZXRDb250ZW50c1RvQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtNzgsMTEgKzc3LDExIEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOwogCiAgICAg
TGF5ZXJUZXh0dXJlKGJvb2wgaXNDb2xvciA9IGZhbHNlKTsKLSAgICB2b2lkIHNldFRleHR1cmVJ
ZChHcHVIYW5kbGUgaWQpCisgICAgdm9pZCBzZXRCdWZmZXIoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkdyYXBoaWNzOjpCdWZmZXIqIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIG1faGFuZGxlID0gaWQ7
CisgICAgICAgIG1fYnVmZmVyID0gYnVmZmVyOwogCi0gICAgICAgIC8vIFdlIGFzc3VtZSBpdCBp
cyBhIG5ld2x5IGFsbG9jYXRlZCB0ZXh0dXJlLAorICAgICAgICAvLyBXZSBhc3N1bWUgaXQgaXMg
YSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyLAogICAgICAgICAvLyBhbmQgdGh1cyBlbXB0eSwgb3Ig
MCwgd2hpY2ggd291bGQgb2YgY291cnNlCiAgICAgICAgIC8vIGJlIGVtcHR5LgogICAgICAgICBt
X3NpemUgPSBJbnRTaXplKCk7CkBAIC05MiwxMCArOTEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0KIAogICAgIGlu
dCBtX3Byb3RlY3Rpb25Db3VudDsKLSAgICBHcHVIYW5kbGUgbV9oYW5kbGU7CisgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIG1fYnVmZmVyOwogICAgIEludFNpemUg
bV9zaXplOwogICAgIGJvb2wgbV9pc0NvbG9yOwotICAgIGJvb2wgbV9pc09wYXF1ZTsKICAgICBz
aXplX3QgbV9idWZmZXJTaXplSW5CeXRlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmNwcAppbmRleCAw
ZDk3M2FmMTQ2MzdlOWE1OWY1MDcxZGQ5NmU3NGY5MmZmOTZlZWVjLi4wYmRmZGNiZWVlYjA5MzQ1
N2YzM2EzNzg4MWQ2MjVmZGQ3ODJiM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0zOSw5ICszOSw5IEBAIExheWVyVGlsZTo6fkxheWVyVGls
ZSgpCiAgICAgc2V0VmlzaWJsZShmYWxzZSk7CiB9CiAKLXZvaWQgTGF5ZXJUaWxlOjpzZXRDb250
ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYgaW5kZXgsIGJvb2wgaXNPcGFxdWUpCit2b2lk
IExheWVyVGlsZTo6c2V0Q29udGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpC
dWZmZXIqIGNvbnRlbnRzKQogewotICAgIHNldFRleHR1cmUodGV4dHVyZUNhY2hlQ29tcG9zaXRp
bmdUaHJlYWQoKS0+dGV4dHVyZUZvclRpbGVkQ29udGVudHMoY29udGVudHMsIHRpbGVSZWN0LCBp
bmRleCwgaXNPcGFxdWUpKTsKKyAgICBzZXRUZXh0dXJlKHRleHR1cmVDYWNoZUNvbXBvc2l0aW5n
VGhyZWFkKCktPnRleHR1cmVGb3JDb250ZW50cyhjb250ZW50cykpOwogfQogCiB2b2lkIExheWVy
VGlsZTo6c2V0Q29udGVudHNUb0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTQ5LDkgKzQ5
LDkgQEAgdm9pZCBMYXllclRpbGU6OnNldENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiAgICAgc2V0VGV4dHVyZSh0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50ZXh0
dXJlRm9yQ29sb3IoY29sb3IpKTsKIH0KIAotdm9pZCBMYXllclRpbGU6OnVwZGF0ZUNvbnRlbnRz
KGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBib29sIGlzT3BhcXVlKQordm9pZCBM
YXllclRpbGU6OnVwZGF0ZUNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyKiBjb250ZW50cykKIHsKLSAgICBzZXRUZXh0dXJlKHRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkKCktPnVwZGF0ZUNvbnRlbnRzKG1fdGV4dHVyZSwgY29udGVudHMsIGRpcnR5UmVj
dCwgdGlsZVJlY3QsIGlzT3BhcXVlKSk7CisgICAgc2V0VGV4dHVyZSh0ZXh0dXJlQ2FjaGVDb21w
b3NpdGluZ1RocmVhZCgpLT51cGRhdGVDb250ZW50cyhtX3RleHR1cmUsIGNvbnRlbnRzKSk7CiB9
CiAKIHZvaWQgTGF5ZXJUaWxlOjpkaXNjYXJkQ29udGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmgKaW5kZXgg
Mjg2MDgxN2FhNjU0N2U0YjY1MDNiMTFhMTQzOTRkZTE2OGZkMjQ4OC4uYjM5OWJmY2NkMDlmOTEx
ZDgwY2EzYjI5MGNhZGEyZGJiOTgwZGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwg
MjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC00NCwxMSArNDQsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c0RpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0RpcnR5IHx8ICFtX3RleHR1cmUgfHwg
bV90ZXh0dXJlLT5pc0RpcnR5KCk7IH0KIAotICAgIGJvb2wgaGFzVGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZSAmJiBtX3RleHR1cmUtPmhhc1RleHR1cmUoKTsgfQorICAgIGJvb2wg
aGFzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZSAmJiBtX3RleHR1cmUtPmJ1ZmZl
cigpOyB9CiAKLSAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5
cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4Jiwg
Ym9vbCBpc09wYXF1ZSk7CisgICAgdm9pZCBzZXRDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6R3JhcGhpY3M6OkJ1ZmZlciopOwogICAgIHZvaWQgc2V0Q29udGVudHNUb0NvbG9yKGNvbnN0
IENvbG9yJik7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhv
c3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgYm9vbCBpc09wYXF1ZSk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciopOwogICAgIHZvaWQgZGlzY2FyZENv
bnRlbnRzKCk7CiAKICAgICAvLyBUaGUgY3VycmVudCB0ZXh0dXJlIGlzIGFuIGFjY3VyYXRlIHBy
ZXZpZXcgb2YgdGhpcyBsYXllciwgYnV0IGEgbW9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKaW5kZXgg
Y2ExNDVmZTJmZWZkYTNlNzQ3M2U2YmRmM2ZkNzYwNTFkNTc2ZDdkZi4uNTgzYTI4YzIxYTM5NTgw
MWFhNzNjOWJkZjA0YmY4YWIxZjUyNTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBAIC0yNTMs
MTggKzI1MywxNCBAQCB2b2lkIExheWVyVGlsZXI6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVl
ZGVkKGRvdWJsZSBzY2FsZSkKICAgICAgICAgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6QnVmZmVyKiBidWZmZXIgPSBjcmVhdGVCdWZmZXIoYnVmZmVyU2l6ZSkpIHsKICAgICAg
ICAgICAgIEludFJlY3QgY29udGVudHNSZWN0KEludFBvaW50Ojp6ZXJvKCksIGltYWdlLT5zaXpl
KCkpOwogICAgICAgICAgICAgbV9sYXllci0+cGFpbnRDb250ZW50cyhidWZmZXIsIGNvbnRlbnRz
UmVjdCwgc2NhbGUpOwotCi0gICAgICAgICAgICBib29sIGlzT3BhcXVlID0gZmFsc2U7Ci0gICAg
ICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBpc09w
YXF1ZSA9IHN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5jdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoKTsKLSAgICAgICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0
Q29udGVudHMoYnVmZmVyLCBjb250ZW50c1JlY3QsIGlzT3BhcXVlKSk7CisgICAgICAgICAgICBh
ZGRUZXh0dXJlSm9iKFRleHR1cmVKb2I6OnNldENvbnRlbnRzKGJ1ZmZlciwgY29udGVudHNSZWN0
KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGF5ZXItPmRyYXdzQ29udGVudCgpKSB7
CiAgICAgICAgIGZvciAoSGFzaFNldDxUaWxlSW5kZXg+OjppdGVyYXRvciBpdCA9IHJlbmRlckpv
YnMuYmVnaW4oKTsgaXQgIT0gcmVuZGVySm9icy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAg
aWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBidWZmZXIgPSBjcmVh
dGVCdWZmZXIodGlsZVNpemUoKSkpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
ID0gcmVjdEZvclRpbGUoKml0LCByZXF1aXJlZFRleHR1cmVTaXplKTsKICAgICAgICAgICAgICAg
ICBtX2xheWVyLT5wYWludENvbnRlbnRzKGJ1ZmZlciwgdGlsZVJlY3QsIHNjYWxlKTsKLSAgICAg
ICAgICAgICAgICBhZGRUZXh0dXJlSm9iKFRleHR1cmVKb2I6OnVwZGF0ZUNvbnRlbnRzKGJ1ZmZl
ciwgdGlsZVJlY3QsIG1fbGF5ZXItPmlzT3BhcXVlKCkpKTsKKyAgICAgICAgICAgICAgICBhZGRU
ZXh0dXJlSm9iKFRleHR1cmVKb2I6OnVwZGF0ZUNvbnRlbnRzKGJ1ZmZlciwgdGlsZVJlY3QpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM2OSwxMSArMzY1LDcgQEAgdm9p
ZCBMYXllclRpbGVyOjp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqKQogICAgICAgICAgICAgbV90aWxlcy5hZGQodGlsZUpvYnNJdGVyLT5rZXksIHRpbGUpOwog
ICAgICAgICB9CiAKLSAgICAgICAgSW50UmVjdCB0aWxlUmVjdChvcmlnaW4sIHRpbGVTaXplKCkp
OwotICAgICAgICB0aWxlUmVjdC5zZXRXaWR0aChtaW4obV9yZXF1aXJlZFRleHR1cmVTaXplLndp
ZHRoKCkgLSB0aWxlUmVjdC54KCksIHRpbGVSZWN0LndpZHRoKCkpKTsKLSAgICAgICAgdGlsZVJl
Y3Quc2V0SGVpZ2h0KG1pbihtX3JlcXVpcmVkVGV4dHVyZVNpemUuaGVpZ2h0KCkgLSB0aWxlUmVj
dC55KCksIHRpbGVSZWN0LmhlaWdodCgpKSk7Ci0KLSAgICAgICAgcGVyZm9ybVRpbGVKb2IodGls
ZSwgKnRpbGVKb2JzSXRlci0+dmFsdWUsIHRpbGVSZWN0KTsKKyAgICAgICAgcGVyZm9ybVRpbGVK
b2IodGlsZSwgKnRpbGVKb2JzSXRlci0+dmFsdWUpOwogICAgIH0KIAogICAgIG1fdGV4dHVyZUpv
YnMuY2xlYXIoKTsKQEAgLTQxOCwxNCArNDEwLDE0IEBAIHZvaWQgTGF5ZXJUaWxlcjo6YWRkVGls
ZUpvYihjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBjb25zdCBUZXh0dXJlSm9iJiBqb2IsIFRpbGVK
CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9ICZqb2I7CiB9CiAKLXZvaWQgTGF5ZXJUaWxl
cjo6cGVyZm9ybVRpbGVKb2IoTGF5ZXJUaWxlKiB0aWxlLCBjb25zdCBUZXh0dXJlSm9iJiBqb2Is
IGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQordm9pZCBMYXllclRpbGVyOjpwZXJmb3JtVGlsZUpv
YihMYXllclRpbGUqIHRpbGUsIGNvbnN0IFRleHR1cmVKb2ImIGpvYikKIHsKICAgICBzd2l0Y2gg
KGpvYi5tX3R5cGUpIHsKICAgICBjYXNlIFRleHR1cmVKb2I6OlNldENvbnRlbnRzVG9Db2xvcjoK
ICAgICAgICAgdGlsZS0+c2V0Q29udGVudHNUb0NvbG9yKGpvYi5tX2NvbG9yKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgVGV4dHVyZUpvYjo6U2V0Q29udGVudHM6Ci0gICAgICAgIHRpbGUt
PnNldENvbnRlbnRzKGpvYi5tX2NvbnRlbnRzLCB0aWxlUmVjdCwgaW5kZXhPZlRpbGUodGlsZVJl
Y3QubG9jYXRpb24oKSksIGpvYi5tX2lzT3BhcXVlKTsKKyAgICAgICAgdGlsZS0+c2V0Q29udGVu
dHMoam9iLm1fY29udGVudHMpOwogICAgICAgICB7CiAgICAgICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIobV90aWxlc011dGV4KTsKICAgICAgICAgICAgIGlmICh0aWxlLT5yZW5kZXJTdGF0ZSgp
ID09IExheWVyVGlsZTo6UmVuZGVyUGVuZGluZykKQEAgLTQzMyw3ICs0MjUsNyBAQCB2b2lkIExh
eWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSogdGlsZSwgY29uc3QgVGV4dHVyZUpv
YiYgam9iLCBjb25zdCBJbgogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFRl
eHR1cmVKb2I6OlVwZGF0ZUNvbnRlbnRzOgotICAgICAgICB0aWxlLT51cGRhdGVDb250ZW50cyhq
b2IubV9jb250ZW50cywgam9iLm1fZGlydHlSZWN0LCB0aWxlUmVjdCwgam9iLm1faXNPcGFxdWUp
OworICAgICAgICB0aWxlLT51cGRhdGVDb250ZW50cyhqb2IubV9jb250ZW50cyk7CiAgICAgICAg
IHsKICAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVzTXV0ZXgpOwogICAgICAg
ICAgICAgaWYgKHRpbGUtPnJlbmRlclN0YXRlKCkgPT0gTGF5ZXJUaWxlOjpSZW5kZXJQZW5kaW5n
KQpAQCAtNTAyLDcgKzQ5NCw3IEBAIGJvb2wgTGF5ZXJUaWxlcjo6ZHJhd1RpbGUoTGF5ZXJDb21w
b3NpdGluZ1RocmVhZCogbGF5ZXIsIGRvdWJsZSBzY2FsZSwgY29uc3QgVGlsCiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkcmF3VHJhbnNmb3JtLnNjYWxlKDEuMCAv
IGxheWVyLT5jb250ZW50c1NjYWxlKCkpOwogICAgICAgICAgICAgICAgIGRyYXdUcmFuc2Zvcm0u
c2NhbGUobGF5ZXItPnNpemVJc1NjYWxlSW52YXJpYW50KCkgPyAxLjAgLyBzY2FsZSA6IDEuMCk7
Ci0gICAgICAgICAgICAgICAgYmxpdFRvQnVmZmVyKDAsIHRleHR1cmUtPnRleHR1cmVJZCgpLCBy
ZWludGVycHJldF9jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCY+KGRyYXdUcmFuc2Zvcm0pLAorICAgICAgICAgICAgICAgIGJsaXRUb0J1ZmZlcigwLCB0ZXh0
dXJlLT5idWZmZXIoKSwgcmVpbnRlcnByZXRfY2FzdDxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VHJh
bnNmb3JtYXRpb25NYXRyaXgmPihkcmF3VHJhbnNmb3JtKSwKICAgICAgICAgICAgICAgICAgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpTb3VyY2VPdmVyLCBnbG9iYWxBbHBoYSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgKaW5kZXggNTJhZDViMzdi
MGMyZTY5ODdmM2NhMGUyNjE5YTU1NzI5MjdkMjk5Ny4uYmQ0MDcxNjc2MThjMjk1ZDhlYzg1OTJh
NGUyYTAyZTAzYTY0OTA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTg2LDcgKzg2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgVGV4dHVyZUpvYihU
eXBlIHR5cGUsIGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgICAgICA6IG1fdHlwZSh0
eXBlKQogICAgICAgICAgICAgLCBtX2NvbnRlbnRzKDApCi0gICAgICAgICAgICAsIG1faXNPcGFx
dWUoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZGlydHlSZWN0KEludFBvaW50Ojp6ZXJvKCksIG5l
d1NpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFJlc2l6ZUNvbnRl
bnRzKTsKQEAgLTk1LDE2ICs5NCwxNCBAQCBwcml2YXRlOgogICAgICAgICBUZXh0dXJlSm9iKFR5
cGUgdHlwZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogICAgICAgICAgICAgOiBtX3R5cGUo
dHlwZSkKICAgICAgICAgICAgICwgbV9jb250ZW50cygwKQotICAgICAgICAgICAgLCBtX2lzT3Bh
cXVlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2RpcnR5UmVjdChkaXJ0eVJlY3QpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IERpc2NhcmRDb250ZW50cyB8fCB0eXBlID09
IERpcnR5Q29udGVudHMpOwogICAgICAgICB9CiAKLSAgICAgICAgVGV4dHVyZUpvYihUeXBlIHR5
cGUsIGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QsIGJvb2wgaXNPcGFxdWUpCisgICAgICAgIFRleHR1cmVKb2IoVHlwZSB0eXBl
LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogY29udGVudHMsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAg
ICAgICAsIG1fY29udGVudHMoY29udGVudHMpCi0gICAgICAgICAgICAsIG1faXNPcGFxdWUoaXNP
cGFxdWUpCiAgICAgICAgICAgICAsIG1fZGlydHlSZWN0KGRpcnR5UmVjdCkKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVXBkYXRlQ29udGVudHMgfHwgdHlwZSA9PSBTZXRD
b250ZW50cyk7CkBAIC0xMTQsMTkgKzExMSwxOCBAQCBwcml2YXRlOgogICAgICAgICBUZXh0dXJl
Sm9iKFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBUaWxlSW5kZXgmIGluZGV4
KQogICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICAgICAgICAgICwgbV9jb250ZW50cygw
KQotICAgICAgICAgICAgLCBtX2lzT3BhcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2NvbG9y
KGNvbG9yKQogICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQodHlwZSA9PSBTZXRDb250ZW50c1RvQ29sb3IpOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIFRleHR1cmVKb2Igc2V0Q29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpI
b3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzUmVjdCwgYm9vbCBpc09w
YXF1ZSkKKyAgICAgICAgc3RhdGljIFRleHR1cmVKb2Igc2V0Q29udGVudHMoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c1JlY3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBUZXh0dXJlSm9iKFNldENv
bnRlbnRzLCBjb250ZW50cywgY29udGVudHNSZWN0LCBpc09wYXF1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gVGV4dHVyZUpvYihTZXRDb250ZW50cywgY29udGVudHMsIGNvbnRlbnRzUmVjdCk7CiAg
ICAgICAgIH0KICAgICAgICAgc3RhdGljIFRleHR1cmVKb2Igc2V0Q29udGVudHNUb0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvciwgY29uc3QgVGlsZUluZGV4JiBpbmRleCkgeyByZXR1cm4gVGV4dHVy
ZUpvYihTZXRDb250ZW50c1RvQ29sb3IsIGNvbG9yLCBpbmRleCk7IH0KLSAgICAgICAgc3RhdGlj
IFRleHR1cmVKb2IgdXBkYXRlQ29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYg
Y29udGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc09wYXF1ZSkgeyByZXR1
cm4gVGV4dHVyZUpvYihVcGRhdGVDb250ZW50cywgY29udGVudHMsIGRpcnR5UmVjdCwgaXNPcGFx
dWUpOyB9CisgICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHVwZGF0ZUNvbnRlbnRzKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBjb250ZW50cywgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSB7IHJldHVybiBUZXh0dXJlSm9iKFVwZGF0ZUNvbnRlbnRzLCBjb250ZW50cywg
ZGlydHlSZWN0KTsgfQogICAgICAgICBzdGF0aWMgVGV4dHVyZUpvYiBkaXNjYXJkQ29udGVudHMo
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSB7IHJldHVybiBUZXh0dXJlSm9iKERpc2NhcmRDb250
ZW50cywgZGlydHlSZWN0KTsgfQogICAgICAgICBzdGF0aWMgVGV4dHVyZUpvYiByZXNpemVDb250
ZW50cyhjb25zdCBJbnRTaXplJiBuZXdTaXplKSB7IHJldHVybiBUZXh0dXJlSm9iKFJlc2l6ZUNv
bnRlbnRzLCBuZXdTaXplKTsgfQogICAgICAgICBzdGF0aWMgVGV4dHVyZUpvYiBkaXJ0eUNvbnRl
bnRzKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgeyByZXR1cm4gVGV4dHVyZUpvYihEaXJ0eUNv
bnRlbnRzLCBkaXJ0eVJlY3QpOyB9CkBAIC0xMzQsOCArMTMwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgYm9vbCBpc051bGwoKSB7IHJldHVybiBtX3R5cGUgPT0gVW5rbm93bjsgfQogCiAgICAgICAg
IFR5cGUgbV90eXBlOwotICAgICAgICBMYXllclRleHR1cmU6Okhvc3RUeXBlIG1fY29udGVudHM7
Ci0gICAgICAgIGJvb2wgbV9pc09wYXF1ZTsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkdyYXBoaWNzOjpCdWZmZXIqIG1fY29udGVudHM7CiAgICAgICAgIEludFJlY3QgbV9kaXJ0eVJl
Y3Q7CiAgICAgICAgIENvbG9yIG1fY29sb3I7CiAgICAgICAgIFRpbGVJbmRleCBtX2luZGV4OwpA
QCAtMTU2LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ29tcG9zaXRpbmcgdGhyZWFkCiAg
ICAgdm9pZCB1cGRhdGVUaWxlQ29udGVudHMoY29uc3QgVGV4dHVyZUpvYiYsIGNvbnN0IEludFJl
Y3QmKTsKICAgICB2b2lkIGFkZFRpbGVKb2IoY29uc3QgVGlsZUluZGV4JiwgY29uc3QgVGV4dHVy
ZUpvYiYsIFRpbGVKb2JzTWFwJik7Ci0gICAgdm9pZCBwZXJmb3JtVGlsZUpvYihMYXllclRpbGUq
LCBjb25zdCBUZXh0dXJlSm9iJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcGVyZm9ybVRp
bGVKb2IoTGF5ZXJUaWxlKiwgY29uc3QgVGV4dHVyZUpvYiYpOwogICAgIHZvaWQgcHJvY2Vzc1Rl
eHR1cmVKb2IoY29uc3QgVGV4dHVyZUpvYiYsIFRpbGVKb2JzTWFwJik7CiAgICAgdm9pZCBwcnVu
ZVRleHR1cmVzKCk7CiAgICAgdm9pZCB2aXNpYmlsaXR5Q2hhbmdlZChib29sIG5lZWRzRGlzcGxh
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQu
Y3BwCmluZGV4IGI2NTAwNWIwMWJkNzBjM2Y1YWUxZTU3NTJkMTA4OTc2OGM0NDMxZjQuLjMxNGYy
YzllZGVlMjRkNDNhYWRhNzljMjFjZTk3Y2FkMDQzYjI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRp
bmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAx
MyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAK
IHVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyOwordXNpbmcgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlOwogCiAjZGVmaW5lIERFQlVH
X1RFWFRVUkVfTUVNT1JZX1VTQUdFIDAKIApAQCAtNTgsMjIgKzU5LDE2IEBAIFRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpCiB7CiB9
CiAKLUxheWVyVGV4dHVyZTo6R3B1SGFuZGxlIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
OjphbGxvY2F0ZVRleHR1cmVJZChjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgdHlwZSkKK0J1ZmZlciogVGV4dHVyZUNhY2hlQ29t
cG9zaXRpbmdUaHJlYWQ6OmNyZWF0ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBCdWZmZXJU
eXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
Y3JlYXRlQnVmZmVyKHNpemUsIHR5cGUpOwogfQogCi1zdGF0aWMgdm9pZCBmcmVlVGV4dHVyZUlk
KExheWVyVGV4dHVyZTo6R3B1SGFuZGxlIGlkKQotewotICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6ZGVzdHJveUJ1ZmZlcihpZCk7Ci19Ci0KIHZvaWQgVGV4dHVyZUNhY2hlQ29t
cG9zaXRpbmdUaHJlYWQ6OmNvbGxlY3RHYXJiYWdlKCkKIHsKLSAgICBmb3IgKEdhcmJhZ2U6Oml0
ZXJhdG9yIGl0ID0gbV9nYXJiYWdlLmJlZ2luKCk7IGl0ICE9IG1fZ2FyYmFnZS5lbmQoKTsgKytp
dCkgewotICAgICAgICBab21iaWVUZXh0dXJlJiB6b21iaWUgPSAqaXQ7Ci0gICAgICAgIGZyZWVU
ZXh0dXJlSWQoem9tYmllLmlkKTsKLSAgICB9CisgICAgZm9yIChHYXJiYWdlOjppdGVyYXRvciBp
dCA9IG1fZ2FyYmFnZS5iZWdpbigpOyBpdCAhPSBtX2dhcmJhZ2UuZW5kKCk7ICsraXQpCisgICAg
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6ZGVzdHJveUJ1ZmZlcigoKml0KS5i
dWZmZXIpOworCiAgICAgbV9nYXJiYWdlLmNsZWFyKCk7CiB9CiAKQEAgLTEwNCwxNyArOTksMTcg
QEAgdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZURlc3Ryb3llZChM
YXllclRleHR1cmUqIHRleHR1cmUpCiAgICAgbV90ZXh0dXJlcy5yZW1vdmUoaXQpOwogfQogCi1i
b29sIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjppbnN0YWxsKExheWVyVGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBo
aWNzOjpCdWZmZXJUeXBlIHR5cGUpCitib29sIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
OjppbnN0YWxsKExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgQnVm
ZmVyVHlwZSB0eXBlKQogewogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBpZiAoIXRleHR1cmUtPmhhc1RleHR1cmUoKSAmJiAhc2l6ZS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgTGF5ZXJUZXh0dXJlOjpHcHVIYW5kbGUgdGV4dHVyZUlkID0gYWxsb2NhdGVUZXh0
dXJlSWQoc2l6ZSwgdHlwZSk7Ci0gICAgICAgIGlmICghdGV4dHVyZUlkKQorICAgIGlmICghdGV4
dHVyZS0+YnVmZmVyKCkgJiYgIXNpemUuaXNFbXB0eSgpKSB7CisgICAgICAgIEJ1ZmZlciogYnVm
ZmVyID0gY3JlYXRlQnVmZmVyKHNpemUsIHR5cGUpOworICAgICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB0ZXh0dXJlLT5zZXRUZXh0dXJlSWQo
dGV4dHVyZUlkKTsKKyAgICAgICAgdGV4dHVyZS0+c2V0QnVmZmVyKGJ1ZmZlcik7CiAgICAgICAg
IHRleHR1cmUtPnNldFNpemUoc2l6ZSk7CiAgICAgICAgIHRleHR1cmVSZXNpemVkKHRleHR1cmUs
IEludFNpemUoKSk7CiAgICAgfQpAQCAtMTI1LDE3ICsxMjAsMTcgQEAgYm9vbCBUZXh0dXJlQ2Fj
aGVDb21wb3NpdGluZ1RocmVhZDo6aW5zdGFsbChMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFNpemUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBUZXh0dXJlQ2FjaGVDb21wb3Np
dGluZ1RocmVhZDo6cmVzaXplVGV4dHVyZShMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFNpemUmIHNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSB0
eXBlKQorYm9vbCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6cmVzaXplVGV4dHVyZShM
YXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFNpemUmIHNpemUsIEJ1ZmZlclR5cGUgdHlw
ZSkKIHsKICAgICBJbnRTaXplIG9sZFNpemUgPSB0ZXh0dXJlLT5zaXplKCk7CiAKICAgICAvLyBS
ZWFsbG9jYXRlIHRoZSBidWZmZXIKLSAgICBMYXllclRleHR1cmU6OkdwdUhhbmRsZSB0ZXh0dXJl
SWQgPSBhbGxvY2F0ZVRleHR1cmVJZChzaXplLCB0eXBlKTsKLSAgICBpZiAoIXRleHR1cmVJZCkK
KyAgICBCdWZmZXIqIGJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcihzaXplLCB0eXBlKTsKKyAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZnJlZVRleHR1cmVJZCh0ZXh0
dXJlLT50ZXh0dXJlSWQoKSk7Ci0gICAgdGV4dHVyZS0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7
CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVyKHRleHR1
cmUtPmJ1ZmZlcigpKTsKKyAgICB0ZXh0dXJlLT5zZXRCdWZmZXIoYnVmZmVyKTsKICAgICB0ZXh0
dXJlLT5zZXRTaXplKHNpemUpOwogICAgIHRleHR1cmVSZXNpemVkKHRleHR1cmUsIG9sZFNpemUp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtMTQ3LDcgKzE0Miw3IEBAIHZvaWQgVGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQ6OmV2aWN0KGNvbnN0IFRleHR1cmVTZXQ6Oml0ZXJhdG9yJiBpdCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlID0gKml0OwotICAg
IGlmICh0ZXh0dXJlLT5oYXNUZXh0dXJlKCkpIHsKKyAgICBpZiAodGV4dHVyZS0+YnVmZmVyKCkp
IHsKICAgICAgICAgaW50IGRlbHRhID0gMDsKICAgICAgICAgZGVsdGEgKz0gdGV4dHVyZS0+d2lk
dGgoKSAqIHRleHR1cmUtPmhlaWdodCgpICogTGF5ZXJUZXh0dXJlOjpieXRlc1BlclBpeGVsKCk7
CiAgICAgICAgIGRlbHRhICs9IHRleHR1cmUtPnNpemVJbkJ5dGVzKCk7CkBAIC0xNTYsNyArMTUx
LDcgQEAgdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6ZXZpY3QoY29uc3QgVGV4
dHVyZVNldDo6aXRlcmF0b3ImIGl0KQogICAgICAgICBtX2dhcmJhZ2UuYXBwZW5kKFpvbWJpZVRl
eHR1cmUodGV4dHVyZSkpOwogICAgIH0KIAotICAgIHRleHR1cmUtPnNldFRleHR1cmVJZCgwKTsK
KyAgICB0ZXh0dXJlLT5zZXRCdWZmZXIoMCk7CiB9CiAKIHZvaWQgVGV4dHVyZUNhY2hlQ29tcG9z
aXRpbmdUaHJlYWQ6OnRleHR1cmVBY2Nlc3NlZChMYXllclRleHR1cmUqIHRleHR1cmUpCkBAIC0y
MDksMTQgKzIwNCwxNCBAQCB2b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpzZXRN
ZW1vcnlVc2FnZShzaXplX3QgbWVtb3J5VXNhZ2UpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxM
YXllclRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yVGls
ZWRDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3Qg
SW50UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYgaW5kZXgsIGJvb2wgaXNPcGFxdWUp
CitQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6
OnRleHR1cmVGb3JDb250ZW50cyhCdWZmZXIqIGNvbnRlbnRzKQogewogICAgIFJlZlB0cjxMYXll
clRleHR1cmU+IHRleHR1cmUgPSBjcmVhdGVUZXh0dXJlKCk7CiAKICAgICAvLyBQcm90ZWN0IG5l
d2x5IGNyZWF0ZWQgdGV4dHVyZSBmcm9tIGJlaW5nIGV2aWN0ZWQuCiAgICAgVGV4dHVyZVByb3Rl
Y3RvciBwcm90ZWN0b3IodGV4dHVyZS5nZXQoKSk7CiAKLSAgICB0ZXh0dXJlLT51cGRhdGVDb250
ZW50cyhjb250ZW50cywgdGlsZVJlY3QsIHRpbGVSZWN0LCBpc09wYXF1ZSk7CisgICAgdGV4dHVy
ZS0+dXBkYXRlQ29udGVudHMoY29udGVudHMpOwogCiAgICAgcmV0dXJuIHRleHR1cmUucmVsZWFz
ZSgpOwogfQpAQCAtMjQ3LDcgKzI0Miw3IEBAIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiBUZXh0
dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZUZvckNvbG9yKGNvbnN0IENvCiAgICAg
cmV0dXJuIHRleHR1cmUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPExheWVyVGV4dHVyZT4g
VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0
cjxMYXllclRleHR1cmU+JiB0ZXh0dXJlSW4sIGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUm
IGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVS
ZWN0LCBib29sIGlzT3BhcXVlKQorUGFzc1JlZlB0cjxMYXllclRleHR1cmU+IFRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVDb250ZW50cyhjb25zdCBSZWZQdHI8TGF5ZXJUZXh0
dXJlPiYgdGV4dHVyZUluLCBCdWZmZXIqIGNvbnRlbnRzKQogewogICAgIFJlZlB0cjxMYXllclRl
eHR1cmU+IHRleHR1cmUodGV4dHVyZUluKTsKIApAQCAtMjU5LDggKzI1NCw3IEBAIFBhc3NSZWZQ
dHI8TGF5ZXJUZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dXBkYXRlQ29u
dGVudHMoY29uc3QgUmVmCiAgICAgLy8gUHJvdGVjdCBuZXdseSBjcmVhdGVkIHRleHR1cmUgZnJv
bSBiZWluZyBldmljdGVkLgogICAgIFRleHR1cmVQcm90ZWN0b3IgcHJvdGVjdG9yKHRleHR1cmUu
Z2V0KCkpOwogCi0vLyBUT0RPOiBpZiB0aGlzIGlzIGEgcGFydGlhbCB1cGRhdGUgd2UgbmVlZCB0
byBibGl0IHRoZSBidWZmZXIgb24gdG9wIG9mIHRoZSBvdGhlcgotICAgIHRleHR1cmUtPnVwZGF0
ZUNvbnRlbnRzKGNvbnRlbnRzLCBkaXJ0eVJlY3QsIHRpbGVSZWN0LCBpc09wYXF1ZSk7CisgICAg
dGV4dHVyZS0+dXBkYXRlQ29udGVudHMoY29udGVudHMpOwogCiAgICAgcmV0dXJuIHRleHR1cmUu
cmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGlu
Z1RocmVhZC5oCmluZGV4IDM3Y2IzYjAzODQwNGZiZTg0MTQzYjRkMDk3ZjliYWM0OWI1MzE1MmMu
LjA4YjIzNDM4NjI1ZDMzMGNhZWViMzNmNGIxMmM2NDVlMzJmOTcwN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29t
cG9zaXRpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDEzIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ly8gUmV0cmlldmUgYSB0ZXh0dXJlIGZyb20gdGhlIGNhY2hlLgotICAgIFBhc3NSZWZQdHI8TGF5
ZXJUZXh0dXJlPiB0ZXh0dXJlRm9yVGlsZWRDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhv
c3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRl
eCYsIGJvb2wgaXNPcGFxdWUpOworICAgIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJl
Rm9yQ29udGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGNvbnRl
bnRzKTsKICAgICBQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gdGV4dHVyZUZvckNvbG9yKGNvbnN0
IENvbG9yJik7CiAKICAgICAvLyBVcGRhdGUgY29udGVudHMgb2YgYW4gZXhpc3RpbmcgdGV4dHVy
ZSwgb3IgY3JlYXRlIGEgbmV3IG9uZSBpZiB0ZXh0dXJlIGlzIDAuCi0gICAgUGFzc1JlZlB0cjxM
YXllclRleHR1cmU+IHVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0cjxMYXllclRleHR1cmU+Jiwg
Y29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGJvb2wgaXNPcGFxdWUpOworICAgIFBh
c3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiB1cGRhdGVDb250ZW50cyhjb25zdCBSZWZQdHI8TGF5ZXJU
ZXh0dXJlPiYsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBjb250ZW50
cyk7CiAKICAgICBzaXplX3QgbWVtb3J5VXNhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVVz
YWdlOyB9CiAgICAgc2l6ZV90IG1lbW9yeUxpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlM
aW1pdDsgfQpAQCAtODcsMTMgKzg3LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RydWN0
IFpvbWJpZVRleHR1cmUgewogICAgICAgICBleHBsaWNpdCBab21iaWVUZXh0dXJlKExheWVyVGV4
dHVyZSogdGV4dHVyZSkKLSAgICAgICAgICAgIDogaWQodGV4dHVyZS0+dGV4dHVyZUlkKCkpCisg
ICAgICAgICAgICA6IGJ1ZmZlcih0ZXh0dXJlLT5idWZmZXIoKSkKICAgICAgICAgICAgICwgc2l6
ZSh0ZXh0dXJlLT5zaXplKCkpCiAgICAgICAgICAgICAsIHNpemVJbkJ5dGVzKHRleHR1cmUtPnNp
emVJbkJ5dGVzKCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIExheWVyVGV4dHVy
ZTo6R3B1SGFuZGxlIGlkOworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJ1ZmZlciogYnVmZmVyOwogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIHNpemVfdCBz
aXplSW5CeXRlczsKICAgICB9OwpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgVGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKTsKICAgICB+VGV4dHVyZUNhY2hlQ29tcG9zaXRp
bmdUaHJlYWQoKTsKIAotICAgIExheWVyVGV4dHVyZTo6R3B1SGFuZGxlIGFsbG9jYXRlVGV4dHVy
ZUlkKGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkJ1ZmZlclR5cGUpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyKiBjcmVhdGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSk7CiAKICAgICB2b2lkIGluY01lbW9y
eVVzYWdlKGludCBkZWx0YSkgeyBzZXRNZW1vcnlVc2FnZShtZW1vcnlVc2FnZSgpICsgZGVsdGEp
OyB9CiAgICAgdm9pZCBkZWNNZW1vcnlVc2FnZShpbnQgZGVsdGEpIHsgc2V0TWVtb3J5VXNhZ2Uo
bWVtb3J5VXNhZ2UoKSAtIGRlbHRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViT3ZlcmxheS5jcHAKaW5kZXggODdiNmU3ZGM5YTE5NTI2ZTJmYjJmZTc4NWM2NTU2N2YyZjVm
M2IyMS4uNTYwOTdlZTFmMmQ0YWVlNzBkZDkzMjRjZTNmNmY0NjlmNjU1NTllOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXkuY3BwCkBAIC00MzgsNyArNDM4LDcg
QEAgdm9pZCBXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6dXBsb2FkVGV4
dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2kKICAgICBpZiAobV9pbWFnZS5pc051bGwoKSAmJiAh
bV9jb2xvci5pc1ZhbGlkKCkgJiYgIW1fZHJhd3NDb250ZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV90ZXh0dXJlICYmIG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpCisgICAgaWYgKG1f
dGV4dHVyZSAmJiBtX3RleHR1cmUtPmJ1ZmZlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9jb2xvci5pc1ZhbGlkKCkpIHsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIFdlYk92ZXJs
YXlMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Ojp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKExh
eWVyQ29tcG9zaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTGF5ZXJUZXh0dXJlOjpI
b3N0VHlwZSB0ZXh0dXJlQ29udGVudHMgPSBMYXllclRleHR1cmU6Okhvc3RUeXBlKCk7CisgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIHRleHR1cmVDb250ZW50cyA9
IDA7CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZTsKIAogICAgIGlmIChtX2RyYXdzQ29udGVudCkg
ewpAQCAtNDk4LDEzICs0OTgsMTIgQEAgdm9pZCBXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZENsaWVudDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2kKIAogICAgIG1f
dGV4dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRlKCk7CiAgICAgbV90ZXh0dXJlLT5wcm90ZWN0
KEludFNpemUoKSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCYWNrZWRXaGVuTmVj
ZXNzYXJ5KTsKLSAgICBJbnRSZWN0IGJpdG1hcFJlY3QoMCwgMCwgdGV4dHVyZVNpemUud2lkdGgo
KSwgdGV4dHVyZVNpemUuaGVpZ2h0KCkpOwotICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHMo
dGV4dHVyZUNvbnRlbnRzLCBiaXRtYXBSZWN0LCBiaXRtYXBSZWN0LCBmYWxzZSk7CisgICAgbV90
ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlQ29udGVudHMpOwogfQogCiB2b2lkIFdlYk92
ZXJsYXlMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMoTGF5ZXJDb21w
b3NpdGluZ1RocmVhZCogbGF5ZXIsIGRvdWJsZSBzY2FsZSwgY29uc3QgR0xFUzJQcm9ncmFtJiBw
cm9ncmFtKQogewotICAgIGlmICghbV90ZXh0dXJlIHx8ICFtX3RleHR1cmUtPnRleHR1cmVJZCgp
KQorICAgIGlmICghbV90ZXh0dXJlIHx8ICFtX3RleHR1cmUtPmJ1ZmZlcigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBsYXllci0+ZHJhd1Ry
YW5zZm9ybSgpOwpAQCAtNTE1LDcgKzUxNCw3IEBAIHZvaWQgV2ViT3ZlcmxheUxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkCiAg
ICAgICAgIG1hdHJpeC5zY2FsZU5vblVuaWZvcm0oc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXllci0+
Ym91bmRzKCkud2lkdGgoKSkgLyBtX2ltYWdlLndpZHRoKCksIHN0YXRpY19jYXN0PGRvdWJsZT4o
bGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKSAvIG1faW1hZ2UuaGVpZ2h0KCkpOwogICAgIH0KICAg
ICBtYXRyaXguc2NhbGUobGF5ZXItPnNpemVJc1NjYWxlSW52YXJpYW50KCkgPyAxLjAgLyBzY2Fs
ZSA6IDEuMCk7Ci0gICAgYmxpdFRvQnVmZmVyKDAsIG1fdGV4dHVyZS0+dGV4dHVyZUlkKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlRyYW5zZm9ybWF0aW9uTWF0cml4
Jj4obWF0cml4KSwKKyAgICBibGl0VG9CdWZmZXIoMCwgbV90ZXh0dXJlLT5idWZmZXIoKSwgcmVp
bnRlcnByZXRfY2FzdDxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VHJhbnNmb3JtYXRpb25NYXRyaXgm
PihtYXRyaXgpLAogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OlNvdXJj
ZU92ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGxheWVyLT5kcmF3T3BhY2l0eSgpICog
MjU1KSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197566</attachid>
            <date>2013-04-11 03:25:09 -0700</date>
            <delta_ts>2013-04-11 04:10:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114276-20130411122446.patch</filename>
            <type>text/plain</type>
            <size>42338</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJjMjMxY2U5Y2FlYjVk
ZGVhODBlNWRhNjFlOGE2OGQyNTE3YzdhMS4uNjNhZjIxYTcwYTc0MGZhMTMwYmNjNWE0ZDBlM2Fl
ZmZhOWJiMmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEzLTA0LTEwICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gTGF5
ZXJUZXh0dXJlIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTQyNzYKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lh
IENhbXBvcy4KKworICAgICAgICBSZW1vdmUgdGhlIEdwdUhhbmRsZSBhbmQgSG9zdFR5cGUgdHlw
ZWRlZnMgZnJvbSBMYXllclRleHR1cmUsIHRoZXkKKyAgICAgICAgZG9uJ3QgbWFrZSBhbnkgc2Vu
c2Ugbm93IHRoYXQgd2UgcmVtb3ZlZCB0aGUgU2tpYSBjb2RlIHBhdGhzLiBXaXRoIFNraWEKKyAg
ICAgICAgdGhleSB1c2VkIHRvIGJlIGFuIE9wZW5HTCB0ZXh0dXJlIElEIGFuZCBhbiBTa0JpdG1h
cCByZXNwZWN0aXZlbHksIGJ1dAorICAgICAgICBub3cgaXQncyBqdXN0IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6QnVmZmVyIGFsbCBhcm91bmQuCisKKyAgICAgICAgVGhpcyBhbGxv
d3MgdXMgdG8gcmVuYW1lIHRleHR1cmVJZCgpIGludG8gYnVmZmVyKCkgd2hpY2ggaXMgbW9yZSB0
byB0aGUKKyAgICAgICAgcG9pbnQuIFRoZSB0ZXh0dXJlIElEIGNvbmNlcHQgaXMgbm93IHVwIGZv
ciBncmFicyBhbmQgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgY29uc29saWRhdGUgYWxsIHRoZSB2
YXJpb3VzIGNvZGUgZm9yIGV4dHJhY3RpbmcgYW4gT3BlbkdMIHRleHR1cmUgZnJvbQorICAgICAg
ICBhIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyLiBUaGlzIG9wcG9ydHVu
aXR5IGlzIHNlaXplZCBpbgorICAgICAgICBMYXllclRleHR1cmU6OnBsYXRmb3JtVGV4dHVyZSgp
LCBhIG5hbWUgd2hpY2ggbWFrZXMgbW9yZSBzZW5zZSB0aGFuCisgICAgICAgIHRleHR1cmVJZCgp
IGZvciBhbnlvbmUgZmFtaWxpYXIgd2l0aCB0aGUgR3JhcGhpY3NDb250ZXh0M0QgY29kZS4gV2Ug
Y2FuCisgICAgICAgIGFsc28gbGV2ZXJhZ2UgdGhlIFBsYXRmb3JtM0RPYmplY3QgdHlwZWRlZiB0
byBhdm9pZCBpbmNsdWRpbmcgZ2wyLmguCisKKyAgICAgICAgVGhlIHZlcnRleCBhdHRyaWJ1dGUg
c3RhdGUgd2FzIGdldHRpbmcgdHJhbXBsZWQgd2hlbiBpbnRlcmFjdGluZyB3aXRoCisgICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljcyBpbiB0aGUgTGF5ZXJGaWx0ZXJSZW5kZXJl
ci4gU29tZQorICAgICAgICBhZGRpdGlvbmFsIEdMIHN0YXRlIHNhdmUvcmVzdG9yZSBpbmNhbnRh
dGlvbnMgd2hlbiBhY2Nlc3NpbmcgdGhlIE9wZW5HTAorICAgICAgICB0ZXh0dXJlIGZvciBhIExh
eWVyVGV4dHVyZSBpbiB0aGUgbmV3IExheWVyVGV4dHVyZTo6cGxhdGZvcm1UZXh0dXJlKCkKKyAg
ICAgICAgbWV0aG9kIGZpeGVzIHZhcmlvdXMgQ1NTIEZpbHRlcnMgdGVzdCBjYXNlcy4KKworICAg
ICAgICBTaW5jZSB3ZSByZW1vdmVkIHRoZSBTa2lhIGludGVncmF0aW9uIGZyb20gTGF5ZXJUaWxl
ciwgbm9ib2R5IGNhcmVzCisgICAgICAgIGFib3V0IHRoZSBkaXJ0eSByZWN0LCB0aWxlIHJlY3Qg
b3Igb3BhcXVlbmVzcyBvZiB0aGUgdGlsZSBjb250ZW50cy4gU28KKyAgICAgICAgcmVtb3ZlIHRo
b3NlIHBhcmFtZXRlcnMgZnJvbSB0aGUgdXBkYXRlQ29udGVudHMgY29kZSBwYXRoLgorCisgICAg
ICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciBleGNlcHQgZm9yIGZpeGluZyBDU1MgRmlsdGVycyB0
ZXN0cyBsaWtlCisgICAgICAgIGNzczMvZmlsdGVycy9lZmZlY3QtYmx1ci1ody5odG1sLiBUaGlz
IGNhbiBvbmx5IGJlIHZlcmlmaWVkIGJ5IG1hbnVhbGx5CisgICAgICAgIGxvb2tpbmcgYXQgdGhl
IHRlc3RzLCB3ZSBkb24ndCBoYXZlIHBpeGVsIHRlc3Qgc3VwcG9ydCB0byBjYXRjaCB0aGlzCisg
ICAgICAgIGtpbmQgb2YgcmVncmVzc2lvbi4KKworICAgICAgICBQUiAzMjI4ODIKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3U3VyZmFj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJl
bmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXI6OnBpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6cG9uZyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjpwdXNoU25hcHNob3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6cG9wU25hcHNob3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YXBwbHlBY3Rpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlcjo6dXNlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlOjpMYXllclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJl
Ojp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnNldENv
bnRlbnRzVG9Db2xvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnByb3RlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpwbGF0Zm9ybVRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6aXNEaXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmJ1ZmZlcik6CisgICAgICAgIChMYXll
clRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpzZXRCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZTo6c2V0Q29udGVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZTo6
aGFzVGV4dHVyZSk6CisgICAgICAgIChMYXllclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyOjp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXI6OmRyYXdUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyVGlsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OlRleHR1cmVKb2I6OlRl
eHR1cmVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6VGV4dHVyZUpvYjo6c2V0
Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6VGV4dHVyZUpvYjo6dXBk
YXRlQ29udGVudHMpOgorICAgICAgICAoVGV4dHVyZUpvYik6CisgICAgICAgIChMYXllclRpbGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBv
c2l0aW5nVGhyZWFkOjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNh
Y2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmNvbGxlY3RHYXJiYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpyZXNpemVUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpldmljdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZUZvckNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
Ojp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoVGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9z
aXRpbmdUaHJlYWQ6OlpvbWJpZVRleHR1cmU6OlpvbWJpZVRleHR1cmUpOgorICAgICAgICAoWm9t
YmllVGV4dHVyZSk6CisKIDIwMTMtMDQtMTEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFsbG93RnJhbWVT
Y3JvbGxiYXJzIGRvZXMgbm90IHRlc3QgbWFpbiBmcmFtZSBzY3JvbGxiYXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IGU4YTg0ZjZiYWI3NWFjNGE5NGE2MTk4YTQwZTI4MDEyZDI0
ZTk1ZjMuLjJlYTJhNGE5ZjA3MjNkMjFlOWY3OWI1OTE1YTYyMzQwNDY3MzdkNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEzLTA0LTEwICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gTGF5
ZXJUZXh0dXJlIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTQyNzYKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lh
IENhbXBvcy4KKworICAgICAgICBBZGFwdCB0byB0aGUgTGF5ZXJUZXh0dXJlIHJlZmFjdG9yaW5n
IGRvd24gaW4gV2ViQ29yZS4KKworICAgICAgICBQUiAzMjI4ODIKKworICAgICAgICAqIEFwaS9X
ZWJPdmVybGF5LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViT3ZlcmxheUxh
eWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1RocmVh
ZENsaWVudDo6ZHJhd1RleHR1cmVzKToKKworMjAxMy0wNC0xMCAgQXJ2aWQgTmlsc3NvbiAgPGFu
aWxzc29uQHJpbS5jb20+CisKICAgICAgICAgW0JsYWNrQmVycnldIFJlbmFtZSBCbGFja0JlcnJ5
IHNwZWNpZmljIFRleHR1cmUgY2xhc3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NzgxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdU
aHJlYWQuY3BwCmluZGV4IDBhNDAwZjk3MTdlODUwNGYyMDIzMjA4YjM5MjUzMzFmMzM3ZjNjZDku
LmJkMjI5YThkYTg4ZmZhNzMyOWYxY2JhZDM4N2YxNTAzODAwMTkzMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRyYXdUcmFuc2ZvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgdGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZUFjY2Vzc2VkKGxheWVy
UmVuZGVyZXJTdXJmYWNlKCktPnRleHR1cmUoKSk7Ci0gICAgICAgIEdMdWludCBzdXJmYWNlVGV4
SUQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUoc3VyZmFj
ZVRleHR1cmUtPnRleHR1cmVJZCgpKSk7CisgICAgICAgIEdMdWludCBzdXJmYWNlVGV4SUQgPSBz
dXJmYWNlVGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCk7CiAKICAgICAgICAgaWYgKCFzdXJmYWNl
VGV4SUQpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjg2LDE4ICsy
ODYsOCBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmbwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KG1hc2spIHsKLSAgICAgICAgICAgIExheWVyVGV4dHVyZSogbWFza1RleHR1cmUgPSBtYXNrLT5j
b250ZW50c1RleHR1cmUoKTsKLSAgICAgICAgICAgIGlmIChtYXNrVGV4dHVyZSkgewotICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrVGV4SUQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxh
dGZvcm1CdWZmZXJIYW5kbGUobWFza1RleHR1cmUtPnRleHR1cmVJZCgpKSk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBGb3JjZSBjcmVhdGlvbiBpZiBpdCdzIDAKLSAgICAgICAgICAgICAgICBpZiAo
IW1hc2tUZXhJRCkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNhbGwgd2lsbCBjYXVz
ZSBkaXNwbGF5IGxpc3QgdG8gcmVuZGVyIHRvIGJhY2tpbmcsIHdoaWNoIGNhbiBtdXRhdGUgYSBs
b3Qgb2YgR0wgc3RhdGUuCi0gICAgICAgICAgICAgICAgICAgIEdMRVMyQ29udGV4dFN0YXRlOjpQ
cm9ncmFtU3RhdGVTYXZlciBwcm9ncmFtU2F2ZXI7Ci0gICAgICAgICAgICAgICAgICAgIEdMRVMy
Q29udGV4dFN0YXRlOjpUZXh0dXJlQW5kRkJPU3RhdGVTYXZlciB0ZXh0dXJlU2F2ZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIGxvY2tBbmRCaW5kQnVmZmVyR0xUZXh0dXJlKG1hc2tUZXh0dXJlLT50
ZXh0dXJlSWQoKSwgR0xfVEVYVFVSRV8yRCk7Ci0gICAgICAgICAgICAgICAgICAgIG1hc2tUZXhJ
RCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShtYXNrVGV4
dHVyZS0+dGV4dHVyZUlkKCkpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
TGF5ZXJUZXh0dXJlKiBtYXNrVGV4dHVyZSA9IG1hc2stPmNvbnRlbnRzVGV4dHVyZSgpKSB7Cisg
ICAgICAgICAgICAgICAgR0x1aW50IG1hc2tUZXhJRCA9IG1hc2tUZXh0dXJlLT5wbGF0Zm9ybVRl
eHR1cmUoKTsKIAogICAgICAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7
CiAgICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtYXNrVGV4SUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckZpbHRlclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKaW5kZXggZjFmZGYwODcwODc5
M2JlYWY1OTU1Y2M2YWFkNGU5ZmYxZWU2NmJiMS4uYTg0Nzg3NDhjNzYwYzRkMjYxZDBhZjA5NTMw
YjgzZTIxZjg5MDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCkBA
IC01MDAsMTEgKzUwMCw3IEBAIGJvb2wgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6aW5pdGlhbGl6ZVNo
YXJlZEdMT2JqZWN0cygpCiAKIHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6cGluZyhMYXllclJl
bmRlcmVyU3VyZmFjZSogc3VyZmFjZSkKIHsKLSAgICBHTHVpbnQgdGV4aWQgPSByZWludGVycHJl
dF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUobV90ZXh0dXJlLT50ZXh0dXJlSWQo
KSkpOwotICAgIGlmICghdGV4aWQpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpsb2NrQW5kQmluZEJ1ZmZlckdMVGV4dHVyZShtX3RleHR1cmUtPnRleHR1cmVJZCgp
LCBHTF9URVhUVVJFXzJEKTsKLSAgICAgICAgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdMdWlu
dD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUobV90ZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwotICAgIH0K
KyAgICBHTHVpbnQgdGV4aWQgPSBtX3RleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpOwogCiAgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCgKICAgICAgICAgR0xfRlJBTUVCVUZGRVIsCkBAIC01MTUs
NyArNTExLDcgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpwaW5nKExheWVyUmVuZGVyZXJT
dXJmYWNlKiBzdXJmYWNlKQogICAgICk7CiAgICAgZ2xCaW5kVGV4dHVyZSgKICAgICAgICAgR0xf
VEVYVFVSRV8yRCwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVm
ZmVySGFuZGxlKHN1cmZhY2UtPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpKQorICAgICAgICBzdXJm
YWNlLT50ZXh0dXJlKCktPnBsYXRmb3JtVGV4dHVyZSgpCiAgICAgKTsKIH0KIApAQCAtNTI1LDIy
ICs1MjEsMTggQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpwb25nKExheWVyUmVuZGVyZXJT
dXJmYWNlKiBzdXJmYWNlKQogICAgICAgICBHTF9GUkFNRUJVRkZFUiwKICAgICAgICAgR0xfQ09M
T1JfQVRUQUNITUVOVDAsCiAgICAgICAgIEdMX1RFWFRVUkVfMkQsCi0gICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShzdXJmYWNlLT50ZXh0dXJlKCkt
PnRleHR1cmVJZCgpKSksCisgICAgICAgIHN1cmZhY2UtPnRleHR1cmUoKS0+cGxhdGZvcm1UZXh0
dXJlKCksCiAgICAgICAgIDAKICAgICApOwogICAgIGdsQmluZFRleHR1cmUoCiAgICAgICAgIEdM
X1RFWFRVUkVfMkQsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1
ZmZlckhhbmRsZShtX3RleHR1cmUtPnRleHR1cmVJZCgpKSkKKyAgICAgICAgbV90ZXh0dXJlLT5w
bGF0Zm9ybVRleHR1cmUoKQogICAgICk7CiB9CiAKIHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6
cHVzaFNuYXBzaG90KExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlLCBpbnQgc291cmNlSWQp
CiB7Ci0gICAgR0x1aW50IHRleGlkID0gcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3Jt
QnVmZmVySGFuZGxlKG1fc25hcHNob3RUZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwotICAgIGlmICgh
dGV4aWQpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpsb2NrQW5k
QmluZEJ1ZmZlckdMVGV4dHVyZShtX3NuYXBzaG90VGV4dHVyZS0+dGV4dHVyZUlkKCksIEdMX1RF
WFRVUkVfMkQpOwotICAgICAgICB0ZXhpZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0
Zm9ybUJ1ZmZlckhhbmRsZShtX3NuYXBzaG90VGV4dHVyZS0+dGV4dHVyZUlkKCkpKTsKLSAgICB9
CisgICAgR0x1aW50IHRleGlkID0gbV9zbmFwc2hvdFRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgp
OwogCiAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCgKICAgICAgICAgR0xfRlJBTUVCVUZGRVIs
CkBAIC01NjgsNyArNTYwLDcgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpwb3BTbmFwc2hv
dCgpCiAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CiAgICAgZ2xCaW5k
VGV4dHVyZSgKICAgICAgICAgR0xfVEVYVFVSRV8yRCwKLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1fc25hcHNob3RUZXh0dXJlLT50ZXh0dXJl
SWQoKSkpCisgICAgICAgIG1fc25hcHNob3RUZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQogICAg
ICk7CiB9CiAKQEAgLTcyMCwxMyArNzEyLDcgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjph
cHBseUFjdGlvbnModW5zaWduZWQmIGZibywgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGEKIAog
ICAgICAgICBpZiAoYWN0aW9uc1tpXS0+c2hvdWxkUHVzaFNuYXBzaG90KCkpIHsKICAgICAgICAg
ICAgIFJlZlB0cjxMYXllclRleHR1cmU+IGN1cnJlbnRUZXh0dXJlID0gKCEoaSAlIDIpID8gc3Vy
ZmFjZS0+dGV4dHVyZSgpIDogbV90ZXh0dXJlKTsKLSAgICAgICAgICAgIEdMdWludCB0ZXhpZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShjdXJyZW50VGV4
dHVyZS0+dGV4dHVyZUlkKCkpKTsKLSAgICAgICAgICAgIGlmICghdGV4aWQpIHsKLSAgICAgICAg
ICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmxvY2tBbmRCaW5kQnVmZmVy
R0xUZXh0dXJlKGN1cnJlbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSwgR0xfVEVYVFVSRV8yRCk7Ci0g
ICAgICAgICAgICAgICAgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1C
dWZmZXJIYW5kbGUoY3VycmVudFRleHR1cmUtPnRleHR1cmVJZCgpKSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHB1c2hTbmFwc2hvdChzdXJmYWNlLCB0ZXhpZCk7CisgICAgICAgICAg
ICBwdXNoU25hcHNob3Qoc3VyZmFjZSwgY3VycmVudFRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgp
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoIShpICUgMikpCiAgICAgICAgICAgICBwaW5nKHN1
cmZhY2UpOyAvLyBTZXQgZnJhbWVidWZmZXIgdG8gb3VycywgYW5kIHRleHR1cmUgdG8gcGFyZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAppbmRleCA4ODdkY2RhOTk5ZTRhYzgxZDJhYjE4ZWMy
ODcwMTQ5YjliNzNlNDc0Li5hNTc2Y2E0ZDZmYzAyZDA1N2FiYzUyMzhkNWMzMjRmZmVhNzk5OTA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKQEAgLTQ0NSwxMSArNDQ1LDcgQEAgYm9vbCBM
YXllclJlbmRlcmVyOjp1c2VTdXJmYWNlKExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlKQog
CiAgICAgc3VyZmFjZS0+ZW5zdXJlVGV4dHVyZSgpOwogCi0gICAgR0x1aW50IHRleGlkID0gcmVp
bnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKHN1cmZhY2UtPnRleHR1
cmUoKS0+dGV4dHVyZUlkKCkpKTsKLSAgICBpZiAoIXRleGlkKSB7Ci0gICAgICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6bG9ja0FuZEJpbmRCdWZmZXJHTFRleHR1cmUoc3VyZmFj
ZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgR0xfVEVYVFVSRV8yRCk7Ci0gICAgICAgIHRleGlk
ID0gcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKHN1cmZhY2Ut
PnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpKTsKLSAgICB9CisgICAgR0x1aW50IHRleGlkID0gc3Vy
ZmFjZS0+dGV4dHVyZSgpLT5wbGF0Zm9ybVRleHR1cmUoKTsKIAogICAgIGlmICghbV9mYm8pCiAg
ICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5j
cHAKaW5kZXggZWRiYzUzMDE0NGRmZTVjZWE1YWYxMzYzNWMxNzAyMGY2ZDE4MzBhYy4uMTY0OGQ4
ZmM5NWZiMzkyYWY3MjJkODk4NmQ1NWYxYWJhZWI3MmY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJl
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBAQAogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZC5oIgogCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR0xFUzJDb250ZXh0U3RhdGUuaD4K
ICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRl
IDxHTEVTMi9nbDIuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTM0LDkgKzM1
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMYXllclRleHR1cmU6OkxheWVyVGV4dHVyZShi
b29sIGlzQ29sb3IpCiAgICAgOiBtX3Byb3RlY3Rpb25Db3VudCgwKQotICAgICwgbV9oYW5kbGUo
MCkKKyAgICAsIG1fYnVmZmVyKDApCiAgICAgLCBtX2lzQ29sb3IoaXNDb2xvcikKLSAgICAsIG1f
aXNPcGFxdWUoZmFsc2UpCiAgICAgLCBtX2J1ZmZlclNpemVJbkJ5dGVzKDApCiB7CiAgICAgdGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+aW5zdGFsbCh0aGlzLCBJbnRTaXplKCksIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7CkBAIC00
NywyOSArNDcsMjggQEAgTGF5ZXJUZXh0dXJlOjp+TGF5ZXJUZXh0dXJlKCkKICAgICB0ZXh0dXJl
Q2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50ZXh0dXJlRGVzdHJveWVkKHRoaXMpOwogfQogCi12
b2lkIExheWVyVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0
VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYg
dGlsZSwgYm9vbCBpc09wYXF1ZSkKK3ZvaWQgTGF5ZXJUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVyKQogewotICAgIGlm
IChtX2hhbmRsZSkKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0
cm95QnVmZmVyKG1faGFuZGxlKTsKLSAgICBtX2hhbmRsZSA9IGNvbnRlbnRzOwotICAgIHNpemVf
dCBuZXdCdWZmZXJTaXplSW5CeXRlcyA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
YnVmZmVyU2l6ZUluQnl0ZXMobV9oYW5kbGUpOworICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVyKG1fYnVmZmVyKTsK
KyAgICBtX2J1ZmZlciA9IGJ1ZmZlcjsKKyAgICBzaXplX3QgbmV3QnVmZmVyU2l6ZUluQnl0ZXMg
PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmJ1ZmZlclNpemVJbkJ5dGVzKG1fYnVm
ZmVyKTsKICAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50ZXh0dXJlU2l6ZUlu
Qnl0ZXNDaGFuZ2VkKHRoaXMsIG5ld0J1ZmZlclNpemVJbkJ5dGVzIC0gbV9idWZmZXJTaXplSW5C
eXRlcyk7CiAgICAgbV9idWZmZXJTaXplSW5CeXRlcyA9IG5ld0J1ZmZlclNpemVJbkJ5dGVzOwog
fQogCiB2b2lkIExheWVyVGV4dHVyZTo6c2V0Q29udGVudHNUb0NvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKIHsKLSAgICBtX2lzT3BhcXVlID0gIWNvbG9yLmhhc0FscGhhKCk7CiAgICAgUkdCQTMy
IHJnYmEgPSBjb2xvci5yZ2IoKTsKIAotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVyKG1faGFuZGxlKTsKKyAgICBp
ZiAobV9idWZmZXIpCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6ZGVz
dHJveUJ1ZmZlcihtX2J1ZmZlcik7CiAKLSAgICBtX2hhbmRsZSA9IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6Y3JlYXRlQnVmZmVyKEludFNpemUoMSwgMSksIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7Ci0gICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogZ2MgPSBsb2NrQnVm
ZmVyRHJhd2FibGUobV9oYW5kbGUpOworICAgIG1fYnVmZmVyID0gQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpjcmVhdGVCdWZmZXIoSW50U2l6ZSgxLCAxKSwgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpCYWNrZWRXaGVuTmVjZXNzYXJ5KTsKKyAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBnYyA9IGxvY2tCdWZm
ZXJEcmF3YWJsZShtX2J1ZmZlcik7CiAgICAgZ2MtPnNldEZpbGxDb2xvcihyZ2JhKTsKICAgICBn
Yy0+YWRkRmlsbFJlY3QoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZsb2F0UmVjdCgwLCAwLCAxLCAx
KSk7Ci0gICAgcmVsZWFzZUJ1ZmZlckRyYXdhYmxlKG1faGFuZGxlKTsKKyAgICByZWxlYXNlQnVm
ZmVyRHJhd2FibGUobV9idWZmZXIpOwogCiAgICAgSW50U2l6ZSBvbGRTaXplID0gbV9zaXplOwog
ICAgIG1fc2l6ZSA9IEludFNpemUoMSwgMSk7CkBAIC03OSw3ICs3OCw3IEBAIHZvaWQgTGF5ZXJU
ZXh0dXJlOjpzZXRDb250ZW50c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBib29sIExh
eWVyVGV4dHVyZTo6cHJvdGVjdChjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgdHlwZSkKIHsKLSAgICBpZiAoIWhhc1RleHR1cmUo
KSkgeworICAgIGlmICghbV9idWZmZXIpIHsKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYmVlbiBl
dmljdGVkIGJ5IHRoZSBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCwKICAgICAgICAgLy8g
YXR0ZW1wdCB0byBpbnN0YWxsIHVzIGFnYWluLgogICAgICAgICBpZiAoIXRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkKCktPmluc3RhbGwodGhpcywgc2l6ZSwgdHlwZSkpCkBAIC05Niw2ICs5
NSwyNiBAQCBib29sIExheWVyVGV4dHVyZTo6cHJvdGVjdChjb25zdCBJbnRTaXplJiBzaXplLCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OgogICAgIHJldHVybiB0cnVlOwogfQogCitQ
bGF0Zm9ybTNET2JqZWN0IExheWVyVGV4dHVyZTo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QKK3sK
KyAgICB1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOworCisg
ICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1cmUgPSByZWludGVycHJldF9jYXN0PFBs
YXRmb3JtM0RPYmplY3Q+KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1fYnVmZmVyKSk7CisKKyAgICAv
LyBGb3JjZSBjcmVhdGlvbiBpZiBpdCdzIDAuCisgICAgaWYgKCFwbGF0Zm9ybVRleHR1cmUpIHsK
KyAgICAgICAgLy8gVGhpcyBjYWxsIGNhbiBjYXVzZSBkaXNwbGF5IGxpc3QgdG8gcmVuZGVyIHRv
IGJhY2tpbmcsIHdoaWNoIGNhbiBtdXRhdGUgYSBsb3Qgb2YgR0wgc3RhdGUuCisgICAgICAgIEdM
RVMyQ29udGV4dFN0YXRlOjpWZXJ0ZXhBdHRyaWJ1dGVTdGF0ZVNhdmVyIHZlcnRleEF0dHJpYlN0
YXRlU2F2ZXI7CisgICAgICAgIEdMRVMyQ29udGV4dFN0YXRlOjpQcm9ncmFtU3RhdGVTYXZlciBw
cm9ncmFtU2F2ZXI7CisgICAgICAgIEdMRVMyQ29udGV4dFN0YXRlOjpUZXh0dXJlQW5kRkJPU3Rh
dGVTYXZlciB0ZXh0dXJlU2F2ZXI7CisKKyAgICAgICAgbG9ja0FuZEJpbmRCdWZmZXJHTFRleHR1
cmUobV9idWZmZXIsIEdMX1RFWFRVUkVfMkQpOworICAgICAgICBwbGF0Zm9ybVRleHR1cmUgPSBy
ZWludGVycHJldF9jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1f
YnVmZmVyKSk7CisgICAgfQorCisgICAgcmV0dXJuIHBsYXRmb3JtVGV4dHVyZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJUZXh0dXJlLmgKaW5kZXggZDg2YTUzZDJlMTU3NGQ0NjEwNWI2NWUzMTQ1
OGRhYjEwMzJhYWNmMC4uZWZmNDE3YjljZDkxM2Y5ZGJhZTNhZjk4MjNkYTMwY2MzMTA3ZDk4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyVGV4dHVyZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0y
MSw2ICsyMSw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNs
dWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAKICNpbmNsdWRl
IDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oPgpAQCAtNDcsMjQgKzQ4LDIyIEBAIHB1Ymxp
YzoKIAogICAgIH5MYXllclRleHR1cmUoKTsKIAotICAgIHR5cGVkZWYgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIEdwdUhhbmRsZTsKLSAgICB0eXBlZGVmIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBIb3N0VHlwZTsKKyAgICBib29sIGlzRGly
dHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KIAotICAgIEdwdUhhbmRsZSB0ZXh0dXJl
SWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZTsgfQotICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2hhbmRsZTsgfQotICAgIGJvb2wgaGFzVGV4dHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFuZGxlOyB9CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBib29sIGlzQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29sb3I7IH0KLSAgICBib29sIGlzT3BhcXVlKCkgY29u
c3QgeyByZXR1cm4gbV9pc09wYXF1ZTsgfQogCiAgICAgYm9vbCBpc1Byb3RlY3RlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvdGVjdGlvbkNvdW50ID4gMDsgfQogICAgIHZvaWQgcHJvdGVjdCgpIHsg
KyttX3Byb3RlY3Rpb25Db3VudDsgfQogICAgIHZvaWQgdW5wcm90ZWN0KCkgeyAtLW1fcHJvdGVj
dGlvbkNvdW50OyB9CiAKLSAgICAvLyBUaGlzIHdpbGwgZW5zdXJlIHRoZSB0ZXh0dXJlIGhhcyBi
YWNraW5nIHdpdGggdGhlIHNwZWNpZmllZCBzaXplCisgICAgLy8gVGhpcyB3aWxsIGVuc3VyZSBh
IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZm9yIHRoaXMgdGV4dHVyZSB3aXRoIHRoZSByZXF1ZXN0ZWQg
YmFja2luZyBhbmQgc2l6ZS4KICAgICBib29sIHByb3RlY3QoY29uc3QgSW50U2l6ZSYsIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSA9IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7CiAKLSAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzKGNvbnN0IEhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
LCBjb25zdCBJbnRSZWN0JiB0aWxlLCBib29sIGlzT3BhcXVlKTsKKyAgICBQbGF0Zm9ybTNET2Jq
ZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0OworCisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciopOwogICAgIHZvaWQgc2V0Q29u
dGVudHNUb0NvbG9yKGNvbnN0IENvbG9yJik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KQEAgLTc4LDExICs3NywxMSBAQCBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDsKIAogICAgIExheWVyVGV4dHVy
ZShib29sIGlzQ29sb3IgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZXRUZXh0dXJlSWQoR3B1SGFuZGxl
IGlkKQorICAgIHZvaWQgc2V0QnVmZmVyKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyKiBidWZmZXIpCiAgICAgewotICAgICAgICBtX2hhbmRsZSA9IGlkOworICAgICAgICBt
X2J1ZmZlciA9IGJ1ZmZlcjsKIAotICAgICAgICAvLyBXZSBhc3N1bWUgaXQgaXMgYSBuZXdseSBh
bGxvY2F0ZWQgdGV4dHVyZSwKKyAgICAgICAgLy8gV2UgYXNzdW1lIGl0IGlzIGEgbmV3bHkgYWxs
b2NhdGVkIGJ1ZmZlciwKICAgICAgICAgLy8gYW5kIHRodXMgZW1wdHksIG9yIDAsIHdoaWNoIHdv
dWxkIG9mIGNvdXJzZQogICAgICAgICAvLyBiZSBlbXB0eS4KICAgICAgICAgbV9zaXplID0gSW50
U2l6ZSgpOwpAQCAtOTIsMTAgKzkxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CiAKICAgICBpbnQgbV9wcm90ZWN0
aW9uQ291bnQ7Ci0gICAgR3B1SGFuZGxlIG1faGFuZGxlOworICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6QnVmZmVyKiBtX2J1ZmZlcjsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAg
ICBib29sIG1faXNDb2xvcjsKLSAgICBib29sIG1faXNPcGFxdWU7CiAgICAgc2l6ZV90IG1fYnVm
ZmVyU2l6ZUluQnl0ZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5jcHAKaW5kZXggMGQ5NzNhZjE0NjM3
ZTlhNTlmNTA3MWRkOTZlNzRmOTJmZjk2ZWVlYy4uMGJkZmRjYmVlZWIwOTM0NTdmMzNhMzc4ODFk
NjI1ZmRkNzgyYjNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzksOSArMzksOSBAQCBMYXllclRpbGU6On5MYXllclRpbGUoKQogICAgIHNl
dFZpc2libGUoZmFsc2UpOwogfQogCi12b2lkIExheWVyVGlsZTo6c2V0Q29udGVudHMoY29uc3Qg
TGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBib29sIGlzT3BhcXVlKQordm9pZCBMYXllclRpbGU6
OnNldENvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBjb250
ZW50cykKIHsKLSAgICBzZXRUZXh0dXJlKHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCkt
PnRleHR1cmVGb3JUaWxlZENvbnRlbnRzKGNvbnRlbnRzLCB0aWxlUmVjdCwgaW5kZXgsIGlzT3Bh
cXVlKSk7CisgICAgc2V0VGV4dHVyZSh0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50
ZXh0dXJlRm9yQ29udGVudHMoY29udGVudHMpKTsKIH0KIAogdm9pZCBMYXllclRpbGU6OnNldENv
bnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC00OSw5ICs0OSw5IEBAIHZvaWQg
TGF5ZXJUaWxlOjpzZXRDb250ZW50c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHNl
dFRleHR1cmUodGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZUZvckNvbG9y
KGNvbG9yKSk7CiB9CiAKLXZvaWQgTGF5ZXJUaWxlOjp1cGRhdGVDb250ZW50cyhjb25zdCBMYXll
clRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBj
b25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgYm9vbCBpc09wYXF1ZSkKK3ZvaWQgTGF5ZXJUaWxlOjp1
cGRhdGVDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogY29u
dGVudHMpCiB7Ci0gICAgc2V0VGV4dHVyZSh0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgp
LT51cGRhdGVDb250ZW50cyhtX3RleHR1cmUsIGNvbnRlbnRzLCBkaXJ0eVJlY3QsIHRpbGVSZWN0
LCBpc09wYXF1ZSkpOworICAgIHNldFRleHR1cmUodGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJl
YWQoKS0+dXBkYXRlQ29udGVudHMobV90ZXh0dXJlLCBjb250ZW50cykpOwogfQogCiB2b2lkIExh
eWVyVGlsZTo6ZGlzY2FyZENvbnRlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5oCmluZGV4IDI4NjA4MTdhYTY1
NDdlNGI2NTAzYjExYTE0Mzk0ZGUxNjhmZDI0ODguLmIzOTliZmNjZDA5ZjkxMWQ4MGNhM2IyOTBj
YWRhMmRiYjk4MGRmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpAQCAtNDQsMTEgKzQ0LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNEaXJ0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudHNEaXJ0eSB8fCAhbV90ZXh0dXJlIHx8IG1fdGV4dHVyZS0+
aXNEaXJ0eSgpOyB9CiAKLSAgICBib29sIGhhc1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmUgJiYgbV90ZXh0dXJlLT5oYXNUZXh0dXJlKCk7IH0KKyAgICBib29sIGhhc1RleHR1cmUo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUgJiYgbV90ZXh0dXJlLT5idWZmZXIoKTsgfQogCi0g
ICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50
cywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYsIGJvb2wgaXNPcGFx
dWUpOworICAgIHZvaWQgc2V0Q29udGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpCdWZmZXIqKTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYpOwot
ICAgIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29u
dGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3Qs
IGJvb2wgaXNPcGFxdWUpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqKTsKICAgICB2b2lkIGRpc2NhcmRDb250ZW50cygpOwog
CiAgICAgLy8gVGhlIGN1cnJlbnQgdGV4dHVyZSBpcyBhbiBhY2N1cmF0ZSBwcmV2aWV3IG9mIHRo
aXMgbGF5ZXIsIGJ1dCBhIG1vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCmluZGV4IGNhMTQ1ZmUyZmVm
ZGEzZTc0NzNlNmJkZjNmZDc2MDUxZDU3NmQ3ZGYuLjU4M2EyOGMyMWEzOTU4MDFhYTczYzliZGYw
NGJmOGFiMWY1MjUxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcApAQCAtMjUzLDE4ICsyNTMsMTQg
QEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZChkb3VibGUg
c2NhbGUpCiAgICAgICAgIGlmIChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZl
ciogYnVmZmVyID0gY3JlYXRlQnVmZmVyKGJ1ZmZlclNpemUpKSB7CiAgICAgICAgICAgICBJbnRS
ZWN0IGNvbnRlbnRzUmVjdChJbnRQb2ludDo6emVybygpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICAg
ICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMoYnVmZmVyLCBjb250ZW50c1JlY3QsIHNjYWxl
KTsKLQotICAgICAgICAgICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYg
KGltYWdlLT5pc0JpdG1hcEltYWdlKCkpCi0gICAgICAgICAgICAgICAgaXNPcGFxdWUgPSBzdGF0
aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVl
KCk7Ci0gICAgICAgICAgICBhZGRUZXh0dXJlSm9iKFRleHR1cmVKb2I6OnNldENvbnRlbnRzKGJ1
ZmZlciwgY29udGVudHNSZWN0LCBpc09wYXF1ZSkpOworICAgICAgICAgICAgYWRkVGV4dHVyZUpv
YihUZXh0dXJlSm9iOjpzZXRDb250ZW50cyhidWZmZXIsIGNvbnRlbnRzUmVjdCkpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChtX2xheWVyLT5kcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBm
b3IgKEhhc2hTZXQ8VGlsZUluZGV4Pjo6aXRlcmF0b3IgaXQgPSByZW5kZXJKb2JzLmJlZ2luKCk7
IGl0ICE9IHJlbmRlckpvYnMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIGlmIChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVyID0gY3JlYXRlQnVmZmVyKHRp
bGVTaXplKCkpKSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JU
aWxlKCppdCwgcmVxdWlyZWRUZXh0dXJlU2l6ZSk7CiAgICAgICAgICAgICAgICAgbV9sYXllci0+
cGFpbnRDb250ZW50cyhidWZmZXIsIHRpbGVSZWN0LCBzY2FsZSk7Ci0gICAgICAgICAgICAgICAg
YWRkVGV4dHVyZUpvYihUZXh0dXJlSm9iOjp1cGRhdGVDb250ZW50cyhidWZmZXIsIHRpbGVSZWN0
LCBtX2xheWVyLT5pc09wYXF1ZSgpKSk7CisgICAgICAgICAgICAgICAgYWRkVGV4dHVyZUpvYihU
ZXh0dXJlSm9iOjp1cGRhdGVDb250ZW50cyhidWZmZXIsIHRpbGVSZWN0KSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zNjksMTEgKzM2NSw3IEBAIHZvaWQgTGF5ZXJUaWxl
cjo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKICAgICAg
ICAgICAgIG1fdGlsZXMuYWRkKHRpbGVKb2JzSXRlci0+a2V5LCB0aWxlKTsKICAgICAgICAgfQog
Ci0gICAgICAgIEludFJlY3QgdGlsZVJlY3Qob3JpZ2luLCB0aWxlU2l6ZSgpKTsKLSAgICAgICAg
dGlsZVJlY3Quc2V0V2lkdGgobWluKG1fcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpIC0gdGls
ZVJlY3QueCgpLCB0aWxlUmVjdC53aWR0aCgpKSk7Ci0gICAgICAgIHRpbGVSZWN0LnNldEhlaWdo
dChtaW4obV9yZXF1aXJlZFRleHR1cmVTaXplLmhlaWdodCgpIC0gdGlsZVJlY3QueSgpLCB0aWxl
UmVjdC5oZWlnaHQoKSkpOwotCi0gICAgICAgIHBlcmZvcm1UaWxlSm9iKHRpbGUsICp0aWxlSm9i
c0l0ZXItPnZhbHVlLCB0aWxlUmVjdCk7CisgICAgICAgIHBlcmZvcm1UaWxlSm9iKHRpbGUsICp0
aWxlSm9ic0l0ZXItPnZhbHVlKTsKICAgICB9CiAKICAgICBtX3RleHR1cmVKb2JzLmNsZWFyKCk7
CkBAIC00MTgsMTQgKzQxMCwxNCBAQCB2b2lkIExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3Qg
VGlsZUluZGV4JiBpbmRleCwgY29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSgogICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSAmam9iOwogfQogCi12b2lkIExheWVyVGlsZXI6OnBlcmZvcm1U
aWxlSm9iKExheWVyVGlsZSogdGlsZSwgY29uc3QgVGV4dHVyZUpvYiYgam9iLCBjb25zdCBJbnRS
ZWN0JiB0aWxlUmVjdCkKK3ZvaWQgTGF5ZXJUaWxlcjo6cGVyZm9ybVRpbGVKb2IoTGF5ZXJUaWxl
KiB0aWxlLCBjb25zdCBUZXh0dXJlSm9iJiBqb2IpCiB7CiAgICAgc3dpdGNoIChqb2IubV90eXBl
KSB7CiAgICAgY2FzZSBUZXh0dXJlSm9iOjpTZXRDb250ZW50c1RvQ29sb3I6CiAgICAgICAgIHRp
bGUtPnNldENvbnRlbnRzVG9Db2xvcihqb2IubV9jb2xvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFRleHR1cmVKb2I6OlNldENvbnRlbnRzOgotICAgICAgICB0aWxlLT5zZXRDb250ZW50
cyhqb2IubV9jb250ZW50cywgdGlsZVJlY3QsIGluZGV4T2ZUaWxlKHRpbGVSZWN0LmxvY2F0aW9u
KCkpLCBqb2IubV9pc09wYXF1ZSk7CisgICAgICAgIHRpbGUtPnNldENvbnRlbnRzKGpvYi5tX2Nv
bnRlbnRzKTsKICAgICAgICAgewogICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGls
ZXNNdXRleCk7CiAgICAgICAgICAgICBpZiAodGlsZS0+cmVuZGVyU3RhdGUoKSA9PSBMYXllclRp
bGU6OlJlbmRlclBlbmRpbmcpCkBAIC00MzMsNyArNDI1LDcgQEAgdm9pZCBMYXllclRpbGVyOjpw
ZXJmb3JtVGlsZUpvYihMYXllclRpbGUqIHRpbGUsIGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgY29u
c3QgSW4KICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBUZXh0dXJlSm9iOjpV
cGRhdGVDb250ZW50czoKLSAgICAgICAgdGlsZS0+dXBkYXRlQ29udGVudHMoam9iLm1fY29udGVu
dHMsIGpvYi5tX2RpcnR5UmVjdCwgdGlsZVJlY3QsIGpvYi5tX2lzT3BhcXVlKTsKKyAgICAgICAg
dGlsZS0+dXBkYXRlQ29udGVudHMoam9iLm1fY29udGVudHMpOwogICAgICAgICB7CiAgICAgICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxlc011dGV4KTsKICAgICAgICAgICAgIGlmICh0
aWxlLT5yZW5kZXJTdGF0ZSgpID09IExheWVyVGlsZTo6UmVuZGVyUGVuZGluZykKQEAgLTUwMiw3
ICs0OTQsNyBAQCBib29sIExheWVyVGlsZXI6OmRyYXdUaWxlKExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqIGxheWVyLCBkb3VibGUgc2NhbGUsIGNvbnN0IFRpbAogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgZHJhd1RyYW5zZm9ybS5zY2FsZSgxLjAgLyBsYXllci0+Y29u
dGVudHNTY2FsZSgpKTsKICAgICAgICAgICAgICAgICBkcmF3VHJhbnNmb3JtLnNjYWxlKGxheWVy
LT5zaXplSXNTY2FsZUludmFyaWFudCgpID8gMS4wIC8gc2NhbGUgOiAxLjApOwotICAgICAgICAg
ICAgICAgIGJsaXRUb0J1ZmZlcigwLCB0ZXh0dXJlLT50ZXh0dXJlSWQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmPihkcmF3VHJh
bnNmb3JtKSwKKyAgICAgICAgICAgICAgICBibGl0VG9CdWZmZXIoMCwgdGV4dHVyZS0+YnVmZmVy
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlRyYW5zZm9ybWF0aW9u
TWF0cml4Jj4oZHJhd1RyYW5zZm9ybSksCiAgICAgICAgICAgICAgICAgICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6U291cmNlT3ZlciwgZ2xvYmFsQWxwaGEpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oCmluZGV4IDUyYWQ1YjM3YjBjMmU2OTg3ZjNj
YTBlMjYxOWE1NTcyOTI3ZDI5OTcuLmJkNDA3MTY3NjE4YzI5NWQ4ZWM4NTkyYTRlMmEwMmUwM2E2
NDkwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJUaWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC04Niw3ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIFRleHR1cmVKb2IoVHlwZSB0eXBlLCBj
b25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICAg
ICAgICAgICwgbV9jb250ZW50cygwKQotICAgICAgICAgICAgLCBtX2lzT3BhcXVlKGZhbHNlKQog
ICAgICAgICAgICAgLCBtX2RpcnR5UmVjdChJbnRQb2ludDo6emVybygpLCBuZXdTaXplKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBSZXNpemVDb250ZW50cyk7CkBAIC05
NSwxNiArOTQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgVGV4dHVyZUpvYihUeXBlIHR5cGUsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAg
ICAgICAgICAsIG1fY29udGVudHMoMCkKLSAgICAgICAgICAgICwgbV9pc09wYXF1ZShmYWxzZSkK
ICAgICAgICAgICAgICwgbV9kaXJ0eVJlY3QoZGlydHlSZWN0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQodHlwZSA9PSBEaXNjYXJkQ29udGVudHMgfHwgdHlwZSA9PSBEaXJ0eUNvbnRl
bnRzKTsKICAgICAgICAgfQogCi0gICAgICAgIFRleHR1cmVKb2IoVHlwZSB0eXBlLCBjb25zdCBM
YXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
LCBib29sIGlzT3BhcXVlKQorICAgICAgICBUZXh0dXJlSm9iKFR5cGUgdHlwZSwgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QpCiAgICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAgICAgLCBtX2Nv
bnRlbnRzKGNvbnRlbnRzKQotICAgICAgICAgICAgLCBtX2lzT3BhcXVlKGlzT3BhcXVlKQogICAg
ICAgICAgICAgLCBtX2RpcnR5UmVjdChkaXJ0eVJlY3QpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVCh0eXBlID09IFVwZGF0ZUNvbnRlbnRzIHx8IHR5cGUgPT0gU2V0Q29udGVudHMpOwpA
QCAtMTE0LDE5ICsxMTEsMTggQEAgcHJpdmF0ZToKICAgICAgICAgVGV4dHVyZUpvYihUeXBlIHR5
cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgVGlsZUluZGV4JiBpbmRleCkKICAgICAgICAg
ICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICAgICAsIG1fY29udGVudHMoMCkKLSAgICAgICAg
ICAgICwgbV9pc09wYXF1ZShmYWxzZSkKICAgICAgICAgICAgICwgbV9jb2xvcihjb2xvcikKICAg
ICAgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KHR5cGUgPT0gU2V0Q29udGVudHNUb0NvbG9yKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRp
YyBUZXh0dXJlSm9iIHNldENvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNv
bnRlbnRzLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QsIGJvb2wgaXNPcGFxdWUpCisgICAg
ICAgIHN0YXRpYyBUZXh0dXJlSm9iIHNldENvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpH
cmFwaGljczo6QnVmZmVyKiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgY29udGVudHNSZWN0KQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVGV4dHVyZUpvYihTZXRDb250ZW50cywgY29u
dGVudHMsIGNvbnRlbnRzUmVjdCwgaXNPcGFxdWUpOworICAgICAgICAgICAgcmV0dXJuIFRleHR1
cmVKb2IoU2V0Q29udGVudHMsIGNvbnRlbnRzLCBjb250ZW50c1JlY3QpOwogICAgICAgICB9CiAg
ICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHNldENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IFRpbGVJbmRleCYgaW5kZXgpIHsgcmV0dXJuIFRleHR1cmVKb2IoU2V0Q29u
dGVudHNUb0NvbG9yLCBjb2xvciwgaW5kZXgpOyB9Ci0gICAgICAgIHN0YXRpYyBUZXh0dXJlSm9i
IHVwZGF0ZUNvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNPcGFxdWUpIHsgcmV0dXJuIFRleHR1cmVK
b2IoVXBkYXRlQ29udGVudHMsIGNvbnRlbnRzLCBkaXJ0eVJlY3QsIGlzT3BhcXVlKTsgfQorICAg
ICAgICBzdGF0aWMgVGV4dHVyZUpvYiB1cGRhdGVDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6R3JhcGhpY3M6OkJ1ZmZlciogY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkg
eyByZXR1cm4gVGV4dHVyZUpvYihVcGRhdGVDb250ZW50cywgY29udGVudHMsIGRpcnR5UmVjdCk7
IH0KICAgICAgICAgc3RhdGljIFRleHR1cmVKb2IgZGlzY2FyZENvbnRlbnRzKGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkgeyByZXR1cm4gVGV4dHVyZUpvYihEaXNjYXJkQ29udGVudHMsIGRpcnR5
UmVjdCk7IH0KICAgICAgICAgc3RhdGljIFRleHR1cmVKb2IgcmVzaXplQ29udGVudHMoY29uc3Qg
SW50U2l6ZSYgbmV3U2l6ZSkgeyByZXR1cm4gVGV4dHVyZUpvYihSZXNpemVDb250ZW50cywgbmV3
U2l6ZSk7IH0KICAgICAgICAgc3RhdGljIFRleHR1cmVKb2IgZGlydHlDb250ZW50cyhjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpIHsgcmV0dXJuIFRleHR1cmVKb2IoRGlydHlDb250ZW50cywgZGly
dHlSZWN0KTsgfQpAQCAtMTM0LDggKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNO
dWxsKCkgeyByZXR1cm4gbV90eXBlID09IFVua25vd247IH0KIAogICAgICAgICBUeXBlIG1fdHlw
ZTsKLSAgICAgICAgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSBtX2NvbnRlbnRzOwotICAgICAgICBi
b29sIG1faXNPcGFxdWU7CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyKiBtX2NvbnRlbnRzOwogICAgICAgICBJbnRSZWN0IG1fZGlydHlSZWN0OwogICAgICAg
ICBDb2xvciBtX2NvbG9yOwogICAgICAgICBUaWxlSW5kZXggbV9pbmRleDsKQEAgLTE1Niw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIC8vIENvbXBvc2l0aW5nIHRocmVhZAogICAgIHZvaWQgdXBk
YXRlVGlsZUNvbnRlbnRzKGNvbnN0IFRleHR1cmVKb2ImLCBjb25zdCBJbnRSZWN0Jik7CiAgICAg
dm9pZCBhZGRUaWxlSm9iKGNvbnN0IFRpbGVJbmRleCYsIGNvbnN0IFRleHR1cmVKb2ImLCBUaWxl
Sm9ic01hcCYpOwotICAgIHZvaWQgcGVyZm9ybVRpbGVKb2IoTGF5ZXJUaWxlKiwgY29uc3QgVGV4
dHVyZUpvYiYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHBlcmZvcm1UaWxlSm9iKExheWVy
VGlsZSosIGNvbnN0IFRleHR1cmVKb2ImKTsKICAgICB2b2lkIHByb2Nlc3NUZXh0dXJlSm9iKGNv
bnN0IFRleHR1cmVKb2ImLCBUaWxlSm9ic01hcCYpOwogICAgIHZvaWQgcHJ1bmVUZXh0dXJlcygp
OwogICAgIHZvaWQgdmlzaWJpbGl0eUNoYW5nZWQoYm9vbCBuZWVkc0Rpc3BsYXkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJl
Q2FjaGVDb21wb3NpdGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCBi
NjUwMDViMDFiZDcwYzNmNWFlMWU1NzUyZDEwODk3NjhjNDQzMWY0Li5lZWNlZWUwYjIwODcwYTc2
YTBlNjYxYmRiY2JkZTM2ZDM5M2M0ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1
cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjQsOCArMjQsMTAgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKICNpbmNsdWRlIDxH
TEVTMi9nbDIuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiB1c2luZyBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlcjsKK3VzaW5nIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZTsKIAogI2RlZmluZSBERUJVR19URVhUVVJFX01FTU9S
WV9VU0FHRSAwCiAKQEAgLTU4LDIyICs2MCwxNiBAQCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1Ro
cmVhZDo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKQogewogfQogCi1MYXllclRleHR1
cmU6OkdwdUhhbmRsZSBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6YWxsb2NhdGVUZXh0
dXJlSWQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpCdWZmZXJUeXBlIHR5cGUpCitCdWZmZXIqIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
OjpjcmVhdGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQnVmZmVyVHlwZSB0eXBlKQogewog
ICAgIHJldHVybiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmNyZWF0ZUJ1ZmZlcihz
aXplLCB0eXBlKTsKIH0KIAotc3RhdGljIHZvaWQgZnJlZVRleHR1cmVJZChMYXllclRleHR1cmU6
OkdwdUhhbmRsZSBpZCkKLXsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRl
c3Ryb3lCdWZmZXIoaWQpOwotfQotCiB2b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
Ojpjb2xsZWN0R2FyYmFnZSgpCiB7Ci0gICAgZm9yIChHYXJiYWdlOjppdGVyYXRvciBpdCA9IG1f
Z2FyYmFnZS5iZWdpbigpOyBpdCAhPSBtX2dhcmJhZ2UuZW5kKCk7ICsraXQpIHsKLSAgICAgICAg
Wm9tYmllVGV4dHVyZSYgem9tYmllID0gKml0OwotICAgICAgICBmcmVlVGV4dHVyZUlkKHpvbWJp
ZS5pZCk7Ci0gICAgfQorICAgIGZvciAoR2FyYmFnZTo6aXRlcmF0b3IgaXQgPSBtX2dhcmJhZ2Uu
YmVnaW4oKTsgaXQgIT0gbV9nYXJiYWdlLmVuZCgpOyArK2l0KQorICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRlc3Ryb3lCdWZmZXIoKCppdCkuYnVmZmVyKTsKKwogICAg
IG1fZ2FyYmFnZS5jbGVhcigpOwogfQogCkBAIC0xMDQsMTcgKzEwMCwxNiBAQCB2b2lkIFRleHR1
cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRGVzdHJveWVkKExheWVyVGV4dHVyZSog
dGV4dHVyZSkKICAgICBtX3RleHR1cmVzLnJlbW92ZShpdCk7CiB9CiAKLWJvb2wgVGV4dHVyZUNh
Y2hlQ29tcG9zaXRpbmdUaHJlYWQ6Omluc3RhbGwoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5
cGUgdHlwZSkKK2Jvb2wgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6Omluc3RhbGwoTGF5
ZXJUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiBzaXplLCBCdWZmZXJUeXBlIHR5cGUp
CiB7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICgh
dGV4dHVyZS0+aGFzVGV4dHVyZSgpICYmICFzaXplLmlzRW1wdHkoKSkgewotICAgICAgICBMYXll
clRleHR1cmU6OkdwdUhhbmRsZSB0ZXh0dXJlSWQgPSBhbGxvY2F0ZVRleHR1cmVJZChzaXplLCB0
eXBlKTsKLSAgICAgICAgaWYgKCF0ZXh0dXJlSWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCF0ZXh0dXJlLT5idWZmZXIoKSAmJiAhc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgQnVmZmVyKiBidWZmZXIgPSBjcmVhdGVCdWZmZXIoc2l6ZSwgdHlwZSk7CisgICAgICAgIEFT
U0VSVChidWZmZXIpOwogCi0gICAgICAgIHRleHR1cmUtPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQp
OworICAgICAgICB0ZXh0dXJlLT5zZXRCdWZmZXIoYnVmZmVyKTsKICAgICAgICAgdGV4dHVyZS0+
c2V0U2l6ZShzaXplKTsKICAgICAgICAgdGV4dHVyZVJlc2l6ZWQodGV4dHVyZSwgSW50U2l6ZSgp
KTsKICAgICB9CkBAIC0xMjUsMTcgKzEyMCwxNiBAQCBib29sIFRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkOjppbnN0YWxsKExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
OjpyZXNpemVUZXh0dXJlKExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlIHR5cGUpCitib29s
IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpyZXNpemVUZXh0dXJlKExheWVyVGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgQnVmZmVyVHlwZSB0eXBlKQogewogICAg
IEludFNpemUgb2xkU2l6ZSA9IHRleHR1cmUtPnNpemUoKTsKIAogICAgIC8vIFJlYWxsb2NhdGUg
dGhlIGJ1ZmZlcgotICAgIExheWVyVGV4dHVyZTo6R3B1SGFuZGxlIHRleHR1cmVJZCA9IGFsbG9j
YXRlVGV4dHVyZUlkKHNpemUsIHR5cGUpOwotICAgIGlmICghdGV4dHVyZUlkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgQnVmZmVyKiBidWZmZXIgPSBjcmVhdGVCdWZmZXIoc2l6ZSwgdHlw
ZSk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBmcmVlVGV4dHVyZUlkKHRleHR1cmUtPnRl
eHR1cmVJZCgpKTsKLSAgICB0ZXh0dXJlLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRlc3Ryb3lCdWZmZXIodGV4dHVyZS0+YnVm
ZmVyKCkpOworICAgIHRleHR1cmUtPnNldEJ1ZmZlcihidWZmZXIpOwogICAgIHRleHR1cmUtPnNl
dFNpemUoc2l6ZSk7CiAgICAgdGV4dHVyZVJlc2l6ZWQodGV4dHVyZSwgb2xkU2l6ZSk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0xNDcsNyArMTQxLDcgQEAgdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3Np
dGluZ1RocmVhZDo6ZXZpY3QoY29uc3QgVGV4dHVyZVNldDo6aXRlcmF0b3ImIGl0KQogICAgICAg
ICByZXR1cm47CiAKICAgICBMYXllclRleHR1cmUqIHRleHR1cmUgPSAqaXQ7Ci0gICAgaWYgKHRl
eHR1cmUtPmhhc1RleHR1cmUoKSkgeworICAgIGlmICh0ZXh0dXJlLT5idWZmZXIoKSkgewogICAg
ICAgICBpbnQgZGVsdGEgPSAwOwogICAgICAgICBkZWx0YSArPSB0ZXh0dXJlLT53aWR0aCgpICog
dGV4dHVyZS0+aGVpZ2h0KCkgKiBMYXllclRleHR1cmU6OmJ5dGVzUGVyUGl4ZWwoKTsKICAgICAg
ICAgZGVsdGEgKz0gdGV4dHVyZS0+c2l6ZUluQnl0ZXMoKTsKQEAgLTE1Niw3ICsxNTAsNyBAQCB2
b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpldmljdChjb25zdCBUZXh0dXJlU2V0
OjppdGVyYXRvciYgaXQpCiAgICAgICAgIG1fZ2FyYmFnZS5hcHBlbmQoWm9tYmllVGV4dHVyZSh0
ZXh0dXJlKSk7CiAgICAgfQogCi0gICAgdGV4dHVyZS0+c2V0VGV4dHVyZUlkKDApOworICAgIHRl
eHR1cmUtPnNldEJ1ZmZlcigwKTsKIH0KIAogdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1Ro
cmVhZDo6dGV4dHVyZUFjY2Vzc2VkKExheWVyVGV4dHVyZSogdGV4dHVyZSkKQEAgLTIwOSwxNCAr
MjAzLDE0IEBAIHZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnNldE1lbW9yeVVz
YWdlKHNpemVfdCBtZW1vcnlVc2FnZSkKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPExheWVyVGV4
dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVGb3JUaWxlZENvbnRl
bnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiBpbmRleCwgYm9vbCBpc09wYXF1ZSkKK1Bhc3NS
ZWZQdHI8TGF5ZXJUZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVy
ZUZvckNvbnRlbnRzKEJ1ZmZlciogY29udGVudHMpCiB7CiAgICAgUmVmUHRyPExheWVyVGV4dHVy
ZT4gdGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUoKTsKIAogICAgIC8vIFByb3RlY3QgbmV3bHkgY3Jl
YXRlZCB0ZXh0dXJlIGZyb20gYmVpbmcgZXZpY3RlZC4KICAgICBUZXh0dXJlUHJvdGVjdG9yIHBy
b3RlY3Rvcih0ZXh0dXJlLmdldCgpKTsKIAotICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGNv
bnRlbnRzLCB0aWxlUmVjdCwgdGlsZVJlY3QsIGlzT3BhcXVlKTsKKyAgICB0ZXh0dXJlLT51cGRh
dGVDb250ZW50cyhjb250ZW50cyk7CiAKICAgICByZXR1cm4gdGV4dHVyZS5yZWxlYXNlKCk7CiB9
CkBAIC0yNDcsNyArMjQxLDcgQEAgUGFzc1JlZlB0cjxMYXllclRleHR1cmU+IFRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yQ29sb3IoY29uc3QgQ28KICAgICByZXR1cm4g
dGV4dHVyZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiBUZXh0dXJl
Q2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dXBkYXRlQ29udGVudHMoY29uc3QgUmVmUHRyPExheWVy
VGV4dHVyZT4mIHRleHR1cmVJbiwgY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVu
dHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGJv
b2wgaXNPcGFxdWUpCitQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9z
aXRpbmdUaHJlYWQ6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0cjxMYXllclRleHR1cmU+JiB0
ZXh0dXJlSW4sIEJ1ZmZlciogY29udGVudHMpCiB7CiAgICAgUmVmUHRyPExheWVyVGV4dHVyZT4g
dGV4dHVyZSh0ZXh0dXJlSW4pOwogCkBAIC0yNTksOCArMjUzLDcgQEAgUGFzc1JlZlB0cjxMYXll
clRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVDb250ZW50cyhj
b25zdCBSZWYKICAgICAvLyBQcm90ZWN0IG5ld2x5IGNyZWF0ZWQgdGV4dHVyZSBmcm9tIGJlaW5n
IGV2aWN0ZWQuCiAgICAgVGV4dHVyZVByb3RlY3RvciBwcm90ZWN0b3IodGV4dHVyZS5nZXQoKSk7
CiAKLS8vIFRPRE86IGlmIHRoaXMgaXMgYSBwYXJ0aWFsIHVwZGF0ZSB3ZSBuZWVkIHRvIGJsaXQg
dGhlIGJ1ZmZlciBvbiB0b3Agb2YgdGhlIG90aGVyCi0gICAgdGV4dHVyZS0+dXBkYXRlQ29udGVu
dHMoY29udGVudHMsIGRpcnR5UmVjdCwgdGlsZVJlY3QsIGlzT3BhcXVlKTsKKyAgICB0ZXh0dXJl
LT51cGRhdGVDb250ZW50cyhjb250ZW50cyk7CiAKICAgICByZXR1cm4gdGV4dHVyZS5yZWxlYXNl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
LmgKaW5kZXggMzdjYjNiMDM4NDA0ZmJlODQxNDNiNGQwOTdmOWJhYzQ5YjUzMTUyYy4uY2NkYTMy
NGIwYTBhOTJmZDViMjgyYjM4OTAzMGZkZjExMWYzODY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGlu
Z1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBSZXRy
aWV2ZSBhIHRleHR1cmUgZnJvbSB0aGUgY2FjaGUuCi0gICAgUGFzc1JlZlB0cjxMYXllclRleHR1
cmU+IHRleHR1cmVGb3JUaWxlZENvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUm
IGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiwgYm9v
bCBpc09wYXF1ZSk7CisgICAgUGFzc1JlZlB0cjxMYXllclRleHR1cmU+IHRleHR1cmVGb3JDb250
ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciopOwogICAgIFBhc3NS
ZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlRm9yQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAg
IC8vIFVwZGF0ZSBjb250ZW50cyBvZiBhbiBleGlzdGluZyB0ZXh0dXJlLCBvciBjcmVhdGUgYSBu
ZXcgb25lIGlmIHRleHR1cmUgaXMgMC4KLSAgICBQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gdXBk
YXRlQ29udGVudHMoY29uc3QgUmVmUHRyPExheWVyVGV4dHVyZT4mLCBjb25zdCBMYXllclRleHR1
cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJ
bnRSZWN0JiB0aWxlUmVjdCwgYm9vbCBpc09wYXF1ZSk7CisgICAgUGFzc1JlZlB0cjxMYXllclRl
eHR1cmU+IHVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0cjxMYXllclRleHR1cmU+JiwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqKTsKIAogICAgIHNpemVfdCBtZW1vcnlV
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNhZ2U7IH0KICAgICBzaXplX3QgbWVtb3J5
TGltaXQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUxpbWl0OyB9CkBAIC04NywxMyArODcsMTMg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdHJ1Y3QgWm9tYmllVGV4dHVyZSB7CiAgICAgICAg
IGV4cGxpY2l0IFpvbWJpZVRleHR1cmUoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlKQotICAgICAgICAg
ICAgOiBpZCh0ZXh0dXJlLT50ZXh0dXJlSWQoKSkKKyAgICAgICAgICAgIDogYnVmZmVyKHRleHR1
cmUtPmJ1ZmZlcigpKQogICAgICAgICAgICAgLCBzaXplKHRleHR1cmUtPnNpemUoKSkKICAgICAg
ICAgICAgICwgc2l6ZUluQnl0ZXModGV4dHVyZS0+c2l6ZUluQnl0ZXMoKSkKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgTGF5ZXJUZXh0dXJlOjpHcHVIYW5kbGUgaWQ7CisgICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBidWZmZXI7CiAgICAgICAg
IEludFNpemUgc2l6ZTsKICAgICAgICAgc2l6ZV90IHNpemVJbkJ5dGVzOwogICAgIH07CkBAIC0x
MDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZCgpOwogICAgIH5UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpOwogCi0gICAgTGF5ZXJU
ZXh0dXJlOjpHcHVIYW5kbGUgYWxsb2NhdGVUZXh0dXJlSWQoY29uc3QgSW50U2l6ZSYgdGV4dHVy
ZVNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSk7CisgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGNyZWF0ZUJ1ZmZlcihjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpC
dWZmZXJUeXBlKTsKIAogICAgIHZvaWQgaW5jTWVtb3J5VXNhZ2UoaW50IGRlbHRhKSB7IHNldE1l
bW9yeVVzYWdlKG1lbW9yeVVzYWdlKCkgKyBkZWx0YSk7IH0KICAgICB2b2lkIGRlY01lbW9yeVVz
YWdlKGludCBkZWx0YSkgeyBzZXRNZW1vcnlVc2FnZShtZW1vcnlVc2FnZSgpIC0gZGVsdGEpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXkuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNwcAppbmRleCA4N2I2
ZTdkYzlhMTk1MjZlMmZiMmZlNzg1YzY1NTY3ZjJmNWYzYjIxLi41NjA5N2VlMWYyZDRhZWU3MGRk
OTMyNGNlM2Y2ZjQ2OWY2NTU1OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYk92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViT3ZlcmxheS5jcHAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFdlYk92ZXJsYXlMYXllckNv
bXBvc2l0aW5nVGhyZWFkQ2xpZW50Ojp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKExheWVyQ29tcG9z
aQogICAgIGlmIChtX2ltYWdlLmlzTnVsbCgpICYmICFtX2NvbG9yLmlzVmFsaWQoKSAmJiAhbV9k
cmF3c0NvbnRlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3RleHR1cmUgJiYgbV90
ZXh0dXJlLT50ZXh0dXJlSWQoKSkKKyAgICBpZiAobV90ZXh0dXJlICYmIG1fdGV4dHVyZS0+YnVm
ZmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2NvbG9yLmlzVmFsaWQoKSkgewpA
QCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgV2ViT3ZlcmxheUxheWVyQ29tcG9zaXRpbmdUaHJlYWRD
bGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3NpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBMYXllclRleHR1cmU6Okhvc3RUeXBlIHRleHR1cmVDb250ZW50cyA9
IExheWVyVGV4dHVyZTo6SG9zdFR5cGUoKTsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkJ1ZmZlciogdGV4dHVyZUNvbnRlbnRzID0gMDsKICAgICBJbnRTaXplIHRleHR1cmVT
aXplOwogCiAgICAgaWYgKG1fZHJhd3NDb250ZW50KSB7CkBAIC00OTgsMTMgKzQ5OCwxMiBAQCB2
b2lkIFdlYk92ZXJsYXlMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Ojp1cGxvYWRUZXh0dXJl
c0lmTmVlZGVkKExheWVyQ29tcG9zaQogCiAgICAgbV90ZXh0dXJlID0gTGF5ZXJUZXh0dXJlOjpj
cmVhdGUoKTsKICAgICBtX3RleHR1cmUtPnByb3RlY3QoSW50U2l6ZSgpLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkJhY2tlZFdoZW5OZWNlc3NhcnkpOwotICAgIEludFJlY3QgYml0
bWFwUmVjdCgwLCAwLCB0ZXh0dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7
Ci0gICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlQ29udGVudHMsIGJpdG1hcFJl
Y3QsIGJpdG1hcFJlY3QsIGZhbHNlKTsKKyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRl
eHR1cmVDb250ZW50cyk7CiB9CiAKIHZvaWQgV2ViT3ZlcmxheUxheWVyQ29tcG9zaXRpbmdUaHJl
YWRDbGllbnQ6OmRyYXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgZG91
YmxlIHNjYWxlLCBjb25zdCBHTEVTMlByb2dyYW0mIHByb2dyYW0pCiB7Ci0gICAgaWYgKCFtX3Rl
eHR1cmUgfHwgIW1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpCisgICAgaWYgKCFtX3RleHR1cmUgfHwg
IW1fdGV4dHVyZS0+YnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IG1hdHJpeCA9IGxheWVyLT5kcmF3VHJhbnNmb3JtKCk7CkBAIC01MTUsNyArNTE0
LDcgQEAgdm9pZCBXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6ZHJhd1Rl
eHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQKICAgICAgICAgbWF0cml4LnNjYWxlTm9uVW5p
Zm9ybShzdGF0aWNfY2FzdDxkb3VibGU+KGxheWVyLT5ib3VuZHMoKS53aWR0aCgpKSAvIG1faW1h
Z2Uud2lkdGgoKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkp
IC8gbV9pbWFnZS5oZWlnaHQoKSk7CiAgICAgfQogICAgIG1hdHJpeC5zY2FsZShsYXllci0+c2l6
ZUlzU2NhbGVJbnZhcmlhbnQoKSA/IDEuMCAvIHNjYWxlIDogMS4wKTsKLSAgICBibGl0VG9CdWZm
ZXIoMCwgbV90ZXh0dXJlLT50ZXh0dXJlSWQoKSwgcmVpbnRlcnByZXRfY2FzdDxCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmPihtYXRyaXgpLAorICAgIGJsaXRUb0J1
ZmZlcigwLCBtX3RleHR1cmUtPmJ1ZmZlcigpLCByZWludGVycHJldF9jYXN0PEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCY+KG1hdHJpeCksCiAgICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6U291cmNlT3Zlciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4obGF5ZXItPmRyYXdPcGFjaXR5KCkgKiAyNTUpKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>