<?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>95109</bug_id>
          
          <creation_ts>2012-08-27 11:46:53 -0700</creation_ts>
          <short_desc>[chromium] A general mechanism for passing data into and out of appendQuads and quadCuller via CCAppendQuadsData</short_desc>
          <delta_ts>2012-08-27 16:39:38 -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>94957</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>705461</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 11:46:53 -0700</bug_when>
    <thetext>[chromium] A general mechanism for passing data into and out of appendQuads and quadCuller via CCAppendQuadsData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705500</commentid>
    <comment_count>1</comment_count>
      <attachid>160771</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 12:12:21 -0700</bug_when>
    <thetext>Created attachment 160771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705592</commentid>
    <comment_count>2</comment_count>
      <attachid>160771</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 13:25:23 -0700</bug_when>
    <thetext>Comment on attachment 160771
Patch

Attachment 160771 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13613303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705600</commentid>
    <comment_count>3</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 13:29:46 -0700</bug_when>
    <thetext>Oops I missed the new header, I&apos;ll rebase and upload again when 94957 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705632</commentid>
    <comment_count>4</comment_count>
      <attachid>160796</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 13:51:20 -0700</bug_when>
    <thetext>Created attachment 160796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705721</commentid>
    <comment_count>5</comment_count>
      <attachid>160796</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-27 15:01:48 -0700</bug_when>
    <thetext>Comment on attachment 160796
Patch

The CCQuadSinkData hierarchy feels a little bit overengineered to me and I think it&apos;s more complex than its benefits.  I understand the need to reduce plumbing churn by putting common function signature parameters into a struct.  I&apos;d prefer to see something more simple like:

struct CCAppendQuadsData
{
    bool hadMissingTiles;
    bool hadOcclusionFromOutsideTargetSurface;
    // FIXME: Hold the delegatedRenderPassId for the DelegatedRendererLayer.
};

I don&apos;t find it problematic that CCQuadCuller has a boolean about whether it has occlusion from outside the target surface.  The quad culler is stateful about the quads that have been appended to it, and this is extra information that it has calculated.  It feels no different from asking about occlusion/unocclusion in a rect or overdraw.

What do you think about having CCQuadSink::append just take a bool&amp; hadExternalOcclusion? Alternatively, CCQuadSink::hasExternalOcclusion()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705725</commentid>
    <comment_count>6</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 15:05:18 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 160796 [details])
&gt; The CCQuadSinkData hierarchy feels a little bit overengineered to me and I think it&apos;s more complex than its benefits.  I understand the need to reduce plumbing churn by putting common function signature parameters into a struct.  I&apos;d prefer to see something more simple like:
&gt; 
&gt; struct CCAppendQuadsData
&gt; {
&gt;     bool hadMissingTiles;
&gt;     bool hadOcclusionFromOutsideTargetSurface;
&gt;     // FIXME: Hold the delegatedRenderPassId for the DelegatedRendererLayer.
&gt; };
&gt; 
&gt; I don&apos;t find it problematic that CCQuadCuller has a boolean about whether it has occlusion from outside the target surface.  The quad culler is stateful about the quads that have been appended to it, and this is extra information that it has calculated.  It feels no different from asking about occlusion/unocclusion in a rect or overdraw.
&gt; 
&gt; What do you think about having CCQuadSink::append just take a bool&amp; hadExternalOcclusion? Alternatively, CCQuadSink::hasExternalOcclusion()?

I feel like the hadExternalOcclusion information is very similar to hadMissingTiles, but they are channeled through completely different paths. I like append() taking a bool&amp; more, but we&apos;re just getting more and more parameters to CCLayerImpl::appendQuads(quadSink, bool&amp;, bool&amp;, CCRenderPassList&amp;) and so on into the sunset.

We could just use a CCAppendQuadsData struct and have QuadSink take that. I was just trying to keep it more abstract-y.. for better or worse. Would that feel better to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705753</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-27 15:27:40 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; I feel like the hadExternalOcclusion information is very similar to hadMissingTiles, but they are channeled through completely different paths. I like append() taking a bool&amp; more, but we&apos;re just getting more and more parameters to CCLayerImpl::appendQuads(quadSink, bool&amp;, bool&amp;, CCRenderPassList&amp;) and so on into the sunset.

...but CCQuadSink won&apos;t need an additional parameter in the future, though.  CCLayerImpl::appendQuads could continue taking CCAppendQuadsData&amp; which could expand later, but the underlying CCQuadSink::append function could just take a bool&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705758</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 15:28:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; 
&gt; &gt; I feel like the hadExternalOcclusion information is very similar to hadMissingTiles, but they are channeled through completely different paths. I like append() taking a bool&amp; more, but we&apos;re just getting more and more parameters to CCLayerImpl::appendQuads(quadSink, bool&amp;, bool&amp;, CCRenderPassList&amp;) and so on into the sunset.
&gt; 
&gt; ...but CCQuadSink won&apos;t need an additional parameter in the future, though.  CCLayerImpl::appendQuads could continue taking CCAppendQuadsData&amp; which could expand later, but the underlying CCQuadSink::append function could just take a bool&amp;.

Oh I see. But then every layer has to unpack the bool&amp; from the struct in order to call append, instead of just passing along the forward-declared struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705767</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-27 15:32:19 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; 
&gt; &gt; &gt; I feel like the hadExternalOcclusion information is very similar to hadMissingTiles, but they are channeled through completely different paths. I like append() taking a bool&amp; more, but we&apos;re just getting more and more parameters to CCLayerImpl::appendQuads(quadSink, bool&amp;, bool&amp;, CCRenderPassList&amp;) and so on into the sunset.
&gt; &gt; 
&gt; &gt; ...but CCQuadSink won&apos;t need an additional parameter in the future, though.  CCLayerImpl::appendQuads could continue taking CCAppendQuadsData&amp; which could expand later, but the underlying CCQuadSink::append function could just take a bool&amp;.
&gt; 
&gt; Oh I see. But then every layer has to unpack the bool&amp; from the struct in order to call append, instead of just passing along the forward-declared struct.

It&apos;s true.  Although, that way only CCLayerImpl really has to know about CCAppendQuadsData?

If you don&apos;t like that, I think I&apos;m also ok with your other suggestion of CCQuadSink just taking a CCAppendQuadsData&amp;.  It seems about equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705795</commentid>
    <comment_count>10</comment_count>
      <attachid>160831</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 15:44:29 -0700</bug_when>
    <thetext>Created attachment 160831
Patch

simplified to a single struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705822</commentid>
    <comment_count>11</comment_count>
      <attachid>160831</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-27 16:01:04 -0700</bug_when>
    <thetext>Comment on attachment 160831
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705864</commentid>
    <comment_count>12</comment_count>
      <attachid>160831</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 16:39:35 -0700</bug_when>
    <thetext>Comment on attachment 160831
Patch

Clearing flags on attachment: 160831

Committed r126819: &lt;http://trac.webkit.org/changeset/126819&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705865</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 16:39:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160771</attachid>
            <date>2012-08-27 12:12:21 -0700</date>
            <delta_ts>2012-08-27 13:51:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95109-20120827151212.patch</filename>
            <type>text/plain</type>
            <size>59464</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMzNDJmZDA4MzVkZTY3
