<?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>93677</bug_id>
          
          <creation_ts>2012-08-09 19:07:15 -0700</creation_ts>
          <short_desc>[chromium] Add software bitmap resources to CCResourceProvider</short_desc>
          <delta_ts>2012-08-22 14:26:28 -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>New Bugs</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>94550</dependson>
    
    <dependson>94657</dependson>
          <blocked>93761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>692101</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-09 19:07:15 -0700</bug_when>
    <thetext>[chromium] Add software bitmap resources to CCResourceProvider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692111</commentid>
    <comment_count>1</comment_count>
      <attachid>157613</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-09 19:20:42 -0700</bug_when>
    <thetext>Created attachment 157613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692112</commentid>
    <comment_count>2</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-09 19:23:11 -0700</bug_when>
    <thetext>This approach doesn&apos;t have anything in the way of static type safety, but it seems hard to avoid that given the desired model.  In practice, since a single CCRenderer subclass will use most of the resources, it shouldn&apos;t come up that often though.

I&apos;ll write tests before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692150</commentid>
    <comment_count>3</comment_count>
      <attachid>157613</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-09 20:28:21 -0700</bug_when>
    <thetext>Comment on attachment 157613
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:323
&gt; +    , m_creationPolicy(CreateGLTextures)

Should we choose this based on the context?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:48
&gt; +class ScopedWriteLockGL;

You moved the definitions inside of CCResourceProvider, so these forward declarations are superfluous / wrong.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:87
&gt; +    ResourceId createBitmap(int pool, const IntSize&amp;);

It would probably be useful to add a resourceType(ResourceID). That kinda calls CreationPolicy to be renamed ResourceType, and setCreationPolicy to setDefaultResourceType?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:154
&gt; +    class ScopedWriteLockSoftware {

Are we going to be using this in layers? If yes, can we make it work on texture-based resources too (e.g. add a pixel backing sore on the lock, and upload on the unlock), so that we don&apos;t need to have 2 paths based on the resource type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692151</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-09 20:29:03 -0700</bug_when>
    <thetext>For tests, maybe we can reuse existing tests and have a way to execute twice, once with each policy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692160</commentid>
    <comment_count>5</comment_count>
      <attachid>157627</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-09 20:48:36 -0700</bug_when>
    <thetext>Created attachment 157627
Patch

Introduce ResourceType and remove forward declarations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692162</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-09 20:52:56 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:323
&gt; &gt; +    , m_creationPolicy(CreateGLTextures)
&gt; 
&gt; Should we choose this based on the context?

Possibly; I&apos;ll change this in a later patch when it becomes feasible to run with a different policy.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:154
&gt; &gt; +    class ScopedWriteLockSoftware {
&gt; 
&gt; Are we going to be using this in layers? If yes, can we make it work on texture-based resources too (e.g. add a pixel backing sore on the lock, and upload on the unlock), so that we don&apos;t need to have 2 paths based on the resource type?

This isn&apos;t intended for use by layers, CCRenderer will be the primary user.

&gt; For tests, maybe we can reuse existing tests and have a way to execute twice, once with each policy?

Seems reasonable, I&apos;ll take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696556</commentid>
    <comment_count>7</comment_count>
      <attachid>158670</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-15 17:32:02 -0700</bug_when>
    <thetext>Created attachment 158670
Patch

Added unit tests and rewrote upload() to use SkCanvas::writePixels</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698578</commentid>
    <comment_count>8</comment_count>
      <attachid>159182</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-17 12:46:34 -0700</bug_when>
    <thetext>Created attachment 159182
Patch

Rebased on Bug 93524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698858</commentid>
    <comment_count>9</comment_count>
      <attachid>159246</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-17 17:59:29 -0700</bug_when>
    <thetext>Created attachment 159246
Patch

Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699845</commentid>
    <comment_count>10</comment_count>
      <attachid>159246</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-20 13:18:00 -0700</bug_when>
    <thetext>Comment on attachment 159246
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:262
&gt; +        uint8_t* pixels;

Is it possible to use OwnArrayPtr&lt;uint8&gt; here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699949</commentid>
    <comment_count>11</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-20 14:16:17 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 159246 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159246&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:262
&gt; &gt; +        uint8_t* pixels;
&gt; 
&gt; Is it possible to use OwnArrayPtr&lt;uint8&gt; here?

I&apos;m running into hashmap-related errors.  It looks like there&apos;s a trick to allow OwnPtrs in hashmaps, but only if they&apos;re at the top level (not in a struct).  

We could explore various ways of tackling this, but it seems like the details will change when we move away from WTF data structures, and also ResourceProvider needs to manage explicit create/delete calls for GL resources anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699968</commentid>
    <comment_count>12</comment_count>
      <attachid>159522</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-20 14:28:32 -0700</bug_when>
    <thetext>Created attachment 159522
Patch

Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700020</commentid>
    <comment_count>13</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-20 15:03:56 -0700</bug_when>
    <thetext>Can you run double check that webkit_unit_tests passes in a debug build? I see an assert with your patch.

[ RUN      ] CCLayerTreeHostImplTest.dontUseOldResourcesAfterLostContext
ASSERTION FAILED: m_textureId
../../third_party/WebKit/Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp(272) : WebCore::CCResourceProvider::ScopedReadLockGL::ScopedReadLockGL(WebCore::CCResourceProvider*, unsigned int)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700105</commentid>
    <comment_count>14</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-20 15:59:19 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Can you run double check that webkit_unit_tests passes in a debug build? I see an assert with your patch.
&gt; 
&gt; [ RUN      ] CCLayerTreeHostImplTest.dontUseOldResourcesAfterLostContext
&gt; ASSERTION FAILED: m_textureId
&gt; ../../third_party/WebKit/Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp(272) : WebCore::CCResourceProvider::ScopedReadLockGL::ScopedReadLockGL(WebCore::CCResourceProvider*, unsigned int)

Hmm, this is because I added a new assertion that we don&apos;t try to lock a zero textureId.  The root cause is in CCTextureLayerImpl:

void CCTextureLayerImpl::didLoseContext()
{
    m_textureId = 0;
}

then it goes ahead and creates an external texture resource with that ID.  What would be the best place to fix that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700107</commentid>
    <comment_count>15</comment_count>
      <attachid>159551</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-20 16:01:41 -0700</bug_when>
    <thetext>Created attachment 159551
Patch

Fix an upload bug when imageRect.location != 0, and add a new test case for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700112</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-20 16:06:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Hmm, this is because I added a new assertion that we don&apos;t try to lock a zero textureId.  The root cause is in CCTextureLayerImpl:
&gt; 
&gt; void CCTextureLayerImpl::didLoseContext()
&gt; {
&gt;     m_textureId = 0;
&gt; }
&gt; 
&gt; then it goes ahead and creates an external texture resource with that ID.  What would be the best place to fix that?

Hm, probably early-out in willDraw(), and then early out in appendQuads and didDraw if !m_externalTextureResource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700379</commentid>
    <comment_count>17</comment_count>
      <attachid>159597</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-20 20:02:57 -0700</bug_when>
    <thetext>Created attachment 159597
Patch

Fix another assertion failure in CCResourceProviderTest by checking for glId != 0 in deleteResource()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700811</commentid>
    <comment_count>18</comment_count>
      <attachid>159597</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-21 09:04:05 -0700</bug_when>
    <thetext>Comment on attachment 159597
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701227</commentid>
    <comment_count>19</comment_count>
      <attachid>159597</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 15:59:48 -0700</bug_when>
    <thetext>Comment on attachment 159597
Patch

Clearing flags on attachment: 159597

Committed r126202: &lt;http://trac.webkit.org/changeset/126202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701228</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 15:59:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701403</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 17:58:41 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 94657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701476</commentid>
    <comment_count>22</comment_count>
      <attachid>159842</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-21 18:49:22 -0700</bug_when>
    <thetext>Created attachment 159842
Patch

Change back to initializing m_maxTextureSize to 0 in constructor, since glGetIntegerv asserts that it receives only zero values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702031</commentid>
    <comment_count>23</comment_count>
      <attachid>159842</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-22 10:27:01 -0700</bug_when>
    <thetext>Comment on attachment 159842
Patch

R=me, assuming you&apos;ve tested directly that this fixes the problem.  I&apos;m also leaving CQ+ for you to set yourself after you land 94266.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702352</commentid>
    <comment_count>24</comment_count>
      <attachid>159842</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 14:26:23 -0700</bug_when>
    <thetext>Comment on attachment 159842
Patch

Clearing flags on attachment: 159842

Committed r126351: &lt;http://trac.webkit.org/changeset/126351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702353</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 14:26:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157613</attachid>
            <date>2012-08-09 19:20:42 -0700</date>
            <delta_ts>2012-08-09 20:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120809192015.patch</filename>
            <type>text/plain</type>
            <size>33365</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk0MTBlOTUxZTFkODNj
Y2VlZThmYWJkMTFjNzI0NWU4ZTcxMjgwNS4uNmQyYjdjN2NmOGUxMTQwZTYxMDUwZjI2MGE2MjQ2
OTg0MTVkOGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTA5ICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFi
aWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAg
ICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQg
YXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIEFzIGRpc2N1c3NlZCBpbiBCdWcgOTM0NDIsIHdl
IHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIgdG8gYmUgYWJsZQorICAgICAgICB0byBoYW5kbGUg
ZGlmZmVyZW50IHJlc291cmNlIHR5cGVzIGF0IHRoZSBzYW1lIHRpbWUuICBJbiBwcmFjdGljZSwg
YQorICAgICAgICBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMgZGVzaXJlZCBmb3IgbW9zdCB1c2Vz
IHdpdGhpbiBhIHNpbmdsZQorICAgICAgICBjb21wb3NpdG9yIGluc3RhbmNlIC0tIGEgIkNyZWF0
aW9uUG9saWN5IiBkZXRlcm1pbmVzIHdoYXQgdGhhdCB0eXBlCisgICAgICAgIGlzLiAgUG9saWNp
ZXMgYXJlIGV4cGVjdGVkIHRvIGJlIG1vc3RseSAxLXRvLTEgd2l0aCBDQ1JlbmRlcmVyIHR5cGVz
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKERyYXdpbmdGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZUdMVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZUJpdG1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlRnJv
bUV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6
OmRlbGV0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Zmx1c2gpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpzaGFsbG93Rmx1c2hJZlN1cHBv
cnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JSZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yUmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0ZvcldyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6U2Nv
cGVkUmVhZExvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFJlYWRMb2NrR0w6On5TY29wZWRSZWFkTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6OlNjb3BlZFdyaXRlTG9ja0dMKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6
On5TY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjpTY29wZWRSZWFkTG9ja1Nv
ZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZTo6flNjb3BlZFJlYWRMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6U2NvcGVkV3Jp
dGVMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6flNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Q0NSZXNvdXJjZVByb3ZpZGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3Zp
ZGVyOjpzZXRDcmVhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OmNyZWF0aW9uUG9saWN5KToKKyAgICAgICAgKENDUmVzb3VyY2VQcm92aWRlcik6Cisg
ICAgICAgIChTY29wZWRSZWFkTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQ
cm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6dGV4dHVyZUlkKToKKyAgICAgICAgKFNjb3BlZFdy
aXRlTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVk
V3JpdGVMb2NrR0w6OnRleHR1cmVJZCk6CisgICAgICAgIChTY29wZWRSZWFkTG9ja1NvZnR3YXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tT
b2Z0d2FyZTo6c2tCaXRtYXApOgorICAgICAgICAoU2NvcGVkV3JpdGVMb2NrU29mdHdhcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0
d2FyZTo6c2tDYW52YXMpOgorICAgICAgICAoUmVzb3VyY2UpOgorCiAyMDEyLTA4LTA5ICBNaWhu
ZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIENTU1JlZ2lvbnM6IENy
YXNoIHdoZW4gYXR0YWNoaW5nIGEgcmVnaW9uIHRvIHRoZSByZW1vdmVkIG5hbWVkIGZsb3cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMmM3ZWEwMGNjZjk4MTIyZjljM2IwNDEyNTZkMTg3
NjcwOWM1NzRlYy4uYTc4NGQzODFjYzNjYzU5ZGQyMDA3MDg4NjYxNGQ4ZGY4MDEwNTEyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOC0wOSAgQWxl
eGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBB
ZGQgc29mdHdhcmUgYml0bWFwIHJlc291cmNlcyB0byBDQ1Jlc291cmNlUHJvdmlkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBh
YmlsaXR5IHRvIENDUmVzb3VyY2VQcm92aWRlciB0byB1c2Ugc29mdHdhcmUgYml0bWFwcy4KKyAg
ICAgICAgVGhleSBhcmUgYWxsb2NhdGVkIGFzIHBsYWluLW9sZC1tZW1vcnksIGFuZCBleHBvc2Vk
IGFzIFNraWEgb2JqZWN0cy4KKworICAgICAgICBBcyBkaXNjdXNzZWQgaW4gQnVnIDkzNDQyLCB3
ZSB3YW50IHRoZSBSZXNvdXJjZVByb3ZpZGVyIHRvIGJlIGFibGUKKyAgICAgICAgdG8gaGFuZGxl
IGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyBhdCB0aGUgc2FtZSB0aW1lLiAgSW4gcHJhY3RpY2Us
IGEKKyAgICAgICAgZGVmYXVsdCByZXNvdXJjZSB0eXBlIGlzIGRlc2lyZWQgZm9yIG1vc3QgdXNl
cyB3aXRoaW4gYSBzaW5nbGUKKyAgICAgICAgY29tcG9zaXRvciBpbnN0YW5jZSAtLSBhICJDcmVh
dGlvblBvbGljeSIgZGV0ZXJtaW5lcyB3aGF0IHRoYXQgdHlwZQorICAgICAgICBpcy4gIFBvbGlj
aWVzIGFyZSBleHBlY3RlZCB0byBiZSBtb3N0bHkgMS10by0xIHdpdGggQ0NSZW5kZXJlciB0eXBl
cy4KKworICAgICAgICAqIHRlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDQ1Jlc291cmNlUHJvdmlkZXJUZXN0OjpnZXRSZXNvdXJjZVBpeGVscyk6CisK
IDIwMTItMDgtMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGNvZGVtaXJyb3IgbGlicmFyeSBhcyBhbiBleHBlcmlt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBhMGU4NTdlOWQ0YmM1ZWE3OTI0
OTI5NWY5MDYxYmY0YWRkZjI1MzQ3Li5mYzUwMmI3NzBjYjZmM2FjYTMxZjllNTZlMzgzNWI5ODQ5
NTE3Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBA
QCB2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBk
YXRlVGV4dHVyZVJlY3QoV2ViR3JhcGhpYwogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpOwogCiAgICAgdGV4dHVyZS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKHJlc291cmNlUHJvdmlk
ZXIpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgbG9jayhyZXNvdXJjZVByb3Zp
ZGVyLCB0ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkV3JpdGVMb2NrR0wgbG9jayhyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5yZXNvdXJjZUlk
KCkpOwogICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KICAg
ICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGdyQ29u
dGV4dCwgdGV4dHVyZS0+c2l6ZSgpLCBsb2NrLnRleHR1cmVJZCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggN2VhMWM0YmM3MjM0ODVhMGYyZjY2MjhlNDFi
OTBmYTAwNzk4ZjBmYy4uMmVkNzcyMDEzMGQ1ODQ2MjE2YWZlNjhhMGM5MWU1NjJlY2NhNmM1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01MzksNyArNTM5LDcg
QEAgc3RhdGljIGlubGluZSBTa0JpdG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgp
LT5mbHVzaCgpOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2NrKGxheWVy
UmVuZGVyZXItPnJlc291cmNlUHJvdmlkZXIoKSwgc291cmNlVGV4dHVyZS0+aWQoKSk7CisgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCBsb2NrKGxheWVyUmVuZGVyZXIt
PnJlc291cmNlUHJvdmlkZXIoKSwgc291cmNlVGV4dHVyZS0+aWQoKSk7CiAgICAgU2tCaXRtYXAg
c291cmNlID0gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkoZmlsdGVycywgbG9jay50ZXh0
dXJlSWQoKSwgc291cmNlVGV4dHVyZS0+c2l6ZSgpLCBmaWx0ZXJDb250ZXh0LCBmaWx0ZXJHckNv
bnRleHQpOwogICAgIHJldHVybiBzb3VyY2U7CiB9CkBAIC02NDEsMjAgKzY0MSwyMCBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYg
ZnJhbWUsIGNvbnN0IENDUmVuZAogICAgIC8vIEZJWE1FOiBDYWNoZSB0aGlzIHZhbHVlIHNvIHRo
YXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgaXRzIHJl
cGxpY2EuCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KICAg
ICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnModGhpcywgcmVuZGVyUGFzcy0+
ZmlsdGVycygpLCBjb250ZW50c1RleHR1cmUpOwotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNv
dXJjZUZvclJlYWQ+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOworICAgIE93blB0cjxDQ1Jlc291cmNl
UHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOwogICAgIHVu
c2lnbmVkIGNvbnRlbnRzVGV4dHVyZUlkID0gMDsKICAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRl
eHR1cmUoKSkgewogICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0
PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwogICAgICAgICBjb250ZW50
c1RleHR1cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBjb250ZW50c1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tS
ZXNvdXJjZUZvclJlYWQobV9yZXNvdXJjZVByb3ZpZGVyLCBjb250ZW50c1RleHR1cmUtPmlkKCkp
KTsKKyAgICAgICAgY29udGVudHNSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgY29udGVudHNU
ZXh0dXJlLT5pZCgpKSk7CiAgICAgICAgIGNvbnRlbnRzVGV4dHVyZUlkID0gY29udGVudHNSZXNv
dXJjZUxvY2stPnRleHR1cmVJZCgpOwogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91
bmQgdGV4dHVyZSBpZiB0aGVyZSBpcyBvbmUuCiAgICAgaWYgKGJhY2tncm91bmRUZXh0dXJlKSB7
CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5kVGV4dHVyZS0+c2l6ZSgpID09IHF1YWQtPnF1YWRS
ZWN0KCkuc2l6ZSgpKTsKLSAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2so
bV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVyZS0+aWQoKSk7CisgICAgICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBsb2NrKG1fcmVzb3VyY2VQcm92aWRl
ciwgYmFja2dyb3VuZFRleHR1cmUtPmlkKCkpOwogICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVi
dWZmZXIoZnJhbWUsIGxvY2sudGV4dHVyZUlkKCksIHF1YWQtPnF1YWRSZWN0KCksIHF1YWQtPnF1
YWRUcmFuc2Zvcm0oKSk7CiAgICAgfQogCkBAIC02NzEsMTAgKzY3MSwxMCBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUs
IGNvbnN0IENDUmVuZAogICAgICAgICBkZXZpY2VMYXllckVkZ2VzLmluZmxhdGVBbnRpQWxpYXNp
bmdEaXN0YW5jZSgpOwogICAgIH0KIAotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZv
clJlYWQ+IG1hc2tSZXNvdXJjZUxvY2s7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcjo6
U2NvcGVkUmVhZExvY2tHTD4gbWFza1Jlc291cmNlTG9jazsKICAgICB1bnNpZ25lZCBtYXNrVGV4
dHVyZUlkID0gMDsKICAgICBpZiAocXVhZC0+bWFza1Jlc291cmNlSWQoKSkgewotICAgICAgICBt
YXNrUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVh
ZChtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkpKTsKKyAgICAgICAg
bWFza1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3Bl
ZFJlYWRMb2NrR0wobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKSk7
CiAgICAgICAgIG1hc2tUZXh0dXJlSWQgPSBtYXNrUmVzb3VyY2VMb2NrLT50ZXh0dXJlSWQoKTsK
ICAgICB9CiAKQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1RpbGVRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDVGlsZURyYXdRdQogICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbSh1bmlmb3Jtcy5wcm9ncmFtKSk7
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkodW5pZm9ybXMuc2FtcGxl
ckxvY2F0aW9uLCAwKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVkTG9ja1Jlc291
cmNlRm9yUmVhZCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVz
b3VyY2VJZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgcXVh
ZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgcXVhZFJlc291cmNlTG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgcXVhZC0+dGV4
dHVyZUZpbHRlcigpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NQUdfRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKQEAgLTk2Miw5ICs5NjIs
OSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChEcmF3aW5n
RnJhbWUmIGZyYW1lLCBjb25zdCBDQ1lVVlZpZAogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OkZyYW1lUGxhbmUmIHVQbGFuZSA9IHF1YWQtPnVQbGFuZSgpOwogICAgIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSA9IHF1YWQtPnZQbGFuZSgpOwogCi0gICAgQ0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHlQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB5
UGxhbmUucmVzb3VyY2VJZCk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHVQbGFu
ZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB1UGxhbmUucmVzb3VyY2VJZCk7Ci0gICAgQ0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHZQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB2UGxh
bmUucmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dM
IHlQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB5UGxhbmUucmVzb3VyY2VJZCk7CisgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHVQbGFuZUxvY2sobV9yZXNvdXJj
ZVByb3ZpZGVyLCB1UGxhbmUucmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRSZWFkTG9ja0dMIHZQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB2UGxhbmUucmVz
b3VyY2VJZCk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHlQbGFuZUxvY2su
dGV4dHVyZUlkKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUyKSk7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKERyYXdpbmdGcmFtZSYg
ZnJhbWUsIGNvbnN0IENDVGV4dHVyZQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5p
Zm9ybTRmKGJpbmRpbmcudGV4VHJhbnNmb3JtTG9jYXRpb24sIHV2UmVjdC54KCksIHV2UmVjdC55
KCksIHV2UmVjdC53aWR0aCgpLCB1dlJlY3QuaGVpZ2h0KCkpKTsKIAogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
KTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgcXVhZFJlc291cmNlTG9jayhtX3Jl
c291cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpTY29wZWRSZWFkTG9ja0dMIHF1YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVy
LCBxdWFkLT5yZXNvdXJjZUlkKCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWRSZXNvdXJjZUxvY2su
dGV4dHVyZUlkKCkpKTsKIAogICAgIC8vIEZJWE1FOiBzZXR0aW5nIHRoZSB0ZXh0dXJlIHBhcmFt
ZXRlcnMgZXZlcnkgdGltZSBpcyByZWR1bmRhbnQuIE1vdmUgdGhpcyBjb2RlIHNvbWV3aGVyZQpA
QCAtMTM2Miw3ICsxMzYyLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1l
YnVmZmVyVGV4dHVyZShDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUsIGNvbnMKICAgICBpZiAoIXRl
eHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBk
ZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpUZXh0dXJlVXNhZ2VBbnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJl
LT5pZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMIGxvY2so
bV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBsb2Nr
LnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4SW1h
Z2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgdGV4dHVyZS0+Zm9ybWF0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0
LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWln
aHQoKSwgMCkpOwpAQCAtMTQxMSw3ICsxNDExLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdAog
ICAgIEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKIAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZz
Y3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0gICAgZnJhbWUuY3VycmVudEZyYW1lYnVmZmVyTG9jayA9
IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKG1fcmVzb3VyY2VQcm92
aWRlciwgdGV4dHVyZS0+aWQoKSkpOworICAgIGZyYW1lLmN1cnJlbnRGcmFtZWJ1ZmZlckxvY2sg
PSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTChtX3Jl
c291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQg
PSBmcmFtZS5jdXJyZW50RnJhbWVidWZmZXJMb2NrLT50ZXh0dXJlSWQoKTsKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkLCAwKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggNjg0MmYwY2M1OTU0YmRmN2ViYzM5ZjZjM2VmOTcx
OTQzZTkzZGFkZC4uZjVkZDc0OGI0ZTMwY2NmNDk0MDQ0M2M2NTU5M2NlNTAzMzNlYjIwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2
YXRlOgogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzOwogICAgICAg
ICBjb25zdCBDQ1JlbmRlclBhc3MqIGN1cnJlbnRSZW5kZXJQYXNzOwogICAgICAgICBjb25zdCBD
Q1Njb3BlZFRleHR1cmUqIGN1cnJlbnRUZXh0dXJlOwotICAgICAgICBPd25QdHI8Q0NTY29wZWRM
b2NrUmVzb3VyY2VGb3JXcml0ZT4gY3VycmVudEZyYW1lYnVmZmVyTG9jazsKKyAgICAgICAgT3du
UHRyPENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w+IGN1cnJlbnRGcmFtZWJ1
ZmZlckxvY2s7CiAKICAgICAgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwcm9q
ZWN0aW9uTWF0cml4OwogICAgICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHdp
bmRvd01hdHJpeDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCmluZGV4IDJj
Nzg3NTE0OTdkZmU0ODFiNGZhZTYzZGIxOTEwZTNkNjhjZDQwNGEuLmI2ZGVjZjg2Mjg4ZmQ0NjJh
MzgyNWU5YTI2YzY1NDg0MjdhZjAxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdl
LmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCisjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNz
Q29udGV4dDNELmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CkBAIC04
OCwxMyArODksMjQgQEAgYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1lcihS
ZXNvdXJjZUlkIGlkKQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
R0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50IGhpbnQpCiB7CisgICAgc3dpdGNoICht
X2NyZWF0aW9uUG9saWN5KSB7CisgICAgY2FzZSBDcmVhdGVHTFRleHR1cmVzOgorICAgICAgICBy
ZXR1cm4gY3JlYXRlR0xUZXh0dXJlKHBvb2wsIHNpemUsIGZvcm1hdCwgaGludCk7CisgICAgY2Fz
ZSBDcmVhdGVCaXRtYXBzOgorICAgICAgICBBU1NFUlQoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcChwb29sLCBzaXplKTsKKyAg
ICB9CisKKyAgICBDUkFTSCgpOworICAgIHJldHVybiAwOworfQorCitDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVHTFRleHR1cmUoaW50IHBv
b2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGlu
dCBoaW50KQorewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgdW5z
aWduZWQgdGV4dHVyZUlkID0gMDsKICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNk
ID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoY29udGV4dDNkKTsKICAgICBH
TEMoY29udGV4dDNkLCB0ZXh0dXJlSWQgPSBjb250ZXh0M2QtPmNyZWF0ZVRleHR1cmUoKSk7CiAg
ICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CiAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNk
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7
CkBAIC0xMTAsNyArMTIyLDE5IEBAIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zCiAgICAgfSBlbHNl
CiAgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4SW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApKTsKICAg
ICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQrKzsKLSAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0
ZXh0dXJlSWQsIHBvb2wsIDAsIGZhbHNlLCBmYWxzZSwgc2l6ZSwgZm9ybWF0fTsKKyAgICBSZXNv
dXJjZSByZXNvdXJjZSA9IHt0ZXh0dXJlSWQsIDAsIHBvb2wsIDAsIGZhbHNlLCBmYWxzZSwgc2l6
ZSwgZm9ybWF0fTsKKyAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsKKyAgICByZXR1
cm4gaWQ7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJv
dmlkZXI6OmNyZWF0ZUJpdG1hcChpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworCisgICAgdWludDhfdCogcGl4ZWxz
ID0gbmV3IHVpbnQ4X3Rbc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDRdOworCisgICAg
UmVzb3VyY2VJZCBpZCA9IG1fbmV4dElkKys7CisgICAgUmVzb3VyY2UgcmVzb3VyY2UgPSB7MCwg
cGl4ZWxzLCBwb29sLCAwLCBmYWxzZSwgZmFsc2UsIHNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBfTsKICAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsKICAgICByZXR1cm4gaWQ7
CiB9CkBAIC0xMTksNyArMTQzLDcgQEAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIEND
UmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXgKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlSWQgaWQgPSBtX25l
eHRJZCsrOwotICAgIFJlc291cmNlIHJlc291cmNlID0ge3RleHR1cmVJZCwgMCwgMCwgZmFsc2Us
IHRydWUsIEludFNpemUoKSwgMH07CisgICAgUmVzb3VyY2UgcmVzb3VyY2UgPSB7dGV4dHVyZUlk
LCAwLCAwLCAwLCBmYWxzZSwgdHJ1ZSwgSW50U2l6ZSgpLCAwfTsKICAgICBtX3Jlc291cmNlcy5h
ZGQoaWQsIHJlc291cmNlKTsKICAgICByZXR1cm4gaWQ7CiB9CkBAIC0xMjcsMTUgKzE1MSwxNSBA
QCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVh
dGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0
ZVJlc291cmNlKFJlc291cmNlSWQgaWQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0
LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJl
dHVybjsKLSAgICB9CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMu
ZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vj
b25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOwotICAg
IGlmICghaXQtPnNlY29uZC5leHRlcm5hbCkKKworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmIChjb250ZXh0M2QgJiYg
IWl0LT5zZWNvbmQuZXh0ZXJuYWwpCiAgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+
ZGVsZXRlVGV4dHVyZShpdC0+c2Vjb25kLmdsSWQpKTsKKyAgICBpZiAoaXQtPnNlY29uZC5waXhl
bHMpCisgICAgICAgIGRlbGV0ZSBpdC0+c2Vjb25kLnBpeGVsczsKKwogICAgIG1fcmVzb3VyY2Vz
LnJlbW92ZShpdCk7CiB9CiAKQEAgLTE1NCw2OCArMTc4LDU5IEBAIHZvaWQgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpkZWxldGVPd25lZFJlc291cmNlcyhpbnQgcG9vbCkKIHZvaWQgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
LSAgICBBU1NFUlQobV90ZXhTdWJJbWFnZS5nZXQoKSk7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0
M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIFJlc291cmNlTWFwOjpp
dGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jl
c291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29u
ZC5sb2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKIAotICAgIGNvbnRl
eHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGl0LT5zZWNv
bmQuZ2xJZCk7Ci0gICAgbV90ZXhTdWJJbWFnZS0+dXBsb2FkKGltYWdlLCBpbWFnZVJlY3QsIHNv
dXJjZVJlY3QsIGRlc3RSZWN0LCBpdC0+c2Vjb25kLmZvcm1hdCwgY29udGV4dDNkKTsKLX0KKyAg
ICBpZiAoaXQtPnNlY29uZC5nbElkKSB7CisgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgICAgICBBU1NFUlQoY29udGV4
dDNkKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4U3ViSW1hZ2UuZ2V0KCkpOworICAgICAgICBjb250
ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBpdC0+c2Vj
b25kLmdsSWQpOworICAgICAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVj
dCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOwor
ICAgIH0KIAotdW5zaWduZWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUoUmVzb3Vy
Y2VJZCBpZCkKLXsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFJl
c291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VS
VChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAm
JiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsK
LSAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gdHJ1ZTsKLSAgICByZXR1cm4gaXQtPnNl
Y29uZC5nbElkOwotfQorICAgIGlmIChpdC0+c2Vjb25kLnBpeGVscykgeworICAgICAgICBTa0Jp
dG1hcCBzcmM7CisgICAgICAgIHNyYy5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29u
ZmlnLCBpbWFnZVJlY3Qud2lkdGgoKSwgaW1hZ2VSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgc3Jj
LnNldFBpeGVscyhjb25zdF9jYXN0PHVpbnQ4X3QqPihpbWFnZSkpOworICAgICAgICBTY29wZWRX
cml0ZUxvY2tTb2Z0d2FyZSBsb2NrKHRoaXMsIGlkKTsKKyAgICAgICAgU2tDYW52YXMqIGRlc3Qg
PSBsb2NrLnNrQ2FudmFzKCk7CiAKLXZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JX
cml0ZShSZXNvdXJjZUlkIGlkKQotewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSk7Ci0gICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7
Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja2Vk
Rm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotICAgIGl0LT5zZWNvbmQubG9ja2Vk
Rm9yV3JpdGUgPSBmYWxzZTsKKyAgICAgICAgU2tJUmVjdCBzcmNTa1JlY3Q7CisgICAgICAgIFNr
UmVjdCBkZXN0U2tSZWN0OworICAgICAgICBzcmNTa1JlY3Quc2V0KHNvdXJjZVJlY3QueCgpLCBz
b3VyY2VSZWN0LnkoKSwgc291cmNlUmVjdC5tYXhYKCksIHNvdXJjZVJlY3QubWF4WSgpKTsKKyAg
ICAgICAgc3JjU2tSZWN0Lm9mZnNldCgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwor
ICAgICAgICBkZXN0U2tSZWN0LnNldChkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJl
Y3QubWF4WCgpLCBkZXN0UmVjdC5tYXhZKCkpOworICAgICAgICBkZXN0LT5kcmF3Qml0bWFwUmVj
dChzcmMsICZzcmNTa1JlY3QsIGRlc3RTa1JlY3QpOworICAgIH0KIH0KIAogdm9pZCBDQ1Jlc291
cmNlUHJvdmlkZXI6OmZsdXNoKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkpOwogICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNv
bnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjb250ZXh0M2QtPmZsdXNoKCk7CisgICAgaWYgKGNvbnRleHQzZCkKKyAg
ICAgICAgY29udGV4dDNkLT5mbHVzaCgpOwogfQogCiBib29sIENDUmVzb3VyY2VQcm92aWRlcjo6
c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSk7CiAgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4
dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgIGlmICgh
Y29udGV4dDNkIHx8ICFtX3VzZVNoYWxsb3dGbHVzaCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KIAotICAgIGlmIChtX3VzZVNoYWxsb3dGbHVzaCkKLSAgICAgICAgY29udGV4dDNkLT5z
aGFsbG93Rmx1c2hDSFJPTUlVTSgpOwotICAgIHJldHVybiBtX3VzZVNoYWxsb3dGbHVzaDsKKyAg
ICBjb250ZXh0M2QtPnNoYWxsb3dGbHVzaENIUk9NSVVNKCk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXVuc2lnbmVkIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBp
ZCkKK2NvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRl
cjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2Vz
LmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNl
Y29uZC5sb2NrZWRGb3JXcml0ZSk7Ci0gICAgKysoaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50
KTsKLSAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOworICAgIGl0LT5zZWNvbmQubG9ja0ZvclJl
YWRDb3VudCsrOworICAgIHJldHVybiAmaXQtPnNlY29uZDsKIH0KIAogdm9pZCBDQ1Jlc291cmNl
UHJvdmlkZXI6OnVubG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKQEAgLTIyMywxNiArMjM4LDkz
IEBAIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQgaWQp
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9y
ZXNvdXJjZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ID4gMCk7Ci0gICAg
LS0oaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKKyAgICBpdC0+c2Vjb25kLmxvY2tGb3JS
ZWFkQ291bnQtLTsKK30KKworY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZSogQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBp
dCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5l
bmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9y
UmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25kLmxvY2tl
ZEZvcldyaXRlID0gdHJ1ZTsKKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7Cit9CisKK3ZvaWQgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2Vz
LmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJu
YWwpOworICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKK30KKworQ0NSZXNv
dXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRl
cikKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQocmVz
b3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCktPmdsSWQpCit7CisgICAgQVNT
RVJUKG1fdGV4dHVyZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9j
a0dMOjp+U2NvcGVkUmVhZExvY2tHTCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxv
Y2tGb3JSZWFkKG1fcmVzb3VyY2VJZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVk
V3JpdGVMb2NrR0w6OlNjb3BlZFdyaXRlTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3Vy
Y2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisg
ICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3Vy
Y2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9j
a0ZvcldyaXRlKHJlc291cmNlSWQpLT5nbElkKQoreworICAgIEFTU0VSVChtX3RleHR1cmVJZCk7
Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6On5TY29wZWRXcml0
ZUxvY2tHTCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JXcml0ZShtX3Jl
c291cmNlSWQpOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1h
cFdpdGhSZXNvdXJjZShTa0JpdG1hcCogc2tCaXRtYXAsIGNvbnN0IFJlc291cmNlKiByZXNvdXJj
ZSkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2UtPnBpeGVscyk7CisgICAgQVNTRVJUKHJlc291cmNl
LT5mb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHNrQml0bWFwLT5zZXRD
b25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCByZXNvdXJjZS0+c2l6ZS53aWR0aCgp
LCByZXNvdXJjZS0+c2l6ZS5oZWlnaHQoKSk7CisgICAgc2tCaXRtYXAtPnNldFBpeGVscyhyZXNv
dXJjZS0+cGl4ZWxzKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1Nv
ZnR3YXJlOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3Vy
Y2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisg
ICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3Vy
Y2VJZChyZXNvdXJjZUlkKQoreworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0Jp
dG1hcFdpdGhSZXNvdXJjZSgmbV9za0JpdG1hcCwgcmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJl
YWQocmVzb3VyY2VJZCkpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2Nr
U29mdHdhcmU6On5TY29wZWRSZWFkTG9ja1NvZnR3YXJlKCkKK3sKKyAgICBtX3Jlc291cmNlUHJv
dmlkZXItPnVubG9ja0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgcmVzb3VyY2VJZCkKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVBy
b3ZpZGVyKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCit7CisgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKCZtX3NrQml0bWFwLCByZXNv
dXJjZVByb3ZpZGVyLT5sb2NrRm9yV3JpdGUocmVzb3VyY2VJZCkpOworICAgIG1fc2tDYW52YXMu
c2V0Qml0bWFwRGV2aWNlKG1fc2tCaXRtYXApOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFdyaXRlTG9ja1NvZnR3YXJlOjp+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKQoreworICAg
IG1fcmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKIH0KIAog
Q0NSZXNvdXJjZVByb3ZpZGVyOjpDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbmV4dElkKDEpCisg
ICAgLCBtX2NyZWF0aW9uUG9saWN5KENyZWF0ZUdMVGV4dHVyZXMpCiAgICAgLCBtX3VzZVRleHR1
cmVTdG9yYWdlRXh0KGZhbHNlKQogICAgICwgbV91c2VUZXh0dXJlVXNhZ2VIaW50KGZhbHNlKQog
ICAgICwgbV91c2VTaGFsbG93Rmx1c2goZmFsc2UpCi0gICAgLCBtX21heFRleHR1cmVTaXplKDAp
CisgICAgLCBtX21heFRleHR1cmVTaXplKElOVF9NQVgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZXNvdXJjZVByb3ZpZGVyLmgKaW5kZXggMDY3Y2FkNDkwZDQ1MDQ5NjM5OWNjNzBkODJlOTFkMDQ4
YzJkYjM1OS4uMGUxNTc0MmUwZjRmNjYzYjMxOTgwMGRkNDgwZGI1YjRkNjI2NDM1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNv
dXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUg
IlNrQml0bWFwLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgpAQCAtNDIsOCArNDQsOCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvclJlYWQ7Ci1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlOwor
Y2xhc3MgU2NvcGVkUmVhZExvY2tHTDsKK2NsYXNzIFNjb3BlZFdyaXRlTG9ja0dMOwogY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIExheWVyVGV4dHVyZVN1YkltYWdlOwogCkBAIC01NCw2ICs1NiwxMCBA
QCBjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXIgewogcHVibGljOgogICAgIHR5cGVkZWYgdW5zaWdu
ZWQgUmVzb3VyY2VJZDsKICAgICBlbnVtIFRleHR1cmVVc2FnZUhpbnQgeyBUZXh0dXJlVXNhZ2VB
bnksIFRleHR1cmVVc2FnZUZyYW1lYnVmZmVyIH07CisgICAgZW51bSBDcmVhdGlvblBvbGljeSB7
CisgICAgICAgIENyZWF0ZUdMVGV4dHVyZXMsCisgICAgICAgIENyZWF0ZUJpdG1hcHMsCisgICAg
fTsKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gY3JlYXRlKEND
R3JhcGhpY3NDb250ZXh0Kik7CiAKQEAgLTY5LDExICs3NSwxOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBQcm9kdWNlciBpbnRlcmZhY2UuCiAKLSAgICAvLyBDcmVhdGVzIGEgcmVzb3VyY2Ugb2YgdGhl
IGdpdmVuIHNpemUvZm9ybWF0LCBpbnRvIHRoZSBnaXZlbiBwb29sLgorICAgIHZvaWQgc2V0Q3Jl
YXRpb25Qb2xpY3koQ3JlYXRpb25Qb2xpY3kgcG9saWN5KSB7IG1fY3JlYXRpb25Qb2xpY3kgPSBw
b2xpY3k7IH0KKyAgICBDcmVhdGlvblBvbGljeSBjcmVhdGlvblBvbGljeSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3JlYXRpb25Qb2xpY3k7IH0KKworICAgIC8vIENyZWF0ZXMgYSByZXNvdXJjZSBvZiB0
aGUgdHlwZSBkZXRlcm1pbmVkIGJ5IHRoZSBDcmVhdGlvblBvbGljeS4KICAgICBSZXNvdXJjZUlk
IGNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0
LCBUZXh0dXJlVXNhZ2VIaW50KTsKIAotICAgIC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUg
aW50byBhIHJlc291cmNlLgorICAgIC8vIFlvdSBjYW4gYWxzbyBjcmVhdGUgYSBzcGVjaWZpYyBy
ZXNvdXJjZSB0eXBlIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgLy8gbm9ybWFsIHBvbGljeS4KKyAg
ICBSZXNvdXJjZUlkIGNyZWF0ZUdMVGV4dHVyZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYsIEdD
M0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCk7CisgICAgUmVzb3VyY2VJZCBjcmVhdGVC
aXRtYXAoaW50IHBvb2wsIGNvbnN0IEludFNpemUmKTsKKyAgICAvLyBXcmFwcyBhbiBleHRlcm5h
bCB0ZXh0dXJlIGludG8gYSBHTCByZXNvdXJjZS4KICAgICBSZXNvdXJjZUlkIGNyZWF0ZVJlc291
cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQpOworCiAgICAgdm9pZCBk
ZWxldGVSZXNvdXJjZShSZXNvdXJjZUlkKTsKIAogICAgIC8vIERlbGV0ZXMgYWxsIHJlc291cmNl
cyBvd25lZCBieSBhIGdpdmVuIHBvb2wuCkBAIC05MCwxMiArMTA0LDcyIEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNoYWxsb3cgZmx1c2ggb2NjdXJyZWQsIGZhbHNlIG90
aGVyd2lzZS4KICAgICBib29sIHNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7CiAKLXByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZDsKLSAgICBmcmll
bmQgY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsKKyAgICAvLyBUaGUgZm9sbG93
aW5nIGxvY2sgY2xhc3NlcyBhcmUgcGFydCBvZiB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIEFQSSBh
bmQgYXJlCisgICAgLy8gbmVlZGVkIHRvIHJlYWQgYW5kIHdyaXRlIHRoZSByZXNvdXJjZSBjb250
ZW50cy4gVGhlIHVzZXIgbXVzdCBlbnN1cmUKKyAgICAvLyB0aGF0IHRoZXkgb25seSB1c2UgR0wg
bG9ja3Mgb24gR0wgcmVzb3VyY2VzLCBldGMsIGFuZCB0aGlzIGlzIGVuZm9yY2VkCisgICAgLy8g
YnkgYXNzZXJ0aW9ucy4KKworICAgIGNsYXNzIFNjb3BlZFJlYWRMb2NrR0wgeworICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZWFkTG9ja0dMKTsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFNjb3BlZFJlYWRMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkKTsKKyAgICAgICAgflNjb3BlZFJlYWRMb2NrR0woKTsKKworICAgICAg
ICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlk
ZXI7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7
CisgICAgICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIH07CisKKyAgICBjbGFzcyBTY29w
ZWRXcml0ZUxvY2tHTCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFdyaXRl
TG9ja0dMKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlZFdyaXRlTG9ja0dMKENDUmVzb3Vy
Y2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCk7CisgICAgICAgIH5T
Y29wZWRXcml0ZUxvY2tHTCgpOworCisgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Jlc291
cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgdW5zaWduZWQgbV90ZXh0dXJl
SWQ7CisgICAgfTsKKworICAgIGNsYXNzIFNjb3BlZFJlYWRMb2NrU29mdHdhcmUgeworICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZWFkTG9ja1NvZnR3YXJlKTsKKyAgICBwdWJs
aWM6CisgICAgICAgIFNjb3BlZFJlYWRMb2NrU29mdHdhcmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkKTsKKyAgICAgICAgflNjb3BlZFJlYWRMb2Nr
U29mdHdhcmUoKTsKKworICAgICAgICBjb25zdCBTa0JpdG1hcCogc2tCaXRtYXAoKSBjb25zdCB7
IHJldHVybiAmbV9za0JpdG1hcDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgICAgIFNrQml0bWFwIG1fc2tCaXRtYXA7
CisgICAgfTsKKworICAgIGNsYXNzIFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlIHsKKyAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkV3JpdGVMb2NrU29mdHdhcmUpOworICAgIHB1Ymxp
YzoKKyAgICAgICAgU2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkKTsKKyAgICAgICAgflNjb3BlZFdyaXRlTG9j
a1NvZnR3YXJlKCk7CisKKyAgICAgICAgU2tDYW52YXMqIHNrQ2FudmFzKCkgeyByZXR1cm4gJm1f
c2tDYW52YXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciog
bV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgbV9yZXNvdXJjZUlkOworICAgICAgICBTa0JpdG1hcCBtX3NrQml0bWFwOworICAgICAgICBT
a0NhbnZhcyBtX3NrQ2FudmFzOworICAgIH07CisKK3ByaXZhdGU6CiAgICAgc3RydWN0IFJlc291
cmNlIHsKICAgICAgICAgdW5zaWduZWQgZ2xJZDsKKyAgICAgICAgdWludDhfdCogcGl4ZWxzOwog
ICAgICAgICBpbnQgcG9vbDsKICAgICAgICAgaW50IGxvY2tGb3JSZWFkQ291bnQ7CiAgICAgICAg
IGJvb2wgbG9ja2VkRm9yV3JpdGU7CkBAIC0xMDgsMTggKzE4MiwxNyBAQCBwcml2YXRlOgogICAg
IGV4cGxpY2l0IENDUmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCopOwogICAgIGJv
b2wgaW5pdGlhbGl6ZSgpOwogCi0gICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50
aW5nIHRoZSByZXNvdXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW50by4KLSAgICB1bnNpZ25l
ZCBsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7Ci0gICAgdm9pZCB1bmxvY2tGb3JXcml0ZShSZXNv
dXJjZUlkKTsKLQotICAgIC8vIEdldHMgYSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2VudGluZyB0aGUg
cmVzb3VyY2UsIHRoYXQgY2FuIGJlIHJlbmRlcmVkIHdpdGguCi0gICAgdW5zaWduZWQgbG9ja0Zv
clJlYWQoUmVzb3VyY2VJZCk7CisgICAgY29uc3QgUmVzb3VyY2UqIGxvY2tGb3JSZWFkKFJlc291
cmNlSWQpOwogICAgIHZvaWQgdW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKKyAgICBjb25zdCBS
ZXNvdXJjZSogbG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5sb2NrRm9yV3Jp
dGUoUmVzb3VyY2VJZCk7CisgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNv
dXJjZShTa0JpdG1hcCosIGNvbnN0IFJlc291cmNlKik7CiAKICAgICBDQ0dyYXBoaWNzQ29udGV4
dCogbV9jb250ZXh0OwogICAgIFJlc291cmNlSWQgbV9uZXh0SWQ7CiAgICAgUmVzb3VyY2VNYXAg
bV9yZXNvdXJjZXM7CiAKKyAgICBDcmVhdGlvblBvbGljeSBtX2NyZWF0aW9uUG9saWN5OwogICAg
IGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4dDsKICAgICBib29sIG1fdXNlVGV4dHVyZVVzYWdl
SGludDsKICAgICBib29sIG1fdXNlU2hhbGxvd0ZsdXNoOwpAQCAtMTI3LDQ3ICsyMDAsNiBAQCBw
cml2YXRlOgogICAgIGludCBtX21heFRleHR1cmVTaXplOwogfTsKIAotY2xhc3MgQ0NTY29wZWRM
b2NrUmVzb3VyY2VGb3JSZWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvclJlYWQpOwotcHVibGljOgotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9y
UmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRl
cihyZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQot
ICAgICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JSZWFkKHJlc291
cmNlSWQpKSB7IH0KLQotICAgIH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQoKQotICAgIHsK
LSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVzb3VyY2VJZCk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlk
OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotY2xhc3MgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JXcml0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JXcml0ZSk7Ci1wdWJsaWM6Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0
ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihy
ZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQotICAg
ICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0ZShyZXNvdXJj
ZUlkKSkgeyB9Ci0KLSAgICB+Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSgpCi0gICAgewot
ICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRlKG1fcmVzb3VyY2VJZCk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlk
OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcAppbmRl
eCBiMmM0MWU1MjVkZDk1Y2ZmOWI2YWMwZjRlZDA1ZGQyODIwMTYwMmU4Li4wN2Q1ODE4YWMyNzJl
OGY2M2Y5ZDQ1MTk1ZWVmOTdmOGJkMDgxYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKQEAgLTE5Nyw3ICsx
OTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFJlc291cmNlUGl4ZWxzKENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2VJZCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZv
cm1hdCwgdWludDhfdCogcGl4ZWxzKQogICAgIHsKLSAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7CisgICAgICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBsb2NrKG1fcmVzb3VyY2VQcm92aWRl
ci5nZXQoKSwgaWQpOwogICAgICAgICBBU1NFUlRfTkUoMFUsIGxvY2sudGV4dHVyZUlkKCkpOwog
ICAgICAgICBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAgICAgY29udGV4dCgpLT5nZXRQaXhlbHMoc2l6
ZSwgZm9ybWF0LCBwaXhlbHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157627</attachid>
            <date>2012-08-09 20:48:36 -0700</date>
            <delta_ts>2012-08-15 17:31:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120809204809.patch</filename>
            <type>text/plain</type>
            <size>33805</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4ZDdlM2Q3YTRlYzU4
YTYwOGYxOWI5YWM4Y2VjY2M2OWY4NDgyZS4uMjhlOTUzZjE4OTNlMGUyNjVkMGFkY2M2NjYwNjhj
MTY0NzE4M2VhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisKKyAgICAgICAgW2Nocm9t
aXVtXSBBZGQgc29mdHdhcmUgYml0bWFwIHJlc291cmNlcyB0byBDQ1Jlc291cmNlUHJvdmlkZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjc3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRz
IHRoZSBhYmlsaXR5IHRvIENDUmVzb3VyY2VQcm92aWRlciB0byB1c2Ugc29mdHdhcmUgYml0bWFw
cy4KKyAgICAgICAgVGhleSBhcmUgYWxsb2NhdGVkIGFzIHBsYWluLW9sZC1tZW1vcnksIGFuZCBl
eHBvc2VkIGFzIFNraWEgb2JqZWN0cy4KKworICAgICAgICBBcyBkaXNjdXNzZWQgaW4gQnVnIDkz
NDQyLCB3ZSB3YW50IHRoZSBSZXNvdXJjZVByb3ZpZGVyIHRvIGJlIGFibGUKKyAgICAgICAgdG8g
aGFuZGxlIGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyBhdCB0aGUgc2FtZSB0aW1lLiAgSW4gcHJh
Y3RpY2UsIGEKKyAgICAgICAgZGVmYXVsdCByZXNvdXJjZSB0eXBlIGlzIGRlc2lyZWQgZm9yIG1v
c3QgdXNlcyB3aXRoaW4gYSBzaW5nbGUKKyAgICAgICAgY29tcG9zaXRvciBpbnN0YW5jZSAtLSB0
aGUgZGVmYXVsdCByZXNvdXJjZSB0eXBlICBkZXRlcm1pbmVzIHdoYXQgdGhhdAorICAgICAgICB0
eXBlIGlzLiAgRGVmYXVsdCByZXNvdXJjZSB0eXBlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgbW9zdGx5
IDEtdG8tMSB3aXRoCisgICAgICAgIENDUmVuZGVyZXIgdHlwZXMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Rmls
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5k
ZXJQYXNzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdUaWxlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdZVVZWaWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3VGV4dHVyZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
RHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Jlc291cmNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3Zp
ZGVyOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlR0xUZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1Jlc291cmNlUHJvdmlkZXI6OnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6flNj
b3BlZFJlYWRMb2NrR0wpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRXcml0ZUxvY2tHTDo6U2NvcGVkV3JpdGVMb2NrR0wpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTDo6flNjb3BlZFdyaXRlTG9ja0dM
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1h
cFdpdGhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFJlYWRMb2NrU29mdHdhcmU6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjp+U2Nv
cGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja1NvZnR3
YXJlOjp+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnNldENyZWF0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoQ0NSZXNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKFNjb3BlZFJlYWRM
b2NrR0wpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFk
TG9ja0dMOjp0ZXh0dXJlSWQpOgorICAgICAgICAoU2NvcGVkV3JpdGVMb2NrR0wpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTDo6dGV4dHVy
ZUlkKToKKyAgICAgICAgKFNjb3BlZFJlYWRMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjpza0JpdG1hcCk6
CisgICAgICAgIChTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlOjpza0NhbnZhcyk6Cisg
ICAgICAgIChSZXNvdXJjZSk6CisKIDIwMTItMDgtMDkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gUmVuYW1lIFY4QmluZGluZ1BlckNvbnRleHRE
YXRhIHRvIFY4UGVyQ29udGV4dERhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjY5
OWJiZDNhMzJjZjNjYTA4MWFlNDM0ZDI0NzZmYTYzMTE0OGE2OC4uOTNhNTBkYTY5OWJlNWMzNmE2
Y2JjNWExMGQzOWExZDI5YTNlNzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxMi0wOC0wOSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc29mdHdhcmUgYml0bWFwIHJlc291cmNlcyB0
byBDQ1Jlc291cmNlUHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIENDUmVzb3VyY2VQcm92aWRlciB0
byB1c2Ugc29mdHdhcmUgYml0bWFwcy4KKyAgICAgICAgVGhleSBhcmUgYWxsb2NhdGVkIGFzIHBs
YWluLW9sZC1tZW1vcnksIGFuZCBleHBvc2VkIGFzIFNraWEgb2JqZWN0cy4KKworICAgICAgICBB
cyBkaXNjdXNzZWQgaW4gQnVnIDkzNDQyLCB3ZSB3YW50IHRoZSBSZXNvdXJjZVByb3ZpZGVyIHRv
IGJlIGFibGUKKyAgICAgICAgdG8gaGFuZGxlIGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyBhdCB0
aGUgc2FtZSB0aW1lLiAgSW4gcHJhY3RpY2UsIGEKKyAgICAgICAgZGVmYXVsdCByZXNvdXJjZSB0
eXBlIGlzIGRlc2lyZWQgZm9yIG1vc3QgdXNlcyB3aXRoaW4gYSBzaW5nbGUKKyAgICAgICAgY29t
cG9zaXRvciBpbnN0YW5jZSAtLSB0aGUgZGVmYXVsdCByZXNvdXJjZSB0eXBlICBkZXRlcm1pbmVz
IHdoYXQgdGhhdAorICAgICAgICB0eXBlIGlzLiAgRGVmYXVsdCByZXNvdXJjZSB0eXBlcyBhcmUg
ZXhwZWN0ZWQgdG8gYmUgbW9zdGx5IDEtdG8tMSB3aXRoCisgICAgICAgIENDUmVuZGVyZXIgdHlw
ZXMuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdDo6Z2V0UmVzb3VyY2VQaXhlbHMpOgor
CiAyMDEyLTA4LTA5ICBFcmljIFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIFBhaW50IGFuaW1hdGVkIGxheWVycyBpbW1lZGlhdGVseSB0byBhdm9pZCBh
bmltYXRpb24gaGljY3Vwcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGEwZTg1
N2U5ZDRiYzVlYTc5MjQ5Mjk1ZjkwNjFiZjRhZGRmMjUzNDcuLmZjNTAyYjc3MGNiNmYzYWNhMzFm
OWU1NmUzODM1Yjk4NDk1MTdiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAt
MTA3LDcgKzEwNyw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChXZWJHcmFwaGljCiAgICAgY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICB0ZXh0dXJlLT5hY3F1aXJlQmFja2luZ1RleHR1cmUo
cmVzb3VyY2VQcm92aWRlcik7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2Nr
KHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPnJlc291cmNlSWQoKSk7CisgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCBsb2NrKHJlc291cmNlUHJvdmlkZXIsIHRleHR1
cmUtPnJlc291cmNlSWQoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0
byBkcmF3IG9uLgogICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxlcmF0
ZWRDYW52YXMoZ3JDb250ZXh0LCB0ZXh0dXJlLT5zaXplKCksIGxvY2sudGV4dHVyZUlkKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA3Zjk0NzFhOTg1ZTNh
N2QwZGUwZTg4YjdmNTZiMWZlMjQ1OTdjMjU1Li5mMDdhMTZkMGUxYzliMDFkMDQwYjVlOTM2NGI5
OGY2YTk1NTg1MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAg
LTU0MSw3ICs1NDEsNyBAQCBzdGF0aWMgaW5saW5lIFNrQml0bWFwIGFwcGx5RmlsdGVycyhMYXll
clJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0CiAKICAgICBsYXllclJlbmRl
cmVyLT5jb250ZXh0KCktPmZsdXNoKCk7CiAKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldy
aXRlIGxvY2sobGF5ZXJSZW5kZXJlci0+cmVzb3VyY2VQcm92aWRlcigpLCBzb3VyY2VUZXh0dXJl
LT5pZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMIGxvY2so
bGF5ZXJSZW5kZXJlci0+cmVzb3VyY2VQcm92aWRlcigpLCBzb3VyY2VUZXh0dXJlLT5pZCgpKTsK
ICAgICBTa0JpdG1hcCBzb3VyY2UgPSBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShmaWx0
ZXJzLCBsb2NrLnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJlLT5zaXplKCksIGZpbHRlckNvbnRl
eHQsIGZpbHRlckdyQ29udGV4dCk7CiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KQEAgLTY0MywyMCAr
NjQzLDIwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQo
RHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kCiAgICAgLy8gRklYTUU6IENhY2hlIHRo
aXMgdmFsdWUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvIGl0IGZvciBib3RoIHRoZSBzdXJm
YWNlIGFuZCBpdHMgcmVwbGljYS4KICAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHRoZSBjb250ZW50
cyB0ZXh0dXJlLgogICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyh0aGlz
LCByZW5kZXJQYXNzLT5maWx0ZXJzKCksIGNvbnRlbnRzVGV4dHVyZSk7Ci0gICAgT3duUHRyPEND
U2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZD4gY29udGVudHNSZXNvdXJjZUxvY2s7CisgICAgT3du
UHRyPENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTD4gY29udGVudHNSZXNvdXJj
ZUxvY2s7CiAgICAgdW5zaWduZWQgY29udGVudHNUZXh0dXJlSWQgPSAwOwogICAgIGlmIChmaWx0
ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKSB7CiAgICAgICAgIEdyVGV4dHVyZSogdGV4dHVyZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4oZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSk7CiAg
ICAgICAgIGNvbnRlbnRzVGV4dHVyZUlkID0gdGV4dHVyZS0+Z2V0VGV4dHVyZUhhbmRsZSgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRlbnRzUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIobmV3
IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZChtX3Jlc291cmNlUHJvdmlkZXIsIGNvbnRlbnRz
VGV4dHVyZS0+aWQoKSkpOworICAgICAgICBjb250ZW50c1Jlc291cmNlTG9jayA9IGFkb3B0UHRy
KG5ldyBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wobV9yZXNvdXJjZVByb3Zp
ZGVyLCBjb250ZW50c1RleHR1cmUtPmlkKCkpKTsKICAgICAgICAgY29udGVudHNUZXh0dXJlSWQg
PSBjb250ZW50c1Jlc291cmNlTG9jay0+dGV4dHVyZUlkKCk7CiAgICAgfQogCiAgICAgLy8gRHJh
dyB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlIGlmIHRoZXJlIGlzIG9uZS4KICAgICBpZiAoYmFja2dy
b3VuZFRleHR1cmUpIHsKICAgICAgICAgQVNTRVJUKGJhY2tncm91bmRUZXh0dXJlLT5zaXplKCkg
PT0gcXVhZC0+cXVhZFJlY3QoKS5zaXplKCkpOwotICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIGJhY2tncm91bmRUZXh0dXJlLT5pZCgp
KTsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIGxvY2sobV9y
ZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVyZS0+aWQoKSk7CiAgICAgICAgIGNvcHlU
ZXh0dXJlVG9GcmFtZWJ1ZmZlcihmcmFtZSwgbG9jay50ZXh0dXJlSWQoKSwgcXVhZC0+cXVhZFJl
Y3QoKSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpKTsKICAgICB9CiAKQEAgLTY3MywxMCArNjczLDEw
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoRHJhd2lu
Z0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kCiAgICAgICAgIGRldmljZUxheWVyRWRnZXMuaW5m
bGF0ZUFudGlBbGlhc2luZ0Rpc3RhbmNlKCk7CiAgICAgfQogCi0gICAgT3duUHRyPENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yUmVhZD4gbWFza1Jlc291cmNlTG9jazsKKyAgICBPd25QdHI8Q0NSZXNv
dXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMPiBtYXNrUmVzb3VyY2VMb2NrOwogICAgIHVu
c2lnbmVkIG1hc2tUZXh0dXJlSWQgPSAwOwogICAgIGlmIChxdWFkLT5tYXNrUmVzb3VyY2VJZCgp
KSB7Ci0gICAgICAgIG1hc2tSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+bWFza1Jlc291cmNlSWQo
KSkpOworICAgICAgICBtYXNrUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIobmV3IENDUmVzb3VyY2VQ
cm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTChtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPm1hc2tS
ZXNvdXJjZUlkKCkpKTsKICAgICAgICAgbWFza1RleHR1cmVJZCA9IG1hc2tSZXNvdXJjZUxvY2st
PnRleHR1cmVJZCgpOwogICAgIH0KIApAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NU
aWxlRHJhd1F1CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHVuaWZv
cm1zLnByb2dyYW0pKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaSh1
bmlmb3Jtcy5zYW1wbGVyTG9jYXRpb24sIDApKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgQ0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHF1YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJjZVByb3Zp
ZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVk
UmVhZExvY2tHTCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVz
b3VyY2VJZCgpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFkUmVzb3VyY2VMb2NrLnRleHR1cmVJZCgp
KSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIoKSkpOwpA
QCAtOTc0LDkgKzk3NCw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlk
ZW9RdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDWVVWVmlkCiAgICAgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lID0gcXVhZC0+dVBsYW5lKCk7CiAgICAg
Y29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lID0gcXVhZC0+dlBsYW5l
KCk7CiAKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgeVBsYW5lTG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIHlQbGFuZS5yZXNvdXJjZUlkKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQgdVBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHVQbGFuZS5yZXNvdXJjZUlk
KTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgdlBsYW5lTG9jayhtX3Jlc291cmNl
UHJvdmlkZXIsIHZQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFJlYWRMb2NrR0wgeVBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHlQbGFuZS5yZXNv
dXJjZUlkKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgdVBsYW5l
TG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHVQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgdlBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlk
ZXIsIHZQbGFuZS5yZXNvdXJjZUlkKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CiAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgeVBsYW5lTG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTIpKTsKQEAgLTEwODUs
NyArMTA4NSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQo
RHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NUZXh0dXJlCiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtNGYoYmluZGluZy50ZXhUcmFuc2Zvcm1Mb2NhdGlvbiwgdXZSZWN0
LngoKSwgdXZSZWN0LnkoKSwgdXZSZWN0LndpZHRoKCksIHV2UmVjdC5oZWlnaHQoKSkpOwogCiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBxdWFkUmVz
b3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgcXVhZFJlc291cmNlTG9jayhtX3Jl
c291cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVh
ZFJlc291cmNlTG9jay50ZXh0dXJlSWQoKSkpOwogCiAgICAgLy8gRklYTUU6IHNldHRpbmcgdGhl
IHRleHR1cmUgcGFyYW1ldGVycyBldmVyeSB0aW1lIGlzIHJlZHVuZGFudC4gTW92ZSB0aGlzIGNv
ZGUgc29tZXdoZXJlCkBAIC0xMzc2LDcgKzEzNzYsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSwgY29u
cwogICAgIGlmICghdGV4dHVyZS0+aWQoKSAmJiAhdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJl
cjo6SW1wbFBvb2wsIGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBD
Q1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgbG9jayhtX3Jlc291cmNlUHJv
dmlkZXIsIHRleHR1cmUtPmlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3Jp
dGVMb2NrR0wgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCB0ZXh0
dXJlLT5mb3JtYXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNlUmVjdC53aWR0aCgpLCBk
ZXZpY2VSZWN0LmhlaWdodCgpLCAwKSk7CkBAIC0xNDIyLDcgKzE0MjIsNyBAQCBib29sIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKERyYXdpbmdGcmFtZSYg
ZnJhbWUsIGNvbnN0CiAgICAgQVNTRVJUKHRleHR1cmUtPmlkKCkpOwogCiAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKLSAgICBmcmFtZS5jdXJyZW50RnJh
bWVidWZmZXJMb2NrID0gYWRvcHRQdHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUo
bV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKSk7CisgICAgZnJhbWUuY3VycmVudEZy
YW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdy
aXRlTG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkpOwogICAgIHVuc2ln
bmVkIHRleHR1cmVJZCA9IGZyYW1lLmN1cnJlbnRGcmFtZWJ1ZmZlckxvY2stPnRleHR1cmVJZCgp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQsIDApKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAxNzkxMDMzNTlhNDliNGY5
NzA4YjkxNGM5ODJjMGZjZWRhNTA2MDUyLi5iZmUwODMxNjM0OTFmMGU0Y2ZiYmEwN2VkNjM2ZGNl
N2U3YzBhZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTIwLDcg
KzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IENDUmVuZGVyUGFzcyogcm9vdFJlbmRl
clBhc3M7CiAgICAgICAgIGNvbnN0IENDUmVuZGVyUGFzcyogY3VycmVudFJlbmRlclBhc3M7CiAg
ICAgICAgIGNvbnN0IENDU2NvcGVkVGV4dHVyZSogY3VycmVudFRleHR1cmU7Ci0gICAgICAgIE93
blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlPiBjdXJyZW50RnJhbWVidWZmZXJMb2Nr
OworICAgICAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTD4g
Y3VycmVudEZyYW1lYnVmZmVyTG9jazsKIAogICAgICAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJl
Y3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCmluZGV4IGEwYmQzN2Nj
OGQ1YWU4M2EwODNiOTFkY2Q3MTFiOTkxOTk3ZjBkNzAuLmJjZjE4OTc1ZjhkOGU4MGIzNTIzODcz
YzgzYzY4Y2M3ZjZlOWYwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAv
LyBGb3IgdGhlIEdMQygpIG1hY3JvCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIK
ICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q7CkBAIC04NywxMyArODgsMjQgQEAgYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6
OmluVXNlQnlDb25zdW1lcihSZXNvdXJjZUlkIGlkKQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50IGhpbnQp
CiB7CisgICAgc3dpdGNoIChtX2RlZmF1bHRSZXNvdXJjZVR5cGUpIHsKKyAgICBjYXNlIEdMVGV4
dHVyZToKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUdMVGV4dHVyZShwb29sLCBzaXplLCBmb3JtYXQs
IGhpbnQpOworICAgIGNhc2UgQml0bWFwOgorICAgICAgICBBU1NFUlQoZm9ybWF0ID09IEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcChwb29sLCBz
aXplKTsKKyAgICB9CisKKyAgICBDUkFTSCgpOworICAgIHJldHVybiAwOworfQorCitDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVHTFRleHR1
cmUoaW50IHBvb2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVy
ZVVzYWdlSGludCBoaW50KQorewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkID0gMDsKICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkg
ewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29t
cG9zaXRpbmcuCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoY29udGV4dDNk
KTsKICAgICBHTEMoY29udGV4dDNkLCB0ZXh0dXJlSWQgPSBjb250ZXh0M2QtPmNyZWF0ZVRleHR1
cmUoKSk7CiAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CiAgICAgR0xDKGNvbnRleHQzZCwg
Y29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6
TElORUFSKSk7CkBAIC0xMDksNyArMTIxLDE5IEBAIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zCiAg
ICAgfSBlbHNlCiAgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4SW1hZ2UyRChH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUs
IDApKTsKICAgICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQrKzsKLSAgICBSZXNvdXJjZSByZXNv
dXJjZSA9IHt0ZXh0dXJlSWQsIHBvb2wsIDAsIGZhbHNlLCBmYWxzZSwgc2l6ZSwgZm9ybWF0fTsK
KyAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0ZXh0dXJlSWQsIDAsIHBvb2wsIDAsIGZhbHNlLCBm
YWxzZSwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OkdMVGV4dHVyZSB9OworICAg
IG1fcmVzb3VyY2VzLmFkZChpZCwgcmVzb3VyY2UpOworICAgIHJldHVybiBpZDsKK30KKworQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlQml0
bWFwKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIEFTU0VSVChDQ1Byb3h5
Ojppc0ltcGxUaHJlYWQoKSk7CisKKyAgICB1aW50OF90KiBwaXhlbHMgPSBuZXcgdWludDhfdFtz
aXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNF07CisKKyAgICBSZXNvdXJjZUlkIGlkID0g
bV9uZXh0SWQrKzsKKyAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHswLCBwaXhlbHMsIHBvb2wsIDAs
IGZhbHNlLCBmYWxzZSwgc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQ
cm92aWRlcjo6Qml0bWFwfTsKICAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsKICAg
ICByZXR1cm4gaWQ7CiB9CkBAIC0xMTgsNyArMTQyLDcgQEAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxU
ZXgKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNl
SWQgaWQgPSBtX25leHRJZCsrOwotICAgIFJlc291cmNlIHJlc291cmNlID0ge3RleHR1cmVJZCwg
MCwgMCwgZmFsc2UsIHRydWUsIEludFNpemUoKSwgMH07CisgICAgUmVzb3VyY2UgcmVzb3VyY2Ug
PSB7dGV4dHVyZUlkLCAwLCAwLCAwLCBmYWxzZSwgdHJ1ZSwgSW50U2l6ZSgpLCAwLCBDQ1Jlc291
cmNlUHJvdmlkZXI6OkdMVGV4dHVyZX07CiAgICAgbV9yZXNvdXJjZXMuYWRkKGlkLCByZXNvdXJj
ZSk7CiAgICAgcmV0dXJuIGlkOwogfQpAQCAtMTI2LDE1ICsxNTAsMTUgQEAgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9t
RXh0ZXJuYWxUZXgKIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZShSZXNv
dXJjZUlkIGlkKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAg
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7
Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQog
ICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAg
IEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JX
cml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKLSAgICBpZiAoIWl0LT5zZWNv
bmQuZXh0ZXJuYWwpCisKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9j
b250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoY29udGV4dDNkICYmICFpdC0+c2Vjb25kLmV4
dGVybmFsKQogICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmRlbGV0ZVRleHR1cmUo
aXQtPnNlY29uZC5nbElkKSk7CisgICAgaWYgKGl0LT5zZWNvbmQucGl4ZWxzKQorICAgICAgICBk
ZWxldGUgaXQtPnNlY29uZC5waXhlbHM7CisKICAgICBtX3Jlc291cmNlcy5yZW1vdmUoaXQpOwog
fQogCkBAIC0xNTAsNzEgKzE3NCw2OSBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRl
T3duZWRSZXNvdXJjZXMoaW50IHBvb2wpCiAgICAgICAgIGRlbGV0ZVJlc291cmNlKCppdCk7CiB9
CiAKLXZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29uc3Qg
dWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCitDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlVHlwZSBDQ1Jlc291cmNlUHJvdmlkZXI6OnJlc291cmNlVHlwZShSZXNvdXJjZUlk
IGlkKQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgQVNTRVJU
KG1fdGV4U3ViSW1hZ2UuZ2V0KCkpOwotICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGlu
Zy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX3Jlc291cmNlcy5maW5kKGlkKTsKLSAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5k
KCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQubG9ja0ZvclJl
YWRDb3VudCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7Ci0KLSAgICBjb250ZXh0M2QtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBpdC0+c2Vjb25kLmdsSWQpOwot
ICAgIG1fdGV4U3ViSW1hZ2UtPnVwbG9hZChpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAgQVNTRVJUKGl0ICE9
IG1fcmVzb3VyY2VzLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC50eXBlOwogfQogCi11
bnNpZ25lZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQor
dm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBjb25zdCB1aW50
OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3Vy
Y2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQt
PnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYm
ICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLSAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0g
dHJ1ZTsKLSAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOwotfQogCi12b2lkIENDUmVzb3VyY2VQ
cm92aWRlcjo6dW5sb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKLXsKLSAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1f
cmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAm
JiBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLSAg
ICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gZmFsc2U7CisgICAgaWYgKGl0LT5zZWNvbmQu
Z2xJZCkgeworICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250
ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQzZCk7CisgICAgICAgIEFT
U0VSVChtX3RleFN1YkltYWdlLmdldCgpKTsKKyAgICAgICAgY29udGV4dDNkLT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5nbElkKTsKKyAgICAg
ICAgbV90ZXhTdWJJbWFnZS0+dXBsb2FkKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRl
c3RSZWN0LCBpdC0+c2Vjb25kLmZvcm1hdCwgY29udGV4dDNkKTsKKyAgICB9CisKKyAgICBpZiAo
aXQtPnNlY29uZC5waXhlbHMpIHsKKyAgICAgICAgU2tCaXRtYXAgc3JjOworICAgICAgICBzcmMu
c2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgaW1hZ2VSZWN0LndpZHRoKCks
IGltYWdlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNyYy5zZXRQaXhlbHMoY29uc3RfY2FzdDx1
aW50OF90Kj4oaW1hZ2UpKTsKKyAgICAgICAgU2NvcGVkV3JpdGVMb2NrU29mdHdhcmUgbG9jayh0
aGlzLCBpZCk7CisgICAgICAgIFNrQ2FudmFzKiBkZXN0ID0gbG9jay5za0NhbnZhcygpOworCisg
ICAgICAgIFNrSVJlY3Qgc3JjU2tSZWN0OworICAgICAgICBTa1JlY3QgZGVzdFNrUmVjdDsKKyAg
ICAgICAgc3JjU2tSZWN0LnNldChzb3VyY2VSZWN0LngoKSwgc291cmNlUmVjdC55KCksIHNvdXJj
ZVJlY3QubWF4WCgpLCBzb3VyY2VSZWN0Lm1heFkoKSk7CisgICAgICAgIHNyY1NrUmVjdC5vZmZz
ZXQoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICAgICAgZGVzdFNrUmVjdC5z
ZXQoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0Lm1heFgoKSwgZGVzdFJlY3Qu
bWF4WSgpKTsKKyAgICAgICAgZGVzdC0+ZHJhd0JpdG1hcFJlY3Qoc3JjLCAmc3JjU2tSZWN0LCBk
ZXN0U2tSZWN0KTsKKyAgICB9CiB9CiAKIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpmbHVzaCgp
CiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAo
IWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Ig
c29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29udGV4
dDNkLT5mbHVzaCgpOworICAgIGlmIChjb250ZXh0M2QpCisgICAgICAgIGNvbnRleHQzZC0+Zmx1
c2goKTsKIH0KIAogYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OnNoYWxsb3dGbHVzaElmU3VwcG9y
dGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAg
IGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRo
IGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICBpZiAoIWNvbnRleHQzZCB8fCAhbV91c2VT
aGFsbG93Rmx1c2gpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKLSAgICBpZiAobV91
c2VTaGFsbG93Rmx1c2gpCi0gICAgICAgIGNvbnRleHQzZC0+c2hhbGxvd0ZsdXNoQ0hST01JVU0o
KTsKLSAgICByZXR1cm4gbV91c2VTaGFsbG93Rmx1c2g7CisgICAgY29udGV4dDNkLT5zaGFsbG93
Rmx1c2hDSFJPTUlVTSgpOworICAgIHJldHVybiB0cnVlOwogfQogCi11bnNpZ25lZCBDQ1Jlc291
cmNlUHJvdmlkZXI6OmxvY2tGb3JSZWFkKFJlc291cmNlSWQgaWQpCitjb25zdCBDQ1Jlc291cmNl
UHJvdmlkZXI6OlJlc291cmNlKiBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JSZWFkKFJlc291
cmNlSWQgaWQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBBU1NF
UlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUp
OwotICAgICsrKGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7Ci0gICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2xJZDsKKyAgICBpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQrKzsKKyAgICByZXR1
cm4gJml0LT5zZWNvbmQ7CiB9CiAKIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JS
ZWFkKFJlc291cmNlSWQgaWQpCkBAIC0yMjIsMTYgKzI0NCw5MyBAQCB2b2lkIENDUmVzb3VyY2VQ
cm92aWRlcjo6dW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkIGlkKQogICAgIEFTU0VSVChDQ1Byb3h5
Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNv
dXJjZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0
LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCA+IDApOwotICAgIC0tKGl0LT5zZWNvbmQubG9ja0Zv
clJlYWRDb3VudCk7CisgICAgaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50LS07Cit9CisKK2Nv
bnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6bG9j
a0ZvcldyaXRlKFJlc291cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKKyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5k
KGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQu
bG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCAmJiAhaXQtPnNl
Y29uZC5leHRlcm5hbCk7CisgICAgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSA9IHRydWU7Cisg
ICAgcmV0dXJuICZpdC0+c2Vjb25kOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5s
b2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZp
bmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+c2Vjb25k
LmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25k
LmxvY2tlZEZvcldyaXRlID0gZmFsc2U7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVk
UmVhZExvY2tHTDo6U2NvcGVkUmVhZExvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQorICAg
IDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCisgICAgLCBtX3Jlc291cmNl
SWQocmVzb3VyY2VJZCkKKyAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tG
b3JSZWFkKHJlc291cmNlSWQpLT5nbElkKQoreworICAgIEFTU0VSVChtX3RleHR1cmVJZCk7Cit9
CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6flNjb3BlZFJlYWRMb2Nr
R0woKQoreworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yUmVhZChtX3Jlc291cmNl
SWQpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjpTY29wZWRX
cml0ZUxvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQorICAgIDogbV9yZXNvdXJjZVByb3Zp
ZGVyKHJlc291cmNlUHJvdmlkZXIpCisgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKKyAg
ICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0ZShyZXNvdXJjZUlk
KS0+Z2xJZCkKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlSWQpOworfQorCitDQ1Jlc291cmNlUHJv
dmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp+U2NvcGVkV3JpdGVMb2NrR0woKQoreworICAgIG1f
cmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKK30KKwordm9p
ZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UoU2tCaXRt
YXAqIHNrQml0bWFwLCBjb25zdCBSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgQVNTRVJUKHJl
c291cmNlLT5waXhlbHMpOworICAgIEFTU0VSVChyZXNvdXJjZS0+Zm9ybWF0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBKTsKKyAgICBza0JpdG1hcC0+c2V0Q29uZmlnKFNrQml0bWFwOjprQVJH
Ql84ODg4X0NvbmZpZywgcmVzb3VyY2UtPnNpemUud2lkdGgoKSwgcmVzb3VyY2UtPnNpemUuaGVp
Z2h0KCkpOworICAgIHNrQml0bWFwLT5zZXRQaXhlbHMocmVzb3VyY2UtPnBpeGVscyk7Cit9CisK
K0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZTo6U2NvcGVkUmVhZExv
Y2tTb2Z0d2FyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQorICAgIDogbV9yZXNvdXJjZVByb3Zp
ZGVyKHJlc291cmNlUHJvdmlkZXIpCisgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKK3sK
KyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UoJm1f
c2tCaXRtYXAsIHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JSZWFkKHJlc291cmNlSWQpKTsKK30K
KworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjp+U2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZSgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFk
KG1fcmVzb3VyY2VJZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2Nr
U29mdHdhcmU6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQp
CisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVz
b3VyY2VJZChyZXNvdXJjZUlkKQoreworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVT
a0JpdG1hcFdpdGhSZXNvdXJjZSgmbV9za0JpdG1hcCwgcmVzb3VyY2VQcm92aWRlci0+bG9ja0Zv
cldyaXRlKHJlc291cmNlSWQpKTsKKyAgICBtX3NrQ2FudmFzLnNldEJpdG1hcERldmljZShtX3Nr
Qml0bWFwKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2Fy
ZTo6flNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlkZXIt
PnVubG9ja0ZvcldyaXRlKG1fcmVzb3VyY2VJZCk7CiB9CiAKIENDUmVzb3VyY2VQcm92aWRlcjo6
Q0NSZXNvdXJjZVByb3ZpZGVyKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX25leHRJZCgxKQorICAgICwgbV9kZWZhdWx0UmVzb3Vy
Y2VUeXBlKEdMVGV4dHVyZSkKICAgICAsIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQoZmFsc2UpCiAg
ICAgLCBtX3VzZVRleHR1cmVVc2FnZUhpbnQoZmFsc2UpCiAgICAgLCBtX3VzZVNoYWxsb3dGbHVz
aChmYWxzZSkKLSAgICAsIG1fbWF4VGV4dHVyZVNpemUoMCkKKyAgICAsIG1fbWF4VGV4dHVyZVNp
emUoSU5UX01BWCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaAppbmRl
eCBhZGQ5MDllNWJmZWE1MDA3NWY2NzYyMjc5ZDY1ODliMzIzMWMwZTI1Li41OTU5NWRkMDM5ZGNk
ZTU2MmU2ZmY5YTFhZmMwYjU5MjY2Nzc4ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJv
dmlkZXIuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU2tCaXRtYXAuaCIKKyNpbmNsdWRl
ICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00Miw4ICs0NCw2
IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZDsKLWNsYXNzIENDU2NvcGVkTG9ja1Jl
c291cmNlRm9yV3JpdGU7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTGF5ZXJUZXh0dXJlU3ViSW1h
Z2U7CiAKQEAgLTU0LDYgKzU0LDEwIEBAIGNsYXNzIENDUmVzb3VyY2VQcm92aWRlciB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBSZXNvdXJjZUlkOwogICAgIGVudW0gVGV4dHVyZVVz
YWdlSGludCB7IFRleHR1cmVVc2FnZUFueSwgVGV4dHVyZVVzYWdlRnJhbWVidWZmZXIgfTsKKyAg
ICBlbnVtIFJlc291cmNlVHlwZSB7CisgICAgICAgIEdMVGV4dHVyZSwKKyAgICAgICAgQml0bWFw
LAorICAgIH07CiAKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IGNy
ZWF0ZShDQ0dyYXBoaWNzQ29udGV4dCopOwogCkBAIC02OSwxMSArNzMsMTkgQEAgcHVibGljOgog
CiAgICAgLy8gUHJvZHVjZXIgaW50ZXJmYWNlLgogCi0gICAgLy8gQ3JlYXRlcyBhIHJlc291cmNl
IG9mIHRoZSBnaXZlbiBzaXplL2Zvcm1hdCwgaW50byB0aGUgZ2l2ZW4gcG9vbC4KKyAgICB2b2lk
IHNldERlZmF1bHRSZXNvdXJjZVR5cGUoUmVzb3VyY2VUeXBlIHR5cGUpIHsgbV9kZWZhdWx0UmVz
b3VyY2VUeXBlID0gdHlwZTsgfQorICAgIFJlc291cmNlVHlwZSBkZWZhdWx0UmVzb3VyY2VUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UmVzb3VyY2VUeXBlOyB9CisgICAgUmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZShSZXNvdXJjZUlkKTsKKworICAgIC8vIENyZWF0ZXMgYSByZXNvdXJj
ZSBvZiB0aGUgZGVmYXVsdCByZXNvdXJjZSB0eXBlLgogICAgIFJlc291cmNlSWQgY3JlYXRlUmVz
b3VyY2UoaW50IHBvb2wsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVV
c2FnZUhpbnQpOwogCi0gICAgLy8gV3JhcHMgYW4gZXh0ZXJuYWwgdGV4dHVyZSBpbnRvIGEgcmVz
b3VyY2UuCisgICAgLy8gWW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgY3JlYXRlIGEgc3BlY2lmaWMg
cmVzb3VyY2UgdHlwZS4KKyAgICBSZXNvdXJjZUlkIGNyZWF0ZUdMVGV4dHVyZShpbnQgcG9vbCwg
Y29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCk7CisgICAg
UmVzb3VyY2VJZCBjcmVhdGVCaXRtYXAoaW50IHBvb2wsIGNvbnN0IEludFNpemUmKTsKKyAgICAv
LyBXcmFwcyBhbiBleHRlcm5hbCB0ZXh0dXJlIGludG8gYSBHTCByZXNvdXJjZS4KICAgICBSZXNv
dXJjZUlkIGNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJl
SWQpOworCiAgICAgdm9pZCBkZWxldGVSZXNvdXJjZShSZXNvdXJjZUlkKTsKIAogICAgIC8vIERl
bGV0ZXMgYWxsIHJlc291cmNlcyBvd25lZCBieSBhIGdpdmVuIHBvb2wuCkBAIC05MCwzNiArMTAy
LDk1IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNoYWxsb3cgZmx1c2gg
b2NjdXJyZWQsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIHNoYWxsb3dGbHVzaElmU3VwcG9y
dGVkKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yUmVhZDsKLSAgICBmcmllbmQgY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsK
KyAgICAvLyBUaGUgZm9sbG93aW5nIGxvY2sgY2xhc3NlcyBhcmUgcGFydCBvZiB0aGUgQ0NSZXNv
dXJjZVByb3ZpZGVyIEFQSSBhbmQgYXJlCisgICAgLy8gbmVlZGVkIHRvIHJlYWQgYW5kIHdyaXRl
IHRoZSByZXNvdXJjZSBjb250ZW50cy4gVGhlIHVzZXIgbXVzdCBlbnN1cmUKKyAgICAvLyB0aGF0
IHRoZXkgb25seSB1c2UgR0wgbG9ja3Mgb24gR0wgcmVzb3VyY2VzLCBldGMsIGFuZCB0aGlzIGlz
IGVuZm9yY2VkCisgICAgLy8gYnkgYXNzZXJ0aW9ucy4KKyAgICBjbGFzcyBTY29wZWRSZWFkTG9j
a0dMIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVhZExvY2tHTCk7Cisg
ICAgcHVibGljOgorICAgICAgICBTY29wZWRSZWFkTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlcios
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCk7CisgICAgICAgIH5TY29wZWRSZWFkTG9j
a0dMKCk7CisKKyAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0dXJlSWQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciog
bV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgbV9yZXNvdXJjZUlkOworICAgICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICB9Owor
CisgICAgY2xhc3MgU2NvcGVkV3JpdGVMb2NrR0wgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY29wZWRXcml0ZUxvY2tHTCk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRXcml0
ZUxvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQpOworICAgICAgICB+U2NvcGVkV3JpdGVMb2NrR0woKTsKKworICAgICAgICB1bnNpZ25lZCB0
ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgICAgIHVu
c2lnbmVkIG1fdGV4dHVyZUlkOworICAgIH07CisKKyAgICBjbGFzcyBTY29wZWRSZWFkTG9ja1Nv
ZnR3YXJlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVhZExvY2tTb2Z0
d2FyZSk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRSZWFkTG9ja1NvZnR3YXJlKENDUmVz
b3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCk7CisgICAgICAg
IH5TY29wZWRSZWFkTG9ja1NvZnR3YXJlKCk7CisKKyAgICAgICAgY29uc3QgU2tCaXRtYXAqIHNr
Qml0bWFwKCkgY29uc3QgeyByZXR1cm4gJm1fc2tCaXRtYXA7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOworICAgICAgICBTa0Jp
dG1hcCBtX3NrQml0bWFwOworICAgIH07CisKKyAgICBjbGFzcyBTY29wZWRXcml0ZUxvY2tTb2Z0
d2FyZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFdyaXRlTG9ja1NvZnR3
YXJlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKENDUmVz
b3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCk7CisgICAgICAg
IH5TY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSgpOworCisgICAgICAgIFNrQ2FudmFzKiBza0NhbnZh
cygpIHsgcmV0dXJuICZtX3NrQ2FudmFzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgU2tCaXRtYXAgbV9za0Jp
dG1hcDsKKyAgICAgICAgU2tDYW52YXMgbV9za0NhbnZhczsKKyAgICB9OwogCitwcml2YXRlOgog
ICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIHVuc2lnbmVkIGdsSWQ7CisgICAgICAgIHVp
bnQ4X3QqIHBpeGVsczsKICAgICAgICAgaW50IHBvb2w7CiAgICAgICAgIGludCBsb2NrRm9yUmVh
ZENvdW50OwogICAgICAgICBib29sIGxvY2tlZEZvcldyaXRlOwogICAgICAgICBib29sIGV4dGVy
bmFsOwogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKKyAg
ICAgICAgUmVzb3VyY2VUeXBlIHR5cGU7CiAgICAgfTsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVz
b3VyY2VJZCwgUmVzb3VyY2U+IFJlc291cmNlTWFwOwogCiAgICAgZXhwbGljaXQgQ0NSZXNvdXJj
ZVByb3ZpZGVyKENDR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAK
LSAgICAvLyBHZXRzIGEgR0wgdGV4dHVyZSBpZCByZXByZXNlbnRpbmcgdGhlIHJlc291cmNlLCB0
aGF0IGNhbiBiZSByZW5kZXJlZCBpbnRvLgotICAgIHVuc2lnbmVkIGxvY2tGb3JXcml0ZShSZXNv
dXJjZUlkKTsKLSAgICB2b2lkIHVubG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOwotCi0gICAgLy8g
R2V0cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50aW5nIHRoZSByZXNvdXJjZSwgdGhhdCBjYW4g
YmUgcmVuZGVyZWQgd2l0aC4KLSAgICB1bnNpZ25lZCBsb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsK
KyAgICBjb25zdCBSZXNvdXJjZSogbG9ja0ZvclJlYWQoUmVzb3VyY2VJZCk7CiAgICAgdm9pZCB1
bmxvY2tGb3JSZWFkKFJlc291cmNlSWQpOworICAgIGNvbnN0IFJlc291cmNlKiBsb2NrRm9yV3Jp
dGUoUmVzb3VyY2VJZCk7CisgICAgdm9pZCB1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKKyAg
ICBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKFNrQml0bWFwKiwgY29u
c3QgUmVzb3VyY2UqKTsKIAogICAgIENDR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CiAgICAg
UmVzb3VyY2VJZCBtX25leHRJZDsKICAgICBSZXNvdXJjZU1hcCBtX3Jlc291cmNlczsKIAorICAg
IFJlc291cmNlVHlwZSBtX2RlZmF1bHRSZXNvdXJjZVR5cGU7CiAgICAgYm9vbCBtX3VzZVRleHR1
cmVTdG9yYWdlRXh0OwogICAgIGJvb2wgbV91c2VUZXh0dXJlVXNhZ2VIaW50OwogICAgIGJvb2wg
bV91c2VTaGFsbG93Rmx1c2g7CkBAIC0xMjcsNDcgKzE5OCw2IEBAIHByaXZhdGU6CiAgICAgaW50
IG1fbWF4VGV4dHVyZVNpemU7CiB9OwogCi1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJl
YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVh
ZCk7Ci1wdWJsaWM6Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IHJlc291cmNlSWQpCi0gICAgICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlk
ZXIpCi0gICAgICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCi0gICAgICAgICwgbV90ZXh0
dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCkpIHsgfQotCi0g
ICAgfkNDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCgpCi0gICAgewotICAgICAgICBtX3Jlc291
cmNlUHJvdmlkZXItPnVubG9ja0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKLSAgICB9Ci0KLSAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotCi1wcml2
YXRlOgotICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwotICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7Ci0gICAgdW5zaWduZWQg
bV90ZXh0dXJlSWQ7Ci19OwotCi1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKTsK
LXB1YmxpYzoKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJl
c291cmNlSWQpCi0gICAgICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIp
Ci0gICAgICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCi0gICAgICAgICwgbV90ZXh0dXJl
SWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvcldyaXRlKHJlc291cmNlSWQpKSB7IH0KLQotICAg
IH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKCkKLSAgICB7Ci0gICAgICAgIG1fcmVzb3Vy
Y2VQcm92aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKLSAgICB9Ci0KLSAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotCi1wcml2
YXRlOgotICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwotICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7Ci0gICAgdW5zaWduZWQg
bV90ZXh0dXJlSWQ7Ci19OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCmluZGV4IDQyMjc3NDU5YWVlMDc0
MWE5NmIyMzNhNTJlM2E2MGY4MjFiNDgwYTQuLmM1ODIxMzdmZDg2MjViZmI3MTE3YzFiODVlZjdh
YWIxZGY0MTVmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0UmVzb3VyY2VQaXhlbHMoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIGlkLCBjb25zdCBJbnRTaXplJiBzaXplLCBXR0MzRGVudW0gZm9ybWF0LCB1aW50OF90KiBw
aXhlbHMpCiAgICAgewotICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayht
X3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkKTsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpTY29wZWRSZWFkTG9ja0dMIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7CiAg
ICAgICAgIEFTU0VSVF9ORSgwVSwgbG9jay50ZXh0dXJlSWQoKSk7CiAgICAgICAgIGNvbnRleHQo
KS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVy
ZUlkKCkpOwogICAgICAgICBjb250ZXh0KCktPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHBpeGVs
cyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158670</attachid>
            <date>2012-08-15 17:32:02 -0700</date>
            <delta_ts>2012-08-17 12:46:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120815173128.patch</filename>
            <type>text/plain</type>
            <size>37474</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWMzNjhiMzRmMzFhYzRj
MmFiN2U5ZGE0ZGZiMDAyZGI0ZTAyNDg1Yy4uYWI0NGRhMzNjNTQ1ZTNjMzVjOTAzY2M0NjY0ZWQ3
ZGU2YzIxNTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTA4LTE1ICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFi
aWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAg
ICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQg
YXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIEFzIGRpc2N1c3NlZCBpbiBCdWcgOTM0NDIsIHdl
IHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIgdG8gYmUgYWJsZQorICAgICAgICB0byBoYW5kbGUg
ZGlmZmVyZW50IHJlc291cmNlIHR5cGVzIGF0IHRoZSBzYW1lIHRpbWUuICBJbiBwcmFjdGljZSwg
YQorICAgICAgICBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMgZGVzaXJlZCBmb3IgbW9zdCB1c2Vz
IHdpdGhpbiBhIHNpbmdsZQorICAgICAgICBjb21wb3NpdG9yIGluc3RhbmNlIC0tIHRoZSBkZWZh
dWx0IHJlc291cmNlIHR5cGUgIGRldGVybWluZXMgd2hhdCB0aGF0CisgICAgICAgIHR5cGUgaXMu
ICBEZWZhdWx0IHJlc291cmNlIHR5cGVzIGFyZSBleHBlY3RlZCB0byBiZSBtb3N0bHkgMS10by0x
IHdpdGgKKyAgICAgICAgQ0NSZW5kZXJlciB0eXBlcy4KKworICAgICAgICBOZXcgdGVzdHMgYWRk
ZWQgYnkgcGFyYW1ldHJpemluZyBleGlzdGluZyBDQ1Jlc291cmNlUHJvdmlkZXIgdGVzdHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZl
clRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5k
RnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoRHJhd2luZ0ZyYW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92
aWRlcjo6Y3JlYXRlR0xUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92
aWRlcjo6Y3JlYXRlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6
OnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQ
cm92aWRlcjo6bG9ja0ZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3Zp
ZGVyOjp1bmxvY2tGb3JSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6bG9ja0ZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
dW5sb2NrRm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRSZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6flNjb3BlZFJlYWRMb2NrR0wpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTDo6
U2NvcGVkV3JpdGVMb2NrR0wpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVy
OjpTY29wZWRXcml0ZUxvY2tHTDo6flNjb3BlZFdyaXRlTG9ja0dMKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdh
cmU6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjp+U2NvcGVkUmVhZExvY2tTb2Z0d2Fy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9j
a1NvZnR3YXJlOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlOjp+U2NvcGVkV3JpdGVM
b2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpDQ1Jl
c291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVzb3VyY2VQcm92aWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnNldENyZWF0aW9uUG9saWN5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRpb25Qb2xpY3kpOgorICAgICAgICAoQ0NS
ZXNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKFNjb3BlZFJlYWRMb2NrR0wpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjp0ZXh0dXJlSWQp
OgorICAgICAgICAoU2NvcGVkV3JpdGVMb2NrR0wpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTDo6dGV4dHVyZUlkKToKKyAgICAgICAgKFNj
b3BlZFJlYWRMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3Zp
ZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjpza0JpdG1hcCk6CisgICAgICAgIChTY29wZWRX
cml0ZUxvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6
OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlOjpza0NhbnZhcyk6CisgICAgICAgIChSZXNvdXJjZSk6
CisKIDIwMTItMDgtMTUgIE90dG8gRGVyZWsgQ2hldW5nICA8b3RjaGV1bmdAcmltLmNvbT4KIAog
ICAgICAgICBbQmxhY2tCZXJyeV0gU2hvdyBjdXN0b20gZXJyb3IgcGFnZSB3aGVuIDQwNyBpcyBy
ZWNlaXZlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzODJhZTFjNDE0OTExYWIyN2Jl
ZmUxZjRkMjg0MjcwYWFlMzYxMDQwLi5iMTk3OGI0YzI4MmUzZmNkMTAwZjFiMzkzMjVkODdmOGJh
ZDYzMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEy
LTA4LTE1ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBb
Y2hyb21pdW1dIEFkZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92
aWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGFkZHMgdGhlIGFiaWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBi
aXRtYXBzLgorICAgICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwg
YW5kIGV4cG9zZWQgYXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIEFzIGRpc2N1c3NlZCBpbiBC
dWcgOTM0NDIsIHdlIHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIgdG8gYmUgYWJsZQorICAgICAg
ICB0byBoYW5kbGUgZGlmZmVyZW50IHJlc291cmNlIHR5cGVzIGF0IHRoZSBzYW1lIHRpbWUuICBJ
biBwcmFjdGljZSwgYQorICAgICAgICBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMgZGVzaXJlZCBm
b3IgbW9zdCB1c2VzIHdpdGhpbiBhIHNpbmdsZQorICAgICAgICBjb21wb3NpdG9yIGluc3RhbmNl
IC0tIHRoZSBkZWZhdWx0IHJlc291cmNlIHR5cGUgIGRldGVybWluZXMgd2hhdCB0aGF0CisgICAg
ICAgIHR5cGUgaXMuICBEZWZhdWx0IHJlc291cmNlIHR5cGVzIGFyZSBleHBlY3RlZCB0byBiZSBt
b3N0bHkgMS10by0xIHdpdGgKKyAgICAgICAgQ0NSZW5kZXJlciB0eXBlcy4KKworICAgICAgICBO
ZXcgdGVzdHMgYWRkZWQgYnkgcGFyYW1ldHJpemluZyBleGlzdGluZyBDQ1Jlc291cmNlUHJvdmlk
ZXIgdGVzdHMuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdDo6Z2V0UmVzb3VyY2VQaXhl
bHMpOgorCiAyMDEyLTA4LTE1ICBCcnVubyBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFi
aW5hZGVyQGJhc3lza29tLmNvbT4KIAogICAgICAgICBbY3NzMy10ZXh0XSBBZGQgQ1NTMyBUZXh0
IGRlY29yYXRpb24gY29tcGlsZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRl
eCBhMGU4NTdlOWQ0YmM1ZWE3OTI0OTI5NWY5MDYxYmY0YWRkZjI1MzQ3Li5mYzUwMmI3NzBjYjZm
M2FjYTMxZjllNTZlMzgzNWI5ODQ5NTE3Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoV2ViR3JhcGhpYwogICAgIGNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgdGV4dHVyZS0+YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlKHJlc291cmNlUHJvdmlkZXIpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3Jp
dGUgbG9jayhyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOworICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0wgbG9jayhyZXNvdXJjZVByb3ZpZGVy
LCB0ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOwogICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBj
YW52YXMgdG8gZHJhdyBvbi4KICAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFj
Y2VsZXJhdGVkQ2FudmFzKGdyQ29udGV4dCwgdGV4dHVyZS0+c2l6ZSgpLCBsb2NrLnRleHR1cmVJ
ZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNDIwOWRj
NjU0NDVkMWM2OWM3ZWY2MmM4YjBmMTU1NmE5MWQ2NDUyYS4uYzA5NjBlYWZhNzM1MDE5YjBjMzEw
ZDZjNWU1ZmUyOGQ0NGZlYmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCkBAIC01NDIsNyArNTQyLDcgQEAgc3RhdGljIGlubGluZSBTa0JpdG1hcCBhcHBseUZpbHRl
cnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogCiAgICAgbGF5
ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVzaCgpOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JXcml0ZSBsb2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJvdmlkZXIoKSwgc291cmNl
VGV4dHVyZS0+aWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tH
TCBsb2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJvdmlkZXIoKSwgc291cmNlVGV4dHVyZS0+
aWQoKSk7CiAgICAgU2tCaXRtYXAgc291cmNlID0gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBw
bHkoZmlsdGVycywgbG9jay50ZXh0dXJlSWQoKSwgc291cmNlVGV4dHVyZS0+c2l6ZSgpLCBmaWx0
ZXJDb250ZXh0LCBmaWx0ZXJHckNvbnRleHQpOwogICAgIHJldHVybiBzb3VyY2U7CiB9CkBAIC02
NDQsMjAgKzY0NCwyMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBh
c3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAogICAgIC8vIEZJWE1FOiBD
YWNoZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3IgYm90aCB0
aGUgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUg
Y29udGVudHMgdGV4dHVyZS4KICAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRl
cnModGhpcywgcmVuZGVyUGFzcy0+ZmlsdGVycygpLCBjb250ZW50c1RleHR1cmUpOwotICAgIE93
blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOwor
ICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w+IGNvbnRlbnRz
UmVzb3VyY2VMb2NrOwogICAgIHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVyZUlkID0gMDsKICAgICBp
ZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSkgewogICAgICAgICBHclRleHR1cmUqIHRleHR1
cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJl
KCkpOwogICAgICAgICBjb250ZW50c1RleHR1cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5k
bGUoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb250ZW50c1Jlc291cmNlTG9jayA9IGFkb3B0
UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQobV9yZXNvdXJjZVByb3ZpZGVyLCBj
b250ZW50c1RleHR1cmUtPmlkKCkpKTsKKyAgICAgICAgY29udGVudHNSZXNvdXJjZUxvY2sgPSBh
ZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMKG1fcmVzb3Vy
Y2VQcm92aWRlciwgY29udGVudHNUZXh0dXJlLT5pZCgpKSk7CiAgICAgICAgIGNvbnRlbnRzVGV4
dHVyZUlkID0gY29udGVudHNSZXNvdXJjZUxvY2stPnRleHR1cmVJZCgpOwogICAgIH0KIAogICAg
IC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBpcyBvbmUuCiAgICAgaWYg
KGJhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5kVGV4dHVyZS0+
c2l6ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKLSAgICAgICAgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVy
ZS0+aWQoKSk7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBs
b2NrKG1fcmVzb3VyY2VQcm92aWRlciwgYmFja2dyb3VuZFRleHR1cmUtPmlkKCkpOwogICAgICAg
ICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZnJhbWUsIGxvY2sudGV4dHVyZUlkKCksIHF1YWQt
PnF1YWRSZWN0KCksIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSk7CiAgICAgfQogCkBAIC02NzQsMTAg
KzY3NCwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFk
KERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAogICAgICAgICBkZXZpY2VMYXllckVk
Z2VzLmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgpOwogICAgIH0KIAotICAgIE93blB0cjxD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IG1hc2tSZXNvdXJjZUxvY2s7CisgICAgT3duUHRy
PENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTD4gbWFza1Jlc291cmNlTG9jazsK
ICAgICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkID0gMDsKICAgICBpZiAocXVhZC0+bWFza1Jlc291
cmNlSWQoKSkgewotICAgICAgICBtYXNrUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIobmV3IENDU2Nv
cGVkTG9ja1Jlc291cmNlRm9yUmVhZChtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPm1hc2tSZXNv
dXJjZUlkKCkpKTsKKyAgICAgICAgbWFza1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFk
LT5tYXNrUmVzb3VyY2VJZCgpKSk7CiAgICAgICAgIG1hc2tUZXh0dXJlSWQgPSBtYXNrUmVzb3Vy
Y2VMb2NrLT50ZXh0dXJlSWQoKTsKICAgICB9CiAKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNv
bnN0IENDVGlsZURyYXdRdQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3Jh
bSh1bmlmb3Jtcy5wcm9ncmFtKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlm
b3JtMWkodW5pZm9ybXMuc2FtcGxlckxvY2F0aW9uLCAwKSk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwot
ICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3Vy
Y2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6
OlNjb3BlZFJlYWRMb2NrR0wgcXVhZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1
YWQtPnJlc291cmNlSWQoKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZFJlc291cmNlTG9jay50ZXh0
dXJlSWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUlOX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVy
KCkpKTsKQEAgLTk3NSw5ICs5NzUsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1lVVlZpZGVvUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1lVVlZpZAogICAgIGNv
bnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSA9IHF1YWQtPnVQbGFuZSgp
OwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSA9IHF1YWQt
PnZQbGFuZSgpOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHlQbGFuZUxvY2so
bV9yZXNvdXJjZVByb3ZpZGVyLCB5UGxhbmUucmVzb3VyY2VJZCk7Ci0gICAgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkIHVQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB1UGxhbmUucmVz
b3VyY2VJZCk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHZQbGFuZUxvY2sobV9y
ZXNvdXJjZVByb3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpTY29wZWRSZWFkTG9ja0dMIHlQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB5UGxh
bmUucmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dM
IHVQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB1UGxhbmUucmVzb3VyY2VJZCk7CisgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHZQbGFuZUxvY2sobV9yZXNvdXJj
ZVByb3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOwogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHlQbGFuZUxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUyKSk7CkBA
IC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1
cmVRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDVGV4dHVyZQogICAgIEdMQyhjb250
ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKGJpbmRpbmcudGV4VHJhbnNmb3JtTG9jYXRpb24s
IHV2UmVjdC54KCksIHV2UmVjdC55KCksIHV2UmVjdC53aWR0aCgpLCB1dlJlY3QuaGVpZ2h0KCkp
KTsKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQg
cXVhZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7
CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHF1YWRSZXNvdXJjZUxv
Y2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOwogICAgIEdMQyhjb250
ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIHF1YWRSZXNvdXJjZUxvY2sudGV4dHVyZUlkKCkpKTsKIAogICAgIC8vIEZJWE1FOiBzZXR0
aW5nIHRoZSB0ZXh0dXJlIHBhcmFtZXRlcnMgZXZlcnkgdGltZSBpcyByZWR1bmRhbnQuIE1vdmUg
dGhpcyBjb2RlIHNvbWV3aGVyZQpAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgYm9vbCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShDQ1Njb3BlZFRleHR1cmUqIHRleHR1
cmUsIGNvbnMKICAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKEND
UmVuZGVyZXI6OkltcGxQb29sLCBkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIGxvY2sobV9yZXNv
dXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFdyaXRlTG9ja0dMIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKTsK
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgdGV4dHVyZS0+Zm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lk
dGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgMCkpOwpAQCAtMTQyMyw3ICsxNDIzLDcgQEAgYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShEcmF3aW5n
RnJhbWUmIGZyYW1lLCBjb25zdAogICAgIEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKIAogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0gICAgZnJhbWUuY3Vy
cmVudEZyYW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZv
cldyaXRlKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkpOworICAgIGZyYW1lLmN1
cnJlbnRGcmFtZWJ1ZmZlckxvY2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRXcml0ZUxvY2tHTChtX3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpKTsKICAg
ICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBmcmFtZS5jdXJyZW50RnJhbWVidWZmZXJMb2NrLT50ZXh0
dXJlSWQoKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlk
LCAwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggMTc5MTAzMzU5
YTQ5YjRmOTcwOGI5MTRjOTgyYzBmY2VkYTUwNjA1Mi4uYmZlMDgzMTYzNDkxZjBlNGNmYmJhMDdl
ZDYzNmRjZTdlN2MwYWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAg
LTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJv
b3RSZW5kZXJQYXNzOwogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIGN1cnJlbnRSZW5kZXJQ
YXNzOwogICAgICAgICBjb25zdCBDQ1Njb3BlZFRleHR1cmUqIGN1cnJlbnRUZXh0dXJlOwotICAg
ICAgICBPd25QdHI8Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZT4gY3VycmVudEZyYW1lYnVm
ZmVyTG9jazsKKyAgICAgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVM
b2NrR0w+IGN1cnJlbnRGcmFtZWJ1ZmZlckxvY2s7CiAKICAgICAgICAgRmxvYXRSZWN0IHJvb3RE
YW1hZ2VSZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcAppbmRleCBh
MGJkMzdjYzhkNWFlODNhMDgzYjkxZGNkNzExYjk5MTk5N2YwZDcwLi4wNWI3MzgwMmVlNmFmMzc1
YWFmMWRjNWU5Mjg1NTZjNTY5ODAwM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92
aWRlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21p
dW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNybwogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1Yklt
YWdlLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogCiB1c2luZyBXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEOwpAQCAtODcsMTMgKzg4LDI0IEBAIGJvb2wgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjppblVzZUJ5Q29uc3VtZXIoUmVzb3VyY2VJZCBpZCkKIAogQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UoaW50IHBv
b2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGlu
dCBoaW50KQogeworICAgIHN3aXRjaCAobV9kZWZhdWx0UmVzb3VyY2VUeXBlKSB7CisgICAgY2Fz
ZSBHTFRleHR1cmU6CisgICAgICAgIHJldHVybiBjcmVhdGVHTFRleHR1cmUocG9vbCwgc2l6ZSwg
Zm9ybWF0LCBoaW50KTsKKyAgICBjYXNlIEJpdG1hcDoKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIHJldHVybiBjcmVhdGVCaXRtYXAo
cG9vbCwgc2l6ZSk7CisgICAgfQorCisgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gMDsKK30KKwor
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
R0xUZXh0dXJlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQs
IFRleHR1cmVVc2FnZUhpbnQgaGludCkKK3sKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IDA7CiAgICAgV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250
ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3
YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKGNv
bnRleHQzZCk7CiAgICAgR0xDKGNvbnRleHQzZCwgdGV4dHVyZUlkID0gY29udGV4dDNkLT5jcmVh
dGVUZXh0dXJlKCkpOwogICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOwogICAgIEdMQyhjb250
ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUikpOwpAQCAtMTA5LDcgKzEyMSwxOSBAQCBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwg
Y29ucwogICAgIH0gZWxzZQogICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleElt
YWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFLCAwKSk7CiAgICAgUmVzb3VyY2VJZCBpZCA9IG1fbmV4dElkKys7Ci0gICAgUmVzb3Vy
Y2UgcmVzb3VyY2UgPSB7dGV4dHVyZUlkLCBwb29sLCAwLCBmYWxzZSwgZmFsc2UsIHNpemUsIGZv
cm1hdH07CisgICAgUmVzb3VyY2UgcmVzb3VyY2UgPSB7dGV4dHVyZUlkLCAwLCBwb29sLCAwLCBm
YWxzZSwgZmFsc2UsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpHTFRleHR1cmUg
fTsKKyAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsKKyAgICByZXR1cm4gaWQ7Cit9
CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZUJpdG1hcChpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBBU1NFUlQo
Q0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworCisgICAgdWludDhfdCogcGl4ZWxzID0gbmV3IHVp
bnQ4X3Rbc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDRdOworCisgICAgUmVzb3VyY2VJ
ZCBpZCA9IG1fbmV4dElkKys7CisgICAgUmVzb3VyY2UgcmVzb3VyY2UgPSB7MCwgcGl4ZWxzLCBw
b29sLCAwLCBmYWxzZSwgZmFsc2UsIHNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jl
c291cmNlUHJvdmlkZXI6OkJpdG1hcH07CiAgICAgbV9yZXNvdXJjZXMuYWRkKGlkLCByZXNvdXJj
ZSk7CiAgICAgcmV0dXJuIGlkOwogfQpAQCAtMTE4LDcgKzE0Miw3IEBAIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlRnJvbUV4
dGVybmFsVGV4CiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBS
ZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQrKzsKLSAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0ZXh0
dXJlSWQsIDAsIDAsIGZhbHNlLCB0cnVlLCBJbnRTaXplKCksIDB9OworICAgIFJlc291cmNlIHJl
c291cmNlID0ge3RleHR1cmVJZCwgMCwgMCwgMCwgZmFsc2UsIHRydWUsIEludFNpemUoKSwgMCwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpHTFRleHR1cmV9OwogICAgIG1fcmVzb3VyY2VzLmFkZChpZCwg
cmVzb3VyY2UpOwogICAgIHJldHVybiBpZDsKIH0KQEAgLTEyNiwxNSArMTUwLDE1IEBAIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291
cmNlRnJvbUV4dGVybmFsVGV4CiB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3Vy
Y2UoUmVzb3VyY2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OwotICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRl
eHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlk
KTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9j
a2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7Ci0gICAgaWYgKCFp
dC0+c2Vjb25kLmV4dGVybmFsKQorCisgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQz
ZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKGNvbnRleHQzZCAmJiAhaXQtPnNl
Y29uZC5leHRlcm5hbCkKICAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5kZWxldGVU
ZXh0dXJlKGl0LT5zZWNvbmQuZ2xJZCkpOworICAgIGlmIChpdC0+c2Vjb25kLnBpeGVscykKKyAg
ICAgICAgZGVsZXRlIGl0LT5zZWNvbmQucGl4ZWxzOworCiAgICAgbV9yZXNvdXJjZXMucmVtb3Zl
KGl0KTsKIH0KIApAQCAtMTUwLDcxICsxNzQsNjcgQEAgdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6
OmRlbGV0ZU93bmVkUmVzb3VyY2VzKGludCBwb29sKQogICAgICAgICBkZWxldGVSZXNvdXJjZSgq
aXQpOwogfQogCi12b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dXBsb2FkKFJlc291cmNlSWQgaWQs
IGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZVR5cGUgQ0NSZXNvdXJjZVByb3ZpZGVyOjpyZXNvdXJjZVR5cGUoUmVz
b3VyY2VJZCBpZCkKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAg
IEFTU0VSVChtX3RleFN1YkltYWdlLmdldCgpKTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkg
ewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29t
cG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxv
Y2tGb3JSZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotCi0gICAgY29udGV4dDNk
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5n
bElkKTsKLSAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNl
UmVjdCwgZGVzdFJlY3QsIGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOworICAgIEFTU0VS
VChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQudHlwZTsK
IH0KIAotdW5zaWduZWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUoUmVzb3VyY2VJ
ZCBpZCkKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29u
c3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgQVNTRVJUKEND
UHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkg
JiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRD
b3VudCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7Ci0gICAgaXQtPnNlY29uZC5sb2NrZWRGb3JX
cml0ZSA9IHRydWU7Ci0gICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2xJZDsKLX0KIAotdm9pZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OnVubG9ja0ZvcldyaXRlKFJlc291cmNlSWQgaWQpCi17Ci0gICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKLSAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMu
ZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5leHRlcm5h
bCk7Ci0gICAgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSA9IGZhbHNlOworICAgIGlmIChpdC0+
c2Vjb25kLmdsSWQpIHsKKyAgICAgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9
IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgICAgIEFTU0VSVChjb250ZXh0M2QpOworICAg
ICAgICBBU1NFUlQobV90ZXhTdWJJbWFnZS5nZXQoKSk7CisgICAgICAgIGNvbnRleHQzZC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGl0LT5zZWNvbmQuZ2xJZCk7
CisgICAgICAgIG1fdGV4U3ViSW1hZ2UtPnVwbG9hZChpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAgfQorCisg
ICAgaWYgKGl0LT5zZWNvbmQucGl4ZWxzKSB7CisgICAgICAgIFNrQml0bWFwIHNyY0Z1bGw7Cisg
ICAgICAgIHNyY0Z1bGwuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgaW1h
Z2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNyY0Z1bGwuc2V0
UGl4ZWxzKGNvbnN0X2Nhc3Q8dWludDhfdCo+KGltYWdlKSk7CisgICAgICAgIFNrQml0bWFwIHNy
Y1N1YnNldDsKKyAgICAgICAgU2tJUmVjdCBza1NvdXJjZVJlY3QgPSBTa0lSZWN0OjpNYWtlWFlX
SChzb3VyY2VSZWN0LngoKSwgc291cmNlUmVjdC55KCksIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291
cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNyY0Z1bGwuZXh0cmFjdFN1YnNldCgmc3JjU3Vi
c2V0LCBza1NvdXJjZVJlY3QpOworCisgICAgICAgIFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlIGxv
Y2sodGhpcywgaWQpOworICAgICAgICBTa0NhbnZhcyogZGVzdCA9IGxvY2suc2tDYW52YXMoKTsK
KyAgICAgICAgZGVzdC0+d3JpdGVQaXhlbHMoc3JjU3Vic2V0LCBkZXN0UmVjdC54KCksIGRlc3RS
ZWN0LnkoKSk7CisgICAgfQogfQogCiB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6Zmx1c2goKQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFj
b250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNv
ZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnRleHQz
ZC0+Zmx1c2goKTsKKyAgICBpZiAoY29udGV4dDNkKQorICAgICAgICBjb250ZXh0M2QtPmZsdXNo
KCk7CiB9CiAKIGJvb2wgQ0NSZXNvdXJjZVByb3ZpZGVyOjpzaGFsbG93Rmx1c2hJZlN1cHBvcnRl
ZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBp
ZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBm
b3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgaWYgKCFjb250ZXh0M2QgfHwgIW1fdXNlU2hh
bGxvd0ZsdXNoKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCi0gICAgaWYgKG1fdXNl
U2hhbGxvd0ZsdXNoKQotICAgICAgICBjb250ZXh0M2QtPnNoYWxsb3dGbHVzaENIUk9NSVVNKCk7
Ci0gICAgcmV0dXJuIG1fdXNlU2hhbGxvd0ZsdXNoOworICAgIGNvbnRleHQzZC0+c2hhbGxvd0Zs
dXNoQ0hST01JVU0oKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdW5zaWduZWQgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpsb2NrRm9yUmVhZChSZXNvdXJjZUlkIGlkKQorY29uc3QgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZSogQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yUmVhZChSZXNvdXJj
ZUlkIGlkKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVz
b3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CiAgICAgQVNTRVJU
KGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlKTsK
LSAgICArKyhpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOwotICAgIHJldHVybiBpdC0+c2Vj
b25kLmdsSWQ7CisgICAgaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50Kys7CisgICAgcmV0dXJu
ICZpdC0+c2Vjb25kOwogfQogCiB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yUmVh
ZChSZXNvdXJjZUlkIGlkKQpAQCAtMjIyLDE2ICsyNDIsOTMgQEAgdm9pZCBDQ1Jlc291cmNlUHJv
dmlkZXI6OnVubG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3Vy
Y2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+
c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQgPiAwKTsKLSAgICAtLShpdC0+c2Vjb25kLmxvY2tGb3JS
ZWFkQ291bnQpOworICAgIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudC0tOworfQorCitjb25z
dCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlKiBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tG
b3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChp
ZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxv
Y2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQgJiYgIWl0LT5zZWNv
bmQuZXh0ZXJuYWwpOworICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSB0cnVlOworICAg
IHJldHVybiAmaXQtPnNlY29uZDsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9j
a0ZvcldyaXRlKFJlc291cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKKyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5k
KGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5s
b2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7CisgICAgaXQtPnNlY29uZC5s
b2NrZWRGb3JXcml0ZSA9IGZhbHNlOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJl
YWRMb2NrR0w6OlNjb3BlZFJlYWRMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKKyAgICA6
IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9yZXNvdXJjZUlk
KHJlc291cmNlSWQpCisgICAgLCBtX3RleHR1cmVJZChyZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9y
UmVhZChyZXNvdXJjZUlkKS0+Z2xJZCkKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlSWQpOworfQor
CitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6On5TY29wZWRSZWFkTG9ja0dM
KCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvclJlYWQobV9yZXNvdXJjZUlk
KTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTDo6U2NvcGVkV3Jp
dGVMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNl
UHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRl
cihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCisgICAg
LCBtX3RleHR1cmVJZChyZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yV3JpdGUocmVzb3VyY2VJZCkt
PmdsSWQpCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpTY29wZWRXcml0ZUxvY2tHTDo6flNjb3BlZFdyaXRlTG9ja0dMKCkKK3sKKyAgICBtX3Jl
c291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRlKG1fcmVzb3VyY2VJZCk7Cit9CisKK3ZvaWQg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKFNrQml0bWFw
KiBza0JpdG1hcCwgY29uc3QgUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIEFTU0VSVChyZXNv
dXJjZS0+cGl4ZWxzKTsKKyAgICBBU1NFUlQocmVzb3VyY2UtPmZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSk7CisgICAgc2tCaXRtYXAtPnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0Jf
ODg4OF9Db25maWcsIHJlc291cmNlLT5zaXplLndpZHRoKCksIHJlc291cmNlLT5zaXplLmhlaWdo
dCgpKTsKKyAgICBza0JpdG1hcC0+c2V0UGl4ZWxzKHJlc291cmNlLT5waXhlbHMpOworfQorCitD
Q1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6OlNjb3BlZFJlYWRMb2Nr
U29mdHdhcmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNl
UHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRl
cihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCit7Cisg
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKCZtX3Nr
Qml0bWFwLCByZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yUmVhZChyZXNvdXJjZUlkKSk7Cit9CisK
K0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZTo6flNjb3BlZFJlYWRM
b2NrU29mdHdhcmUoKQoreworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yUmVhZCht
X3Jlc291cmNlSWQpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja1Nv
ZnR3YXJlOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQor
ICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCisgICAgLCBtX3Jlc291
cmNlSWQocmVzb3VyY2VJZCkKK3sKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OnBvcHVsYXRlU2tC
aXRtYXBXaXRoUmVzb3VyY2UoJm1fc2tCaXRtYXAsIHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JX
cml0ZShyZXNvdXJjZUlkKSk7CisgICAgbV9za0NhbnZhcy5zZXRCaXRtYXBEZXZpY2UobV9za0Jp
dG1hcCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6
On5TY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51
bmxvY2tGb3JXcml0ZShtX3Jlc291cmNlSWQpOwogfQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OkND
UmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQogICAgICwgbV9uZXh0SWQoMSkKKyAgICAsIG1fZGVmYXVsdFJlc291cmNl
VHlwZShHTFRleHR1cmUpCiAgICAgLCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0KGZhbHNlKQogICAg
ICwgbV91c2VUZXh0dXJlVXNhZ2VIaW50KGZhbHNlKQogICAgICwgbV91c2VTaGFsbG93Rmx1c2go
ZmFsc2UpCi0gICAgLCBtX21heFRleHR1cmVTaXplKDApCisgICAgLCBtX21heFRleHR1cmVTaXpl
KElOVF9NQVgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKaW5kZXgg
YWRkOTA5ZTViZmVhNTAwNzVmNjc2MjI3OWQ2NTg5YjMyMzFjMGUyNS4uNTk1OTVkZDAzOWRjZGU1
NjJlNmZmOWExYWZjMGI1OTI2Njc3OGU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlNrQml0bWFwLmgiCisjaW5jbHVkZSAi
U2tDYW52YXMuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDIsOCArNDQsNiBA
QCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ7Ci1jbGFzcyBDQ1Njb3BlZExvY2tSZXNv
dXJjZUZvcldyaXRlOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIExheWVyVGV4dHVyZVN1YkltYWdl
OwogCkBAIC01NCw2ICs1NCwxMCBAQCBjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXIgewogcHVibGlj
OgogICAgIHR5cGVkZWYgdW5zaWduZWQgUmVzb3VyY2VJZDsKICAgICBlbnVtIFRleHR1cmVVc2Fn
ZUhpbnQgeyBUZXh0dXJlVXNhZ2VBbnksIFRleHR1cmVVc2FnZUZyYW1lYnVmZmVyIH07CisgICAg
ZW51bSBSZXNvdXJjZVR5cGUgeworICAgICAgICBHTFRleHR1cmUsCisgICAgICAgIEJpdG1hcCwK
KyAgICB9OwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBjcmVh
dGUoQ0NHcmFwaGljc0NvbnRleHQqKTsKIApAQCAtNjksMTEgKzczLDE5IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFByb2R1Y2VyIGludGVyZmFjZS4KIAotICAgIC8vIENyZWF0ZXMgYSByZXNvdXJjZSBv
ZiB0aGUgZ2l2ZW4gc2l6ZS9mb3JtYXQsIGludG8gdGhlIGdpdmVuIHBvb2wuCisgICAgdm9pZCBz
ZXREZWZhdWx0UmVzb3VyY2VUeXBlKFJlc291cmNlVHlwZSB0eXBlKSB7IG1fZGVmYXVsdFJlc291
cmNlVHlwZSA9IHR5cGU7IH0KKyAgICBSZXNvdXJjZVR5cGUgZGVmYXVsdFJlc291cmNlVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFJlc291cmNlVHlwZTsgfQorICAgIFJlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUoUmVzb3VyY2VJZCk7CisKKyAgICAvLyBDcmVhdGVzIGEgcmVzb3VyY2Ug
b2YgdGhlIGRlZmF1bHQgcmVzb3VyY2UgdHlwZS4KICAgICBSZXNvdXJjZUlkIGNyZWF0ZVJlc291
cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNh
Z2VIaW50KTsKIAotICAgIC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUgaW50byBhIHJlc291
cmNlLgorICAgIC8vIFlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGNyZWF0ZSBhIHNwZWNpZmljIHJl
c291cmNlIHR5cGUuCisgICAgUmVzb3VyY2VJZCBjcmVhdGVHTFRleHR1cmUoaW50IHBvb2wsIGNv
bnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQpOworICAgIFJl
c291cmNlSWQgY3JlYXRlQml0bWFwKGludCBwb29sLCBjb25zdCBJbnRTaXplJik7CisgICAgLy8g
V3JhcHMgYW4gZXh0ZXJuYWwgdGV4dHVyZSBpbnRvIGEgR0wgcmVzb3VyY2UuCiAgICAgUmVzb3Vy
Y2VJZCBjcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlk
KTsKKwogICAgIHZvaWQgZGVsZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCk7CiAKICAgICAvLyBEZWxl
dGVzIGFsbCByZXNvdXJjZXMgb3duZWQgYnkgYSBnaXZlbiBwb29sLgpAQCAtOTAsMzYgKzEwMiw5
NSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzaGFsbG93IGZsdXNoIG9j
Y3VycmVkLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBzaGFsbG93Rmx1c2hJZlN1cHBvcnRl
ZCgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZv
clJlYWQ7Ci0gICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGU7Cisg
ICAgLy8gVGhlIGZvbGxvd2luZyBsb2NrIGNsYXNzZXMgYXJlIHBhcnQgb2YgdGhlIENDUmVzb3Vy
Y2VQcm92aWRlciBBUEkgYW5kIGFyZQorICAgIC8vIG5lZWRlZCB0byByZWFkIGFuZCB3cml0ZSB0
aGUgcmVzb3VyY2UgY29udGVudHMuIFRoZSB1c2VyIG11c3QgZW5zdXJlCisgICAgLy8gdGhhdCB0
aGV5IG9ubHkgdXNlIEdMIGxvY2tzIG9uIEdMIHJlc291cmNlcywgZXRjLCBhbmQgdGhpcyBpcyBl
bmZvcmNlZAorICAgIC8vIGJ5IGFzc2VydGlvbnMuCisgICAgY2xhc3MgU2NvcGVkUmVhZExvY2tH
TCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlYWRMb2NrR0wpOworICAg
IHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVhZExvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIqLCBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAgICB+U2NvcGVkUmVhZExvY2tH
TCgpOworCisgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZUlkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1f
cmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IG1fcmVzb3VyY2VJZDsKKyAgICAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgfTsKKwor
ICAgIGNsYXNzIFNjb3BlZFdyaXRlTG9ja0dMIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2NvcGVkV3JpdGVMb2NrR0wpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkV3JpdGVM
b2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
KTsKKyAgICAgICAgflNjb3BlZFdyaXRlTG9ja0dMKCk7CisKKyAgICAgICAgdW5zaWduZWQgdGV4
dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOworICAgICAgICB1bnNp
Z25lZCBtX3RleHR1cmVJZDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkUmVhZExvY2tTb2Z0
d2FyZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlYWRMb2NrU29mdHdh
cmUpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVhZExvY2tTb2Z0d2FyZShDQ1Jlc291
cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAgICB+
U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSgpOworCisgICAgICAgIGNvbnN0IFNrQml0bWFwKiBza0Jp
dG1hcCgpIGNvbnN0IHsgcmV0dXJuICZtX3NrQml0bWFwOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgU2tCaXRt
YXAgbV9za0JpdG1hcDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkV3JpdGVMb2NrU29mdHdh
cmUgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRXcml0ZUxvY2tTb2Z0d2Fy
ZSk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZShDQ1Jlc291
cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAgICB+
U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKTsKKworICAgICAgICBTa0NhbnZhcyogc2tDYW52YXMo
KSB7IHJldHVybiAmbV9za0NhbnZhczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NSZXNv
dXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgICAgIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgICAgIFNrQml0bWFwIG1fc2tCaXRt
YXA7CisgICAgICAgIFNrQ2FudmFzIG1fc2tDYW52YXM7CisgICAgfTsKIAorcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICB1bnNpZ25lZCBnbElkOworICAgICAgICB1aW50
OF90KiBwaXhlbHM7CiAgICAgICAgIGludCBwb29sOwogICAgICAgICBpbnQgbG9ja0ZvclJlYWRD
b3VudDsKICAgICAgICAgYm9vbCBsb2NrZWRGb3JXcml0ZTsKICAgICAgICAgYm9vbCBleHRlcm5h
bDsKICAgICAgICAgSW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CisgICAg
ICAgIFJlc291cmNlVHlwZSB0eXBlOwogICAgIH07CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlc291
cmNlSWQsIFJlc291cmNlPiBSZXNvdXJjZU1hcDsKIAogICAgIGV4cGxpY2l0IENDUmVzb3VyY2VQ
cm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCopOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCi0g
ICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50aW5nIHRoZSByZXNvdXJjZSwgdGhh
dCBjYW4gYmUgcmVuZGVyZWQgaW50by4KLSAgICB1bnNpZ25lZCBsb2NrRm9yV3JpdGUoUmVzb3Vy
Y2VJZCk7Ci0gICAgdm9pZCB1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKLQotICAgIC8vIEdl
dHMgYSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVzb3VyY2UsIHRoYXQgY2FuIGJl
IHJlbmRlcmVkIHdpdGguCi0gICAgdW5zaWduZWQgbG9ja0ZvclJlYWQoUmVzb3VyY2VJZCk7Cisg
ICAgY29uc3QgUmVzb3VyY2UqIGxvY2tGb3JSZWFkKFJlc291cmNlSWQpOwogICAgIHZvaWQgdW5s
b2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKKyAgICBjb25zdCBSZXNvdXJjZSogbG9ja0ZvcldyaXRl
KFJlc291cmNlSWQpOworICAgIHZvaWQgdW5sb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7CisgICAg
c3RhdGljIHZvaWQgcG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJjZShTa0JpdG1hcCosIGNvbnN0
IFJlc291cmNlKik7CiAKICAgICBDQ0dyYXBoaWNzQ29udGV4dCogbV9jb250ZXh0OwogICAgIFJl
c291cmNlSWQgbV9uZXh0SWQ7CiAgICAgUmVzb3VyY2VNYXAgbV9yZXNvdXJjZXM7CiAKKyAgICBS
ZXNvdXJjZVR5cGUgbV9kZWZhdWx0UmVzb3VyY2VUeXBlOwogICAgIGJvb2wgbV91c2VUZXh0dXJl
U3RvcmFnZUV4dDsKICAgICBib29sIG1fdXNlVGV4dHVyZVVzYWdlSGludDsKICAgICBib29sIG1f
dXNlU2hhbGxvd0ZsdXNoOwpAQCAtMTI3LDQ3ICsxOTgsNiBAQCBwcml2YXRlOgogICAgIGludCBt
X21heFRleHR1cmVTaXplOwogfTsKIAotY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQp
OwotcHVibGljOgotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZChDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBy
ZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVy
KQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQotICAgICAgICAsIG1fdGV4dHVy
ZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JSZWFkKHJlc291cmNlSWQpKSB7IH0KLQotICAg
IH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQoKQotICAgIHsKLSAgICAgICAgbV9yZXNvdXJj
ZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVzb3VyY2VJZCk7Ci0gICAgfQotCi0gICAgdW5z
aWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLQotcHJpdmF0
ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKLSAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOwotICAgIHVuc2lnbmVkIG1f
dGV4dHVyZUlkOwotfTsKLQotY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSk7Ci1w
dWJsaWM6Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZShDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNv
dXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQot
ICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQotICAgICAgICAsIG1fdGV4dHVyZUlk
KHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0ZShyZXNvdXJjZUlkKSkgeyB9Ci0KLSAgICB+
Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSgpCi0gICAgewotICAgICAgICBtX3Jlc291cmNl
UHJvdmlkZXItPnVubG9ja0ZvcldyaXRlKG1fcmVzb3VyY2VJZCk7Ci0gICAgfQotCi0gICAgdW5z
aWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLQotcHJpdmF0
ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKLSAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOwotICAgIHVuc2lnbmVkIG1f
dGV4dHVyZUlkOwotfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcAppbmRleCA0MjI3NzQ1OWFlZTA3NDFh
OTZiMjMzYTUyZTNhNjBmODIxYjQ4MGE0Li4zZGMzZWJhNWRiZDRmYTgyZWNiZDUzZGE3ZjU1YjMz
MWEwODVmOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVz
b3VyY2VQcm92aWRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKQEAgLTE4NiwyMiArMTg2LDM1IEBAIHByaXZhdGU6
CiAgICAgVGV4dHVyZU1hcCBtX3RleHR1cmVzOwogfTsKIAotY2xhc3MgQ0NSZXNvdXJjZVByb3Zp
ZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIENDUmVzb3VyY2VQcm92aWRl
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlVHlwZT4gewogcHVibGljOgogICAgIENDUmVzb3VyY2VQcm92aWRlclRlc3QoKQog
ICAgICAgICA6IG1fY29udGV4dChGYWtlV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OmNyZWF0
ZShSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6Y3JlYXRlKCkpKQogICAgICAgICAsIG1fcmVzb3Vy
Y2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpKQog
ICAgIHsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5zZXREZWZhdWx0UmVzb3VyY2VUeXBl
KEdldFBhcmFtKCkpOwogICAgIH0KIAogICAgIFJlc291cmNlUHJvdmlkZXJDb250ZXh0KiBjb250
ZXh0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VQcm92aWRlckNvbnRleHQqPihtX2Nv
bnRleHQtPmNvbnRleHQzRCgpKTsgfQogCiAgICAgdm9pZCBnZXRSZXNvdXJjZVBpeGVscyhDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQsIGNvbnN0IEludFNpemUmIHNpemUsIFdHQzNE
ZW51bSBmb3JtYXQsIHVpbnQ4X3QqIHBpeGVscykKICAgICB7Ci0gICAgICAgIENDU2NvcGVkTG9j
a1Jlc291cmNlRm9yUmVhZCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQpOwotICAg
ICAgICBBU1NFUlRfTkUoMFUsIGxvY2sudGV4dHVyZUlkKCkpOwotICAgICAgICBjb250ZXh0KCkt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJ
ZCgpKTsKLSAgICAgICAgY29udGV4dCgpLT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0LCBwaXhlbHMp
OworICAgICAgICBpZiAoR2V0UGFyYW0oKSA9PSBDQ1Jlc291cmNlUHJvdmlkZXI6OkdMVGV4dHVy
ZSkgeworICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIGxv
Y2tHTChtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkKTsKKyAgICAgICAgICAgIEFTU0VSVF9O
RSgwVSwgbG9ja0dMLnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQoKS0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2tHTC50ZXh0dXJlSWQoKSk7
CisgICAgICAgICAgICBjb250ZXh0KCktPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHBpeGVscyk7
CisgICAgICAgIH0gZWxzZSBpZiAoR2V0UGFyYW0oKSA9PSBDQ1Jlc291cmNlUHJvdmlkZXI6OkJp
dG1hcCkgeworICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1Nv
ZnR3YXJlIGxvY2tTb2Z0d2FyZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkKTsKKyAgICAg
ICAgICAgIG1lbWNweShwaXhlbHMsIGxvY2tTb2Z0d2FyZS5za0JpdG1hcCgpLT5nZXRQaXhlbHMo
KSwgbG9ja1NvZnR3YXJlLnNrQml0bWFwKCktPmdldFNpemUoKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2b2lkIGV4cGVjdE51bVJlc291cmNlcyhpbnQgY291bnQpCisgICAgeworICAgICAg
ICBFWFBFQ1RfRVEoY291bnQsIHN0YXRpY19jYXN0PGludD4obV9yZXNvdXJjZVByb3ZpZGVyLT5u
dW1SZXNvdXJjZXMoKSkpOworICAgICAgICBpZiAoR2V0UGFyYW0oKSA9PSBDQ1Jlc291cmNlUHJv
dmlkZXI6OkdMVGV4dHVyZSkKKyAgICAgICAgICAgIEVYUEVDVF9FUShjb3VudCwgY29udGV4dCgp
LT50ZXh0dXJlQ291bnQoKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC0yMTAsNyArMjIzLDcg
QEAgcHJvdGVjdGVkOgogICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQ
cm92aWRlcjsKIH07CiAKLVRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKK1RF
U1RfUChDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKIHsKICAgICBJbnRTaXplIHNpemUo
MSwgMSk7CiAgICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpA
QCAtMjE5LDcgKzIzMiw3IEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykK
ICAgICBBU1NFUlRfRVEoNFUsIHBpeGVsU2l6ZSk7CiAKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgaWQgPSBtX3Jlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2ws
IHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwotICAg
IEVYUEVDVF9FUSgxLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1S
ZXNvdXJjZXMoMSk7CiAKICAgICB1aW50OF90IGRhdGFbNF0gPSB7MSwgMiwgMywgNH07CiAgICAg
SW50UmVjdCByZWN0KEludFBvaW50KCksIHNpemUpOwpAQCAtMjMwLDEwICsyNDMsMTAgQEAgVEVT
VF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQogICAgIEVYUEVDVF9FUSgwLCBtZW1j
bXAoZGF0YSwgcmVzdWx0LCBwaXhlbFNpemUpKTsKIAogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+
ZGVsZXRlUmVzb3VyY2UoaWQpOwotICAgIEVYUEVDVF9FUSgwLCBjb250ZXh0KCktPnRleHR1cmVD
b3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJjZXMoMCk7CiB9CiAKLVRFU1RfRihDQ1Jlc291
cmNlUHJvdmlkZXJUZXN0LCBEZWxldGVPd25lZFJlc291cmNlcykKK1RFU1RfUChDQ1Jlc291cmNl
UHJvdmlkZXJUZXN0LCBEZWxldGVPd25lZFJlc291cmNlcykKIHsKICAgICBJbnRTaXplIHNpemUo
MSwgMSk7CiAgICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpA
QCAtMjQyLDE2ICsyNTUsMTYgQEAgVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIERlbGV0
ZU93bmVkUmVzb3VyY2VzKQogICAgIGNvbnN0IGludCBjb3VudCA9IDM7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPmNyZWF0
ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJl
VXNhZ2VBbnkpOwotICAgIEVYUEVDVF9FUSgzLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsK
KyAgICBleHBlY3ROdW1SZXNvdXJjZXMoMyk7CiAKICAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRl
bGV0ZU93bmVkUmVzb3VyY2VzKHBvb2wrMSk7Ci0gICAgRVhQRUNUX0VRKDMsIGNvbnRleHQoKS0+
dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51bVJlc291cmNlcygzKTsKIAogICAgIG1fcmVz
b3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNvdXJjZXMocG9vbCk7Ci0gICAgRVhQRUNUX0VR
KDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51bVJlc291cmNlcygw
KTsKIH0KIAotVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIFVwbG9hZCkKK1RFU1RfUChD
Q1Jlc291cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQpCiB7CiAgICAgSW50U2l6ZSBzaXplKDIsIDIp
OwogICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKQEAgLTMw
Myw0ICszMTYsOSBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQogICAg
IG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoaWQpOwogfQogCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChDQ1Jlc291cmNlUHJvdmlkZXJUZXN0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIENDUmVzb3VyY2VQcm92aWRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OlZhbHVlcyhDQ1Jlc291cmNlUHJvdmlkZXI6OkdMVGV4dHVyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6Qml0
bWFwKSk7CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159182</attachid>
            <date>2012-08-17 12:46:34 -0700</date>
            <delta_ts>2012-08-17 17:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120817124558.patch</filename>
            <type>text/plain</type>
            <size>39978</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ5YTYyZGNjNTA2M2Mx
NDJmMTViMzU0ZWQyNTY2NzEwOGVlMTBiNS4uZGUwYTU4OWRjOTQzOTY4YjEwOGQ3MGEzM2RmNzBh
ZjlkZWNmNWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTA4LTE1ICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFi
aWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAg
ICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQg
YXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIEFzIGRpc2N1c3NlZCBpbiBCdWcgOTM0NDIsIHdl
IHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIgdG8gYmUgYWJsZQorICAgICAgICB0byBoYW5kbGUg
ZGlmZmVyZW50IHJlc291cmNlIHR5cGVzIGF0IHRoZSBzYW1lIHRpbWUuICBJbiBwcmFjdGljZSwg
YQorICAgICAgICBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMgZGVzaXJlZCBmb3IgbW9zdCB1c2Vz
IHdpdGhpbiBhIHNpbmdsZQorICAgICAgICBjb21wb3NpdG9yIGluc3RhbmNlLCB3aGljaCBpcyBz
cGVjaWZpZWQgYnkgdGhlIGRlZmF1bHQgcmVzb3VyY2UgdHlwZS4KKyAgICAgICAgRGVmYXVsdCBy
ZXNvdXJjZSB0eXBlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgbW9zdGx5IDEtdG8tMSB3aXRoCisgICAg
ICAgIENDUmVuZGVyZXIgdHlwZXMuCisKKyAgICAgICAgTmV3IHRlc3RzIGFkZGVkIGJ5IHBhcmFt
ZXRyaXppbmcgZXhpc3RpbmcgQ0NSZXNvdXJjZVByb3ZpZGVyIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVy
VG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKERyYXdpbmdGcmFtZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZUdMVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJl
c291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OmRlbGV0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQ
cm92aWRlcjo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpzaGFsbG93Rmx1
c2hJZlN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6Omxv
Y2tGb3JSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2Nr
Rm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JX
cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0Zvcldy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExv
Y2tHTDo6U2NvcGVkUmVhZExvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6On5TY29wZWRSZWFkTG9ja0dMKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6OlNjb3BlZFdyaXRl
TG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3Jp
dGVMb2NrR0w6On5TY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjpTY29wZWRS
ZWFkTG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
U2NvcGVkUmVhZExvY2tTb2Z0d2FyZTo6flNjb3BlZFJlYWRMb2NrU29mdHdhcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6
U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVBy
b3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6flNjb3BlZFdyaXRlTG9ja1NvZnR3YXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Q0NSZXNvdXJjZVByb3Zp
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpzZXRDcmVhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0aW9uUG9saWN5KToKKyAgICAgICAgKENDUmVzb3VyY2VQcm92
aWRlcik6CisgICAgICAgIChTY29wZWRSZWFkTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6dGV4dHVyZUlkKToKKyAgICAgICAg
KFNjb3BlZFdyaXRlTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6U2NvcGVkV3JpdGVMb2NrR0w6OnRleHR1cmVJZCk6CisgICAgICAgIChTY29wZWRSZWFkTG9j
a1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVk
UmVhZExvY2tTb2Z0d2FyZTo6c2tCaXRtYXApOgorICAgICAgICAoU2NvcGVkV3JpdGVMb2NrU29m
dHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0
ZUxvY2tTb2Z0d2FyZTo6c2tDYW52YXMpOgorICAgICAgICAoUmVzb3VyY2UpOgorCiAyMDEyLTA4
LTE3ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjEyNTcxMCkgLSBjYW52YXMtZmFsbGJhY2stY29udGVudCB0ZXN0cyBhc3NlcnRp
bmcgaW4gQ2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjViNmQ5NDY3YTIy
YzdlMzZlNmNiZGE4Mzg4Yzc4YTIzZmNmODY3NS4uMTAwYWI3ZGNhOGFmNjUwNjI5N2M3OGMxNWRi
YWQ5YWRjZDViNjFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxMi0wOC0xNSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBBZGQgc29mdHdhcmUgYml0bWFwIHJlc291cmNlcyB0byBDQ1Jlc291
cmNlUHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIENDUmVzb3VyY2VQcm92aWRlciB0byB1c2Ugc29m
dHdhcmUgYml0bWFwcy4KKyAgICAgICAgVGhleSBhcmUgYWxsb2NhdGVkIGFzIHBsYWluLW9sZC1t
ZW1vcnksIGFuZCBleHBvc2VkIGFzIFNraWEgb2JqZWN0cy4KKworICAgICAgICBBcyBkaXNjdXNz
ZWQgaW4gQnVnIDkzNDQyLCB3ZSB3YW50IHRoZSBSZXNvdXJjZVByb3ZpZGVyIHRvIGJlIGFibGUK
KyAgICAgICAgdG8gaGFuZGxlIGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyBhdCB0aGUgc2FtZSB0
aW1lLiAgSW4gcHJhY3RpY2UsIGEKKyAgICAgICAgZGVmYXVsdCByZXNvdXJjZSB0eXBlIGlzIGRl
c2lyZWQgZm9yIG1vc3QgdXNlcyB3aXRoaW4gYSBzaW5nbGUKKyAgICAgICAgY29tcG9zaXRvciBp
bnN0YW5jZSwgd2hpY2ggaXMgc3BlY2lmaWVkIGJ5IHRoZSBkZWZhdWx0IHJlc291cmNlIHR5cGUu
CisgICAgICAgIERlZmF1bHQgcmVzb3VyY2UgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIGJlIG1vc3Rs
eSAxLXRvLTEgd2l0aAorICAgICAgICBDQ1JlbmRlcmVyIHR5cGVzLgorCisgICAgICAgIE5ldyB0
ZXN0cyBhZGRlZCBieSBwYXJhbWV0cml6aW5nIGV4aXN0aW5nIENDUmVzb3VyY2VQcm92aWRlciB0
ZXN0cy4KKworICAgICAgICAqIHRlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDQ1Jlc291cmNlUHJvdmlkZXJUZXN0OjpnZXRSZXNvdXJjZVBpeGVscyk6
CisKIDIwMTItMDgtMTcgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBUdXJuIG9mZiBFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCBmb3IgQW5k
cm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMDAwNDRjNzExYzE2ZDUxOGM5
ZDEyMjI2MWI4NTI5NDNkMjQ3NWYxMC4uZGU3MmM1ODQ0OGE3MDVmNzMzOTY5MDBmZDA2ZjUwZGRk
ODNjZDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KFdlYkdyYXBoaWMKICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKIAogICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5nVGV4dHVyZShyZXNvdXJjZVByb3Zp
ZGVyKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIGxvY2socmVzb3VyY2VQcm92
aWRlciwgdGV4dHVyZS0+cmVzb3VyY2VJZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFdyaXRlTG9ja0dMIGxvY2socmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+cmVzb3VyY2VJ
ZCgpKTsKICAgICAvLyBDcmVhdGUgYW4gYWNjZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24uCiAg
ICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhnckNv
bnRleHQsIHRleHR1cmUtPnNpemUoKSwgbG9jay50ZXh0dXJlSWQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDA4NWY0YmIyOTRjZDEzZjU5NzVlNTdjN2M0
MWIwZWJlNjNmOGI3YmUuLmFiYjk1NTFiNzI1NDY5OWI3YTgzMjM0NDRmNjI2YzBlNTkzYTk0NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNTQyLDcgKzU0Miw3
IEBAIHN0YXRpYyBpbmxpbmUgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJv
bWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QKIAogICAgIGxheWVyUmVuZGVyZXItPmNvbnRleHQo
KS0+Zmx1c2goKTsKIAotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgbG9jayhsYXll
clJlbmRlcmVyLT5yZXNvdXJjZVByb3ZpZGVyKCksIHNvdXJjZVRleHR1cmUtPmlkKCkpOworICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0wgbG9jayhsYXllclJlbmRlcmVy
LT5yZXNvdXJjZVByb3ZpZGVyKCksIHNvdXJjZVRleHR1cmUtPmlkKCkpOwogICAgIFNrQml0bWFw
IHNvdXJjZSA9IENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIGxvY2sudGV4
dHVyZUlkKCksIHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4dCwgZmlsdGVyR3JD
b250ZXh0KTsKICAgICByZXR1cm4gc291cmNlOwogfQpAQCAtNjQ0LDIwICs2NDQsMjAgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChEcmF3aW5nRnJhbWUm
IGZyYW1lLCBjb25zdCBDQ1JlbmQKICAgICAvLyBGSVhNRTogQ2FjaGUgdGhpcyB2YWx1ZSBzbyB0
aGF0IHdlIGRvbid0IGhhdmUgdG8gZG8gaXQgZm9yIGJvdGggdGhlIHN1cmZhY2UgYW5kIGl0cyBy
ZXBsaWNhLgogICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gdGhlIGNvbnRlbnRzIHRleHR1cmUuCiAg
ICAgU2tCaXRtYXAgZmlsdGVyQml0bWFwID0gYXBwbHlGaWx0ZXJzKHRoaXMsIHJlbmRlclBhc3Mt
PmZpbHRlcnMoKSwgY29udGVudHNUZXh0dXJlKTsKLSAgICBPd25QdHI8Q0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JSZWFkPiBjb250ZW50c1Jlc291cmNlTG9jazsKKyAgICBPd25QdHI8Q0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMPiBjb250ZW50c1Jlc291cmNlTG9jazsKICAgICB1
bnNpZ25lZCBjb250ZW50c1RleHR1cmVJZCA9IDA7CiAgICAgaWYgKGZpbHRlckJpdG1hcC5nZXRU
ZXh0dXJlKCkpIHsKICAgICAgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2Fz
dDxHclRleHR1cmUqPihmaWx0ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKTsKICAgICAgICAgY29udGVu
dHNUZXh0dXJlSWQgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgY29udGVudHNSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkKG1fcmVzb3VyY2VQcm92aWRlciwgY29udGVudHNUZXh0dXJlLT5pZCgp
KSk7CisgICAgICAgIGNvbnRlbnRzUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIobmV3IENDUmVzb3Vy
Y2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTChtX3Jlc291cmNlUHJvdmlkZXIsIGNvbnRlbnRz
VGV4dHVyZS0+aWQoKSkpOwogICAgICAgICBjb250ZW50c1RleHR1cmVJZCA9IGNvbnRlbnRzUmVz
b3VyY2VMb2NrLT50ZXh0dXJlSWQoKTsKICAgICB9CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3Jv
dW5kIHRleHR1cmUgaWYgdGhlcmUgaXMgb25lLgogICAgIGlmIChiYWNrZ3JvdW5kVGV4dHVyZSkg
ewogICAgICAgICBBU1NFUlQoYmFja2dyb3VuZFRleHR1cmUtPnNpemUoKSA9PSBxdWFkLT5xdWFk
UmVjdCgpLnNpemUoKSk7Ci0gICAgICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBsb2Nr
KG1fcmVzb3VyY2VQcm92aWRlciwgYmFja2dyb3VuZFRleHR1cmUtPmlkKCkpOworICAgICAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgbG9jayhtX3Jlc291cmNlUHJvdmlk
ZXIsIGJhY2tncm91bmRUZXh0dXJlLT5pZCgpKTsKICAgICAgICAgY29weVRleHR1cmVUb0ZyYW1l
YnVmZmVyKGZyYW1lLCBsb2NrLnRleHR1cmVJZCgpLCBxdWFkLT5xdWFkUmVjdCgpLCBxdWFkLT5x
dWFkVHJhbnNmb3JtKCkpOwogICAgIH0KIApAQCAtNjc0LDEwICs2NzQsMTAgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1l
LCBjb25zdCBDQ1JlbmQKICAgICAgICAgZGV2aWNlTGF5ZXJFZGdlcy5pbmZsYXRlQW50aUFsaWFz
aW5nRGlzdGFuY2UoKTsKICAgICB9CiAKLSAgICBPd25QdHI8Q0NTY29wZWRMb2NrUmVzb3VyY2VG
b3JSZWFkPiBtYXNrUmVzb3VyY2VMb2NrOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI6
OlNjb3BlZFJlYWRMb2NrR0w+IG1hc2tSZXNvdXJjZUxvY2s7CiAgICAgdW5zaWduZWQgbWFza1Rl
eHR1cmVJZCA9IDA7CiAgICAgaWYgKHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkpIHsKLSAgICAgICAg
bWFza1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJl
YWQobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKSk7CisgICAgICAg
IG1hc2tSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29w
ZWRSZWFkTG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+bWFza1Jlc291cmNlSWQoKSkp
OwogICAgICAgICBtYXNrVGV4dHVyZUlkID0gbWFza1Jlc291cmNlTG9jay0+dGV4dHVyZUlkKCk7
CiAgICAgfQogCkBAIC04NjgsNyArODY4LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdUaWxlUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1RpbGVEcmF3UXUKICAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0odW5pZm9ybXMucHJvZ3JhbSkp
OwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHVuaWZvcm1zLnNhbXBs
ZXJMb2NhdGlvbiwgMCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNv
dXJjZUZvclJlYWQgcXVhZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPnJl
c291cmNlSWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHF1
YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOwog
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHF1YWRSZXNvdXJjZUxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIHF1YWQtPnRl
eHR1cmVGaWx0ZXIoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CkBAIC05NzUsOSArOTc1
LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQoRHJhd2lu
Z0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NZVVZWaWQKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB1UGxhbmUgPSBxdWFkLT51UGxhbmUoKTsKICAgICBjb25zdCBDQ1ZpZGVv
TGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUgPSBxdWFkLT52UGxhbmUoKTsKIAotICAgIEND
U2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB5UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwg
eVBsYW5lLnJlc291cmNlSWQpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB1UGxh
bmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdVBsYW5lLnJlc291cmNlSWQpOwotICAgIENDU2Nv
cGVkTG9ja1Jlc291cmNlRm9yUmVhZCB2UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdlBs
YW5lLnJlc291cmNlSWQpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tH
TCB5UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgeVBsYW5lLnJlc291cmNlSWQpOworICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCB1UGxhbmVMb2NrKG1fcmVzb3Vy
Y2VQcm92aWRlciwgdVBsYW5lLnJlc291cmNlSWQpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
U2NvcGVkUmVhZExvY2tHTCB2UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdlBsYW5lLnJl
c291cmNlSWQpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB5UGxhbmVMb2Nr
LnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMikpOwpAQCAtMTA4Niw3ICsxMDg2LDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVhZChEcmF3aW5nRnJhbWUm
IGZyYW1lLCBjb25zdCBDQ1RleHR1cmUKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVu
aWZvcm00ZihiaW5kaW5nLnRleFRyYW5zZm9ybUxvY2F0aW9uLCB1dlJlY3QueCgpLCB1dlJlY3Qu
eSgpLCB1dlJlY3Qud2lkdGgoKSwgdXZSZWN0LmhlaWdodCgpKSk7CiAKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUw
KSk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHF1YWRSZXNvdXJjZUxvY2sobV9y
ZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOworICAgIENDUmVzb3VyY2VQcm92
aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRl
ciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFkUmVzb3VyY2VMb2Nr
LnRleHR1cmVJZCgpKSk7CiAKICAgICAvLyBGSVhNRTogc2V0dGluZyB0aGUgdGV4dHVyZSBwYXJh
bWV0ZXJzIGV2ZXJ5IHRpbWUgaXMgcmVkdW5kYW50LiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUK
QEAgLTEzNzcsNyArMTM3Nyw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFt
ZWJ1ZmZlclRleHR1cmUoQ0NTY29wZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zCiAgICAgaWYgKCF0
ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwg
ZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIENDUmVzb3VyY2VQcm92
aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVy
ZS0+aWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCBsb2Nr
KG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9j
ay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleElt
YWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVj
dC54KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVp
Z2h0KCksIDApKTsKQEAgLTE0MjMsNyArMTQyMyw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QK
ICAgICBBU1NFUlQodGV4dHVyZS0+aWQoKSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zm
c2NyZWVuRnJhbWVidWZmZXJJZCkpOwotICAgIGZyYW1lLmN1cnJlbnRGcmFtZWJ1ZmZlckxvY2sg
PSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZShtX3Jlc291cmNlUHJv
dmlkZXIsIHRleHR1cmUtPmlkKCkpKTsKKyAgICBmcmFtZS5jdXJyZW50RnJhbWVidWZmZXJMb2Nr
ID0gYWRvcHRQdHIobmV3IENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0wobV9y
ZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKSk7CiAgICAgdW5zaWduZWQgdGV4dHVyZUlk
ID0gZnJhbWUuY3VycmVudEZyYW1lYnVmZmVyTG9jay0+dGV4dHVyZUlkKCk7CiAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCwgMCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDE3OTEwMzM1OWE0OWI0Zjk3MDhiOTE0Yzk4MmMw
ZmNlZGE1MDYwNTIuLmJmZTA4MzE2MzQ5MWYwZTRjZmJiYTA3ZWQ2MzZkY2U3ZTdjMGFlOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzczsKICAgICAg
ICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBjdXJyZW50UmVuZGVyUGFzczsKICAgICAgICAgY29uc3Qg
Q0NTY29wZWRUZXh0dXJlKiBjdXJyZW50VGV4dHVyZTsKLSAgICAgICAgT3duUHRyPENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yV3JpdGU+IGN1cnJlbnRGcmFtZWJ1ZmZlckxvY2s7CisgICAgICAgIE93
blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMPiBjdXJyZW50RnJhbWVi
dWZmZXJMb2NrOwogCiAgICAgICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNv
dXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKaW5kZXggOGE5ZTI5MGFlM2QyNWY1M2UxMTc5
Yjg4ZjhmMDJlODAzYTc3YzYzMC4uNmIzOTU5NThkNmM4NzFlMTIzZjQ5NzZjYjY4NTJhZWRhMDIy
YjRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiIC8vIEZvciB0aGUgR0xD
KCkgbWFjcm8KICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgImNj
L0NDUHJveHkuaCIKKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBAIC04OCwxMyAr
ODksMjQgQEAgYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1lcihSZXNvdXJj
ZUlkIGlkKQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVu
dW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50IGhpbnQpCiB7CisgICAgc3dpdGNoIChtX2RlZmF1
bHRSZXNvdXJjZVR5cGUpIHsKKyAgICBjYXNlIEdMVGV4dHVyZToKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZUdMVGV4dHVyZShwb29sLCBzaXplLCBmb3JtYXQsIGhpbnQpOworICAgIGNhc2UgQml0bWFw
OgorICAgICAgICBBU1NFUlQoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcChwb29sLCBzaXplKTsKKyAgICB9CisKKyAgICBDUkFT
SCgpOworICAgIHJldHVybiAwOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVHTFRleHR1cmUoaW50IHBvb2wsIGNvbnN0IEludFNp
emUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCBoaW50KQorewogICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgdW5zaWduZWQgdGV4dHVyZUlk
ID0gMDsKICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5j
b250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVy
biAwOwotICAgIH0KKyAgICBBU1NFUlQoY29udGV4dDNkKTsKICAgICBHTEMoY29udGV4dDNkLCB0
ZXh0dXJlSWQgPSBjb250ZXh0M2QtPmNyZWF0ZVRleHR1cmUoKSk7CiAgICAgR0xDKGNvbnRleHQz
ZCwgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
dGV4dHVyZUlkKSk7CiAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CkBAIC0xMTUsMTIgKzEy
NywyMyBAQCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29ucwogICAgIHJldHVybiBpZDsKIH0KIAorQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlQml0
bWFwKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIEFTU0VSVChDQ1Byb3h5
Ojppc0ltcGxUaHJlYWQoKSk7CisKKyAgICB1aW50OF90KiBwaXhlbHMgPSBuZXcgdWludDhfdFtz
aXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNF07CisKKyAgICBSZXNvdXJjZUlkIGlkID0g
bV9uZXh0SWQrKzsKKyAgICBSZXNvdXJjZSByZXNvdXJjZShwaXhlbHMsIHBvb2wsIHNpemUsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNl
KTsKKyAgICByZXR1cm4gaWQ7Cit9CisKIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBD
Q1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNp
Z25lZCB0ZXh0dXJlSWQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
ICAgICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQrKzsKLSAgICBSZXNvdXJjZSByZXNvdXJjZTsK
LSAgICByZXNvdXJjZS5nbElkID0gdGV4dHVyZUlkOworICAgIFJlc291cmNlIHJlc291cmNlKHRl
eHR1cmVJZCwgMCwgSW50U2l6ZSgpLCAwKTsKICAgICByZXNvdXJjZS5leHRlcm5hbCA9IHRydWU7
CiAgICAgbV9yZXNvdXJjZXMuYWRkKGlkLCByZXNvdXJjZSk7CiAgICAgcmV0dXJuIGlkOwpAQCAt
MTI5LDE1ICsxNTIsMTUgQEAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXgKIHZvaWQgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZShSZXNvdXJjZUlkIGlkKQogewogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0
aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBp
dCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5l
bmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9y
UmVhZENvdW50KTsKLSAgICBpZiAoIWl0LT5zZWNvbmQuZXh0ZXJuYWwpCisKKyAgICBXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBp
ZiAoY29udGV4dDNkICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKQogICAgICAgICBHTEMoY29udGV4
dDNkLCBjb250ZXh0M2QtPmRlbGV0ZVRleHR1cmUoaXQtPnNlY29uZC5nbElkKSk7CisgICAgaWYg
KGl0LT5zZWNvbmQucGl4ZWxzKQorICAgICAgICBkZWxldGUgaXQtPnNlY29uZC5waXhlbHM7CisK
ICAgICBtX3Jlc291cmNlcy5yZW1vdmUoaXQpOwogfQogCkBAIC0xNTMsNzEgKzE3Niw2NyBAQCB2
b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlT3duZWRSZXNvdXJjZXMoaW50IHBvb2wpCiAg
ICAgICAgIGRlbGV0ZVJlc291cmNlKCppdCk7CiB9CiAKLXZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVy
Ojp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50U2l6ZSYg
ZGVzdE9mZnNldCkKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VUeXBlIENDUmVzb3VyY2VQ
cm92aWRlcjo6cmVzb3VyY2VUeXBlKFJlc291cmNlSWQgaWQpCiB7Ci0gICAgQVNTRVJUKENDUHJv
eHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQobV90ZXhTdWJJbWFnZS5nZXQoKSk7Ci0g
ICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNE
KCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAg
fQogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwot
ICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRG
b3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4
dGVybmFsKTsKLQotICAgIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIGl0LT5zZWNvbmQuZ2xJZCk7Ci0gICAgbV90ZXhTdWJJbWFnZS0+dXBsb2Fk
KGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RPZmZzZXQsIGl0LT5zZWNvbmQuZm9y
bWF0LCBjb250ZXh0M2QpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7Cisg
ICAgcmV0dXJuIGl0LT5zZWNvbmQudHlwZTsKIH0KIAotdW5zaWduZWQgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVy
Ojp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50U2l6ZSYg
ZGVzdE9mZnNldCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAg
IFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFT
U0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0
ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFs
KTsKLSAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gdHJ1ZTsKLSAgICByZXR1cm4gaXQt
PnNlY29uZC5nbElkOwotfQogCi12b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yV3Jp
dGUoUmVzb3VyY2VJZCBpZCkKLXsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OwotICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwot
ICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+c2Vjb25kLmxvY2tlZEZv
cldyaXRlICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLSAgICBpdC0+c2Vjb25kLmxvY2tlZEZv
cldyaXRlID0gZmFsc2U7CisgICAgaWYgKGl0LT5zZWNvbmQuZ2xJZCkgeworICAgICAgICBXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAg
ICAgICAgQVNTRVJUKGNvbnRleHQzZCk7CisgICAgICAgIEFTU0VSVChtX3RleFN1YkltYWdlLmdl
dCgpKTsKKyAgICAgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5nbElkKTsKKyAgICAgICAgbV90ZXhTdWJJbWFnZS0+dXBs
b2FkKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RPZmZzZXQsIGl0LT5zZWNvbmQu
Zm9ybWF0LCBjb250ZXh0M2QpOworICAgIH0KKworICAgIGlmIChpdC0+c2Vjb25kLnBpeGVscykg
eworICAgICAgICBTa0JpdG1hcCBzcmNGdWxsOworICAgICAgICBzcmNGdWxsLnNldENvbmZpZyhT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIGltYWdlUmVjdC53aWR0aCgpLCBpbWFnZVJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICBzcmNGdWxsLnNldFBpeGVscyhjb25zdF9jYXN0PHVpbnQ4X3Qq
PihpbWFnZSkpOworICAgICAgICBTa0JpdG1hcCBzcmNTdWJzZXQ7CisgICAgICAgIFNrSVJlY3Qg
c2tTb3VyY2VSZWN0ID0gU2tJUmVjdDo6TWFrZVhZV0goc291cmNlUmVjdC54KCksIHNvdXJjZVJl
Y3QueSgpLCBzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBzcmNGdWxsLmV4dHJhY3RTdWJzZXQoJnNyY1N1YnNldCwgc2tTb3VyY2VSZWN0KTsKKworICAg
ICAgICBTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSBsb2NrKHRoaXMsIGlkKTsKKyAgICAgICAgU2tD
YW52YXMqIGRlc3QgPSBsb2NrLnNrQ2FudmFzKCk7CisgICAgICAgIGRlc3QtPndyaXRlUGl4ZWxz
KHNyY1N1YnNldCwgZGVzdE9mZnNldC53aWR0aCgpLCBkZXN0T2Zmc2V0LmhlaWdodCgpKTsKKyAg
ICB9CiB9CiAKIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpmbHVzaCgpCiB7CiAgICAgQVNTRVJU
KENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewot
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29udGV4dDNkLT5mbHVzaCgpOwor
ICAgIGlmIChjb250ZXh0M2QpCisgICAgICAgIGNvbnRleHQzZC0+Zmx1c2goKTsKIH0KIAogYm9v
bCBDQ1Jlc291cmNlUHJvdmlkZXI6OnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCkKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNk
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBj
b21wb3NpdGluZy4KKyAgICBpZiAoIWNvbnRleHQzZCB8fCAhbV91c2VTaGFsbG93Rmx1c2gpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKLSAgICBpZiAobV91c2VTaGFsbG93Rmx1c2gp
Ci0gICAgICAgIGNvbnRleHQzZC0+c2hhbGxvd0ZsdXNoQ0hST01JVU0oKTsKLSAgICByZXR1cm4g
bV91c2VTaGFsbG93Rmx1c2g7CisgICAgY29udGV4dDNkLT5zaGFsbG93Rmx1c2hDSFJPTUlVTSgp
OworICAgIHJldHVybiB0cnVlOwogfQogCi11bnNpZ25lZCBDQ1Jlc291cmNlUHJvdmlkZXI6Omxv
Y2tGb3JSZWFkKFJlc291cmNlSWQgaWQpCitjb25zdCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlKiBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JSZWFkKFJlc291cmNlSWQgaWQpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNv
dXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUpOwotICAgICsrKGl0LT5z
ZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7Ci0gICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2xJZDsKKyAg
ICBpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQrKzsKKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7
CiB9CiAKIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQg
aWQpCkBAIC0yMjUsMTcgKzI0NCw5NCBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2Nr
Rm9yUmVhZChSZXNvdXJjZUlkIGlkKQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7
CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja0Zv
clJlYWRDb3VudCA+IDApOwotICAgIC0tKGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7Cisg
ICAgaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50LS07Cit9CisKK2NvbnN0IENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvcldyaXRlKFJlc291
cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBBU1NF
UlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUg
JiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7
CisgICAgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSA9IHRydWU7CisgICAgcmV0dXJuICZpdC0+
c2Vjb25kOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yV3JpdGUoUmVz
b3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAg
IFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFT
U0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRl
ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRl
ID0gZmFsc2U7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6U2Nv
cGVkUmVhZExvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQorICAgIDogbV9yZXNvdXJjZVBy
b3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCisgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkK
KyAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JSZWFkKHJlc291cmNl
SWQpLT5nbElkKQoreworICAgIEFTU0VSVChtX3RleHR1cmVJZCk7Cit9CisKK0NDUmVzb3VyY2VQ
cm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6flNjb3BlZFJlYWRMb2NrR0woKQoreworICAgIG1f
cmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yUmVhZChtX3Jlc291cmNlSWQpOworfQorCitDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjpTY29wZWRXcml0ZUxvY2tHTChDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCByZXNvdXJjZUlkKQorICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJv
dmlkZXIpCisgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKKyAgICAsIG1fdGV4dHVyZUlk
KHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0ZShyZXNvdXJjZUlkKS0+Z2xJZCkKK3sKKyAg
ICBBU1NFUlQobV90ZXh0dXJlSWQpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdy
aXRlTG9ja0dMOjp+U2NvcGVkV3JpdGVMb2NrR0woKQoreworICAgIG1fcmVzb3VyY2VQcm92aWRl
ci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJv
dmlkZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UoU2tCaXRtYXAqIHNrQml0bWFwLCBj
b25zdCBSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgQVNTRVJUKHJlc291cmNlLT5waXhlbHMp
OworICAgIEFTU0VSVChyZXNvdXJjZS0+Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
KTsKKyAgICBza0JpdG1hcC0+c2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywg
cmVzb3VyY2UtPnNpemUud2lkdGgoKSwgcmVzb3VyY2UtPnNpemUuaGVpZ2h0KCkpOworICAgIHNr
Qml0bWFwLT5zZXRQaXhlbHMocmVzb3VyY2UtPnBpeGVscyk7Cit9CisKK0NDUmVzb3VyY2VQcm92
aWRlcjo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZTo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZShDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCByZXNvdXJjZUlkKQorICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJv
dmlkZXIpCisgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKK3sKKyAgICBDQ1Jlc291cmNl
UHJvdmlkZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UoJm1fc2tCaXRtYXAsIHJlc291
cmNlUHJvdmlkZXItPmxvY2tGb3JSZWFkKHJlc291cmNlSWQpKTsKK30KKworQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjp+U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSgp
Cit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVzb3VyY2VJZCk7
Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6OlNjb3Bl
ZFdyaXRlTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291
cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJj
ZUlkKQoreworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNv
dXJjZSgmbV9za0JpdG1hcCwgcmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvcldyaXRlKHJlc291cmNl
SWQpKTsKKyAgICBtX3NrQ2FudmFzLnNldEJpdG1hcERldmljZShtX3NrQml0bWFwKTsKK30KKwor
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6flNjb3BlZFdyaXRl
TG9ja1NvZnR3YXJlKCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRl
KG1fcmVzb3VyY2VJZCk7CiB9CiAKIENDUmVzb3VyY2VQcm92aWRlcjo6Q0NSZXNvdXJjZVByb3Zp
ZGVyKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CiAgICAgLCBtX25leHRJZCgxKQogICAgICwgbV9uZXh0Q2hpbGQoMSkKKyAgICAsIG1fZGVmYXVs
dFJlc291cmNlVHlwZShHTFRleHR1cmUpCiAgICAgLCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0KGZh
bHNlKQogICAgICwgbV91c2VUZXh0dXJlVXNhZ2VIaW50KGZhbHNlKQogICAgICwgbV91c2VTaGFs
bG93Rmx1c2goZmFsc2UpCi0gICAgLCBtX21heFRleHR1cmVTaXplKDApCisgICAgLCBtX21heFRl
eHR1cmVTaXplKElOVF9NQVgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmgKaW5kZXggM2EwMzhiZWUyNGZjNWU2MzJiODM0MTk5ZGJiMjJhZjUwNzBkYzcyMi4uOTE1NTk3
MmEzYTM2YWJhMDhlODMzNDJiZGRmNzE1ZWFiYjAwOWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNv
dXJjZVByb3ZpZGVyLmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlNrQml0bWFwLmgiCisj
aW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NCw4
ICs0Niw2IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZDsKLWNsYXNzIENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yV3JpdGU7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTGF5ZXJUZXh0dXJl
U3ViSW1hZ2U7CiAKQEAgLTU4LDYgKzU4LDEwIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3Rv
cjxSZXNvdXJjZUlkPiBSZXNvdXJjZUlkQXJyYXk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlc291
cmNlSWQsIFJlc291cmNlSWQ+IFJlc291cmNlSWRNYXA7CiAgICAgZW51bSBUZXh0dXJlVXNhZ2VI
aW50IHsgVGV4dHVyZVVzYWdlQW55LCBUZXh0dXJlVXNhZ2VGcmFtZWJ1ZmZlciB9OworICAgIGVu
dW0gUmVzb3VyY2VUeXBlIHsKKyAgICAgICAgR0xUZXh0dXJlID0gMSwKKyAgICAgICAgQml0bWFw
LAorICAgIH07CiAgICAgc3RydWN0IE1haWxib3ggewogICAgICAgICBHQzNEYnl0ZSBuYW1lWzY0
XTsKICAgICB9OwpAQCAtODcsMTEgKzkxLDE5IEBAIHB1YmxpYzoKIAogICAgIC8vIFByb2R1Y2Vy
IGludGVyZmFjZS4KIAotICAgIC8vIENyZWF0ZXMgYSByZXNvdXJjZSBvZiB0aGUgZ2l2ZW4gc2l6
ZS9mb3JtYXQsIGludG8gdGhlIGdpdmVuIHBvb2wuCisgICAgdm9pZCBzZXREZWZhdWx0UmVzb3Vy
Y2VUeXBlKFJlc291cmNlVHlwZSB0eXBlKSB7IG1fZGVmYXVsdFJlc291cmNlVHlwZSA9IHR5cGU7
IH0KKyAgICBSZXNvdXJjZVR5cGUgZGVmYXVsdFJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVmYXVsdFJlc291cmNlVHlwZTsgfQorICAgIFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUo
UmVzb3VyY2VJZCk7CisKKyAgICAvLyBDcmVhdGVzIGEgcmVzb3VyY2Ugb2YgdGhlIGRlZmF1bHQg
cmVzb3VyY2UgdHlwZS4KICAgICBSZXNvdXJjZUlkIGNyZWF0ZVJlc291cmNlKGludCBwb29sLCBj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50KTsKIAotICAg
IC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUgaW50byBhIHJlc291cmNlLgorICAgIC8vIFlv
dSBjYW4gYWxzbyBleHBsaWNpdGx5IGNyZWF0ZSBhIHNwZWNpZmljIHJlc291cmNlIHR5cGUuCisg
ICAgUmVzb3VyY2VJZCBjcmVhdGVHTFRleHR1cmUoaW50IHBvb2wsIGNvbnN0IEludFNpemUmLCBH
QzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQpOworICAgIFJlc291cmNlSWQgY3JlYXRl
Qml0bWFwKGludCBwb29sLCBjb25zdCBJbnRTaXplJik7CisgICAgLy8gV3JhcHMgYW4gZXh0ZXJu
YWwgdGV4dHVyZSBpbnRvIGEgR0wgcmVzb3VyY2UuCiAgICAgUmVzb3VyY2VJZCBjcmVhdGVSZXNv
dXJjZUZyb21FeHRlcm5hbFRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkKTsKKwogICAgIHZvaWQg
ZGVsZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCk7CiAKICAgICAvLyBEZWxldGVzIGFsbCByZXNvdXJj
ZXMgb3duZWQgYnkgYSBnaXZlbiBwb29sLgpAQCAtMTQ3LDEzICsxNTksNzIgQEAgcHVibGljOgog
ICAgIC8vIE9ubHkgZm9yIHRlc3RpbmcKICAgICBzaXplX3QgbWFpbGJveENvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9tYWlsYm94ZXMuc2l6ZSgpOyB9CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZDsKLSAgICBmcmllbmQgY2xhc3MgQ0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsKKyAgICAvLyBUaGUgZm9sbG93aW5nIGxvY2sgY2xhc3Nl
cyBhcmUgcGFydCBvZiB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIEFQSSBhbmQgYXJlCisgICAgLy8g
bmVlZGVkIHRvIHJlYWQgYW5kIHdyaXRlIHRoZSByZXNvdXJjZSBjb250ZW50cy4gVGhlIHVzZXIg
bXVzdCBlbnN1cmUKKyAgICAvLyB0aGF0IHRoZXkgb25seSB1c2UgR0wgbG9ja3Mgb24gR0wgcmVz
b3VyY2VzLCBldGMsIGFuZCB0aGlzIGlzIGVuZm9yY2VkCisgICAgLy8gYnkgYXNzZXJ0aW9ucy4K
KyAgICBjbGFzcyBTY29wZWRSZWFkTG9ja0dMIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2NvcGVkUmVhZExvY2tHTCk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRSZWFkTG9j
a0dMKENDUmVzb3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCk7
CisgICAgICAgIH5TY29wZWRSZWFkTG9ja0dMKCk7CisKKyAgICAgICAgdW5zaWduZWQgdGV4dHVy
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOworICAgICAgICB1bnNpZ25l
ZCBtX3RleHR1cmVJZDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkV3JpdGVMb2NrR0wgewor
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRXcml0ZUxvY2tHTCk7CisgICAgcHVi
bGljOgorICAgICAgICBTY29wZWRXcml0ZUxvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAgICB+U2NvcGVkV3JpdGVMb2NrR0wo
KTsKKworICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVJZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jl
c291cmNlUHJvdmlkZXI7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBt
X3Jlc291cmNlSWQ7CisgICAgICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIH07CisKKyAg
ICBjbGFzcyBTY29wZWRSZWFkTG9ja1NvZnR3YXJlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk7CisgICAgcHVibGljOgorICAgICAgICBTY29w
ZWRSZWFkTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCk7CisgICAgICAgIH5TY29wZWRSZWFkTG9ja1NvZnR3YXJlKCk7CisKKyAg
ICAgICAgY29uc3QgU2tCaXRtYXAqIHNrQml0bWFwKCkgY29uc3QgeyByZXR1cm4gJm1fc2tCaXRt
YXA7IH0KIAorICAgIHByaXZhdGU6CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNv
dXJjZVByb3ZpZGVyOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9y
ZXNvdXJjZUlkOworICAgICAgICBTa0JpdG1hcCBtX3NrQml0bWFwOworICAgIH07CisKKyAgICBj
bGFzcyBTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3Bl
ZFdyaXRlTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCk7CisgICAgICAgIH5TY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSgpOworCisg
ICAgICAgIFNrQ2FudmFzKiBza0NhbnZhcygpIHsgcmV0dXJuICZtX3NrQ2FudmFzOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRl
cjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsK
KyAgICAgICAgU2tCaXRtYXAgbV9za0JpdG1hcDsKKyAgICAgICAgU2tDYW52YXMgbV9za0NhbnZh
czsKKyAgICB9OworCitwcml2YXRlOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFJl
c291cmNlKCkKICAgICAgICAgICAgIDogZ2xJZCgwKQorICAgICAgICAgICAgLCBwaXhlbHMoMCkK
ICAgICAgICAgICAgICwgcG9vbCgwKQogICAgICAgICAgICAgLCBsb2NrRm9yUmVhZENvdW50KDAp
CiAgICAgICAgICAgICAsIGxvY2tlZEZvcldyaXRlKGZhbHNlKQpAQCAtMTYxLDkgKzIzMiwxMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLCBleHBvcnRlZChmYWxzZSkKICAgICAgICAgICAgICwg
c2l6ZSgpCiAgICAgICAgICAgICAsIGZvcm1hdCgwKQorICAgICAgICAgICAgLCB0eXBlKHN0YXRp
Y19jYXN0PFJlc291cmNlVHlwZT4oMCkpCiAgICAgICAgIHsgfQogICAgICAgICBSZXNvdXJjZSh1
bnNpZ25lZCB0ZXh0dXJlSWQsIGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51
bSBmb3JtYXQpCiAgICAgICAgICAgICA6IGdsSWQodGV4dHVyZUlkKQorICAgICAgICAgICAgLCBw
aXhlbHMoMCkKICAgICAgICAgICAgICwgcG9vbChwb29sKQogICAgICAgICAgICAgLCBsb2NrRm9y
UmVhZENvdW50KDApCiAgICAgICAgICAgICAsIGxvY2tlZEZvcldyaXRlKGZhbHNlKQpAQCAtMTcx
LDggKzI0NCwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBleHBvcnRlZChmYWxzZSkKICAg
ICAgICAgICAgICwgc2l6ZShzaXplKQogICAgICAgICAgICAgLCBmb3JtYXQoZm9ybWF0KQorICAg
ICAgICAgICAgLCB0eXBlKEdMVGV4dHVyZSkKKyAgICAgICAgeyB9CisgICAgICAgIFJlc291cmNl
KHVpbnQ4X3QqIHBpeGVscywgaW50IHBvb2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVt
IGZvcm1hdCkKKyAgICAgICAgICAgIDogZ2xJZCgwKQorICAgICAgICAgICAgLCBwaXhlbHMocGl4
ZWxzKQorICAgICAgICAgICAgLCBwb29sKHBvb2wpCisgICAgICAgICAgICAsIGxvY2tGb3JSZWFk
Q291bnQoMCkKKyAgICAgICAgICAgICwgbG9ja2VkRm9yV3JpdGUoZmFsc2UpCisgICAgICAgICAg
ICAsIGV4dGVybmFsKGZhbHNlKQorICAgICAgICAgICAgLCBleHBvcnRlZChmYWxzZSkKKyAgICAg
ICAgICAgICwgc2l6ZShzaXplKQorICAgICAgICAgICAgLCBmb3JtYXQoZm9ybWF0KQorICAgICAg
ICAgICAgLCB0eXBlKEJpdG1hcCkKICAgICAgICAgeyB9CiAgICAgICAgIHVuc2lnbmVkIGdsSWQ7
CisgICAgICAgIHVpbnQ4X3QqIHBpeGVsczsKICAgICAgICAgaW50IHBvb2w7CiAgICAgICAgIGlu
dCBsb2NrRm9yUmVhZENvdW50OwogICAgICAgICBib29sIGxvY2tlZEZvcldyaXRlOwpAQCAtMTgw
LDYgKzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZXhwb3J0ZWQ7CiAgICAgICAgIElu
dFNpemUgc2l6ZTsKICAgICAgICAgR0MzRGVudW0gZm9ybWF0OworICAgICAgICBSZXNvdXJjZVR5
cGUgdHlwZTsKICAgICB9OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZXNvdXJjZUlkLCBSZXNvdXJj
ZT4gUmVzb3VyY2VNYXA7CiAgICAgc3RydWN0IENoaWxkIHsKQEAgLTE5MiwxMyArMjgwLDExIEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NSZXNvdXJjZVByb3ZpZGVyKENDR3JhcGhpY3NDb250
ZXh0Kik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKLSAgICAvLyBHZXRzIGEgR0wgdGV4dHVy
ZSBpZCByZXByZXNlbnRpbmcgdGhlIHJlc291cmNlLCB0aGF0IGNhbiBiZSByZW5kZXJlZCBpbnRv
LgotICAgIHVuc2lnbmVkIGxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKLSAgICB2b2lkIHVubG9j
a0ZvcldyaXRlKFJlc291cmNlSWQpOwotCi0gICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVw
cmVzZW50aW5nIHRoZSByZXNvdXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgd2l0aC4KLSAgICB1
bnNpZ25lZCBsb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKKyAgICBjb25zdCBSZXNvdXJjZSogbG9j
a0ZvclJlYWQoUmVzb3VyY2VJZCk7CiAgICAgdm9pZCB1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQp
OworICAgIGNvbnN0IFJlc291cmNlKiBsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7CisgICAgdm9p
ZCB1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKKyAgICBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNr
Qml0bWFwV2l0aFJlc291cmNlKFNrQml0bWFwKiwgY29uc3QgUmVzb3VyY2UqKTsKIAogICAgIGJv
b2wgdHJhbnNmZXJSZXNvdXJjZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgUmVzb3Vy
Y2VJZCwgVHJhbnNmZXJhYmxlUmVzb3VyY2UqKTsKICAgICB2b2lkIHRyaW1NYWlsYm94RGVxdWUo
KTsKQEAgLTIxMSw2ICsyOTcsNyBAQCBwcml2YXRlOgogCiAgICAgRGVxdWU8TWFpbGJveD4gbV9t
YWlsYm94ZXM7CiAKKyAgICBSZXNvdXJjZVR5cGUgbV9kZWZhdWx0UmVzb3VyY2VUeXBlOwogICAg
IGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4dDsKICAgICBib29sIG1fdXNlVGV4dHVyZVVzYWdl
SGludDsKICAgICBib29sIG1fdXNlU2hhbGxvd0ZsdXNoOwpAQCAtMjE4LDQ3ICszMDUsNiBAQCBw
cml2YXRlOgogICAgIGludCBtX21heFRleHR1cmVTaXplOwogfTsKIAotY2xhc3MgQ0NTY29wZWRM
b2NrUmVzb3VyY2VGb3JSZWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvclJlYWQpOwotcHVibGljOgotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9y
UmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRl
cihyZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQot
ICAgICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JSZWFkKHJlc291
cmNlSWQpKSB7IH0KLQotICAgIH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQoKQotICAgIHsK
LSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVzb3VyY2VJZCk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlk
OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotY2xhc3MgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JXcml0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JXcml0ZSk7Ci1wdWJsaWM6Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0
ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihy
ZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQotICAg
ICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0ZShyZXNvdXJj
ZUlkKSkgeyB9Ci0KLSAgICB+Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSgpCi0gICAgewot
ICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRlKG1fcmVzb3VyY2VJZCk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlk
OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcAppbmRl
eCAxOTMzZWU2MDFkMWIxNTEwMTg0ZmUwM2QzOWY5NWI2OGRmZWYyMDE1Li44MTI5OWQyODIwZjMy
MTcwODM3NDIzYmYxM2E0MjJlODFiNDM2ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKQEAgLTI4NywyMyAr
Mjg3LDM2IEBAIHByaXZhdGU6CiAgICAgUGVuZGluZ1Byb2R1Y2VUZXh0dXJlTGlzdCBtX3BlbmRp
bmdQcm9kdWNlVGV4dHVyZXM7CiB9OwogCi1jbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VU
eXBlPiB7CiBwdWJsaWM6CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCgpCiAgICAgICAgIDog
bV9zaGFyZWREYXRhKENvbnRleHRTaGFyZWREYXRhOjpjcmVhdGUoKSkKICAgICAgICAgLCBtX2Nv
bnRleHQoRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoUmVzb3VyY2VQcm92
aWRlckNvbnRleHQ6OmNyZWF0ZShtX3NoYXJlZERhdGEuZ2V0KCkpKSkKICAgICAgICAgLCBtX3Jl
c291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
KSkKICAgICB7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+c2V0RGVmYXVsdFJlc291cmNl
VHlwZShHZXRQYXJhbSgpKTsKICAgICB9CiAKICAgICBSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCog
Y29udGV4dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNlUHJvdmlkZXJDb250ZXh0Kj4o
bV9jb250ZXh0LT5jb250ZXh0M0QoKSk7IH0KIAogICAgIHZvaWQgZ2V0UmVzb3VyY2VQaXhlbHMo
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkLCBjb25zdCBJbnRTaXplJiBzaXplLCBX
R0MzRGVudW0gZm9ybWF0LCB1aW50OF90KiBwaXhlbHMpCiAgICAgewotICAgICAgICBDQ1Njb3Bl
ZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkKTsK
LSAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrLnRleHR1cmVJZCgpKTsKLSAgICAgICAgY29udGV4
dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0
dXJlSWQoKSk7Ci0gICAgICAgIGNvbnRleHQoKS0+Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcGl4
ZWxzKTsKKyAgICAgICAgaWYgKEdldFBhcmFtKCkgPT0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpHTFRl
eHR1cmUpIHsKKyAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tH
TCBsb2NrR0wobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7CisgICAgICAgICAgICBBU1NF
UlRfTkUoMFUsIGxvY2tHTC50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICBjb250ZXh0KCktPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBsb2NrR0wudGV4dHVyZUlk
KCkpOworICAgICAgICAgICAgY29udGV4dCgpLT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0LCBwaXhl
bHMpOworICAgICAgICB9IGVsc2UgaWYgKEdldFBhcmFtKCkgPT0gQ0NSZXNvdXJjZVByb3ZpZGVy
OjpCaXRtYXApIHsKKyAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExv
Y2tTb2Z0d2FyZSBsb2NrU29mdHdhcmUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7Cisg
ICAgICAgICAgICBtZW1jcHkocGl4ZWxzLCBsb2NrU29mdHdhcmUuc2tCaXRtYXAoKS0+Z2V0UGl4
ZWxzKCksIGxvY2tTb2Z0d2FyZS5za0JpdG1hcCgpLT5nZXRTaXplKCkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBleHBlY3ROdW1SZXNvdXJjZXMoaW50IGNvdW50KQorICAgIHsKKyAg
ICAgICAgRVhQRUNUX0VRKGNvdW50LCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVzb3VyY2VQcm92aWRl
ci0+bnVtUmVzb3VyY2VzKCkpKTsKKyAgICAgICAgaWYgKEdldFBhcmFtKCkgPT0gQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpHTFRleHR1cmUpCisgICAgICAgICAgICBFWFBFQ1RfRVEoY291bnQsIGNvbnRl
eHQoKS0+dGV4dHVyZUNvdW50KCkpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtMzEzLDcgKzMy
Niw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291
cmNlUHJvdmlkZXI7CiB9OwogCi1URVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFzaWMp
CitURVNUX1AoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFzaWMpCiB7CiAgICAgSW50U2l6ZSBz
aXplKDEsIDEpOwogICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTsKQEAgLTMyMiw3ICszMzUsNyBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFz
aWMpCiAgICAgQVNTRVJUX0VRKDRVLCBwaXhlbFNpemUpOwogCiAgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIGlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShw
b29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsK
LSAgICBFWFBFQ1RfRVEoMSwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7CisgICAgZXhwZWN0
TnVtUmVzb3VyY2VzKDEpOwogCiAgICAgdWludDhfdCBkYXRhWzRdID0gezEsIDIsIDMsIDR9Owog
ICAgIEludFJlY3QgcmVjdChJbnRQb2ludCgpLCBzaXplKTsKQEAgLTMzMywxMCArMzQ2LDEwIEBA
IFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKICAgICBFWFBFQ1RfRVEoMCwg
bWVtY21wKGRhdGEsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CiAKICAgICBtX3Jlc291cmNlUHJvdmlk
ZXItPmRlbGV0ZVJlc291cmNlKGlkKTsKLSAgICBFWFBFQ1RfRVEoMCwgY29udGV4dCgpLT50ZXh0
dXJlQ291bnQoKSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDApOwogfQogCi1URVNUX0YoQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCitURVNUX1AoQ0NSZXNv
dXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCiB7CiAgICAgSW50U2l6ZSBz
aXplKDEsIDEpOwogICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTsKQEAgLTM0NSwxNiArMzU4LDE2IEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBE
ZWxldGVPd25lZFJlc291cmNlcykKICAgICBjb25zdCBpbnQgY291bnQgPSAzOwogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5j
cmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4
dHVyZVVzYWdlQW55KTsKLSAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50ZXh0dXJlQ291bnQo
KSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDMpOwogCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVy
LT5kZWxldGVPd25lZFJlc291cmNlcyhwb29sKzEpOwotICAgIEVYUEVDVF9FUSgzLCBjb250ZXh0
KCktPnRleHR1cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJjZXMoMyk7CiAKICAgICBt
X3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKHBvb2wpOwotICAgIEVYUEVD
VF9FUSgwLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJj
ZXMoMCk7CiB9CiAKLVRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQpCitURVNU
X1AoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQogewogICAgIEludFNpemUgc2l6ZSgy
LCAyKTsKICAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBA
IC00MDYsOCArNDE5LDEyIEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQp
CiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7CiB9CiAKLVRFU1Rf
RihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBUcmFuc2ZlclJlc291cmNlcykKK1RFU1RfUChDQ1Jl
c291cmNlUHJvdmlkZXJUZXN0LCBUcmFuc2ZlclJlc291cmNlcykKIHsKKyAgICAvLyBSZXNvdXJj
ZSB0cmFuc2ZlciBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIEdMIHRleHR1cmVzIGZvciBub3cuCisg
ICAgaWYgKEdldFBhcmFtKCkgIT0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpHTFRleHR1cmUpCisgICAg
ICAgIHJldHVybjsKKwogICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2hpbGRDb250ZXh0
KEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3JlYXRlKFJlc291cmNlUHJvdmlkZXJD
b250ZXh0OjpjcmVhdGUobV9zaGFyZWREYXRhLmdldCgpKSkpOwogICAgIE93blB0cjxDQ1Jlc291
cmNlUHJvdmlkZXI+IGNoaWxkUmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZShjaGlsZENvbnRleHQuZ2V0KCkpKTsKIApAQCAtNDg2LDE0ICs1MDMsMTQgQEAgVEVTVF9G
KENDUmVzb3VyY2VQcm92aWRlclRlc3QsIFRyYW5zZmVyUmVzb3VyY2VzKQogCiAgICAgUmVzb3Vy
Y2VQcm92aWRlckNvbnRleHQqIGNoaWxkQ29udGV4dDNEID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VQ
cm92aWRlckNvbnRleHQqPihjaGlsZENvbnRleHQtPmNvbnRleHQzRCgpKTsKICAgICB7Ci0gICAg
ICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBsb2NrKGNoaWxkUmVzb3VyY2VQcm92aWRl
ci5nZXQoKSwgaWQxKTsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9j
a0dMIGxvY2soY2hpbGRSZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZDEpOwogICAgICAgICBBU1NF
UlRfTkUoMFUsIGxvY2sudGV4dHVyZUlkKCkpOwogICAgICAgICBjaGlsZENvbnRleHQzRC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkp
OwogICAgICAgICBjaGlsZENvbnRleHQzRC0+Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcmVzdWx0
KTsKICAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChkYXRhMSwgcmVzdWx0LCBwaXhlbFNpemUp
KTsKICAgICB9CiAgICAgewotICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9j
ayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkMik7CisgICAgICAgIENDUmVzb3VyY2VQ
cm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBsb2NrKGNoaWxkUmVzb3VyY2VQcm92aWRlci5nZXQo
KSwgaWQyKTsKICAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAg
ICAgY2hpbGRDb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAgICAgY2hpbGRDb250ZXh0M0QtPmdldFBpeGVs
cyhzaXplLCBmb3JtYXQsIHJlc3VsdCk7CkBAIC01MTksNCArNTM2LDkgQEAgVEVTVF9GKENDUmVz
b3VyY2VQcm92aWRlclRlc3QsIFRyYW5zZmVyUmVzb3VyY2VzKQogICAgIEVYUEVDVF9FUSgwdSwg
bV9yZXNvdXJjZVByb3ZpZGVyLT5tYWlsYm94Q291bnQoKSk7CiB9CiAKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKENDUmVzb3VyY2VQcm92aWRlclRlc3RzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVz
dGluZzo6VmFsdWVzKENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpCaXRtYXAp
KTsKKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159246</attachid>
            <date>2012-08-17 17:59:29 -0700</date>
            <delta_ts>2012-08-20 14:28:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120817175853.patch</filename>
            <type>text/plain</type>
            <size>39955</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3YmRjOTUxMGU3MmFl
NmM4MjM4NTFjNGFmOTA1NDY3YzRiMmJlZi4uODZjYTJiNjRkYjA5YWM5N2Q0ZTYzNjZlZTUyZmYx
ZWM5Njg1YzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTA4LTE1ICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFi
aWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAg
ICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQg
YXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIEFzIGRpc2N1c3NlZCBpbiBCdWcgOTM0NDIsIHdl
IHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIgdG8gYmUgYWJsZQorICAgICAgICB0byBoYW5kbGUg
ZGlmZmVyZW50IHJlc291cmNlIHR5cGVzIGF0IHRoZSBzYW1lIHRpbWUuICBJbiBwcmFjdGljZSwg
YQorICAgICAgICBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMgZGVzaXJlZCBmb3IgbW9zdCB1c2Vz
IHdpdGhpbiBhIHNpbmdsZQorICAgICAgICBjb21wb3NpdG9yIGluc3RhbmNlLCB3aGljaCBpcyBz
cGVjaWZpZWQgYnkgdGhlIGRlZmF1bHQgcmVzb3VyY2UgdHlwZS4KKyAgICAgICAgRGVmYXVsdCBy
ZXNvdXJjZSB0eXBlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgbW9zdGx5IDEtdG8tMSB3aXRoCisgICAg
ICAgIENDUmVuZGVyZXIgdHlwZXMuCisKKyAgICAgICAgTmV3IHRlc3RzIGFkZGVkIGJ5IHBhcmFt
ZXRyaXppbmcgZXhpc3RpbmcgQ0NSZXNvdXJjZVByb3ZpZGVyIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVy
VG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKERyYXdpbmdGcmFtZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZUdMVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJl
c291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OmRlbGV0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQ
cm92aWRlcjo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpzaGFsbG93Rmx1
c2hJZlN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6Omxv
Y2tGb3JSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2Nr
Rm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JX
cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0Zvcldy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExv
Y2tHTDo6U2NvcGVkUmVhZExvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6On5TY29wZWRSZWFkTG9ja0dMKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6OlNjb3BlZFdyaXRl
TG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3Jp
dGVMb2NrR0w6On5TY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjpTY29wZWRS
ZWFkTG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
U2NvcGVkUmVhZExvY2tTb2Z0d2FyZTo6flNjb3BlZFJlYWRMb2NrU29mdHdhcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6
U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVBy
b3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6flNjb3BlZFdyaXRlTG9ja1NvZnR3YXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Q0NSZXNvdXJjZVByb3Zp
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpzZXRDcmVhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0aW9uUG9saWN5KToKKyAgICAgICAgKENDUmVzb3VyY2VQcm92
aWRlcik6CisgICAgICAgIChTY29wZWRSZWFkTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTDo6dGV4dHVyZUlkKToKKyAgICAgICAg
KFNjb3BlZFdyaXRlTG9ja0dMKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6U2NvcGVkV3JpdGVMb2NrR0w6OnRleHR1cmVJZCk6CisgICAgICAgIChTY29wZWRSZWFkTG9j
a1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVk
UmVhZExvY2tTb2Z0d2FyZTo6c2tCaXRtYXApOgorICAgICAgICAoU2NvcGVkV3JpdGVMb2NrU29m
dHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0
ZUxvY2tTb2Z0d2FyZTo6c2tDYW52YXMpOgorICAgICAgICAoUmVzb3VyY2UpOgorCiAyMDEyLTA4
LTE3ICBBbGljZSBDaGVuZyAgPGFsaWNlX2NoZW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVz
ZXJ2ZSBzdHlsaW5nIGVsZW1lbnRzIGluIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZjhkZWUxMWIyNjU3YjlmMjEwMTFhOTM5MDhlZDEwMzFiZGQ1
ODFlYS4uMDIxYzQxOGIyZmE1Y2JhNWU5ZGU5NjIyOWFkYTQyZDFjMDI0M2M4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOC0xNSAgQWxleGFuZHJl
IEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc29m
dHdhcmUgYml0bWFwIHJlc291cmNlcyB0byBDQ1Jlc291cmNlUHJvdmlkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjc3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5
IHRvIENDUmVzb3VyY2VQcm92aWRlciB0byB1c2Ugc29mdHdhcmUgYml0bWFwcy4KKyAgICAgICAg
VGhleSBhcmUgYWxsb2NhdGVkIGFzIHBsYWluLW9sZC1tZW1vcnksIGFuZCBleHBvc2VkIGFzIFNr
aWEgb2JqZWN0cy4KKworICAgICAgICBBcyBkaXNjdXNzZWQgaW4gQnVnIDkzNDQyLCB3ZSB3YW50
IHRoZSBSZXNvdXJjZVByb3ZpZGVyIHRvIGJlIGFibGUKKyAgICAgICAgdG8gaGFuZGxlIGRpZmZl
cmVudCByZXNvdXJjZSB0eXBlcyBhdCB0aGUgc2FtZSB0aW1lLiAgSW4gcHJhY3RpY2UsIGEKKyAg
ICAgICAgZGVmYXVsdCByZXNvdXJjZSB0eXBlIGlzIGRlc2lyZWQgZm9yIG1vc3QgdXNlcyB3aXRo
aW4gYSBzaW5nbGUKKyAgICAgICAgY29tcG9zaXRvciBpbnN0YW5jZSwgd2hpY2ggaXMgc3BlY2lm
aWVkIGJ5IHRoZSBkZWZhdWx0IHJlc291cmNlIHR5cGUuCisgICAgICAgIERlZmF1bHQgcmVzb3Vy
Y2UgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIGJlIG1vc3RseSAxLXRvLTEgd2l0aAorICAgICAgICBD
Q1JlbmRlcmVyIHR5cGVzLgorCisgICAgICAgIE5ldyB0ZXN0cyBhZGRlZCBieSBwYXJhbWV0cml6
aW5nIGV4aXN0aW5nIENDUmVzb3VyY2VQcm92aWRlciB0ZXN0cy4KKworICAgICAgICAqIHRlc3Rz
L0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDQ1Jlc291cmNl
UHJvdmlkZXJUZXN0OjpnZXRSZXNvdXJjZVBpeGVscyk6CisKIDIwMTItMDgtMTcgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMjU5MjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBk
YTJlY2M2MTA5YzVkNGVjYjRiNjg4OTBiMDg2ZjEyYTA5YTY0NDg3Li4xMDFhZDRiYjE3OWI2ZGIz
Y2I5YTY5NjkxOWMwNmQ4ZDk3MWYyM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
QEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoV2ViR3JhcGhpYwogICAgIGNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgdGV4dHVyZS0+YWNxdWlyZUJhY2tpbmdUZXh0
dXJlKHJlc291cmNlUHJvdmlkZXIpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUg
bG9jayhyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOworICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0wgbG9jayhyZXNvdXJjZVByb3ZpZGVyLCB0
ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOwogICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52
YXMgdG8gZHJhdyBvbi4KICAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2Vs
ZXJhdGVkQ2FudmFzKGdyQ29udGV4dCwgdGV4dHVyZS0+c2l6ZSgpLCBsb2NrLnRleHR1cmVJZCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYjkzMjgwMGY2
NzZiNDQwMDg4ZDA1N2VmNDAwOTdlYzBkZWVhMWFmYS4uMzUxOTYwNjExMTIwOGUxMWU4NGViNGFm
NWM2NzhlMjQ2N2FiMDc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CkBAIC01NDIsNyArNTQyLDcgQEAgc3RhdGljIGlubGluZSBTa0JpdG1hcCBhcHBseUZpbHRlcnMo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogCiAgICAgbGF5ZXJS
ZW5kZXJlci0+Y29udGV4dCgpLT5mbHVzaCgpOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VG
b3JXcml0ZSBsb2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJvdmlkZXIoKSwgc291cmNlVGV4
dHVyZS0+aWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCBs
b2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJvdmlkZXIoKSwgc291cmNlVGV4dHVyZS0+aWQo
KSk7CiAgICAgU2tCaXRtYXAgc291cmNlID0gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHko
ZmlsdGVycywgbG9jay50ZXh0dXJlSWQoKSwgc291cmNlVGV4dHVyZS0+c2l6ZSgpLCBmaWx0ZXJD
b250ZXh0LCBmaWx0ZXJHckNvbnRleHQpOwogICAgIHJldHVybiBzb3VyY2U7CiB9CkBAIC02NDQs
MjAgKzY0NCwyMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NR
dWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAogICAgIC8vIEZJWE1FOiBDYWNo
ZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3IgYm90aCB0aGUg
c3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUgY29u
dGVudHMgdGV4dHVyZS4KICAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMo
dGhpcywgcmVuZGVyUGFzcy0+ZmlsdGVycygpLCBjb250ZW50c1RleHR1cmUpOwotICAgIE93blB0
cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOworICAg
IE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w+IGNvbnRlbnRzUmVz
b3VyY2VMb2NrOwogICAgIHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVyZUlkID0gMDsKICAgICBpZiAo
ZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSkgewogICAgICAgICBHclRleHR1cmUqIHRleHR1cmUg
PSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkp
OwogICAgICAgICBjb250ZW50c1RleHR1cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUo
KTsKICAgICB9IGVsc2UgewotICAgICAgICBjb250ZW50c1Jlc291cmNlTG9jayA9IGFkb3B0UHRy
KG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQobV9yZXNvdXJjZVByb3ZpZGVyLCBjb250
ZW50c1RleHR1cmUtPmlkKCkpKTsKKyAgICAgICAgY29udGVudHNSZXNvdXJjZUxvY2sgPSBhZG9w
dFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMKG1fcmVzb3VyY2VQ
cm92aWRlciwgY29udGVudHNUZXh0dXJlLT5pZCgpKSk7CiAgICAgICAgIGNvbnRlbnRzVGV4dHVy
ZUlkID0gY29udGVudHNSZXNvdXJjZUxvY2stPnRleHR1cmVJZCgpOwogICAgIH0KIAogICAgIC8v
IERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBpcyBvbmUuCiAgICAgaWYgKGJh
Y2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5kVGV4dHVyZS0+c2l6
ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKLSAgICAgICAgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVyZS0+
aWQoKSk7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBsb2Nr
KG1fcmVzb3VyY2VQcm92aWRlciwgYmFja2dyb3VuZFRleHR1cmUtPmlkKCkpOwogICAgICAgICBj
b3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZnJhbWUsIGxvY2sudGV4dHVyZUlkKCksIHF1YWQtPnF1
YWRSZWN0KCksIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSk7CiAgICAgfQogCkBAIC02NzQsMTAgKzY3
NCwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKERy
YXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAogICAgICAgICBkZXZpY2VMYXllckVkZ2Vz
LmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgpOwogICAgIH0KIAotICAgIE93blB0cjxDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IG1hc2tSZXNvdXJjZUxvY2s7CisgICAgT3duUHRyPEND
UmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTD4gbWFza1Jlc291cmNlTG9jazsKICAg
ICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkID0gMDsKICAgICBpZiAocXVhZC0+bWFza1Jlc291cmNl
SWQoKSkgewotICAgICAgICBtYXNrUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIobmV3IENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yUmVhZChtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPm1hc2tSZXNvdXJj
ZUlkKCkpKTsKKyAgICAgICAgbWFza1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Jlc291
cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5t
YXNrUmVzb3VyY2VJZCgpKSk7CiAgICAgICAgIG1hc2tUZXh0dXJlSWQgPSBtYXNrUmVzb3VyY2VM
b2NrLT50ZXh0dXJlSWQoKTsKICAgICB9CiAKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0
IENDVGlsZURyYXdRdQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbSh1
bmlmb3Jtcy5wcm9ncmFtKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3Jt
MWkodW5pZm9ybXMuc2FtcGxlckxvY2F0aW9uLCAwKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAg
IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQ
cm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFJlYWRMb2NrR0wgcXVhZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQt
PnJlc291cmNlSWQoKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZFJlc291cmNlTG9jay50ZXh0dXJl
SWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlO
X0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkp
KTsKQEAgLTk3NSw5ICs5NzUsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lV
VlZpZGVvUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1lVVlZpZAogICAgIGNvbnN0
IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSA9IHF1YWQtPnVQbGFuZSgpOwog
ICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSA9IHF1YWQtPnZQ
bGFuZSgpOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHlQbGFuZUxvY2sobV9y
ZXNvdXJjZVByb3ZpZGVyLCB5UGxhbmUucmVzb3VyY2VJZCk7Ci0gICAgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JSZWFkIHVQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB1UGxhbmUucmVzb3Vy
Y2VJZCk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHZQbGFuZUxvY2sobV9yZXNv
dXJjZVByb3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpTY29wZWRSZWFkTG9ja0dMIHlQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB5UGxhbmUu
cmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHVQ
bGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB1UGxhbmUucmVzb3VyY2VJZCk7CisgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHZQbGFuZUxvY2sobV9yZXNvdXJjZVBy
b3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgp
LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOwogICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIHlQbGFuZUxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUyKSk7CkBAIC0x
MDg2LDcgKzEwODYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVR
dWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDVGV4dHVyZQogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKGJpbmRpbmcudGV4VHJhbnNmb3JtTG9jYXRpb24sIHV2
UmVjdC54KCksIHV2UmVjdC55KCksIHV2UmVjdC53aWR0aCgpLCB1dlJlY3QuaGVpZ2h0KCkpKTsK
IAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgcXVh
ZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7Cisg
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHF1YWRSZXNvdXJjZUxvY2so
bV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOwogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHF1YWRSZXNvdXJjZUxvY2sudGV4dHVyZUlkKCkpKTsKIAogICAgIC8vIEZJWE1FOiBzZXR0aW5n
IHRoZSB0ZXh0dXJlIHBhcmFtZXRlcnMgZXZlcnkgdGltZSBpcyByZWR1bmRhbnQuIE1vdmUgdGhp
cyBjb2RlIHNvbWV3aGVyZQpAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgYm9vbCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUs
IGNvbnMKICAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKENDUmVu
ZGVyZXI6OkltcGxQb29sLCBkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIGxvY2sobV9yZXNvdXJj
ZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3Bl
ZFdyaXRlTG9ja0dMIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKTsKICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
dGV4dHVyZS0+Zm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lkdGgo
KSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgMCkpOwpAQCAtMTQyMyw3ICsxNDIzLDcgQEAgYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShEcmF3aW5nRnJh
bWUmIGZyYW1lLCBjb25zdAogICAgIEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKIAogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0gICAgZnJhbWUuY3VycmVu
dEZyYW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldy
aXRlKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkpOworICAgIGZyYW1lLmN1cnJl
bnRGcmFtZWJ1ZmZlckxvY2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29w
ZWRXcml0ZUxvY2tHTChtX3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpKTsKICAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQgPSBmcmFtZS5jdXJyZW50RnJhbWVidWZmZXJMb2NrLT50ZXh0dXJl
SWQoKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9S
X0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkLCAw
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggZmI1MWY4NDBlODkz
YTM0NDcyYjJmN2VmODIyMmNjODcxMjRmMDRkNy4uM2M2ZDM2OWM1MWQ5NTZkY2YxODgyYmI5MzA2
NjNmYWQwYzdhZTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEy
MCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RS
ZW5kZXJQYXNzOwogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIGN1cnJlbnRSZW5kZXJQYXNz
OwogICAgICAgICBjb25zdCBDQ1Njb3BlZFRleHR1cmUqIGN1cnJlbnRUZXh0dXJlOwotICAgICAg
ICBPd25QdHI8Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZT4gY3VycmVudEZyYW1lYnVmZmVy
TG9jazsKKyAgICAgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2Nr
R0w+IGN1cnJlbnRGcmFtZWJ1ZmZlckxvY2s7CiAKICAgICAgICAgRmxvYXRSZWN0IHJvb3REYW1h
Z2VSZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcAppbmRleCA4YTVk
NmFmOWRmOTBiNmNmMmI2Yzk0ODZjZTA5ZWExNWQ3ZDRjMGQ5Li45ZTQ1MDdlNGY4NTdkN2ZmZjc1
YjQxYjBjYTU0MjRmZjQ4ODA2ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRl
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgiIC8vIEZvciB0aGUgR0xDKCkgbWFjcm8KICNpbmNsdWRl
ICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAKQEAgLTg4LDEzICs4OSwyNCBAQCBib29sIENDUmVzb3VyY2VQcm92aWRlcjo6aW5Vc2VCeUNv
bnN1bWVyKFJlc291cmNlSWQgaWQpCiAKIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBD
Q1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXpl
JiBzaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQgaGludCkKIHsKKyAgICBz
d2l0Y2ggKG1fZGVmYXVsdFJlc291cmNlVHlwZSkgeworICAgIGNhc2UgR0xUZXh0dXJlOgorICAg
ICAgICByZXR1cm4gY3JlYXRlR0xUZXh0dXJlKHBvb2wsIHNpemUsIGZvcm1hdCwgaGludCk7Cisg
ICAgY2FzZSBCaXRtYXA6CisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpOworICAgICAgICByZXR1cm4gY3JlYXRlQml0bWFwKHBvb2wsIHNpemUpOworICAg
IH0KKworICAgIENSQVNIKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZUdMVGV4dHVyZShpbnQgcG9v
bCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50
IGhpbnQpCit7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICB1bnNp
Z25lZCB0ZXh0dXJlSWQgPSAwOwogICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2Qg
PSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4K
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVChjb250ZXh0M2QpOwogICAgIEdM
Qyhjb250ZXh0M2QsIHRleHR1cmVJZCA9IGNvbnRleHQzZC0+Y3JlYXRlVGV4dHVyZSgpKTsKICAg
ICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2Qt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsK
QEAgLTExNSwxMiArMTI3LDIzIEBAIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zCiAgICAgcmV0dXJu
IGlkOwogfQogCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpjcmVhdGVCaXRtYXAoaW50IHBvb2wsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKworICAgIHVpbnQ4X3QqIHBpeGVscyA9
IG5ldyB1aW50OF90W3NpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0XTsKKworICAgIFJl
c291cmNlSWQgaWQgPSBtX25leHRJZCsrOworICAgIFJlc291cmNlIHJlc291cmNlKHBpeGVscywg
cG9vbCwgc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIG1fcmVzb3VyY2VzLmFk
ZChpZCwgcmVzb3VyY2UpOworICAgIHJldHVybiBpZDsKK30KKwogQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJu
YWxUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlSWQgaWQgPSBtX25leHRJZCsrOwotICAgIFJlc291
cmNlIHJlc291cmNlOwotICAgIHJlc291cmNlLmdsSWQgPSB0ZXh0dXJlSWQ7CisgICAgUmVzb3Vy
Y2UgcmVzb3VyY2UodGV4dHVyZUlkLCAwLCBJbnRTaXplKCksIDApOwogICAgIHJlc291cmNlLmV4
dGVybmFsID0gdHJ1ZTsKICAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsKICAgICBy
ZXR1cm4gaWQ7CkBAIC0xMjksMTUgKzE1MiwxNSBAQCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleAog
dm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZVJlc291cmNlKFJlc291cmNlSWQgaWQpCiB7
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNv
bnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgUmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9
IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+
c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOwotICAgIGlmICghaXQtPnNlY29uZC5leHRlcm5hbCkK
KworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRl
eHQzRCgpOworICAgIGlmIChjb250ZXh0M2QgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpCiAgICAg
ICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVyZShpdC0+c2Vjb25kLmds
SWQpKTsKKyAgICBpZiAoaXQtPnNlY29uZC5waXhlbHMpCisgICAgICAgIGRlbGV0ZSBpdC0+c2Vj
b25kLnBpeGVsczsKKwogICAgIG1fcmVzb3VyY2VzLnJlbW92ZShpdCk7CiB9CiAKQEAgLTE1Myw3
MSArMTc2LDY3IEBAIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVPd25lZFJlc291cmNl
cyhpbnQgcG9vbCkKICAgICAgICAgZGVsZXRlUmVzb3VyY2UoKml0KTsKIH0KIAotdm9pZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQorQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZVR5
cGUgQ0NSZXNvdXJjZVByb3ZpZGVyOjpyZXNvdXJjZVR5cGUoUmVzb3VyY2VJZCBpZCkKIHsKLSAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX3RleFN1Yklt
YWdlLmdldCgpKTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250
ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+
c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQgJiYg
IWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotCi0gICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5nbElkKTsKLSAgICBtX3RleFN1
YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdE9mZnNldCwg
aXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC50eXBlOwogfQogCi11bnNpZ25lZCBD
Q1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQordm9pZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmlu
ZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25k
LmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQgJiYgIWl0LT5z
ZWNvbmQuZXh0ZXJuYWwpOwotICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSB0cnVlOwot
ICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7Ci19CiAKLXZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVy
Ojp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQotewotICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c0ltcGxUaHJlYWQoKSk7Ci0gICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5z
ZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotICAgIGl0LT5z
ZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKKyAgICBpZiAoaXQtPnNlY29uZC5nbElkKSB7
CisgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNv
bnRleHQzRCgpOworICAgICAgICBBU1NFUlQoY29udGV4dDNkKTsKKyAgICAgICAgQVNTRVJUKG1f
dGV4U3ViSW1hZ2UuZ2V0KCkpOworICAgICAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBpdC0+c2Vjb25kLmdsSWQpOworICAgICAgICBtX3Rl
eFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdE9mZnNl
dCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAgfQorCisgICAgaWYgKGl0LT5z
ZWNvbmQucGl4ZWxzKSB7CisgICAgICAgIFNrQml0bWFwIHNyY0Z1bGw7CisgICAgICAgIHNyY0Z1
bGwuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgaW1hZ2VSZWN0LndpZHRo
KCksIGltYWdlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNyY0Z1bGwuc2V0UGl4ZWxzKGNvbnN0
X2Nhc3Q8dWludDhfdCo+KGltYWdlKSk7CisgICAgICAgIFNrQml0bWFwIHNyY1N1YnNldDsKKyAg
ICAgICAgU2tJUmVjdCBza1NvdXJjZVJlY3QgPSBTa0lSZWN0OjpNYWtlWFlXSChzb3VyY2VSZWN0
LngoKSwgc291cmNlUmVjdC55KCksIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWln
aHQoKSk7CisgICAgICAgIHNyY0Z1bGwuZXh0cmFjdFN1YnNldCgmc3JjU3Vic2V0LCBza1NvdXJj
ZVJlY3QpOworCisgICAgICAgIFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlIGxvY2sodGhpcywgaWQp
OworICAgICAgICBTa0NhbnZhcyogZGVzdCA9IGxvY2suc2tDYW52YXMoKTsKKyAgICAgICAgZGVz
dC0+d3JpdGVQaXhlbHMoc3JjU3Vic2V0LCBkZXN0T2Zmc2V0LndpZHRoKCksIGRlc3RPZmZzZXQu
aGVpZ2h0KCkpOworICAgIH0KIH0KIAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmZsdXNoKCkK
IHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICgh
Y29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBz
b2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb250ZXh0
M2QtPmZsdXNoKCk7CisgICAgaWYgKGNvbnRleHQzZCkKKyAgICAgICAgY29udGV4dDNkLT5mbHVz
aCgpOwogfQogCiBib29sIENDUmVzb3VyY2VQcm92aWRlcjo6c2hhbGxvd0ZsdXNoSWZTdXBwb3J0
ZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAg
aWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGgg
Zm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgIGlmICghY29udGV4dDNkIHx8ICFtX3VzZVNo
YWxsb3dGbHVzaCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAotICAgIGlmIChtX3Vz
ZVNoYWxsb3dGbHVzaCkKLSAgICAgICAgY29udGV4dDNkLT5zaGFsbG93Rmx1c2hDSFJPTUlVTSgp
OwotICAgIHJldHVybiBtX3VzZVNoYWxsb3dGbHVzaDsKKyAgICBjb250ZXh0M2QtPnNoYWxsb3dG
bHVzaENIUk9NSVVNKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXVuc2lnbmVkIENDUmVzb3Vy
Y2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKK2NvbnN0IENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3Vy
Y2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJl
c291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VS
VChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSk7
Ci0gICAgKysoaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKLSAgICByZXR1cm4gaXQtPnNl
Y29uZC5nbElkOworICAgIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCsrOworICAgIHJldHVy
biAmaXQtPnNlY29uZDsKIH0KIAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0ZvclJl
YWQoUmVzb3VyY2VJZCBpZCkKQEAgLTIyNSwxNyArMjQ0LDk0IEBAIHZvaWQgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjp1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQgaWQpCiAgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291
cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgaXQt
PnNlY29uZC5sb2NrRm9yUmVhZENvdW50ID4gMCk7Ci0gICAgLS0oaXQtPnNlY29uZC5sb2NrRm9y
UmVhZENvdW50KTsKKyAgICBpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQtLTsKK30KKworY29u
c3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZSogQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2Nr
Rm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQo
aWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5s
b2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vj
b25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gdHJ1ZTsKKyAg
ICByZXR1cm4gJml0LT5zZWNvbmQ7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxv
Y2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmlu
ZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQu
bG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAgIGl0LT5zZWNvbmQu
bG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRS
ZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAg
OiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJ
ZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0Zv
clJlYWQocmVzb3VyY2VJZCktPmdsSWQpCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZUlkKTsKK30K
KworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjp+U2NvcGVkUmVhZExvY2tH
TCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVzb3VyY2VJ
ZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6OlNjb3BlZFdy
aXRlTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291cmNlUHJvdmlk
ZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQorICAg
ICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvcldyaXRlKHJlc291cmNlSWQp
LT5nbElkKQoreworICAgIEFTU0VSVChtX3RleHR1cmVJZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92
aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6On5TY29wZWRXcml0ZUxvY2tHTCgpCit7CisgICAgbV9y
ZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JXcml0ZShtX3Jlc291cmNlSWQpOworfQorCit2b2lk
IENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJjZShTa0JpdG1h
cCogc2tCaXRtYXAsIGNvbnN0IFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQocmVz
b3VyY2UtPnBpeGVscyk7CisgICAgQVNTRVJUKHJlc291cmNlLT5mb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEpOworICAgIHNrQml0bWFwLT5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdC
Xzg4ODhfQ29uZmlnLCByZXNvdXJjZS0+c2l6ZS53aWR0aCgpLCByZXNvdXJjZS0+c2l6ZS5oZWln
aHQoKSk7CisgICAgc2tCaXRtYXAtPnNldFBpeGVscyhyZXNvdXJjZS0+cGl4ZWxzKTsKK30KKwor
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjpTY29wZWRSZWFkTG9j
a1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291cmNlUHJvdmlk
ZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQorewor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJjZSgmbV9z
a0JpdG1hcCwgcmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCkpOworfQor
CitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6On5TY29wZWRSZWFk
TG9ja1NvZnR3YXJlKCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvclJlYWQo
bV9yZXNvdXJjZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tT
b2Z0d2FyZTo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkK
KyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9yZXNv
dXJjZUlkKHJlc291cmNlSWQpCit7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNr
Qml0bWFwV2l0aFJlc291cmNlKCZtX3NrQml0bWFwLCByZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9y
V3JpdGUocmVzb3VyY2VJZCkpOworICAgIG1fc2tDYW52YXMuc2V0Qml0bWFwRGV2aWNlKG1fc2tC
aXRtYXApOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJl
Ojp+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKQoreworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+
dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKIH0KIAogQ0NSZXNvdXJjZVByb3ZpZGVyOjpD
Q1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fbmV4dElkKDEpCiAgICAgLCBtX25leHRDaGlsZCgxKQor
ICAgICwgbV9kZWZhdWx0UmVzb3VyY2VUeXBlKEdMVGV4dHVyZSkKICAgICAsIG1fdXNlVGV4dHVy
ZVN0b3JhZ2VFeHQoZmFsc2UpCiAgICAgLCBtX3VzZVRleHR1cmVVc2FnZUhpbnQoZmFsc2UpCiAg
ICAgLCBtX3VzZVNoYWxsb3dGbHVzaChmYWxzZSkKLSAgICAsIG1fbWF4VGV4dHVyZVNpemUoMCkK
KyAgICAsIG1fbWF4VGV4dHVyZVNpemUoSU5UX01BWCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
c291cmNlUHJvdmlkZXIuaAppbmRleCBiODczM2ExNjM4ZmRhYTdiOGJhZDZiZDU0MWJiNWFiN2I5
ZTU5Yzc0Li5lMjQ0YmI2MzYwNzcwNTA2ZTk3NTdjOTI0MjIzYWVjNTVhYzllZWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291
cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUg
IkNDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU2tCaXRtYXAuaCIKKyNpbmNsdWRlICJTa0Nh
bnZhcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDQsOCArNDYsNiBAQCBjbGFzcyBXZWJHcmFw
aGljc0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvclJlYWQ7Ci1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlOwog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIExheWVyVGV4dHVyZVN1YkltYWdlOwogCkBAIC01OCw2ICs1
OCwxMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVzb3VyY2VJZD4gUmVzb3VyY2VJ
ZEFycmF5OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZXNvdXJjZUlkLCBSZXNvdXJjZUlkPiBSZXNv
dXJjZUlkTWFwOwogICAgIGVudW0gVGV4dHVyZVVzYWdlSGludCB7IFRleHR1cmVVc2FnZUFueSwg
VGV4dHVyZVVzYWdlRnJhbWVidWZmZXIgfTsKKyAgICBlbnVtIFJlc291cmNlVHlwZSB7CisgICAg
ICAgIEdMVGV4dHVyZSA9IDEsCisgICAgICAgIEJpdG1hcCwKKyAgICB9OwogICAgIHN0cnVjdCBN
YWlsYm94IHsKICAgICAgICAgR0MzRGJ5dGUgbmFtZVs2NF07CiAgICAgfTsKQEAgLTg3LDExICs5
MSwxOSBAQCBwdWJsaWM6CiAKICAgICAvLyBQcm9kdWNlciBpbnRlcmZhY2UuCiAKLSAgICAvLyBD
cmVhdGVzIGEgcmVzb3VyY2Ugb2YgdGhlIGdpdmVuIHNpemUvZm9ybWF0LCBpbnRvIHRoZSBnaXZl
biBwb29sLgorICAgIHZvaWQgc2V0RGVmYXVsdFJlc291cmNlVHlwZShSZXNvdXJjZVR5cGUgdHlw
ZSkgeyBtX2RlZmF1bHRSZXNvdXJjZVR5cGUgPSB0eXBlOyB9CisgICAgUmVzb3VyY2VUeXBlIGRl
ZmF1bHRSZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRSZXNvdXJjZVR5cGU7
IH0KKyAgICBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKFJlc291cmNlSWQpOworCisgICAgLy8g
Q3JlYXRlcyBhIHJlc291cmNlIG9mIHRoZSBkZWZhdWx0IHJlc291cmNlIHR5cGUuCiAgICAgUmVz
b3VyY2VJZCBjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVt
IGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCk7CiAKLSAgICAvLyBXcmFwcyBhbiBleHRlcm5hbCB0
ZXh0dXJlIGludG8gYSByZXNvdXJjZS4KKyAgICAvLyBZb3UgY2FuIGFsc28gZXhwbGljaXRseSBj
cmVhdGUgYSBzcGVjaWZpYyByZXNvdXJjZSB0eXBlLgorICAgIFJlc291cmNlSWQgY3JlYXRlR0xU
ZXh0dXJlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJl
VXNhZ2VIaW50KTsKKyAgICBSZXNvdXJjZUlkIGNyZWF0ZUJpdG1hcChpbnQgcG9vbCwgY29uc3Qg
SW50U2l6ZSYpOworICAgIC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUgaW50byBhIEdMIHJl
c291cmNlLgogICAgIFJlc291cmNlSWQgY3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJl
KHVuc2lnbmVkIHRleHR1cmVJZCk7CisKICAgICB2b2lkIGRlbGV0ZVJlc291cmNlKFJlc291cmNl
SWQpOwogCiAgICAgLy8gRGVsZXRlcyBhbGwgcmVzb3VyY2VzIG93bmVkIGJ5IGEgZ2l2ZW4gcG9v
bC4KQEAgLTE0NywxMyArMTU5LDcyIEBAIHB1YmxpYzoKICAgICAvLyBPbmx5IGZvciB0ZXN0aW5n
CiAgICAgc2l6ZV90IG1haWxib3hDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbGJveGVzLnNp
emUoKTsgfQogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQ7Ci0gICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGU7
CisgICAgLy8gVGhlIGZvbGxvd2luZyBsb2NrIGNsYXNzZXMgYXJlIHBhcnQgb2YgdGhlIENDUmVz
b3VyY2VQcm92aWRlciBBUEkgYW5kIGFyZQorICAgIC8vIG5lZWRlZCB0byByZWFkIGFuZCB3cml0
ZSB0aGUgcmVzb3VyY2UgY29udGVudHMuIFRoZSB1c2VyIG11c3QgZW5zdXJlCisgICAgLy8gdGhh
dCB0aGV5IG9ubHkgdXNlIEdMIGxvY2tzIG9uIEdMIHJlc291cmNlcywgZXRjLCBhbmQgdGhpcyBp
cyBlbmZvcmNlZAorICAgIC8vIGJ5IGFzc2VydGlvbnMuCisgICAgY2xhc3MgU2NvcGVkUmVhZExv
Y2tHTCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlYWRMb2NrR0wpOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVhZExvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIq
LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAgICB+U2NvcGVkUmVhZExv
Y2tHTCgpOworCisgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZUlkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIq
IG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgfTsK
KworICAgIGNsYXNzIFNjb3BlZFdyaXRlTG9ja0dMIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NvcGVkV3JpdGVMb2NrR0wpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkV3Jp
dGVMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkKTsKKyAgICAgICAgflNjb3BlZFdyaXRlTG9ja0dMKCk7CisKKyAgICAgICAgdW5zaWduZWQg
dGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOworICAgICAgICB1
bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkUmVhZExvY2tT
b2Z0d2FyZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlYWRMb2NrU29m
dHdhcmUpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVhZExvY2tTb2Z0d2FyZShDQ1Jl
c291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAg
ICB+U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSgpOworCisgICAgICAgIGNvbnN0IFNrQml0bWFwKiBz
a0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuICZtX3NrQml0bWFwOyB9CiAKKyAgICBwcml2YXRlOgor
ICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgU2tC
aXRtYXAgbV9za0JpdG1hcDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkV3JpdGVMb2NrU29m
dHdhcmUgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRXcml0ZUxvY2tTb2Z0
d2FyZSk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZShDQ1Jl
c291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAg
ICB+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKTsKKworICAgICAgICBTa0NhbnZhcyogc2tDYW52
YXMoKSB7IHJldHVybiAmbV9za0NhbnZhczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgICAgIENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgICAgIFNrQml0bWFwIG1fc2tC
aXRtYXA7CisgICAgICAgIFNrQ2FudmFzIG1fc2tDYW52YXM7CisgICAgfTsKKworcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBSZXNvdXJjZSgpCiAgICAgICAgICAgICA6
IGdsSWQoMCkKKyAgICAgICAgICAgICwgcGl4ZWxzKDApCiAgICAgICAgICAgICAsIHBvb2woMCkK
ICAgICAgICAgICAgICwgbG9ja0ZvclJlYWRDb3VudCgwKQogICAgICAgICAgICAgLCBsb2NrZWRG
b3JXcml0ZShmYWxzZSkKQEAgLTE2MSw5ICsyMzIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICwgZXhwb3J0ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHNpemUoKQogICAgICAgICAgICAgLCBm
b3JtYXQoMCkKKyAgICAgICAgICAgICwgdHlwZShzdGF0aWNfY2FzdDxSZXNvdXJjZVR5cGU+KDAp
KQogICAgICAgICB7IH0KICAgICAgICAgUmVzb3VyY2UodW5zaWduZWQgdGV4dHVyZUlkLCBpbnQg
cG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQogICAgICAgICAgICAg
OiBnbElkKHRleHR1cmVJZCkKKyAgICAgICAgICAgICwgcGl4ZWxzKDApCiAgICAgICAgICAgICAs
IHBvb2wocG9vbCkKICAgICAgICAgICAgICwgbG9ja0ZvclJlYWRDb3VudCgwKQogICAgICAgICAg
ICAgLCBsb2NrZWRGb3JXcml0ZShmYWxzZSkKQEAgLTE3MSw4ICsyNDQsMjIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICwgZXhwb3J0ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHNpemUoc2l6ZSkK
ICAgICAgICAgICAgICwgZm9ybWF0KGZvcm1hdCkKKyAgICAgICAgICAgICwgdHlwZShHTFRleHR1
cmUpCisgICAgICAgIHsgfQorICAgICAgICBSZXNvdXJjZSh1aW50OF90KiBwaXhlbHMsIGludCBw
b29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCisgICAgICAgICAgICA6
IGdsSWQoMCkKKyAgICAgICAgICAgICwgcGl4ZWxzKHBpeGVscykKKyAgICAgICAgICAgICwgcG9v
bChwb29sKQorICAgICAgICAgICAgLCBsb2NrRm9yUmVhZENvdW50KDApCisgICAgICAgICAgICAs
IGxvY2tlZEZvcldyaXRlKGZhbHNlKQorICAgICAgICAgICAgLCBleHRlcm5hbChmYWxzZSkKKyAg
ICAgICAgICAgICwgZXhwb3J0ZWQoZmFsc2UpCisgICAgICAgICAgICAsIHNpemUoc2l6ZSkKKyAg
ICAgICAgICAgICwgZm9ybWF0KGZvcm1hdCkKKyAgICAgICAgICAgICwgdHlwZShCaXRtYXApCiAg
ICAgICAgIHsgfQogICAgICAgICB1bnNpZ25lZCBnbElkOworICAgICAgICB1aW50OF90KiBwaXhl
bHM7CiAgICAgICAgIGludCBwb29sOwogICAgICAgICBpbnQgbG9ja0ZvclJlYWRDb3VudDsKICAg
ICAgICAgYm9vbCBsb2NrZWRGb3JXcml0ZTsKQEAgLTE4MCw2ICsyNjcsNyBAQCBwcml2YXRlOgog
ICAgICAgICBib29sIGV4cG9ydGVkOwogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIEdD
M0RlbnVtIGZvcm1hdDsKKyAgICAgICAgUmVzb3VyY2VUeXBlIHR5cGU7CiAgICAgfTsKICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVzb3VyY2VJZCwgUmVzb3VyY2U+IFJlc291cmNlTWFwOwogICAgIHN0
cnVjdCBDaGlsZCB7CkBAIC0xOTIsMTMgKzI4MCwxMSBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IENDUmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCopOwogICAgIGJvb2wgaW5pdGlh
bGl6ZSgpOwogCi0gICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50aW5nIHRoZSBy
ZXNvdXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW50by4KLSAgICB1bnNpZ25lZCBsb2NrRm9y
V3JpdGUoUmVzb3VyY2VJZCk7Ci0gICAgdm9pZCB1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsK
LQotICAgIC8vIEdldHMgYSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVzb3VyY2Us
IHRoYXQgY2FuIGJlIHJlbmRlcmVkIHdpdGguCi0gICAgdW5zaWduZWQgbG9ja0ZvclJlYWQoUmVz
b3VyY2VJZCk7CisgICAgY29uc3QgUmVzb3VyY2UqIGxvY2tGb3JSZWFkKFJlc291cmNlSWQpOwog
ICAgIHZvaWQgdW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKKyAgICBjb25zdCBSZXNvdXJjZSog
bG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5sb2NrRm9yV3JpdGUoUmVzb3Vy
Y2VJZCk7CisgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJjZShTa0Jp
dG1hcCosIGNvbnN0IFJlc291cmNlKik7CiAKICAgICBib29sIHRyYW5zZmVyUmVzb3VyY2UoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFJlc291cmNlSWQsIFRyYW5zZmVyYWJsZVJlc291
cmNlKik7CiAgICAgdm9pZCB0cmltTWFpbGJveERlcXVlKCk7CkBAIC0yMTEsNiArMjk3LDcgQEAg
cHJpdmF0ZToKIAogICAgIERlcXVlPE1haWxib3g+IG1fbWFpbGJveGVzOwogCisgICAgUmVzb3Vy
Y2VUeXBlIG1fZGVmYXVsdFJlc291cmNlVHlwZTsKICAgICBib29sIG1fdXNlVGV4dHVyZVN0b3Jh
Z2VFeHQ7CiAgICAgYm9vbCBtX3VzZVRleHR1cmVVc2FnZUhpbnQ7CiAgICAgYm9vbCBtX3VzZVNo
YWxsb3dGbHVzaDsKQEAgLTIxOCw0NyArMzA1LDYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9tYXhU
ZXh0dXJlU2l6ZTsKIH07CiAKLWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKTsKLXB1
YmxpYzoKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQoQ0NSZXNvdXJjZVByb3ZpZGVy
KiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3Vy
Y2VJZCkKLSAgICAgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKLSAg
ICAgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKLSAgICAgICAgLCBtX3RleHR1cmVJZChy
ZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yUmVhZChyZXNvdXJjZUlkKSkgeyB9Ci0KLSAgICB+Q0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKCkKLSAgICB7Ci0gICAgICAgIG1fcmVzb3VyY2VQcm92
aWRlci0+dW5sb2NrRm9yUmVhZChtX3Jlc291cmNlSWQpOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7Ci0gICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKLSAgICB1bnNpZ25lZCBtX3RleHR1
cmVJZDsKLX07Ci0KLWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUpOwotcHVibGlj
OgotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJ
ZCkKLSAgICAgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKLSAgICAg
ICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKLSAgICAgICAgLCBtX3RleHR1cmVJZChyZXNv
dXJjZVByb3ZpZGVyLT5sb2NrRm9yV3JpdGUocmVzb3VyY2VJZCkpIHsgfQotCi0gICAgfkNDU2Nv
cGVkTG9ja1Jlc291cmNlRm9yV3JpdGUoKQotICAgIHsKLSAgICAgICAgbV9yZXNvdXJjZVByb3Zp
ZGVyLT51bmxvY2tGb3JXcml0ZShtX3Jlc291cmNlSWQpOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7Ci0gICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKLSAgICB1bnNpZ25lZCBtX3RleHR1
cmVJZDsKLX07CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKaW5kZXggOWU4NTk5YzBmM2Y2NzFiNjgwZGUw
ZmZkMjQ4MDgwMzJmY2ZlNzgxZS4uZmExZGEwOThkYjE0MTQyMWI1MTUwOTk4MDI3MzQ3ODMyNjRh
OTNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNl
UHJvdmlkZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVz
b3VyY2VQcm92aWRlclRlc3QuY3BwCkBAIC0yODcsMjMgKzI4NywzNiBAQCBwcml2YXRlOgogICAg
IFBlbmRpbmdQcm9kdWNlVGV4dHVyZUxpc3QgbV9wZW5kaW5nUHJvZHVjZVRleHR1cmVzOwogfTsK
IAotY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
K2NsYXNzIENDUmVzb3VyY2VQcm92aWRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlVHlwZT4gewogcHVibGljOgogICAgIEND
UmVzb3VyY2VQcm92aWRlclRlc3QoKQogICAgICAgICA6IG1fc2hhcmVkRGF0YShDb250ZXh0U2hh
cmVkRGF0YTo6Y3JlYXRlKCkpCiAgICAgICAgICwgbV9jb250ZXh0KEZha2VXZWJDb21wb3NpdG9y
T3V0cHV0U3VyZmFjZTo6Y3JlYXRlKFJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpjcmVhdGUobV9z
aGFyZWREYXRhLmdldCgpKSkpCiAgICAgICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKENDUmVzb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSkpCiAgICAgeworICAgICAgICBtX3Jl
c291cmNlUHJvdmlkZXItPnNldERlZmF1bHRSZXNvdXJjZVR5cGUoR2V0UGFyYW0oKSk7CiAgICAg
fQogCiAgICAgUmVzb3VyY2VQcm92aWRlckNvbnRleHQqIGNvbnRleHQoKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCo+KG1fY29udGV4dC0+Y29udGV4dDNEKCkp
OyB9CiAKICAgICB2b2lkIGdldFJlc291cmNlUGl4ZWxzKENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZvcm1hdCwgdWludDhf
dCogcGl4ZWxzKQogICAgIHsKLSAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxv
Y2sobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7Ci0gICAgICAgIEFTU0VSVF9ORSgwVSwg
bG9jay50ZXh0dXJlSWQoKSk7Ci0gICAgICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpOwotICAgICAgICBjb250
ZXh0KCktPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHBpeGVscyk7CisgICAgICAgIGlmIChHZXRQ
YXJhbSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlKSB7CisgICAgICAgICAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgbG9ja0dMKG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSwgaWQpOworICAgICAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrR0wudGV4dHVy
ZUlkKCkpOworICAgICAgICAgICAgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgbG9ja0dMLnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQoKS0+Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcGl4ZWxzKTsKKyAgICAgICAgfSBlbHNlIGlm
IChHZXRQYXJhbSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6Qml0bWFwKSB7CisgICAgICAgICAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmUgbG9ja1NvZnR3YXJl
KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQpOworICAgICAgICAgICAgbWVtY3B5KHBpeGVs
cywgbG9ja1NvZnR3YXJlLnNrQml0bWFwKCktPmdldFBpeGVscygpLCBsb2NrU29mdHdhcmUuc2tC
aXRtYXAoKS0+Z2V0U2l6ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZXhwZWN0
TnVtUmVzb3VyY2VzKGludCBjb3VudCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9FUShjb3VudCwg
c3RhdGljX2Nhc3Q8aW50PihtX3Jlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKSk7Cisg
ICAgICAgIGlmIChHZXRQYXJhbSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlKQor
ICAgICAgICAgICAgRVhQRUNUX0VRKGNvdW50LCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsK
ICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTMxMyw3ICszMjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
T3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIAotVEVT
VF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQorVEVTVF9QKENDUmVzb3VyY2VQcm92
aWRlclRlc3QsIEJhc2ljKQogewogICAgIEludFNpemUgc2l6ZSgxLCAxKTsKICAgICBXR0MzRGVu
dW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBAIC0zMjIsNyArMzM1LDcgQEAg
VEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQogICAgIEFTU0VSVF9FUSg0VSwg
cGl4ZWxTaXplKTsKIAogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCA9IG1f
cmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7Ci0gICAgRVhQRUNUX0VRKDEsIGNvbnRl
eHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51bVJlc291cmNlcygxKTsKIAogICAg
IHVpbnQ4X3QgZGF0YVs0XSA9IHsxLCAyLCAzLCA0fTsKICAgICBJbnRSZWN0IHJlY3QoSW50UG9p
bnQoKSwgc2l6ZSk7CkBAIC0zMzMsMTAgKzM0NiwxMCBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3Zp
ZGVyVGVzdCwgQmFzaWMpCiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChkYXRhLCByZXN1bHQsIHBp
eGVsU2l6ZSkpOwogCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7
Ci0gICAgRVhQRUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVj
dE51bVJlc291cmNlcygwKTsKIH0KIAotVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIERl
bGV0ZU93bmVkUmVzb3VyY2VzKQorVEVTVF9QKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIERlbGV0
ZU93bmVkUmVzb3VyY2VzKQogewogICAgIEludFNpemUgc2l6ZSgxLCAxKTsKICAgICBXR0MzRGVu
dW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBAIC0zNDUsMTYgKzM1OCwxNiBA
QCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCiAg
ICAgY29uc3QgaW50IGNvdW50ID0gMzsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpCiAgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6
ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7Ci0gICAgRVhQ
RUNUX0VRKDMsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51bVJlc291
cmNlcygzKTsKIAogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNvdXJjZXMo
cG9vbCsxKTsKLSAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7Cisg
ICAgZXhwZWN0TnVtUmVzb3VyY2VzKDMpOwogCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxl
dGVPd25lZFJlc291cmNlcyhwb29sKTsKLSAgICBFWFBFQ1RfRVEoMCwgY29udGV4dCgpLT50ZXh0
dXJlQ291bnQoKSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDApOwogfQogCi1URVNUX0YoQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQorVEVTVF9QKENDUmVzb3VyY2VQcm92aWRlclRl
c3QsIFVwbG9hZCkKIHsKICAgICBJbnRTaXplIHNpemUoMiwgMik7CiAgICAgV0dDM0RlbnVtIGZv
cm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpAQCAtNDA2LDggKzQxOSwxMiBAQCBURVNU
X0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQogICAgIG1fcmVzb3VyY2VQcm92aWRl
ci0+ZGVsZXRlUmVzb3VyY2UoaWQpOwogfQogCi1URVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVz
dCwgVHJhbnNmZXJSZXNvdXJjZXMpCitURVNUX1AoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVHJh
bnNmZXJSZXNvdXJjZXMpCiB7CisgICAgLy8gUmVzb3VyY2UgdHJhbnNmZXIgaXMgb25seSBzdXBw
b3J0ZWQgd2l0aCBHTCB0ZXh0dXJlcyBmb3Igbm93LgorICAgIGlmIChHZXRQYXJhbSgpICE9IEND
UmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlKQorICAgICAgICByZXR1cm47CisKICAgICBPd25Q
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNoaWxkQ29udGV4dChGYWtlV2ViQ29tcG9zaXRvck91dHB1
dFN1cmZhY2U6OmNyZWF0ZShSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6Y3JlYXRlKG1fc2hhcmVk
RGF0YS5nZXQoKSkpKTsKICAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBjaGlsZFJlc291
cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2hpbGRDb250ZXh0LmdldCgp
KSk7CiAKQEAgLTQ4NiwxNCArNTAzLDE0IEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0
LCBUcmFuc2ZlclJlc291cmNlcykKIAogICAgIFJlc291cmNlUHJvdmlkZXJDb250ZXh0KiBjaGls
ZENvbnRleHQzRCA9IHN0YXRpY19jYXN0PFJlc291cmNlUHJvdmlkZXJDb250ZXh0Kj4oY2hpbGRD
b250ZXh0LT5jb250ZXh0M0QoKSk7CiAgICAgewotICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQgbG9jayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkMSk7CisgICAgICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBsb2NrKGNoaWxkUmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgaWQxKTsKICAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrLnRleHR1cmVJ
ZCgpKTsKICAgICAgICAgY2hpbGRDb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAgICAgY2hpbGRDb250ZXh0
M0QtPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9FUSgw
LCBtZW1jbXAoZGF0YTEsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CiAgICAgfQogICAgIHsKLSAgICAg
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2soY2hpbGRSZXNvdXJjZVByb3ZpZGVy
LmdldCgpLCBpZDIpOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2Nr
R0wgbG9jayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkMik7CiAgICAgICAgIEFTU0VS
VF9ORSgwVSwgbG9jay50ZXh0dXJlSWQoKSk7CiAgICAgICAgIGNoaWxkQ29udGV4dDNELT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0dXJlSWQoKSk7
CiAgICAgICAgIGNoaWxkQ29udGV4dDNELT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0LCByZXN1bHQp
OwpAQCAtNTE5LDQgKzUzNiw5IEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBUcmFu
c2ZlclJlc291cmNlcykKICAgICBFWFBFQ1RfRVEoMHUsIG1fcmVzb3VyY2VQcm92aWRlci0+bWFp
bGJveENvdW50KCkpOwogfQogCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDQ1Jlc291cmNlUHJv
dmlkZXJUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlclRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhDQ1Jlc291cmNl
UHJvdmlkZXI6OkdMVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6Qml0bWFwKSk7CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159522</attachid>
            <date>2012-08-20 14:28:32 -0700</date>
            <delta_ts>2012-08-20 16:01:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120820142753.patch</filename>
            <type>text/plain</type>
            <size>39802</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYWJiMDc3YzcyYWQ3
YWU5NWQ2ODEwMmFkMTgwOWVkM2QwYTlhZS4uMWJhOTM4MThkNWM4NjMzNjE3OGExOWU2YWQyNDMy
NGQ5MjcyYTdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTE1ICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFi
aWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAg
ICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQg
YXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIFdlIHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIg
dG8gYmUgYWJsZSB0byBoYW5kbGUgZGlmZmVyZW50IHJlc291cmNlCisgICAgICAgIHR5cGVzIGF0
IHRoZSBzYW1lIHRpbWUuICBJbiBwcmFjdGljZSwgYSBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMK
KyAgICAgICAgZGVzaXJlZCBmb3IgbW9zdCB1c2VzIHdpdGhpbiBhIHNpbmdsZSBjb21wb3NpdG9y
IGluc3RhbmNlLCB3aGljaCBpcworICAgICAgICBzcGVjaWZpZWQgYnkgdGhlIGRlZmF1bHQgcmVz
b3VyY2UgdHlwZS4gIERlZmF1bHQgcmVzb3VyY2UgdHlwZXMgYXJlCisgICAgICAgIGV4cGVjdGVk
IHRvIGJlIG1vc3RseSAxLXRvLTEgd2l0aCBDQ1JlbmRlcmVyIHR5cGVzLgorCisgICAgICAgIE5l
dyB0ZXN0cyBhZGRlZCBieSBwYXJhbWV0cml6aW5nIGV4aXN0aW5nIENDUmVzb3VyY2VQcm92aWRl
ciB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZp
ZGVvUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdU
ZXh0dXJlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Omdl
dEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChEcmF3aW5n
RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3Vy
Y2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVHTFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Jlc291cmNlUHJvdmlkZXI6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OnVubG9ja0ZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6OlNjb3BlZFJlYWRMb2NrR0wpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjp+U2NvcGVkUmVh
ZExvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdy
aXRlTG9ja0dMOjpTY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp+U2NvcGVkV3JpdGVMb2NrR0wpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZTo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6On5TY29wZWRSZWFk
TG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkV3JpdGVMb2NrU29mdHdhcmU6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6On5T
Y29wZWRXcml0ZUxvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OkNDUmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6c2V0Q3JlYXRpb25Qb2xpY3kpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGlvblBvbGljeSk6Cisg
ICAgICAgIChDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoU2NvcGVkUmVhZExvY2tHTCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6
OnRleHR1cmVJZCk6CisgICAgICAgIChTY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp0ZXh0dXJlSWQpOgor
ICAgICAgICAoU2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6OnNrQml0bWFwKToKKyAgICAg
ICAgKFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6OnNrQ2FudmFzKToKKyAgICAgICAg
KFJlc291cmNlKToKKwogMjAxMi0wOC0yMCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJlc3BlY3QgcnVudGltZSBmbGFncyBmb3IgRGV2aWNlIE9yaWVudGF0
aW9uIGFuZCBEZXZpY2UgTW90aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDVlZDJh
YmY4MGI0NmRiNmM5ZjJhNGY2Yjg2ZDYyZjc0YzllN2U3OWYuLjE1YzVhZjhlMDg2OWI0MGRkNDE1
ODQ2NTcyYjI1M2E0ZDhjNDdiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTItMDgtMTUgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29t
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHNvZnR3YXJlIGJpdG1hcCByZXNvdXJjZXMgdG8g
Q0NSZXNvdXJjZVByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyB0aGUgYWJpbGl0eSB0byBDQ1Jlc291cmNlUHJvdmlkZXIgdG8g
dXNlIHNvZnR3YXJlIGJpdG1hcHMuCisgICAgICAgIFRoZXkgYXJlIGFsbG9jYXRlZCBhcyBwbGFp
bi1vbGQtbWVtb3J5LCBhbmQgZXhwb3NlZCBhcyBTa2lhIG9iamVjdHMuCisKKyAgICAgICAgV2Ug
d2FudCB0aGUgUmVzb3VyY2VQcm92aWRlciB0byBiZSBhYmxlIHRvIGhhbmRsZSBkaWZmZXJlbnQg
cmVzb3VyY2UKKyAgICAgICAgdHlwZXMgYXQgdGhlIHNhbWUgdGltZS4gIEluIHByYWN0aWNlLCBh
IGRlZmF1bHQgcmVzb3VyY2UgdHlwZSBpcworICAgICAgICBkZXNpcmVkIGZvciBtb3N0IHVzZXMg
d2l0aGluIGEgc2luZ2xlIGNvbXBvc2l0b3IgaW5zdGFuY2UsIHdoaWNoIGlzCisgICAgICAgIHNw
ZWNpZmllZCBieSB0aGUgZGVmYXVsdCByZXNvdXJjZSB0eXBlLiAgRGVmYXVsdCByZXNvdXJjZSB0
eXBlcyBhcmUKKyAgICAgICAgZXhwZWN0ZWQgdG8gYmUgbW9zdGx5IDEtdG8tMSB3aXRoIENDUmVu
ZGVyZXIgdHlwZXMuCisKKyAgICAgICAgTmV3IHRlc3RzIGFkZGVkIGJ5IHBhcmFtZXRyaXppbmcg
ZXhpc3RpbmcgQ0NSZXNvdXJjZVByb3ZpZGVyIHRlc3RzLgorCisgICAgICAgICogdGVzdHMvQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNDUmVzb3VyY2VQcm92
aWRlclRlc3Q6OmdldFJlc291cmNlUGl4ZWxzKToKKwogMjAxMi0wOC0yMCAgSGFucyBXZW5uYm9y
ZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlc3BlY3QgcnVudGltZSBmbGFncyBm
b3IgRGV2aWNlIE9yaWVudGF0aW9uIGFuZCBEZXZpY2UgTW90aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAppbmRleCBkYTJlY2M2MTA5YzVkNGVjYjRiNjg4OTBiMDg2ZjEyYTA5YTY0NDg3
Li4xMDFhZDRiYjE3OWI2ZGIzY2I5YTY5NjkxOWMwNmQ4ZDk3MWYyM2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoV2ViR3Jh
cGhpYwogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgdGV4dHVyZS0+
YWNxdWlyZUJhY2tpbmdUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIpOwotICAgIENDU2NvcGVkTG9j
a1Jlc291cmNlRm9yV3JpdGUgbG9jayhyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5yZXNvdXJj
ZUlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0wgbG9jayhy
ZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOwogICAgIC8vIENyZWF0ZSBh
biBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KICAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGdyQ29udGV4dCwgdGV4dHVyZS0+c2l6ZSgp
LCBsb2NrLnRleHR1cmVJZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggMzZlNDdkMTc3ZDRhZmIzYjAxNzMxYzkwZDRjODBmYzMzZDA1ZGRlNC4uODRmMDBh
MWM3YjljNDQzMGJkMzE1YWMxMzY2OTFjMjEwMmNlZWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIGlubGluZSBTa0Jp
dG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBj
b25zdAogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVzaCgpOwogCi0gICAgQ0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJv
dmlkZXIoKSwgc291cmNlVGV4dHVyZS0+aWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRXcml0ZUxvY2tHTCBsb2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJvdmlkZXIoKSwg
c291cmNlVGV4dHVyZS0+aWQoKSk7CiAgICAgU2tCaXRtYXAgc291cmNlID0gQ0NSZW5kZXJTdXJm
YWNlRmlsdGVyczo6YXBwbHkoZmlsdGVycywgbG9jay50ZXh0dXJlSWQoKSwgc291cmNlVGV4dHVy
ZS0+c2l6ZSgpLCBmaWx0ZXJDb250ZXh0LCBmaWx0ZXJHckNvbnRleHQpOwogICAgIHJldHVybiBz
b3VyY2U7CiB9CkBAIC00NjUsMjAgKzQ2NSwyMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAog
ICAgIC8vIEZJWE1FOiBDYWNoZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBk
byBpdCBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCiAgICAgLy8gQXBwbHkg
ZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KICAgICBTa0JpdG1hcCBmaWx0ZXJCaXRt
YXAgPSBhcHBseUZpbHRlcnModGhpcywgcmVuZGVyUGFzcy0+ZmlsdGVycygpLCBjb250ZW50c1Rl
eHR1cmUpOwotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IGNvbnRlbnRz
UmVzb3VyY2VMb2NrOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRM
b2NrR0w+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOwogICAgIHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVy
ZUlkID0gMDsKICAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSkgewogICAgICAgICBH
clRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJp
dG1hcC5nZXRUZXh0dXJlKCkpOwogICAgICAgICBjb250ZW50c1RleHR1cmVJZCA9IHRleHR1cmUt
PmdldFRleHR1cmVIYW5kbGUoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb250ZW50c1Jlc291
cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQobV9yZXNv
dXJjZVByb3ZpZGVyLCBjb250ZW50c1RleHR1cmUtPmlkKCkpKTsKKyAgICAgICAgY29udGVudHNS
ZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFk
TG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgY29udGVudHNUZXh0dXJlLT5pZCgpKSk7CiAgICAg
ICAgIGNvbnRlbnRzVGV4dHVyZUlkID0gY29udGVudHNSZXNvdXJjZUxvY2stPnRleHR1cmVJZCgp
OwogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBp
cyBvbmUuCiAgICAgaWYgKGJhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNr
Z3JvdW5kVGV4dHVyZS0+c2l6ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKLSAgICAg
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBi
YWNrZ3JvdW5kVGV4dHVyZS0+aWQoKSk7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkUmVhZExvY2tHTCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgYmFja2dyb3VuZFRleHR1cmUt
PmlkKCkpOwogICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZnJhbWUsIGxvY2sudGV4
dHVyZUlkKCksIHF1YWQtPnF1YWRSZWN0KCksIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSk7CiAgICAg
fQogCkBAIC00OTUsMTAgKzQ5NSwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAogICAgICAg
ICBkZXZpY2VMYXllckVkZ2VzLmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgpOwogICAgIH0K
IAotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IG1hc2tSZXNvdXJjZUxv
Y2s7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTD4gbWFz
a1Jlc291cmNlTG9jazsKICAgICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkID0gMDsKICAgICBpZiAo
cXVhZC0+bWFza1Jlc291cmNlSWQoKSkgewotICAgICAgICBtYXNrUmVzb3VyY2VMb2NrID0gYWRv
cHRQdHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZChtX3Jlc291cmNlUHJvdmlkZXIs
IHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkpKTsKKyAgICAgICAgbWFza1Jlc291cmNlTG9jayA9IGFk
b3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wobV9yZXNvdXJj
ZVByb3ZpZGVyLCBxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKSk7CiAgICAgICAgIG1hc2tUZXh0dXJl
SWQgPSBtYXNrUmVzb3VyY2VMb2NrLT50ZXh0dXJlSWQoKTsKICAgICB9CiAKQEAgLTY4OSw3ICs2
ODksNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IERy
YXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDVGlsZQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+dXNlUHJvZ3JhbSh1bmlmb3Jtcy5wcm9ncmFtKSk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtMWkodW5pZm9ybXMuc2FtcGxlckxvY2F0aW9uLCAwKSk7CiAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBxdWFkUmVzb3Vy
Y2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgcXVhZFJlc291cmNlTG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZFJl
c291cmNlTG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBxdWFk
LT50ZXh0dXJlRmlsdGVyKCkpKTsKQEAgLTc5Niw5ICs3OTYsOSBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChjb25zdCBEcmF3aW5nRnJhbWUmIGZyYW1lLCBj
b25zdCBDQwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSA9
IHF1YWQtPnVQbGFuZSgpOwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUm
IHZQbGFuZSA9IHF1YWQtPnZQbGFuZSgpOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JS
ZWFkIHlQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB5UGxhbmUucmVzb3VyY2VJZCk7Ci0g
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHVQbGFuZUxvY2sobV9yZXNvdXJjZVByb3Zp
ZGVyLCB1UGxhbmUucmVzb3VyY2VJZCk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
IHZQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CisgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHlQbGFuZUxvY2sobV9yZXNvdXJj
ZVByb3ZpZGVyLCB5UGxhbmUucmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRSZWFkTG9ja0dMIHVQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB1UGxhbmUucmVz
b3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHZQbGFu
ZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CiAgICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHlQbGFuZUxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUyKSk7CkBAIC05MDcsNyArOTA3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdUZXh0dXJlUXVhZChjb25zdCBEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1QK
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00ZihiaW5kaW5nLnRleFRyYW5z
Zm9ybUxvY2F0aW9uLCB1dlJlY3QueCgpLCB1dlJlY3QueSgpLCB1dlJlY3Qud2lkdGgoKSwgdXZS
ZWN0LmhlaWdodCgpKSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JSZWFkIHF1YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5y
ZXNvdXJjZUlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBx
dWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsK
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBxdWFkUmVzb3VyY2VMb2NrLnRleHR1cmVJZCgpKSk7CiAKICAgICAv
LyBGSVhNRTogc2V0dGluZyB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5IHRpbWUgaXMgcmVk
dW5kYW50LiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUKQEAgLTExOTksNyArMTE5OSw3IEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoQ0NTY29wZWRU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zCiAgICAgaWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJl
LT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgZGV2aWNlUmVjdC5zaXplKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0IsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0
ZSBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSk7CisgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4
dHVyZS0+aWQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpLCBk
ZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKQEAgLTEyMjYsNyAr
MTIyNiw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1Rl
eHR1cmUoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QKICAgICBBU1NFUlQodGV4dHVyZS0+aWQo
KSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwot
ICAgIG1fY3VycmVudEZyYW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tS
ZXNvdXJjZUZvcldyaXRlKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkpOworICAg
IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlNjb3BlZFdyaXRlTG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkp
OwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jay0+dGV4
dHVyZUlkKCk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJ
ZCwgMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDA5Y2QwZTI5
MTExOWJlNzQxOTQyMjhmOTAzN2Q5YWVkZTNmMWRhYjUuLjM1NzVjMTkzZDc3MDI0NWZjOGVhNGYw
MzgzOTNiZTgxNmI5Yjg3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBA
IC0yNDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlzaWJsZTsKICAgICBUZXh0
dXJlVXBsb2FkZXJPcHRpb24gbV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nOwogCi0gICAgT3duUHRy
PENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGU+IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jazsK
KyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTD4gbV9jdXJy
ZW50RnJhbWVidWZmZXJMb2NrOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmNwcAppbmRleCA4YTVkNmFmOWRmOTBiNmNmMmI2Yzk0ODZjZTA5ZWExNWQ3ZDRjMGQ5Li45
ZTQ1MDdlNGY4NTdkN2ZmZjc1YjQxYjBjYTU0MjRmZjQ4ODA2ZjI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVzb3VyY2VQcm92aWRlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiIC8vIEZvciB0aGUgR0xD
KCkgbWFjcm8KICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgorI2luY2x1ZGUgPGxp
bWl0cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTg4LDEzICs4OSwyNCBAQCBib29sIENDUmVzb3VyY2VQ
cm92aWRlcjo6aW5Vc2VCeUNvbnN1bWVyKFJlc291cmNlSWQgaWQpCiAKIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBw
b29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhp
bnQgaGludCkKIHsKKyAgICBzd2l0Y2ggKG1fZGVmYXVsdFJlc291cmNlVHlwZSkgeworICAgIGNh
c2UgR0xUZXh0dXJlOgorICAgICAgICByZXR1cm4gY3JlYXRlR0xUZXh0dXJlKHBvb2wsIHNpemUs
IGZvcm1hdCwgaGludCk7CisgICAgY2FzZSBCaXRtYXA6CisgICAgICAgIEFTU0VSVChmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICByZXR1cm4gY3JlYXRlQml0bWFw
KHBvb2wsIHNpemUpOworICAgIH0KKworICAgIENSQVNIKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZUdMVGV4dHVyZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0
LCBUZXh0dXJlVXNhZ2VIaW50IGhpbnQpCit7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSAwOwogICAgIFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29u
dGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0
d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVChj
b250ZXh0M2QpOwogICAgIEdMQyhjb250ZXh0M2QsIHRleHR1cmVJZCA9IGNvbnRleHQzZC0+Y3Jl
YXRlVGV4dHVyZSgpKTsKICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKICAgICBHTEMoY29u
dGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKQEAgLTExNSwxMiArMTI3LDIzIEBAIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29s
LCBjb25zCiAgICAgcmV0dXJuIGlkOwogfQogCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVCaXRtYXAoaW50IHBvb2wsIGNvbnN0IEludFNp
emUmIHNpemUpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKworICAg
IHVpbnQ4X3QqIHBpeGVscyA9IG5ldyB1aW50OF90W3NpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0
KCkgKiA0XTsKKworICAgIFJlc291cmNlSWQgaWQgPSBtX25leHRJZCsrOworICAgIFJlc291cmNl
IHJlc291cmNlKHBpeGVscywgcG9vbCwgc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwor
ICAgIG1fcmVzb3VyY2VzLmFkZChpZCwgcmVzb3VyY2UpOworICAgIHJldHVybiBpZDsKK30KKwog
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
UmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCkKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlSWQgaWQgPSBtX25l
eHRJZCsrOwotICAgIFJlc291cmNlIHJlc291cmNlOwotICAgIHJlc291cmNlLmdsSWQgPSB0ZXh0
dXJlSWQ7CisgICAgUmVzb3VyY2UgcmVzb3VyY2UodGV4dHVyZUlkLCAwLCBJbnRTaXplKCksIDAp
OwogICAgIHJlc291cmNlLmV4dGVybmFsID0gdHJ1ZTsKICAgICBtX3Jlc291cmNlcy5hZGQoaWQs
IHJlc291cmNlKTsKICAgICByZXR1cm4gaWQ7CkBAIC0xMjksMTUgKzE1MiwxNSBAQCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJj
ZUZyb21FeHRlcm5hbFRleAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZVJlc291cmNl
KFJlc291cmNlSWQgaWQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
LSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0
M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAg
ICB9CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7
CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tl
ZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOwotICAgIGlmICghaXQt
PnNlY29uZC5leHRlcm5hbCkKKworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2Qg
PSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmIChjb250ZXh0M2QgJiYgIWl0LT5zZWNv
bmQuZXh0ZXJuYWwpCiAgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+ZGVsZXRlVGV4
dHVyZShpdC0+c2Vjb25kLmdsSWQpKTsKKyAgICBpZiAoaXQtPnNlY29uZC5waXhlbHMpCisgICAg
ICAgIGRlbGV0ZSBpdC0+c2Vjb25kLnBpeGVsczsKKwogICAgIG1fcmVzb3VyY2VzLnJlbW92ZShp
dCk7CiB9CiAKQEAgLTE1Myw3MSArMTc2LDY3IEBAIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpk
ZWxldGVPd25lZFJlc291cmNlcyhpbnQgcG9vbCkKICAgICAgICAgZGVsZXRlUmVzb3VyY2UoKml0
KTsKIH0KIAotdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQorQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZVR5cGUgQ0NSZXNvdXJjZVByb3ZpZGVyOjpyZXNvdXJjZVR5cGUoUmVz
b3VyY2VJZCBpZCkKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAg
IEFTU0VSVChtX3RleFN1YkltYWdlLmdldCgpKTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkg
ewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29t
cG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxv
Y2tGb3JSZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotCi0gICAgY29udGV4dDNk
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5n
bElkKTsKLSAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNl
UmVjdCwgZGVzdE9mZnNldCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAgQVNT
RVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC50eXBl
OwogfQogCi11bnNpZ25lZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJj
ZUlkIGlkKQordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVu
ZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JS
ZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotICAgIGl0LT5zZWNvbmQubG9ja2Vk
Rm9yV3JpdGUgPSB0cnVlOwotICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7Ci19CiAKLXZvaWQg
Q0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQotewotICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgUmVzb3VyY2VNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0
ZXJuYWwpOwotICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKKyAgICBpZiAo
aXQtPnNlY29uZC5nbElkKSB7CisgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgICAgICBBU1NFUlQoY29udGV4dDNkKTsK
KyAgICAgICAgQVNTRVJUKG1fdGV4U3ViSW1hZ2UuZ2V0KCkpOworICAgICAgICBjb250ZXh0M2Qt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBpdC0+c2Vjb25kLmds
SWQpOworICAgICAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291
cmNlUmVjdCwgZGVzdE9mZnNldCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAg
fQorCisgICAgaWYgKGl0LT5zZWNvbmQucGl4ZWxzKSB7CisgICAgICAgIFNrQml0bWFwIHNyY0Z1
bGw7CisgICAgICAgIHNyY0Z1bGwuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
ZywgaW1hZ2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNyY0Z1
bGwuc2V0UGl4ZWxzKGNvbnN0X2Nhc3Q8dWludDhfdCo+KGltYWdlKSk7CisgICAgICAgIFNrQml0
bWFwIHNyY1N1YnNldDsKKyAgICAgICAgU2tJUmVjdCBza1NvdXJjZVJlY3QgPSBTa0lSZWN0OjpN
YWtlWFlXSChzb3VyY2VSZWN0LngoKSwgc291cmNlUmVjdC55KCksIHNvdXJjZVJlY3Qud2lkdGgo
KSwgc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNyY0Z1bGwuZXh0cmFjdFN1YnNldCgm
c3JjU3Vic2V0LCBza1NvdXJjZVJlY3QpOworCisgICAgICAgIFNjb3BlZFdyaXRlTG9ja1NvZnR3
YXJlIGxvY2sodGhpcywgaWQpOworICAgICAgICBTa0NhbnZhcyogZGVzdCA9IGxvY2suc2tDYW52
YXMoKTsKKyAgICAgICAgZGVzdC0+d3JpdGVQaXhlbHMoc3JjU3Vic2V0LCBkZXN0T2Zmc2V0Lndp
ZHRoKCksIGRlc3RPZmZzZXQuaGVpZ2h0KCkpOworICAgIH0KIH0KIAogdm9pZCBDQ1Jlc291cmNl
UHJvdmlkZXI6OmZsdXNoKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OwogICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRl
eHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjb250ZXh0M2QtPmZsdXNoKCk7CisgICAgaWYgKGNvbnRleHQzZCkKKyAgICAg
ICAgY29udGV4dDNkLT5mbHVzaCgpOwogfQogCiBib29sIENDUmVzb3VyY2VQcm92aWRlcjo6c2hh
bGxvd0ZsdXNoSWZTdXBwb3J0ZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSk7CiAgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+
Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgIGlmICghY29u
dGV4dDNkIHx8ICFtX3VzZVNoYWxsb3dGbHVzaCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KIAotICAgIGlmIChtX3VzZVNoYWxsb3dGbHVzaCkKLSAgICAgICAgY29udGV4dDNkLT5zaGFs
bG93Rmx1c2hDSFJPTUlVTSgpOwotICAgIHJldHVybiBtX3VzZVNoYWxsb3dGbHVzaDsKKyAgICBj
b250ZXh0M2QtPnNoYWxsb3dGbHVzaENIUk9NSVVNKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXVuc2lnbmVkIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkK
K2NvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6
bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZp
bmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29u
ZC5sb2NrZWRGb3JXcml0ZSk7Ci0gICAgKysoaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsK
LSAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOworICAgIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRD
b3VudCsrOworICAgIHJldHVybiAmaXQtPnNlY29uZDsKIH0KIAogdm9pZCBDQ1Jlc291cmNlUHJv
dmlkZXI6OnVubG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKQEAgLTIyNSwxNyArMjQ0LDk0IEBA
IHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQgaWQpCiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNv
dXJjZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ID4gMCk7Ci0gICAgLS0o
aXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKKyAgICBpdC0+c2Vjb25kLmxvY2tGb3JSZWFk
Q291bnQtLTsKK30KKworY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZSogQ0NSZXNv
dXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQo
Q0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9
IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQo
KSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVh
ZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25kLmxvY2tlZEZv
cldyaXRlID0gdHJ1ZTsKKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7Cit9CisKK3ZvaWQgQ0NSZXNv
dXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVu
ZCgpICYmIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwp
OworICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKK30KKworQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikK
KyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQocmVzb3Vy
Y2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCktPmdsSWQpCit7CisgICAgQVNTRVJU
KG1fdGV4dHVyZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dM
Ojp+U2NvcGVkUmVhZExvY2tHTCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tG
b3JSZWFkKG1fcmVzb3VyY2VJZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3Jp
dGVMb2NrR0w6OlNjb3BlZFdyaXRlTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAg
OiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJ
ZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0Zv
cldyaXRlKHJlc291cmNlSWQpLT5nbElkKQoreworICAgIEFTU0VSVChtX3RleHR1cmVJZCk7Cit9
CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6On5TY29wZWRXcml0ZUxv
Y2tHTCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JXcml0ZShtX3Jlc291
cmNlSWQpOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1hcFdp
dGhSZXNvdXJjZShTa0JpdG1hcCogc2tCaXRtYXAsIGNvbnN0IFJlc291cmNlKiByZXNvdXJjZSkK
K3sKKyAgICBBU1NFUlQocmVzb3VyY2UtPnBpeGVscyk7CisgICAgQVNTRVJUKHJlc291cmNlLT5m
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHNrQml0bWFwLT5zZXRDb25m
aWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCByZXNvdXJjZS0+c2l6ZS53aWR0aCgpLCBy
ZXNvdXJjZS0+c2l6ZS5oZWlnaHQoKSk7CisgICAgc2tCaXRtYXAtPnNldFBpeGVscyhyZXNvdXJj
ZS0+cGl4ZWxzKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3
YXJlOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAg
OiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJ
ZChyZXNvdXJjZUlkKQoreworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1h
cFdpdGhSZXNvdXJjZSgmbV9za0JpdG1hcCwgcmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQo
cmVzb3VyY2VJZCkpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29m
dHdhcmU6On5TY29wZWRSZWFkTG9ja1NvZnR3YXJlKCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlk
ZXItPnVubG9ja0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVy
OjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoQ0NSZXNv
dXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgcmVzb3VyY2VJZCkKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3Zp
ZGVyKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCit7CisgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKCZtX3NrQml0bWFwLCByZXNvdXJj
ZVByb3ZpZGVyLT5sb2NrRm9yV3JpdGUocmVzb3VyY2VJZCkpOworICAgIG1fc2tDYW52YXMuc2V0
Qml0bWFwRGV2aWNlKG1fc2tCaXRtYXApOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3Bl
ZFdyaXRlTG9ja1NvZnR3YXJlOjp+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKQoreworICAgIG1f
cmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKIH0KIAogQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbmV4dElkKDEpCiAgICAg
LCBtX25leHRDaGlsZCgxKQorICAgICwgbV9kZWZhdWx0UmVzb3VyY2VUeXBlKEdMVGV4dHVyZSkK
ICAgICAsIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQoZmFsc2UpCiAgICAgLCBtX3VzZVRleHR1cmVV
c2FnZUhpbnQoZmFsc2UpCiAgICAgLCBtX3VzZVNoYWxsb3dGbHVzaChmYWxzZSkKLSAgICAsIG1f
bWF4VGV4dHVyZVNpemUoMCkKKyAgICAsIG1fbWF4VGV4dHVyZVNpemUoSU5UX01BWCkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaAppbmRleCBiODczM2ExNjM4ZmRhYTdi
OGJhZDZiZDU0MWJiNWFiN2I5ZTU5Yzc0Li5lMjQ0YmI2MzYwNzcwNTA2ZTk3NTdjOTI0MjIzYWVj
NTVhYzllZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaApAQCAtMzAsNiAr
MzAsOCBAQAogI2luY2x1ZGUgIkNDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU2tCaXRtYXAu
aCIKKyNpbmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDQsOCArNDYs
NiBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ7Ci1jbGFzcyBDQ1Njb3BlZExvY2tS
ZXNvdXJjZUZvcldyaXRlOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIExheWVyVGV4dHVyZVN1Yklt
YWdlOwogCkBAIC01OCw2ICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVz
b3VyY2VJZD4gUmVzb3VyY2VJZEFycmF5OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZXNvdXJjZUlk
LCBSZXNvdXJjZUlkPiBSZXNvdXJjZUlkTWFwOwogICAgIGVudW0gVGV4dHVyZVVzYWdlSGludCB7
IFRleHR1cmVVc2FnZUFueSwgVGV4dHVyZVVzYWdlRnJhbWVidWZmZXIgfTsKKyAgICBlbnVtIFJl
c291cmNlVHlwZSB7CisgICAgICAgIEdMVGV4dHVyZSA9IDEsCisgICAgICAgIEJpdG1hcCwKKyAg
ICB9OwogICAgIHN0cnVjdCBNYWlsYm94IHsKICAgICAgICAgR0MzRGJ5dGUgbmFtZVs2NF07CiAg
ICAgfTsKQEAgLTg3LDExICs5MSwxOSBAQCBwdWJsaWM6CiAKICAgICAvLyBQcm9kdWNlciBpbnRl
cmZhY2UuCiAKLSAgICAvLyBDcmVhdGVzIGEgcmVzb3VyY2Ugb2YgdGhlIGdpdmVuIHNpemUvZm9y
bWF0LCBpbnRvIHRoZSBnaXZlbiBwb29sLgorICAgIHZvaWQgc2V0RGVmYXVsdFJlc291cmNlVHlw
ZShSZXNvdXJjZVR5cGUgdHlwZSkgeyBtX2RlZmF1bHRSZXNvdXJjZVR5cGUgPSB0eXBlOyB9Cisg
ICAgUmVzb3VyY2VUeXBlIGRlZmF1bHRSZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rl
ZmF1bHRSZXNvdXJjZVR5cGU7IH0KKyAgICBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKFJlc291
cmNlSWQpOworCisgICAgLy8gQ3JlYXRlcyBhIHJlc291cmNlIG9mIHRoZSBkZWZhdWx0IHJlc291
cmNlIHR5cGUuCiAgICAgUmVzb3VyY2VJZCBjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3Qg
SW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCk7CiAKLSAgICAvLyBX
cmFwcyBhbiBleHRlcm5hbCB0ZXh0dXJlIGludG8gYSByZXNvdXJjZS4KKyAgICAvLyBZb3UgY2Fu
IGFsc28gZXhwbGljaXRseSBjcmVhdGUgYSBzcGVjaWZpYyByZXNvdXJjZSB0eXBlLgorICAgIFJl
c291cmNlSWQgY3JlYXRlR0xUZXh0dXJlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiwgR0MzRGVu
dW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50KTsKKyAgICBSZXNvdXJjZUlkIGNyZWF0ZUJpdG1h
cChpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYpOworICAgIC8vIFdyYXBzIGFuIGV4dGVybmFsIHRl
eHR1cmUgaW50byBhIEdMIHJlc291cmNlLgogICAgIFJlc291cmNlSWQgY3JlYXRlUmVzb3VyY2VG
cm9tRXh0ZXJuYWxUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCk7CisKICAgICB2b2lkIGRlbGV0
ZVJlc291cmNlKFJlc291cmNlSWQpOwogCiAgICAgLy8gRGVsZXRlcyBhbGwgcmVzb3VyY2VzIG93
bmVkIGJ5IGEgZ2l2ZW4gcG9vbC4KQEAgLTE0NywxMyArMTU5LDcyIEBAIHB1YmxpYzoKICAgICAv
LyBPbmx5IGZvciB0ZXN0aW5nCiAgICAgc2l6ZV90IG1haWxib3hDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFpbGJveGVzLnNpemUoKTsgfQogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ7Ci0gICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9j
a1Jlc291cmNlRm9yV3JpdGU7CisgICAgLy8gVGhlIGZvbGxvd2luZyBsb2NrIGNsYXNzZXMgYXJl
IHBhcnQgb2YgdGhlIENDUmVzb3VyY2VQcm92aWRlciBBUEkgYW5kIGFyZQorICAgIC8vIG5lZWRl
ZCB0byByZWFkIGFuZCB3cml0ZSB0aGUgcmVzb3VyY2UgY29udGVudHMuIFRoZSB1c2VyIG11c3Qg
ZW5zdXJlCisgICAgLy8gdGhhdCB0aGV5IG9ubHkgdXNlIEdMIGxvY2tzIG9uIEdMIHJlc291cmNl
cywgZXRjLCBhbmQgdGhpcyBpcyBlbmZvcmNlZAorICAgIC8vIGJ5IGFzc2VydGlvbnMuCisgICAg
Y2xhc3MgU2NvcGVkUmVhZExvY2tHTCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNj
b3BlZFJlYWRMb2NrR0wpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVhZExvY2tHTChD
Q1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAg
ICAgICB+U2NvcGVkUmVhZExvY2tHTCgpOworCisgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBD
Q1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgdW5zaWduZWQgbV90
ZXh0dXJlSWQ7CisgICAgfTsKKworICAgIGNsYXNzIFNjb3BlZFdyaXRlTG9ja0dMIHsKKyAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkV3JpdGVMb2NrR0wpOworICAgIHB1YmxpYzoK
KyAgICAgICAgU2NvcGVkV3JpdGVMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkKTsKKyAgICAgICAgflNjb3BlZFdyaXRlTG9ja0dMKCk7CisK
KyAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJj
ZVByb3ZpZGVyOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNv
dXJjZUlkOworICAgICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICB9OworCisgICAgY2xh
c3MgU2NvcGVkUmVhZExvY2tTb2Z0d2FyZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZFJlYWRMb2NrU29mdHdhcmUpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQpOworICAgICAgICB+U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSgpOworCisgICAgICAg
IGNvbnN0IFNrQml0bWFwKiBza0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuICZtX3NrQml0bWFwOyB9
CiAKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3Vy
Y2VJZDsKKyAgICAgICAgU2tCaXRtYXAgbV9za0JpdG1hcDsKKyAgICB9OworCisgICAgY2xhc3Mg
U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRXcml0ZUxvY2tTb2Z0d2FyZSk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRXcml0
ZUxvY2tTb2Z0d2FyZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQpOworICAgICAgICB+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKTsKKworICAgICAg
ICBTa0NhbnZhcyogc2tDYW52YXMoKSB7IHJldHVybiAmbV9za0NhbnZhczsgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7Cisg
ICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAg
ICAgIFNrQml0bWFwIG1fc2tCaXRtYXA7CisgICAgICAgIFNrQ2FudmFzIG1fc2tDYW52YXM7Cisg
ICAgfTsKKworcHJpdmF0ZToKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBSZXNvdXJj
ZSgpCiAgICAgICAgICAgICA6IGdsSWQoMCkKKyAgICAgICAgICAgICwgcGl4ZWxzKDApCiAgICAg
ICAgICAgICAsIHBvb2woMCkKICAgICAgICAgICAgICwgbG9ja0ZvclJlYWRDb3VudCgwKQogICAg
ICAgICAgICAgLCBsb2NrZWRGb3JXcml0ZShmYWxzZSkKQEAgLTE2MSw5ICsyMzIsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICwgZXhwb3J0ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHNpemUo
KQogICAgICAgICAgICAgLCBmb3JtYXQoMCkKKyAgICAgICAgICAgICwgdHlwZShzdGF0aWNfY2Fz
dDxSZXNvdXJjZVR5cGU+KDApKQogICAgICAgICB7IH0KICAgICAgICAgUmVzb3VyY2UodW5zaWdu
ZWQgdGV4dHVyZUlkLCBpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9y
bWF0KQogICAgICAgICAgICAgOiBnbElkKHRleHR1cmVJZCkKKyAgICAgICAgICAgICwgcGl4ZWxz
KDApCiAgICAgICAgICAgICAsIHBvb2wocG9vbCkKICAgICAgICAgICAgICwgbG9ja0ZvclJlYWRD
b3VudCgwKQogICAgICAgICAgICAgLCBsb2NrZWRGb3JXcml0ZShmYWxzZSkKQEAgLTE3MSw4ICsy
NDQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgZXhwb3J0ZWQoZmFsc2UpCiAgICAgICAg
ICAgICAsIHNpemUoc2l6ZSkKICAgICAgICAgICAgICwgZm9ybWF0KGZvcm1hdCkKKyAgICAgICAg
ICAgICwgdHlwZShHTFRleHR1cmUpCisgICAgICAgIHsgfQorICAgICAgICBSZXNvdXJjZSh1aW50
OF90KiBwaXhlbHMsIGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3Jt
YXQpCisgICAgICAgICAgICA6IGdsSWQoMCkKKyAgICAgICAgICAgICwgcGl4ZWxzKHBpeGVscykK
KyAgICAgICAgICAgICwgcG9vbChwb29sKQorICAgICAgICAgICAgLCBsb2NrRm9yUmVhZENvdW50
KDApCisgICAgICAgICAgICAsIGxvY2tlZEZvcldyaXRlKGZhbHNlKQorICAgICAgICAgICAgLCBl
eHRlcm5hbChmYWxzZSkKKyAgICAgICAgICAgICwgZXhwb3J0ZWQoZmFsc2UpCisgICAgICAgICAg
ICAsIHNpemUoc2l6ZSkKKyAgICAgICAgICAgICwgZm9ybWF0KGZvcm1hdCkKKyAgICAgICAgICAg
ICwgdHlwZShCaXRtYXApCiAgICAgICAgIHsgfQogICAgICAgICB1bnNpZ25lZCBnbElkOworICAg
ICAgICB1aW50OF90KiBwaXhlbHM7CiAgICAgICAgIGludCBwb29sOwogICAgICAgICBpbnQgbG9j
a0ZvclJlYWRDb3VudDsKICAgICAgICAgYm9vbCBsb2NrZWRGb3JXcml0ZTsKQEAgLTE4MCw2ICsy
NjcsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGV4cG9ydGVkOwogICAgICAgICBJbnRTaXpl
IHNpemU7CiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKKyAgICAgICAgUmVzb3VyY2VUeXBlIHR5
cGU7CiAgICAgfTsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVzb3VyY2VJZCwgUmVzb3VyY2U+IFJl
c291cmNlTWFwOwogICAgIHN0cnVjdCBDaGlsZCB7CkBAIC0xOTIsMTMgKzI4MCwxMSBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IENDUmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCop
OwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCi0gICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQg
cmVwcmVzZW50aW5nIHRoZSByZXNvdXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW50by4KLSAg
ICB1bnNpZ25lZCBsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7Ci0gICAgdm9pZCB1bmxvY2tGb3JX
cml0ZShSZXNvdXJjZUlkKTsKLQotICAgIC8vIEdldHMgYSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2Vu
dGluZyB0aGUgcmVzb3VyY2UsIHRoYXQgY2FuIGJlIHJlbmRlcmVkIHdpdGguCi0gICAgdW5zaWdu
ZWQgbG9ja0ZvclJlYWQoUmVzb3VyY2VJZCk7CisgICAgY29uc3QgUmVzb3VyY2UqIGxvY2tGb3JS
ZWFkKFJlc291cmNlSWQpOwogICAgIHZvaWQgdW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKKyAg
ICBjb25zdCBSZXNvdXJjZSogbG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5s
b2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7CisgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVTa0JpdG1h
cFdpdGhSZXNvdXJjZShTa0JpdG1hcCosIGNvbnN0IFJlc291cmNlKik7CiAKICAgICBib29sIHRy
YW5zZmVyUmVzb3VyY2UoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFJlc291cmNlSWQs
IFRyYW5zZmVyYWJsZVJlc291cmNlKik7CiAgICAgdm9pZCB0cmltTWFpbGJveERlcXVlKCk7CkBA
IC0yMTEsNiArMjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIERlcXVlPE1haWxib3g+IG1fbWFpbGJv
eGVzOwogCisgICAgUmVzb3VyY2VUeXBlIG1fZGVmYXVsdFJlc291cmNlVHlwZTsKICAgICBib29s
IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQ7CiAgICAgYm9vbCBtX3VzZVRleHR1cmVVc2FnZUhpbnQ7
CiAgICAgYm9vbCBtX3VzZVNoYWxsb3dGbHVzaDsKQEAgLTIxOCw0NyArMzA1LDYgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKIH07CiAKLWNsYXNzIENDU2NvcGVkTG9ja1Jl
c291cmNlRm9yUmVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JSZWFkKTsKLXB1YmxpYzoKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQo
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKLSAgICAgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVz
b3VyY2VQcm92aWRlcikKLSAgICAgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKLSAgICAg
ICAgLCBtX3RleHR1cmVJZChyZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yUmVhZChyZXNvdXJjZUlk
KSkgeyB9Ci0KLSAgICB+Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKCkKLSAgICB7Ci0gICAg
ICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yUmVhZChtX3Jlc291cmNlSWQpOwotICAg
IH0KLQotICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlk
OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlk
ZXI7Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKLSAg
ICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLX07Ci0KLWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yV3JpdGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yV3JpdGUpOwotcHVibGljOgotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgcmVzb3VyY2VJZCkKLSAgICAgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3Vy
Y2VQcm92aWRlcikKLSAgICAgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKLSAgICAgICAg
LCBtX3RleHR1cmVJZChyZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yV3JpdGUocmVzb3VyY2VJZCkp
IHsgfQotCi0gICAgfkNDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUoKQotICAgIHsKLSAgICAg
ICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JXcml0ZShtX3Jlc291cmNlSWQpOwotICAg
IH0KLQotICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlk
OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlk
ZXI7Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKLSAg
ICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLX07CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKaW5kZXggOWU4
NTk5YzBmM2Y2NzFiNjgwZGUwZmZkMjQ4MDgwMzJmY2ZlNzgxZS4uZmExZGEwOThkYjE0MTQyMWI1
MTUwOTk4MDI3MzQ3ODMyNjRhOTNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCkBAIC0yODcsMjMgKzI4Nywz
NiBAQCBwcml2YXRlOgogICAgIFBlbmRpbmdQcm9kdWNlVGV4dHVyZUxpc3QgbV9wZW5kaW5nUHJv
ZHVjZVRleHR1cmVzOwogfTsKIAotY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIENDUmVzb3VyY2VQcm92aWRlclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlVHlwZT4g
ewogcHVibGljOgogICAgIENDUmVzb3VyY2VQcm92aWRlclRlc3QoKQogICAgICAgICA6IG1fc2hh
cmVkRGF0YShDb250ZXh0U2hhcmVkRGF0YTo6Y3JlYXRlKCkpCiAgICAgICAgICwgbV9jb250ZXh0
KEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3JlYXRlKFJlc291cmNlUHJvdmlkZXJD
b250ZXh0OjpjcmVhdGUobV9zaGFyZWREYXRhLmdldCgpKSkpCiAgICAgICAgICwgbV9yZXNvdXJj
ZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSkpCiAg
ICAgeworICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnNldERlZmF1bHRSZXNvdXJjZVR5cGUo
R2V0UGFyYW0oKSk7CiAgICAgfQogCiAgICAgUmVzb3VyY2VQcm92aWRlckNvbnRleHQqIGNvbnRl
eHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCo+KG1fY29u
dGV4dC0+Y29udGV4dDNEKCkpOyB9CiAKICAgICB2b2lkIGdldFJlc291cmNlUGl4ZWxzKENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0Rl
bnVtIGZvcm1hdCwgdWludDhfdCogcGl4ZWxzKQogICAgIHsKLSAgICAgICAgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7Ci0gICAg
ICAgIEFTU0VSVF9ORSgwVSwgbG9jay50ZXh0dXJlSWQoKSk7Ci0gICAgICAgIGNvbnRleHQoKS0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlk
KCkpOwotICAgICAgICBjb250ZXh0KCktPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHBpeGVscyk7
CisgICAgICAgIGlmIChHZXRQYXJhbSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJl
KSB7CisgICAgICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgbG9j
a0dMKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQpOworICAgICAgICAgICAgQVNTRVJUX05F
KDBVLCBsb2NrR0wudGV4dHVyZUlkKCkpOworICAgICAgICAgICAgY29udGV4dCgpLT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9ja0dMLnRleHR1cmVJZCgpKTsK
KyAgICAgICAgICAgIGNvbnRleHQoKS0+Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcGl4ZWxzKTsK
KyAgICAgICAgfSBlbHNlIGlmIChHZXRQYXJhbSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6Qml0
bWFwKSB7CisgICAgICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29m
dHdhcmUgbG9ja1NvZnR3YXJlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQpOworICAgICAg
ICAgICAgbWVtY3B5KHBpeGVscywgbG9ja1NvZnR3YXJlLnNrQml0bWFwKCktPmdldFBpeGVscygp
LCBsb2NrU29mdHdhcmUuc2tCaXRtYXAoKS0+Z2V0U2l6ZSgpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgZXhwZWN0TnVtUmVzb3VyY2VzKGludCBjb3VudCkKKyAgICB7CisgICAgICAg
IEVYUEVDVF9FUShjb3VudCwgc3RhdGljX2Nhc3Q8aW50PihtX3Jlc291cmNlUHJvdmlkZXItPm51
bVJlc291cmNlcygpKSk7CisgICAgICAgIGlmIChHZXRQYXJhbSgpID09IENDUmVzb3VyY2VQcm92
aWRlcjo6R0xUZXh0dXJlKQorICAgICAgICAgICAgRVhQRUNUX0VRKGNvdW50LCBjb250ZXh0KCkt
PnRleHR1cmVDb3VudCgpKTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTMxMyw3ICszMjYsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVBy
b3ZpZGVyOwogfTsKIAotVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQorVEVT
VF9QKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQogewogICAgIEludFNpemUgc2l6ZSgx
LCAxKTsKICAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBA
IC0zMjIsNyArMzM1LDcgQEAgVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQog
ICAgIEFTU0VSVF9FUSg0VSwgcGl4ZWxTaXplKTsKIAogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBpZCA9IG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwg
c2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7Ci0gICAg
RVhQRUNUX0VRKDEsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51bVJl
c291cmNlcygxKTsKIAogICAgIHVpbnQ4X3QgZGF0YVs0XSA9IHsxLCAyLCAzLCA0fTsKICAgICBJ
bnRSZWN0IHJlY3QoSW50UG9pbnQoKSwgc2l6ZSk7CkBAIC0zMzMsMTAgKzM0NiwxMCBAQCBURVNU
X0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFzaWMpCiAgICAgRVhQRUNUX0VRKDAsIG1lbWNt
cChkYXRhLCByZXN1bHQsIHBpeGVsU2l6ZSkpOwogCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5k
ZWxldGVSZXNvdXJjZShpZCk7Ci0gICAgRVhQRUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNv
dW50KCkpOworICAgIGV4cGVjdE51bVJlc291cmNlcygwKTsKIH0KIAotVEVTVF9GKENDUmVzb3Vy
Y2VQcm92aWRlclRlc3QsIERlbGV0ZU93bmVkUmVzb3VyY2VzKQorVEVTVF9QKENDUmVzb3VyY2VQ
cm92aWRlclRlc3QsIERlbGV0ZU93bmVkUmVzb3VyY2VzKQogewogICAgIEludFNpemUgc2l6ZSgx
LCAxKTsKICAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBA
IC0zNDUsMTYgKzM1OCwxNiBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRl
T3duZWRSZXNvdXJjZXMpCiAgICAgY29uc3QgaW50IGNvdW50ID0gMzsKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRl
UmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVV
c2FnZUFueSk7Ci0gICAgRVhQRUNUX0VRKDMsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOwor
ICAgIGV4cGVjdE51bVJlc291cmNlcygzKTsKIAogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVs
ZXRlT3duZWRSZXNvdXJjZXMocG9vbCsxKTsKLSAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50
ZXh0dXJlQ291bnQoKSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDMpOwogCiAgICAgbV9yZXNv
dXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJlc291cmNlcyhwb29sKTsKLSAgICBFWFBFQ1RfRVEo
MCwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDAp
OwogfQogCi1URVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQorVEVTVF9QKEND
UmVzb3VyY2VQcm92aWRlclRlc3QsIFVwbG9hZCkKIHsKICAgICBJbnRTaXplIHNpemUoMiwgMik7
CiAgICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpAQCAtNDA2
LDggKzQxOSwxMiBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQogICAg
IG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoaWQpOwogfQogCi1URVNUX0YoQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdCwgVHJhbnNmZXJSZXNvdXJjZXMpCitURVNUX1AoQ0NSZXNvdXJj
ZVByb3ZpZGVyVGVzdCwgVHJhbnNmZXJSZXNvdXJjZXMpCiB7CisgICAgLy8gUmVzb3VyY2UgdHJh
bnNmZXIgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBHTCB0ZXh0dXJlcyBmb3Igbm93LgorICAgIGlm
IChHZXRQYXJhbSgpICE9IENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlKQorICAgICAgICBy
ZXR1cm47CisKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNoaWxkQ29udGV4dChGYWtl
V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OmNyZWF0ZShSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dDo6Y3JlYXRlKG1fc2hhcmVkRGF0YS5nZXQoKSkpKTsKICAgICBPd25QdHI8Q0NSZXNvdXJjZVBy
b3ZpZGVyPiBjaGlsZFJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUo
Y2hpbGRDb250ZXh0LmdldCgpKSk7CiAKQEAgLTQ4NiwxNCArNTAzLDE0IEBAIFRFU1RfRihDQ1Jl
c291cmNlUHJvdmlkZXJUZXN0LCBUcmFuc2ZlclJlc291cmNlcykKIAogICAgIFJlc291cmNlUHJv
dmlkZXJDb250ZXh0KiBjaGlsZENvbnRleHQzRCA9IHN0YXRpY19jYXN0PFJlc291cmNlUHJvdmlk
ZXJDb250ZXh0Kj4oY2hpbGRDb250ZXh0LT5jb250ZXh0M0QoKSk7CiAgICAgewotICAgICAgICBD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0
KCksIGlkMSk7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBs
b2NrKGNoaWxkUmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQxKTsKICAgICAgICAgQVNTRVJUX05F
KDBVLCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAgICAgY2hpbGRDb250ZXh0M0QtPmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKTsKICAg
ICAgICAgY2hpbGRDb250ZXh0M0QtPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHJlc3VsdCk7CiAg
ICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZGF0YTEsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CiAg
ICAgfQogICAgIHsKLSAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2soY2hp
bGRSZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZDIpOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlNjb3BlZFJlYWRMb2NrR0wgbG9jayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlk
Mik7CiAgICAgICAgIEFTU0VSVF9ORSgwVSwgbG9jay50ZXh0dXJlSWQoKSk7CiAgICAgICAgIGNo
aWxkQ29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bG9jay50ZXh0dXJlSWQoKSk7CiAgICAgICAgIGNoaWxkQ29udGV4dDNELT5nZXRQaXhlbHMoc2l6
ZSwgZm9ybWF0LCByZXN1bHQpOwpAQCAtNTE5LDQgKzUzNiw5IEBAIFRFU1RfRihDQ1Jlc291cmNl
UHJvdmlkZXJUZXN0LCBUcmFuc2ZlclJlc291cmNlcykKICAgICBFWFBFQ1RfRVEoMHUsIG1fcmVz
b3VyY2VQcm92aWRlci0+bWFpbGJveENvdW50KCkpOwogfQogCitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChDQ1Jlc291cmNlUHJvdmlkZXJUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
UmVzb3VyY2VQcm92aWRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OlZhbHVlcyhDQ1Jlc291cmNlUHJvdmlkZXI6OkdMVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6Qml0bWFwKSk7CisK
IH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159551</attachid>
            <date>2012-08-20 16:01:41 -0700</date>
            <delta_ts>2012-08-20 20:02:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120820160101.patch</filename>
            <type>text/plain</type>
            <size>40468</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYWJiMDc3YzcyYWQ3
YWU5NWQ2ODEwMmFkMTgwOWVkM2QwYTlhZS4uMWJhOTM4MThkNWM4NjMzNjE3OGExOWU2YWQyNDMy
NGQ5MjcyYTdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTE1ICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFi
aWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAg
ICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQg
YXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIFdlIHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIg
dG8gYmUgYWJsZSB0byBoYW5kbGUgZGlmZmVyZW50IHJlc291cmNlCisgICAgICAgIHR5cGVzIGF0
IHRoZSBzYW1lIHRpbWUuICBJbiBwcmFjdGljZSwgYSBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMK
KyAgICAgICAgZGVzaXJlZCBmb3IgbW9zdCB1c2VzIHdpdGhpbiBhIHNpbmdsZSBjb21wb3NpdG9y
IGluc3RhbmNlLCB3aGljaCBpcworICAgICAgICBzcGVjaWZpZWQgYnkgdGhlIGRlZmF1bHQgcmVz
b3VyY2UgdHlwZS4gIERlZmF1bHQgcmVzb3VyY2UgdHlwZXMgYXJlCisgICAgICAgIGV4cGVjdGVk
IHRvIGJlIG1vc3RseSAxLXRvLTEgd2l0aCBDQ1JlbmRlcmVyIHR5cGVzLgorCisgICAgICAgIE5l
dyB0ZXN0cyBhZGRlZCBieSBwYXJhbWV0cml6aW5nIGV4aXN0aW5nIENDUmVzb3VyY2VQcm92aWRl
ciB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZp
ZGVvUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdU
ZXh0dXJlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Omdl
dEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChEcmF3aW5n
RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3Vy
Y2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVHTFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Jlc291cmNlUHJvdmlkZXI6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OnVubG9ja0ZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6OlNjb3BlZFJlYWRMb2NrR0wpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjp+U2NvcGVkUmVh
ZExvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdy
aXRlTG9ja0dMOjpTY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp+U2NvcGVkV3JpdGVMb2NrR0wpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZTo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6On5TY29wZWRSZWFk
TG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkV3JpdGVMb2NrU29mdHdhcmU6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6On5T
Y29wZWRXcml0ZUxvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OkNDUmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6c2V0Q3JlYXRpb25Qb2xpY3kpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGlvblBvbGljeSk6Cisg
ICAgICAgIChDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoU2NvcGVkUmVhZExvY2tHTCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6
OnRleHR1cmVJZCk6CisgICAgICAgIChTY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp0ZXh0dXJlSWQpOgor
ICAgICAgICAoU2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6OnNrQml0bWFwKToKKyAgICAg
ICAgKFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6OnNrQ2FudmFzKToKKyAgICAgICAg
KFJlc291cmNlKToKKwogMjAxMi0wOC0yMCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJlc3BlY3QgcnVudGltZSBmbGFncyBmb3IgRGV2aWNlIE9yaWVudGF0
aW9uIGFuZCBEZXZpY2UgTW90aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDVlZDJh
YmY4MGI0NmRiNmM5ZjJhNGY2Yjg2ZDYyZjc0YzllN2U3OWYuLjE1YzVhZjhlMDg2OWI0MGRkNDE1
ODQ2NTcyYjI1M2E0ZDhjNDdiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTItMDgtMTUgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29t
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHNvZnR3YXJlIGJpdG1hcCByZXNvdXJjZXMgdG8g
Q0NSZXNvdXJjZVByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyB0aGUgYWJpbGl0eSB0byBDQ1Jlc291cmNlUHJvdmlkZXIgdG8g
dXNlIHNvZnR3YXJlIGJpdG1hcHMuCisgICAgICAgIFRoZXkgYXJlIGFsbG9jYXRlZCBhcyBwbGFp
bi1vbGQtbWVtb3J5LCBhbmQgZXhwb3NlZCBhcyBTa2lhIG9iamVjdHMuCisKKyAgICAgICAgV2Ug
d2FudCB0aGUgUmVzb3VyY2VQcm92aWRlciB0byBiZSBhYmxlIHRvIGhhbmRsZSBkaWZmZXJlbnQg
cmVzb3VyY2UKKyAgICAgICAgdHlwZXMgYXQgdGhlIHNhbWUgdGltZS4gIEluIHByYWN0aWNlLCBh
IGRlZmF1bHQgcmVzb3VyY2UgdHlwZSBpcworICAgICAgICBkZXNpcmVkIGZvciBtb3N0IHVzZXMg
d2l0aGluIGEgc2luZ2xlIGNvbXBvc2l0b3IgaW5zdGFuY2UsIHdoaWNoIGlzCisgICAgICAgIHNw
ZWNpZmllZCBieSB0aGUgZGVmYXVsdCByZXNvdXJjZSB0eXBlLiAgRGVmYXVsdCByZXNvdXJjZSB0
eXBlcyBhcmUKKyAgICAgICAgZXhwZWN0ZWQgdG8gYmUgbW9zdGx5IDEtdG8tMSB3aXRoIENDUmVu
ZGVyZXIgdHlwZXMuCisKKyAgICAgICAgTmV3IHRlc3RzIGFkZGVkIGJ5IHBhcmFtZXRyaXppbmcg
ZXhpc3RpbmcgQ0NSZXNvdXJjZVByb3ZpZGVyIHRlc3RzLgorCisgICAgICAgICogdGVzdHMvQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNDUmVzb3VyY2VQcm92
aWRlclRlc3Q6OmdldFJlc291cmNlUGl4ZWxzKToKKwogMjAxMi0wOC0yMCAgSGFucyBXZW5uYm9y
ZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlc3BlY3QgcnVudGltZSBmbGFncyBm
b3IgRGV2aWNlIE9yaWVudGF0aW9uIGFuZCBEZXZpY2UgTW90aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAppbmRleCBkYTJlY2M2MTA5YzVkNGVjYjRiNjg4OTBiMDg2ZjEyYTA5YTY0NDg3
Li4xMDFhZDRiYjE3OWI2ZGIzY2I5YTY5NjkxOWMwNmQ4ZDk3MWYyM2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoV2ViR3Jh
cGhpYwogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgdGV4dHVyZS0+
YWNxdWlyZUJhY2tpbmdUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIpOwotICAgIENDU2NvcGVkTG9j
a1Jlc291cmNlRm9yV3JpdGUgbG9jayhyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5yZXNvdXJj
ZUlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0wgbG9jayhy
ZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOwogICAgIC8vIENyZWF0ZSBh
biBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KICAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGdyQ29udGV4dCwgdGV4dHVyZS0+c2l6ZSgp
LCBsb2NrLnRleHR1cmVJZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggMzZlNDdkMTc3ZDRhZmIzYjAxNzMxYzkwZDRjODBmYzMzZDA1ZGRlNC4uODRmMDBh
MWM3YjljNDQzMGJkMzE1YWMxMzY2OTFjMjEwMmNlZWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIGlubGluZSBTa0Jp
dG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBj
b25zdAogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVzaCgpOwogCi0gICAgQ0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJv
dmlkZXIoKSwgc291cmNlVGV4dHVyZS0+aWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRXcml0ZUxvY2tHTCBsb2NrKGxheWVyUmVuZGVyZXItPnJlc291cmNlUHJvdmlkZXIoKSwg
c291cmNlVGV4dHVyZS0+aWQoKSk7CiAgICAgU2tCaXRtYXAgc291cmNlID0gQ0NSZW5kZXJTdXJm
YWNlRmlsdGVyczo6YXBwbHkoZmlsdGVycywgbG9jay50ZXh0dXJlSWQoKSwgc291cmNlVGV4dHVy
ZS0+c2l6ZSgpLCBmaWx0ZXJDb250ZXh0LCBmaWx0ZXJHckNvbnRleHQpOwogICAgIHJldHVybiBz
b3VyY2U7CiB9CkBAIC00NjUsMjAgKzQ2NSwyMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAog
ICAgIC8vIEZJWE1FOiBDYWNoZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBk
byBpdCBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCiAgICAgLy8gQXBwbHkg
ZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KICAgICBTa0JpdG1hcCBmaWx0ZXJCaXRt
YXAgPSBhcHBseUZpbHRlcnModGhpcywgcmVuZGVyUGFzcy0+ZmlsdGVycygpLCBjb250ZW50c1Rl
eHR1cmUpOwotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IGNvbnRlbnRz
UmVzb3VyY2VMb2NrOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRM
b2NrR0w+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOwogICAgIHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVy
ZUlkID0gMDsKICAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSkgewogICAgICAgICBH
clRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJp
dG1hcC5nZXRUZXh0dXJlKCkpOwogICAgICAgICBjb250ZW50c1RleHR1cmVJZCA9IHRleHR1cmUt
PmdldFRleHR1cmVIYW5kbGUoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb250ZW50c1Jlc291
cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQobV9yZXNv
dXJjZVByb3ZpZGVyLCBjb250ZW50c1RleHR1cmUtPmlkKCkpKTsKKyAgICAgICAgY29udGVudHNS
ZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFk
TG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgY29udGVudHNUZXh0dXJlLT5pZCgpKSk7CiAgICAg
ICAgIGNvbnRlbnRzVGV4dHVyZUlkID0gY29udGVudHNSZXNvdXJjZUxvY2stPnRleHR1cmVJZCgp
OwogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBp
cyBvbmUuCiAgICAgaWYgKGJhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNr
Z3JvdW5kVGV4dHVyZS0+c2l6ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKLSAgICAg
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBi
YWNrZ3JvdW5kVGV4dHVyZS0+aWQoKSk7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkUmVhZExvY2tHTCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgYmFja2dyb3VuZFRleHR1cmUt
PmlkKCkpOwogICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZnJhbWUsIGxvY2sudGV4
dHVyZUlkKCksIHF1YWQtPnF1YWRSZWN0KCksIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSk7CiAgICAg
fQogCkBAIC00OTUsMTAgKzQ5NSwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAogICAgICAg
ICBkZXZpY2VMYXllckVkZ2VzLmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgpOwogICAgIH0K
IAotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IG1hc2tSZXNvdXJjZUxv
Y2s7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTD4gbWFz
a1Jlc291cmNlTG9jazsKICAgICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkID0gMDsKICAgICBpZiAo
cXVhZC0+bWFza1Jlc291cmNlSWQoKSkgewotICAgICAgICBtYXNrUmVzb3VyY2VMb2NrID0gYWRv
cHRQdHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZChtX3Jlc291cmNlUHJvdmlkZXIs
IHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkpKTsKKyAgICAgICAgbWFza1Jlc291cmNlTG9jayA9IGFk
b3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wobV9yZXNvdXJj
ZVByb3ZpZGVyLCBxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKSk7CiAgICAgICAgIG1hc2tUZXh0dXJl
SWQgPSBtYXNrUmVzb3VyY2VMb2NrLT50ZXh0dXJlSWQoKTsKICAgICB9CiAKQEAgLTY4OSw3ICs2
ODksNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IERy
YXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDVGlsZQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+dXNlUHJvZ3JhbSh1bmlmb3Jtcy5wcm9ncmFtKSk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtMWkodW5pZm9ybXMuc2FtcGxlckxvY2F0aW9uLCAwKSk7CiAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBxdWFkUmVzb3Vy
Y2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgcXVhZFJlc291cmNlTG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZFJl
c291cmNlTG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBxdWFk
LT50ZXh0dXJlRmlsdGVyKCkpKTsKQEAgLTc5Niw5ICs3OTYsOSBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChjb25zdCBEcmF3aW5nRnJhbWUmIGZyYW1lLCBj
b25zdCBDQwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSA9
IHF1YWQtPnVQbGFuZSgpOwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUm
IHZQbGFuZSA9IHF1YWQtPnZQbGFuZSgpOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JS
ZWFkIHlQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB5UGxhbmUucmVzb3VyY2VJZCk7Ci0g
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHVQbGFuZUxvY2sobV9yZXNvdXJjZVByb3Zp
ZGVyLCB1UGxhbmUucmVzb3VyY2VJZCk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
IHZQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CisgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHlQbGFuZUxvY2sobV9yZXNvdXJj
ZVByb3ZpZGVyLCB5UGxhbmUucmVzb3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRSZWFkTG9ja0dMIHVQbGFuZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB1UGxhbmUucmVz
b3VyY2VJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHZQbGFu
ZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB2UGxhbmUucmVzb3VyY2VJZCk7CiAgICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHlQbGFuZUxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUyKSk7CkBAIC05MDcsNyArOTA3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdUZXh0dXJlUXVhZChjb25zdCBEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1QK
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00ZihiaW5kaW5nLnRleFRyYW5z
Zm9ybUxvY2F0aW9uLCB1dlJlY3QueCgpLCB1dlJlY3QueSgpLCB1dlJlY3Qud2lkdGgoKSwgdXZS
ZWN0LmhlaWdodCgpKSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JSZWFkIHF1YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5y
ZXNvdXJjZUlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBx
dWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsK
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBxdWFkUmVzb3VyY2VMb2NrLnRleHR1cmVJZCgpKSk7CiAKICAgICAv
LyBGSVhNRTogc2V0dGluZyB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5IHRpbWUgaXMgcmVk
dW5kYW50LiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUKQEAgLTExOTksNyArMTE5OSw3IEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoQ0NTY29wZWRU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zCiAgICAgaWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJl
LT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgZGV2aWNlUmVjdC5zaXplKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0IsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0
ZSBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSk7CisgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4
dHVyZS0+aWQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpLCBk
ZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKQEAgLTEyMjYsNyAr
MTIyNiw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1Rl
eHR1cmUoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QKICAgICBBU1NFUlQodGV4dHVyZS0+aWQo
KSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwot
ICAgIG1fY3VycmVudEZyYW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tS
ZXNvdXJjZUZvcldyaXRlKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkpOworICAg
IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlNjb3BlZFdyaXRlTG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkp
OwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jay0+dGV4
dHVyZUlkKCk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJ
ZCwgMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDA5Y2QwZTI5
MTExOWJlNzQxOTQyMjhmOTAzN2Q5YWVkZTNmMWRhYjUuLjM1NzVjMTkzZDc3MDI0NWZjOGVhNGYw
MzgzOTNiZTgxNmI5Yjg3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBA
IC0yNDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlzaWJsZTsKICAgICBUZXh0
dXJlVXBsb2FkZXJPcHRpb24gbV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nOwogCi0gICAgT3duUHRy
PENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGU+IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jazsK
KyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTD4gbV9jdXJy
ZW50RnJhbWVidWZmZXJMb2NrOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmNwcAppbmRleCA4YTVkNmFmOWRmOTBiNmNmMmI2Yzk0ODZjZTA5ZWExNWQ3ZDRjMGQ5Li5k
NGZkZWU1NmY3OWYzZjE0OWQ4YjQwNzE1M2I5ZmYyMDhkMTYwM2ZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVzb3VyY2VQcm92aWRlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiIC8vIEZvciB0aGUgR0xD
KCkgbWFjcm8KICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgorI2luY2x1ZGUgPGxp
bWl0cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTg4LDEzICs4OSwyNCBAQCBib29sIENDUmVzb3VyY2VQ
cm92aWRlcjo6aW5Vc2VCeUNvbnN1bWVyKFJlc291cmNlSWQgaWQpCiAKIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBw
b29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhp
bnQgaGludCkKIHsKKyAgICBzd2l0Y2ggKG1fZGVmYXVsdFJlc291cmNlVHlwZSkgeworICAgIGNh
c2UgR0xUZXh0dXJlOgorICAgICAgICByZXR1cm4gY3JlYXRlR0xUZXh0dXJlKHBvb2wsIHNpemUs
IGZvcm1hdCwgaGludCk7CisgICAgY2FzZSBCaXRtYXA6CisgICAgICAgIEFTU0VSVChmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICByZXR1cm4gY3JlYXRlQml0bWFw
KHBvb2wsIHNpemUpOworICAgIH0KKworICAgIENSQVNIKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZUdMVGV4dHVyZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0
LCBUZXh0dXJlVXNhZ2VIaW50IGhpbnQpCit7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSAwOwogICAgIFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29u
dGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0
d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVChj
b250ZXh0M2QpOwogICAgIEdMQyhjb250ZXh0M2QsIHRleHR1cmVJZCA9IGNvbnRleHQzZC0+Y3Jl
YXRlVGV4dHVyZSgpKTsKICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKICAgICBHTEMoY29u
dGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKQEAgLTExNSwxMiArMTI3LDIzIEBAIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29s
LCBjb25zCiAgICAgcmV0dXJuIGlkOwogfQogCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVCaXRtYXAoaW50IHBvb2wsIGNvbnN0IEludFNp
emUmIHNpemUpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKworICAg
IHVpbnQ4X3QqIHBpeGVscyA9IG5ldyB1aW50OF90W3NpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0
KCkgKiA0XTsKKworICAgIFJlc291cmNlSWQgaWQgPSBtX25leHRJZCsrOworICAgIFJlc291cmNl
IHJlc291cmNlKHBpeGVscywgcG9vbCwgc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwor
ICAgIG1fcmVzb3VyY2VzLmFkZChpZCwgcmVzb3VyY2UpOworICAgIHJldHVybiBpZDsKK30KKwog
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
UmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCkKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlSWQgaWQgPSBtX25l
eHRJZCsrOwotICAgIFJlc291cmNlIHJlc291cmNlOwotICAgIHJlc291cmNlLmdsSWQgPSB0ZXh0
dXJlSWQ7CisgICAgUmVzb3VyY2UgcmVzb3VyY2UodGV4dHVyZUlkLCAwLCBJbnRTaXplKCksIDAp
OwogICAgIHJlc291cmNlLmV4dGVybmFsID0gdHJ1ZTsKICAgICBtX3Jlc291cmNlcy5hZGQoaWQs
IHJlc291cmNlKTsKICAgICByZXR1cm4gaWQ7CkBAIC0xMjksMTUgKzE1MiwxNSBAQCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJj
ZUZyb21FeHRlcm5hbFRleAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZVJlc291cmNl
KFJlc291cmNlSWQgaWQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
LSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0
M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAg
ICB9CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7
CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tl
ZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOwotICAgIGlmICghaXQt
PnNlY29uZC5leHRlcm5hbCkKKworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2Qg
PSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmIChjb250ZXh0M2QgJiYgIWl0LT5zZWNv
bmQuZXh0ZXJuYWwpCiAgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+ZGVsZXRlVGV4
dHVyZShpdC0+c2Vjb25kLmdsSWQpKTsKKyAgICBpZiAoaXQtPnNlY29uZC5waXhlbHMpCisgICAg
ICAgIGRlbGV0ZSBpdC0+c2Vjb25kLnBpeGVsczsKKwogICAgIG1fcmVzb3VyY2VzLnJlbW92ZShp
dCk7CiB9CiAKQEAgLTE1Myw3MSArMTc2LDY4IEBAIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpk
ZWxldGVPd25lZFJlc291cmNlcyhpbnQgcG9vbCkKICAgICAgICAgZGVsZXRlUmVzb3VyY2UoKml0
KTsKIH0KIAotdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQorQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZVR5cGUgQ0NSZXNvdXJjZVByb3ZpZGVyOjpyZXNvdXJjZVR5cGUoUmVz
b3VyY2VJZCBpZCkKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAg
IEFTU0VSVChtX3RleFN1YkltYWdlLmdldCgpKTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkg
ewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29t
cG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxv
Y2tGb3JSZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotCi0gICAgY29udGV4dDNk
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5n
bElkKTsKLSAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNl
UmVjdCwgZGVzdE9mZnNldCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAgQVNT
RVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC50eXBl
OwogfQogCi11bnNpZ25lZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJj
ZUlkIGlkKQordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVu
ZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JS
ZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotICAgIGl0LT5zZWNvbmQubG9ja2Vk
Rm9yV3JpdGUgPSB0cnVlOwotICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7Ci19CiAKLXZvaWQg
Q0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQotewotICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgUmVzb3VyY2VNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0
ZXJuYWwpOwotICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKKyAgICBpZiAo
aXQtPnNlY29uZC5nbElkKSB7CisgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgICAgICBBU1NFUlQoY29udGV4dDNkKTsK
KyAgICAgICAgQVNTRVJUKG1fdGV4U3ViSW1hZ2UuZ2V0KCkpOworICAgICAgICBjb250ZXh0M2Qt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBpdC0+c2Vjb25kLmds
SWQpOworICAgICAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291
cmNlUmVjdCwgZGVzdE9mZnNldCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CisgICAg
fQorCisgICAgaWYgKGl0LT5zZWNvbmQucGl4ZWxzKSB7CisgICAgICAgIFNrQml0bWFwIHNyY0Z1
bGw7CisgICAgICAgIHNyY0Z1bGwuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
ZywgaW1hZ2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNyY0Z1
bGwuc2V0UGl4ZWxzKGNvbnN0X2Nhc3Q8dWludDhfdCo+KGltYWdlKSk7CisgICAgICAgIFNrQml0
bWFwIHNyY1N1YnNldDsKKyAgICAgICAgU2tJUmVjdCBza1NvdXJjZVJlY3QgPSBTa0lSZWN0OjpN
YWtlWFlXSChzb3VyY2VSZWN0LngoKSwgc291cmNlUmVjdC55KCksIHNvdXJjZVJlY3Qud2lkdGgo
KSwgc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHNrU291cmNlUmVjdC5vZmZzZXQoLWlt
YWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICAgICAgc3JjRnVsbC5leHRyYWN0U3Vi
c2V0KCZzcmNTdWJzZXQsIHNrU291cmNlUmVjdCk7CisKKyAgICAgICAgU2NvcGVkV3JpdGVMb2Nr
U29mdHdhcmUgbG9jayh0aGlzLCBpZCk7CisgICAgICAgIFNrQ2FudmFzKiBkZXN0ID0gbG9jay5z
a0NhbnZhcygpOworICAgICAgICBkZXN0LT53cml0ZVBpeGVscyhzcmNTdWJzZXQsIGRlc3RPZmZz
ZXQud2lkdGgoKSwgZGVzdE9mZnNldC5oZWlnaHQoKSk7CisgICAgfQogfQogCiB2b2lkIENDUmVz
b3VyY2VQcm92aWRlcjo6Zmx1c2goKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSk7CiAgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+
Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNvbnRleHQzZC0+Zmx1c2goKTsKKyAgICBpZiAoY29udGV4dDNkKQor
ICAgICAgICBjb250ZXh0M2QtPmZsdXNoKCk7CiB9CiAKIGJvb2wgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpzaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpKTsKICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250
ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgaWYg
KCFjb250ZXh0M2QgfHwgIW1fdXNlU2hhbGxvd0ZsdXNoKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQogCi0gICAgaWYgKG1fdXNlU2hhbGxvd0ZsdXNoKQotICAgICAgICBjb250ZXh0M2Qt
PnNoYWxsb3dGbHVzaENIUk9NSVVNKCk7Ci0gICAgcmV0dXJuIG1fdXNlU2hhbGxvd0ZsdXNoOwor
ICAgIGNvbnRleHQzZC0+c2hhbGxvd0ZsdXNoQ0hST01JVU0oKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdW5zaWduZWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yUmVhZChSZXNvdXJjZUlk
IGlkKQorY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZSogQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpsb2NrRm9yUmVhZChSZXNvdXJjZUlkIGlkKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c0ltcGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+
c2Vjb25kLmxvY2tlZEZvcldyaXRlKTsKLSAgICArKyhpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291
bnQpOwotICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7CisgICAgaXQtPnNlY29uZC5sb2NrRm9y
UmVhZENvdW50Kys7CisgICAgcmV0dXJuICZpdC0+c2Vjb25kOwogfQogCiB2b2lkIENDUmVzb3Vy
Y2VQcm92aWRlcjo6dW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkIGlkKQpAQCAtMjI1LDE3ICsyNDUs
OTQgQEAgdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBp
ZCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBt
X3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQgPiAwKTsKLSAg
ICAtLShpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOworICAgIGl0LT5zZWNvbmQubG9ja0Zv
clJlYWRDb3VudC0tOworfQorCitjb25zdCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlKiBD
Q1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2Vz
LmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tG
b3JSZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAgIGl0LT5zZWNvbmQubG9j
a2VkRm9yV3JpdGUgPSB0cnVlOworICAgIHJldHVybiAmaXQtPnNlY29uZDsKK30KKwordm9pZCBD
Q1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0ZvcldyaXRlKFJlc291cmNlSWQgaWQpCit7CisgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJj
ZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5leHRl
cm5hbCk7CisgICAgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSA9IGZhbHNlOworfQorCitDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6OlNjb3BlZFJlYWRMb2NrR0woQ0NSZXNv
dXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgcmVzb3VyY2VJZCkKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3Zp
ZGVyKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCisgICAgLCBtX3RleHR1cmVJZChy
ZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yUmVhZChyZXNvdXJjZUlkKS0+Z2xJZCkKK3sKKyAgICBB
U1NFUlQobV90ZXh0dXJlSWQpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRM
b2NrR0w6On5TY29wZWRSZWFkTG9ja0dMKCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVu
bG9ja0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29w
ZWRXcml0ZUxvY2tHTDo6U2NvcGVkV3JpdGVMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkK
KyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9yZXNv
dXJjZUlkKHJlc291cmNlSWQpCisgICAgLCBtX3RleHR1cmVJZChyZXNvdXJjZVByb3ZpZGVyLT5s
b2NrRm9yV3JpdGUocmVzb3VyY2VJZCktPmdsSWQpCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZUlk
KTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTDo6flNjb3BlZFdy
aXRlTG9ja0dMKCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRlKG1f
cmVzb3VyY2VJZCk7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0
bWFwV2l0aFJlc291cmNlKFNrQml0bWFwKiBza0JpdG1hcCwgY29uc3QgUmVzb3VyY2UqIHJlc291
cmNlKQoreworICAgIEFTU0VSVChyZXNvdXJjZS0+cGl4ZWxzKTsKKyAgICBBU1NFUlQocmVzb3Vy
Y2UtPmZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgc2tCaXRtYXAtPnNl
dENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHJlc291cmNlLT5zaXplLndpZHRo
KCksIHJlc291cmNlLT5zaXplLmhlaWdodCgpKTsKKyAgICBza0JpdG1hcC0+c2V0UGl4ZWxzKHJl
c291cmNlLT5waXhlbHMpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2Nr
U29mdHdhcmU6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkK
KyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9yZXNv
dXJjZUlkKHJlc291cmNlSWQpCit7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNr
Qml0bWFwV2l0aFJlc291cmNlKCZtX3NrQml0bWFwLCByZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9y
UmVhZChyZXNvdXJjZUlkKSk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExv
Y2tTb2Z0d2FyZTo6flNjb3BlZFJlYWRMb2NrU29mdHdhcmUoKQoreworICAgIG1fcmVzb3VyY2VQ
cm92aWRlci0+dW5sb2NrRm9yUmVhZChtX3Jlc291cmNlSWQpOworfQorCitDQ1Jlc291cmNlUHJv
dmlkZXI6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZShD
Q1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCByZXNvdXJjZUlkKQorICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNl
UHJvdmlkZXIpCisgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKK3sKKyAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OnBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UoJm1fc2tCaXRtYXAsIHJl
c291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0ZShyZXNvdXJjZUlkKSk7CisgICAgbV9za0NhbnZh
cy5zZXRCaXRtYXBEZXZpY2UobV9za0JpdG1hcCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6
U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6On5TY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSgpCit7Cisg
ICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JXcml0ZShtX3Jlc291cmNlSWQpOwogfQog
CiBDQ1Jlc291cmNlUHJvdmlkZXI6OkNDUmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9uZXh0SWQoMSkK
ICAgICAsIG1fbmV4dENoaWxkKDEpCisgICAgLCBtX2RlZmF1bHRSZXNvdXJjZVR5cGUoR0xUZXh0
dXJlKQogICAgICwgbV91c2VUZXh0dXJlU3RvcmFnZUV4dChmYWxzZSkKICAgICAsIG1fdXNlVGV4
dHVyZVVzYWdlSGludChmYWxzZSkKICAgICAsIG1fdXNlU2hhbGxvd0ZsdXNoKGZhbHNlKQotICAg
ICwgbV9tYXhUZXh0dXJlU2l6ZSgwKQorICAgICwgbV9tYXhUZXh0dXJlU2l6ZShJTlRfTUFYKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oCmluZGV4IGI4NzMzYTE2Mzhm
ZGFhN2I4YmFkNmJkNTQxYmI1YWI3YjllNTljNzQuLmUyNDRiYjYzNjA3NzA1MDZlOTc1N2M5MjQy
MjNhZWM1NWFjOWVlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oCkBAIC0z
MCw2ICszMCw4IEBACiAjaW5jbHVkZSAiQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTa0Jp
dG1hcC5oIgorI2luY2x1ZGUgIlNrQ2FudmFzLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00NCw4
ICs0Niw2IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZDsKLWNsYXNzIENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yV3JpdGU7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTGF5ZXJUZXh0dXJl
U3ViSW1hZ2U7CiAKQEAgLTU4LDYgKzU4LDEwIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3Rv
cjxSZXNvdXJjZUlkPiBSZXNvdXJjZUlkQXJyYXk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlc291
cmNlSWQsIFJlc291cmNlSWQ+IFJlc291cmNlSWRNYXA7CiAgICAgZW51bSBUZXh0dXJlVXNhZ2VI
aW50IHsgVGV4dHVyZVVzYWdlQW55LCBUZXh0dXJlVXNhZ2VGcmFtZWJ1ZmZlciB9OworICAgIGVu
dW0gUmVzb3VyY2VUeXBlIHsKKyAgICAgICAgR0xUZXh0dXJlID0gMSwKKyAgICAgICAgQml0bWFw
LAorICAgIH07CiAgICAgc3RydWN0IE1haWxib3ggewogICAgICAgICBHQzNEYnl0ZSBuYW1lWzY0
XTsKICAgICB9OwpAQCAtODcsMTEgKzkxLDE5IEBAIHB1YmxpYzoKIAogICAgIC8vIFByb2R1Y2Vy
IGludGVyZmFjZS4KIAotICAgIC8vIENyZWF0ZXMgYSByZXNvdXJjZSBvZiB0aGUgZ2l2ZW4gc2l6
ZS9mb3JtYXQsIGludG8gdGhlIGdpdmVuIHBvb2wuCisgICAgdm9pZCBzZXREZWZhdWx0UmVzb3Vy
Y2VUeXBlKFJlc291cmNlVHlwZSB0eXBlKSB7IG1fZGVmYXVsdFJlc291cmNlVHlwZSA9IHR5cGU7
IH0KKyAgICBSZXNvdXJjZVR5cGUgZGVmYXVsdFJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVmYXVsdFJlc291cmNlVHlwZTsgfQorICAgIFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUo
UmVzb3VyY2VJZCk7CisKKyAgICAvLyBDcmVhdGVzIGEgcmVzb3VyY2Ugb2YgdGhlIGRlZmF1bHQg
cmVzb3VyY2UgdHlwZS4KICAgICBSZXNvdXJjZUlkIGNyZWF0ZVJlc291cmNlKGludCBwb29sLCBj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50KTsKIAotICAg
IC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUgaW50byBhIHJlc291cmNlLgorICAgIC8vIFlv
dSBjYW4gYWxzbyBleHBsaWNpdGx5IGNyZWF0ZSBhIHNwZWNpZmljIHJlc291cmNlIHR5cGUuCisg
ICAgUmVzb3VyY2VJZCBjcmVhdGVHTFRleHR1cmUoaW50IHBvb2wsIGNvbnN0IEludFNpemUmLCBH
QzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQpOworICAgIFJlc291cmNlSWQgY3JlYXRl
Qml0bWFwKGludCBwb29sLCBjb25zdCBJbnRTaXplJik7CisgICAgLy8gV3JhcHMgYW4gZXh0ZXJu
YWwgdGV4dHVyZSBpbnRvIGEgR0wgcmVzb3VyY2UuCiAgICAgUmVzb3VyY2VJZCBjcmVhdGVSZXNv
dXJjZUZyb21FeHRlcm5hbFRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkKTsKKwogICAgIHZvaWQg
ZGVsZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCk7CiAKICAgICAvLyBEZWxldGVzIGFsbCByZXNvdXJj
ZXMgb3duZWQgYnkgYSBnaXZlbiBwb29sLgpAQCAtMTQ3LDEzICsxNTksNzIgQEAgcHVibGljOgog
ICAgIC8vIE9ubHkgZm9yIHRlc3RpbmcKICAgICBzaXplX3QgbWFpbGJveENvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9tYWlsYm94ZXMuc2l6ZSgpOyB9CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZDsKLSAgICBmcmllbmQgY2xhc3MgQ0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsKKyAgICAvLyBUaGUgZm9sbG93aW5nIGxvY2sgY2xhc3Nl
cyBhcmUgcGFydCBvZiB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIEFQSSBhbmQgYXJlCisgICAgLy8g
bmVlZGVkIHRvIHJlYWQgYW5kIHdyaXRlIHRoZSByZXNvdXJjZSBjb250ZW50cy4gVGhlIHVzZXIg
bXVzdCBlbnN1cmUKKyAgICAvLyB0aGF0IHRoZXkgb25seSB1c2UgR0wgbG9ja3Mgb24gR0wgcmVz
b3VyY2VzLCBldGMsIGFuZCB0aGlzIGlzIGVuZm9yY2VkCisgICAgLy8gYnkgYXNzZXJ0aW9ucy4K
KyAgICBjbGFzcyBTY29wZWRSZWFkTG9ja0dMIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2NvcGVkUmVhZExvY2tHTCk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRSZWFkTG9j
a0dMKENDUmVzb3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCk7
CisgICAgICAgIH5TY29wZWRSZWFkTG9ja0dMKCk7CisKKyAgICAgICAgdW5zaWduZWQgdGV4dHVy
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOworICAgICAgICB1bnNpZ25l
ZCBtX3RleHR1cmVJZDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkV3JpdGVMb2NrR0wgewor
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRXcml0ZUxvY2tHTCk7CisgICAgcHVi
bGljOgorICAgICAgICBTY29wZWRXcml0ZUxvY2tHTChDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAgICB+U2NvcGVkV3JpdGVMb2NrR0wo
KTsKKworICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVJZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jl
c291cmNlUHJvdmlkZXI7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBt
X3Jlc291cmNlSWQ7CisgICAgICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIH07CisKKyAg
ICBjbGFzcyBTY29wZWRSZWFkTG9ja1NvZnR3YXJlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk7CisgICAgcHVibGljOgorICAgICAgICBTY29w
ZWRSZWFkTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCk7CisgICAgICAgIH5TY29wZWRSZWFkTG9ja1NvZnR3YXJlKCk7CisKKyAg
ICAgICAgY29uc3QgU2tCaXRtYXAqIHNrQml0bWFwKCkgY29uc3QgeyByZXR1cm4gJm1fc2tCaXRt
YXA7IH0KIAorICAgIHByaXZhdGU6CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNv
dXJjZVByb3ZpZGVyOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9y
ZXNvdXJjZUlkOworICAgICAgICBTa0JpdG1hcCBtX3NrQml0bWFwOworICAgIH07CisKKyAgICBj
bGFzcyBTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3Bl
ZFdyaXRlTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCk7CisgICAgICAgIH5TY29wZWRXcml0ZUxvY2tTb2Z0d2FyZSgpOworCisg
ICAgICAgIFNrQ2FudmFzKiBza0NhbnZhcygpIHsgcmV0dXJuICZtX3NrQ2FudmFzOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRl
cjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsK
KyAgICAgICAgU2tCaXRtYXAgbV9za0JpdG1hcDsKKyAgICAgICAgU2tDYW52YXMgbV9za0NhbnZh
czsKKyAgICB9OworCitwcml2YXRlOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFJl
c291cmNlKCkKICAgICAgICAgICAgIDogZ2xJZCgwKQorICAgICAgICAgICAgLCBwaXhlbHMoMCkK
ICAgICAgICAgICAgICwgcG9vbCgwKQogICAgICAgICAgICAgLCBsb2NrRm9yUmVhZENvdW50KDAp
CiAgICAgICAgICAgICAsIGxvY2tlZEZvcldyaXRlKGZhbHNlKQpAQCAtMTYxLDkgKzIzMiwxMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLCBleHBvcnRlZChmYWxzZSkKICAgICAgICAgICAgICwg
c2l6ZSgpCiAgICAgICAgICAgICAsIGZvcm1hdCgwKQorICAgICAgICAgICAgLCB0eXBlKHN0YXRp
Y19jYXN0PFJlc291cmNlVHlwZT4oMCkpCiAgICAgICAgIHsgfQogICAgICAgICBSZXNvdXJjZSh1
bnNpZ25lZCB0ZXh0dXJlSWQsIGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51
bSBmb3JtYXQpCiAgICAgICAgICAgICA6IGdsSWQodGV4dHVyZUlkKQorICAgICAgICAgICAgLCBw
aXhlbHMoMCkKICAgICAgICAgICAgICwgcG9vbChwb29sKQogICAgICAgICAgICAgLCBsb2NrRm9y
UmVhZENvdW50KDApCiAgICAgICAgICAgICAsIGxvY2tlZEZvcldyaXRlKGZhbHNlKQpAQCAtMTcx
LDggKzI0NCwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBleHBvcnRlZChmYWxzZSkKICAg
ICAgICAgICAgICwgc2l6ZShzaXplKQogICAgICAgICAgICAgLCBmb3JtYXQoZm9ybWF0KQorICAg
ICAgICAgICAgLCB0eXBlKEdMVGV4dHVyZSkKKyAgICAgICAgeyB9CisgICAgICAgIFJlc291cmNl
KHVpbnQ4X3QqIHBpeGVscywgaW50IHBvb2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVt
IGZvcm1hdCkKKyAgICAgICAgICAgIDogZ2xJZCgwKQorICAgICAgICAgICAgLCBwaXhlbHMocGl4
ZWxzKQorICAgICAgICAgICAgLCBwb29sKHBvb2wpCisgICAgICAgICAgICAsIGxvY2tGb3JSZWFk
Q291bnQoMCkKKyAgICAgICAgICAgICwgbG9ja2VkRm9yV3JpdGUoZmFsc2UpCisgICAgICAgICAg
ICAsIGV4dGVybmFsKGZhbHNlKQorICAgICAgICAgICAgLCBleHBvcnRlZChmYWxzZSkKKyAgICAg
ICAgICAgICwgc2l6ZShzaXplKQorICAgICAgICAgICAgLCBmb3JtYXQoZm9ybWF0KQorICAgICAg
ICAgICAgLCB0eXBlKEJpdG1hcCkKICAgICAgICAgeyB9CiAgICAgICAgIHVuc2lnbmVkIGdsSWQ7
CisgICAgICAgIHVpbnQ4X3QqIHBpeGVsczsKICAgICAgICAgaW50IHBvb2w7CiAgICAgICAgIGlu
dCBsb2NrRm9yUmVhZENvdW50OwogICAgICAgICBib29sIGxvY2tlZEZvcldyaXRlOwpAQCAtMTgw
LDYgKzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZXhwb3J0ZWQ7CiAgICAgICAgIElu
dFNpemUgc2l6ZTsKICAgICAgICAgR0MzRGVudW0gZm9ybWF0OworICAgICAgICBSZXNvdXJjZVR5
cGUgdHlwZTsKICAgICB9OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZXNvdXJjZUlkLCBSZXNvdXJj
ZT4gUmVzb3VyY2VNYXA7CiAgICAgc3RydWN0IENoaWxkIHsKQEAgLTE5MiwxMyArMjgwLDExIEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NSZXNvdXJjZVByb3ZpZGVyKENDR3JhcGhpY3NDb250
ZXh0Kik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKLSAgICAvLyBHZXRzIGEgR0wgdGV4dHVy
ZSBpZCByZXByZXNlbnRpbmcgdGhlIHJlc291cmNlLCB0aGF0IGNhbiBiZSByZW5kZXJlZCBpbnRv
LgotICAgIHVuc2lnbmVkIGxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKLSAgICB2b2lkIHVubG9j
a0ZvcldyaXRlKFJlc291cmNlSWQpOwotCi0gICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVw
cmVzZW50aW5nIHRoZSByZXNvdXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgd2l0aC4KLSAgICB1
bnNpZ25lZCBsb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKKyAgICBjb25zdCBSZXNvdXJjZSogbG9j
a0ZvclJlYWQoUmVzb3VyY2VJZCk7CiAgICAgdm9pZCB1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQp
OworICAgIGNvbnN0IFJlc291cmNlKiBsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7CisgICAgdm9p
ZCB1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKKyAgICBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNr
Qml0bWFwV2l0aFJlc291cmNlKFNrQml0bWFwKiwgY29uc3QgUmVzb3VyY2UqKTsKIAogICAgIGJv
b2wgdHJhbnNmZXJSZXNvdXJjZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgUmVzb3Vy
Y2VJZCwgVHJhbnNmZXJhYmxlUmVzb3VyY2UqKTsKICAgICB2b2lkIHRyaW1NYWlsYm94RGVxdWUo
KTsKQEAgLTIxMSw2ICsyOTcsNyBAQCBwcml2YXRlOgogCiAgICAgRGVxdWU8TWFpbGJveD4gbV9t
YWlsYm94ZXM7CiAKKyAgICBSZXNvdXJjZVR5cGUgbV9kZWZhdWx0UmVzb3VyY2VUeXBlOwogICAg
IGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4dDsKICAgICBib29sIG1fdXNlVGV4dHVyZVVzYWdl
SGludDsKICAgICBib29sIG1fdXNlU2hhbGxvd0ZsdXNoOwpAQCAtMjE4LDQ3ICszMDUsNiBAQCBw
cml2YXRlOgogICAgIGludCBtX21heFRleHR1cmVTaXplOwogfTsKIAotY2xhc3MgQ0NTY29wZWRM
b2NrUmVzb3VyY2VGb3JSZWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvclJlYWQpOwotcHVibGljOgotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9y
UmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRl
cihyZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQot
ICAgICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JSZWFkKHJlc291
cmNlSWQpKSB7IH0KLQotICAgIH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQoKQotICAgIHsK
LSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVzb3VyY2VJZCk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlk
OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotY2xhc3MgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JXcml0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JXcml0ZSk7Ci1wdWJsaWM6Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0
ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihy
ZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQotICAg
ICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0ZShyZXNvdXJj
ZUlkKSkgeyB9Ci0KLSAgICB+Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSgpCi0gICAgewot
ICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRlKG1fcmVzb3VyY2VJZCk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlk
OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcAppbmRl
eCA5ZTg1OTljMGYzZjY3MWI2ODBkZTBmZmQyNDgwODAzMmZjZmU3ODFlLi5lNTVjM2M1ZDcyNGFh
M2E4NDU1MTcxNTJjNDE5NzllZjEzYWIxNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKQEAgLTI4NywyMyAr
Mjg3LDM2IEBAIHByaXZhdGU6CiAgICAgUGVuZGluZ1Byb2R1Y2VUZXh0dXJlTGlzdCBtX3BlbmRp
bmdQcm9kdWNlVGV4dHVyZXM7CiB9OwogCi1jbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VU
eXBlPiB7CiBwdWJsaWM6CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCgpCiAgICAgICAgIDog
bV9zaGFyZWREYXRhKENvbnRleHRTaGFyZWREYXRhOjpjcmVhdGUoKSkKICAgICAgICAgLCBtX2Nv
bnRleHQoRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoUmVzb3VyY2VQcm92
aWRlckNvbnRleHQ6OmNyZWF0ZShtX3NoYXJlZERhdGEuZ2V0KCkpKSkKICAgICAgICAgLCBtX3Jl
c291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
KSkKICAgICB7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+c2V0RGVmYXVsdFJlc291cmNl
VHlwZShHZXRQYXJhbSgpKTsKICAgICB9CiAKICAgICBSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCog
Y29udGV4dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNlUHJvdmlkZXJDb250ZXh0Kj4o
bV9jb250ZXh0LT5jb250ZXh0M0QoKSk7IH0KIAogICAgIHZvaWQgZ2V0UmVzb3VyY2VQaXhlbHMo
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkLCBjb25zdCBJbnRTaXplJiBzaXplLCBX
R0MzRGVudW0gZm9ybWF0LCB1aW50OF90KiBwaXhlbHMpCiAgICAgewotICAgICAgICBDQ1Njb3Bl
ZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkKTsK
LSAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrLnRleHR1cmVJZCgpKTsKLSAgICAgICAgY29udGV4
dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0
dXJlSWQoKSk7Ci0gICAgICAgIGNvbnRleHQoKS0+Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcGl4
ZWxzKTsKKyAgICAgICAgaWYgKEdldFBhcmFtKCkgPT0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpHTFRl
eHR1cmUpIHsKKyAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tH
TCBsb2NrR0wobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7CisgICAgICAgICAgICBBU1NF
UlRfTkUoMFUsIGxvY2tHTC50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICBjb250ZXh0KCktPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBsb2NrR0wudGV4dHVyZUlk
KCkpOworICAgICAgICAgICAgY29udGV4dCgpLT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0LCBwaXhl
bHMpOworICAgICAgICB9IGVsc2UgaWYgKEdldFBhcmFtKCkgPT0gQ0NSZXNvdXJjZVByb3ZpZGVy
OjpCaXRtYXApIHsKKyAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExv
Y2tTb2Z0d2FyZSBsb2NrU29mdHdhcmUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7Cisg
ICAgICAgICAgICBtZW1jcHkocGl4ZWxzLCBsb2NrU29mdHdhcmUuc2tCaXRtYXAoKS0+Z2V0UGl4
ZWxzKCksIGxvY2tTb2Z0d2FyZS5za0JpdG1hcCgpLT5nZXRTaXplKCkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBleHBlY3ROdW1SZXNvdXJjZXMoaW50IGNvdW50KQorICAgIHsKKyAg
ICAgICAgRVhQRUNUX0VRKGNvdW50LCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVzb3VyY2VQcm92aWRl
ci0+bnVtUmVzb3VyY2VzKCkpKTsKKyAgICAgICAgaWYgKEdldFBhcmFtKCkgPT0gQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpHTFRleHR1cmUpCisgICAgICAgICAgICBFWFBFQ1RfRVEoY291bnQsIGNvbnRl
eHQoKS0+dGV4dHVyZUNvdW50KCkpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtMzEzLDcgKzMy
Niw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291
cmNlUHJvdmlkZXI7CiB9OwogCi1URVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFzaWMp
CitURVNUX1AoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFzaWMpCiB7CiAgICAgSW50U2l6ZSBz
aXplKDEsIDEpOwogICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTsKQEAgLTMyMiw3ICszMzUsNyBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFz
aWMpCiAgICAgQVNTRVJUX0VRKDRVLCBwaXhlbFNpemUpOwogCiAgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIGlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShw
b29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsK
LSAgICBFWFBFQ1RfRVEoMSwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7CisgICAgZXhwZWN0
TnVtUmVzb3VyY2VzKDEpOwogCiAgICAgdWludDhfdCBkYXRhWzRdID0gezEsIDIsIDMsIDR9Owog
ICAgIEludFJlY3QgcmVjdChJbnRQb2ludCgpLCBzaXplKTsKQEAgLTMzMywxMCArMzQ2LDEwIEBA
IFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKICAgICBFWFBFQ1RfRVEoMCwg
bWVtY21wKGRhdGEsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CiAKICAgICBtX3Jlc291cmNlUHJvdmlk
ZXItPmRlbGV0ZVJlc291cmNlKGlkKTsKLSAgICBFWFBFQ1RfRVEoMCwgY29udGV4dCgpLT50ZXh0
dXJlQ291bnQoKSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDApOwogfQogCi1URVNUX0YoQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCitURVNUX1AoQ0NSZXNv
dXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCiB7CiAgICAgSW50U2l6ZSBz
aXplKDEsIDEpOwogICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTsKQEAgLTM0NSwxNiArMzU4LDE2IEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBE
ZWxldGVPd25lZFJlc291cmNlcykKICAgICBjb25zdCBpbnQgY291bnQgPSAzOwogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5j
cmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4
dHVyZVVzYWdlQW55KTsKLSAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50ZXh0dXJlQ291bnQo
KSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDMpOwogCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVy
LT5kZWxldGVPd25lZFJlc291cmNlcyhwb29sKzEpOwotICAgIEVYUEVDVF9FUSgzLCBjb250ZXh0
KCktPnRleHR1cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJjZXMoMyk7CiAKICAgICBt
X3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKHBvb2wpOwotICAgIEVYUEVD
VF9FUSgwLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJj
ZXMoMCk7CiB9CiAKLVRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQpCitURVNU
X1AoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQogewogICAgIEludFNpemUgc2l6ZSgy
LCAyKTsKICAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBA
IC00MDIsMTIgKzQxNSwyOCBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2Fk
KQogICAgICAgICBnZXRSZXNvdXJjZVBpeGVscyhpZCwgc2l6ZSwgZm9ybWF0LCByZXN1bHQpOwog
ICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCByZXN1bHQsIHBpeGVsU2l6ZSkp
OwogICAgIH0KKyAgICB7CisgICAgICAgIEludFJlY3Qgb2Zmc2V0SW1hZ2VSZWN0KEludFBvaW50
KDEwMCwgMTAwKSwgc2l6ZSk7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCgxMDAsIDEwMCwg
MSwgMSk7CisgICAgICAgIEludFNpemUgZGVzdE9mZnNldCgxLCAwKTsKKyAgICAgICAgbV9yZXNv
dXJjZVByb3ZpZGVyLT51cGxvYWQoaWQsIGltYWdlLCBvZmZzZXRJbWFnZVJlY3QsIHNvdXJjZVJl
Y3QsIGRlc3RPZmZzZXQpOworCisgICAgICAgIHVpbnQ4X3QgZXhwZWN0ZWRbMTZdID0gezAsIDEs
IDIsIDMsICAgMCwgMSwgMiwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwg
NSwgNiwgNywgICAwLCAxLCAyLCAzfTsKKyAgICAgICAgZ2V0UmVzb3VyY2VQaXhlbHMoaWQsIHNp
emUsIGZvcm1hdCwgcmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3Rl
ZCwgcmVzdWx0LCBwaXhlbFNpemUpKTsKKyAgICB9CisKIAogICAgIG1fcmVzb3VyY2VQcm92aWRl
ci0+ZGVsZXRlUmVzb3VyY2UoaWQpOwogfQogCi1URVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVz
dCwgVHJhbnNmZXJSZXNvdXJjZXMpCitURVNUX1AoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVHJh
bnNmZXJSZXNvdXJjZXMpCiB7CisgICAgLy8gUmVzb3VyY2UgdHJhbnNmZXIgaXMgb25seSBzdXBw
b3J0ZWQgd2l0aCBHTCB0ZXh0dXJlcyBmb3Igbm93LgorICAgIGlmIChHZXRQYXJhbSgpICE9IEND
UmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlKQorICAgICAgICByZXR1cm47CisKICAgICBPd25Q
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNoaWxkQ29udGV4dChGYWtlV2ViQ29tcG9zaXRvck91dHB1
dFN1cmZhY2U6OmNyZWF0ZShSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6Y3JlYXRlKG1fc2hhcmVk
RGF0YS5nZXQoKSkpKTsKICAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBjaGlsZFJlc291
cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2hpbGRDb250ZXh0LmdldCgp
KSk7CiAKQEAgLTQ4NiwxNCArNTE1LDE0IEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0
LCBUcmFuc2ZlclJlc291cmNlcykKIAogICAgIFJlc291cmNlUHJvdmlkZXJDb250ZXh0KiBjaGls
ZENvbnRleHQzRCA9IHN0YXRpY19jYXN0PFJlc291cmNlUHJvdmlkZXJDb250ZXh0Kj4oY2hpbGRD
b250ZXh0LT5jb250ZXh0M0QoKSk7CiAgICAgewotICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQgbG9jayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkMSk7CisgICAgICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBsb2NrKGNoaWxkUmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgaWQxKTsKICAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrLnRleHR1cmVJ
ZCgpKTsKICAgICAgICAgY2hpbGRDb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAgICAgY2hpbGRDb250ZXh0
M0QtPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9FUSgw
LCBtZW1jbXAoZGF0YTEsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CiAgICAgfQogICAgIHsKLSAgICAg
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2soY2hpbGRSZXNvdXJjZVByb3ZpZGVy
LmdldCgpLCBpZDIpOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2Nr
R0wgbG9jayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkMik7CiAgICAgICAgIEFTU0VS
VF9ORSgwVSwgbG9jay50ZXh0dXJlSWQoKSk7CiAgICAgICAgIGNoaWxkQ29udGV4dDNELT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0dXJlSWQoKSk7
CiAgICAgICAgIGNoaWxkQ29udGV4dDNELT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0LCByZXN1bHQp
OwpAQCAtNTE5LDQgKzU0OCw5IEBAIFRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBUcmFu
c2ZlclJlc291cmNlcykKICAgICBFWFBFQ1RfRVEoMHUsIG1fcmVzb3VyY2VQcm92aWRlci0+bWFp
bGJveENvdW50KCkpOwogfQogCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDQ1Jlc291cmNlUHJv
dmlkZXJUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlclRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhDQ1Jlc291cmNl
UHJvdmlkZXI6OkdMVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6Qml0bWFwKSk7CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159597</attachid>
            <date>2012-08-20 20:02:57 -0700</date>
            <delta_ts>2012-08-21 18:49:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120820200218.patch</filename>
            <type>text/plain</type>
            <size>40556</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxN2E5ZDAzYzZhN2I4
NTEyNDdjZGY1YTk3NzgzZWY1N2JjZmQzMC4uNDhiYzFlM2ZmZGJjZGJhMTUzOTg0ZmZhY2VjYTVi
MmQ0ZTczYWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTE1ICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFi
aWxpdHkgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAg
ICAgICBUaGV5IGFyZSBhbGxvY2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQg
YXMgU2tpYSBvYmplY3RzLgorCisgICAgICAgIFdlIHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIg
dG8gYmUgYWJsZSB0byBoYW5kbGUgZGlmZmVyZW50IHJlc291cmNlCisgICAgICAgIHR5cGVzIGF0
IHRoZSBzYW1lIHRpbWUuICBJbiBwcmFjdGljZSwgYSBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMK
KyAgICAgICAgZGVzaXJlZCBmb3IgbW9zdCB1c2VzIHdpdGhpbiBhIHNpbmdsZSBjb21wb3NpdG9y
IGluc3RhbmNlLCB3aGljaCBpcworICAgICAgICBzcGVjaWZpZWQgYnkgdGhlIGRlZmF1bHQgcmVz
b3VyY2UgdHlwZS4gIERlZmF1bHQgcmVzb3VyY2UgdHlwZXMgYXJlCisgICAgICAgIGV4cGVjdGVk
IHRvIGJlIG1vc3RseSAxLXRvLTEgd2l0aCBDQ1JlbmRlcmVyIHR5cGVzLgorCisgICAgICAgIE5l
dyB0ZXN0cyBhZGRlZCBieSBwYXJhbWV0cml6aW5nIGV4aXN0aW5nIENDUmVzb3VyY2VQcm92aWRl
ciB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZp
ZGVvUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdU
ZXh0dXJlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Omdl
dEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChEcmF3aW5n
RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3Vy
Y2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVHTFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Jlc291cmNlUHJvdmlkZXI6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OnVubG9ja0ZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6OlNjb3BlZFJlYWRMb2NrR0wpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjp+U2NvcGVkUmVh
ZExvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdy
aXRlTG9ja0dMOjpTY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp+U2NvcGVkV3JpdGVMb2NrR0wpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZTo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6On5TY29wZWRSZWFk
TG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkV3JpdGVMb2NrU29mdHdhcmU6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6On5T
Y29wZWRXcml0ZUxvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OkNDUmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6c2V0Q3JlYXRpb25Qb2xpY3kpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGlvblBvbGljeSk6Cisg
ICAgICAgIChDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoU2NvcGVkUmVhZExvY2tHTCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6
OnRleHR1cmVJZCk6CisgICAgICAgIChTY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp0ZXh0dXJlSWQpOgor
ICAgICAgICAoU2NvcGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6OnNrQml0bWFwKToKKyAgICAg
ICAgKFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6OnNrQ2FudmFzKToKKyAgICAgICAg
KFJlc291cmNlKToKKwogMjAxMi0wOC0yMCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBUZXh0dXJlIGxheWVyIHNob3VsZCBub3QgZ2Vu
ZXJhdGUgemVybyB0ZXh0dXJlSWQgcXVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
Zjk3YjM5YzFjYmYyZTk2ZGVjMDVhNDVhOGVkZGJlZTlhYTM4ZDQxOC4uMGI0MGUyYTI0OTBiM2Ex
YWFjYzIxNjVkZjE4YTNiMzU0MzdlMzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxMi0wOC0xNSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc29mdHdhcmUgYml0bWFwIHJlc291cmNl
cyB0byBDQ1Jlc291cmNlUHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIENDUmVzb3VyY2VQcm92aWRl
ciB0byB1c2Ugc29mdHdhcmUgYml0bWFwcy4KKyAgICAgICAgVGhleSBhcmUgYWxsb2NhdGVkIGFz
IHBsYWluLW9sZC1tZW1vcnksIGFuZCBleHBvc2VkIGFzIFNraWEgb2JqZWN0cy4KKworICAgICAg
ICBXZSB3YW50IHRoZSBSZXNvdXJjZVByb3ZpZGVyIHRvIGJlIGFibGUgdG8gaGFuZGxlIGRpZmZl
cmVudCByZXNvdXJjZQorICAgICAgICB0eXBlcyBhdCB0aGUgc2FtZSB0aW1lLiAgSW4gcHJhY3Rp
Y2UsIGEgZGVmYXVsdCByZXNvdXJjZSB0eXBlIGlzCisgICAgICAgIGRlc2lyZWQgZm9yIG1vc3Qg
dXNlcyB3aXRoaW4gYSBzaW5nbGUgY29tcG9zaXRvciBpbnN0YW5jZSwgd2hpY2ggaXMKKyAgICAg
ICAgc3BlY2lmaWVkIGJ5IHRoZSBkZWZhdWx0IHJlc291cmNlIHR5cGUuICBEZWZhdWx0IHJlc291
cmNlIHR5cGVzIGFyZQorICAgICAgICBleHBlY3RlZCB0byBiZSBtb3N0bHkgMS10by0xIHdpdGgg
Q0NSZW5kZXJlciB0eXBlcy4KKworICAgICAgICBOZXcgdGVzdHMgYWRkZWQgYnkgcGFyYW1ldHJp
emluZyBleGlzdGluZyBDQ1Jlc291cmNlUHJvdmlkZXIgdGVzdHMuCisKKyAgICAgICAgKiB0ZXN0
cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NSZXNvdXJj
ZVByb3ZpZGVyVGVzdDo6Z2V0UmVzb3VyY2VQaXhlbHMpOgorCiAyMDEyLTA4LTIwICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIE1ha2UgdGhl
IHBvcHVwIHBvc2l0aW9uaW5nIGNvZGUgdGVzdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCmluZGV4IGRhMmVjYzYxMDljNWQ0ZWNiNGI2ODg5MGIwODZmMTJhMDlhNjQ0ODcuLjEwMWFk
NGJiMTc5YjZkYjNjYjlhNjk2OTE5YzA2ZDhkOTcxZjIzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChXZWJHcmFwaGljCiAg
ICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICB0ZXh0dXJlLT5hY3F1aXJl
QmFja2luZ1RleHR1cmUocmVzb3VyY2VQcm92aWRlcik7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JXcml0ZSBsb2NrKHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPnJlc291cmNlSWQoKSk7
CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCBsb2NrKHJlc291cmNl
UHJvdmlkZXIsIHRleHR1cmUtPnJlc291cmNlSWQoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIGFjY2Vs
ZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgogICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0g
Y3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoZ3JDb250ZXh0LCB0ZXh0dXJlLT5zaXplKCksIGxvY2su
dGV4dHVyZUlkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRl
eCAzNmU0N2QxNzdkNGFmYjNiMDE3MzFjOTBkNGM4MGZjMzNkMDVkZGU0Li44NGYwMGExYzdiOWM0
NDMwYmQzMTVhYzEzNjY5MWMyMTAyY2VlYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgaW5saW5lIFNrQml0bWFwIGFw
cGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0CiAK
ICAgICBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmZsdXNoKCk7CiAKLSAgICBDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvcldyaXRlIGxvY2sobGF5ZXJSZW5kZXJlci0+cmVzb3VyY2VQcm92aWRlcigp
LCBzb3VyY2VUZXh0dXJlLT5pZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdy
aXRlTG9ja0dMIGxvY2sobGF5ZXJSZW5kZXJlci0+cmVzb3VyY2VQcm92aWRlcigpLCBzb3VyY2VU
ZXh0dXJlLT5pZCgpKTsKICAgICBTa0JpdG1hcCBzb3VyY2UgPSBDQ1JlbmRlclN1cmZhY2VGaWx0
ZXJzOjphcHBseShmaWx0ZXJzLCBsb2NrLnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJlLT5zaXpl
KCksIGZpbHRlckNvbnRleHQsIGZpbHRlckdyQ29udGV4dCk7CiAgICAgcmV0dXJuIHNvdXJjZTsK
IH0KQEAgLTQ2NSwyMCArNDY1LDIwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyUGFzc1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kCiAgICAgLy8g
RklYTUU6IENhY2hlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvIGl0IGZv
ciBib3RoIHRoZSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYS4KICAgICAvLyBBcHBseSBmaWx0ZXJz
IHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgogICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9IGFw
cGx5RmlsdGVycyh0aGlzLCByZW5kZXJQYXNzLT5maWx0ZXJzKCksIGNvbnRlbnRzVGV4dHVyZSk7
Ci0gICAgT3duUHRyPENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZD4gY29udGVudHNSZXNvdXJj
ZUxvY2s7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTD4g
Y29udGVudHNSZXNvdXJjZUxvY2s7CiAgICAgdW5zaWduZWQgY29udGVudHNUZXh0dXJlSWQgPSAw
OwogICAgIGlmIChmaWx0ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKSB7CiAgICAgICAgIEdyVGV4dHVy
ZSogdGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4oZmlsdGVyQml0bWFwLmdl
dFRleHR1cmUoKSk7CiAgICAgICAgIGNvbnRlbnRzVGV4dHVyZUlkID0gdGV4dHVyZS0+Z2V0VGV4
dHVyZUhhbmRsZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRlbnRzUmVzb3VyY2VMb2Nr
ID0gYWRvcHRQdHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZChtX3Jlc291cmNlUHJv
dmlkZXIsIGNvbnRlbnRzVGV4dHVyZS0+aWQoKSkpOworICAgICAgICBjb250ZW50c1Jlc291cmNl
TG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wo
bV9yZXNvdXJjZVByb3ZpZGVyLCBjb250ZW50c1RleHR1cmUtPmlkKCkpKTsKICAgICAgICAgY29u
dGVudHNUZXh0dXJlSWQgPSBjb250ZW50c1Jlc291cmNlTG9jay0+dGV4dHVyZUlkKCk7CiAgICAg
fQogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlIGlmIHRoZXJlIGlzIG9uZS4K
ICAgICBpZiAoYmFja2dyb3VuZFRleHR1cmUpIHsKICAgICAgICAgQVNTRVJUKGJhY2tncm91bmRU
ZXh0dXJlLT5zaXplKCkgPT0gcXVhZC0+cXVhZFJlY3QoKS5zaXplKCkpOwotICAgICAgICBDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIGJhY2tncm91
bmRUZXh0dXJlLT5pZCgpKTsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFk
TG9ja0dMIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVyZS0+aWQoKSk7
CiAgICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihmcmFtZSwgbG9jay50ZXh0dXJlSWQo
KSwgcXVhZC0+cXVhZFJlY3QoKSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpKTsKICAgICB9CiAKQEAg
LTQ5NSwxMCArNDk1LDEwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVy
UGFzc1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kCiAgICAgICAgIGRldmlj
ZUxheWVyRWRnZXMuaW5mbGF0ZUFudGlBbGlhc2luZ0Rpc3RhbmNlKCk7CiAgICAgfQogCi0gICAg
T3duUHRyPENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZD4gbWFza1Jlc291cmNlTG9jazsKKyAg
ICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMPiBtYXNrUmVzb3Vy
Y2VMb2NrOwogICAgIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQgPSAwOwogICAgIGlmIChxdWFkLT5t
YXNrUmVzb3VyY2VJZCgpKSB7Ci0gICAgICAgIG1hc2tSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihu
ZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+
bWFza1Jlc291cmNlSWQoKSkpOworICAgICAgICBtYXNrUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIo
bmV3IENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTChtX3Jlc291cmNlUHJvdmlk
ZXIsIHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkpKTsKICAgICAgICAgbWFza1RleHR1cmVJZCA9IG1h
c2tSZXNvdXJjZUxvY2stPnRleHR1cmVJZCgpOwogICAgIH0KIApAQCAtNjg5LDcgKzY4OSw3IEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgRHJhd2luZ0Zy
YW1lJiBmcmFtZSwgY29uc3QgQ0NUaWxlCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51
c2VQcm9ncmFtKHVuaWZvcm1zLnByb2dyYW0pKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPnVuaWZvcm0xaSh1bmlmb3Jtcy5zYW1wbGVyTG9jYXRpb24sIDApKTsKICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkUwKSk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHF1YWRSZXNvdXJjZUxvY2so
bV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOworICAgIENDUmVzb3VyY2VQ
cm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92
aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFkUmVzb3VyY2VM
b2NrLnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIHF1YWQtPnRleHR1
cmVGaWx0ZXIoKSkpOwpAQCAtNzk2LDkgKzc5Niw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IEND
CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lID0gcXVhZC0+
dVBsYW5lKCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5l
ID0gcXVhZC0+dlBsYW5lKCk7CiAKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgeVBs
YW5lTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHlQbGFuZS5yZXNvdXJjZUlkKTsKLSAgICBDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvclJlYWQgdVBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHVQ
bGFuZS5yZXNvdXJjZUlkKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgdlBsYW5l
TG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHZQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgeVBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlk
ZXIsIHlQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJl
YWRMb2NrR0wgdVBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHVQbGFuZS5yZXNvdXJjZUlk
KTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgdlBsYW5lTG9jayht
X3Jlc291cmNlUHJvdmlkZXIsIHZQbGFuZS5yZXNvdXJjZUlkKTsKICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgeVBsYW5lTG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhjb250
ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RTIpKTsKQEAgLTkwNyw3ICs5MDcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1RleHR1cmVRdWFkKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDVAogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKGJpbmRpbmcudGV4VHJhbnNmb3JtTG9j
YXRpb24sIHV2UmVjdC54KCksIHV2UmVjdC55KCksIHV2UmVjdC53aWR0aCgpLCB1dlJlY3QuaGVp
Z2h0KCkpKTsKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZv
clJlYWQgcXVhZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNl
SWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIHF1YWRSZXNv
dXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOwogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHF1YWRSZXNvdXJjZUxvY2sudGV4dHVyZUlkKCkpKTsKIAogICAgIC8vIEZJWE1F
OiBzZXR0aW5nIHRoZSB0ZXh0dXJlIHBhcmFtZXRlcnMgZXZlcnkgdGltZSBpcyByZWR1bmRhbnQu
IE1vdmUgdGhpcyBjb2RlIHNvbWV3aGVyZQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShDQ1Njb3BlZFRleHR1cmUq
IHRleHR1cmUsIGNvbnMKICAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9j
YXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIGxvY2so
bV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlNjb3BlZFdyaXRlTG9ja0dMIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5p
ZCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgdGV4dHVyZS0+Zm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJl
Y3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgMCkpOwpAQCAtMTIyNiw3ICsxMjI2LDcg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShE
cmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdAogICAgIEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKIAog
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0gICAgbV9j
dXJyZW50RnJhbWVidWZmZXJMb2NrID0gYWRvcHRQdHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yV3JpdGUobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKSk7CisgICAgbV9jdXJy
ZW50RnJhbWVidWZmZXJMb2NrID0gYWRvcHRQdHIobmV3IENDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkV3JpdGVMb2NrR0wobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKSk7CiAgICAg
dW5zaWduZWQgdGV4dHVyZUlkID0gbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrLT50ZXh0dXJlSWQo
KTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkLCAwKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggMDljZDBlMjkxMTE5YmU3
NDE5NDIyOGY5MDM3ZDlhZWRlM2YxZGFiNS4uMzU3NWMxOTNkNzcwMjQ1ZmM4ZWE0ZjAzODM5M2Jl
ODE2YjliODdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTI0OCw3
ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIFRleHR1cmVVcGxv
YWRlck9wdGlvbiBtX3RleHR1cmVVcGxvYWRlclNldHRpbmc7CiAKLSAgICBPd25QdHI8Q0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JXcml0ZT4gbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrOworICAgIE93
blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMPiBtX2N1cnJlbnRGcmFt
ZWJ1ZmZlckxvY2s7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3Bw
CmluZGV4IDhhNWQ2YWY5ZGY5MGI2Y2YyYjZjOTQ4NmNlMDllYTE1ZDdkNGMwZDkuLjIzNDQyYWJl
NDUxMTAxNmUwYWVmYzM0YjdiMDM3YTEzNGViODg0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNv
dXJjZVByb3ZpZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNy
bwogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCisjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIApAQCAtODgsMTMgKzg5LDI0IEBAIGJvb2wgQ0NSZXNvdXJjZVByb3ZpZGVy
OjppblVzZUJ5Q29uc3VtZXIoUmVzb3VyY2VJZCBpZCkKIAogQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UoaW50IHBvb2wsIGNv
bnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCBoaW50
KQogeworICAgIHN3aXRjaCAobV9kZWZhdWx0UmVzb3VyY2VUeXBlKSB7CisgICAgY2FzZSBHTFRl
eHR1cmU6CisgICAgICAgIHJldHVybiBjcmVhdGVHTFRleHR1cmUocG9vbCwgc2l6ZSwgZm9ybWF0
LCBoaW50KTsKKyAgICBjYXNlIEJpdG1hcDoKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIHJldHVybiBjcmVhdGVCaXRtYXAocG9vbCwg
c2l6ZSk7CisgICAgfQorCisgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gMDsKK30KKworQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlR0xUZXh0
dXJlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1
cmVVc2FnZUhpbnQgaGludCkKK3sKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IDA7CiAgICAgV2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2Qp
IHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNv
bXBvc2l0aW5nLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKGNvbnRleHQz
ZCk7CiAgICAgR0xDKGNvbnRleHQzZCwgdGV4dHVyZUlkID0gY29udGV4dDNkLT5jcmVhdGVUZXh0
dXJlKCkpOwogICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOwogICAgIEdMQyhjb250ZXh0M2Qs
IGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUikpOwpAQCAtMTE1LDEyICsxMjcsMjMgQEAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UoaW50IHBvb2wsIGNvbnMK
ICAgICByZXR1cm4gaWQ7CiB9CiAKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZUJpdG1hcChpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworCisgICAgdWludDhf
dCogcGl4ZWxzID0gbmV3IHVpbnQ4X3Rbc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDRd
OworCisgICAgUmVzb3VyY2VJZCBpZCA9IG1fbmV4dElkKys7CisgICAgUmVzb3VyY2UgcmVzb3Vy
Y2UocGl4ZWxzLCBwb29sLCBzaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgbV9y
ZXNvdXJjZXMuYWRkKGlkLCByZXNvdXJjZSk7CisgICAgcmV0dXJuIGlkOworfQorCiBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJj
ZUZyb21FeHRlcm5hbFRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkKQogewogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VJZCBpZCA9IG1fbmV4dElkKys7
Ci0gICAgUmVzb3VyY2UgcmVzb3VyY2U7Ci0gICAgcmVzb3VyY2UuZ2xJZCA9IHRleHR1cmVJZDsK
KyAgICBSZXNvdXJjZSByZXNvdXJjZSh0ZXh0dXJlSWQsIDAsIEludFNpemUoKSwgMCk7CiAgICAg
cmVzb3VyY2UuZXh0ZXJuYWwgPSB0cnVlOwogICAgIG1fcmVzb3VyY2VzLmFkZChpZCwgcmVzb3Vy
Y2UpOwogICAgIHJldHVybiBpZDsKQEAgLTEyOSwxNSArMTUyLDE3IEBAIENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlRnJvbUV4
dGVybmFsVGV4CiB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2UoUmVzb3Vy
Y2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwot
ICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBw
YXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBB
U1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3Jp
dGUgJiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7Ci0gICAgaWYgKCFpdC0+c2Vjb25k
LmV4dGVybmFsKQorCisgICAgaWYgKGl0LT5zZWNvbmQuZ2xJZCAmJiAhaXQtPnNlY29uZC5leHRl
cm5hbCkgeworICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250
ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQzZCk7CiAgICAgICAgIEdM
Qyhjb250ZXh0M2QsIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVyZShpdC0+c2Vjb25kLmdsSWQpKTsK
KyAgICB9CisgICAgaWYgKGl0LT5zZWNvbmQucGl4ZWxzKQorICAgICAgICBkZWxldGUgaXQtPnNl
Y29uZC5waXhlbHM7CisKICAgICBtX3Jlc291cmNlcy5yZW1vdmUoaXQpOwogfQogCkBAIC0xNTMs
NzEgKzE3OCw2OCBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlT3duZWRSZXNvdXJj
ZXMoaW50IHBvb2wpCiAgICAgICAgIGRlbGV0ZVJlc291cmNlKCppdCk7CiB9CiAKLXZvaWQgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29uc3QgdWludDhfdCogaW1h
Z2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50U2l6ZSYgZGVzdE9mZnNldCkKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VU
eXBlIENDUmVzb3VyY2VQcm92aWRlcjo6cmVzb3VyY2VUeXBlKFJlc291cmNlSWQgaWQpCiB7Ci0g
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQobV90ZXhTdWJJ
bWFnZS5nZXQoKSk7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29u
dGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAg
ICByZXR1cm47Ci0gICAgfQogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3Vy
Y2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQt
PnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYm
ICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLQotICAgIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGl0LT5zZWNvbmQuZ2xJZCk7Ci0gICAgbV90ZXhT
dWJJbWFnZS0+dXBsb2FkKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RPZmZzZXQs
IGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291
cmNlcy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQudHlwZTsKIH0KIAotdW5zaWduZWQg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3ZvaWQgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29uc3QgdWludDhfdCogaW1h
Z2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50U2l6ZSYgZGVzdE9mZnNldCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZp
bmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29u
ZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYmICFpdC0+
c2Vjb25kLmV4dGVybmFsKTsKLSAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gdHJ1ZTsK
LSAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOwotfQogCi12b2lkIENDUmVzb3VyY2VQcm92aWRl
cjo6dW5sb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKLXsKLSAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwotICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3Vy
Y2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+
c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLSAgICBpdC0+
c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gZmFsc2U7CisgICAgaWYgKGl0LT5zZWNvbmQuZ2xJZCkg
eworICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5j
b250ZXh0M0QoKTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQzZCk7CisgICAgICAgIEFTU0VSVCht
X3RleFN1YkltYWdlLmdldCgpKTsKKyAgICAgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5nbElkKTsKKyAgICAgICAgbV90
ZXhTdWJJbWFnZS0+dXBsb2FkKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RPZmZz
ZXQsIGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOworICAgIH0KKworICAgIGlmIChpdC0+
c2Vjb25kLnBpeGVscykgeworICAgICAgICBTa0JpdG1hcCBzcmNGdWxsOworICAgICAgICBzcmNG
dWxsLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIGltYWdlUmVjdC53aWR0
aCgpLCBpbWFnZVJlY3QuaGVpZ2h0KCkpOworICAgICAgICBzcmNGdWxsLnNldFBpeGVscyhjb25z
dF9jYXN0PHVpbnQ4X3QqPihpbWFnZSkpOworICAgICAgICBTa0JpdG1hcCBzcmNTdWJzZXQ7Cisg
ICAgICAgIFNrSVJlY3Qgc2tTb3VyY2VSZWN0ID0gU2tJUmVjdDo6TWFrZVhZV0goc291cmNlUmVj
dC54KCksIHNvdXJjZVJlY3QueSgpLCBzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVp
Z2h0KCkpOworICAgICAgICBza1NvdXJjZVJlY3Qub2Zmc2V0KC1pbWFnZVJlY3QueCgpLCAtaW1h
Z2VSZWN0LnkoKSk7CisgICAgICAgIHNyY0Z1bGwuZXh0cmFjdFN1YnNldCgmc3JjU3Vic2V0LCBz
a1NvdXJjZVJlY3QpOworCisgICAgICAgIFNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlIGxvY2sodGhp
cywgaWQpOworICAgICAgICBTa0NhbnZhcyogZGVzdCA9IGxvY2suc2tDYW52YXMoKTsKKyAgICAg
ICAgZGVzdC0+d3JpdGVQaXhlbHMoc3JjU3Vic2V0LCBkZXN0T2Zmc2V0LndpZHRoKCksIGRlc3RP
ZmZzZXQuaGVpZ2h0KCkpOworICAgIH0KIH0KIAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmZs
dXNoKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAg
IGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRo
IGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
b250ZXh0M2QtPmZsdXNoKCk7CisgICAgaWYgKGNvbnRleHQzZCkKKyAgICAgICAgY29udGV4dDNk
LT5mbHVzaCgpOwogfQogCiBib29sIENDUmVzb3VyY2VQcm92aWRlcjo6c2hhbGxvd0ZsdXNoSWZT
dXBwb3J0ZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAg
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7
Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgIGlmICghY29udGV4dDNkIHx8ICFt
X3VzZVNoYWxsb3dGbHVzaCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAotICAgIGlm
IChtX3VzZVNoYWxsb3dGbHVzaCkKLSAgICAgICAgY29udGV4dDNkLT5zaGFsbG93Rmx1c2hDSFJP
TUlVTSgpOwotICAgIHJldHVybiBtX3VzZVNoYWxsb3dGbHVzaDsKKyAgICBjb250ZXh0M2QtPnNo
YWxsb3dGbHVzaENIUk9NSVVNKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXVuc2lnbmVkIEND
UmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKK2NvbnN0IENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQo
UmVzb3VyY2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwog
ICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAg
IEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JX
cml0ZSk7Ci0gICAgKysoaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKLSAgICByZXR1cm4g
aXQtPnNlY29uZC5nbElkOworICAgIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCsrOworICAg
IHJldHVybiAmaXQtPnNlY29uZDsKIH0KIAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9j
a0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKQEAgLTIyNSwxNyArMjQ3LDk0IEBAIHZvaWQgQ0NSZXNv
dXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQgaWQpCiAgICAgQVNTRVJUKEND
UHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkg
JiYgaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ID4gMCk7Ci0gICAgLS0oaXQtPnNlY29uZC5s
b2NrRm9yUmVhZENvdW50KTsKKyAgICBpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQtLTsKK30K
KworY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZSogQ0NSZXNvdXJjZVByb3ZpZGVy
Ojpsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2Vz
LmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNl
Y29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ICYmICFp
dC0+c2Vjb25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gdHJ1
ZTsKKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVy
Ojp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5z
ZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAgIGl0LT5z
ZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpT
Y29wZWRSZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQp
CisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVz
b3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+
bG9ja0ZvclJlYWQocmVzb3VyY2VJZCktPmdsSWQpCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZUlk
KTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjp+U2NvcGVkUmVh
ZExvY2tHTCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVz
b3VyY2VJZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6OlNj
b3BlZFdyaXRlTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291cmNl
UHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlk
KQorICAgICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvcldyaXRlKHJlc291
cmNlSWQpLT5nbElkKQoreworICAgIEFTU0VSVChtX3RleHR1cmVJZCk7Cit9CisKK0NDUmVzb3Vy
Y2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6On5TY29wZWRXcml0ZUxvY2tHTCgpCit7Cisg
ICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JXcml0ZShtX3Jlc291cmNlSWQpOworfQor
Cit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJjZShT
a0JpdG1hcCogc2tCaXRtYXAsIGNvbnN0IFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NF
UlQocmVzb3VyY2UtPnBpeGVscyk7CisgICAgQVNTRVJUKHJlc291cmNlLT5mb3JtYXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHNrQml0bWFwLT5zZXRDb25maWcoU2tCaXRtYXA6
OmtBUkdCXzg4ODhfQ29uZmlnLCByZXNvdXJjZS0+c2l6ZS53aWR0aCgpLCByZXNvdXJjZS0+c2l6
ZS5oZWlnaHQoKSk7CisgICAgc2tCaXRtYXAtPnNldFBpeGVscyhyZXNvdXJjZS0+cGl4ZWxzKTsK
K30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlOjpTY29wZWRS
ZWFkTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291cmNl
UHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlk
KQoreworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJj
ZSgmbV9za0JpdG1hcCwgcmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCkp
OworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6On5TY29w
ZWRSZWFkTG9ja1NvZnR3YXJlKCkKK3sKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0Zv
clJlYWQobV9yZXNvdXJjZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0
ZUxvY2tTb2Z0d2FyZTo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoQ0NSZXNvdXJjZVByb3ZpZGVy
KiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3Vy
Y2VJZCkKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwg
bV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCit7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpwb3B1
bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKCZtX3NrQml0bWFwLCByZXNvdXJjZVByb3ZpZGVyLT5s
b2NrRm9yV3JpdGUocmVzb3VyY2VJZCkpOworICAgIG1fc2tDYW52YXMuc2V0Qml0bWFwRGV2aWNl
KG1fc2tCaXRtYXApOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja1Nv
ZnR3YXJlOjp+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKQoreworICAgIG1fcmVzb3VyY2VQcm92
aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKIH0KIAogQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbmV4dElkKDEpCiAgICAgLCBtX25leHRDaGls
ZCgxKQorICAgICwgbV9kZWZhdWx0UmVzb3VyY2VUeXBlKEdMVGV4dHVyZSkKICAgICAsIG1fdXNl
VGV4dHVyZVN0b3JhZ2VFeHQoZmFsc2UpCiAgICAgLCBtX3VzZVRleHR1cmVVc2FnZUhpbnQoZmFs
c2UpCiAgICAgLCBtX3VzZVNoYWxsb3dGbHVzaChmYWxzZSkKLSAgICAsIG1fbWF4VGV4dHVyZVNp
emUoMCkKKyAgICAsIG1fbWF4VGV4dHVyZVNpemUoSU5UX01BWCkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Jlc291cmNlUHJvdmlkZXIuaAppbmRleCBlOTI3ZDI5MmZjZGM4M2VhMDFmN2UyODFkNWNm
Y2Y1Y2MyOGJlNmM5Li5lYmFkNGI5ODY0ZmZiNzEyYzU2YjEyZDg5OTU3ZDk0YWE1ZDA1NmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Jlc291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaApAQCAtMzAsNiArMzAsOCBAQAogI2lu
Y2x1ZGUgIkNDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU2tCaXRtYXAuaCIKKyNpbmNsdWRl
ICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDQsOCArNDYsNiBAQCBjbGFzcyBX
ZWJHcmFwaGljc0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvclJlYWQ7Ci1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldy
aXRlOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIExheWVyVGV4dHVyZVN1YkltYWdlOwogCkBAIC01
OCw2ICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVzb3VyY2VJZD4gUmVz
b3VyY2VJZEFycmF5OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZXNvdXJjZUlkLCBSZXNvdXJjZUlk
PiBSZXNvdXJjZUlkTWFwOwogICAgIGVudW0gVGV4dHVyZVVzYWdlSGludCB7IFRleHR1cmVVc2Fn
ZUFueSwgVGV4dHVyZVVzYWdlRnJhbWVidWZmZXIgfTsKKyAgICBlbnVtIFJlc291cmNlVHlwZSB7
CisgICAgICAgIEdMVGV4dHVyZSA9IDEsCisgICAgICAgIEJpdG1hcCwKKyAgICB9OwogICAgIHN0
cnVjdCBNYWlsYm94IHsKICAgICAgICAgR0MzRGJ5dGUgbmFtZVs2NF07CiAgICAgfTsKQEAgLTg3
LDExICs5MSwxOSBAQCBwdWJsaWM6CiAKICAgICAvLyBQcm9kdWNlciBpbnRlcmZhY2UuCiAKLSAg
ICAvLyBDcmVhdGVzIGEgcmVzb3VyY2Ugb2YgdGhlIGdpdmVuIHNpemUvZm9ybWF0LCBpbnRvIHRo
ZSBnaXZlbiBwb29sLgorICAgIHZvaWQgc2V0RGVmYXVsdFJlc291cmNlVHlwZShSZXNvdXJjZVR5
cGUgdHlwZSkgeyBtX2RlZmF1bHRSZXNvdXJjZVR5cGUgPSB0eXBlOyB9CisgICAgUmVzb3VyY2VU
eXBlIGRlZmF1bHRSZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRSZXNvdXJj
ZVR5cGU7IH0KKyAgICBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKFJlc291cmNlSWQpOworCisg
ICAgLy8gQ3JlYXRlcyBhIHJlc291cmNlIG9mIHRoZSBkZWZhdWx0IHJlc291cmNlIHR5cGUuCiAg
ICAgUmVzb3VyY2VJZCBjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYsIEdD
M0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCk7CiAKLSAgICAvLyBXcmFwcyBhbiBleHRl
cm5hbCB0ZXh0dXJlIGludG8gYSByZXNvdXJjZS4KKyAgICAvLyBZb3UgY2FuIGFsc28gZXhwbGlj
aXRseSBjcmVhdGUgYSBzcGVjaWZpYyByZXNvdXJjZSB0eXBlLgorICAgIFJlc291cmNlSWQgY3Jl
YXRlR0xUZXh0dXJlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBU
ZXh0dXJlVXNhZ2VIaW50KTsKKyAgICBSZXNvdXJjZUlkIGNyZWF0ZUJpdG1hcChpbnQgcG9vbCwg
Y29uc3QgSW50U2l6ZSYpOworICAgIC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUgaW50byBh
IEdMIHJlc291cmNlLgogICAgIFJlc291cmNlSWQgY3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxU
ZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCk7CisKICAgICB2b2lkIGRlbGV0ZVJlc291cmNlKFJl
c291cmNlSWQpOwogCiAgICAgLy8gRGVsZXRlcyBhbGwgcmVzb3VyY2VzIG93bmVkIGJ5IGEgZ2l2
ZW4gcG9vbC4KQEAgLTE0NywxMyArMTU5LDcyIEBAIHB1YmxpYzoKICAgICAvLyBPbmx5IGZvciB0
ZXN0aW5nCiAgICAgc2l6ZV90IG1haWxib3hDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbGJv
eGVzLnNpemUoKTsgfQogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBDQ1Njb3BlZExvY2tS
ZXNvdXJjZUZvclJlYWQ7Ci0gICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9y
V3JpdGU7CisgICAgLy8gVGhlIGZvbGxvd2luZyBsb2NrIGNsYXNzZXMgYXJlIHBhcnQgb2YgdGhl
IENDUmVzb3VyY2VQcm92aWRlciBBUEkgYW5kIGFyZQorICAgIC8vIG5lZWRlZCB0byByZWFkIGFu
ZCB3cml0ZSB0aGUgcmVzb3VyY2UgY29udGVudHMuIFRoZSB1c2VyIG11c3QgZW5zdXJlCisgICAg
Ly8gdGhhdCB0aGV5IG9ubHkgdXNlIEdMIGxvY2tzIG9uIEdMIHJlc291cmNlcywgZXRjLCBhbmQg
dGhpcyBpcyBlbmZvcmNlZAorICAgIC8vIGJ5IGFzc2VydGlvbnMuCisgICAgY2xhc3MgU2NvcGVk
UmVhZExvY2tHTCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlYWRMb2Nr
R0wpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVhZExvY2tHTChDQ1Jlc291cmNlUHJv
dmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOworICAgICAgICB+U2NvcGVk
UmVhZExvY2tHTCgpOworCisgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZUlkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Jlc291cmNlUHJv
dmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Cisg
ICAgfTsKKworICAgIGNsYXNzIFNjb3BlZFdyaXRlTG9ja0dMIHsKKyAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2NvcGVkV3JpdGVMb2NrR0wpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2Nv
cGVkV3JpdGVMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkKTsKKyAgICAgICAgflNjb3BlZFdyaXRlTG9ja0dMKCk7CisKKyAgICAgICAgdW5z
aWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwor
ICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOworICAg
ICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlYWRM
b2NrU29mdHdhcmUpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUmVhZExvY2tTb2Z0d2Fy
ZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOwor
ICAgICAgICB+U2NvcGVkUmVhZExvY2tTb2Z0d2FyZSgpOworCisgICAgICAgIGNvbnN0IFNrQml0
bWFwKiBza0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuICZtX3NrQml0bWFwOyB9CiAKKyAgICBwcml2
YXRlOgorICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAg
ICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAg
ICAgU2tCaXRtYXAgbV9za0JpdG1hcDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkV3JpdGVM
b2NrU29mdHdhcmUgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRXcml0ZUxv
Y2tTb2Z0d2FyZSk7CisgICAgcHVibGljOgorICAgICAgICBTY29wZWRXcml0ZUxvY2tTb2Z0d2Fy
ZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOwor
ICAgICAgICB+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKTsKKworICAgICAgICBTa0NhbnZhcyog
c2tDYW52YXMoKSB7IHJldHVybiAmbV9za0NhbnZhczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgICAgIFNrQml0bWFw
IG1fc2tCaXRtYXA7CisgICAgICAgIFNrQ2FudmFzIG1fc2tDYW52YXM7CisgICAgfTsKKworcHJp
dmF0ZToKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBSZXNvdXJjZSgpCiAgICAgICAg
ICAgICA6IGdsSWQoMCkKKyAgICAgICAgICAgICwgcGl4ZWxzKDApCiAgICAgICAgICAgICAsIHBv
b2woMCkKICAgICAgICAgICAgICwgbG9ja0ZvclJlYWRDb3VudCgwKQogICAgICAgICAgICAgLCBs
b2NrZWRGb3JXcml0ZShmYWxzZSkKQEAgLTE2MSw5ICsyMzIsMjMgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICwgZXhwb3J0ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHNpemUoKQogICAgICAgICAg
ICAgLCBmb3JtYXQoMCkKKyAgICAgICAgICAgICwgdHlwZShzdGF0aWNfY2FzdDxSZXNvdXJjZVR5
cGU+KDApKQogICAgICAgICB7IH0KICAgICAgICAgUmVzb3VyY2UodW5zaWduZWQgdGV4dHVyZUlk
LCBpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQogICAgICAg
ICAgICAgOiBnbElkKHRleHR1cmVJZCkKKyAgICAgICAgICAgICwgcGl4ZWxzKDApCisgICAgICAg
ICAgICAsIHBvb2wocG9vbCkKKyAgICAgICAgICAgICwgbG9ja0ZvclJlYWRDb3VudCgwKQorICAg
ICAgICAgICAgLCBsb2NrZWRGb3JXcml0ZShmYWxzZSkKKyAgICAgICAgICAgICwgZXh0ZXJuYWwo
ZmFsc2UpCisgICAgICAgICAgICAsIGV4cG9ydGVkKGZhbHNlKQorICAgICAgICAgICAgLCBzaXpl
KHNpemUpCisgICAgICAgICAgICAsIGZvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAsIHR5cGUo
R0xUZXh0dXJlKQorICAgICAgICB7IH0KKyAgICAgICAgUmVzb3VyY2UodWludDhfdCogcGl4ZWxz
LCBpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQorICAgICAg
ICAgICAgOiBnbElkKDApCisgICAgICAgICAgICAsIHBpeGVscyhwaXhlbHMpCiAgICAgICAgICAg
ICAsIHBvb2wocG9vbCkKICAgICAgICAgICAgICwgbG9ja0ZvclJlYWRDb3VudCgwKQogICAgICAg
ICAgICAgLCBsb2NrZWRGb3JXcml0ZShmYWxzZSkKQEAgLTE3MSw4ICsyNTYsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICwgZXhwb3J0ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHNpemUoc2l6
ZSkKICAgICAgICAgICAgICwgZm9ybWF0KGZvcm1hdCkKKyAgICAgICAgICAgICwgdHlwZShCaXRt
YXApCiAgICAgICAgIHsgfQogICAgICAgICB1bnNpZ25lZCBnbElkOworICAgICAgICB1aW50OF90
KiBwaXhlbHM7CiAgICAgICAgIGludCBwb29sOwogICAgICAgICBpbnQgbG9ja0ZvclJlYWRDb3Vu
dDsKICAgICAgICAgYm9vbCBsb2NrZWRGb3JXcml0ZTsKQEAgLTE4MCw2ICsyNjcsNyBAQCBwcml2
YXRlOgogICAgICAgICBib29sIGV4cG9ydGVkOwogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAg
ICAgIEdDM0RlbnVtIGZvcm1hdDsKKyAgICAgICAgUmVzb3VyY2VUeXBlIHR5cGU7CiAgICAgfTsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVzb3VyY2VJZCwgUmVzb3VyY2U+IFJlc291cmNlTWFwOwog
ICAgIHN0cnVjdCBDaGlsZCB7CkBAIC0xOTIsMTMgKzI4MCwxMSBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IENDUmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCopOwogICAgIGJvb2wg
aW5pdGlhbGl6ZSgpOwogCi0gICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50aW5n
IHRoZSByZXNvdXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW50by4KLSAgICB1bnNpZ25lZCBs
b2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7Ci0gICAgdm9pZCB1bmxvY2tGb3JXcml0ZShSZXNvdXJj
ZUlkKTsKLQotICAgIC8vIEdldHMgYSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVz
b3VyY2UsIHRoYXQgY2FuIGJlIHJlbmRlcmVkIHdpdGguCi0gICAgdW5zaWduZWQgbG9ja0ZvclJl
YWQoUmVzb3VyY2VJZCk7CisgICAgY29uc3QgUmVzb3VyY2UqIGxvY2tGb3JSZWFkKFJlc291cmNl
SWQpOwogICAgIHZvaWQgdW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKKyAgICBjb25zdCBSZXNv
dXJjZSogbG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5sb2NrRm9yV3JpdGUo
UmVzb3VyY2VJZCk7CisgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVTa0JpdG1hcFdpdGhSZXNvdXJj
ZShTa0JpdG1hcCosIGNvbnN0IFJlc291cmNlKik7CiAKICAgICBib29sIHRyYW5zZmVyUmVzb3Vy
Y2UoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFJlc291cmNlSWQsIFRyYW5zZmVyYWJs
ZVJlc291cmNlKik7CiAgICAgdm9pZCB0cmltTWFpbGJveERlcXVlKCk7CkBAIC0yMTEsNiArMjk3
LDcgQEAgcHJpdmF0ZToKIAogICAgIERlcXVlPE1haWxib3g+IG1fbWFpbGJveGVzOwogCisgICAg
UmVzb3VyY2VUeXBlIG1fZGVmYXVsdFJlc291cmNlVHlwZTsKICAgICBib29sIG1fdXNlVGV4dHVy
ZVN0b3JhZ2VFeHQ7CiAgICAgYm9vbCBtX3VzZVRleHR1cmVVc2FnZUhpbnQ7CiAgICAgYm9vbCBt
X3VzZVNoYWxsb3dGbHVzaDsKQEAgLTIxOCw1MSArMzA1LDYgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9tYXhUZXh0dXJlU2l6ZTsKIH07CiAKLWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVh
ZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
KTsKLXB1YmxpYzoKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQg
cmVzb3VyY2VJZCkKLSAgICAgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRl
cikKLSAgICAgICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKLSAgICAgICAgLCBtX3RleHR1
cmVJZChyZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yUmVhZChyZXNvdXJjZUlkKSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3RleHR1cmVJZCk7Ci0gICAgfQotCi0gICAgfkNDU2NvcGVkTG9ja1Jl
c291cmNlRm9yUmVhZCgpCi0gICAgewotICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9j
a0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotCi1wcml2YXRlOgotICAgIENDUmVzb3Vy
Y2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7Ci0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci19Owot
Ci1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKTsKLXB1YmxpYzoKLSAgICBDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCi0gICAgICAg
IDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCi0gICAgICAgICwgbV9yZXNv
dXJjZUlkKHJlc291cmNlSWQpCi0gICAgICAgICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRl
ci0+bG9ja0ZvcldyaXRlKHJlc291cmNlSWQpKSB7IH0KLQotICAgIH5DQ1Njb3BlZExvY2tSZXNv
dXJjZUZvcldyaXRlKCkKLSAgICB7Ci0gICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dW5sb2Nr
Rm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotCi1wcml2YXRlOgotICAgIENDUmVzb3Vy
Y2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7Ci0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci19Owot
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKaW5kZXggOWU4NTk5YzBmM2Y2NzFiNjgwZGUwZmZk
MjQ4MDgwMzJmY2ZlNzgxZS4uZTU1YzNjNWQ3MjRhYTNhODQ1NTE3MTUyYzQxOTc5ZWYxM2FiMTZm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJv
dmlkZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVzb3Vy
Y2VQcm92aWRlclRlc3QuY3BwCkBAIC0yODcsMjMgKzI4NywzNiBAQCBwcml2YXRlOgogICAgIFBl
bmRpbmdQcm9kdWNlVGV4dHVyZUxpc3QgbV9wZW5kaW5nUHJvZHVjZVRleHR1cmVzOwogfTsKIAot
Y2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2Ns
YXNzIENDUmVzb3VyY2VQcm92aWRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlVHlwZT4gewogcHVibGljOgogICAgIENDUmVz
b3VyY2VQcm92aWRlclRlc3QoKQogICAgICAgICA6IG1fc2hhcmVkRGF0YShDb250ZXh0U2hhcmVk
RGF0YTo6Y3JlYXRlKCkpCiAgICAgICAgICwgbV9jb250ZXh0KEZha2VXZWJDb21wb3NpdG9yT3V0
cHV0U3VyZmFjZTo6Y3JlYXRlKFJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpjcmVhdGUobV9zaGFy
ZWREYXRhLmdldCgpKSkpCiAgICAgICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQ
cm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSkpCiAgICAgeworICAgICAgICBtX3Jlc291
cmNlUHJvdmlkZXItPnNldERlZmF1bHRSZXNvdXJjZVR5cGUoR2V0UGFyYW0oKSk7CiAgICAgfQog
CiAgICAgUmVzb3VyY2VQcm92aWRlckNvbnRleHQqIGNvbnRleHQoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCo+KG1fY29udGV4dC0+Y29udGV4dDNEKCkpOyB9
CiAKICAgICB2b2lkIGdldFJlc291cmNlUGl4ZWxzKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZvcm1hdCwgdWludDhfdCog
cGl4ZWxzKQogICAgIHsKLSAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2so
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7Ci0gICAgICAgIEFTU0VSVF9ORSgwVSwgbG9j
ay50ZXh0dXJlSWQoKSk7Ci0gICAgICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpOwotICAgICAgICBjb250ZXh0
KCktPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHBpeGVscyk7CisgICAgICAgIGlmIChHZXRQYXJh
bSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlKSB7CisgICAgICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgbG9ja0dMKG1fcmVzb3VyY2VQcm92aWRl
ci5nZXQoKSwgaWQpOworICAgICAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrR0wudGV4dHVyZUlk
KCkpOworICAgICAgICAgICAgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbG9ja0dMLnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQo
KS0+Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcGl4ZWxzKTsKKyAgICAgICAgfSBlbHNlIGlmIChH
ZXRQYXJhbSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6Qml0bWFwKSB7CisgICAgICAgICAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmUgbG9ja1NvZnR3YXJlKG1f
cmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQpOworICAgICAgICAgICAgbWVtY3B5KHBpeGVscywg
bG9ja1NvZnR3YXJlLnNrQml0bWFwKCktPmdldFBpeGVscygpLCBsb2NrU29mdHdhcmUuc2tCaXRt
YXAoKS0+Z2V0U2l6ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZXhwZWN0TnVt
UmVzb3VyY2VzKGludCBjb3VudCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9FUShjb3VudCwgc3Rh
dGljX2Nhc3Q8aW50PihtX3Jlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKSk7CisgICAg
ICAgIGlmIChHZXRQYXJhbSgpID09IENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlKQorICAg
ICAgICAgICAgRVhQRUNUX0VRKGNvdW50LCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKICAg
ICB9CiAKIHByb3RlY3RlZDoKQEAgLTMxMyw3ICszMjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3du
UHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIAotVEVTVF9G
KENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQorVEVTVF9QKENDUmVzb3VyY2VQcm92aWRl
clRlc3QsIEJhc2ljKQogewogICAgIEludFNpemUgc2l6ZSgxLCAxKTsKICAgICBXR0MzRGVudW0g
Zm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBAIC0zMjIsNyArMzM1LDcgQEAgVEVT
VF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJhc2ljKQogICAgIEFTU0VSVF9FUSg0VSwgcGl4
ZWxTaXplKTsKIAogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCA9IG1fcmVz
b3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7Ci0gICAgRVhQRUNUX0VRKDEsIGNvbnRleHQo
KS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51bVJlc291cmNlcygxKTsKIAogICAgIHVp
bnQ4X3QgZGF0YVs0XSA9IHsxLCAyLCAzLCA0fTsKICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQo
KSwgc2l6ZSk7CkBAIC0zMzMsMTAgKzM0NiwxMCBAQCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVy
VGVzdCwgQmFzaWMpCiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChkYXRhLCByZXN1bHQsIHBpeGVs
U2l6ZSkpOwogCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7Ci0g
ICAgRVhQRUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51
bVJlc291cmNlcygwKTsKIH0KIAotVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIERlbGV0
ZU93bmVkUmVzb3VyY2VzKQorVEVTVF9QKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIERlbGV0ZU93
bmVkUmVzb3VyY2VzKQogewogICAgIEludFNpemUgc2l6ZSgxLCAxKTsKICAgICBXR0MzRGVudW0g
Zm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBAIC0zNDUsMTYgKzM1OCwxNiBAQCBU
RVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCiAgICAg
Y29uc3QgaW50IGNvdW50ID0gMzsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kp
CiAgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwg
Zm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7Ci0gICAgRVhQRUNU
X0VRKDMsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51bVJlc291cmNl
cygzKTsKIAogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNvdXJjZXMocG9v
bCsxKTsKLSAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7CisgICAg
ZXhwZWN0TnVtUmVzb3VyY2VzKDMpOwogCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVP
d25lZFJlc291cmNlcyhwb29sKTsKLSAgICBFWFBFQ1RfRVEoMCwgY29udGV4dCgpLT50ZXh0dXJl
Q291bnQoKSk7CisgICAgZXhwZWN0TnVtUmVzb3VyY2VzKDApOwogfQogCi1URVNUX0YoQ0NSZXNv
dXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQorVEVTVF9QKENDUmVzb3VyY2VQcm92aWRlclRlc3Qs
IFVwbG9hZCkKIHsKICAgICBJbnRTaXplIHNpemUoMiwgMik7CiAgICAgV0dDM0RlbnVtIGZvcm1h
dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpAQCAtNDAyLDEyICs0MTUsMjggQEAgVEVTVF9G
KENDUmVzb3VyY2VQcm92aWRlclRlc3QsIFVwbG9hZCkKICAgICAgICAgZ2V0UmVzb3VyY2VQaXhl
bHMoaWQsIHNpemUsIGZvcm1hdCwgcmVzdWx0KTsKICAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNt
cChleHBlY3RlZCwgcmVzdWx0LCBwaXhlbFNpemUpKTsKICAgICB9CisgICAgeworICAgICAgICBJ
bnRSZWN0IG9mZnNldEltYWdlUmVjdChJbnRQb2ludCgxMDAsIDEwMCksIHNpemUpOworICAgICAg
ICBJbnRSZWN0IHNvdXJjZVJlY3QoMTAwLCAxMDAsIDEsIDEpOworICAgICAgICBJbnRTaXplIGRl
c3RPZmZzZXQoMSwgMCk7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBp
bWFnZSwgb2Zmc2V0SW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0T2Zmc2V0KTsKKworICAgICAg
ICB1aW50OF90IGV4cGVjdGVkWzE2XSA9IHswLCAxLCAyLCAzLCAgIDAsIDEsIDIsIDMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIDUsIDYsIDcsICAgMCwgMSwgMiwgM307Cisg
ICAgICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBzaXplLCBmb3JtYXQsIHJlc3VsdCk7CisgICAg
ICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWQsIHJlc3VsdCwgcGl4ZWxTaXplKSk7Cisg
ICAgfQorCiAKICAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKGlkKTsKIH0K
IAotVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIFRyYW5zZmVyUmVzb3VyY2VzKQorVEVT
VF9QKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIFRyYW5zZmVyUmVzb3VyY2VzKQogeworICAgIC8v
IFJlc291cmNlIHRyYW5zZmVyIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggR0wgdGV4dHVyZXMgZm9y
IG5vdy4KKyAgICBpZiAoR2V0UGFyYW0oKSAhPSBDQ1Jlc291cmNlUHJvdmlkZXI6OkdMVGV4dHVy
ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjaGls
ZENvbnRleHQoRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoUmVzb3VyY2VQ
cm92aWRlckNvbnRleHQ6OmNyZWF0ZShtX3NoYXJlZERhdGEuZ2V0KCkpKSk7CiAgICAgT3duUHRy
PENDUmVzb3VyY2VQcm92aWRlcj4gY2hpbGRSZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92
aWRlcjo6Y3JlYXRlKGNoaWxkQ29udGV4dC5nZXQoKSkpOwogCkBAIC00ODYsMTQgKzUxNSwxNCBA
QCBURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVHJhbnNmZXJSZXNvdXJjZXMpCiAKICAg
ICBSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCogY2hpbGRDb250ZXh0M0QgPSBzdGF0aWNfY2FzdDxS
ZXNvdXJjZVByb3ZpZGVyQ29udGV4dCo+KGNoaWxkQ29udGV4dC0+Y29udGV4dDNEKCkpOwogICAg
IHsKLSAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2soY2hpbGRSZXNvdXJj
ZVByb3ZpZGVyLmdldCgpLCBpZDEpOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3Bl
ZFJlYWRMb2NrR0wgbG9jayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkMSk7CiAgICAg
ICAgIEFTU0VSVF9ORSgwVSwgbG9jay50ZXh0dXJlSWQoKSk7CiAgICAgICAgIGNoaWxkQ29udGV4
dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0
dXJlSWQoKSk7CiAgICAgICAgIGNoaWxkQ29udGV4dDNELT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0
LCByZXN1bHQpOwogICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGRhdGExLCByZXN1bHQsIHBp
eGVsU2l6ZSkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9y
UmVhZCBsb2NrKGNoaWxkUmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQyKTsKKyAgICAgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIGxvY2soY2hpbGRSZXNvdXJjZVByb3Zp
ZGVyLmdldCgpLCBpZDIpOwogICAgICAgICBBU1NFUlRfTkUoMFUsIGxvY2sudGV4dHVyZUlkKCkp
OwogICAgICAgICBjaGlsZENvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpOwogICAgICAgICBjaGlsZENvbnRleHQzRC0+
Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcmVzdWx0KTsKQEAgLTUxOSw0ICs1NDgsOSBAQCBURVNU
X0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVHJhbnNmZXJSZXNvdXJjZXMpCiAgICAgRVhQRUNU
X0VRKDB1LCBtX3Jlc291cmNlUHJvdmlkZXItPm1haWxib3hDb3VudCgpKTsKIH0KIAorSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjpWYWx1ZXMoQ0NSZXNvdXJjZVByb3ZpZGVyOjpHTFRleHR1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6
OkJpdG1hcCkpOworCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159842</attachid>
            <date>2012-08-21 18:49:22 -0700</date>
            <delta_ts>2012-08-22 14:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93677-20120821184921.patch</filename>
            <type>text/plain</type>
            <size>41232</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY3YWZmYzM2YTJmMWYx
NDUwZjIxMGRkMzI3Y2MyOWY3MGNhZTg4Zi4uYjI1YmFjZmI2YzNlYzhjZGUxODk3MjVjOTBiNDRh
Y2FiNTk1Yzg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA4LTIxICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzb2Z0d2FyZSBiaXRtYXAgcmVzb3VyY2VzIHRvIENDUmVzb3VyY2VQcm92aWRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWNvbmQgY29tbWl0IGFm
dGVyIHJldmVydC4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFiaWxpdHkgdG8gQ0NSZXNvdXJj
ZVByb3ZpZGVyIHRvIHVzZSBzb2Z0d2FyZSBiaXRtYXBzLgorICAgICAgICBUaGV5IGFyZSBhbGxv
Y2F0ZWQgYXMgcGxhaW4tb2xkLW1lbW9yeSwgYW5kIGV4cG9zZWQgYXMgU2tpYSBvYmplY3RzLgor
CisgICAgICAgIFdlIHdhbnQgdGhlIFJlc291cmNlUHJvdmlkZXIgdG8gYmUgYWJsZSB0byBoYW5k
bGUgZGlmZmVyZW50IHJlc291cmNlCisgICAgICAgIHR5cGVzIGF0IHRoZSBzYW1lIHRpbWUuICBJ
biBwcmFjdGljZSwgYSBkZWZhdWx0IHJlc291cmNlIHR5cGUgaXMKKyAgICAgICAgZGVzaXJlZCBm
b3IgbW9zdCB1c2VzIHdpdGhpbiBhIHNpbmdsZSBjb21wb3NpdG9yIGluc3RhbmNlLCB3aGljaCBp
cworICAgICAgICBzcGVjaWZpZWQgYnkgdGhlIGRlZmF1bHQgcmVzb3VyY2UgdHlwZS4gIERlZmF1
bHQgcmVzb3VyY2UgdHlwZXMgYXJlCisgICAgICAgIGV4cGVjdGVkIHRvIGJlIG1vc3RseSAxLXRv
LTEgd2l0aCBDQ1JlbmRlcmVyIHR5cGVzLgorCisgICAgICAgIE5ldyB0ZXN0cyBhZGRlZCBieSBw
YXJhbWV0cml6aW5nIGV4aXN0aW5nIENDUmVzb3VyY2VQcm92aWRlciB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1
ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChEcmF3aW5nRnJhbWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpj
cmVhdGVHTFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpj
cmVhdGVCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVh
dGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6c2hhbGxv
d0ZsdXNoSWZTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVy
Ojpsb2NrRm9yUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnVu
bG9ja0ZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpsb2Nr
Rm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tG
b3JXcml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJl
YWRMb2NrR0w6OlNjb3BlZFJlYWRMb2NrR0wpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjp+U2NvcGVkUmVhZExvY2tHTCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjpTY29wZWRX
cml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3Bl
ZFdyaXRlTG9ja0dMOjp+U2NvcGVkV3JpdGVMb2NrR0wpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tTb2Z0d2FyZTo6U2Nv
cGVkUmVhZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OlNjb3BlZFJlYWRMb2NrU29mdHdhcmU6On5TY29wZWRSZWFkTG9ja1NvZnR3YXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdh
cmU6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrU29mdHdhcmU6On5TY29wZWRXcml0ZUxvY2tTb2Z0
d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OkNDUmVzb3VyY2VQ
cm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNv
dXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVzb3VyY2VQcm92aWRlcjo6c2V0Q3JlYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGlvblBvbGljeSk6CisgICAgICAgIChDQ1Jlc291cmNl
UHJvdmlkZXIpOgorICAgICAgICAoU2NvcGVkUmVhZExvY2tHTCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6OnRleHR1cmVJZCk6CisgICAg
ICAgIChTY29wZWRXcml0ZUxvY2tHTCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMOjp0ZXh0dXJlSWQpOgorICAgICAgICAoU2NvcGVkUmVh
ZExvY2tTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OlNj
b3BlZFJlYWRMb2NrU29mdHdhcmU6OnNrQml0bWFwKToKKyAgICAgICAgKFNjb3BlZFdyaXRlTG9j
a1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVk
V3JpdGVMb2NrU29mdHdhcmU6OnNrQ2FudmFzKToKKyAgICAgICAgKFJlc291cmNlKToKKwogMjAx
Mi0wOC0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjIwMi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggYzkzNWI1NjcwNTFiZDJjYTM1NDk4N2QzZTdmMGY1NjdlNmY2ODU4NC4uYzUw
ZjA5Yjg1NTdkYTdhZDAyOGExNjliNmE1ZDM1OWRiYTY4YzIwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wOC0yMSAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc29mdHdhcmUgYml0
bWFwIHJlc291cmNlcyB0byBDQ1Jlc291cmNlUHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vjb25kIGNvbW1pdCBhZnRlciByZXZlcnQuCisK
KyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIENDUmVzb3VyY2VQcm92aWRlciB0byB1
c2Ugc29mdHdhcmUgYml0bWFwcy4KKyAgICAgICAgVGhleSBhcmUgYWxsb2NhdGVkIGFzIHBsYWlu
LW9sZC1tZW1vcnksIGFuZCBleHBvc2VkIGFzIFNraWEgb2JqZWN0cy4KKworICAgICAgICBXZSB3
YW50IHRoZSBSZXNvdXJjZVByb3ZpZGVyIHRvIGJlIGFibGUgdG8gaGFuZGxlIGRpZmZlcmVudCBy
ZXNvdXJjZQorICAgICAgICB0eXBlcyBhdCB0aGUgc2FtZSB0aW1lLiAgSW4gcHJhY3RpY2UsIGEg
ZGVmYXVsdCByZXNvdXJjZSB0eXBlIGlzCisgICAgICAgIGRlc2lyZWQgZm9yIG1vc3QgdXNlcyB3
aXRoaW4gYSBzaW5nbGUgY29tcG9zaXRvciBpbnN0YW5jZSwgd2hpY2ggaXMKKyAgICAgICAgc3Bl
Y2lmaWVkIGJ5IHRoZSBkZWZhdWx0IHJlc291cmNlIHR5cGUuICBEZWZhdWx0IHJlc291cmNlIHR5
cGVzIGFyZQorICAgICAgICBleHBlY3RlZCB0byBiZSBtb3N0bHkgMS10by0xIHdpdGggQ0NSZW5k
ZXJlciB0eXBlcy4KKworICAgICAgICBOZXcgdGVzdHMgYWRkZWQgYnkgcGFyYW1ldHJpemluZyBl
eGlzdGluZyBDQ1Jlc291cmNlUHJvdmlkZXIgdGVzdHMuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1Jl
c291cmNlUHJvdmlkZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NSZXNvdXJjZVByb3Zp
ZGVyVGVzdDo6Z2V0UmVzb3VyY2VQaXhlbHMpOgorCiAyMDEyLTA4LTIxICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTI2MjAyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZGEyZWNj
NjEwOWM1ZDRlY2I0YjY4ODkwYjA4NmYxMmEwOWE2NDQ4Ny4uMTAxYWQ0YmIxNzliNmRiM2NiOWE2
OTY5MTljMDZkOGQ5NzFmMjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0x
MDcsNyArMTA3LDcgQEAgdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KFdlYkdyYXBoaWMKICAgICBjb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKTsKIAogICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5nVGV4dHVyZShy
ZXNvdXJjZVByb3ZpZGVyKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIGxvY2so
cmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+cmVzb3VyY2VJZCgpKTsKKyAgICBDQ1Jlc291cmNl
UHJvdmlkZXI6OlNjb3BlZFdyaXRlTG9ja0dMIGxvY2socmVzb3VyY2VQcm92aWRlciwgdGV4dHVy
ZS0+cmVzb3VyY2VJZCgpKTsKICAgICAvLyBDcmVhdGUgYW4gYWNjZWxlcmF0ZWQgY2FudmFzIHRv
IGRyYXcgb24uCiAgICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRl
ZENhbnZhcyhnckNvbnRleHQsIHRleHR1cmUtPnNpemUoKSwgbG9jay50ZXh0dXJlSWQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDM2ZTQ3ZDE3N2Q0YWZi
M2IwMTczMWM5MGQ0YzgwZmMzM2QwNWRkZTQuLjg0ZjAwYTFjN2I5YzQ0MzBiZDMxNWFjMTM2Njkx
YzIxMDJjZWVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
MzYzLDcgKzM2Myw3IEBAIHN0YXRpYyBpbmxpbmUgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QKIAogICAgIGxheWVyUmVuZGVy
ZXItPmNvbnRleHQoKS0+Zmx1c2goKTsKIAotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3Jp
dGUgbG9jayhsYXllclJlbmRlcmVyLT5yZXNvdXJjZVByb3ZpZGVyKCksIHNvdXJjZVRleHR1cmUt
PmlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0wgbG9jayhs
YXllclJlbmRlcmVyLT5yZXNvdXJjZVByb3ZpZGVyKCksIHNvdXJjZVRleHR1cmUtPmlkKCkpOwog
ICAgIFNrQml0bWFwIHNvdXJjZSA9IENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRl
cnMsIGxvY2sudGV4dHVyZUlkKCksIHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4
dCwgZmlsdGVyR3JDb250ZXh0KTsKICAgICByZXR1cm4gc291cmNlOwogfQpAQCAtNDY1LDIwICs0
NjUsMjAgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChE
cmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1JlbmQKICAgICAvLyBGSVhNRTogQ2FjaGUgdGhp
cyB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZG8gaXQgZm9yIGJvdGggdGhlIHN1cmZh
Y2UgYW5kIGl0cyByZXBsaWNhLgogICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gdGhlIGNvbnRlbnRz
IHRleHR1cmUuCiAgICAgU2tCaXRtYXAgZmlsdGVyQml0bWFwID0gYXBwbHlGaWx0ZXJzKHRoaXMs
IHJlbmRlclBhc3MtPmZpbHRlcnMoKSwgY29udGVudHNUZXh0dXJlKTsKLSAgICBPd25QdHI8Q0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkPiBjb250ZW50c1Jlc291cmNlTG9jazsKKyAgICBPd25Q
dHI8Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMPiBjb250ZW50c1Jlc291cmNl
TG9jazsKICAgICB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJZCA9IDA7CiAgICAgaWYgKGZpbHRl
ckJpdG1hcC5nZXRUZXh0dXJlKCkpIHsKICAgICAgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVp
bnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihmaWx0ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKTsKICAg
ICAgICAgY29udGVudHNUZXh0dXJlSWQgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgY29udGVudHNSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcg
Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKG1fcmVzb3VyY2VQcm92aWRlciwgY29udGVudHNU
ZXh0dXJlLT5pZCgpKSk7CisgICAgICAgIGNvbnRlbnRzUmVzb3VyY2VMb2NrID0gYWRvcHRQdHIo
bmV3IENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTChtX3Jlc291cmNlUHJvdmlk
ZXIsIGNvbnRlbnRzVGV4dHVyZS0+aWQoKSkpOwogICAgICAgICBjb250ZW50c1RleHR1cmVJZCA9
IGNvbnRlbnRzUmVzb3VyY2VMb2NrLT50ZXh0dXJlSWQoKTsKICAgICB9CiAKICAgICAvLyBEcmF3
IHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgaWYgdGhlcmUgaXMgb25lLgogICAgIGlmIChiYWNrZ3Jv
dW5kVGV4dHVyZSkgewogICAgICAgICBBU1NFUlQoYmFja2dyb3VuZFRleHR1cmUtPnNpemUoKSA9
PSBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSk7Ci0gICAgICAgIENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yUmVhZCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgYmFja2dyb3VuZFRleHR1cmUtPmlkKCkp
OworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgbG9jayhtX3Jl
c291cmNlUHJvdmlkZXIsIGJhY2tncm91bmRUZXh0dXJlLT5pZCgpKTsKICAgICAgICAgY29weVRl
eHR1cmVUb0ZyYW1lYnVmZmVyKGZyYW1lLCBsb2NrLnRleHR1cmVJZCgpLCBxdWFkLT5xdWFkUmVj
dCgpLCBxdWFkLT5xdWFkVHJhbnNmb3JtKCkpOwogICAgIH0KIApAQCAtNDk1LDEwICs0OTUsMTAg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChEcmF3aW5n
RnJhbWUmIGZyYW1lLCBjb25zdCBDQ1JlbmQKICAgICAgICAgZGV2aWNlTGF5ZXJFZGdlcy5pbmZs
YXRlQW50aUFsaWFzaW5nRGlzdGFuY2UoKTsKICAgICB9CiAKLSAgICBPd25QdHI8Q0NTY29wZWRM
b2NrUmVzb3VyY2VGb3JSZWFkPiBtYXNrUmVzb3VyY2VMb2NrOworICAgIE93blB0cjxDQ1Jlc291
cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w+IG1hc2tSZXNvdXJjZUxvY2s7CiAgICAgdW5z
aWduZWQgbWFza1RleHR1cmVJZCA9IDA7CiAgICAgaWYgKHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkp
IHsKLSAgICAgICAgbWFza1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tS
ZXNvdXJjZUZvclJlYWQobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5tYXNrUmVzb3VyY2VJZCgp
KSk7CisgICAgICAgIG1hc2tSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+bWFza1Jl
c291cmNlSWQoKSkpOwogICAgICAgICBtYXNrVGV4dHVyZUlkID0gbWFza1Jlc291cmNlTG9jay0+
dGV4dHVyZUlkKCk7CiAgICAgfQogCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25z
dCBDQ1RpbGUKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0odW5pZm9y
bXMucHJvZ3JhbSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHVu
aWZvcm1zLnNhbXBsZXJMb2NhdGlvbiwgMCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvclJlYWQgcXVhZFJlc291cmNlTG9jayhtX3Jlc291cmNlUHJvdmlk
ZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRS
ZWFkTG9ja0dMIHF1YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNv
dXJjZUlkKCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWRSZXNvdXJjZUxvY2sudGV4dHVyZUlkKCkp
KTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxU
RVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CkBA
IC03OTYsOSArNzk2LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRl
b1F1YWQoY29uc3QgRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0MKICAgICBjb25zdCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUgPSBxdWFkLT51UGxhbmUoKTsKICAgICBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUgPSBxdWFkLT52UGxhbmUo
KTsKIAotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB5UGxhbmVMb2NrKG1fcmVzb3Vy
Y2VQcm92aWRlciwgeVBsYW5lLnJlc291cmNlSWQpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yUmVhZCB1UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdVBsYW5lLnJlc291cmNlSWQp
OwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB2UGxhbmVMb2NrKG1fcmVzb3VyY2VQ
cm92aWRlciwgdlBsYW5lLnJlc291cmNlSWQpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2Nv
cGVkUmVhZExvY2tHTCB5UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgeVBsYW5lLnJlc291
cmNlSWQpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCB1UGxhbmVM
b2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdVBsYW5lLnJlc291cmNlSWQpOworICAgIENDUmVzb3Vy
Y2VQcm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCB2UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRl
ciwgdlBsYW5lLnJlc291cmNlSWQpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0
aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCB5UGxhbmVMb2NrLnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgp
LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMikpOwpAQCAtOTA3LDcg
KzkwNyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQoY29u
c3QgRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NUCiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT51bmlmb3JtNGYoYmluZGluZy50ZXhUcmFuc2Zvcm1Mb2NhdGlvbiwgdXZSZWN0Lngo
KSwgdXZSZWN0LnkoKSwgdXZSZWN0LndpZHRoKCksIHV2UmVjdC5oZWlnaHQoKSkpOwogCiAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBxdWFkUmVzb3Vy
Y2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0wgcXVhZFJlc291cmNlTG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZFJl
c291cmNlTG9jay50ZXh0dXJlSWQoKSkpOwogCiAgICAgLy8gRklYTUU6IHNldHRpbmcgdGhlIHRl
eHR1cmUgcGFyYW1ldGVycyBldmVyeSB0aW1lIGlzIHJlZHVuZGFudC4gTW92ZSB0aGlzIGNvZGUg
c29tZXdoZXJlCkBAIC0xMTk5LDcgKzExOTksNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSwgY29ucwog
ICAgIGlmICghdGV4dHVyZS0+aWQoKSAmJiAhdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6
SW1wbFBvb2wsIGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgbG9jayhtX3Jlc291cmNlUHJvdmlk
ZXIsIHRleHR1cmUtPmlkKCkpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVM
b2NrR0wgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpOwogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCB0ZXh0dXJl
LT5mb3JtYXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNlUmVjdC53aWR0aCgpLCBkZXZp
Y2VSZWN0LmhlaWdodCgpLCAwKSk7CkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBib29sIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKERyYXdpbmdGcmFtZSYgZnJh
bWUsIGNvbnN0CiAgICAgQVNTRVJUKHRleHR1cmUtPmlkKCkpOwogCiAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKLSAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZl
ckxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZShtX3Jlc291
cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpKTsKKyAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxv
Y2sgPSBhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tHTCht
X3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJl
SWQgPSBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2stPnRleHR1cmVJZCgpOwogICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQsIDApKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAwOWNkMGUyOTExMTliZTc0MTk0MjI4ZjkwMzdkOWFl
ZGUzZjFkYWI1Li4zNTc1YzE5M2Q3NzAyNDVmYzhlYTRmMDM4MzkzYmU4MTZiOWI4N2UwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIG1fdGV4
dHVyZVVwbG9hZGVyU2V0dGluZzsKIAotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZv
cldyaXRlPiBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2s7CisgICAgT3duUHRyPENDUmVzb3VyY2VQ
cm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w+IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jazsKIH07
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKaW5kZXggOGE1ZDZhZjlk
ZjkwYjZjZjJiNmM5NDg2Y2UwOWVhMTVkN2Q0YzBkOS4uZmIzNmI0Y2FlZGQxZjdmZWE5YmNhMTBh
ZjlkODljMjk2YWYzN2I2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhlIEdMQygpIG1hY3JvCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBA
IC04OCwxMyArODksMjQgQEAgYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1l
cihSZXNvdXJjZUlkIGlkKQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50IGhpbnQpCiB7CisgICAgc3dpdGNo
IChtX2RlZmF1bHRSZXNvdXJjZVR5cGUpIHsKKyAgICBjYXNlIEdMVGV4dHVyZToKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUdMVGV4dHVyZShwb29sLCBzaXplLCBmb3JtYXQsIGhpbnQpOworICAgIGNh
c2UgQml0bWFwOgorICAgICAgICBBU1NFUlQoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcChwb29sLCBzaXplKTsKKyAgICB9CisK
KyAgICBDUkFTSCgpOworICAgIHJldHVybiAwOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVHTFRleHR1cmUoaW50IHBvb2wsIGNv
bnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCBoaW50
KQorewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgdW5zaWduZWQg
dGV4dHVyZUlkID0gMDsKICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9j
b250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoY29udGV4dDNkKTsKICAgICBHTEMoY29u
dGV4dDNkLCB0ZXh0dXJlSWQgPSBjb250ZXh0M2QtPmNyZWF0ZVRleHR1cmUoKSk7CiAgICAgR0xD
KGNvbnRleHQzZCwgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgdGV4dHVyZUlkKSk7CiAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CkBAIC0x
MTUsMTIgKzEyNywyNCBAQCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29ucwogICAgIHJldHVybiBpZDsK
IH0KIAorQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6
Y3JlYXRlQml0bWFwKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisKKyAgICB1aW50OF90KiBwaXhlbHMgPSBuZXcg
dWludDhfdFtzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNF07CisKKyAgICBSZXNvdXJj
ZUlkIGlkID0gbV9uZXh0SWQrKzsKKyAgICBSZXNvdXJjZSByZXNvdXJjZShwaXhlbHMsIHBvb2ws
IHNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICBtX3Jlc291cmNlcy5hZGQoaWQs
IHJlc291cmNlKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4
dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9jb250ZXh0LT5jb250ZXh0M0QoKSk7CiAgICAgUmVzb3Vy
Y2VJZCBpZCA9IG1fbmV4dElkKys7Ci0gICAgUmVzb3VyY2UgcmVzb3VyY2U7Ci0gICAgcmVzb3Vy
Y2UuZ2xJZCA9IHRleHR1cmVJZDsKKyAgICBSZXNvdXJjZSByZXNvdXJjZSh0ZXh0dXJlSWQsIDAs
IEludFNpemUoKSwgMCk7CiAgICAgcmVzb3VyY2UuZXh0ZXJuYWwgPSB0cnVlOwogICAgIG1fcmVz
b3VyY2VzLmFkZChpZCwgcmVzb3VyY2UpOwogICAgIHJldHVybiBpZDsKQEAgLTEyOSwxNSArMTUz
LDE3IEBAIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6
OmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4CiB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6
ZGVsZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkpOwotICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2Nv
bnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291
cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0
LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7
Ci0gICAgaWYgKCFpdC0+c2Vjb25kLmV4dGVybmFsKQorCisgICAgaWYgKGl0LT5zZWNvbmQuZ2xJ
ZCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCkgeworICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgQVNTRVJUKGNv
bnRleHQzZCk7CiAgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVy
ZShpdC0+c2Vjb25kLmdsSWQpKTsKKyAgICB9CisgICAgaWYgKGl0LT5zZWNvbmQucGl4ZWxzKQor
ICAgICAgICBkZWxldGUgaXQtPnNlY29uZC5waXhlbHM7CisKICAgICBtX3Jlc291cmNlcy5yZW1v
dmUoaXQpOwogfQogCkBAIC0xNTMsNzEgKzE3OSw2OCBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRl
cjo6ZGVsZXRlT3duZWRSZXNvdXJjZXMoaW50IHBvb2wpCiAgICAgICAgIGRlbGV0ZVJlc291cmNl
KCppdCk7CiB9CiAKLXZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBp
ZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50U2l6ZSYgZGVzdE9mZnNldCkKK0NDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VUeXBlIENDUmVzb3VyY2VQcm92aWRlcjo6cmVzb3VyY2VUeXBl
KFJlc291cmNlSWQgaWQpCiB7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
LSAgICBBU1NFUlQobV90ZXhTdWJJbWFnZS5nZXQoKSk7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0
M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIFJlc291cmNlTWFwOjpp
dGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChpdCAhPSBtX3Jl
c291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29u
ZC5sb2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLQotICAgIGNvbnRl
eHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGl0LT5zZWNv
bmQuZ2xJZCk7Ci0gICAgbV90ZXhTdWJJbWFnZS0+dXBsb2FkKGltYWdlLCBpbWFnZVJlY3QsIHNv
dXJjZVJlY3QsIGRlc3RPZmZzZXQsIGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOworICAg
IEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQu
dHlwZTsKIH0KIAotdW5zaWduZWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUoUmVz
b3VyY2VJZCBpZCkKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBp
ZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50U2l6ZSYgZGVzdE9mZnNldCkKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRv
ciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNl
cy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5sb2Nr
Rm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLSAgICBpdC0+c2Vjb25kLmxv
Y2tlZEZvcldyaXRlID0gdHJ1ZTsKLSAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOwotfQogCi12
b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKLXsK
LSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFJlc291cmNlTWFwOjpp
dGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChpdCAhPSBtX3Jl
c291cmNlcy5lbmQoKSAmJiBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25k
LmV4dGVybmFsKTsKLSAgICBpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlID0gZmFsc2U7CisgICAg
aWYgKGl0LT5zZWNvbmQuZ2xJZCkgeworICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQz
ZCk7CisgICAgICAgIEFTU0VSVChtX3RleFN1YkltYWdlLmdldCgpKTsKKyAgICAgICAgY29udGV4
dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29u
ZC5nbElkKTsKKyAgICAgICAgbV90ZXhTdWJJbWFnZS0+dXBsb2FkKGltYWdlLCBpbWFnZVJlY3Qs
IHNvdXJjZVJlY3QsIGRlc3RPZmZzZXQsIGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOwor
ICAgIH0KKworICAgIGlmIChpdC0+c2Vjb25kLnBpeGVscykgeworICAgICAgICBTa0JpdG1hcCBz
cmNGdWxsOworICAgICAgICBzcmNGdWxsLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsIGltYWdlUmVjdC53aWR0aCgpLCBpbWFnZVJlY3QuaGVpZ2h0KCkpOworICAgICAgICBz
cmNGdWxsLnNldFBpeGVscyhjb25zdF9jYXN0PHVpbnQ4X3QqPihpbWFnZSkpOworICAgICAgICBT
a0JpdG1hcCBzcmNTdWJzZXQ7CisgICAgICAgIFNrSVJlY3Qgc2tTb3VyY2VSZWN0ID0gU2tJUmVj
dDo6TWFrZVhZV0goc291cmNlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpLCBzb3VyY2VSZWN0Lndp
ZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworICAgICAgICBza1NvdXJjZVJlY3Qub2Zmc2V0
KC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CisgICAgICAgIHNyY0Z1bGwuZXh0cmFj
dFN1YnNldCgmc3JjU3Vic2V0LCBza1NvdXJjZVJlY3QpOworCisgICAgICAgIFNjb3BlZFdyaXRl
TG9ja1NvZnR3YXJlIGxvY2sodGhpcywgaWQpOworICAgICAgICBTa0NhbnZhcyogZGVzdCA9IGxv
Y2suc2tDYW52YXMoKTsKKyAgICAgICAgZGVzdC0+d3JpdGVQaXhlbHMoc3JjU3Vic2V0LCBkZXN0
T2Zmc2V0LndpZHRoKCksIGRlc3RPZmZzZXQuaGVpZ2h0KCkpOworICAgIH0KIH0KIAogdm9pZCBD
Q1Jlc291cmNlUHJvdmlkZXI6OmZsdXNoKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOwogICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRl
eHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjb250ZXh0M2QtPmZsdXNoKCk7CisgICAgaWYgKGNvbnRleHQz
ZCkKKyAgICAgICAgY29udGV4dDNkLT5mbHVzaCgpOwogfQogCiBib29sIENDUmVzb3VyY2VQcm92
aWRlcjo6c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c0ltcGxUaHJlYWQoKSk7CiAgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1f
Y29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAg
IGlmICghY29udGV4dDNkIHx8ICFtX3VzZVNoYWxsb3dGbHVzaCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KIAotICAgIGlmIChtX3VzZVNoYWxsb3dGbHVzaCkKLSAgICAgICAgY29udGV4
dDNkLT5zaGFsbG93Rmx1c2hDSFJPTUlVTSgpOwotICAgIHJldHVybiBtX3VzZVNoYWxsb3dGbHVz
aDsKKyAgICBjb250ZXh0M2QtPnNoYWxsb3dGbHVzaENIUk9NSVVNKCk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXVuc2lnbmVkIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3Vy
Y2VJZCBpZCkKK2NvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQ
cm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVz
b3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAh
aXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSk7Ci0gICAgKysoaXQtPnNlY29uZC5sb2NrRm9yUmVh
ZENvdW50KTsKLSAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOworICAgIGl0LT5zZWNvbmQubG9j
a0ZvclJlYWRDb3VudCsrOworICAgIHJldHVybiAmaXQtPnNlY29uZDsKIH0KIAogdm9pZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OnVubG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKQEAgLTIyNSwxMyAr
MjQ4LDkwIEBAIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JSZWFkKFJlc291cmNl
SWQgaWQpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQg
IT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50ID4gMCk7
Ci0gICAgLS0oaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKKyAgICBpdC0+c2Vjb25kLmxv
Y2tGb3JSZWFkQ291bnQtLTsKK30KKworY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZSogQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKK3sKKyAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291
cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5s
b2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25k
LmxvY2tlZEZvcldyaXRlID0gdHJ1ZTsKKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7Cit9CisKK3Zv
aWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQorewor
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVz
b3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQu
ZXh0ZXJuYWwpOworICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKK30KKwor
Q0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkIHJlc291cmNlSWQpCisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQ
cm92aWRlcikKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJl
SWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCktPmdsSWQpCit7Cisg
ICAgQVNTRVJUKG1fdGV4dHVyZUlkKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRS
ZWFkTG9ja0dMOjp+U2NvcGVkUmVhZExvY2tHTCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVy
LT51bmxvY2tGb3JSZWFkKG1fcmVzb3VyY2VJZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6
U2NvcGVkV3JpdGVMb2NrR0w6OlNjb3BlZFdyaXRlTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNl
SWQpCisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1f
cmVzb3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRl
ci0+bG9ja0ZvcldyaXRlKHJlc291cmNlSWQpLT5nbElkKQoreworICAgIEFTU0VSVChtX3RleHR1
cmVJZCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6U2NvcGVkV3JpdGVMb2NrR0w6On5TY29w
ZWRXcml0ZUxvY2tHTCgpCit7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JXcml0
ZShtX3Jlc291cmNlSWQpOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxhdGVT
a0JpdG1hcFdpdGhSZXNvdXJjZShTa0JpdG1hcCogc2tCaXRtYXAsIGNvbnN0IFJlc291cmNlKiBy
ZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2UtPnBpeGVscyk7CisgICAgQVNTRVJUKHJl
c291cmNlLT5mb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHNrQml0bWFw
LT5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCByZXNvdXJjZS0+c2l6ZS53
aWR0aCgpLCByZXNvdXJjZS0+c2l6ZS5oZWlnaHQoKSk7CisgICAgc2tCaXRtYXAtPnNldFBpeGVs
cyhyZXNvdXJjZS0+cGl4ZWxzKTsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFk
TG9ja1NvZnR3YXJlOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlKENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNl
SWQpCisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1f
cmVzb3VyY2VJZChyZXNvdXJjZUlkKQoreworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6cG9wdWxh
dGVTa0JpdG1hcFdpdGhSZXNvdXJjZSgmbV9za0JpdG1hcCwgcmVzb3VyY2VQcm92aWRlci0+bG9j
a0ZvclJlYWQocmVzb3VyY2VJZCkpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJl
YWRMb2NrU29mdHdhcmU6On5TY29wZWRSZWFkTG9ja1NvZnR3YXJlKCkKK3sKKyAgICBtX3Jlc291
cmNlUHJvdmlkZXItPnVubG9ja0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKK30KKworQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRXcml0ZUxvY2tTb2Z0d2FyZTo6U2NvcGVkV3JpdGVMb2NrU29mdHdh
cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNv
dXJjZVByb3ZpZGVyKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCit7CisgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpwb3B1bGF0ZVNrQml0bWFwV2l0aFJlc291cmNlKCZtX3NrQml0bWFw
LCByZXNvdXJjZVByb3ZpZGVyLT5sb2NrRm9yV3JpdGUocmVzb3VyY2VJZCkpOworICAgIG1fc2tD
YW52YXMuc2V0Qml0bWFwRGV2aWNlKG1fc2tCaXRtYXApOworfQorCitDQ1Jlc291cmNlUHJvdmlk
ZXI6OlNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlOjp+U2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoKQor
eworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsK
IH0KIAogQ0NSZXNvdXJjZVByb3ZpZGVyOjpDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbmV4dElk
KDEpCiAgICAgLCBtX25leHRDaGlsZCgxKQorICAgICwgbV9kZWZhdWx0UmVzb3VyY2VUeXBlKEdM
VGV4dHVyZSkKICAgICAsIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQoZmFsc2UpCiAgICAgLCBtX3Vz
ZVRleHR1cmVVc2FnZUhpbnQoZmFsc2UpCiAgICAgLCBtX3VzZVNoYWxsb3dGbHVzaChmYWxzZSkK
QEAgLTI0MywxMCArMzQzLDE1IEBAIGJvb2wgQ0NSZXNvdXJjZVByb3ZpZGVyOjppbml0aWFsaXpl
KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlm
ICghY29udGV4dDNkIHx8ICFjb250ZXh0M2QtPm1ha2VDb250ZXh0Q3VycmVudCgpKSB7CisgICAg
aWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgbV9tYXhUZXh0dXJlU2l6ZSA9IElOVF9NQVg7CisK
ICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBv
c2l0aW5nLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIGlmICghY29udGV4dDNk
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgV2Vi
S2l0OjpXZWJTdHJpbmcgZXh0ZW5zaW9uc1dlYlN0cmluZyA9IGNvbnRleHQzZC0+Z2V0U3RyaW5n
KEdyYXBoaWNzQ29udGV4dDNEOjpFWFRFTlNJT05TKTsKICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0
cmluZyhleHRlbnNpb25zV2ViU3RyaW5nLmRhdGEoKSwgZXh0ZW5zaW9uc1dlYlN0cmluZy5sZW5n
dGgoKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNv
dXJjZVByb3ZpZGVyLmgKaW5kZXggZTkyN2QyOTJmY2RjODNlYTAxZjdlMjgxZDVjZmNmNWNjMjhi
ZTZjOS4uZWJhZDRiOTg2NGZmYjcxMmM1NmIxMmQ4OTk1N2Q5NGFhNWQwNTZhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJj
ZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJD
Q0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlNrQml0bWFwLmgiCisjaW5jbHVkZSAiU2tDYW52
YXMuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ0LDggKzQ2LDYgQEAgY2xhc3MgV2ViR3JhcGhp
Y3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkOwotY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsKIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBMYXllclRleHR1cmVTdWJJbWFnZTsKIApAQCAtNTgsNiArNTgs
MTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlc291cmNlSWQ+IFJlc291cmNlSWRB
cnJheTsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVzb3VyY2VJZCwgUmVzb3VyY2VJZD4gUmVzb3Vy
Y2VJZE1hcDsKICAgICBlbnVtIFRleHR1cmVVc2FnZUhpbnQgeyBUZXh0dXJlVXNhZ2VBbnksIFRl
eHR1cmVVc2FnZUZyYW1lYnVmZmVyIH07CisgICAgZW51bSBSZXNvdXJjZVR5cGUgeworICAgICAg
ICBHTFRleHR1cmUgPSAxLAorICAgICAgICBCaXRtYXAsCisgICAgfTsKICAgICBzdHJ1Y3QgTWFp
bGJveCB7CiAgICAgICAgIEdDM0RieXRlIG5hbWVbNjRdOwogICAgIH07CkBAIC04NywxMSArOTEs
MTkgQEAgcHVibGljOgogCiAgICAgLy8gUHJvZHVjZXIgaW50ZXJmYWNlLgogCi0gICAgLy8gQ3Jl
YXRlcyBhIHJlc291cmNlIG9mIHRoZSBnaXZlbiBzaXplL2Zvcm1hdCwgaW50byB0aGUgZ2l2ZW4g
cG9vbC4KKyAgICB2b2lkIHNldERlZmF1bHRSZXNvdXJjZVR5cGUoUmVzb3VyY2VUeXBlIHR5cGUp
IHsgbV9kZWZhdWx0UmVzb3VyY2VUeXBlID0gdHlwZTsgfQorICAgIFJlc291cmNlVHlwZSBkZWZh
dWx0UmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UmVzb3VyY2VUeXBlOyB9
CisgICAgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZShSZXNvdXJjZUlkKTsKKworICAgIC8vIENy
ZWF0ZXMgYSByZXNvdXJjZSBvZiB0aGUgZGVmYXVsdCByZXNvdXJjZSB0eXBlLgogICAgIFJlc291
cmNlSWQgY3JlYXRlUmVzb3VyY2UoaW50IHBvb2wsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBm
b3JtYXQsIFRleHR1cmVVc2FnZUhpbnQpOwogCi0gICAgLy8gV3JhcHMgYW4gZXh0ZXJuYWwgdGV4
dHVyZSBpbnRvIGEgcmVzb3VyY2UuCisgICAgLy8gWW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgY3Jl
YXRlIGEgc3BlY2lmaWMgcmVzb3VyY2UgdHlwZS4KKyAgICBSZXNvdXJjZUlkIGNyZWF0ZUdMVGV4
dHVyZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVz
YWdlSGludCk7CisgICAgUmVzb3VyY2VJZCBjcmVhdGVCaXRtYXAoaW50IHBvb2wsIGNvbnN0IElu
dFNpemUmKTsKKyAgICAvLyBXcmFwcyBhbiBleHRlcm5hbCB0ZXh0dXJlIGludG8gYSBHTCByZXNv
dXJjZS4KICAgICBSZXNvdXJjZUlkIGNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1
bnNpZ25lZCB0ZXh0dXJlSWQpOworCiAgICAgdm9pZCBkZWxldGVSZXNvdXJjZShSZXNvdXJjZUlk
KTsKIAogICAgIC8vIERlbGV0ZXMgYWxsIHJlc291cmNlcyBvd25lZCBieSBhIGdpdmVuIHBvb2wu
CkBAIC0xNDcsMTMgKzE1OSw3MiBAQCBwdWJsaWM6CiAgICAgLy8gT25seSBmb3IgdGVzdGluZwog
ICAgIHNpemVfdCBtYWlsYm94Q291bnQoKSBjb25zdCB7IHJldHVybiBtX21haWxib3hlcy5zaXpl
KCk7IH0KIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VG
b3JSZWFkOwotICAgIGZyaWVuZCBjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlOwor
ICAgIC8vIFRoZSBmb2xsb3dpbmcgbG9jayBjbGFzc2VzIGFyZSBwYXJ0IG9mIHRoZSBDQ1Jlc291
cmNlUHJvdmlkZXIgQVBJIGFuZCBhcmUKKyAgICAvLyBuZWVkZWQgdG8gcmVhZCBhbmQgd3JpdGUg
dGhlIHJlc291cmNlIGNvbnRlbnRzLiBUaGUgdXNlciBtdXN0IGVuc3VyZQorICAgIC8vIHRoYXQg
dGhleSBvbmx5IHVzZSBHTCBsb2NrcyBvbiBHTCByZXNvdXJjZXMsIGV0YywgYW5kIHRoaXMgaXMg
ZW5mb3JjZWQKKyAgICAvLyBieSBhc3NlcnRpb25zLgorICAgIGNsYXNzIFNjb3BlZFJlYWRMb2Nr
R0wgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZWFkTG9ja0dMKTsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFNjb3BlZFJlYWRMb2NrR0woQ0NSZXNvdXJjZVByb3ZpZGVyKiwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkKTsKKyAgICAgICAgflNjb3BlZFJlYWRMb2Nr
R0woKTsKKworICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVJZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBt
X3Jlc291cmNlUHJvdmlkZXI7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBtX3Jlc291cmNlSWQ7CisgICAgICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIH07CisK
KyAgICBjbGFzcyBTY29wZWRXcml0ZUxvY2tHTCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjb3BlZFdyaXRlTG9ja0dMKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlZFdyaXRl
TG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciosIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCk7CisgICAgICAgIH5TY29wZWRXcml0ZUxvY2tHTCgpOworCisgICAgICAgIHVuc2lnbmVkIHRl
eHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICAgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICAgICAgdW5z
aWduZWQgbV90ZXh0dXJlSWQ7CisgICAgfTsKKworICAgIGNsYXNzIFNjb3BlZFJlYWRMb2NrU29m
dHdhcmUgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZWFkTG9ja1NvZnR3
YXJlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlZFJlYWRMb2NrU29mdHdhcmUoQ0NSZXNv
dXJjZVByb3ZpZGVyKiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkKTsKKyAgICAgICAg
flNjb3BlZFJlYWRMb2NrU29mdHdhcmUoKTsKKworICAgICAgICBjb25zdCBTa0JpdG1hcCogc2tC
aXRtYXAoKSBjb25zdCB7IHJldHVybiAmbV9za0JpdG1hcDsgfQogCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgICAgIFNrQml0
bWFwIG1fc2tCaXRtYXA7CisgICAgfTsKKworICAgIGNsYXNzIFNjb3BlZFdyaXRlTG9ja1NvZnR3
YXJlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkV3JpdGVMb2NrU29mdHdh
cmUpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkV3JpdGVMb2NrU29mdHdhcmUoQ0NSZXNv
dXJjZVByb3ZpZGVyKiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkKTsKKyAgICAgICAg
flNjb3BlZFdyaXRlTG9ja1NvZnR3YXJlKCk7CisKKyAgICAgICAgU2tDYW52YXMqIHNrQ2FudmFz
KCkgeyByZXR1cm4gJm1fc2tDYW52YXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENDUmVz
b3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgICAgICBDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOworICAgICAgICBTa0JpdG1hcCBtX3NrQml0
bWFwOworICAgICAgICBTa0NhbnZhcyBtX3NrQ2FudmFzOworICAgIH07CisKK3ByaXZhdGU6CiAg
ICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgUmVzb3VyY2UoKQogICAgICAgICAgICAgOiBn
bElkKDApCisgICAgICAgICAgICAsIHBpeGVscygwKQogICAgICAgICAgICAgLCBwb29sKDApCiAg
ICAgICAgICAgICAsIGxvY2tGb3JSZWFkQ291bnQoMCkKICAgICAgICAgICAgICwgbG9ja2VkRm9y
V3JpdGUoZmFsc2UpCkBAIC0xNjEsOSArMjMyLDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAs
IGV4cG9ydGVkKGZhbHNlKQogICAgICAgICAgICAgLCBzaXplKCkKICAgICAgICAgICAgICwgZm9y
bWF0KDApCisgICAgICAgICAgICAsIHR5cGUoc3RhdGljX2Nhc3Q8UmVzb3VyY2VUeXBlPigwKSkK
ICAgICAgICAgeyB9CiAgICAgICAgIFJlc291cmNlKHVuc2lnbmVkIHRleHR1cmVJZCwgaW50IHBv
b2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKICAgICAgICAgICAgIDog
Z2xJZCh0ZXh0dXJlSWQpCisgICAgICAgICAgICAsIHBpeGVscygwKQorICAgICAgICAgICAgLCBw
b29sKHBvb2wpCisgICAgICAgICAgICAsIGxvY2tGb3JSZWFkQ291bnQoMCkKKyAgICAgICAgICAg
ICwgbG9ja2VkRm9yV3JpdGUoZmFsc2UpCisgICAgICAgICAgICAsIGV4dGVybmFsKGZhbHNlKQor
ICAgICAgICAgICAgLCBleHBvcnRlZChmYWxzZSkKKyAgICAgICAgICAgICwgc2l6ZShzaXplKQor
ICAgICAgICAgICAgLCBmb3JtYXQoZm9ybWF0KQorICAgICAgICAgICAgLCB0eXBlKEdMVGV4dHVy
ZSkKKyAgICAgICAgeyB9CisgICAgICAgIFJlc291cmNlKHVpbnQ4X3QqIHBpeGVscywgaW50IHBv
b2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKKyAgICAgICAgICAgIDog
Z2xJZCgwKQorICAgICAgICAgICAgLCBwaXhlbHMocGl4ZWxzKQogICAgICAgICAgICAgLCBwb29s
KHBvb2wpCiAgICAgICAgICAgICAsIGxvY2tGb3JSZWFkQ291bnQoMCkKICAgICAgICAgICAgICwg
bG9ja2VkRm9yV3JpdGUoZmFsc2UpCkBAIC0xNzEsOCArMjU2LDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAsIGV4cG9ydGVkKGZhbHNlKQogICAgICAgICAgICAgLCBzaXplKHNpemUpCiAgICAg
ICAgICAgICAsIGZvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAsIHR5cGUoQml0bWFwKQogICAg
ICAgICB7IH0KICAgICAgICAgdW5zaWduZWQgZ2xJZDsKKyAgICAgICAgdWludDhfdCogcGl4ZWxz
OwogICAgICAgICBpbnQgcG9vbDsKICAgICAgICAgaW50IGxvY2tGb3JSZWFkQ291bnQ7CiAgICAg
ICAgIGJvb2wgbG9ja2VkRm9yV3JpdGU7CkBAIC0xODAsNiArMjY3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBleHBvcnRlZDsKICAgICAgICAgSW50U2l6ZSBzaXplOwogICAgICAgICBHQzNE
ZW51bSBmb3JtYXQ7CisgICAgICAgIFJlc291cmNlVHlwZSB0eXBlOwogICAgIH07CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlc291cmNlSWQsIFJlc291cmNlPiBSZXNvdXJjZU1hcDsKICAgICBzdHJ1
Y3QgQ2hpbGQgewpAQCAtMTkyLDEzICsyODAsMTEgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBD
Q1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRleHQqKTsKICAgICBib29sIGluaXRpYWxp
emUoKTsKIAotICAgIC8vIEdldHMgYSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVz
b3VyY2UsIHRoYXQgY2FuIGJlIHJlbmRlcmVkIGludG8uCi0gICAgdW5zaWduZWQgbG9ja0Zvcldy
aXRlKFJlc291cmNlSWQpOwotICAgIHZvaWQgdW5sb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7Ci0K
LSAgICAvLyBHZXRzIGEgR0wgdGV4dHVyZSBpZCByZXByZXNlbnRpbmcgdGhlIHJlc291cmNlLCB0
aGF0IGNhbiBiZSByZW5kZXJlZCB3aXRoLgotICAgIHVuc2lnbmVkIGxvY2tGb3JSZWFkKFJlc291
cmNlSWQpOworICAgIGNvbnN0IFJlc291cmNlKiBsb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKICAg
ICB2b2lkIHVubG9ja0ZvclJlYWQoUmVzb3VyY2VJZCk7CisgICAgY29uc3QgUmVzb3VyY2UqIGxv
Y2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKKyAgICB2b2lkIHVubG9ja0ZvcldyaXRlKFJlc291cmNl
SWQpOworICAgIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2tCaXRtYXBXaXRoUmVzb3VyY2UoU2tCaXRt
YXAqLCBjb25zdCBSZXNvdXJjZSopOwogCiAgICAgYm9vbCB0cmFuc2ZlclJlc291cmNlKFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBSZXNvdXJjZUlkLCBUcmFuc2ZlcmFibGVSZXNvdXJj
ZSopOwogICAgIHZvaWQgdHJpbU1haWxib3hEZXF1ZSgpOwpAQCAtMjExLDYgKzI5Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBEZXF1ZTxNYWlsYm94PiBtX21haWxib3hlczsKIAorICAgIFJlc291cmNl
VHlwZSBtX2RlZmF1bHRSZXNvdXJjZVR5cGU7CiAgICAgYm9vbCBtX3VzZVRleHR1cmVTdG9yYWdl
RXh0OwogICAgIGJvb2wgbV91c2VUZXh0dXJlVXNhZ2VIaW50OwogICAgIGJvb2wgbV91c2VTaGFs
bG93Rmx1c2g7CkBAIC0yMTgsNTEgKzMwNSw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWF4VGV4
dHVyZVNpemU7CiB9OwogCi1jbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCk7Ci1wdWJs
aWM6Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNl
SWQpCi0gICAgICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCi0gICAg
ICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCi0gICAgICAgICwgbV90ZXh0dXJlSWQocmVz
b3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCkpCi0gICAgewotICAgICAgICBB
U1NFUlQobV90ZXh0dXJlSWQpOwotICAgIH0KLQotICAgIH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZv
clJlYWQoKQotICAgIHsKLSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFk
KG1fcmVzb3VyY2VJZCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlk
ZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgbV9yZXNvdXJjZUlkOwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotY2xhc3Mg
Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSk7Ci1wdWJsaWM6Ci0gICAgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JXcml0ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVz
b3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChy
ZXNvdXJjZUlkKQotICAgICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tG
b3JXcml0ZShyZXNvdXJjZUlkKSkgeyB9Ci0KLSAgICB+Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JX
cml0ZSgpCi0gICAgewotICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRl
KG1fcmVzb3VyY2VJZCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlk
ZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgbV9yZXNvdXJjZUlkOwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJj
ZVByb3ZpZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVzb3Vy
Y2VQcm92aWRlclRlc3QuY3BwCmluZGV4IDllODU5OWMwZjNmNjcxYjY4MGRlMGZmZDI0ODA4MDMy
ZmNmZTc4MWUuLmU1NWMzYzVkNzI0YWEzYTg0NTUxNzE1MmM0MTk3OWVmMTNhYjE2ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlk
ZXJUZXN0LmNwcApAQCAtMjg3LDIzICsyODcsMzYgQEAgcHJpdmF0ZToKICAgICBQZW5kaW5nUHJv
ZHVjZVRleHR1cmVMaXN0IG1fcGVuZGluZ1Byb2R1Y2VUZXh0dXJlczsKIH07CiAKLWNsYXNzIEND
UmVzb3VyY2VQcm92aWRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBDQ1Jl
c291cmNlUHJvdmlkZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Q0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZVR5cGU+IHsKIHB1YmxpYzoKICAgICBDQ1Jlc291cmNlUHJv
dmlkZXJUZXN0KCkKICAgICAgICAgOiBtX3NoYXJlZERhdGEoQ29udGV4dFNoYXJlZERhdGE6OmNy
ZWF0ZSgpKQogICAgICAgICAsIG1fY29udGV4dChGYWtlV2ViQ29tcG9zaXRvck91dHB1dFN1cmZh
Y2U6OmNyZWF0ZShSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6Y3JlYXRlKG1fc2hhcmVkRGF0YS5n
ZXQoKSkpKQogICAgICAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6
OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpKQogICAgIHsKKyAgICAgICAgbV9yZXNvdXJjZVByb3Zp
ZGVyLT5zZXREZWZhdWx0UmVzb3VyY2VUeXBlKEdldFBhcmFtKCkpOwogICAgIH0KIAogICAgIFJl
c291cmNlUHJvdmlkZXJDb250ZXh0KiBjb250ZXh0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVz
b3VyY2VQcm92aWRlckNvbnRleHQqPihtX2NvbnRleHQtPmNvbnRleHQzRCgpKTsgfQogCiAgICAg
dm9pZCBnZXRSZXNvdXJjZVBpeGVscyhDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQs
IGNvbnN0IEludFNpemUmIHNpemUsIFdHQzNEZW51bSBmb3JtYXQsIHVpbnQ4X3QqIHBpeGVscykK
ICAgICB7Ci0gICAgICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBsb2NrKG1fcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSwgaWQpOwotICAgICAgICBBU1NFUlRfTkUoMFUsIGxvY2sudGV4dHVy
ZUlkKCkpOwotICAgICAgICBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKTsKLSAgICAgICAgY29udGV4dCgpLT5nZXRQ
aXhlbHMoc2l6ZSwgZm9ybWF0LCBwaXhlbHMpOworICAgICAgICBpZiAoR2V0UGFyYW0oKSA9PSBD
Q1Jlc291cmNlUHJvdmlkZXI6OkdMVGV4dHVyZSkgeworICAgICAgICAgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpTY29wZWRSZWFkTG9ja0dMIGxvY2tHTChtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCks
IGlkKTsKKyAgICAgICAgICAgIEFTU0VSVF9ORSgwVSwgbG9ja0dMLnRleHR1cmVJZCgpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIGxvY2tHTC50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICBjb250ZXh0KCktPmdldFBp
eGVscyhzaXplLCBmb3JtYXQsIHBpeGVscyk7CisgICAgICAgIH0gZWxzZSBpZiAoR2V0UGFyYW0o
KSA9PSBDQ1Jlc291cmNlUHJvdmlkZXI6OkJpdG1hcCkgeworICAgICAgICAgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9ja1NvZnR3YXJlIGxvY2tTb2Z0d2FyZShtX3Jlc291cmNl
UHJvdmlkZXIuZ2V0KCksIGlkKTsKKyAgICAgICAgICAgIG1lbWNweShwaXhlbHMsIGxvY2tTb2Z0
d2FyZS5za0JpdG1hcCgpLT5nZXRQaXhlbHMoKSwgbG9ja1NvZnR3YXJlLnNrQml0bWFwKCktPmdl
dFNpemUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGV4cGVjdE51bVJlc291cmNl
cyhpbnQgY291bnQpCisgICAgeworICAgICAgICBFWFBFQ1RfRVEoY291bnQsIHN0YXRpY19jYXN0
PGludD4obV9yZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSkpOworICAgICAgICBpZiAo
R2V0UGFyYW0oKSA9PSBDQ1Jlc291cmNlUHJvdmlkZXI6OkdMVGV4dHVyZSkKKyAgICAgICAgICAg
IEVYUEVDVF9FUShjb3VudCwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7CiAgICAgfQogCiBw
cm90ZWN0ZWQ6CkBAIC0zMTMsNyArMzI2LDcgQEAgcHJvdGVjdGVkOgogICAgIE93blB0cjxDQ1Jl
c291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKIH07CiAKLVRFU1RfRihDQ1Jlc291
cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKK1RFU1RfUChDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBC
YXNpYykKIHsKICAgICBJbnRTaXplIHNpemUoMSwgMSk7CiAgICAgV0dDM0RlbnVtIGZvcm1hdCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpAQCAtMzIyLDcgKzMzNSw3IEBAIFRFU1RfRihDQ1Jl
c291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKICAgICBBU1NFUlRfRVEoNFUsIHBpeGVsU2l6ZSk7
CiAKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQgPSBtX3Jlc291cmNlUHJv
dmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwotICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0KCktPnRleHR1
cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJjZXMoMSk7CiAKICAgICB1aW50OF90IGRh
dGFbNF0gPSB7MSwgMiwgMywgNH07CiAgICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIHNpemUp
OwpAQCAtMzMzLDEwICszNDYsMTAgQEAgVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIEJh
c2ljKQogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZGF0YSwgcmVzdWx0LCBwaXhlbFNpemUpKTsK
IAogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoaWQpOwotICAgIEVYUEVD
VF9FUSgwLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJj
ZXMoMCk7CiB9CiAKLVRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBEZWxldGVPd25lZFJl
c291cmNlcykKK1RFU1RfUChDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBEZWxldGVPd25lZFJlc291
cmNlcykKIHsKICAgICBJbnRTaXplIHNpemUoMSwgMSk7CiAgICAgV0dDM0RlbnVtIGZvcm1hdCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpAQCAtMzQ1LDE2ICszNTgsMTYgQEAgVEVTVF9GKEND
UmVzb3VyY2VQcm92aWRlclRlc3QsIERlbGV0ZU93bmVkUmVzb3VyY2VzKQogICAgIGNvbnN0IGlu
dCBjb3VudCA9IDM7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAg
ICBtX3Jlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwotICAgIEVYUEVDVF9FUSgzLCBj
b250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKKyAgICBleHBlY3ROdW1SZXNvdXJjZXMoMyk7CiAK
ICAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKHBvb2wrMSk7Ci0g
ICAgRVhQRUNUX0VRKDMsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworICAgIGV4cGVjdE51
bVJlc291cmNlcygzKTsKIAogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNv
dXJjZXMocG9vbCk7Ci0gICAgRVhQRUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkp
OworICAgIGV4cGVjdE51bVJlc291cmNlcygwKTsKIH0KIAotVEVTVF9GKENDUmVzb3VyY2VQcm92
aWRlclRlc3QsIFVwbG9hZCkKK1RFU1RfUChDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQp
CiB7CiAgICAgSW50U2l6ZSBzaXplKDIsIDIpOwogICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQTsKQEAgLTQwMiwxMiArNDE1LDI4IEBAIFRFU1RfRihDQ1Jlc291
cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQpCiAgICAgICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBz
aXplLCBmb3JtYXQsIHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0
ZWQsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CiAgICAgfQorICAgIHsKKyAgICAgICAgSW50UmVjdCBv
ZmZzZXRJbWFnZVJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBzaXplKTsKKyAgICAgICAgSW50UmVj
dCBzb3VyY2VSZWN0KDEwMCwgMTAwLCAxLCAxKTsKKyAgICAgICAgSW50U2l6ZSBkZXN0T2Zmc2V0
KDEsIDApOworICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgaW1hZ2UsIG9m
ZnNldEltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdE9mZnNldCk7CisKKyAgICAgICAgdWludDhf
dCBleHBlY3RlZFsxNl0gPSB7MCwgMSwgMiwgMywgICAwLCAxLCAyLCAzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0LCA1LCA2LCA3LCAgIDAsIDEsIDIsIDN9OworICAgICAgICBn
ZXRSZXNvdXJjZVBpeGVscyhpZCwgc2l6ZSwgZm9ybWF0LCByZXN1bHQpOworICAgICAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCByZXN1bHQsIHBpeGVsU2l6ZSkpOworICAgIH0KKwog
CiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7CiB9CiAKLVRFU1Rf
RihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBUcmFuc2ZlclJlc291cmNlcykKK1RFU1RfUChDQ1Jl
c291cmNlUHJvdmlkZXJUZXN0LCBUcmFuc2ZlclJlc291cmNlcykKIHsKKyAgICAvLyBSZXNvdXJj
ZSB0cmFuc2ZlciBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIEdMIHRleHR1cmVzIGZvciBub3cuCisg
ICAgaWYgKEdldFBhcmFtKCkgIT0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpHTFRleHR1cmUpCisgICAg
ICAgIHJldHVybjsKKwogICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2hpbGRDb250ZXh0
KEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3JlYXRlKFJlc291cmNlUHJvdmlkZXJD
b250ZXh0OjpjcmVhdGUobV9zaGFyZWREYXRhLmdldCgpKSkpOwogICAgIE93blB0cjxDQ1Jlc291
cmNlUHJvdmlkZXI+IGNoaWxkUmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZShjaGlsZENvbnRleHQuZ2V0KCkpKTsKIApAQCAtNDg2LDE0ICs1MTUsMTQgQEAgVEVTVF9G
KENDUmVzb3VyY2VQcm92aWRlclRlc3QsIFRyYW5zZmVyUmVzb3VyY2VzKQogCiAgICAgUmVzb3Vy
Y2VQcm92aWRlckNvbnRleHQqIGNoaWxkQ29udGV4dDNEID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VQ
cm92aWRlckNvbnRleHQqPihjaGlsZENvbnRleHQtPmNvbnRleHQzRCgpKTsKICAgICB7Ci0gICAg
ICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBsb2NrKGNoaWxkUmVzb3VyY2VQcm92aWRl
ci5nZXQoKSwgaWQxKTsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29wZWRSZWFkTG9j
a0dMIGxvY2soY2hpbGRSZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZDEpOwogICAgICAgICBBU1NF
UlRfTkUoMFUsIGxvY2sudGV4dHVyZUlkKCkpOwogICAgICAgICBjaGlsZENvbnRleHQzRC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkp
OwogICAgICAgICBjaGlsZENvbnRleHQzRC0+Z2V0UGl4ZWxzKHNpemUsIGZvcm1hdCwgcmVzdWx0
KTsKICAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChkYXRhMSwgcmVzdWx0LCBwaXhlbFNpemUp
KTsKICAgICB9CiAgICAgewotICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9j
ayhjaGlsZFJlc291cmNlUHJvdmlkZXIuZ2V0KCksIGlkMik7CisgICAgICAgIENDUmVzb3VyY2VQ
cm92aWRlcjo6U2NvcGVkUmVhZExvY2tHTCBsb2NrKGNoaWxkUmVzb3VyY2VQcm92aWRlci5nZXQo
KSwgaWQyKTsKICAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAg
ICAgY2hpbGRDb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBsb2NrLnRleHR1cmVJZCgpKTsKICAgICAgICAgY2hpbGRDb250ZXh0M0QtPmdldFBpeGVs
cyhzaXplLCBmb3JtYXQsIHJlc3VsdCk7CkBAIC01MTksNCArNTQ4LDkgQEAgVEVTVF9GKENDUmVz
b3VyY2VQcm92aWRlclRlc3QsIFRyYW5zZmVyUmVzb3VyY2VzKQogICAgIEVYUEVDVF9FUSgwdSwg
bV9yZXNvdXJjZVByb3ZpZGVyLT5tYWlsYm94Q291bnQoKSk7CiB9CiAKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKENDUmVzb3VyY2VQcm92aWRlclRlc3RzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVz
dGluZzo6VmFsdWVzKENDUmVzb3VyY2VQcm92aWRlcjo6R0xUZXh0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpCaXRtYXAp
KTsKKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>