MzU3MmNiNWU5Y2I1NDdhZWFkMjEzNzJmYS4uYTNjZjQ2YjM4MWJkMTczM2RiZGE3OWZlNzY0NzFl
MDM4MzU3NmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA4LTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQSBn
ZW5lcmFsIG1lY2hhbmlzbSBmb3IgcGFzc2luZyBkYXRhIGludG8gYW5kIG91dCBvZiBhcHBlbmRR
dWFkcyBhbmQgcXVhZEN1bGxlciB2aWEgQ0NBcHBlbmRRdWFkc0RhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGFwcGVuZFF1YWRzKCkgbWV0aG9k
IGhhcyBhIG51bWJlciBvZiBvdXQtcGFyYW1ldGVycyB0aGF0IGFyZSBuZWVkZWQKKyAgICAgICAg
YnkgZGlmZmVyZW50IHN0ZXBzIGluIHRoZSBhcHBlbmQgcHJvY2VzczoKKyAgICAgICAgLSBoYWRN
aXNzaW5nVGlsZXMgaXMgbmVlZGVkIGJ5IHRoZSBsYXllcnMgdG8gcmVwb3J0IGNoZWNrZXJib2Fy
ZHMuCisgICAgICAgIC0gaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIGlzIG5l
ZWRlZCBieSBDQ1F1YWRDdWxsZXIgdG8KKyAgICAgICAgcmVwb3J0IG9jY2x1c2lvbi4KKworICAg
ICAgICBDdXJyZW50bHkgb25lIGlzIHBsdW1iZWQgdGhyb3VnaCBmdW5jdGlvbiBhcmd1bWVudHMs
IGFuZCBvbmUgaXMKKyAgICAgICAgcGx1bWJlZCBhcyBhIG1lbWJlciB2YXJpYWJsZSBvbiB0aGUg
Q0NRdWFkQ3VsbGVyIGluc3RhbmNlLgorCisgICAgICAgIFdlIHdpbGwgYWxzbyBuZWVkIGFuIGlu
LXBhcmFtZXRlciBmb3IgdGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgZm9yCisgICAgICAgIHVi
ZXJjb21wLiBJbnN0ZWFkIG9mIGNvbnRpbnVvdXNseSBhZGRpbmcgbW9yZSBwbHVtYmluZyBmb3Ig
dGhlc2UKKyAgICAgICAgcGFyYW1ldGVycywgd2UgY3JlYXRlIGEgZ2VuZXJhbCBtYWNoYW5pc20g
dG8gZ2V0IGRhdGEgdG8gYW5kIGZyb20gdGhlCisgICAgICAgIHJpZ2h0IHBsYWNlcy4KKworICAg
ICAgICBDQ1F1YWRTaW5rIHRha2VzIGFzIGlucHV0IGEgQ0NRdWFkU2lua0RhdGEuIENDUXVhZEN1
bGxlciBoYXMgb3V0cHV0cworICAgICAgICBzcGVjaWZpYyB0byBpdCwgc28gaXQgb3ZlcnJpZGVz
IHRoaXMgYW5kIHJlcXVpcmVzIGFzIGlucHV0IGEKKyAgICAgICAgQ0NRdWFkQ3VsbGVyRGF0YS4g
VGhlIGFwcGVuZFF1YWRzKCkgbWV0aG9kIGhhcyBmdXJ0aGVyIG91dHB1dHMsIGFuZAorICAgICAg
ICBzbyBleHRlbmRzIHRoaXMgdG8gYmUgQ0NBcHBlbmRRdWFkc0RhdGEsIHdoaWNoIGNhbiBiZSBw
YXNzZWQgYWxvbmcKKyAgICAgICAgdG8gdGhlIENDUXVhZEN1bGxlciBhcyB3ZWxsLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHM7IG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuIFNw
ZWNpZmljYWxseSwKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbCB0ZXN0cyBmb3IgbWlzc2lu
Zy9jaGVja2VyYm9hcmQgdGlsZXMgYW5kCisgICAgICAgIHN1cmZhY2UtZXh0ZXJuYWwgb2NjbHVz
aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oOgorICAgICAgICAoQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1cmZh
Y2VMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oOgorICAgICAgICAoQ0NJT1N1cmZhY2VM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBlbmREZWJ1Z0Jv
cmRlclF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1F1YWRDdWxsZXI6OkNDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxs
ZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVh
ZEN1bGxlckRhdGE6OkNDUXVhZEN1bGxlckRhdGEpOgorICAgICAgICAoQ0NRdWFkQ3VsbGVyRGF0
YSk6CisgICAgICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZFNpbmtE
YXRhOjpDQ1F1YWRTaW5rRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUXVh
ZFNpbmspOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJl
bmRlclN1cmZhY2VMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVy
UGFzcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVh
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxi
YXJMYXllckltcGwuaDoKKyAgICAgICAgKENDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmg6CisgICAgICAgIChDQ1NvbGlkQ29sb3JMYXllckltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaDoKKyAg
ICAgICAgKENDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rp
bGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxlZExheWVySW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5oOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDgtMjcgIEtldmlu
IEZ1bmsgIDxrZXZpbi5mdW5rQGtkYWIuY29tPgogCiAgICAgICAgIEZpeCBjb21waWxhdGlvbiB3
aGVuIGJvdGggT1MoV0lOQ0UpIGFuZCBQTEFURk9STShRVCkgYXJlIHRydWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggYjdlNGQ1MDNhMDQyYTc2MGJiMDgzOTMzZTYzYTA0MmVlM2FiMzYx
Mi4uMGNjZjgyZTBhNTU1MmNjMzdlOGM5MTkzMzJlMmJiMTk5MTBlY2I3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wOC0yNyAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEEgZ2VuZXJhbCBt
ZWNoYW5pc20gZm9yIHBhc3NpbmcgZGF0YSBpbnRvIGFuZCBvdXQgb2YgYXBwZW5kUXVhZHMgYW5k
IHF1YWRDdWxsZXIgdmlhIENDQXBwZW5kUXVhZHNEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byB1c2UgdGhlIG5ldyBkYXRh
IHN0cnVjdHVyZXMuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgICog
dGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NSZW5kZXJTdXJm
YWNlVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5j
cHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgICogdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRF
U1QpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmdldFF1YWRzKToKKyAgICAgICAgKiB0
ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmg6CisKIDIwMTItMDgtMjcgIEp1c3RpbiBOb3Zvc2FkICA8
anVub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50aW5nIGEg
Z2xvYmFsIGxpbWl0IG9uIG1lbW9yeSBjb25zdW1lZCBieSBkZWZlcnJlZCAyRCBjYW52YXNlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcAppbmRleCA5
OWRmMGVhNTdlYmM5YWUzNzcxNTg2ZDY4MWMxMmZiNzY3MzM1MzZiLi5jMzM4NzU5YzQ5NGJiY2Yz
MjIxZjVmNDg0YjY5YjkzMzAzM2E5ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAKICNpbmNsdWRlICJD
Q0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0
YS5oIgogI2luY2x1ZGUgIkNDRGVidWdSZWN0SGlzdG9yeS5oIgogI2luY2x1ZGUgIkNDRm9udEF0
bGFzLmgiCiAjaW5jbHVkZSAiQ0NGcmFtZVJhdGVDb3VudGVyLmgiCiAjaW5jbHVkZSAiQ0NMYXll
clRyZWVIb3N0SW1wbC5oIgotI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJDQ1Rl
eHR1cmVEcmF3UXVhZC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpCiAgICAgICAgIG1faHVkVGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1w
bFBvb2wsIGJvdW5kcygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogfQogCi12b2lkIENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKK3ZvaWQgQ0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIEND
QXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgaWYgKCFtX2h1ZFRleHR1
cmUtPmlkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIENDSGVh
ZHNVcERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBi
b29sJikKICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAgICAgRmxvYXRSZWN0
IHV2UmVjdCgwLCAwLCAxLCAxKTsKICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKLSAgICBxdWFk
U2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCBtX2h1ZFRleHR1cmUtPmlkKCksIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBm
bGlwcGVkKSk7CisgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9odWRUZXh0dXJlLT5pZCgpLCBwcmVtdWx0aXBs
aWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCksIGFwcGVuZFF1YWRzRGF0YSk7CiB9CiAKIHZvaWQg
Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6dXBkYXRlSHVkVGV4dHVyZShDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsLmgKaW5kZXggZjdkNDc3ZmZmOThkZTA3OTYwZmFiMzA3ZjI1MTBjNzBhODA0
M2Y4NS4uYTRkZDc0MTgzZjZmNWNhMWM5ZTM2YjI4YzIwODE1YTE1YWUwNTgzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4p
OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFk
TWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYsIENDQXBwZW5kUXVhZHNEYXRhJikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVI
dWRUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3
KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3Vy
ZmFjZUxheWVySW1wbC5jcHAKaW5kZXggOWY2OWUyMzhmMjdlOTRiOTA1NTE3ZTUxOGVhY2Q5NTBj
ZmNkN2UzYi4uYjI3NDFlZDhjOTA4ODgzOGQ5ODcwZWJhNDA1NjU2OTFjYjlhN2Q4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcApAQCAtMjksMTAgKzI5LDEwIEBA
CiAKICNpbmNsdWRlICJDQ0lPU3VyZmFjZUxheWVySW1wbC5oIgogCisjaW5jbHVkZSAiQ0NBcHBl
bmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJDQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkNDSU9TdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3RJbXBsLmgi
Ci0jaW5jbHVkZSAiQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgIkNDUmVuZGVyZXJHTC5oIiAvLyBG
b3IgdGhlIEdMQygpIG1hY3JvLgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKQEAgLTk2LDEzICs5NiwxMyBAQCB2b2lkIENDSU9TdXJmYWNlTGF5ZXJJ
bXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAg
fQogfQogCi12b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkU2luaywgYm9vbCYpCit2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0
YSkKIHsKICAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNpbmsu
dXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKLSAgICBhcHBlbmRE
ZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisgICAgYXBwZW5kRGVi
dWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUsIGFwcGVuZFF1YWRzRGF0YSk7
CiAKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0g
ICAgcXVhZFNpbmsuYXBwZW5kKENDSU9TdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCBtX2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlVGV4dHVyZUlkLCBD
Q0lPU3VyZmFjZURyYXdRdWFkOjpGbGlwcGVkKSk7CisgICAgcXVhZFNpbmsuYXBwZW5kKENDSU9T
dXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2lvU3Vy
ZmFjZVNpemUsIG1faW9TdXJmYWNlVGV4dHVyZUlkLCBDQ0lPU3VyZmFjZURyYXdRdWFkOjpGbGlw
cGVkKSwgYXBwZW5kUXVhZHNEYXRhKTsKIH0KIAogdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6
ZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SU9TdXJmYWNlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCmluZGV4IDNhNTViZjJlMmU2ZjJhZjMz
MDRlMDAwNzVhZmQzODM3MjJlNDc5YTAuLmZiYmMwNGZiY2E0NGMyMzhhMGZkYmQ3MjI3ODA4ZTUz
NjI3MDFlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaApAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5z
aWduZWQgaW9TdXJmYWNlSWQsIGNvbnN0IEludFNpemUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5kUXVhZHNE
YXRhJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVBy
b3ZpZGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZF
UlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggZTZkZTAwZTI0MTgzMjliOTE1Mjk4
OWU1MzIzNWNhZjNjNzZhMDdkMi4uODVhMGM0ZGZjNTYzNGQwMjI0MWRjZDZiZjA4MzhkYjExYjFi
Y2Y1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNp
bmNsdWRlICJDQ0xheWVySW1wbC5oIgogCisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIK
ICNpbmNsdWRlICJDQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJDQ0xheWVyU29y
dGVyLmgiCiAjaW5jbHVkZSAiQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgIkNDUHJveHkuaCIKLSNp
bmNsdWRlICJDQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiQ0NTY3JvbGxiYXJBbmltYXRpb25Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQu
aCIKQEAgLTE2NiwxMyArMTY2LDEzIEBAIHZvaWQgQ0NMYXllckltcGw6OmRpZERyYXcoQ0NSZXNv
dXJjZVByb3ZpZGVyKikKICNlbmRpZgogfQogCi12b2lkIENDTGF5ZXJJbXBsOjphcHBlbmREZWJ1
Z0JvcmRlclF1YWQoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUpIGNvbnN0Cit2b2lkIENDTGF5ZXJJbXBsOjphcHBlbmREZWJ1Z0Jv
cmRlclF1YWQoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpIGNvbnN0
CiB7CiAgICAgaWYgKCFoYXNEZWJ1Z0JvcmRlcnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIGNvbnRlbnRSZWN0LCBkZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVyV2lkdGgoKSkp
OworICAgIHF1YWRMaXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0LCBkZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVy
V2lkdGgoKSksIGFwcGVuZFF1YWRzRGF0YSk7CiB9CiAKIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBDQ0xheWVySW1wbDo6Y29udGVudHNSZXNvdXJjZUlkKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCmluZGV4IGUxMmIxYjFhN2MxZTk3ZDAxNDM5OGMzMzIzNzljMzg5Yzc0YWUxYjYu
LjA3MWY4MDNmMDM0OGYzMDA5ZjFiYzIwNmNkNTAwMjRiYzhmNTBiZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NJbnB1dEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkNDUXVh
ZEN1bGxlci5oIgogI2luY2x1ZGUgIkNDUmVuZGVyU3VyZmFjZS5oIgogI2luY2x1ZGUgIkNDUmVz
b3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkNDU2hhcmVkUXVhZFN0YXRlLmgiCkBAIC00OCwx
MSArNDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NMYXllclNvcnRlcjsKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ1JlbmRlcmVyOwotY2xhc3MgQ0NRdWFk
U2luazsKIGNsYXNzIENDU2Nyb2xsYmFyQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIENDU2Ny
b2xsYmFyTGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAorc3RydWN0IENDQXBwZW5k
UXVhZHNEYXRhOworCiBjbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZShpbnQgaWQpCkBAIC05NSw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB0
aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92
ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNz
IHZlcnNpb24uCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciop
OwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlz
c2luZ1RpbGVzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IENDQXBwZW5kUXVhZHNEYXRhJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNv
dXJjZVByb3ZpZGVyKik7CiAKICAgICB2aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdDsKQEAgLTI3NCw3ICsyNzYsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXllckltcGwoaW50KTsKIAotICAgIHZv
aWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSopIGNvbnN0OworICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIENDQXBwZW5kUXVhZHNEYXRhJikgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgd3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYsIGlu
dCBpbmRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA3
MDEwNTUwYjMyZjhlZTg2NzI2ZDAwYzRmYWUzMGI5OGUzZjJkNzc1Li4yNThmYzliMWUyZWE0ZjEz
ZTA4Y2E3MzVmZjVmNjMzMzQ0ODgxZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdElt
cGwuaCIKIAogI2luY2x1ZGUgIkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUg
IkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NEYW1hZ2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgiCiAjaW5jbHVkZSAiQ0NEZWxheUJhc2VkVGltZVNv
dXJjZS5oIgpAQCAtMzEyLDI2ICszMTMsMjkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBmb3IgKENDTGF5ZXJJ
dGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbihmcmFtZS5yZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIENDUmVuZGVyU3Vy
ZmFjZSogcmVuZGVyU3VyZmFjZSA9IGl0LnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5k
ZXJTdXJmYWNlKCk7CiAgICAgICAgIENDUmVuZGVyUGFzcyogcGFzcyA9IHN1cmZhY2VQYXNzTWFw
LmdldChyZW5kZXJTdXJmYWNlKTsKLSAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxz
ZTsKIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwogCisgICAgICAg
IENDQXBwZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YTsKKwogICAgICAgICBpZiAoaXQucmVw
cmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkgewogICAgICAgICAgICAgQ0NSZW5k
ZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KGl0LT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJT
dXJmYWNlTGF5ZXIoKml0LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLCAmb2NjbHVzaW9uVHJhY2tl
cik7CisgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigq
aXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFk
c0RhdGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQt
PnZpc2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBoYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7Ci0gICAgICAgICAgICBpZiAob2NjbHVz
aW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlQ29udGVudFJlY3QoKSwgJmhhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKQotICAgICAgICAgICAgICAgICAg
ICBwYXNzLT5zZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAob2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlQ29u
dGVudFJlY3QoKSwgJmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkpCisgICAg
ICAgICAgICAgICAgYXBwZW5kUXVhZHNEYXRhLmhhZE9jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZSB8PSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CisgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpdC0+d2lsbERyYXcobV9yZXNvdXJjZVByb3Zp
ZGVyLmdldCgpKTsKICAgICAgICAgICAgICAgICBmcmFtZS53aWxsRHJhd0xheWVycy5hcHBlbmQo
Kml0KTsKLSAgICAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9j
Y2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgICAgICAgICAgcGFzcy0+
YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFkc0Rh
dGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGhhZE1pc3NpbmdU
aWxlcykgeworICAgICAgICBpZiAoYXBwZW5kUXVhZHNEYXRhLmhhZE9jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgICAgIHBhc3MtPnNldEhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSh0cnVlKTsKKworICAgICAgICBpZiAoYXBwZW5kUXVhZHNEYXRh
LmhhZE1pc3NpbmdUaWxlcykgewogICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1Ry
YW5zZm9ybSA9IGl0LT5zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRy
YXdUcmFuc2Zvcm1Jc0FuaW1hdGluZygpOwogICAgICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0
aW5nVHJhbnNmb3JtKQogICAgICAgICAgICAgICAgIGRyYXdGcmFtZSA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNzhhMGJkOWVjMDM1OThjNjQ3OTQ5NjBhOTg4ODE0YTg1
YjZkM2JlOC4uNzEwZTYyMTljOTRlMzhkMzFjYzIwMGJiNmI3OTQyNmMwMDYyYWY3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC01Niw3ICs1Niw2IEBAIENDUXVhZEN1bGxlcjo6Q0NR
dWFkQ3VsbGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3QmIHNo
YXJlZFF1CiAgICAgLCBtX29jY2x1c2lvblRyYWNrZXIob2NjbHVzaW9uVHJhY2tlcikKICAgICAs
IG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyhzaG93Q3VsbGluZ1dpdGhEZWJ1Z0Jv
cmRlclF1YWRzKQogICAgICwgbV9mb3JTdXJmYWNlKGZvclN1cmZhY2UpCi0gICAgLCBtX2hhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShmYWxzZSkKIHsKIH0KIApAQCAtOTMsOCAr
OTIsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXBwZW5kUXVhZEludGVybmFsKFBhc3NPd25QdHI8
Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkLCBjb25zdAogICAgIHJldHVybiBrZWVwUXVhZDsKIH0K
IAotYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NE
cmF3UXVhZCkKK2Jvb2wgQ0NRdWFkQ3VsbGVyOjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFk
PiBwYXNzRHJhd1F1YWQsIENDUXVhZFNpbmtEYXRhJiBxdWFkU2lua0RhdGEpCiB7CisgICAgQVNT
RVJUKHF1YWRTaW5rRGF0YS50eXBlICYgQ0NRdWFkQ3VsbGVyRGF0YVR5cGUpOwogICAgIEFTU0VS
VChwYXNzRHJhd1F1YWQtPnNoYXJlZFF1YWRTdGF0ZSgpID09IG1fY3VycmVudFNoYXJlZFF1YWRT
dGF0ZSk7CiAgICAgQVNTRVJUKHBhc3NEcmF3UXVhZC0+c2hhcmVkUXVhZFN0YXRlSWQoKSA9PSBt
X2N1cnJlbnRTaGFyZWRRdWFkU3RhdGUtPmlkKTsKICAgICBBU1NFUlQoIW1fc2hhcmVkUXVhZFN0
YXRlTGlzdC5pc0VtcHR5KCkpOwpAQCAtMTA3LDcgKzEwNyw5IEBAIGJvb2wgQ0NRdWFkQ3VsbGVy
OjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpCiAgICAgICAgIGN1
bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJm
YWNlQ29udGVudFJlY3QobV9sYXllciwgZmFsc2UsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSwg
Jmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSk7CiAgICAgZWxzZQogICAgICAg
ICBjdWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
bV9sYXllciwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNp
ZGVUYXJnZXRTdXJmYWNlKTsKLSAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSB8PSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CisKKyAgICBDQ1F1
YWRDdWxsZXJEYXRhJiBxdWFkQ3VsbGVyRGF0YSA9IHN0YXRpY19jYXN0PENDUXVhZEN1bGxlckRh
dGEmPihxdWFkU2lua0RhdGEpOworICAgIHF1YWRDdWxsZXJEYXRhLmhhZE9jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZh
Y2U7CiAKICAgICByZXR1cm4gYXBwZW5kUXVhZEludGVybmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVk
UmVjdCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9uVHJhY2tlciwgbV9zaG93Q3VsbGluZ1dpdGhE
ZWJ1Z0JvcmRlclF1YWRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggN2ZkOGVmYmU0
ODY4YmUxMGNiZmUzMThkYzc1OTJmMjQzZDU3ODJhNy4uY2IzZDczNGE3ZTFiNDc3NjNjOTM2MTJm
NzZmODE3NTdmMjc1YTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTI4LDEzICsyOCwz
MCBAQAogCiAjaW5jbHVkZSAiQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5o
IgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwog
Y2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ1JlbmRlclN1cmZhY2U7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFN1cmZhY2VUeXBlPgogY2xhc3MgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTsKIAorc3RydWN0IENDUXVhZEN1bGxlckRhdGEgOiBwdWJsaWMgQ0NRdWFkU2lu
a0RhdGEgeworICAgIGVudW0geyBDQ1F1YWRDdWxsZXJEYXRhVHlwZSA9IDIgfTsKKworICAgIEND
UXVhZEN1bGxlckRhdGEoKQorICAgICAgICA6IENDUXVhZFNpbmtEYXRhKCkKKyAgICAgICAgLCBo
YWRPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoZmFsc2UpCisgICAgeworICAgICAg
ICBDT01QSUxFX0FTU0VSVChDQ1F1YWRDdWxsZXJEYXRhVHlwZSA9PSBDQ1F1YWRTaW5rRGF0YVR5
cGUgPDwgMSwgQ0NRdWFkQ3VsbGVyRGF0YVR5cGUpOworICAgICAgICB0eXBlIHw9IENDUXVhZEN1
bGxlckRhdGFUeXBlOworICAgIH0KKworICAgIC8vIFNldCBieSB0aGUgUXVhZEN1bGxlci4KKyAg
ICBib29sIGhhZE9jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKK307CisKIGNsYXNz
IENDUXVhZEN1bGxlciA6IHB1YmxpYyBDQ1F1YWRTaW5rIHsKIHB1YmxpYzoKICAgICBDQ1F1YWRD
dWxsZXIoQ0NRdWFkTGlzdCYsIENDU2hhcmVkUXVhZFN0YXRlTGlzdCYsIENDTGF5ZXJJbXBsKiwg
Y29uc3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNl
PiosIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNl
KTsKQEAgLTQyLDkgKzU5LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NRdWFkU2luayBpbXBsZW1l
bnRhdGlvbi4KICAgICB2aXJ0dWFsIENDU2hhcmVkUXVhZFN0YXRlKiB1c2VTaGFyZWRRdWFkU3Rh
dGUoUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCBhcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPikgT1ZFUlJJREU7Ci0KLSAgICBib29s
IGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIHsgcmV0dXJuIG1faGFzT2Nj
bHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CisgICAgdmlydHVhbCBib29sIGFwcGVu
ZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+LCBDQ1F1YWRTaW5rRGF0YSYpIE9WRVJSSURFOwogCiBw
cml2YXRlOgogICAgIENDUXVhZExpc3QmIG1fcXVhZExpc3Q7CkBAIC01NCw3ICs2OSw2IEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NS
ZW5kZXJTdXJmYWNlPiogbV9vY2NsdXNpb25UcmFja2VyOwogICAgIGJvb2wgbV9zaG93Q3VsbGlu
Z1dpdGhEZWJ1Z0JvcmRlclF1YWRzOwogICAgIGJvb2wgbV9mb3JTdXJmYWNlOwotICAgIGJvb2wg
bV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRT
aW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRTaW5rLmgKaW5kZXggMDliZGQwYWUyOWQyNGQ1ZjQxZjA2MDgyMzU5ZTQ4NTU1ZjMzYjE3OC4u
NmMwNDRmZTY3Mzc5YWQxYjAxMDYwYTVhOTZjOTJkMmQyODM2ZDE4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNp
bmsuaApAQCAtMzQsNiArMzQsMTMgQEAgY2xhc3MgQ0NEcmF3UXVhZDsKIAogc3RydWN0IENDU2hh
cmVkUXVhZFN0YXRlOwogCitzdHJ1Y3QgQ0NRdWFkU2lua0RhdGEgeworICAgIGVudW0geyBDQ1F1
YWRTaW5rRGF0YVR5cGUgPSAxIH07CisgICAgaW50IHR5cGU7CisKKyAgICBDQ1F1YWRTaW5rRGF0
YSgpIDogdHlwZShDQ1F1YWRTaW5rRGF0YVR5cGUpIHsgfQorfTsKKwogY2xhc3MgQ0NRdWFkU2lu
ayB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NRdWFkU2luaygpIHsgfQpAQCAtNDMsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDQ1NoYXJlZFF1YWRTdGF0ZSogdXNlU2hhcmVkUXVh
ZFN0YXRlKFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+KSA9IDA7CiAKICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxpc3QsIGFuZCBmYWxzZSBpZiB0
aGUgcXVhZCBpcyBlbnRpcmVseSBjdWxsZWQuCi0gICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNz
T3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBh
cHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQsIENDUXVhZFNpbmtEYXRh
JikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMDRmZTkxODAy
OWQ5YTgwNDk5ZjE0ZTEwY2M1NjRhNTNjMjUyNTg4Yy4uYzhjMzMzZTM2OTQ3MjRhYjhmODY5MjVk
ZWFiMjEzYmRiMjc1MjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC01MywzMSAr
NTMsMjcgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoaW50IGlkLCBJbnRSZWN0IG91dHB1
dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3IKICAgICBBU1NFUlQoaWQgPiAwKTsKIH0K
IAotdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqIGxh
eWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29sJiBoYWRN
aXNzaW5nVGlsZXMpCit2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xh
eWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIs
IENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgY29uc3QgYm9vbCBm
b3JTdXJmYWNlID0gZmFsc2U7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlz
dCwgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXIt
Pmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKIAotICAgIGxheWVyLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwotCi0gICAgbV9oYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5oYXNPY2NsdXNpb25Gcm9tT3V0c2lk
ZVRhcmdldFN1cmZhY2UoKTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgYXBw
ZW5kUXVhZHNEYXRhKTsKIH0KIAotdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVu
ZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NSZW5kZXJQYXNzKiBj
b250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25U
cmFja2VyKQordm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxh
eWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdS
ZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBDQ0Fw
cGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQogewogICAgIGNvbnN0IGJvb2wgZm9yU3Vy
ZmFjZSA9IHRydWU7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbV9z
aGFyZWRRdWFkU3RhdGVMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0Rl
YnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKIAogICAgIGJvb2wgaXNSZXBsaWNhID0gZmFsc2U7
Ci0gICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaXNS
ZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKKyAgICBsYXllci0+cmVuZGVy
U3VyZmFjZSgpLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBhcHBlbmRRdWFkc0RhdGEsIGlzUmVw
bGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7CiAKICAgICAvLyBBZGQgcmVwbGlj
YSBhZnRlciB0aGUgc3VyZmFjZSBzbyB0aGF0IGl0IGFwcGVhcnMgYmVsb3cgdGhlIHN1cmZhY2Uu
CiAgICAgaWYgKGxheWVyLT5oYXNSZXBsaWNhKCkpIHsKICAgICAgICAgaXNSZXBsaWNhID0gdHJ1
ZTsKLSAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKKyAgICAgICAgbGF5
ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgYXBwZW5kUXVhZHNE
YXRhLCBpc1JlcGxpY2EsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MtPmlkKCkpOwogICAgIH0KLQot
ICAgIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IHF1YWRDdWxsZXIu
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCk7CiB9CiAKIHZvaWQgQ0NSZW5k
ZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9vdExheWVyLCBT
a0NvbG9yIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1w
bCYgb2NjbHVzaW9uVHJhY2tlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNGFhYWY0NzE3
NTlkZmI4YjljODNjYWY3ZjMxNmY3NGY1ZmIxNThmZi4uOWViZWQxYmQ1ZGU4ZjBhZGNlZTViMjlk
NzYwNzJlNzU2ODMxYWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTQxLDYgKzQxLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ1JlbmRl
clN1cmZhY2U7CiAKK3N0cnVjdCBDQ0FwcGVuZFF1YWRzRGF0YTsKKwogLy8gQSBsaXN0IG9mIEND
RHJhd1F1YWQgb2JqZWN0cywgc29ydGVkIGludGVybmFsbHkgaW4gZnJvbnQtdG8tYmFjayBvcmRl
ci4KIGNsYXNzIENDUXVhZExpc3QgOiBwdWJsaWMgVmVjdG9yPE93blB0cjxDQ0RyYXdRdWFkPiA+
IHsKIHB1YmxpYzoKQEAgLTYwLDggKzYyLDggQEAgY2xhc3MgQ0NSZW5kZXJQYXNzIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0ZShpbnQgaWQsIElu
dFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsKIAotICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihD
Q0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpOwotICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllcklt
cGwqLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVz
aW9uVHJhY2tlckltcGwqKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllcklt
cGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKKyAgICB2
b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiwgY29uc3Qg
Q0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzVG9GaWxsU2Ny
ZWVuKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIFNrQ29sb3Igc2NyZWVuQmFja2dyb3VuZENvbG9y
LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0
JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuY3BwCmluZGV4IDUwMjM0YWNhM2FmMWNiMTljODU0N2ExY2UxZTg4ODk1MWFj
Y2RmNTEuLjA4OGRlOWQzNjE3YzhmOTk0YTAxYTllZGYyZjNjZGE0YWRmN2ZlMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNpbmNsdWRl
ICJDQ1JlbmRlclN1cmZhY2UuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAj
aW5jbHVkZSAiQ0NEYW1hZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ01hdGhVdGlsLmgi
Ci0jaW5jbHVkZSAiQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgIkNDUmVuZGVyUGFzc0RyYXdRdWFk
LmgiCiAjaW5jbHVkZSAiQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGlubGluZSBJbnRSZWN0IGNvbXB1dGVDbGlw
cGVkUmVjdEluVGFyZ2V0KGNvbnN0IENDTGF5ZXJJbXBsKiBvd25pbmdMYXllcikKICAgICByZXR1
cm4gY2xpcHBlZFJlY3RJblRhcmdldDsKIH0KIAotdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQ
YXNzSWQpCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVh
ZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEsIGJvb2wgZm9yUmVwbGlj
YSwgaW50IHJlbmRlclBhc3NJZCkKIHsKICAgICBBU1NFUlQoIWZvclJlcGxpY2EgfHwgbV9vd25p
bmdMYXllci0+aGFzUmVwbGljYSgpKTsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuCiAgICAgICAgIGludCBncmVlbiA9IGZvclJlcGxpY2EgPyAgZGVidWdSZXBs
aWNhQm9yZGVyQ29sb3JHcmVlbiA6IGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yR3JlZW47CiAgICAg
ICAgIGludCBibHVlID0gZm9yUmVwbGljYSA/IGRlYnVnUmVwbGljYUJvcmRlckNvbG9yQmx1ZSA6
IGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yQmx1ZTsKICAgICAgICAgU2tDb2xvciBjb2xvciA9IFNr
Q29sb3JTZXRBUkdCKGRlYnVnU3VyZmFjZUJvcmRlckFscGhhLCByZWQsIGdyZWVuLCBibHVlKTsK
LSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRlcldp
ZHRoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VC
b3JkZXJXaWR0aCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEJ5
IHVzaW5nIHRoZSBzYW1lIFJlbmRlclN1cmZhY2UgZm9yIGJvdGggdGhlIGNvbnRlbnQgYW5kIGl0
cyByZWZsZWN0aW9uLApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjph
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVu
CiAgICAgSW50UmVjdCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSA9IGNvbnRlbnRzQ2hh
bmdlZCgpID8gbV9jb250ZW50UmVjdCA6IEludFJlY3QoKTsKIAogICAgIHF1YWRTaW5rLmFwcGVu
ZChDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJl
Y3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBsaWNhLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHND
aGFuZ2VkU2luY2VMYXN0RnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFza1RleENvb3JkU2NhbGVYLCBtYXNrVGV4Q29vcmRTY2FsZVksIG1h
c2tUZXhDb29yZE9mZnNldFgsIG1hc2tUZXhDb29yZE9mZnNldFkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrVGV4Q29vcmRTY2FsZVgsIG1h
c2tUZXhDb29yZFNjYWxlWSwgbWFza1RleENvb3JkT2Zmc2V0WCwgbWFza1RleENvb3JkT2Zmc2V0
WSksIGFwcGVuZFF1YWRzRGF0YSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgK
aW5kZXggYTdkNjM5NTYyZDFmMzRmODZlYTlkMmYzNGNlZjQ1ZjMwN2U0M2E2MS4uOTliODE3NGNk
ZDc0OTAwNTYxMTllYWE5NDg3YzNkNzUwNzExNjY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBUZXh0U3RyZWFtOwogCitzdHJ1Y3QgQ0NBcHBlbmRRdWFkc0RhdGE7CisK
IGNsYXNzIENDUmVuZGVyU3VyZmFjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5k
ZXJTdXJmYWNlKTsKIHB1YmxpYzoKQEAgLTEwMyw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBD
Q0RhbWFnZVRyYWNrZXIqIGRhbWFnZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVRy
YWNrZXIuZ2V0KCk7IH0KIAotICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wg
Zm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEmLCBib29sIGZvclJlcGxpY2EsIGludCByZW5kZXJQ
YXNzSWQpOwogCiBwcml2YXRlOgogICAgIENDTGF5ZXJJbXBsKiBtX293bmluZ0xheWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4IGRjMTkxZGMyYzVhYzZi
YWYwOTY0YmQ1M2Y4M2Q2ZDVmOTEwNzAyZGIuLjY4NjE2ZjgxNzFmZTc0ODE5OTFhY2Y5NzZjNTky
MTE5ZTM4YzFjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgiCiAK
LSNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIK
ICNpbmNsdWRlICJDQ1Njcm9sbGJhckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJD
Q1RleHR1cmVEcmF3UXVhZC5oIgogCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBGbG9hdFJlY3Qg
dG9VVlJlY3QoY29uc3QgV2ViUmVjdCYgciwgY29uc3QgSW50UmVjdCYgYm91bmRzKQogICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIud2lkdGgpIC8gYm91bmRzLndpZHRo
KCksIHN0YXRpY19jYXN0PGZsb2F0PihyLmhlaWdodCkgLyBib3VuZHMuaGVpZ2h0KCkpOwogfQog
Ci12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFk
U2luaywgYm9vbCYpCit2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSkKIHsK
ICAgICBib29sIHByZW11bHRpcGxlZEFscGhhID0gZmFsc2U7CiAgICAgYm9vbCBmbGlwcGVkID0g
ZmFsc2U7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAgICBJbnRSZWN0IGJvdW5kc1Jl
Y3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygpKTsKIAogICAgIENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hh
cmVkUXVhZFN0YXRlKCkpOwotICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hh
cmVkUXVhZFN0YXRlKTsKKyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJl
ZFF1YWRTdGF0ZSwgYXBwZW5kUXVhZHNEYXRhKTsKIAogICAgIFdlYlJlY3QgdGh1bWJSZWN0LCBi
YWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tSZWN0OwogICAgIG1fZ2VvbWV0cnktPnNwbGl0VHJhY2so
Jm1fc2Nyb2xsYmFyLCBtX2dlb21ldHJ5LT50cmFja1JlY3QoJm1fc2Nyb2xsYmFyKSwgYmFja1Ry
YWNrUmVjdCwgdGh1bWJSZWN0LCBmb3JlVHJhY2tSZWN0KTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2
b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2lu
aywgYm9vbCYpCiAgICAgaWYgKG1fdGh1bWJSZXNvdXJjZUlkICYmICF0aHVtYlJlY3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gcXVhZCA9IENDVGV4dHVy
ZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KHRodW1iUmVjdC54LCB0
aHVtYlJlY3QueSwgdGh1bWJSZWN0LndpZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KSwgbV90aHVtYlJl
c291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAgICBx
dWFkLT5zZXROZWVkc0JsZW5kaW5nKCk7Ci0gICAgICAgIHF1YWRTaW5rLmFwcGVuZChxdWFkLnJl
bGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChxdWFkLnJlbGVhc2UoKSwgYXBwZW5k
UXVhZHNEYXRhKTsKICAgICB9CiAKICAgICBpZiAoIW1fYmFja1RyYWNrUmVzb3VyY2VJZCkKQEAg
LTExNSwxMiArMTE1LDEyIEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIAogICAgIC8vIFdlIG9ubHkgcGFpbnQgdGhl
IHRyYWNrIGluIHR3byBwYXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEgdGV4dHVyZSBmb3IgdGhlIGZv
cndhcmQgdHJhY2sgcGFydC4KICAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlkICYmICFmb3Jl
VHJhY2tSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KGZvcmVUcmFja1JlY3QueCwg
Zm9yZVRyYWNrUmVjdC55LCBmb3JlVHJhY2tSZWN0LndpZHRoLCBmb3JlVHJhY2tSZWN0LmhlaWdo
dCksIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZSZWN0KGZv
cmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSk7CisgICAgICAgIHF1YWRTaW5rLmFw
cGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdChm
b3JlVHJhY2tSZWN0LngsIGZvcmVUcmFja1JlY3QueSwgZm9yZVRyYWNrUmVjdC53aWR0aCwgZm9y
ZVRyYWNrUmVjdC5oZWlnaHQpLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQsIHByZW11bHRpcGxlZEFs
cGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwgZmxpcHBlZCksIGFwcGVu
ZFF1YWRzRGF0YSk7CiAKICAgICAvLyBPcmRlciBtYXR0ZXJzIGhlcmU6IHNpbmNlIHRoZSBiYWNr
IHRyYWNrIHRleHR1cmUgaXMgYmVpbmcgZHJhd24gdG8gdGhlIGVudGlyZSBjb250ZW50cyByZWN0
LCB3ZSBtdXN0IGFwcGVuZCBpdCBhZnRlciB0aGUgdGh1bWIgYW5kCiAgICAgLy8gZm9yZSB0cmFj
ayBxdWFkcy4gVGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBjb250YWlucyAoYW5kIGRpc3BsYXlzKSB0
aGUgYnV0dG9ucy4KICAgICBpZiAoIWJvdW5kc1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBxdWFk
U2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIElu
dFJlY3QoYm91bmRzUmVjdCksIG1fYmFja1RyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxw
aGEsIHV2UmVjdCwgZmxpcHBlZCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJl
RHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoYm91bmRzUmVjdCksIG1f
YmFja1RyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCks
IGFwcGVuZFF1YWRzRGF0YSk7CiB9CiAKIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmRpZExv
c2VDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IGY4
ZmQ3YmY4YzI1ZDFhOWJjNTNkYWQwZjY1ZDI0MDdhMTc3MjM2N2UuLmVhMzY0MmZhMzg5ODI3MTk3
ZmZlNjg0Nzg2MTI2YzU5MGMwNzlkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYlNjcm9s
bGJhcjo6T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0
aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wm
IGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nv
bGlkQ29sb3JMYXllckltcGwuY3BwCmluZGV4IGZlMDAwN2Y1NTRkZDliODcxODAzYjI4MGM3YWQ0
MjQ4YmJkNzZlOGYuLjJlOGI3MjNmMjg1MDc2NzFkODBiNTAxMTYyOTkyMmY4ZjllZjc5ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJD
Q1F1YWRTaW5rLmgiCisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJD
Q1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00OSwxMCArNDksMTAgQEAgQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsOjp+Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKCkKIHsKIH0KIAotdm9pZCBDQ1Nv
bGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29s
JikKK3ZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBx
dWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSkKIHsKICAgICBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0
YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKLSAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQo
cXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1
YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUsIGFwcGVuZFF1YWRzRGF0YSk7CiAKICAgICAvLyBXZSBj
cmVhdGUgYSBzZXJpZXMgb2Ygc21hbGxlciBxdWFkcyBpbnN0ZWFkIG9mIGp1c3Qgb25lIGxhcmdl
IG9uZSBzbyB0aGF0IHRoZQogICAgIC8vIGN1bGxlciBjYW4gcmVkdWNlIHRoZSB0b3RhbCBwaXhl
bHMgZHJhd24uCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCiAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCB3aWR0aDsgeCArPSBtX3RpbGVTaXplKSB7CiAgICAgICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgaGVpZ2h0OyB5ICs9IG1fdGlsZVNpemUpIHsKICAgICAgICAgICAgIEludFJlY3Qgc29s
aWRUaWxlUmVjdCh4LCB5LCBtaW4od2lkdGggLSB4LCBtX3RpbGVTaXplKSwgbWluKGhlaWdodCAt
IHksIG1fdGlsZVNpemUpKTsKLSAgICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1NvbGlkQ29s
b3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgc29saWRUaWxlUmVjdCwgYmFja2dy
b3VuZENvbG9yKCkpKTsKKyAgICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1NvbGlkQ29sb3JE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgc29saWRUaWxlUmVjdCwgYmFja2dyb3Vu
ZENvbG9yKCkpLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBhMjkxNDAxN2QwMzlhM2ZiMjA1
Y2E0ZGI4ZjE3NThhYjY0MTEwZjI2Li5jNzAwNjcxYWE5ZjJhM2U2YzlkNzYyZGU0ZTVhODQzYzMy
YjUwODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDU29saWRDb2xvckxheWVy
SW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29s
JiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEmKSBPVkVSUklERTsKIAogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IENDU29saWRDb2xvckxheWVySW1wbChpbnQgaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKaW5kZXggNTlkYmM4YWMwMTc2ODE0MmU0NzUyYWU5
NDA0Y2UxZjcxMTAxMDI2NC4uOTk0NDY2ODIwZmJhNGU1MTllYjg2OTZkMjJiNGI3NGZiZDIxNDYz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpbmNsdWRlICJDQ1RleHR1cmVMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIkNDUXVh
ZFNpbmsuaCIKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkNDUmVu
ZGVyZXIuaCIKICNpbmNsdWRlICJDQ1RleHR1cmVEcmF3UXVhZC5oIgogI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKQEAgLTU4LDE2ICs1OCwxNiBAQCB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6d2ls
bERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIG1fZXh0ZXJu
YWxUZXh0dXJlUmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZUZyb21F
eHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSWQpOwogfQogCi12b2lkIENDVGV4dHVyZUxheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKQordm9pZCBDQ1RleHR1
cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1
YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQogewogICAgIGlmICghbV9leHRlcm5hbFRleHR1cmVS
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShjcmVhdGVTaGFyZWRRdWFk
U3RhdGUoKSk7Ci0gICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFk
U3RhdGUpOworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0
YXRlLCBhcHBlbmRRdWFkc0RhdGEpOwogCiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgp
LCBjb250ZW50Qm91bmRzKCkpOwotICAgIHF1YWRTaW5rLmFwcGVuZChDQ1RleHR1cmVEcmF3UXVh
ZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZXh0ZXJuYWxUZXh0dXJlUmVz
b3VyY2UsIG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkKSk7CisgICAg
cXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgbV9wcmVtdWx0aXBsaWVkQWxw
aGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpLCBhcHBlbmRRdWFkc0RhdGEpOwogfQogCiB2b2lkIEND
VGV4dHVyZUxheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IDU1ZDQ4YjQ1MTNh
ZDM2MTg0NmY2YTdlNWRiMTE2MDI1MTM0ZDUyNmMuLmJlZmEyNTVlMTg5OGQ5OWM5OTdlYTEyODcy
Zjg4NWViYjk0YmU4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1RleHR1cmVMYXllckltcGwoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
aWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lk
IGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCmluZGV4IGI2MTFkOTg5MWI2NmNhMmJiOGViOGJkNDJkYjQ5MThjMjg0YmI1OGEuLjFjNWY1
MmRjNjgyZTQxOTRjZTJlNjI3OWEwY2RjNTQ4ZWJhMTY0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2luY2x1ZGUgIkNDVGlsZWRM
YXllckltcGwuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAi
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUgIkNDRGVidWdCb3JkZXJEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUaWxpbmdEYXRhLmgiCiAjaW5jbHVkZSAiQ0NNYXRoVXRp
bC5oIgotI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJDQ1NvbGlkQ29sb3JEcmF3
UXVhZC5oIgogI2luY2x1ZGUgIkNDVGlsZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFk
LmgiCkBAIC0xMjUsNyArMTI1LDcgQEAgRHJhd2FibGVUaWxlKiBDQ1RpbGVkTGF5ZXJJbXBsOjpj
cmVhdGVUaWxlKGludCBpLCBpbnQgaikKICAgICByZXR1cm4gYWRkZWRUaWxlOwogfQogCi12b2lk
IENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29s
JiBoYWRNaXNzaW5nVGlsZXMpCit2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQog
ewogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0KCk7
CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2lu
ay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwotICAgIGFwcGVu
ZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsKKyAgICBhcHBlbmRE
ZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSwgYXBwZW5kUXVhZHNEYXRh
KTsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+Y29u
dGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0
b20pOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVh
ZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKICAgICAgICAg
ICAgICAgICAgICAgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVCb3JkZXJB
bHBoYSwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVy
TWlzc2luZ1RpbGVDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yQmx1
ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xv
ciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJD
b2xvclJlZCwgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyQ29sb3JC
bHVlKTsKLSAgICAgICAgICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYm9yZGVyQ29sb3IsIGRlYnVn
VGlsZUJvcmRlcldpZHRoKSk7CisgICAgICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDRGVi
dWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJvcmRl
ckNvbG9yLCBkZWJ1Z1RpbGVCb3JkZXJXaWR0aCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzAsOSArMTcwLDkgQEAgdm9pZCBDQ1RpbGVk
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYgaGFkTWlz
c2luZ1RpbGVzKQogCiAgICAgICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUtPnJlc291cmNlSWQo
KSkgewogICAgICAgICAgICAgICAgIGlmIChkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KCkpCi0gICAgICAgICAgICAgICAgICAgIGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkU2luay5hcHBl
bmQoQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJl
Y3QpKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kUXVhZHNEYXRhLmhhZE1pc3NpbmdUaWxl
cyB8PSBxdWFkU2luay5hcHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgdGlsZVJlY3QpLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRTaW5rLmFw
cGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJl
Y3QsIGJhY2tncm91bmRDb2xvcigpKSk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFF1YWRz
RGF0YS5oYWRNaXNzaW5nVGlsZXMgfD0gcXVhZFNpbmsuYXBwZW5kKENDU29saWRDb2xvckRyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkp
LCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRR
dWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQogICAgICAg
ICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51bVRpbGVzWSgpIC0gMSAm
JiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0dXJlRmlsdGVyID0gbV90
aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3Jh
cGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NU
aWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVl
UmVjdCwgdGlsZS0+cmVzb3VyY2VJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4
dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJp
Z2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChD
Q1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFx
dWVSZWN0LCB0aWxlLT5yZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0
ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwg
cmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMWJjNjBhYmE0NzEz
N2IwYzIxOGVhMDVjOGU5YzlmMzA2YWQzODlhOS4uNjQ1NmU0YzBiODc2Yjg5Zjk2ZjU5OWJlMmVk
NDAwNDMzNWIzNjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRMYXllckltcGwoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlz
c2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
U2luayYsIENDQXBwZW5kUXVhZHNEYXRhJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdCBPVkVS
UklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCA2NjJjZDJmMDNj
MGRiNjA0NzYxOTliNmMzMzViZGUxYmE2MDdkZjRlLi4zNDVlZjg3NmRmMmM2OTFkZjEyM2E4Zjky
ZTNlYTZlMjUxNzE5NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAt
MjksMTAgKzI5LDEwIEBACiAKICNpbmNsdWRlICJDQ1ZpZGVvTGF5ZXJJbXBsLmgiCiAKKyNpbmNs
dWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkNDSU9TdXJmYWNlRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiQ0NQcm94eS5o
IgotI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIKICNpbmNsdWRlICJDQ1Jlc291cmNlUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJDQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlICJDQ1RleHR1
cmVEcmF3UXVhZC5oIgpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
d2lsbERyYXdJbnRlcm5hbChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAg
ICAgICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVyLT5jcmVh
dGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUobV9mcmFtZS0+dGV4dHVyZUlkKCkpOwogfQog
Ci12b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5r
LCBib29sJikKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wm
KQogICAgICAgICByZXR1cm47CiAKICAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
KTsKLSAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7
CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUsIGFw
cGVuZFF1YWRzRGF0YSk7CiAKICAgICAvLyBGSVhNRTogV2hlbiB3ZSBwYXNzIHF1YWRzIG91dCBv
ZiBwcm9jZXNzLCB3ZSBuZWVkIHRvIGRvdWJsZS1idWZmZXIsIG9yCiAgICAgLy8gb3RoZXJ3aXNl
IHN5bmNob25pemUgdXNlIG9mIGFsbCB0ZXh0dXJlcyBpbiB0aGUgcXVhZC4KQEAgLTE5OSw3ICsx
OTksNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1
YWRTaW5rLCBib29sJikKICAgICAgICAgY29uc3QgRnJhbWVQbGFuZSYgdVBsYW5lID0gbV9mcmFt
ZVBsYW5lc1tXZWJLaXQ6OldlYlZpZGVvRnJhbWU6OnVQbGFuZV07CiAgICAgICAgIGNvbnN0IEZy
YW1lUGxhbmUmIHZQbGFuZSA9IG1fZnJhbWVQbGFuZXNbV2ViS2l0OjpXZWJWaWRlb0ZyYW1lOjp2
UGxhbmVdOwogICAgICAgICBPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFkPiB5dXZWaWRlb1F1YWQg
PSBDQ1lVVlZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB5
UGxhbmUsIHVQbGFuZSwgdlBsYW5lKTsKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHl1dlZpZGVv
UXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoeXV2VmlkZW9RdWFkLnJl
bGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6IHsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEND
VmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikK
ICAgICAgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCB3aWR0aFNjYWxlRmFjdG9yLCAxKTsKICAg
ICAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CiAgICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3
UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgcXVhZFJlY3QsIHBsYW5lLnJlc291cmNlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZS
ZWN0LCBmbGlwcGVkKTsKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVh
c2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZCh0ZXh0dXJlUXVhZC5yZWxlYXNlKCksIGFw
cGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJEOiB7CkBAIC0yMjAsMTkgKzIyMCwxOSBAQCB2b2lkIENDVmlk
ZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAg
ICAgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCAxLCAxKTsKICAgICAgICAgYm9vbCBmbGlwcGVk
ID0gZmFsc2U7CiAgICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gdGV4dHVyZVF1YWQg
PSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1f
ZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlw
cGVkKTsKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSk7Cisg
ICAgICAgIHF1YWRTaW5rLmFwcGVuZCh0ZXh0dXJlUXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRz
RGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6VEVY
VFVSRV9SRUNUQU5HTEVfQVJCOiB7CiAgICAgICAgIEludFNpemUgdGV4dHVyZVNpemUobV9mcmFt
ZS0+d2lkdGgoKSwgbV9mcmFtZS0+aGVpZ2h0KCkpOyAKICAgICAgICAgT3duUHRyPENDSU9TdXJm
YWNlRHJhd1F1YWQ+IGlvU3VyZmFjZVF1YWQgPSBDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZVNpemUsIG1fZnJhbWUtPnRleHR1cmVJ
ZCgpLCBDQ0lPU3VyZmFjZURyYXdRdWFkOjpVbmZsaXBwZWQpOwotICAgICAgICBxdWFkU2luay5h
cHBlbmQoaW9TdXJmYWNlUXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQo
aW9TdXJmYWNlUXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhUVVJFX0VYVEVS
TkFMX09FUzogewogICAgICAgICAvLyBTdHJlYW1UZXh0dXJlIGhhcmR3YXJlIGRlY29kZXIuCiAg
ICAgICAgIE93blB0cjxDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ+IHN0cmVhbVZpZGVvUXVhZCA9IEND
U3RyZWFtVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1f
ZnJhbWUtPnRleHR1cmVJZCgpLCBtX3N0cmVhbVRleHR1cmVNYXRyaXgpOwotICAgICAgICBxdWFk
U2luay5hcHBlbmQoc3RyZWFtVmlkZW9RdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5r
LmFwcGVuZChzdHJlYW1WaWRlb1F1YWQucmVsZWFzZSgpLCBhcHBlbmRRdWFkc0RhdGEpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllcklt
cGwuaAppbmRleCAyYzU0ZTM1MTM5YzIzZjJjYzIwMGZhNzRkYWFiNTIxNjM4YmI2NzI1Li5mOGU4
OTc0MWU4OTVhMTUxZTYyYmRmYWZkODM3YWFhYjg5MTAxZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0xheWVySW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1Zp
ZGVvTGF5ZXJJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVBy
b3ZpZGVyKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5k
ZW50KSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggYTcxNWY1YjlhNDk5OWEz
NzRiYmE5YWRkNDI0NzAwMDY2ZmRlYWNhNy4uZmE1MzcwNGUxNWVkN2Y4OTAzNDFhMWRlYjU2Zjc5
ZDAwYmIyYjdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1
ZGUgIkNDTGF5ZXJUcmVlSG9zdEltcGwuaCIKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENv
bW1vbi5oIgorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDSU9TdXJmYWNlTGF5ZXJJbXBsLmgi
CiAjaW5jbHVkZSAiQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5o
IgogI2luY2x1ZGUgIkNDTGF5ZXJUaWxpbmdEYXRhLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRyZWVU
ZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJDQ1JlbmRlcmVyR0wuaCIKICNpbmNsdWRlICJD
Q1Njcm9sbGJhckxheWVySW1wbC5oIgpAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgY2xhc3MgQmxlbmRT
dGF0ZUNoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkLCBDQ1Jlc291
cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBCbGVu
ZFN0YXRlQ2hlY2tMYXllcihpZCwgcmVzb3VyY2VQcm92aWRlcikpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKSBPVkVSUklERQor
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBl
bmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1f
cXVhZHNBcHBlbmRlZCA9IHRydWU7CiAKQEAgLTEzNjAsNyArMTM2MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPnNldFF1YWRWaXNpYmxlUmVjdChtX3F1YWRWaXNp
YmxlUmVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5kLCB0ZXN0QmxlbmRpbmdEcmF3UXVh
ZC0+bmVlZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNUX0VRKG1faGFzUmVuZGVyU3VyZmFj
ZSwgISFyZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBxdWFkU2luay5hcHBlbmQodGVzdEJsZW5k
aW5nRHJhd1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRlc3RCbGVu
ZGluZ0RyYXdRdWFkLnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICB9CiAKICAgICB2
b2lkIHNldEV4cGVjdGF0aW9uKGJvb2wgYmxlbmQsIGJvb2wgaGFzUmVuZGVyU3VyZmFjZSkKQEAg
LTE4NzksMTQgKzE4NzksMTQgQEAgY2xhc3MgRmFrZUxheWVyV2l0aFF1YWRzIDogcHVibGljIEND
TGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxGYWtlTGF5ZXJXaXRo
UXVhZHM+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlTGF5ZXJXaXRo
UXVhZHMoaWQpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRTaW5rLCBib29sJikgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEp
IE9WRVJSSURFCiAgICAgewogICAgICAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
KTsKIAogICAgICAgICBTa0NvbG9yIGdyYXkgPSBTa0NvbG9yU2V0UkdCKDEwMCwgMTAwLCAxMDAp
OwogICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KDAsIDApLCBjb250ZW50Qm91bmRz
KCkpOwogICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gbXlRdWFkID0gQ0NTb2xpZENvbG9yRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBncmF5KTsKLSAgICAgICAg
cXVhZFNpbmsuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBl
bmQobXlRdWFkLnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAppbmRleCA3MzE4ZjEzNmNjYjA2OGI1OTdhY2VlNTg0ZTg2Zjc1ZmE3YjQ2YzgzLi41
OTE3YWRiMjY0ODVlZjdjNjJlNjY2MDIwMTg2MjcwM2NiNGM5MGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTI0
MDksNyArMjQwOSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+RXZpY3Rpb25UZXN0
TGF5ZXJJbXBsKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2lu
ayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJikgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIEFTU0VSVF9UUlVFKG1faGFzVGV4dHVyZSk7CiAgICAgICAgIEFT
U0VSVF9ORSgwdSwgbGF5ZXJUcmVlSG9zdEltcGwoKS0+cmVzb3VyY2VQcm92aWRlcigpLT5udW1S
ZXNvdXJjZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcAppbmRleCAyYzVlODg1OWMwMTM2ZDFmNmNmMDZiNmNlYWRjNjQxZjFjNWEy
MmZkLi5iOGRjMzBmNzIxNDhkNWRlN2M3ZTMyMTQ4ZDNjZTg5ZTMyNzE2MDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNDUXVhZEN1bGxlci5oIgogCisjaW5jbHVkZSAiQ0NB
cHBlbmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJDQ0xheWVyVGlsaW5nRGF0YS5oIgogI2luY2x1
ZGUgIkNDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJDQ09jY2x1c2lvblRyYWNrZXIuaCIKQEAgLTEw
MCw4ICsxMDEsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlz
dCwgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0JiBzaGFyZWRTdGF0ZQogewogICAgIG9jY2x1c2lvblRy
YWNrZXIuZW50ZXJMYXllcihpdCk7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZExp
c3QsIHNoYXJlZFN0YXRlTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25UcmFja2VyLCBmYWxzZSwgZmFs
c2UpOwotICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgQ0NBcHBlbmRRdWFkc0Rh
dGEgZGF0YTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgZGF0YSk7CiAgICAg
b2NjbHVzaW9uVHJhY2tlci5sZWF2ZUxheWVyKGl0KTsKICAgICArK2l0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKaW5k
ZXggMDVkNzE2NjQxMzJjZDA0MzNkODM4MmI3YjkzOGU5MDgwZWI2ZTU2NS4uODMwYTVlMzE4ZjI3
MTUyNmIyOWE3ZjZhN2ZhODY0NzI2MThiYTRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAKICNpbmNsdWRlICJDQ1JlbmRlclN1cmZhY2UuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVh
ZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ1NoYXJlZFF1
YWRTdGF0ZS5oIgogI2luY2x1ZGUgIkNDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTExOSw5ICsx
MjAsMTAgQEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVh
dGVzQ29ycmVjdFNoYXJlZFF1YWRTdGF0ZSkKICAgICBDQ1F1YWRMaXN0IHF1YWRMaXN0OwogICAg
IENDU2hhcmVkUXVhZFN0YXRlTGlzdCBzaGFyZWRTdGF0ZUxpc3Q7CiAgICAgTW9ja0NDUXVhZEN1
bGxlciBtb2NrUXVhZEN1bGxlcihxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0KTsKKyAgICBDQ0Fw
cGVuZFF1YWRzRGF0YSBhcHBlbmRRdWFkc0RhdGE7CiAKICAgICBib29sIGZvclJlcGxpY2EgPSBm
YWxzZTsKLSAgICByZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyhtb2NrUXVhZEN1bGxlciwgZm9y
UmVwbGljYSwgMSk7CisgICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMobW9ja1F1YWRDdWxs
ZXIsIGFwcGVuZFF1YWRzRGF0YSwgZm9yUmVwbGljYSwgMik7CiAKICAgICBBU1NFUlRfRVEoMXUs
IHNoYXJlZFN0YXRlTGlzdC5zaXplKCkpOwogICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUgPSBzaGFyZWRTdGF0ZUxpc3RbMF0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApp
bmRleCAyMjAxODliNDE2NDNjZDk3ZGQ1YWRkYzAzNjZjZGY3NThlYmY4YThlLi5iMzMwYWJjYWEw
N2ExZDBjNmEzNmEzZWM4MDBlYWZiMTgxODdlYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNDU29saWRDb2xvckxheWVySW1wbC5oIgogCisj
aW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgIkNDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJDQ1NvbGlk
Q29sb3JEcmF3UXVhZC5oIgpAQCAtNTMsOCArNTQsOCBAQCBURVNUKENDU29saWRDb2xvckxheWVy
SW1wbFRlc3QsIHZlcmlmeVRpbGluZ0NvbXBsZXRlQW5kTm9PdmVybGFwKQogICAgIGxheWVyLT5j
cmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgbGF5ZXItPnNldFJlbmRlclRhcmdldChsYXllci5n
ZXQoKSk7CiAKLSAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgIENDQXBwZW5kUXVh
ZHNEYXRhIGRhdGE7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEpOwog
CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRDdWxsZXIucXVhZExpc3QoKSwg
dmlzaWJsZUNvbnRlbnRSZWN0KTsKIH0KQEAgLTc3LDggKzc4LDggQEAgVEVTVChDQ1NvbGlkQ29s
b3JMYXllckltcGxUZXN0LCB2ZXJpZnlDb3JyZWN0QmFja2dyb3VuZENvbG9ySW5RdWFkKQogICAg
IGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgbGF5ZXItPnNldFJlbmRlclRhcmdl
dChsYXllci5nZXQoKSk7CiAKLSAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgIEND
QXBwZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IGRhdGEpOwogCiAgICAgQVNTRVJUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDFV
KTsKICAgICBFWFBFQ1RfRVEoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFk
Q3VsbGVyLnF1YWRMaXN0KClbMF0uZ2V0KCkpLT5jb2xvcigpLCB0ZXN0Q29sb3IpOwpAQCAtMTAy
LDggKzEwMyw4IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVj
dE9wYWNpdHlJblF1YWQpCiAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBs
YXllci0+c2V0UmVuZGVyVGFyZ2V0KGxheWVyLmdldCgpKTsKIAotICAgIGJvb2wgaGFkTWlzc2lu
Z1RpbGVzID0gZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1p
c3NpbmdUaWxlcyk7CisgICAgQ0NBcHBlbmRRdWFkc0RhdGEgZGF0YTsKKyAgICBsYXllci0+YXBw
ZW5kUXVhZHMocXVhZEN1bGxlciwgZGF0YSk7CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5x
dWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAgIEVYUEVDVF9FUShvcGFjaXR5LCBDQ1NvbGlkQ29s
b3JEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS5nZXQoKSkt
Pm9wYWNpdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IDhiNGJkMjBlOGQ5Y2EyMjE0M2YxMmU5ZjdjZTVm
YTc3ZDk3MGU3NjEuLmM0OWUxMmMyZTcyMjA3Y2VkMGFjODIzN2UzNTRkN2FjZjJiNjY3NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1w
bFRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJJbXBs
LmgiCiAKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkNDTGF5ZXJU
ZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJD
Q1NpbmdsZVRocmVhZFByb3h5LmgiCkBAIC03Niw4ICs3Nyw4IEBAIFRFU1QoQ0NUaWxlZExheWVy
SW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAgewogICAgICAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAg
ICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgZGF0YSk7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG51bVRpbGVzID0gbnVtVGls
ZXNYICogbnVtVGlsZXNZOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgp
LnNpemUoKSwgbnVtVGlsZXMpOwogICAgIH0KQEAgLTg4LDggKzg5LDggQEAgVEVTVChDQ1RpbGVk
TGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKICAgICAgICAgbGF5ZXItPnNldFZpc2libGVD
b250ZW50UmVjdChJbnRSZWN0KCkpOwogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1
bGxlcjsKLSAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKLSAgICAgICAgbGF5
ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIEND
QXBwZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBkYXRhKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXpl
KCksIDB1KTsKICAgICB9CiAKQEAgLTEwMSw4ICsxMDIsOCBAQCBURVNUKENDVGlsZWRMYXllcklt
cGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KG91dHNpZGVCb3VuZHMpOwogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxl
cjsKLSAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXIt
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIENDQXBw
ZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBkYXRhKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCks
IDB1KTsKICAgICB9CiAKQEAgLTExMiw4ICsxMTMsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxU
ZXN0LCBlbXB0eVF1YWRMaXN0KQogICAgICAgICBsYXllci0+c2V0U2tpcHNEcmF3KHRydWUpOwog
CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9vbCBoYWRN
aXNzaW5nVGlsZXMgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxs
ZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIENDQXBwZW5kUXVhZHNEYXRhIGRhdGE7Cisg
ICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBkYXRhKTsKICAgICAgICAgRVhQ
RUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICB9CiB9CkBAIC0x
MzIsMTAgKzEzMywxMCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRp
bmcpCiAgICAgLy8gTm8gY2hlY2tlcmJvYXJkaW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFk
Q3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7
Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMp
OworICAgICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgICAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgZGF0YSk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1
YWRMaXN0KCkuc2l6ZSgpLCA0dSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShoYWRNaXNzaW5nVGls
ZXMpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYWRNaXNzaW5nVGlsZXMpOwogCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsg
KytpKQogICAgICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+bWF0
ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KTsKQEAgLTE0OCw5ICsxNDksOSBAQCBU
RVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAgLy8gQWxsIGNo
ZWNrZXJib2FyZGluZwogICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVy
OwotICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUoaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAgICAgQ0NBcHBlbmRRdWFkc0RhdGEgZGF0YTsK
KyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEpOworICAgICAgICBF
WFBFQ1RfVFJVRShkYXRhLmhhZE1pc3NpbmdUaWxlcyk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFk
Q3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCA0dSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsgKytpKQogICAgICAgICAgICAgRVhQ
RUNUX05FKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50KTsKQEAgLTE2NCw4ICsxNjUsOCBAQCBzdGF0aWMgdm9pZCBnZXRRdWFkcyhD
Q1F1YWRMaXN0JiBxdWFkcywgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0JiBzaGFyZWRTdGF0ZXMsIElu
dAogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIAogICAgIE1vY2tDQ1F1YWRDdWxs
ZXIgcXVhZEN1bGxlcihxdWFkcywgc2hhcmVkU3RhdGVzKTsKLSAgICBib29sIGhhZE1pc3NpbmdU
aWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNz
aW5nVGlsZXMpOworICAgIENDQXBwZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEpOwogfQogCiAvLyBUZXN0IHdpdGggYm90aCBib3JkZXIg
dGV4ZWxzIGFuZCB3aXRob3V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01v
Y2tDQ1F1YWRDdWxsZXIuaAppbmRleCA1OWEwMDczY2UxNGRlMGI3MzQ2ZjE2NDgzNzJkMGQ2ZjM3
NmExM2I0Li5mOTM3NGE1ODQzYzAwODk3MjM2Y2ZjZWRlZTcyMWNjYjhjZGVmNmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaApAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9hY3RpdmVTaGFyZWRRdWFkU3RhdGVMaXN0
KGV4dGVybmFsU2hhcmVkUXVhZFN0YXRlTGlzdCkKICAgICB7IH0KIAotICAgIHZpcnR1YWwgYm9v
bCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPENDRHJhd1F1YWQ+IG5ld1F1YWQpIE9WRVJSSURFCisg
ICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IG5ld1F1YWQsIEND
UXVhZFNpbmtEYXRhJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIE93blB0cjxDQ0RyYXdRdWFk
PiBkcmF3UXVhZCA9IG5ld1F1YWQ7CiAgICAgICAgIGlmICghZHJhd1F1YWQtPnF1YWRSZWN0KCku
aXNFbXB0eSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160796</attachid>
            <date>2012-08-27 13:51:20 -0700</date>
            <delta_ts>2012-08-27 15:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95109-20120827165112.patch</filename>
            <type>text/plain</type>
            <size>62364</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ViZDJhN2QxZjc3NTcw
NTBhOTJhZGViMmQ1NjgxNDg2YjRiNDRhMy4uZDExMGM3Zjc0Y2I2YjJmN2VjYTE4NzEyNmRhMWIw
YzZlN2Q3MDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA4LTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQSBn
ZW5lcmFsIG1lY2hhbmlzbSBmb3IgcGFzc2luZyBkYXRhIGludG8gYW5kIG91dCBvZiBhcHBlbmRR
dWFkcyBhbmQgcXVhZEN1bGxlciB2aWEgQ0NBcHBlbmRRdWFkc0RhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGFwcGVuZFF1YWRzKCkgbWV0aG9k
IGhhcyBhIG51bWJlciBvZiBvdXQtcGFyYW1ldGVycyB0aGF0IGFyZSBuZWVkZWQKKyAgICAgICAg
YnkgZGlmZmVyZW50IHN0ZXBzIGluIHRoZSBhcHBlbmQgcHJvY2VzczoKKyAgICAgICAgLSBoYWRN
aXNzaW5nVGlsZXMgaXMgbmVlZGVkIGJ5IHRoZSBsYXllcnMgdG8gcmVwb3J0IGNoZWNrZXJib2Fy
ZHMuCisgICAgICAgIC0gaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIGlzIG5l
ZWRlZCBieSBDQ1F1YWRDdWxsZXIgdG8KKyAgICAgICAgcmVwb3J0IG9jY2x1c2lvbi4KKworICAg
ICAgICBDdXJyZW50bHkgb25lIGlzIHBsdW1iZWQgdGhyb3VnaCBmdW5jdGlvbiBhcmd1bWVudHMs
IGFuZCBvbmUgaXMKKyAgICAgICAgcGx1bWJlZCBhcyBhIG1lbWJlciB2YXJpYWJsZSBvbiB0aGUg
Q0NRdWFkQ3VsbGVyIGluc3RhbmNlLgorCisgICAgICAgIFdlIHdpbGwgYWxzbyBuZWVkIGFuIGlu
LXBhcmFtZXRlciBmb3IgdGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgZm9yCisgICAgICAgIHVi
ZXJjb21wLiBJbnN0ZWFkIG9mIGNvbnRpbnVvdXNseSBhZGRpbmcgbW9yZSBwbHVtYmluZyBmb3Ig
dGhlc2UKKyAgICAgICAgcGFyYW1ldGVycywgd2UgY3JlYXRlIGEgZ2VuZXJhbCBtYWNoYW5pc20g
dG8gZ2V0IGRhdGEgdG8gYW5kIGZyb20gdGhlCisgICAgICAgIHJpZ2h0IHBsYWNlcy4KKworICAg
ICAgICBDQ1F1YWRTaW5rIHRha2VzIGFzIGlucHV0IGEgQ0NRdWFkU2lua0RhdGEuIENDUXVhZEN1
bGxlciBoYXMgb3V0cHV0cworICAgICAgICBzcGVjaWZpYyB0byBpdCwgc28gaXQgb3ZlcnJpZGVz
IHRoaXMgYW5kIHJlcXVpcmVzIGFzIGlucHV0IGEKKyAgICAgICAgQ0NRdWFkQ3VsbGVyRGF0YS4g
VGhlIGFwcGVuZFF1YWRzKCkgbWV0aG9kIGhhcyBmdXJ0aGVyIG91dHB1dHMsIGFuZAorICAgICAg
ICBzbyBleHRlbmRzIHRoaXMgdG8gYmUgQ0NBcHBlbmRRdWFkc0RhdGEsIHdoaWNoIGNhbiBiZSBw
YXNzZWQgYWxvbmcKKyAgICAgICAgdG8gdGhlIENDUXVhZEN1bGxlciBhcyB3ZWxsLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHM7IG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuIFNw
ZWNpZmljYWxseSwKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbCB0ZXN0cyBmb3IgbWlzc2lu
Zy9jaGVja2VyYm9hcmQgdGlsZXMgYW5kCisgICAgICAgIHN1cmZhY2UtZXh0ZXJuYWwgb2NjbHVz
aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBcHBlbmRR
dWFkc0RhdGEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmguCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDQXBwZW5kUXVhZHNEYXRhOjpDQ0FwcGVuZFF1YWRzRGF0YSk6
CisgICAgICAgIChDQ0FwcGVuZFF1YWRzRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bC5oOgorICAgICAgICAoQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5o
OgorICAgICAgICAoQ0NJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChDQ0xh
eWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxs
ZXI6OkNDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmFwcGVu
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlckRh
dGE6OkNDUXVhZEN1bGxlckRhdGEpOgorICAgICAgICAoQ0NRdWFkQ3VsbGVyRGF0YSk6CisgICAg
ICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZFNpbmsuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZFNpbmtEYXRhOjpDQ1F1
YWRTaW5rRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZFNpbmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZh
Y2VMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllcklt
cGwuaDoKKyAgICAgICAgKENDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmg6
CisgICAgICAgIChDQ1NvbGlkQ29sb3JMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaDoKKyAgICAgICAgKEND
VGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxlZExheWVySW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgor
ICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDgtMjcgIEFkcmllbm5lIFdhbGtl
ciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFByZXZlbnQgc2Nyb2xs
YmFyIHRodW1iIHNpemUgZnJvbSBjaGFuZ2luZyBkdXJpbmcgY29tcG9zaXRvciB6b29tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDE0N2QxNTdiOWExODIwN2QwZjU4YTBlMTVkZDZkNjBm
YjM4ZGNhYjMuLjMxYmU0YmFmZjk0MjdiYTI3NDY0NTAyZWU3NTE1Zjk5Y2VlMjIzNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMjcgIERhbmEg
SmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBIGdl
bmVyYWwgbWVjaGFuaXNtIGZvciBwYXNzaW5nIGRhdGEgaW50byBhbmQgb3V0IG9mIGFwcGVuZFF1
YWRzIGFuZCBxdWFkQ3VsbGVyIHZpYSBDQ0FwcGVuZFF1YWRzRGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxMDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgdG8gdXNlIHRoZSBu
ZXcgZGF0YSBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDUmVu
ZGVyU3VyZmFjZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVySW1w
bFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAq
IHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29t
bW9uOjpURVNUKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpnZXRRdWFkcyk6CisgICAg
ICAgICogdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oOgorCiAyMDEyLTA4LTI3ICBBZHJpZW5uZSBX
YWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBQcmV2ZW50IHNj
cm9sbGJhciB0aHVtYiBzaXplIGZyb20gY2hhbmdpbmcgZHVyaW5nIGNvbXBvc2l0b3Igem9vbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NBcHBlbmRRdWFkc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYyNWVhNzQxN2Y0ZWI3
Y2FhNDA4YjQ4OGU0N2ZmOTJkNjA2MjhjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NBcHBlbmRRdWFkc0RhdGFfaAorI2RlZmlu
ZSBDQ0FwcGVuZFF1YWRzRGF0YV9oCisKKyNpbmNsdWRlICJDQ1F1YWRDdWxsZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ0NBcHBlbmRRdWFkc0RhdGEgOiBwdWJsaWMgQ0NR
dWFkQ3VsbGVyRGF0YSB7CisgICAgZW51bSB7IENDQXBwZW5kUXVhZHNEYXRhVHlwZSA9IDQgfTsK
KworICAgIENDQXBwZW5kUXVhZHNEYXRhKCkKKyAgICAgICAgOiBDQ1F1YWRDdWxsZXJEYXRhKCkK
KyAgICAgICAgLCBoYWRNaXNzaW5nVGlsZXMoZmFsc2UpCisgICAgeworICAgICAgICBDT01QSUxF
X0FTU0VSVChDQ0FwcGVuZFF1YWRzRGF0YVR5cGUgPT0gKENDUXVhZEN1bGxlckRhdGFUeXBlIDw8
IDEpLCBDQ0FwcGVuZFF1YWRzRGF0YVR5cGUpOworICAgICAgICB0eXBlIHw9IENDQXBwZW5kUXVh
ZHNEYXRhVHlwZTsKKyAgICB9CisKKyAgICAvLyBTZXQgYnkgdGhlIGxheWVyIGFwcGVuZGluZyBx
dWFkcy4KKyAgICBib29sIGhhZE1pc3NpbmdUaWxlczsKKyAgICAvLyBGSVhNRTogSG9sZCB0aGUg
ZGVsZWdhdGVkUmVuZGVyUGFzc0lkIGZvciB0aGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllci4KK307
CisKK30KKyNlbmRpZiAvLyBDQ0NDQXBwZW5kUXVhZHNEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlM
YXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAKaW5kZXggOTlkZjBlYTU3ZWJjOWFlMzc3
MTU4NmQ2ODFjMTJmYjc2NzMzNTM2Yi4uYzMzODc1OWM0OTRiYmNmMzIyMWY1ZjQ4NGI2OWI5MzMw
MzNhOWU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bC5jcHAKQEAgLTI3LDExICsyNywxMSBAQAogCiAjaW5jbHVkZSAiQ0NIZWFkc1VwRGlzcGxheUxh
eWVySW1wbC5oIgogCisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJD
Q0RlYnVnUmVjdEhpc3RvcnkuaCIKICNpbmNsdWRlICJDQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUg
IkNDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdEltcGwuaCIK
LSNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAiQ0NUZXh0dXJlRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgICAg
ICBtX2h1ZFRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBib3VuZHMoKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdl
QW55KTsKIH0KIAotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYg
YXBwZW5kUXVhZHNEYXRhKQogewogICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCiAgICAgYm9vbCBw
cmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOwogICAgIEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwgMSwg
MSk7CiAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7Ci0gICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4
dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9odWRUZXh0
dXJlLT5pZCgpLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOworICAgIHF1
YWRTaW5rLmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
cXVhZFJlY3QsIG1faHVkVGV4dHVyZS0+aWQoKSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3Qs
IGZsaXBwZWQpLCBhcHBlbmRRdWFkc0RhdGEpOwogfQogCiB2b2lkIENDSGVhZHNVcERpc3BsYXlM
YXllckltcGw6OnVwZGF0ZUh1ZFRleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oCmlu
ZGV4IGY3ZDQ3N2ZmZjk4ZGUwNzk2MGZhYjMwN2YyNTEwYzcwYTgwNDNmODUuLmE0ZGQ3NDE4M2Y2
ZjVjYTFjOWUzNmIyOGMyMDgxNWExNWFlMDU4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVu
ZFF1YWRzRGF0YSYpIE9WRVJSSURFOwogICAgIHZvaWQgdXBkYXRlSHVkVGV4dHVyZShDQ1Jlc291
cmNlUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlk
ZXIqKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3Bw
CmluZGV4IDlmNjllMjM4ZjI3ZTk0YjkwNTUxN2U1MThlYWNkOTUwY2ZjZDdlM2IuLmIyNzQxZWQ4
YzkwODg4MzhkOTg3MGViYTQwNTY1NjkxY2I5YTdkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lP
U3VyZmFjZUxheWVySW1wbC5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiQ0NJ
T1N1cmZhY2VMYXllckltcGwuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAj
aW5jbHVkZSAiQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJDQ0lPU3VyZmFjZURyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRyZWVIb3N0SW1wbC5oIgotI2luY2x1ZGUgIkNDUXVh
ZFNpbmsuaCIKICNpbmNsdWRlICJDQ1JlbmRlcmVyR0wuaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNy
by4KICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCkBA
IC05NiwxMyArOTYsMTMgQEAgdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERyYXcoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIH0KIH0KIAotdm9pZCBDQ0lP
U3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wm
KQordm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVh
ZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0
ZShjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSk7Ci0gICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1
YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUpOworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFk
U2luaywgc2hhcmVkUXVhZFN0YXRlLCBhcHBlbmRRdWFkc0RhdGEpOwogCiAgICAgSW50UmVjdCBx
dWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwotICAgIHF1YWRTaW5rLmFwcGVu
ZChDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
bV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJZCwgQ0NJT1N1cmZhY2VEcmF3UXVh
ZDo6RmxpcHBlZCkpOworICAgIHF1YWRTaW5rLmFwcGVuZChDQ0lPU3VyZmFjZURyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3Vy
ZmFjZVRleHR1cmVJZCwgQ0NJT1N1cmZhY2VEcmF3UXVhZDo6RmxpcHBlZCksIGFwcGVuZFF1YWRz
RGF0YSk7CiB9CiAKIHZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRp
ZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VMYXllckltcGwuaAppbmRleCAzYTU1YmYyZTJlNmYyYWYzMzA0ZTAwMDc1YWZkMzgzNzIy
ZTQ3OWEwLi5mYmJjMDRmYmNhNDRjMjM4YTBmZGJkNzIyNzgwOGU1MzYyNzAxZTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3Vy
ZmFjZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlk
LCBjb25zdCBJbnRTaXplJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
U2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuY3BwCmluZGV4IGU2ZGUwMGUyNDE4MzI5YjkxNTI5ODllNTMyMzVjYWYzYzc2YTA3
ZDIuLjg1YTBjNGRmYzU2MzRkMDIyNDFkY2Q2YmYwODM4ZGIxMWIxYmNmNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiQ0NMYXllcklt
cGwuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NEZWJ1
Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiQ0NMYXllclNvcnRlci5oIgogI2luY2x1ZGUg
IkNDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJDQ1Byb3h5LmgiCi0jaW5jbHVkZSAiQ0NRdWFkU2lu
ay5oIgogI2luY2x1ZGUgIkNDU2Nyb2xsYmFyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC0xNjYsMTMgKzE2
NiwxMyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopCiAj
ZW5kaWYKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVh
ZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
KSBjb25zdAordm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNp
bmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBD
Q0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKSBjb25zdAogewogICAgIGlmICghaGFz
RGVidWdCb3JkZXJzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgY29udGVudFJl
Y3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCwg
ZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCkpKTsKKyAgICBxdWFkTGlzdC5h
cHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250
ZW50UmVjdCwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCkpLCBhcHBlbmRR
dWFkc0RhdGEpOwogfQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NMYXllcklt
cGw6OmNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCBl
MTJiMWIxYTdjMWU5N2QwMTQzOThjMzMyMzc5YzM4OWM3NGFlMWI2Li4wNzFmODAzZjAzNDhmMzAw
OWYxYmMyMDZjZDUwMDI0YmM4ZjUwYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJDQ1F1YWRDdWxsZXIuaCIKICNpbmNs
dWRlICJDQ1JlbmRlclN1cmZhY2UuaCIKICNpbmNsdWRlICJDQ1Jlc291cmNlUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJDQ1NoYXJlZFF1YWRTdGF0ZS5oIgpAQCAtNDgsMTEgKzQ5LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3RJbXBsOwogY2xhc3MgQ0NSZW5kZXJlcjsKLWNsYXNzIENDUXVhZFNpbms7CiBjbGFzcyBDQ1Nj
cm9sbGJhckFuaW1hdGlvbkNvbnRyb2xsZXI7CiBjbGFzcyBDQ1Njcm9sbGJhckxheWVySW1wbDsK
IGNsYXNzIExheWVyQ2hyb21pdW07CiAKK3N0cnVjdCBDQ0FwcGVuZFF1YWRzRGF0YTsKKwogY2xh
c3MgQ0NMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGUoaW50
IGlkKQpAQCAtOTUsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIGxheWVyIGlzIGRlc3Ry
b3llZC4gVG8gZW5mb3JjZSB0aGlzLCBhbnkgY2xhc3MgdGhhdCBvdmVycmlkZXMKICAgICAvLyB3
aWxsRHJhdy9kaWREcmF3IG11c3QgY2FsbCB0aGUgYmFzZSBjbGFzcyB2ZXJzaW9uLgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0
YSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopOwog
CiAgICAgdmlydHVhbCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29udGVudHNSZXNv
dXJjZUlkKCkgY29uc3Q7CkBAIC0yNzQsNyArMjc2LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IENDTGF5ZXJJbXBsKGludCk7CiAKLSAgICB2b2lkIGFwcGVuZERlYnVnQm9y
ZGVyUXVhZChDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKKyAg
ICB2b2lkIGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lk
IGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogICAg
IHN0YXRpYyB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZWQwNzlmNzgyOWFjMTA0ZjY3
OGI2Nzk1NTI3YzQyMWE3NGViMTUyOS4uOTE4MzNhZjFmNDMzOTMyZGYyNTAwYmQ0NWRiZDFlOGFi
N2FhMzlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAKICNpbmNsdWRl
ICJDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0
YS5oIgogI2luY2x1ZGUgIkNDRGFtYWdlVHJhY2tlci5oIgogI2luY2x1ZGUgIkNDRGVidWdSZWN0
SGlzdG9yeS5oIgogI2luY2x1ZGUgIkNDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKQEAgLTMwNiwy
NyArMzA3LDMwIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpbnQgdGFyZ2V0UmVuZGVyUGFzc0lkID0gaXQu
dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPmlkKCk7CiAgICAgICAgIENDUmVuZGVyUGFzcyog
dGFyZ2V0UmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlc0J5SWQuZ2V0KHRhcmdldFJlbmRl
clBhc3NJZCk7Ci0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CiAKICAgICAg
ICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlckxheWVyKGl0KTsKIAorICAgICAgICBDQ0FwcGVuZFF1
YWRzRGF0YSBhcHBlbmRRdWFkc0RhdGE7CisKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNDb250
cmlidXRpbmdSZW5kZXJTdXJmYWNlKCkpIHsKICAgICAgICAgICAgIGludCBjb250cmlidXRpbmdS
ZW5kZXJQYXNzSWQgPSBpdC0+aWQoKTsKICAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJp
YnV0aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlc0J5SWQuZ2V0KGNvbnRyaWJ1dGlu
Z1JlbmRlclBhc3NJZCk7Ci0gICAgICAgICAgICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFk
c0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2Ns
dXNpb25UcmFja2VyKTsKKyAgICAgICAgICAgIHRhcmdldFJlbmRlclBhc3MtPmFwcGVuZFF1YWRz
Rm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1
c2lvblRyYWNrZXIsIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXQucmVw
cmVzZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsK
LSAgICAgICAgICAgIGlmIChvY2NsdXNpb25UcmFja2VyLm9jY2x1ZGVkKCppdCwgaXQtPnZpc2li
bGVDb250ZW50UmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSkg
ewotICAgICAgICAgICAgICAgIGlmIChoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZh
Y2UpCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldFJlbmRlclBhc3MtPnNldEhhc09jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChvY2NsdXNpb25U
cmFja2VyLm9jY2x1ZGVkKCppdCwgaXQtPnZpc2libGVDb250ZW50UmVjdCgpLCAmaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSkKKyAgICAgICAgICAgICAgICBhcHBlbmRRdWFk
c0RhdGEuaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IGhhc09jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGl0LT53aWxsRHJhdyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIGZyYW1lLndpbGxEcmF3TGF5ZXJzLmFwcGVuZCgqaXQpOwotICAgICAgICAgICAgICAg
IHRhcmdldFJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJh
Y2tlciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAgICAgICAgICAgICB0YXJnZXRSZW5kZXJQYXNz
LT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGFwcGVuZFF1YWRz
RGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaGFkTWlzc2lu
Z1RpbGVzKSB7CisgICAgICAgIGlmIChhcHBlbmRRdWFkc0RhdGEuaGFkT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlKQorICAgICAgICAgICAgdGFyZ2V0UmVuZGVyUGFzcy0+c2V0SGFz
T2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKHRydWUpOworCisgICAgICAgIGlmIChh
cHBlbmRRdWFkc0RhdGEuaGFkTWlzc2luZ1RpbGVzKSB7CiAgICAgICAgICAgICBib29sIGxheWVy
SGFzQW5pbWF0aW5nVHJhbnNmb3JtID0gaXQtPnNjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRp
bmcoKSB8fCBpdC0+ZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nKCk7CiAgICAgICAgICAgICBpZiAo
bGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAgZHJhd0ZyYW1lID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCA3OGEwYmQ5ZWMwMzU5OGM2NDc5
NDk2MGE5ODg4MTRhODViNmQzYmU4Li43MTBlNjIxOWM5NGUzOGQzMWNjMjAwYmI2Yjc5NDI2YzAw
NjJhZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTU2LDcgKzU2LDYgQEAgQ0NR
dWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDU2hhcmVkUXVh
ZFN0YXRlTGlzdCYgc2hhcmVkUXUKICAgICAsIG1fb2NjbHVzaW9uVHJhY2tlcihvY2NsdXNpb25U
cmFja2VyKQogICAgICwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKHNob3dDdWxs
aW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpCiAgICAgLCBtX2ZvclN1cmZhY2UoZm9yU3VyZmFjZSkK
LSAgICAsIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogewog
fQogCkBAIC05Myw4ICs5Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRRdWFkSW50ZXJu
YWwoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQsIGNvbnN0CiAgICAgcmV0dXJu
IGtlZXBRdWFkOwogfQogCi1ib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NE
cmF3UXVhZD4gcGFzc0RyYXdRdWFkKQorYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3du
UHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCwgQ0NRdWFkU2lua0RhdGEmIHF1YWRTaW5rRGF0
YSkKIHsKKyAgICBBU1NFUlQocXVhZFNpbmtEYXRhLnR5cGUgJiBDQ1F1YWRDdWxsZXJEYXRhVHlw
ZSk7CiAgICAgQVNTRVJUKHBhc3NEcmF3UXVhZC0+c2hhcmVkUXVhZFN0YXRlKCkgPT0gbV9jdXJy
ZW50U2hhcmVkUXVhZFN0YXRlKTsKICAgICBBU1NFUlQocGFzc0RyYXdRdWFkLT5zaGFyZWRRdWFk
U3RhdGVJZCgpID09IG1fY3VycmVudFNoYXJlZFF1YWRTdGF0ZS0+aWQpOwogICAgIEFTU0VSVCgh
bV9zaGFyZWRRdWFkU3RhdGVMaXN0LmlzRW1wdHkoKSk7CkBAIC0xMDcsNyArMTA3LDkgQEAgYm9v
bCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVh
ZCkKICAgICAgICAgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRlZENv
bnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChtX2xheWVyLCBmYWxzZSwgcGFzc0RyYXdRdWFk
LT5xdWFkUmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKICAg
ICBlbHNlCiAgICAgICAgIGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVk
ZWRDb250ZW50UmVjdChtX2xheWVyLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCksICZoYXNPY2Ns
dXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOwotICAgIG1faGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlIHw9IGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZTsKKworICAgIENDUXVhZEN1bGxlckRhdGEmIHF1YWRDdWxsZXJEYXRhID0gc3RhdGljX2Nhc3Q8
Q0NRdWFkQ3VsbGVyRGF0YSY+KHF1YWRTaW5rRGF0YSk7CisgICAgcXVhZEN1bGxlckRhdGEuaGFk
T2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IGhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZTsKIAogICAgIHJldHVybiBhcHBlbmRRdWFkSW50ZXJuYWwocGFzc0Ry
YXdRdWFkLCBjdWxsZWRSZWN0LCBtX3F1YWRMaXN0LCAqbV9vY2NsdXNpb25UcmFja2VyLCBtX3No
b3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaApp
bmRleCA3ZmQ4ZWZiZTQ4NjhiZTEwY2JmZTMxOGRjNzU5MmYyNDNkNTc4MmE3Li5jYjNkNzM0YTdl
MWI0Nzc2M2M5MzYxMmY3NmY4MTc1N2YyNzVhNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaApA
QCAtMjgsMTMgKzI4LDMwIEBACiAKICNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCiAjaW5jbHVkZSAi
Q0NSZW5kZXJQYXNzLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworCiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDUmVuZGVyU3VyZmFjZTsK
IHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgU3VyZmFjZVR5cGU+CiBjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlOwogCitzdHJ1Y3QgQ0NRdWFkQ3VsbGVyRGF0YSA6IHB1
YmxpYyBDQ1F1YWRTaW5rRGF0YSB7CisgICAgZW51bSB7IENDUXVhZEN1bGxlckRhdGFUeXBlID0g
MiB9OworCisgICAgQ0NRdWFkQ3VsbGVyRGF0YSgpCisgICAgICAgIDogQ0NRdWFkU2lua0RhdGEo
KQorICAgICAgICAsIGhhZE9jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShmYWxzZSkK
KyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKENDUXVhZEN1bGxlckRhdGFUeXBlID09IEND
UXVhZFNpbmtEYXRhVHlwZSA8PCAxLCBDQ1F1YWRDdWxsZXJEYXRhVHlwZSk7CisgICAgICAgIHR5
cGUgfD0gQ0NRdWFkQ3VsbGVyRGF0YVR5cGU7CisgICAgfQorCisgICAgLy8gU2V0IGJ5IHRoZSBR
dWFkQ3VsbGVyLgorICAgIGJvb2wgaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
OworfTsKKwogY2xhc3MgQ0NRdWFkQ3VsbGVyIDogcHVibGljIENDUXVhZFNpbmsgewogcHVibGlj
OgogICAgIENDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiwgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0Jiwg
Q0NMYXllckltcGwqLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBD
Q1JlbmRlclN1cmZhY2U+KiwgYm9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzLCBi
b29sIGZvclN1cmZhY2UpOwpAQCAtNDIsOSArNTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1F1
YWRTaW5rIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgQ0NTaGFyZWRRdWFkU3RhdGUqIHVz
ZVNoYXJlZFF1YWRTdGF0ZShQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+KSBPVkVSUklE
RTsKLQotICAgIGJvb2wgaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkgeyBy
ZXR1cm4gbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4sIENDUXVhZFNpbmtEYXRhJikg
T1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgQ0NRdWFkTGlzdCYgbV9xdWFkTGlzdDsKQEAgLTU0
LDcgKzY5LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPEND
TGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+KiBtX29jY2x1c2lvblRyYWNrZXI7CiAgICAgYm9v
bCBtX3Nob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHM7CiAgICAgYm9vbCBtX2ZvclN1cmZh
Y2U7Ci0gICAgYm9vbCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUXVhZFNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZFNpbmsuaAppbmRleCAwOWJkZDBhZTI5ZDI0ZDVmNDFmMDYwODIzNTll
NDg1NTVmMzNiMTc4Li42YzA0NGZlNjczNzlhZDFiMDEwNjBhNWE5NmM5MmQyZDI4MzZkMTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRTaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkU2luay5oCkBAIC0zNCw2ICszNCwxMyBAQCBjbGFzcyBDQ0RyYXdRdWFkOwog
CiBzdHJ1Y3QgQ0NTaGFyZWRRdWFkU3RhdGU7CiAKK3N0cnVjdCBDQ1F1YWRTaW5rRGF0YSB7Cisg
ICAgZW51bSB7IENDUXVhZFNpbmtEYXRhVHlwZSA9IDEgfTsKKyAgICBpbnQgdHlwZTsKKworICAg
IENDUXVhZFNpbmtEYXRhKCkgOiB0eXBlKENDUXVhZFNpbmtEYXRhVHlwZSkgeyB9Cit9OworCiBj
bGFzcyBDQ1F1YWRTaW5rIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1F1YWRTaW5rKCkgeyB9
CkBAIC00Myw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENDU2hhcmVkUXVhZFN0YXRl
KiB1c2VTaGFyZWRRdWFkU3RhdGUoUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4pID0gMDsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUgbGlzdCwg
YW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KLSAgICB2aXJ0dWFsIGJv
b2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCwg
Q0NRdWFkU2lua0RhdGEmKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApp
bmRleCAwNGZlOTE4MDI5ZDlhODA0OTlmMTRlMTBjYzU2NGE1M2MyNTI1ODhjLi5jOGMzMzNlMzY5
NDcyNGFiOGY4NjkyNWRlYWIyMTNiZGIyNzUyOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAKQEAgLTUzLDMxICs1MywyNyBAQCBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhpbnQgaWQs
IEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2ZvcgogICAgIEFTU0VS
VChpZCA+IDApOwogfQogCi12b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcihD
Q0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNr
ZXIsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKK3ZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFk
c0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2Nj
bHVzaW9uVHJhY2tlciwgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSkKIHsKICAg
ICBjb25zdCBib29sIGZvclN1cmZhY2UgPSBmYWxzZTsKICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1
bGxlcihtX3F1YWRMaXN0LCBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QsIGxheWVyLCBvY2NsdXNpb25U
cmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCksIGZvclN1cmZhY2UpOwogCi0gICAgbGF5
ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7Ci0KLSAgICBtX2hh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBhcHBlbmRRdWFkc0RhdGEpOwogfQogCi12b2lkIENDUmVuZGVyUGFzczo6YXBw
ZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBD
Q1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tlcklt
cGwqIG9jY2x1c2lvblRyYWNrZXIpCit2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JS
ZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBDQ1JlbmRlclBhc3Mq
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lv
blRyYWNrZXIsIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgY29u
c3QgYm9vbCBmb3JTdXJmYWNlID0gdHJ1ZTsKICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlciht
X3F1YWRMaXN0LCBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2Vy
LCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCksIGZvclN1cmZhY2UpOwogCiAgICAgYm9vbCBpc1Jl
cGxpY2EgPSBmYWxzZTsKLSAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBpc1JlcGxpY2EsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MtPmlkKCkpOworICAg
IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGFwcGVuZFF1
YWRzRGF0YSwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKIAogICAg
IC8vIEFkZCByZXBsaWNhIGFmdGVyIHRoZSBzdXJmYWNlIHNvIHRoYXQgaXQgYXBwZWFycyBiZWxv
dyB0aGUgc3VyZmFjZS4KICAgICBpZiAobGF5ZXItPmhhc1JlcGxpY2EoKSkgewogICAgICAgICBp
c1JlcGxpY2EgPSB0cnVlOwotICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBpc1JlcGxpY2EsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MtPmlkKCkp
OworICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBhcHBlbmRRdWFkc0RhdGEsIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQo
KSk7CiAgICAgfQotCi0gICAgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2Ug
fD0gcXVhZEN1bGxlci5oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKTsKIH0K
IAogdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBs
KiByb290TGF5ZXIsIFNrQ29sb3Igc2NyZWVuQmFja2dyb3VuZENvbG9yLCBjb25zdCBDQ09jY2x1
c2lvblRyYWNrZXJJbXBsJiBvY2NsdXNpb25UcmFja2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApp
bmRleCA0YWFhZjQ3MTc1OWRmYjhiOWM4M2NhZjdmMzE2Zjc0ZjVmYjE1OGZmLi45ZWJlZDFiZDVk
ZThmMGFkY2VlNWIyOWQ3NjA3MmU3NTY4MzFhZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApA
QCAtNDEsNiArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIENDUmVuZGVyU3VyZmFjZTsKIAorc3RydWN0IENDQXBwZW5kUXVhZHNEYXRhOworCiAv
LyBBIGxpc3Qgb2YgQ0NEcmF3UXVhZCBvYmplY3RzLCBzb3J0ZWQgaW50ZXJuYWxseSBpbiBmcm9u
dC10by1iYWNrIG9yZGVyLgogY2xhc3MgQ0NRdWFkTGlzdCA6IHB1YmxpYyBWZWN0b3I8T3duUHRy
PENDRHJhd1F1YWQ+ID4gewogcHVibGljOgpAQCAtNjAsOCArNjIsOCBAQCBjbGFzcyBDQ1JlbmRl
clBhc3MgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3Jl
YXRlKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOwogCi0gICAgdm9pZCBhcHBlbmRR
dWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wm
IGhhZE1pc3NpbmdUaWxlcyk7Ci0gICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VM
YXllcihDQ0xheWVySW1wbCosIGNvbnN0IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVy
UGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCopOworICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JM
YXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBDQ0FwcGVuZFF1YWRz
RGF0YSYpOworICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXll
ckltcGwqLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2Nj
bHVzaW9uVHJhY2tlckltcGwqLCBDQ0FwcGVuZFF1YWRzRGF0YSYpOwogICAgIHZvaWQgYXBwZW5k
UXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZW5C
YWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmKTsKIAogICAgIGNv
bnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkTGlzdDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggZjM4OTc0MmEzZWFjNjM0NmY0YjEx
NGJmNmZhZDY0NTg5MzkwNWNmZC4uOWEyNmMxMDRmN2U4OWQ5OTQ1Y2U2NTQ0YjhmYjI1NDAwZmNl
YTNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0yOSwxMiArMjksMTEg
QEAKIAogI2luY2x1ZGUgIkNDUmVuZGVyU3VyZmFjZS5oIgogCisjaW5jbHVkZSAiQ0NBcHBlbmRR
dWFkc0RhdGEuaCIKICNpbmNsdWRlICJDQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJDQ0xheWVySW1wbC5oIgogI2luY2x1ZGUg
IkNDTWF0aFV0aWwuaCIKLSNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCi0jaW5jbHVkZSAiQ0NSZW5k
ZXJQYXNzLmgiCiAjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJD
Q1JlbmRlclBhc3NTaW5rLmgiCiAjaW5jbHVkZSAiQ0NTaGFyZWRRdWFkU3RhdGUuaCIKQEAgLTE5
MCw3ICsxODksNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUmVuZGVyUGFzc2VzKEND
UmVuZGVyUGFzc1NpbmsmIHBhc3NTaW5rKQogICAgIHBhc3NTaW5rLmFwcGVuZFJlbmRlclBhc3Mo
cGFzcy5yZWxlYXNlKCkpOwogfQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCkK
K3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywg
Q0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgYm9vbCBmb3JSZXBsaWNhLCBpbnQg
cmVuZGVyUGFzc0lkKQogewogICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xheWVy
LT5oYXNSZXBsaWNhKCkpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZh
Y2U6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sIGZvclJlcGxpY2EsIGlu
dCByZW4KICAgICAgICAgaW50IGdyZWVuID0gZm9yUmVwbGljYSA/ICBkZWJ1Z1JlcGxpY2FCb3Jk
ZXJDb2xvckdyZWVuIDogZGVidWdTdXJmYWNlQm9yZGVyQ29sb3JHcmVlbjsKICAgICAgICAgaW50
IGJsdWUgPSBmb3JSZXBsaWNhID8gZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JCbHVlIDogZGVidWdT
dXJmYWNlQm9yZGVyQ29sb3JCbHVlOwogICAgICAgICBTa0NvbG9yIGNvbG9yID0gU2tDb2xvclNl
dEFSR0IoZGVidWdTdXJmYWNlQm9yZGVyQWxwaGEsIHJlZCwgZ3JlZW4sIGJsdWUpOwotICAgICAg
ICBxdWFkU2luay5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgpKTsK
KyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRlcldp
ZHRoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQnkgdXNpbmcg
dGhlIHNhbWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxl
Y3Rpb24sCkBAIC0yMzgsNyArMjM3LDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sIGZvclJlcGxpY2EsIGludCByZW4KICAgICBJ
bnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lID0gY29udGVudHNDaGFuZ2VkKCkg
PyBtX2NvbnRlbnRSZWN0IDogSW50UmVjdCgpOwogCiAgICAgcXVhZFNpbmsuYXBwZW5kKENDUmVu
ZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBy
ZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIG1hc2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRT
aW5jZUxhc3RGcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXNrVGV4Q29vcmRTY2FsZVgsIG1hc2tUZXhDb29yZFNjYWxlWSwgbWFza1RleENv
b3JkT2Zmc2V0WCwgbWFza1RleENvb3JkT2Zmc2V0WSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2tUZXhDb29yZFNjYWxlWCwgbWFza1RleENv
b3JkU2NhbGVZLCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBtYXNrVGV4Q29vcmRPZmZzZXRZKSwgYXBw
ZW5kUXVhZHNEYXRhKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCBh
YTBlZTAxOGZjYWJlMzg3ZTJmZWNiMTE5YjNjOWUxOTQ3ZGFkOWFiLi4wOWEyODQ2NzZmMjI4MjI5
NDI1MjViMTI1ZjNhNjNmM2NjODdiY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApA
QCAtNDUsNiArNDUsOCBAQCBjbGFzcyBDQ1JlbmRlclBhc3NTaW5rOwogY2xhc3MgQ0NMYXllcklt
cGw7CiBjbGFzcyBUZXh0U3RyZWFtOwogCitzdHJ1Y3QgQ0NBcHBlbmRRdWFkc0RhdGE7CisKIGNs
YXNzIENDUmVuZGVyU3VyZmFjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJT
dXJmYWNlKTsKIHB1YmxpYzoKQEAgLTEwNSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgQ0NEYW1h
Z2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VUcmFja2Vy
LmdldCgpOyB9CiAKICAgICB2b2lkIGFwcGVuZFJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5r
Jik7Ci0gICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCBmb3JSZXBsaWNhLCBp
bnQgcmVuZGVyUGFzc0lkKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0Fw
cGVuZFF1YWRzRGF0YSYsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CiAKIHBy
aXZhdGU6CiAgICAgQ0NMYXllckltcGwqIG1fb3duaW5nTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggM2MxZjYwOGFlZjQ0NTMxYzZhZWY5YmRjYTA2
ZTZiN2NiZDY4NzA2NC4uMTc1ZWU2OWQ0YTAwMGZiZDI5OGVjMDg4MGI5YmJiMTQ2YzY1ZDNkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiQ0NTY3JvbGxiYXJMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIkND
UXVhZFNpbmsuaCIKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkND
U2Nyb2xsYmFyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNDVGV4dHVyZURyYXdR
dWFkLmgiCiAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIEZsb2F0UmVjdCB0b1VWUmVjdChjb25z
dCBXZWJSZWN0JiByLCBjb25zdCBJbnRSZWN0JiBib3VuZHMpCiAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4oci53aWR0aCkgLyBib3VuZHMud2lkdGgoKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHIuaGVpZ2h0KSAvIGJvdW5kcy5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgQ0NTY3Jv
bGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikK
K3ZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRT
aW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQogewogICAgIGJvb2wgcHJl
bXVsdGlwbGVkQWxwaGEgPSBmYWxzZTsKICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKQEAgLTk5
LDcgKzk5LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFk
U2luayYgcXVhZFNpbmssIGJvb2wmKQogICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgp
LCBjb250ZW50Qm91bmRzKCkpOwogCiAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShjcmVhdGVTaGFyZWRRdWFkU3RhdGUo
KSk7Ci0gICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUp
OworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlLCBh
cHBlbmRRdWFkc0RhdGEpOwogCiAgICAgV2ViUmVjdCB0aHVtYlJlY3QsIGJhY2tUcmFja1JlY3Qs
IGZvcmVUcmFja1JlY3Q7CiAgICAgbV9nZW9tZXRyeS0+c3BsaXRUcmFjaygmbV9zY3JvbGxiYXIs
IG1fZ2VvbWV0cnktPnRyYWNrUmVjdCgmbV9zY3JvbGxiYXIpLCBiYWNrVHJhY2tSZWN0LCB0aHVt
YlJlY3QsIGZvcmVUcmFja1JlY3QpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgQ0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAg
ICBpZiAobV90aHVtYlJlc291cmNlSWQgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QodGh1bWJSZWN0LngsIHRodW1iUmVjdC55LCB0
aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVjdC5oZWlnaHQpLCBtX3RodW1iUmVzb3VyY2VJZCwgcHJl
bXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CiAgICAgICAgIHF1YWQtPnNldE5lZWRz
QmxlbmRpbmcoKTsKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHF1YWQucmVsZWFzZSgpKTsKKyAg
ICAgICAgcXVhZFNpbmsuYXBwZW5kKHF1YWQucmVsZWFzZSgpLCBhcHBlbmRRdWFkc0RhdGEpOwog
ICAgIH0KIAogICAgIGlmICghbV9iYWNrVHJhY2tSZXNvdXJjZUlkKQpAQCAtMTE3LDEyICsxMTcs
MTIgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIGJvb2wmKQogCiAgICAgLy8gV2Ugb25seSBwYWludCB0aGUgdHJhY2sgaW4gdHdv
IHBhcnRzIGlmIHdlIHdlcmUgZ2l2ZW4gYSB0ZXh0dXJlIGZvciB0aGUgZm9yd2FyZCB0cmFjayBw
YXJ0LgogICAgIGlmIChtX2ZvcmVUcmFja1Jlc291cmNlSWQgJiYgIWZvcmVUcmFja1JlY3QuaXNF
bXB0eSgpKQotICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoZm9yZVRyYWNrUmVjdC54LCBmb3JlVHJhY2tSZWN0
LnksIGZvcmVUcmFja1JlY3Qud2lkdGgsIGZvcmVUcmFja1JlY3QuaGVpZ2h0KSwgbV9mb3JlVHJh
Y2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNrUmVjdCwg
Ym91bmRzUmVjdCksIGZsaXBwZWQpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVy
ZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KGZvcmVUcmFja1JlY3Qu
eCwgZm9yZVRyYWNrUmVjdC55LCBmb3JlVHJhY2tSZWN0LndpZHRoLCBmb3JlVHJhY2tSZWN0Lmhl
aWdodCksIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZSZWN0
KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNEYXRhKTsK
IAogICAgIC8vIE9yZGVyIG1hdHRlcnMgaGVyZTogc2luY2UgdGhlIGJhY2sgdHJhY2sgdGV4dHVy
ZSBpcyBiZWluZyBkcmF3biB0byB0aGUgZW50aXJlIGNvbnRlbnRzIHJlY3QsIHdlIG11c3QgYXBw
ZW5kIGl0IGFmdGVyIHRoZSB0aHVtYiBhbmQKICAgICAvLyBmb3JlIHRyYWNrIHF1YWRzLiBUaGUg
YmFjayB0cmFjayB0ZXh0dXJlIGNvbnRhaW5zIChhbmQgZGlzcGxheXMpIHRoZSBidXR0b25zLgog
ICAgIGlmICghYm91bmRzUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHF1YWRTaW5rLmFwcGVuZChD
Q1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdChib3VuZHNS
ZWN0KSwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBm
bGlwcGVkKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdChib3VuZHNSZWN0KSwgbV9iYWNrVHJhY2tSZXNv
dXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNE
YXRhKTsKIH0KIAogdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6ZGlkTG9zZUNvbnRleHQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggY2RhNDJkOGEwNjU1NGMw
N2Y1Zjc0ZGQxY2RhMzAxNjA3YWRmZTM1Zi4uM2U2Mjg2NzNiODUxZmQzNGNkMGVmOTNhMjBmNWZh
NTgyNDgyYzM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyOjpPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IENDQXBwZW5kUXVhZHNEYXRhJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9z
ZUNvbnRleHQoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVy
SW1wbC5jcHAKaW5kZXggZmUwMDA3ZjU1NGRkOWI4NzE4MDNiMjgwYzdhZDQyNDhiYmQ3NmU4Zi4u
MmU4YjcyM2YyODUwNzY3MWQ4MGI1MDExNjI5OTIyZjhmOWVmNzllYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNs
dWRlICJDQ1NvbGlkQ29sb3JMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIK
KyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkNDU29saWRDb2xvckRy
YXdRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTQ5LDEwICs0OSwxMCBAQCBDQ1NvbGlkQ29sb3JMYXllckltcGw6
On5DQ1NvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi12b2lkIENDU29saWRDb2xvckxheWVy
SW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKQordm9pZCBDQ1Nv
bGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0Fw
cGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQogewogICAgIENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hh
cmVkUXVhZFN0YXRlKCkpOwotICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hh
cmVkUXVhZFN0YXRlKTsKKyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJl
ZFF1YWRTdGF0ZSwgYXBwZW5kUXVhZHNEYXRhKTsKIAogICAgIC8vIFdlIGNyZWF0ZSBhIHNlcmll
cyBvZiBzbWFsbGVyIHF1YWRzIGluc3RlYWQgb2YganVzdCBvbmUgbGFyZ2Ugb25lIHNvIHRoYXQg
dGhlCiAgICAgLy8gY3VsbGVyIGNhbiByZWR1Y2UgdGhlIHRvdGFsIHBpeGVscyBkcmF3bi4KQEAg
LTYxLDcgKzYxLDcgQEAgdm9pZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyB4ICs9IG1fdGlsZVNpemUpIHsKICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkgKz0gbV90aWxlU2l6ZSkgewogICAgICAgICAgICAgSW50UmVjdCBzb2xpZFRpbGVSZWN0KHgs
IHksIG1pbih3aWR0aCAtIHgsIG1fdGlsZVNpemUpLCBtaW4oaGVpZ2h0IC0geSwgbV90aWxlU2l6
ZSkpOwotICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBzb2xpZFRpbGVSZWN0LCBiYWNrZ3JvdW5kQ29sb3IoKSkp
OworICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBzb2xpZFRpbGVSZWN0LCBiYWNrZ3JvdW5kQ29sb3IoKSksIGFw
cGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllcklt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29s
aWRDb2xvckxheWVySW1wbC5oCmluZGV4IGEyOTE0MDE3ZDAzOWEzZmIyMDVjYTRkYjhmMTc1OGFi
NjQxMTBmMjYuLmM3MDA2NzFhYTlmMmEzZTZjOWQ3NjJkZTRlNWE4NDNjMzJiNTA4M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29s
aWRDb2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdU
aWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
LCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKGludCBpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmNwcAppbmRleCA1OWRiYzhhYzAxNzY4MTQyZTQ3NTJhZTk0MDRjZTFmNzExMDEw
MjY0Li45OTQ0NjY4MjBmYmE0ZTUxOWViODY5NmQyMmI0Yjc0ZmJkMjE0NjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkNDVGV4dHVyZUxheWVySW1wbC5oIgogCi0jaW5jbHVkZSAiQ0NRdWFkU2luay5oIgorI2lu
Y2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NSZW5kZXJlci5oIgogI2lu
Y2x1ZGUgIkNDVGV4dHVyZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgpAQCAt
NTgsMTYgKzU4LDE2IEBAIHZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291
cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAgbV9leHRlcm5hbFRleHR1cmVSZXNv
dXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVy
ZShtX3RleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCit2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBl
bmRRdWFkc0RhdGEpCiB7CiAgICAgaWYgKCFtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0g
cXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKLSAg
ICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisgICAg
YXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUsIGFwcGVuZFF1
YWRzRGF0YSk7CiAKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3Vu
ZHMoKSk7Ci0gICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgbV9wcmVt
dWx0aXBsaWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpKTsKKyAgICBxdWFkU2luay5hcHBl
bmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBt
X2V4dGVybmFsVGV4dHVyZVJlc291cmNlLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91dlJlY3Qs
IG1fZmxpcHBlZCksIGFwcGVuZFF1YWRzRGF0YSk7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlTGF5ZXJJ
bXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXggNTVkNDhiNDUxM2FkMzYxODQ2ZjZhN2U1
ZGIxMTYwMjUxMzRkNTI2Yy4uYmVmYTI1NWUxODk4ZDk5Yzk5N2VhMTI4NzJmODg1ZWJiOTRiZThi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBw
ZW5kUXVhZHNEYXRhJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNv
dXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRl
eHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggYjYx
MWQ5ODkxYjY2Y2EyYmI4ZWI4YmQ0MmRiNDkxOGMyODRiYjU4YS4uMWM1ZjUyZGM2ODJlNDE5NGNl
MmU2Mjc5YTBjZGM1NDhlYmExNjQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5j
cHAKQEAgLTI5LDExICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiQ0NUaWxlZExheWVySW1wbC5oIgog
CisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAiQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVk
ZSAiQ0NMYXllclRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJDQ01hdGhVdGlsLmgiCi0jaW5jbHVk
ZSAiQ0NRdWFkU2luay5oIgogI2luY2x1ZGUgIkNDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKQEAgLTEyNSw3
ICsxMjUsNyBAQCBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXllckltcGw6OmNyZWF0ZVRpbGUoaW50
IGksIGludCBqKQogICAgIHJldHVybiBhZGRlZFRpbGU7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVy
SW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmIGhhZE1pc3NpbmdU
aWxlcykKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVh
ZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3QoKTsKIApAQCAtMTMzLDcg
KzEzMyw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1
YWRTdGF0ZShjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSk7Ci0gICAgYXBwZW5kRGVidWdCb3JkZXJR
dWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUpOworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVh
ZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlLCBhcHBlbmRRdWFkc0RhdGEpOwogCiAgICAgaW50
IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGls
ZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CkBAIC0xNDks
NyArMTQ5LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkU2luaywgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQogICAgICAgICAgICAgICAgICAgICBi
b3JkZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1Rp
bGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yUmVkLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNv
bG9yR3JlZW4sIGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JCbHVlKTsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yID0gU2tDb2xvclNl
dEFSR0IoZGVidWdUaWxlQm9yZGVyQWxwaGEsIGRlYnVnVGlsZUJvcmRlckNvbG9yUmVkLCBkZWJ1
Z1RpbGVCb3JkZXJDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckJsdWUpOwotICAgICAg
ICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBib3JkZXJDb2xvciwgZGVidWdUaWxlQm9yZGVyV2lk
dGgpKTsKKyAgICAgICAgICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYm9yZGVyQ29sb3IsIGRlYnVn
VGlsZUJvcmRlcldpZHRoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTE3MCw5ICsxNzAsOSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiAK
ICAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+cmVzb3VyY2VJZCgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGRyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoKSkKLSAgICAgICAg
ICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRTaW5rLmFwcGVuZChDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCkpOworICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRRdWFkc0RhdGEuaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRTaW5r
LmFwcGVuZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0
aWxlUmVjdCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBoYWRNaXNzaW5nVGlsZXMgfD0gcXVhZFNpbmsuYXBwZW5kKENDU29saWRD
b2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYmFja2dyb3Vu
ZENvbG9yKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kUXVhZHNEYXRhLmhhZE1pc3Np
bmdUaWxlcyB8PSBxdWFkU2luay5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBiYWNrZ3JvdW5kQ29sb3IoKSksIGFwcGVuZFF1YWRz
RGF0YSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTE5
OCw3ICsxOTgsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiAgICAgICAgICAgICBib29sIGJv
dHRvbUVkZ2VBQSA9IGogPT0gbV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAg
ICAgICAgICAgICBjb25zdCBHQzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3Jk
ZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQz
RDo6TkVBUkVTVDsKLSAgICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT5y
ZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBj
b250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJv
dHRvbUVkZ2VBQSkpOworICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDVGlsZURyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgdGlsZU9wYXF1ZVJlY3QsIHRpbGUt
PnJlc291cmNlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIs
IGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwg
Ym90dG9tRWRnZUFBKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCAxYmM2MGFiYTQ3MTM3YjBjMjE4ZWEwNWM4
ZTljOWYzMDZhZDM4OWE5Li42NDU2ZTRjMGI4NzZiODlmOTZmNTk5YmUyZWQ0MDA0MzM1YjM2OWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUaWxlZExheWVySW1wbCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBl
bmRRdWFkc0RhdGEmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IDY2MmNkMmYwM2MwZGI2MDQ3NjE5OWI2
YzMzNWJkZTFiYTYwN2RmNGUuLjM0NWVmODc2ZGYyYzY5MWRmMTIzYThmOTJlM2VhNmUyNTE3MTk2
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0yOSwxMCArMjksMTAg
QEAKIAogI2luY2x1ZGUgIkNDVmlkZW9MYXllckltcGwuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5k
UXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUg
IkNDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJDQ1Byb3h5LmgiCi0jaW5jbHVkZSAi
Q0NRdWFkU2luay5oIgogI2luY2x1ZGUgIkNDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUg
IkNDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgIkNDVGV4dHVyZURyYXdRdWFkLmgi
CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVy
bmFsKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICAgICAgbV9leHRl
cm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlRnJv
bUV4dGVybmFsVGV4dHVyZShtX2ZyYW1lLT50ZXh0dXJlSWQoKSk7CiB9CiAKLXZvaWQgQ0NWaWRl
b0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKQordm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NB
cHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2lu
ay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwotICAgIGFwcGVu
ZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsKKyAgICBhcHBlbmRE
ZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSwgYXBwZW5kUXVhZHNEYXRh
KTsKIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIHBhc3MgcXVhZHMgb3V0IG9mIHByb2Nlc3MsIHdl
IG5lZWQgdG8gZG91YmxlLWJ1ZmZlciwgb3IKICAgICAvLyBvdGhlcndpc2Ugc3luY2hvbml6ZSB1
c2Ugb2YgYWxsIHRleHR1cmVzIGluIHRoZSBxdWFkLgpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wm
KQogICAgICAgICBjb25zdCBGcmFtZVBsYW5lJiB1UGxhbmUgPSBtX2ZyYW1lUGxhbmVzW1dlYktp
dDo6V2ViVmlkZW9GcmFtZTo6dVBsYW5lXTsKICAgICAgICAgY29uc3QgRnJhbWVQbGFuZSYgdlBs
YW5lID0gbV9mcmFtZVBsYW5lc1tXZWJLaXQ6OldlYlZpZGVvRnJhbWU6OnZQbGFuZV07CiAgICAg
ICAgIE93blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IHl1dlZpZGVvUXVhZCA9IENDWVVWVmlkZW9E
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHlQbGFuZSwgdVBsYW5l
LCB2UGxhbmUpOwotICAgICAgICBxdWFkU2luay5hcHBlbmQoeXV2VmlkZW9RdWFkLnJlbGVhc2Uo
KSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZCh5dXZWaWRlb1F1YWQucmVsZWFzZSgpLCBhcHBl
bmRRdWFkc0RhdGEpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQTogewpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKQogICAgICAgICBGbG9h
dFJlY3QgdXZSZWN0KDAsIDAsIHdpZHRoU2NhbGVGYWN0b3IsIDEpOwogICAgICAgICBib29sIGZs
aXBwZWQgPSBmYWxzZTsKICAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJl
UXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVj
dCwgcGxhbmUucmVzb3VyY2VJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQp
OwotICAgICAgICBxdWFkU2luay5hcHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKKyAgICAg
ICAgcXVhZFNpbmsuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRh
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQ6IHsKQEAgLTIyMCwxOSArMjIwLDE5IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKQogICAgICAgICBGbG9hdFJl
Y3QgdXZSZWN0KDAsIDAsIDEsIDEpOwogICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKICAg
ICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1
cmVSZXNvdXJjZSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwotICAgICAg
ICBxdWFkU2luay5hcHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNp
bmsuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdM
RV9BUkI6IHsKICAgICAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2ZyYW1lLT53aWR0aCgpLCBt
X2ZyYW1lLT5oZWlnaHQoKSk7IAogICAgICAgICBPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4g
aW9TdXJmYWNlUXVhZCA9IENDSU9TdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCB0ZXh0dXJlU2l6ZSwgbV9mcmFtZS0+dGV4dHVyZUlkKCksIENDSU9TdXJm
YWNlRHJhd1F1YWQ6OlVuZmxpcHBlZCk7Ci0gICAgICAgIHF1YWRTaW5rLmFwcGVuZChpb1N1cmZh
Y2VRdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChpb1N1cmZhY2VRdWFk
LnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfRVhURVJOQUxfT0VTOiB7CiAg
ICAgICAgIC8vIFN0cmVhbVRleHR1cmUgaGFyZHdhcmUgZGVjb2Rlci4KICAgICAgICAgT3duUHRy
PENDU3RyZWFtVmlkZW9EcmF3UXVhZD4gc3RyZWFtVmlkZW9RdWFkID0gQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9mcmFtZS0+dGV4dHVy
ZUlkKCksIG1fc3RyZWFtVGV4dHVyZU1hdHJpeCk7Ci0gICAgICAgIHF1YWRTaW5rLmFwcGVuZChz
dHJlYW1WaWRlb1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHN0cmVh
bVZpZGVvUXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IDJj
NTRlMzUxMzljMjNmMmNjMjAwZmE3NGRhYWI1MjE2MzhiYjY3MjUuLmY4ZTg5NzQxZTg5NWExNTFl
NjJiZGZhZmQ4MzdhYWFiODkxMDFmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhh
ZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2
b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCAxMDIyNmIzOGQ1ODBlNWUxMDhlYjQ2ZWI4OTg1
NWRlYWM3ZWY2OTkzLi41NTBkODFjYzA5MDk4YmY5NjZiYWQwMTIyOGVkNjgzMGEzMTFlZjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIgogCiAjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCisjaW5j
bHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJDQ0hlYWRzVXBEaXNwbGF5TGF5
ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ0NJT1N1cmZhY2VMYXllckltcGwuaCIKICNpbmNsdWRlICJD
Q0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAi
Q0NMYXllclRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIK
LSNpbmNsdWRlICJDQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJDQ1JlbmRlclBhc3NEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgIkNDUmVuZGVyZXJHTC5oIgogI2luY2x1ZGUgIkNDU2Nyb2xsYmFyR2Vv
bWV0cnlGaXhlZFRodW1iLmgiCkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBjbGFzcyBCbGVuZFN0YXRl
Q2hlY2tMYXllciA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3Rh
dGVDaGVja0xheWVyKGlkLCByZXNvdXJjZVByb3ZpZGVyKSk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpIE9WRVJSSURFCisgICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1
YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9xdWFk
c0FwcGVuZGVkID0gdHJ1ZTsKIApAQCAtMTM2MSw3ICsxMzYxLDcgQEAgcHVibGljOgogICAgICAg
ICB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KG1fcXVhZFZpc2libGVS
ZWN0KTsKICAgICAgICAgRVhQRUNUX0VRKG1fYmxlbmQsIHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5u
ZWVkc0JsZW5kaW5nKCkpOwogICAgICAgICBFWFBFQ1RfRVEobV9oYXNSZW5kZXJTdXJmYWNlLCAh
IXJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIHF1YWRTaW5rLmFwcGVuZCh0ZXN0QmxlbmRpbmdE
cmF3UXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQodGVzdEJsZW5kaW5n
RHJhd1F1YWQucmVsZWFzZSgpLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgIH0KIAogICAgIHZvaWQg
c2V0RXhwZWN0YXRpb24oYm9vbCBibGVuZCwgYm9vbCBoYXNSZW5kZXJTdXJmYWNlKQpAQCAtMTg4
MCwxNCArMTg4MCwxNCBAQCBjbGFzcyBGYWtlTGF5ZXJXaXRoUXVhZHMgOiBwdWJsaWMgQ0NMYXll
ckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEZha2VMYXllcldpdGhRdWFk
cz4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEZha2VMYXllcldpdGhRdWFk
cyhpZCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVh
ZFNpbmssIGJvb2wmKSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUg
PSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwog
CiAgICAgICAgIFNrQ29sb3IgZ3JheSA9IFNrQ29sb3JTZXRSR0IoMTAwLCAxMDAsIDEwMCk7CiAg
ICAgICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoMCwgMCksIGNvbnRlbnRCb3VuZHMoKSk7
CiAgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiBteVF1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3UXVh
ZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGdyYXkpOwotICAgICAgICBxdWFk
U2luay5hcHBlbmQobXlRdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZCht
eVF1YWQucmVsZWFzZSgpLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgIH0KIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCmluZGV4IDczMThmMTM2Y2NiMDY4YjU5N2FjZWU1ODRlODZmNzVmYTdiNDZjODMuLjU5MTdh
ZGIyNjQ4NWVmN2M2MmU2NjYwMjAxODYyNzAzY2I0YzkwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjQwOSw3
ICsyNDA5LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5FdmljdGlvblRlc3RMYXll
ckltcGwoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwg
Ym9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgQVNTRVJUX1RSVUUobV9oYXNUZXh0dXJlKTsKICAgICAgICAgQVNTRVJU
X05FKDB1LCBsYXllclRyZWVIb3N0SW1wbCgpLT5yZXNvdXJjZVByb3ZpZGVyKCktPm51bVJlc291
cmNlcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFk
Q3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxl
clRlc3QuY3BwCmluZGV4IDJjNWU4ODU5YzAxMzZkMWY2Y2YwNmI2Y2VhZGM2NDFmMWM1YTIyZmQu
LmI4ZGMzMGY3MjE0OGQ1ZGU3YzdlMzIxNDhkM2NlODllMzI3MTYwNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogCiAjaW5jbHVkZSAiQ0NRdWFkQ3VsbGVyLmgiCiAKKyNpbmNsdWRlICJDQ0FwcGVu
ZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUaWxpbmdEYXRhLmgiCiAjaW5jbHVkZSAi
Q0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgIkNDT2NjbHVzaW9uVHJhY2tlci5oIgpAQCAtMTAwLDgg
KzEwMSw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBD
Q1NoYXJlZFF1YWRTdGF0ZUxpc3QmIHNoYXJlZFN0YXRlCiB7CiAgICAgb2NjbHVzaW9uVHJhY2tl
ci5lbnRlckxheWVyKGl0KTsKICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKLSAgICBsYXllci0+YXBwZW5kUXVh
ZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICBDQ0FwcGVuZFF1YWRzRGF0YSBk
YXRhOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBkYXRhKTsKICAgICBvY2Ns
dXNpb25UcmFja2VyLmxlYXZlTGF5ZXIoaXQpOwogICAgICsraXQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAppbmRleCAz
ZjVjNDBiZGJiMTY2OTQ1YmM2NzZmY2QwM2Q2ZjE3MDQxZWJiMTEwLi4wNjY5M2YzMzc0ZjA5ZTA1
ODMyN2M2OTU1MWMyMGZmMjk3ZDAxNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2luY2x1ZGUgIkNDUmVuZGVyU3VyZmFjZS5oIgogCisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0Rh
dGEuaCIKICNpbmNsdWRlICJDQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDUmVuZGVyUGFzc1Np
bmsuaCIKICNpbmNsdWRlICJDQ1NoYXJlZFF1YWRTdGF0ZS5oIgpAQCAtMTIwLDkgKzEyMSwxMCBA
QCBURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHNhbml0eUNoZWNrU3VyZmFjZUNyZWF0ZXNDb3Jy
ZWN0U2hhcmVkUXVhZFN0YXRlKQogICAgIENDUXVhZExpc3QgcXVhZExpc3Q7CiAgICAgQ0NTaGFy
ZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlTGlzdDsKICAgICBNb2NrQ0NRdWFkQ3VsbGVyIG1v
Y2tRdWFkQ3VsbGVyKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QpOworICAgIENDQXBwZW5kUXVh
ZHNEYXRhIGFwcGVuZFF1YWRzRGF0YTsKIAogICAgIGJvb2wgZm9yUmVwbGljYSA9IGZhbHNlOwot
ICAgIHJlbmRlclN1cmZhY2UtPmFwcGVuZFF1YWRzKG1vY2tRdWFkQ3VsbGVyLCBmb3JSZXBsaWNh
LCAxKTsKKyAgICByZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyhtb2NrUXVhZEN1bGxlciwgYXBw
ZW5kUXVhZHNEYXRhLCBmb3JSZXBsaWNhLCAyKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgc2hhcmVk
U3RhdGVMaXN0LnNpemUoKSk7CiAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSA9IHNoYXJlZFN0YXRlTGlzdFswXS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDIy
MDE4OWI0MTY0M2NkOTdkZDVhZGRjMDM2NmNkZjc1OGViZjhhOGUuLmIzMzBhYmNhYTA3YTFkMGM2
YTM2YTNlYzgwMGVhZmIxODE4N2ViYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogCiAjaW5jbHVkZSAiQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRl
ICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgIkNDU29saWRDb2xvckRy
YXdRdWFkLmgiCkBAIC01Myw4ICs1NCw4IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVz
dCwgdmVyaWZ5VGlsaW5nQ29tcGxldGVBbmROb092ZXJsYXApCiAgICAgbGF5ZXItPmNyZWF0ZVJl
bmRlclN1cmZhY2UoKTsKICAgICBsYXllci0+c2V0UmVuZGVyVGFyZ2V0KGxheWVyLmdldCgpKTsK
IAotICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgQ0NBcHBlbmRRdWFkc0RhdGEg
ZGF0YTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgZGF0YSk7CiAKICAgICB2
ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCB2aXNpYmxl
Q29udGVudFJlY3QpOwogfQpAQCAtNzcsOCArNzgsOCBAQCBURVNUKENDU29saWRDb2xvckxheWVy
SW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5ZXIt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBsYXllci0+c2V0UmVuZGVyVGFyZ2V0KGxheWVy
LmdldCgpKTsKIAotICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgbGF5ZXIt
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgQ0NBcHBlbmRR
dWFkc0RhdGEgZGF0YTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgZGF0YSk7
CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAg
IEVYUEVDVF9FUShDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWRDdWxsZXIu
cXVhZExpc3QoKVswXS5nZXQoKSktPmNvbG9yKCksIHRlc3RDb2xvcik7CkBAIC0xMDIsOCArMTAz
LDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJpZnlDb3JyZWN0T3BhY2l0
eUluUXVhZCkKICAgICBsYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIGxheWVyLT5z
ZXRSZW5kZXJUYXJnZXQobGF5ZXIuZ2V0KCkpOwogCi0gICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMg
PSBmYWxzZTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1Rp
bGVzKTsKKyAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgIGxheWVyLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCBkYXRhKTsKIAogICAgIEFTU0VSVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0
KCkuc2l6ZSgpLCAxVSk7CiAgICAgRVhQRUNUX0VRKG9wYWNpdHksIENDU29saWRDb2xvckRyYXdR
dWFkOjptYXRlcmlhbENhc3QocXVhZEN1bGxlci5xdWFkTGlzdCgpWzBdLmdldCgpKS0+b3BhY2l0
eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJJbXBsVGVzdC5jcHAKaW5kZXggOGI0YmQyMGU4ZDljYTIyMTQzZjEyZTlmN2NlNWZhNzdkOTcw
ZTc2MS4uYzQ5ZTEyYzJlNzIyMDdjZWQwYWM4MjM3ZTM1NGQ3YWNmMmI2Njc1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNDVGlsZWRMYXllckltcGwuaCIKIAor
I2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21t
b24uaCIKICNpbmNsdWRlICJDQ0xheWVyVGlsaW5nRGF0YS5oIgogI2luY2x1ZGUgIkNDU2luZ2xl
VGhyZWFkUHJveHkuaCIKQEAgLTc2LDggKzc3LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVz
dCwgZW1wdHlRdWFkTGlzdCkKICAgICB7CiAgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdE
YXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxl
cjsKLSAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXIt
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIENDQXBw
ZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBkYXRhKTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgbnVtVGlsZXMgPSBudW1UaWxlc1ggKiBu
dW1UaWxlc1k7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgp
LCBudW1UaWxlcyk7CiAgICAgfQpAQCAtODgsOCArODksOCBAQCBURVNUKENDVGlsZWRMYXllcklt
cGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KEludFJlY3QoKSk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwot
ICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBw
ZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAgICAgQ0NBcHBlbmRR
dWFkc0RhdGEgZGF0YTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRh
dGEpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUp
OwogICAgIH0KIApAQCAtMTAxLDggKzEwMiw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3Qs
IGVtcHR5UXVhZExpc3QpCiAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3Qob3V0
c2lkZUJvdW5kcyk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAg
ICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAgICAgQ0NBcHBlbmRRdWFk
c0RhdGEgZGF0YTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEp
OwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwog
ICAgIH0KIApAQCAtMTEyLDggKzExMyw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVt
cHR5UXVhZExpc3QpCiAgICAgICAgIGxheWVyLT5zZXRTa2lwc0RyYXcodHJ1ZSk7CiAKICAgICAg
ICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIGhhZE1pc3NpbmdU
aWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFk
TWlzc2luZ1RpbGVzKTsKKyAgICAgICAgQ0NBcHBlbmRRdWFkc0RhdGEgZGF0YTsKKyAgICAgICAg
bGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEpOwogICAgICAgICBFWFBFQ1RfRVEo
cXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIH0KQEAgLTEzMiwxMCAr
MTMzLDEwIEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAg
ICAvLyBObyBjaGVja2VyYm9hcmRpbmcKICAgICB7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIg
cXVhZEN1bGxlcjsKLSAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKLSAgICAg
ICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAg
ICAgIENDQXBwZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBkYXRhKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3Qo
KS5zaXplKCksIDR1KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGhhZE1pc3NpbmdUaWxlcyk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgp
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOwpAQCAtMTQ4LDkgKzE0OSw5IEBAIFRFU1QoQ0NU
aWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICAvLyBBbGwgY2hlY2tlcmJv
YXJkaW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAg
ICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwotICAgICAgICBFWFBFQ1RfVFJVRSho
YWRNaXNzaW5nVGlsZXMpOworICAgICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgICAg
ICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgZGF0YSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKGRhdGEuaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIu
cXVhZExpc3QoKS5zaXplKCksIDR1KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBx
dWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfTkUo
cXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENv
bnRlbnQpOwpAQCAtMTY0LDggKzE2NSw4IEBAIHN0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExp
c3QmIHF1YWRzLCBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3QmIHNoYXJlZFN0YXRlcywgSW50CiAgICAg
bGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogCiAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFk
Q3VsbGVyKHF1YWRzLCBzaGFyZWRTdGF0ZXMpOwotICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0g
ZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxl
cyk7CisgICAgQ0NBcHBlbmRRdWFkc0RhdGEgZGF0YTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgZGF0YSk7CiB9CiAKIC8vIFRlc3Qgd2l0aCBib3RoIGJvcmRlciB0ZXhlbHMg
YW5kIHdpdGhvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01v
Y2tDQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVh
ZEN1bGxlci5oCmluZGV4IDU5YTAwNzNjZTE0ZGUwYjczNDZmMTY0ODM3MmQwZDZmMzc2YTEzYjQu
LmY5Mzc0YTU4NDNjMDA4OTcyMzZjZmNlZGVlNzIxY2NiOGNkZWY2ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2FjdGl2ZVNoYXJlZFF1YWRTdGF0ZUxpc3QoZXh0ZXJu
YWxTaGFyZWRRdWFkU3RhdGVMaXN0KQogICAgIHsgfQogCi0gICAgdmlydHVhbCBib29sIGFwcGVu
ZChXVEY6OlBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gbmV3UXVhZCkgT1ZFUlJJREUKKyAgICB2aXJ0
dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gbmV3UXVhZCwgQ0NRdWFkU2lu
a0RhdGEmKSBPVkVSUklERQogICAgIHsKICAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IGRyYXdR
dWFkID0gbmV3UXVhZDsKICAgICAgICAgaWYgKCFkcmF3UXVhZC0+cXVhZFJlY3QoKS5pc0VtcHR5
KCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160831</attachid>
            <date>2012-08-27 15:44:29 -0700</date>
            <delta_ts>2012-08-27 16:39:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95109-20120827184421.patch</filename>
            <type>text/plain</type>
            <size>57833</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZkYTQwMjQ1NmU0ZjZj
M2M2YzhjM2E0Zjc2YzM3MWMxNzdmYWVmYi4uODdmNDgzZTk1Y2Q3ODYzZTc2OTQ4NDFmZDU4YWE2
NmViYWExOWZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTA4LTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQSBn
ZW5lcmFsIG1lY2hhbmlzbSBmb3IgcGFzc2luZyBkYXRhIGludG8gYW5kIG91dCBvZiBhcHBlbmRR
dWFkcyBhbmQgcXVhZEN1bGxlciB2aWEgQ0NBcHBlbmRRdWFkc0RhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGFwcGVuZFF1YWRzKCkgbWV0aG9k
IGhhcyBhIG51bWJlciBvZiBvdXQtcGFyYW1ldGVycyB0aGF0IGFyZSBuZWVkZWQKKyAgICAgICAg
YnkgZGlmZmVyZW50IHN0ZXBzIGluIHRoZSBhcHBlbmQgcHJvY2VzczoKKyAgICAgICAgLSBoYWRN
aXNzaW5nVGlsZXMgaXMgbmVlZGVkIGJ5IHRoZSBsYXllcnMgdG8gcmVwb3J0IGNoZWNrZXJib2Fy
ZHMuCisgICAgICAgIC0gaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIGlzIG5l
ZWRlZCBieSBDQ1F1YWRDdWxsZXIgdG8KKyAgICAgICAgcmVwb3J0IG9jY2x1c2lvbi4KKworICAg
ICAgICBDdXJyZW50bHkgb25lIGlzIHBsdW1iZWQgdGhyb3VnaCBmdW5jdGlvbiBhcmd1bWVudHMs
IGFuZCBvbmUgaXMKKyAgICAgICAgcGx1bWJlZCBhcyBhIG1lbWJlciB2YXJpYWJsZSBvbiB0aGUg
Q0NRdWFkQ3VsbGVyIGluc3RhbmNlLgorCisgICAgICAgIFdlIHdpbGwgYWxzbyBuZWVkIGFuIGlu
LXBhcmFtZXRlciBmb3IgdGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgZm9yCisgICAgICAgIHVi
ZXJjb21wLiBJbnN0ZWFkIG9mIGNvbnRpbnVvdXNseSBhZGRpbmcgbW9yZSBwbHVtYmluZyBmb3Ig
dGhlc2UKKyAgICAgICAgcGFyYW1ldGVycywgd2UgY3JlYXRlIGEgZ2VuZXJhbCBtYWNoYW5pc20g
dG8gZ2V0IGRhdGEgdG8gYW5kIGZyb20gdGhlCisgICAgICAgIHJpZ2h0IHBsYWNlcy4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOyBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLiBT
cGVjaWZpY2FsbHksCisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGwgdGVzdHMgZm9yIG1pc3Np
bmcvY2hlY2tlcmJvYXJkIHRpbGVzIGFuZAorICAgICAgICBzdXJmYWNlLWV4dGVybmFsIG9jY2x1
c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5k
UXVhZHNEYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0FwcGVuZFF1YWRzRGF0YTo6Q0NBcHBlbmRRdWFkc0RhdGEp
OgorICAgICAgICAoQ0NBcHBlbmRRdWFkc0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllcklt
cGwuaDoKKyAgICAgICAgKENDSGVhZHNVcERpc3BsYXlMYXllckltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwu
aDoKKyAgICAgICAgKENDSU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoQ0NM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3Vs
bGVyOjpDQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjphcHBl
bmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxl
ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ0NRdWFkU2luayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTY3Jv
bGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU29saWRDb2xvckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29s
b3JMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKENDU29saWRDb2xv
ckxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1w
bDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZUxheWVySW1wbC5oOgorICAgICAgICAoQ0NUZXh0dXJlTGF5ZXJJbXBsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6
CisgICAgICAgIChDQ1RpbGVkTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJ
bXBsKToKKwogMjAxMi0wOC0yNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtWOF0gaW5pdENvbnRleHRJZk5lZWRlZCBpcyBvdmVybHkgc3BlY2lmaWMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTQ3ZDE1N2I5YTE4MjA3ZDBmNThhMGUxNWRkNmQ2MGZi
MzhkY2FiMy4uNTM2YWJiOGQ2NTQwNWM4NzIwYmM1Yzk5MDU4YTE3OGI1MWM0NjU2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wOC0yNyAgRGFuYSBK
YW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEEgZ2Vu
ZXJhbCBtZWNoYW5pc20gZm9yIHBhc3NpbmcgZGF0YSBpbnRvIGFuZCBvdXQgb2YgYXBwZW5kUXVh
ZHMgYW5kIHF1YWRDdWxsZXIgdmlhIENDQXBwZW5kUXVhZHNEYXRhCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEwOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byB1c2UgdGhlIG5l
dyBkYXRhIHN0cnVjdHVyZS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRl
clN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxU
ZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAgKiB0
ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1v
bjo6VEVTVCk6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Z2V0UXVhZHMpOgorICAgICAg
ICAqIHRlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaDoKKwogMjAxMi0wOC0yNyAgQWRyaWVubmUgV2Fs
a2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUHJldmVudCBzY3Jv
bGxiYXIgdGh1bWIgc2l6ZSBmcm9tIGNoYW5naW5nIGR1cmluZyBjb21wb3NpdG9yIHpvb20KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
QXBwZW5kUXVhZHNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1M2ZkYmJmMDYzNmZkMjQ3
MDA5NWQyNGMwN2NkOWMxMWMyMjg3N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0YS5oCkBAIC0w
LDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDQXBwZW5kUXVhZHNEYXRhX2gKKyNkZWZpbmUg
Q0NBcHBlbmRRdWFkc0RhdGFfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDQ0Fw
cGVuZFF1YWRzRGF0YSB7CisgICAgQ0NBcHBlbmRRdWFkc0RhdGEoKQorICAgICAgICA6IGhhZE9j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShmYWxzZSkKKyAgICAgICAgLCBoYWRNaXNz
aW5nVGlsZXMoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIC8vIFNldCBieSB0aGUgUXVhZEN1
bGxlci4KKyAgICBib29sIGhhZE9jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKKyAg
ICAvLyBTZXQgYnkgdGhlIGxheWVyIGFwcGVuZGluZyBxdWFkcy4KKyAgICBib29sIGhhZE1pc3Np
bmdUaWxlczsKK307CisKK30KKyNlbmRpZiAvLyBDQ0NDQXBwZW5kUXVhZHNEYXRhX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXlMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAKaW5kZXggOTlkZjBl
YTU3ZWJjOWFlMzc3MTU4NmQ2ODFjMTJmYjc2NzMzNTM2Yi4uNTA4YTUwYmZmOTM2ZjFlMjY1NmYx
NTYxYjVjMjhjYjllZDlkMjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIp
CiAgICAgICAgIG1faHVkVGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGJv
dW5kcygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0
dXJlVXNhZ2VBbnkpOwogfQogCi12b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxh
eUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVh
ZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIENDSGVhZHNVcERpc3Bs
YXlMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAg
ICBib29sIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAgICAgRmxvYXRSZWN0IHV2UmVjdCgw
LCAwLCAxLCAxKTsKICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKLSAgICBxdWFkU2luay5hcHBl
bmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBt
X2h1ZFRleHR1cmUtPmlkKCksIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7
CisgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgbV9odWRUZXh0dXJlLT5pZCgpLCBwcmVtdWx0aXBsaWVkQWxwaGEs
IHV2UmVjdCwgZmxpcHBlZCksIGFwcGVuZFF1YWRzRGF0YSk7CiB9CiAKIHZvaWQgQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbDo6dXBkYXRlSHVkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJl
c291cmNlUHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsLmgKaW5kZXggZjdkNDc3ZmZmOThkZTA3OTYwZmFiMzA3ZjI1MTBjNzBhODA0M2Y4NS4uYTRk
ZDc0MTgzZjZmNWNhMWM5ZTM2YjI4YzIwODE1YTE1YWUwNTgzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IENDQXBwZW5kUXVhZHNEYXRhJikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVIdWRUZXh0dXJl
KENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3Vy
Y2VQcm92aWRlciopIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVy
SW1wbC5jcHAKaW5kZXggOWY2OWUyMzhmMjdlOTRiOTA1NTE3ZTUxOGVhY2Q5NTBjZmNkN2UzYi4u
NTI0MWMwYmVkZjljZmNjOWM1ZDMzYjFhZTAwMTQxMDcwMDRiMTQ0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQgQ0NJ
T1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikKICAgICB9CiB9CiAKLXZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1
YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYg
YXBwZW5kUXVhZHNEYXRhKQogewogICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkp
OwotICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsK
KyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSwgYXBw
ZW5kUXVhZHNEYXRhKTsKIAogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgY29udGVu
dEJvdW5kcygpKTsKLSAgICBxdWFkU2luay5hcHBlbmQoQ0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1faW9TdXJmYWNlU2l6ZSwgbV9pb1N1cmZh
Y2VUZXh0dXJlSWQsIENDSU9TdXJmYWNlRHJhd1F1YWQ6OkZsaXBwZWQpKTsKKyAgICBxdWFkU2lu
ay5hcHBlbmQoQ0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVh
ZFJlY3QsIG1faW9TdXJmYWNlU2l6ZSwgbV9pb1N1cmZhY2VUZXh0dXJlSWQsIENDSU9TdXJmYWNl
RHJhd1F1YWQ6OkZsaXBwZWQpLCBhcHBlbmRRdWFkc0RhdGEpOwogfQogCiB2b2lkIENDSU9TdXJm
YWNlTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5k
ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5kZXggM2E1
NWJmMmUyZTZmMmFmMzMwNGUwMDA3NWFmZDM4MzcyMmU0NzlhMC4uZmJiYzA0ZmJjYTQ0YzIzOGEw
ZmRiZDcyMjc4MDhlNTM2MjcwMWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVy
SW1wbC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SU9TdXJmYWNl
UHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJZCwgY29uc3QgSW50U2l6ZSYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwg
Q0NBcHBlbmRRdWFkc0RhdGEmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJh
dyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9z
ZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCBlNmRlMDBl
MjQxODMyOWI5MTUyOTg5ZTUzMjM1Y2FmM2M3NmEwN2QyLi4zODAwYjA4NzZhZDUxOTdlYmNkZTJm
YmZhNGZlNmMyNDNkMWNiZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xNjYsMTMg
KzE2NiwxMyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciop
CiAjZW5kaWYKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKEND
UXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKSBjb25zdAordm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVh
ZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKSBjb25zdAogewogICAgIGlmICgh
aGFzRGVidWdCb3JkZXJzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgY29udGVu
dFJlY3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVj
dCwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCkpKTsKKyAgICBxdWFkTGlz
dC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBj
b250ZW50UmVjdCwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCkpLCBhcHBl
bmRRdWFkc0RhdGEpOwogfQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NMYXll
ckltcGw6OmNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRl
eCBlMTJiMWIxYTdjMWU5N2QwMTQzOThjMzMyMzc5YzM4OWM3NGFlMWI2Li5mOGFkMDY3MDFhNjBl
YTk4ZDBiYWNlMzg1YjBkMzcxMzM0OWUyZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTQ3
LDEyICs0NywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJTb3J0ZXI7
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NSZW5kZXJlcjsKIGNsYXNzIEND
UXVhZFNpbms7CitjbGFzcyBDQ1JlbmRlcmVyOwogY2xhc3MgQ0NTY3JvbGxiYXJBbmltYXRpb25D
b250cm9sbGVyOwogY2xhc3MgQ0NTY3JvbGxiYXJMYXllckltcGw7CiBjbGFzcyBMYXllckNocm9t
aXVtOwogCitzdHJ1Y3QgQ0NBcHBlbmRRdWFkc0RhdGE7CisKIGNsYXNzIENDTGF5ZXJJbXBsIDog
cHVibGljIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlKGludCBpZCkKQEAgLTk1LDcgKzk3
LDcgQEAgcHVibGljOgogICAgIC8vIHRoZSBsYXllciBpcyBkZXN0cm95ZWQuIFRvIGVuZm9yY2Ug
dGhpcywgYW55IGNsYXNzIHRoYXQgb3ZlcnJpZGVzCiAgICAgLy8gd2lsbERyYXcvZGlkRHJhdyBt
dXN0IGNhbGwgdGhlIGJhc2UgY2xhc3MgdmVyc2lvbi4KICAgICB2aXJ0dWFsIHZvaWQgd2lsbERy
YXcoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogICAgIHZpcnR1YWwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0OwpA
QCAtMjc0LDcgKzI3Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ0xh
eWVySW1wbChpbnQpOwogCi0gICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkU2lu
ayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CisgICAgdm9pZCBhcHBlbmREZWJ1
Z0JvcmRlclF1YWQoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgQ0NBcHBl
bmRRdWFkc0RhdGEmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCB3cml0
ZUluZGVudChUZXh0U3RyZWFtJiwgaW50IGluZGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IGVkMDc5Zjc4MjlhYzEwNGY2NzhiNjc5NTUyN2M0MjFhNzRl
YjE1MjkuLjkxODMzYWYxZjQzMzkzMmRmMjUwMGJkNDVkYmQxZThhYjdhYTM5ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogCiAjaW5jbHVkZSAiQ0NBY3RpdmVHZXN0dXJl
QW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIKICNpbmNsdWRlICJD
Q0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJDQ0RlYnVnUmVjdEhpc3RvcnkuaCIKICNpbmNs
dWRlICJDQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC0zMDYsMjcgKzMwNywzMCBAQCBib29s
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZy
YW1lKQogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5
cGU6OmJlZ2luKGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgaW50IHRhcmdldFJlbmRlclBhc3NJZCA9IGl0LnRhcmdldFJlbmRlclN1cmZh
Y2VMYXllcigpLT5pZCgpOwogICAgICAgICBDQ1JlbmRlclBhc3MqIHRhcmdldFJlbmRlclBhc3Mg
PSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmdldCh0YXJnZXRSZW5kZXJQYXNzSWQpOwotICAgICAg
ICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwogCiAgICAgICAgIG9jY2x1c2lvblRyYWNr
ZXIuZW50ZXJMYXllcihpdCk7CiAKKyAgICAgICAgQ0NBcHBlbmRRdWFkc0RhdGEgYXBwZW5kUXVh
ZHNEYXRhOworCiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3Vy
ZmFjZSgpKSB7CiAgICAgICAgICAgICBpbnQgY29udHJpYnV0aW5nUmVuZGVyUGFzc0lkID0gaXQt
PmlkKCk7CiAgICAgICAgICAgICBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3Mg
PSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmdldChjb250cmlidXRpbmdSZW5kZXJQYXNzSWQpOwot
ICAgICAgICAgICAgdGFyZ2V0UmVuZGVyUGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNl
TGF5ZXIoKml0LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLCAmb2NjbHVzaW9uVHJhY2tlcik7Cisg
ICAgICAgICAgICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VM
YXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyLCBhcHBl
bmRRdWFkc0RhdGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAm
JiAhaXQtPnZpc2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9v
bCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7Ci0gICAgICAgICAgICBpZiAo
b2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlQ29udGVudFJlY3QoKSwg
Jmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKQotICAgICAgICAgICAg
ICAgICAgICB0YXJnZXRSZW5kZXJQYXNzLT5zZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAob2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgq
aXQsIGl0LT52aXNpYmxlQ29udGVudFJlY3QoKSwgJmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSkpCisgICAgICAgICAgICAgICAgYXBwZW5kUXVhZHNEYXRhLmhhZE9jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2U7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpdC0+d2lsbERy
YXcobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKICAgICAgICAgICAgICAgICBmcmFtZS53aWxs
RHJhd0xheWVycy5hcHBlbmQoKml0KTsKLSAgICAgICAgICAgICAgICB0YXJnZXRSZW5kZXJQYXNz
LT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdU
aWxlcyk7CisgICAgICAgICAgICAgICAgdGFyZ2V0UmVuZGVyUGFzcy0+YXBwZW5kUXVhZHNGb3JM
YXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGhhZE1pc3NpbmdUaWxlcykgeworICAgICAg
ICBpZiAoYXBwZW5kUXVhZHNEYXRhLmhhZE9jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZSkKKyAgICAgICAgICAgIHRhcmdldFJlbmRlclBhc3MtPnNldEhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSh0cnVlKTsKKworICAgICAgICBpZiAoYXBwZW5kUXVhZHNEYXRhLmhh
ZE1pc3NpbmdUaWxlcykgewogICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1RyYW5z
Zm9ybSA9IGl0LT5zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRyYXdU
cmFuc2Zvcm1Jc0FuaW1hdGluZygpOwogICAgICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0aW5n
VHJhbnNmb3JtKQogICAgICAgICAgICAgICAgIGRyYXdGcmFtZSA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3Vs
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHAKaW5kZXggNzhhMGJkOWVjMDM1OThjNjQ3OTQ5NjBhOTg4ODE0YTg1YjZk
M2JlOC4uOTQ5NzllYThlNjNkOTFhODgxMWU0N2Q3ZGM2YTgyN2UyOWQ3ZWQ2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3Vs
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDQ1F1YWRD
dWxsZXIuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwuaCIKICNpbmNsdWRl
ICJDQ09jY2x1c2lvblRyYWNrZXIuaCIKQEAgLTU2LDcgKzU3LDYgQEAgQ0NRdWFkQ3VsbGVyOjpD
Q1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlTGlzdCYg
c2hhcmVkUXUKICAgICAsIG1fb2NjbHVzaW9uVHJhY2tlcihvY2NsdXNpb25UcmFja2VyKQogICAg
ICwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKHNob3dDdWxsaW5nV2l0aERlYnVn
Qm9yZGVyUXVhZHMpCiAgICAgLCBtX2ZvclN1cmZhY2UoZm9yU3VyZmFjZSkKLSAgICAsIG1faGFz
T2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogewogfQogCkBAIC05Myw3
ICs5Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRRdWFkSW50ZXJuYWwoUGFzc093blB0
cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQsIGNvbnN0CiAgICAgcmV0dXJuIGtlZXBRdWFkOwog
fQogCi1ib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFz
c0RyYXdRdWFkKQorYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1
YWQ+IHBhc3NEcmF3UXVhZCwgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSkKIHsK
ICAgICBBU1NFUlQocGFzc0RyYXdRdWFkLT5zaGFyZWRRdWFkU3RhdGUoKSA9PSBtX2N1cnJlbnRT
aGFyZWRRdWFkU3RhdGUpOwogICAgIEFTU0VSVChwYXNzRHJhd1F1YWQtPnNoYXJlZFF1YWRTdGF0
ZUlkKCkgPT0gbV9jdXJyZW50U2hhcmVkUXVhZFN0YXRlLT5pZCk7CkBAIC0xMDcsNyArMTA3LDgg
QEAgYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NE
cmF3UXVhZCkKICAgICAgICAgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChtX2xheWVyLCBmYWxzZSwgcGFzc0Ry
YXdRdWFkLT5xdWFkUmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
KTsKICAgICBlbHNlCiAgICAgICAgIGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVu
b2NjbHVkZWRDb250ZW50UmVjdChtX2xheWVyLCBwYXNzRHJhd1F1YWQtPnF1YWRSZWN0KCksICZo
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOwotICAgIG1faGFzT2NjbHVzaW9u
RnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlIHw9IGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZTsKKworICAgIGFwcGVuZFF1YWRzRGF0YS5oYWRPY2NsdXNpb25Gcm9tT3V0c2lkZVRh
cmdldFN1cmZhY2UgfD0gaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOwogCiAg
ICAgcmV0dXJuIGFwcGVuZFF1YWRJbnRlcm5hbChwYXNzRHJhd1F1YWQsIGN1bGxlZFJlY3QsIG1f
cXVhZExpc3QsICptX29jY2x1c2lvblRyYWNrZXIsIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3Jk
ZXJRdWFkcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oCmluZGV4IDdmZDhlZmJlNDg2OGJlMTBj
YmZlMzE4ZGM3NTkyZjI0M2Q1NzgyYTcuLjUxZDU0MDljMzI2YTg2NGM5NmRmZDEwNTk0NDIzMjA2
OWYwMWIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oCkBAIC00Miw5ICs0Miw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIENDUXVhZFNpbmsgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCBDQ1No
YXJlZFF1YWRTdGF0ZSogdXNlU2hhcmVkUXVhZFN0YXRlKFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NE
cmF3UXVhZD4pIE9WRVJSSURFOwotCi0gICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRh
cmdldFN1cmZhY2UoKSB7IHJldHVybiBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZTsgfQorICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiwg
Q0NBcHBlbmRRdWFkc0RhdGEmKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBDQ1F1YWRMaXN0
JiBtX3F1YWRMaXN0OwpAQCAtNTQsNyArNTIsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4qIG1fb2NjbHVz
aW9uVHJhY2tlcjsKICAgICBib29sIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkczsK
ICAgICBib29sIG1fZm9yU3VyZmFjZTsKLSAgICBib29sIG1faGFzT2NjbHVzaW9uRnJvbU91dHNp
ZGVUYXJnZXRTdXJmYWNlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oCmluZGV4IDA5YmRkMGFl
MjlkMjRkNWY0MWYwNjA4MjM1OWU0ODU1NWYzM2IxNzguLjVlNDdjNjg0ZDNmOWRhNjJiYTlkYjg0
YTkwY2I2YzJjMzA1ZTk2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmgKQEAgLTMyLDYgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0RyYXdRdWFkOwogCitzdHJ1Y3QgQ0NBcHBl
bmRRdWFkc0RhdGE7CiBzdHJ1Y3QgQ0NTaGFyZWRRdWFkU3RhdGU7CiAKIGNsYXNzIENDUXVhZFNp
bmsgewpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDQ1NoYXJlZFF1YWRT
dGF0ZSogdXNlU2hhcmVkUXVhZFN0YXRlKFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+KSA9
IDA7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxp
c3QsIGFuZCBmYWxzZSBpZiB0aGUgcXVhZCBpcyBlbnRpcmVseSBjdWxsZWQuCi0gICAgdmlydHVh
bCBib29sIGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1
YWQsIENDQXBwZW5kUXVhZHNEYXRhJikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5jcHAKaW5kZXggMDRmZTkxODAyOWQ5YTgwNDk5ZjE0ZTEwY2M1NjRhNTNjMjUyNTg4Yy4uYzhj
MzMzZTM2OTQ3MjRhYjhmODY5MjVkZWFiMjEzYmRiMjc1MjhiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuY3BwCkBAIC01MywzMSArNTMsMjcgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3Mo
aW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3IKICAg
ICBBU1NFUlQoaWQgPiAwKTsKIH0KIAotdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
TGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNp
b25UcmFja2VyLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCit2b2lkIENDUmVuZGVyUGFzczo6YXBw
ZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlcklt
cGwqIG9jY2x1c2lvblRyYWNrZXIsIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEp
CiB7CiAgICAgY29uc3QgYm9vbCBmb3JTdXJmYWNlID0gZmFsc2U7CiAgICAgQ0NRdWFkQ3VsbGVy
IHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LCBsYXllciwgb2Nj
bHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKIAot
ICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwotCi0g
ICAgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5o
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKTsKKyAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRhKTsKIH0KIAotdm9pZCBDQ1JlbmRlclBh
c3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwg
Y29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRy
YWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyKQordm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1
YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NSZW5k
ZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBv
Y2NsdXNpb25UcmFja2VyLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQogewog
ICAgIGNvbnN0IGJvb2wgZm9yU3VyZmFjZSA9IHRydWU7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXIobV9xdWFkTGlzdCwgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LCBsYXllciwgb2NjbHVzaW9u
VHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKIAogICAgIGJv
b2wgaXNSZXBsaWNhID0gZmFsc2U7Ci0gICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgp
KTsKKyAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBh
cHBlbmRRdWFkc0RhdGEsIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7
CiAKICAgICAvLyBBZGQgcmVwbGljYSBhZnRlciB0aGUgc3VyZmFjZSBzbyB0aGF0IGl0IGFwcGVh
cnMgYmVsb3cgdGhlIHN1cmZhY2UuCiAgICAgaWYgKGxheWVyLT5oYXNSZXBsaWNhKCkpIHsKICAg
ICAgICAgaXNSZXBsaWNhID0gdHJ1ZTsKLSAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNz
LT5pZCgpKTsKKyAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRhLCBpc1JlcGxpY2EsIGNvbnRyaWJ1dGluZ1JlbmRlclBh
c3MtPmlkKCkpOwogICAgIH0KLQotICAgIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlIHw9IHF1YWRDdWxsZXIuaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNl
KCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xh
eWVySW1wbCogcm9vdExheWVyLCBTa0NvbG9yIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmgKaW5kZXggNGFhYWY0NzE3NTlkZmI4YjljODNjYWY3ZjMxNmY3NGY1ZmIxNThmZi4uOWVi
ZWQxYmQ1ZGU4ZjBhZGNlZTViMjlkNzYwNzJlNzU2ODMxYWViMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmgKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ1JlbmRlclN1cmZhY2U7CiAKK3N0cnVjdCBDQ0FwcGVuZFF1YWRzRGF0
YTsKKwogLy8gQSBsaXN0IG9mIENDRHJhd1F1YWQgb2JqZWN0cywgc29ydGVkIGludGVybmFsbHkg
aW4gZnJvbnQtdG8tYmFjayBvcmRlci4KIGNsYXNzIENDUXVhZExpc3QgOiBwdWJsaWMgVmVjdG9y
PE93blB0cjxDQ0RyYXdRdWFkPiA+IHsKIHB1YmxpYzoKQEAgLTYwLDggKzYyLDggQEAgY2xhc3Mg
Q0NSZW5kZXJQYXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBh
c3M+IGNyZWF0ZShpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsKIAotICAgIHZvaWQg
YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwq
LCBib29sJiBoYWRNaXNzaW5nVGlsZXMpOwotICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJT
dXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGlu
Z1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqKTsKKyAgICB2b2lkIGFwcGVuZFF1
YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBl
bmRRdWFkc0RhdGEmKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVy
KENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNz
LCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKICAgICB2b2lk
IGFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIFNrQ29sb3Ig
c2NyZWVuQmFja2dyb3VuZENvbG9yLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJik7CiAK
ICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExp
c3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IGYzODk3NDJhM2VhYzYz
NDZmNGIxMTRiZjZmYWQ2NDU4OTM5MDVjZmQuLjUwYTYzNDlkNWUxZmQ1YmFmNTE0YWI3MTA1MTgx
OWUzMDg5MTE4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMTkwLDcg
KzE5MCw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRSZW5kZXJQYXNzZXMoQ0NSZW5k
ZXJQYXNzU2luayYgcGFzc1NpbmspCiAgICAgcGFzc1NpbmsuYXBwZW5kUmVuZGVyUGFzcyhwYXNz
LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiBxdWFkU2luaywgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKQordm9p
ZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0Fw
cGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhLCBib29sIGZvclJlcGxpY2EsIGludCByZW5k
ZXJQYXNzSWQpCiB7CiAgICAgQVNTRVJUKCFmb3JSZXBsaWNhIHx8IG1fb3duaW5nTGF5ZXItPmhh
c1JlcGxpY2EoKSk7CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wgZm9yUmVwbGljYSwgaW50IHJl
bgogICAgICAgICBpbnQgZ3JlZW4gPSBmb3JSZXBsaWNhID8gIGRlYnVnUmVwbGljYUJvcmRlckNv
bG9yR3JlZW4gOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckdyZWVuOwogICAgICAgICBpbnQgYmx1
ZSA9IGZvclJlcGxpY2EgPyBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckJsdWUgOiBkZWJ1Z1N1cmZh
Y2VCb3JkZXJDb2xvckJsdWU7CiAgICAgICAgIFNrQ29sb3IgY29sb3IgPSBTa0NvbG9yU2V0QVJH
QihkZWJ1Z1N1cmZhY2VCb3JkZXJBbHBoYSwgcmVkLCBncmVlbiwgYmx1ZSk7Ci0gICAgICAgIHF1
YWRTaW5rLmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3JkZXJXaWR0aCkpOworICAg
ICAgICBxdWFkU2luay5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVk
UXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgp
LCBhcHBlbmRRdWFkc0RhdGEpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBCeSB1c2luZyB0aGUg
c2FtZSBSZW5kZXJTdXJmYWNlIGZvciBib3RoIHRoZSBjb250ZW50IGFuZCBpdHMgcmVmbGVjdGlv
biwKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbgogICAgIEludFJl
Y3QgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUgPSBjb250ZW50c0NoYW5nZWQoKSA/IG1f
Y29udGVudFJlY3QgOiBJbnRSZWN0KCk7CiAKICAgICBxdWFkU2luay5hcHBlbmQoQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRl
clBhc3NJZCwgZm9yUmVwbGljYSwgbWFza1Jlc291cmNlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNl
TGFzdEZyYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hc2tUZXhDb29yZFNjYWxlWCwgbWFza1RleENvb3JkU2NhbGVZLCBtYXNrVGV4Q29vcmRP
ZmZzZXRYLCBtYXNrVGV4Q29vcmRPZmZzZXRZKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWFza1RleENvb3JkU2NhbGVYLCBtYXNrVGV4Q29vcmRT
Y2FsZVksIG1hc2tUZXhDb29yZE9mZnNldFgsIG1hc2tUZXhDb29yZE9mZnNldFkpLCBhcHBlbmRR
dWFkc0RhdGEpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IGFhMGVl
MDE4ZmNhYmUzODdlMmZlY2IxMTliM2M5ZTE5NDdkYWQ5YWIuLjA5YTI4NDY3NmYyMjgyMjk0MjUy
NWIxMjVmM2E2M2YzY2M4N2JjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC00
NSw2ICs0NSw4IEBAIGNsYXNzIENDUmVuZGVyUGFzc1Npbms7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIFRleHRTdHJlYW07CiAKK3N0cnVjdCBDQ0FwcGVuZFF1YWRzRGF0YTsKKwogY2xhc3Mg
Q0NSZW5kZXJTdXJmYWNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclN1cmZh
Y2UpOwogcHVibGljOgpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBDQ0RhbWFnZVRy
YWNrZXIqIGRhbWFnZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVRyYWNrZXIuZ2V0
KCk7IH0KIAogICAgIHZvaWQgYXBwZW5kUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmKTsK
LSAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sIGZvclJlcGxpY2EsIGludCBy
ZW5kZXJQYXNzSWQpOworICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5k
UXVhZHNEYXRhJiwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKIAogcHJpdmF0
ZToKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCAzYzFmNjA4YWVmNDQ1MzFjNmFlZjliZGNhMDZlNmI3
Y2JkNjg3MDY0Li44MDRkNmZmZDhhYzhkMTY3ODEyYTY1M2FkOTNhMTdjYzdlZDZiZWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC05MSw3ICs5MSw3IEBA
IHN0YXRpYyBGbG9hdFJlY3QgdG9VVlJlY3QoY29uc3QgV2ViUmVjdCYgciwgY29uc3QgSW50UmVj
dCYgYm91bmRzKQogICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIud2lk
dGgpIC8gYm91bmRzLndpZHRoKCksIHN0YXRpY19jYXN0PGZsb2F0PihyLmhlaWdodCkgLyBib3Vu
ZHMuaGVpZ2h0KCkpOwogfQogCi12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCit2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFw
cGVuZFF1YWRzRGF0YSkKIHsKICAgICBib29sIHByZW11bHRpcGxlZEFscGhhID0gZmFsc2U7CiAg
ICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgQ0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAg
ICBJbnRSZWN0IGJvdW5kc1JlY3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygpKTsKIAogICAg
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRR
dWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwotICAgIGFwcGVuZERlYnVnQm9yZGVy
UXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsKKyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1
YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSwgYXBwZW5kUXVhZHNEYXRhKTsKIAogICAgIFdl
YlJlY3QgdGh1bWJSZWN0LCBiYWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tSZWN0OwogICAgIG1fZ2Vv
bWV0cnktPnNwbGl0VHJhY2soJm1fc2Nyb2xsYmFyLCBtX2dlb21ldHJ5LT50cmFja1JlY3QoJm1f
c2Nyb2xsYmFyKSwgYmFja1RyYWNrUmVjdCwgdGh1bWJSZWN0LCBmb3JlVHJhY2tSZWN0KTsKQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCiAgICAgaWYgKG1fdGh1bWJSZXNvdXJjZUlkICYm
ICF0aHVtYlJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVh
ZD4gcXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRS
ZWN0KHRodW1iUmVjdC54LCB0aHVtYlJlY3QueSwgdGh1bWJSZWN0LndpZHRoLCB0aHVtYlJlY3Qu
aGVpZ2h0KSwgbV90aHVtYlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZs
aXBwZWQpOwogICAgICAgICBxdWFkLT5zZXROZWVkc0JsZW5kaW5nKCk7Ci0gICAgICAgIHF1YWRT
aW5rLmFwcGVuZChxdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChxdWFk
LnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICB9CiAKICAgICBpZiAoIW1fYmFja1Ry
YWNrUmVzb3VyY2VJZCkKQEAgLTExNywxMiArMTE3LDEyIEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIAogICAgIC8v
IFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGluIHR3byBwYXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEg
dGV4dHVyZSBmb3IgdGhlIGZvcndhcmQgdHJhY2sgcGFydC4KICAgICBpZiAobV9mb3JlVHJhY2tS
ZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcXVhZFNpbmsu
YXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0
KGZvcmVUcmFja1JlY3QueCwgZm9yZVRyYWNrUmVjdC55LCBmb3JlVHJhY2tSZWN0LndpZHRoLCBm
b3JlVHJhY2tSZWN0LmhlaWdodCksIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVk
QWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSk7Cisg
ICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1
YWRTdGF0ZSwgSW50UmVjdChmb3JlVHJhY2tSZWN0LngsIGZvcmVUcmFja1JlY3QueSwgZm9yZVRy
YWNrUmVjdC53aWR0aCwgZm9yZVRyYWNrUmVjdC5oZWlnaHQpLCBtX2ZvcmVUcmFja1Jlc291cmNl
SWQsIHByZW11bHRpcGxlZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0
KSwgZmxpcHBlZCksIGFwcGVuZFF1YWRzRGF0YSk7CiAKICAgICAvLyBPcmRlciBtYXR0ZXJzIGhl
cmU6IHNpbmNlIHRoZSBiYWNrIHRyYWNrIHRleHR1cmUgaXMgYmVpbmcgZHJhd24gdG8gdGhlIGVu
dGlyZSBjb250ZW50cyByZWN0LCB3ZSBtdXN0IGFwcGVuZCBpdCBhZnRlciB0aGUgdGh1bWIgYW5k
CiAgICAgLy8gZm9yZSB0cmFjayBxdWFkcy4gVGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBjb250YWlu
cyAoYW5kIGRpc3BsYXlzKSB0aGUgYnV0dG9ucy4KICAgICBpZiAoIWJvdW5kc1JlY3QuaXNFbXB0
eSgpKQotICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIEludFJlY3QoYm91bmRzUmVjdCksIG1fYmFja1RyYWNrUmVzb3VyY2VJ
ZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOworICAgICAgICBxdWFkU2lu
ay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJl
Y3QoYm91bmRzUmVjdCksIG1fYmFja1RyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEs
IHV2UmVjdCwgZmxpcHBlZCksIGFwcGVuZFF1YWRzRGF0YSk7CiB9CiAKIHZvaWQgQ0NTY3JvbGxi
YXJMYXllckltcGw6OmRpZExvc2VDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxh
eWVySW1wbC5oCmluZGV4IGNkYTQyZDhhMDY1NTRjMDdmNWY3NGRkMWNkYTMwMTYwN2FkZmUzNWYu
LjNlNjI4NjczYjg1MWZkMzRjZDBlZjkzYTIwZjVmYTU4MjQ4MmMzNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAg
ICBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX29yaWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCmluZGV4IGZlMDAwN2Y1NTRk
ZDliODcxODAzYjI4MGM3YWQ0MjQ4YmJkNzZlOGYuLmYzMWM4NTNjMWFjNzY1OWYwZWU5NDZlODli
NDBiMTY4ODAwNGYwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBs
LmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIENDU29saWRDb2xvckxheWVySW1wbDo6fkNDU29saWRD
b2xvckxheWVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCit2b2lkIENDU29saWRDb2xvckxh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNE
YXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShjcmVhdGVTaGFyZWRRdWFkU3Rh
dGUoKSk7Ci0gICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3Rh
dGUpOworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRl
LCBhcHBlbmRRdWFkc0RhdGEpOwogCiAgICAgLy8gV2UgY3JlYXRlIGEgc2VyaWVzIG9mIHNtYWxs
ZXIgcXVhZHMgaW5zdGVhZCBvZiBqdXN0IG9uZSBsYXJnZSBvbmUgc28gdGhhdCB0aGUKICAgICAv
LyBjdWxsZXIgY2FuIHJlZHVjZSB0aGUgdG90YWwgcGl4ZWxzIGRyYXduLgpAQCAtNjEsNyArNjEs
NyBAQCB2b2lkIENDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIGJvb2wmKQogICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHggKz0gbV90
aWxlU2l6ZSkgewogICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSArPSBtX3Rp
bGVTaXplKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHNvbGlkVGlsZVJlY3QoeCwgeSwgbWluKHdp
ZHRoIC0geCwgbV90aWxlU2l6ZSksIG1pbihoZWlnaHQgLSB5LCBtX3RpbGVTaXplKSk7Ci0gICAg
ICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIHNvbGlkVGlsZVJlY3QsIGJhY2tncm91bmRDb2xvcigpKSk7CisgICAgICAg
ICAgICBxdWFkU2luay5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUsIHNvbGlkVGlsZVJlY3QsIGJhY2tncm91bmRDb2xvcigpKSwgYXBwZW5kUXVhZHNE
YXRhKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmgKaW5kZXggYTI5MTQwMTdkMDM5YTNmYjIwNWNhNGRiOGYxNzU4YWI2NDExMGYyNi4u
YzcwMDY3MWFhOWYyYTNlNmM5ZDc2MmRlNGU1YTg0M2MzMmI1MDgzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IH0KICAgICB2aXJ0dWFsIH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5k
UXVhZHNEYXRhJikgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1NvbGlk
Q29sb3JMYXllckltcGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwu
Y3BwCmluZGV4IDU5ZGJjOGFjMDE3NjgxNDJlNDc1MmFlOTQwNGNlMWY3MTEwMTAyNjQuLmViZTI0
ZjhiNzRjM2YwYjk1MGIxYjE1YTU5MDcyN2ZmOTA3NTAwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtNTgsMTYgKzU4LDE2IEBAIHZvaWQgQ0NUZXh0dXJlTGF5
ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAg
ICAgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJl
c291cmNlRnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NUZXh0
dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCit2
b2lkIENDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmss
IENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpCiB7CiAgICAgaWYgKCFtX2V4dGVy
bmFsVGV4dHVyZVJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKICAgICBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0
ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKLSAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmss
IHNoYXJlZFF1YWRTdGF0ZSk7CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBz
aGFyZWRRdWFkU3RhdGUsIGFwcGVuZFF1YWRzRGF0YSk7CiAKICAgICBJbnRSZWN0IHF1YWRSZWN0
KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0gICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4
dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5h
bFRleHR1cmVSZXNvdXJjZSwgbV9wcmVtdWx0aXBsaWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBw
ZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlLCBtX3ByZW11
bHRpcGxpZWRBbHBoYSwgbV91dlJlY3QsIG1fZmxpcHBlZCksIGFwcGVuZFF1YWRzRGF0YSk7CiB9
CiAKIHZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXgg
NTVkNDhiNDUxM2FkMzYxODQ2ZjZhN2U1ZGIxMTYwMjUxMzRkNTI2Yy4uYmVmYTI1NWUxODk4ZDk5
Yzk5N2VhMTI4NzJmODg1ZWJiOTRiZThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJ
bXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxh
eWVySW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRl
ciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwg
Ym9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5kUXVhZHNEYXRhJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
ZExheWVySW1wbC5jcHAKaW5kZXggYjYxMWQ5ODkxYjY2Y2EyYmI4ZWI4YmQ0MmRiNDkxOGMyODRi
YjU4YS4uNmUwMGJmNDhjY2M3Yjk3NzhiMzdmMTExZTJjZWY1OWIwM2Y0NTgwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkNDVGlsZWRMYXllckltcGwuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAj
aW5jbHVkZSAiQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUgIkNDRGVidWdCb3Jk
ZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUaWxpbmdEYXRhLmgiCkBAIC0xMjUsNyAr
MTI2LDcgQEAgRHJhd2FibGVUaWxlKiBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGVUaWxlKGludCBp
LCBpbnQgaikKICAgICByZXR1cm4gYWRkZWRUaWxlOwogfQogCi12b2lkIENDVGlsZWRMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpCit2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRT
aW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQogewogICAgIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAKQEAgLTEzMyw3ICsx
MzQsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1
YWRTaW5rLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFk
U3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwotICAgIGFwcGVuZERlYnVnQm9yZGVyUXVh
ZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsKKyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQo
cXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSwgYXBwZW5kUXVhZHNEYXRhKTsKIAogICAgIGludCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJ
bmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwpAQCAtMTQ5LDcg
KzE1MCw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKICAgICAgICAgICAgICAgICAgICAgYm9y
ZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVCb3JkZXJBbHBoYSwgZGVidWdUaWxl
Qm9yZGVyTWlzc2luZ1RpbGVDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xv
ckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yQmx1ZSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRB
UkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCwgZGVidWdU
aWxlQm9yZGVyQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlKTsKLSAgICAgICAg
ICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYm9yZGVyQ29sb3IsIGRlYnVnVGlsZUJvcmRlcldpZHRo
KSk7CisgICAgICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3UXVh
ZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJvcmRlckNvbG9yLCBkZWJ1Z1Rp
bGVCb3JkZXJXaWR0aCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNzAsOSArMTcxLDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQogCiAg
ICAgICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUtPnJlc291cmNlSWQoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkU2luay5hcHBlbmQoQ0NDaGVja2VyYm9h
cmREcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kUXVhZHNEYXRhLmhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkU2luay5h
cHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGls
ZVJlY3QpLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRTaW5rLmFwcGVuZChDQ1NvbGlkQ29s
b3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJhY2tncm91bmRD
b2xvcigpKSk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFF1YWRzRGF0YS5oYWRNaXNzaW5n
VGlsZXMgfD0gcXVhZFNpbmsuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpLCBhcHBlbmRRdWFkc0Rh
dGEpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC0xOTgs
NyArMTk5LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkU2luaywgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQogICAgICAgICAgICAgYm9vbCBib3R0
b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51bVRpbGVzWSgpIC0gMSAmJiB1c2VBQTsKIAogICAg
ICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0dXJlRmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVy
VGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6
Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVjdCwgdGlsZS0+cmVz
b3VyY2VJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29u
dGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0
b21FZGdlQUEpKTsKKyAgICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT5y
ZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBj
b250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJv
dHRvbUVkZ2VBQSksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMWJjNjBhYmE0NzEzN2IwYzIxOGVhMDVjOGU5
YzlmMzA2YWQzODlhOS4uNjQ1NmU0YzBiODc2Yjg5Zjk2ZjU5OWJlMmVkNDAwNDMzNWIzNjlmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5k
UXVhZHNEYXRhJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCA2NjJjZDJmMDNjMGRiNjA0NzYxOTliNmMz
MzViZGUxYmE2MDdkZjRlLi4wYTRlOGI4MTllNmE4N2RhYjU3NTk1NWFjNzdlOWNmMmQ0YTg1N2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBA
IHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAgICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2Ug
PSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUobV9m
cmFtZS0+dGV4dHVyZUlkKCkpOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1
YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBl
bmRRdWFkc0RhdGEpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIApA
QCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYgcXVhZFNpbmssIGJvb2wmKQogICAgICAgICByZXR1cm47CiAKICAgICBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRl
KGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKLSAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVh
ZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRT
aW5rLCBzaGFyZWRRdWFkU3RhdGUsIGFwcGVuZFF1YWRzRGF0YSk7CiAKICAgICAvLyBGSVhNRTog
V2hlbiB3ZSBwYXNzIHF1YWRzIG91dCBvZiBwcm9jZXNzLCB3ZSBuZWVkIHRvIGRvdWJsZS1idWZm
ZXIsIG9yCiAgICAgLy8gb3RoZXJ3aXNlIHN5bmNob25pemUgdXNlIG9mIGFsbCB0ZXh0dXJlcyBp
biB0aGUgcXVhZC4KQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAgICAgICAgY29uc3QgRnJh
bWVQbGFuZSYgdVBsYW5lID0gbV9mcmFtZVBsYW5lc1tXZWJLaXQ6OldlYlZpZGVvRnJhbWU6OnVQ
bGFuZV07CiAgICAgICAgIGNvbnN0IEZyYW1lUGxhbmUmIHZQbGFuZSA9IG1fZnJhbWVQbGFuZXNb
V2ViS2l0OjpXZWJWaWRlb0ZyYW1lOjp2UGxhbmVdOwogICAgICAgICBPd25QdHI8Q0NZVVZWaWRl
b0RyYXdRdWFkPiB5dXZWaWRlb1F1YWQgPSBDQ1lVVlZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB5UGxhbmUsIHVQbGFuZSwgdlBsYW5lKTsKLSAgICAgICAg
cXVhZFNpbmsuYXBwZW5kKHl1dlZpZGVvUXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2lu
ay5hcHBlbmQoeXV2VmlkZW9RdWFkLnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6IHsKQEAg
LTIxMSw3ICsyMTEsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmIHF1YWRTaW5rLCBib29sJikKICAgICAgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCB3
aWR0aFNjYWxlRmFjdG9yLCAxKTsKICAgICAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CiAgICAg
ICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1cmVEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHBsYW5lLnJlc291cmNlSWQs
IHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKLSAgICAgICAgcXVhZFNpbmsu
YXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZCh0
ZXh0dXJlUXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOiB7CkBAIC0yMjAs
MTkgKzIyMCwxOSBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBib29sJikKICAgICAgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCAxLCAx
KTsKICAgICAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CiAgICAgICAgIE93blB0cjxDQ1RleHR1
cmVEcmF3UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UsIHByZW11bHRp
cGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRl
eHR1cmVRdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZCh0ZXh0dXJlUXVh
ZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCOiB7CiAgICAgICAgIElu
dFNpemUgdGV4dHVyZVNpemUobV9mcmFtZS0+d2lkdGgoKSwgbV9mcmFtZS0+aGVpZ2h0KCkpOyAK
ICAgICAgICAgT3duUHRyPENDSU9TdXJmYWNlRHJhd1F1YWQ+IGlvU3VyZmFjZVF1YWQgPSBDQ0lP
U3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVy
ZVNpemUsIG1fZnJhbWUtPnRleHR1cmVJZCgpLCBDQ0lPU3VyZmFjZURyYXdRdWFkOjpVbmZsaXBw
ZWQpOwotICAgICAgICBxdWFkU2luay5hcHBlbmQoaW9TdXJmYWNlUXVhZC5yZWxlYXNlKCkpOwor
ICAgICAgICBxdWFkU2luay5hcHBlbmQoaW9TdXJmYWNlUXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1
YWRzRGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEV4dGVuc2lvbnMzRENo
cm9taXVtOjpHTF9URVhUVVJFX0VYVEVSTkFMX09FUzogewogICAgICAgICAvLyBTdHJlYW1UZXh0
dXJlIGhhcmR3YXJlIGRlY29kZXIuCiAgICAgICAgIE93blB0cjxDQ1N0cmVhbVZpZGVvRHJhd1F1
YWQ+IHN0cmVhbVZpZGVvUXVhZCA9IENDU3RyZWFtVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZnJhbWUtPnRleHR1cmVJZCgpLCBtX3N0cmVhbVRleHR1
cmVNYXRyaXgpOwotICAgICAgICBxdWFkU2luay5hcHBlbmQoc3RyZWFtVmlkZW9RdWFkLnJlbGVh
c2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChzdHJlYW1WaWRlb1F1YWQucmVsZWFzZSgp
LCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCAyYzU0ZTM1MTM5YzIzZjJjYzIwMGZh
NzRkYWFiNTIxNjM4YmI2NzI1Li5mOGU4OTc0MWU4OTVhMTUxZTYyYmRmYWZkODM3YWFhYjg5MTAx
ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5ZXJJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRR
dWFkc0RhdGEmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNl
UHJvdmlkZXIqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKaW5kZXggMTAyMjZiMzhkNTgwZTVlMTA4ZWI0NmViODk4NTVkZWFjN2VmNjk5My4uMmM4NzRl
OGNjMGM5MzhhNDk4ODI4ZDY5ZDA3MDVjNDk2Y2UzODE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUg
IkNDTGF5ZXJUaWxpbmdEYXRhLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgi
Ci0jaW5jbHVkZSAiQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiQ0NRdWFkU2luay5oIgogI2lu
Y2x1ZGUgIkNDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiQ0NSZW5kZXJlckdMLmgi
CiAjaW5jbHVkZSAiQ0NTY3JvbGxiYXJHZW9tZXRyeUZpeGVkVGh1bWIuaCIKQEAgLTEzNDYsNyAr
MTM0Niw3IEBAIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBs
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4g
Y3JlYXRlKGludCBpZCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQsIHJlc291cmNlUHJvdmlk
ZXIpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRT
aW5rLCBib29sJikgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
U2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEpIE9WRVJS
SURFCiAgICAgewogICAgICAgICBtX3F1YWRzQXBwZW5kZWQgPSB0cnVlOwogCkBAIC0xMzYxLDcg
KzEzNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5zZXRRdWFk
VmlzaWJsZVJlY3QobV9xdWFkVmlzaWJsZVJlY3QpOwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVu
ZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5lZWRzQmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVD
VF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEhcmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgcXVh
ZFNpbmsuYXBwZW5kKHRlc3RCbGVuZGluZ0RyYXdRdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1
YWRTaW5rLmFwcGVuZCh0ZXN0QmxlbmRpbmdEcmF3UXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRz
RGF0YSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRFeHBlY3RhdGlvbihib29sIGJsZW5kLCBib29s
IGhhc1JlbmRlclN1cmZhY2UpCkBAIC0xODgwLDE0ICsxODgwLDE0IEBAIGNsYXNzIEZha2VMYXll
cldpdGhRdWFkcyA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8RmFrZUxheWVyV2l0aFF1YWRzPiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgRmFrZUxheWVyV2l0aFF1YWRzKGlkKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpIE9WRVJSSURFCisgICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRz
RGF0YSYgYXBwZW5kUXVhZHNEYXRhKSBPVkVSUklERQogICAgIHsKICAgICAgICAgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShj
cmVhdGVTaGFyZWRRdWFkU3RhdGUoKSk7CiAKICAgICAgICAgU2tDb2xvciBncmF5ID0gU2tDb2xv
clNldFJHQigxMDAsIDEwMCwgMTAwKTsKICAgICAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2lu
dCgwLCAwKSwgY29udGVudEJvdW5kcygpKTsKICAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IG15
UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFk
UmVjdCwgZ3JheSk7Ci0gICAgICAgIHF1YWRTaW5rLmFwcGVuZChteVF1YWQucmVsZWFzZSgpKTsK
KyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0
YSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNzMxOGYxMzZjY2IwNjhiNTk3YWNl
ZTU4NGU4NmY3NWZhN2I0NmM4My4uNTkxN2FkYjI2NDg1ZWY3YzYyZTY2NjAyMDE4NjI3MDNjYjRj
OTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCkBAIC0yNDA5LDcgKzI0MDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IHZpcnR1YWwgfkV2aWN0aW9uVGVzdExheWVySW1wbCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURF
CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0Fw
cGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFCiAgICAgewogICAgICAgICBBU1NFUlRfVFJVRShtX2hh
c1RleHR1cmUpOwogICAgICAgICBBU1NFUlRfTkUoMHUsIGxheWVyVHJlZUhvc3RJbXBsKCktPnJl
c291cmNlUHJvdmlkZXIoKS0+bnVtUmVzb3VyY2VzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggMmM1ZTg4NTljMDEzNmQx
ZjZjZjA2YjZjZWFkYzY0MWYxYzVhMjJmZC4uYjhkYzMwZjcyMTQ4ZDVkZTdjN2UzMjE0OGQzY2U4
OWUzMjcxNjA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1
YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVh
ZEN1bGxlclRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJDQ1F1YWRDdWxs
ZXIuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVkZSAiQ0NMYXll
clRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJDQ01hdGhVdGlsLmgiCiAjaW5jbHVkZSAiQ0NPY2Ns
dXNpb25UcmFja2VyLmgiCkBAIC0xMDAsOCArMTAxLDggQEAgc3RhdGljIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlTGlzdCYgc2hhcmVkU3Rh
dGUKIHsKICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwogICAgIENDUXVhZEN1
bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGxheWVyLCAmb2NjbHVz
aW9uVHJhY2tlciwgZmFsc2UsIGZhbHNlKTsKLSAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZh
bHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMp
OworICAgIENDQXBwZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIGRhdGEpOwogICAgIG9jY2x1c2lvblRyYWNrZXIubGVhdmVMYXllcihpdCk7CiAg
ICAgKytpdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NS
ZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVu
ZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IDNmNWM0MGJkYmIxNjY5NDViYzY3NmZjZDAzZDZmMTcw
NDFlYmIxMTAuLjA2NjkzZjMzNzRmMDllMDU4MzI3YzY5NTUxYzIwZmYyOTdkMDE3NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQ0NSZW5kZXJTdXJmYWNlLmgiCiAK
KyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgogI2luY2x1ZGUgIkNDTGF5ZXJJbXBsLmgi
CiAjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzU2luay5oIgogI2luY2x1ZGUgIkNDU2hhcmVkUXVhZFN0
YXRlLmgiCkBAIC0xMjAsOSArMTIxLDEwIEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwgc2Fu
aXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAgICAgQ0NRdWFk
TGlzdCBxdWFkTGlzdDsKICAgICBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3Qgc2hhcmVkU3RhdGVMaXN0
OwogICAgIE1vY2tDQ1F1YWRDdWxsZXIgbW9ja1F1YWRDdWxsZXIocXVhZExpc3QsIHNoYXJlZFN0
YXRlTGlzdCk7CisgICAgQ0NBcHBlbmRRdWFkc0RhdGEgYXBwZW5kUXVhZHNEYXRhOwogCiAgICAg
Ym9vbCBmb3JSZXBsaWNhID0gZmFsc2U7Ci0gICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMo
bW9ja1F1YWRDdWxsZXIsIGZvclJlcGxpY2EsIDEpOworICAgIHJlbmRlclN1cmZhY2UtPmFwcGVu
ZFF1YWRzKG1vY2tRdWFkQ3VsbGVyLCBhcHBlbmRRdWFkc0RhdGEsIGZvclJlcGxpY2EsIDIpOwog
CiAgICAgQVNTRVJUX0VRKDF1LCBzaGFyZWRTdGF0ZUxpc3Quc2l6ZSgpKTsKICAgICBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gc2hhcmVkU3RhdGVMaXN0WzBdLmdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXll
ckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMjIwMTg5YjQxNjQzY2Q5N2RkNWFkZGMwMzY2Y2RmNzU4
ZWJmOGE4ZS4uYjMzMGFiY2FhMDdhMWQwYzZhMzZhM2VjODAwZWFmYjE4MTg3ZWJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxh
eWVySW1wbFRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJDQ1NvbGlkQ29s
b3JMYXllckltcGwuaCIKIAorI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRhLmgiCiAjaW5jbHVk
ZSAiQ0NMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ1NpbmdsZVRocmVhZFByb3h5Lmgi
CiAjaW5jbHVkZSAiQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKQEAgLTUzLDggKzU0LDggQEAgVEVT
VChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJpZnlUaWxpbmdDb21wbGV0ZUFuZE5vT3Zl
cmxhcCkKICAgICBsYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIGxheWVyLT5zZXRS
ZW5kZXJUYXJnZXQobGF5ZXIuZ2V0KCkpOwogCi0gICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBm
YWxzZTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVz
KTsKKyAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBkYXRhKTsKIAogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFk
Q3VsbGVyLnF1YWRMaXN0KCksIHZpc2libGVDb250ZW50UmVjdCk7CiB9CkBAIC03Nyw4ICs3OCw4
IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVjdEJhY2tncm91
bmRDb2xvckluUXVhZCkKICAgICBsYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIGxh
eWVyLT5zZXRSZW5kZXJUYXJnZXQobGF5ZXIuZ2V0KCkpOwogCi0gICAgYm9vbCBoYWRNaXNzaW5n
VGlsZXMgPSBmYWxzZTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlz
c2luZ1RpbGVzKTsKKyAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBkYXRhKTsKIAogICAgIEFTU0VSVF9FUShxdWFkQ3VsbGVyLnF1
YWRMaXN0KCkuc2l6ZSgpLCAxVSk7CiAgICAgRVhQRUNUX0VRKENDU29saWRDb2xvckRyYXdRdWFk
OjptYXRlcmlhbENhc3QocXVhZEN1bGxlci5xdWFkTGlzdCgpWzBdLmdldCgpKS0+Y29sb3IoKSwg
dGVzdENvbG9yKTsKQEAgLTEwMiw4ICsxMDMsOCBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1w
bFRlc3QsIHZlcmlmeUNvcnJlY3RPcGFjaXR5SW5RdWFkKQogICAgIGxheWVyLT5jcmVhdGVSZW5k
ZXJTdXJmYWNlKCk7CiAgICAgbGF5ZXItPnNldFJlbmRlclRhcmdldChsYXllci5nZXQoKSk7CiAK
LSAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgIENDQXBwZW5kUXVhZHNEYXRhIGRh
dGE7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEpOwogCiAgICAgQVNT
RVJUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDFVKTsKICAgICBFWFBFQ1RfRVEo
b3BhY2l0eSwgQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkQ3VsbGVyLnF1
YWRMaXN0KClbMF0uZ2V0KCkpLT5vcGFjaXR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAppbmRleCA4YjRiZDIwZThk
OWNhMjIxNDNmMTJlOWY3Y2U1ZmE3N2Q5NzBlNzYxLi5jNDllMTJjMmU3MjIwN2NlZDBhYzgyMzdl
MzU0ZDdhY2YyYjY2NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVk
ZSAiQ0NUaWxlZExheWVySW1wbC5oIgogCisjaW5jbHVkZSAiQ0NBcHBlbmRRdWFkc0RhdGEuaCIK
ICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUaWxpbmdE
YXRhLmgiCiAjaW5jbHVkZSAiQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgpAQCAtNzYsOCArNzcsOCBA
QCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogICAgIHsKICAgICAg
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUs
IGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICAgICAg
TW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxl
cyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlz
c2luZ1RpbGVzKTsKKyAgICAgICAgQ0NBcHBlbmRRdWFkc0RhdGEgZGF0YTsKKyAgICAgICAgbGF5
ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEpOwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBudW1UaWxlcyA9IG51bVRpbGVzWCAqIG51bVRpbGVzWTsKICAgICAgICAgRVhQRUNUX0VRKHF1
YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIG51bVRpbGVzKTsKICAgICB9CkBAIC04OCw4ICs4
OSw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAgICAg
IGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgpKTsKIAogICAgICAgICBNb2Nr
Q0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0g
ZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5n
VGlsZXMpOworICAgICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgICAgICBsYXllci0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgZGF0YSk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3Vs
bGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgfQogCkBAIC0xMDEsOCArMTAyLDggQEAg
VEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKICAgICAgICAgbGF5ZXIt
PnNldFZpc2libGVDb250ZW50UmVjdChvdXRzaWRlQm91bmRzKTsKIAogICAgICAgICBNb2NrQ0NR
dWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFs
c2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGls
ZXMpOworICAgICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhOworICAgICAgICBsYXllci0+YXBw
ZW5kUXVhZHMocXVhZEN1bGxlciwgZGF0YSk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVy
LnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgfQogCkBAIC0xMTIsOCArMTEzLDggQEAgVEVT
VChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKICAgICAgICAgbGF5ZXItPnNl
dFNraXBzRHJhdyh0cnVlKTsKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7
Ci0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICBDQ0FwcGVu
ZFF1YWRzRGF0YSBkYXRhOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwg
ZGF0YSk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAw
dSk7CiAgICAgfQogfQpAQCAtMTMyLDEwICsxMzMsMTAgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBs
VGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwogICAgIHsK
ICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIGhhZE1p
c3NpbmdUaWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAgICAgQ0NBcHBlbmRRdWFkc0RhdGEgZGF0YTsKKyAg
ICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGRhdGEpOwogICAgICAgICBFWFBF
Q1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUpOwotICAgICAgICBFWFBFQ1Rf
RkFMU0UoaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFkTWlz
c2luZ1RpbGVzKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIu
cXVhZExpc3QoKS5zaXplKCk7ICsraSkKICAgICAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVy
LnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCk7CkBA
IC0xNDgsOSArMTQ5LDkgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJk
aW5nKQogICAgIC8vIEFsbCBjaGVja2VyYm9hcmRpbmcKICAgICB7CiAgICAgICAgIE1vY2tDQ1F1
YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxz
ZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxl
cyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIENDQXBw
ZW5kUXVhZHNEYXRhIGRhdGE7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBkYXRhKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYWRNaXNzaW5nVGlsZXMpOwogICAg
ICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsr
aSkKICAgICAgICAgICAgIEVYUEVDVF9ORShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVy
aWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCk7CkBAIC0xNjQsOCArMTY1LDggQEAgc3Rh
dGljIHZvaWQgZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIENDU2hhcmVkUXVhZFN0YXRlTGlz
dCYgc2hhcmVkU3RhdGVzLCBJbnQKICAgICBsYXllci0+c2V0Qm91bmRzKGxheWVyU2l6ZSk7CiAK
ICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZHMsIHNoYXJlZFN0YXRlcyk7Ci0g
ICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRh
OworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBkYXRhKTsKIH0KIAogLy8gVGVz
dCB3aXRoIGJvdGggYm9yZGVyIHRleGVscyBhbmQgd2l0aG91dC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgKaW5kZXggNTlhMDA3M2NlMTRkZTBi
NzM0NmYxNjQ4MzcyZDBkNmYzNzZhMTNiNC4uMTgzM2YzNDllODUxNzU1OTdkMDMxZTY3ZjQ4YmI2
OGQ0YWU5ZjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2Nr
Q0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NR
dWFkQ3VsbGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fYWN0aXZl
U2hhcmVkUXVhZFN0YXRlTGlzdChleHRlcm5hbFNoYXJlZFF1YWRTdGF0ZUxpc3QpCiAgICAgeyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFdURjo6UGFzc093blB0cjxDQ0RyYXdRdWFkPiBu
ZXdRdWFkKSBPVkVSUklERQorICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFzc093blB0cjxDQ0Ry
YXdRdWFkPiBuZXdRdWFkLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFCiAgICAgewogICAg
ICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gZHJhd1F1YWQgPSBuZXdRdWFkOwogICAgICAgICBpZiAo
IWRyYXdRdWFkLT5xdWFkUmVjdCgpLmlzRW1wdHkoKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>