<?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>103313</bug_id>
          
          <creation_ts>2012-11-26 16:05:55 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Implement support for grid-template</short_desc>
          <delta_ts>2013-11-06 08:56:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>103334</dependson>
          <blocked>60731</blocked>
    
    <blocked>120044</blocked>
    
    <blocked>120045</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>svillar</cc>
    
    <cc>syoichi</cc>
    
    <cc>tony</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776007</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-26 16:05:55 -0800</bug_when>
    <thetext>grid-template allows the grid to be defined graphically using identifiers to name grid areas:

grid-template = [ &quot; [ &lt;identifier&gt; | . ]+ &quot; ]+ | none

We also need to be careful with the interaction with grid-definition-{rows|columns}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937529</commentid>
    <comment_count>1</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-08 08:42:29 -0700</bug_when>
    <thetext>Fixing this involves merging 3 different CLs from Blink:

*   Implement &apos;grid-template&apos; parsing

    This change makes us recognize grid-template, parse it, store it and
    return properly to JavaScript.

    The specification mandates to validate to check that the areas defined
    by &apos;grid-template&apos; are rectangular which involves a lot of the
    CSSParser code.

    Review URL: https://chromiumcodereview.appspot.com/18532004

*  [CSS Grid Layout] Fix grid-template serialization

    This is a follow-up of https://codereview.chromium.org/18532004/#msg6

    We didn&apos;t know if serializing strings was specified and it turns out
    that it is: http://dev.w3.org/csswg/cssom/#serialize-a-string


*  Move GridCoordinate and GridSpan to a separate file

    In order to implement &apos;grid-template&apos;, we need a way to describe a
    grid area&apos;s coordinates. That&apos;s what GridCoordinate is about and
    instead of duplicating code, splitting the classes will enable code
    sharing.

    While moving the code, added some comments about the 2 classes.

    Review URL: https://chromiumcodereview.appspot.com/18345011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937571</commentid>
    <comment_count>2</comment_count>
      <attachid>213696</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-08 10:10:22 -0700</bug_when>
    <thetext>Created attachment 213696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937587</commentid>
    <comment_count>3</comment_count>
      <attachid>213699</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-08 10:34:12 -0700</bug_when>
    <thetext>Created attachment 213699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937596</commentid>
    <comment_count>4</comment_count>
      <attachid>213699</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-08 11:02:25 -0700</bug_when>
    <thetext>Comment on attachment 213699
Patch

Attachment 213699 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3758003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937599</commentid>
    <comment_count>5</comment_count>
      <attachid>213699</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 11:06:47 -0700</bug_when>
    <thetext>Comment on attachment 213699
Patch

Attachment 213699 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3758006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937600</commentid>
    <comment_count>6</comment_count>
      <attachid>213699</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-08 11:07:49 -0700</bug_when>
    <thetext>Comment on attachment 213699
Patch

Attachment 213699 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3714254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937601</commentid>
    <comment_count>7</comment_count>
      <attachid>213699</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 11:09:56 -0700</bug_when>
    <thetext>Comment on attachment 213699
Patch

Attachment 213699 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3716246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937713</commentid>
    <comment_count>8</comment_count>
      <attachid>213699</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-08 15:42:01 -0700</bug_when>
    <thetext>Comment on attachment 213699
Patch

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

Nearly ready once build errors are fixed.

&gt; Source/WebCore/css/CSSGridTemplateValue.cpp:54
&gt; +    NamedGridAreaMap::const_iterator end = gridAreaMap.end();
&gt; +    for (NamedGridAreaMap::const_iterator it = gridAreaMap.begin(); it != end; ++it) {

You can use &quot;auto&quot; here now. for (auto it = gridAreaMap.begin(), end = gridAreaMap.end(); it != end; ++it)

&gt; Source/WebCore/css/CSSGridTemplateValue.cpp:61
&gt; +    end = gridAreaMap.end();
&gt; +    for (NamedGridAreaMap::const_iterator it = gridAreaMap.begin(); it != end; ++it) {

Ditto.

&gt; Source/WebCore/css/CSSParser.cpp:5173
&gt; +        if (!columnCount) {
&gt; +            columnCount = columnNames.size();
&gt; +            ASSERT(columnCount);
&gt; +        } else if (columnCount != columnNames.size()) {
&gt; +            // The declaration is invalid is all the rows don&apos;t have the number of columns.
&gt; +            return 0;
&gt; +        }

Please write this with the return first.

if (columnCount != columnNames.size()) {
  // Comment, note typo is -&gt; if
  return 0;
}

Although I guess that assumes that columnCount is non-zero too.

&gt; Source/WebCore/css/CSSParser.cpp:5189
&gt; +            NamedGridAreaMap::iterator gridAreaIt = gridAreaMap.find(gridAreaName);

Maybe auto gridAreaIterator?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937828</commentid>
    <comment_count>9</comment_count>
      <attachid>213699</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-09 00:37:44 -0700</bug_when>
    <thetext>Comment on attachment 213699
Patch

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

Thx for the review dino, new patch upcoming

&gt; Source/WebCore/css/CSSGridTemplateValue.h:72
&gt; +

Actually I&apos;m also removing these three and using CSS_VALUE_TYPE_CASTS that does the same (and more) and it&apos;s more WebKit-style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937830</commentid>
    <comment_count>10</comment_count>
      <attachid>213758</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-09 00:51:32 -0700</bug_when>
    <thetext>Created attachment 213758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938104</commentid>
    <comment_count>11</comment_count>
      <attachid>213758</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-09 15:31:42 -0700</bug_when>
    <thetext>Comment on attachment 213758
Patch

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

&gt; Source/WebCore/css/CSSGridTemplateValue.cpp:2
&gt; + * Copyright (C) 2013 Google Inc. All rights reserved.

Do you really mean to assign Google the copyright? Why not your own name? (do you work for them?)

&gt; Source/WebCore/css/CSSGridTemplateValue.cpp:14
&gt; + *     * Neither the name of Google Inc. nor the names of its

DItto.

&gt; Source/WebCore/css/CSSGridTemplateValue.h:2
&gt; + * Copyright (C) 2013 Google Inc. All rights reserved.

Ditto. And other places too.

&gt; Source/WebCore/css/CSSParser.cpp:5177
&gt; +        for (size_t currentCol = 0; currentCol &lt; columnCount; ++currentCol) {

Could you expand Col to Column? I don&apos;t see the need to shorten (there are a few instances of this)

&gt; LayoutTests/fast/css-grid-layout/grid-template-get-set.html:67
&gt; +    shouldBeEqualToString(&quot;window.getComputedStyle(gridWithSpanningRowsDotTemplate).getPropertyValue(&apos;-webkit-grid-template&apos;)&quot;, &apos;&quot;span&quot; &quot;.&quot;&apos;)

Please extract window.getComputedStyle(gridWithSpanningRowsDotTemplate).getPropertyValue(&apos;-webkit-grid-template&apos;) into a helper function.

In fact, the function could wrap the getElementById + shouldBeEqualToString part as well, so it is just something like testGridTemplateValue(&quot;gridWithDefaultTemplate&quot;, &quot;none&quot;);

&gt; LayoutTests/fast/css-grid-layout/grid-template-get-set.html:76
&gt; +    element.style.webkitGridTemplate = &quot;&apos;foobar&apos;&quot;;
&gt; +    shouldBeEqualToString(&quot;window.getComputedStyle(element).getPropertyValue(&apos;-webkit-grid-template&apos;)&quot;, &apos;&quot;foobar&quot;&apos;)

Hmm... maybe not the getElementById part then, but at least it could take an element as a parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938130</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-09 16:40:19 -0700</bug_when>
    <thetext>We need to keep the Google copyright notice if the code was copied from Blink or if the author looked at Blink code to write this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938238</commentid>
    <comment_count>13</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-10 01:01:36 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 213758 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213758&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSGridTemplateValue.cpp:2
&gt; &gt; + * Copyright (C) 2013 Google Inc. All rights reserved.
&gt; 
&gt; Do you really mean to assign Google the copyright? Why not your own name? (do you work for them?)

As Ryosuke mentions this work is based on some patches from Blink so it&apos;s fair/correct/legal to keep the copyright notice as is. I might add the Igalia copyright too.

&gt; &gt; Source/WebCore/css/CSSParser.cpp:5177
&gt; &gt; +        for (size_t currentCol = 0; currentCol &lt; columnCount; ++currentCol) {
&gt; 
&gt; Could you expand Col to Column? I don&apos;t see the need to shorten (there are a few instances of this)

Also expanded lookAheadCol -&gt; lookAheadColumn
 
&gt; &gt; LayoutTests/fast/css-grid-layout/grid-template-get-set.html:76
&gt; &gt; +    element.style.webkitGridTemplate = &quot;&apos;foobar&apos;&quot;;
&gt; &gt; +    shouldBeEqualToString(&quot;window.getComputedStyle(element).getPropertyValue(&apos;-webkit-grid-template&apos;)&quot;, &apos;&quot;foobar&quot;&apos;)
&gt; 
&gt; Hmm... maybe not the getElementById part then, but at least it could take an element as a parameter.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938245</commentid>
    <comment_count>14</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-10 01:37:38 -0700</bug_when>
    <thetext>Committed r157211: &lt;http://trac.webkit.org/changeset/157211&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947721</commentid>
    <comment_count>15</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-11-06 08:56:28 -0800</bug_when>
    <thetext>*** Bug 119922 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213696</attachid>
            <date>2013-10-08 10:10:22 -0700</date>
            <delta_ts>2013-10-08 10:34:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103313-20131008191019.patch</filename>
            <type>text/plain</type>
            <size>57352</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjcxZjdjYjg2NzRlN2M2
Njg2NjM0ODk5NmIzZTdlNGRiNWNmYmVhMy4uYzYzNDU4M2JhZWU1MzUzZDUzMDViM2IxNDM1ZGNj
MTBkN2UzMDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTEwLTA4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBzdXBwb3J0IGZvciBncmlkLXRlbXBsYXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcm9tIEJsaW5rIHIxNTM0Mjcs
IHIxNTUxOTkgYW5kIHIxNTU3MTIgIGJ5IDxqY2hhZmZyYWl4QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXRlbXBsYXRlLWdldC1zZXQuaHRt
bAorCisgICAgICAgIFJlY29nbml6ZSwgcGFyc2UsIHN0b3JlIGFuZCByZXR1cm4gcHJvcGVybHkg
dGhlIHZhbHVlIG9mCisgICAgICAgIGdyaWQtdGVtcGxhdGUuIEl0IHJlcXVpcmVkIHNvbWUgZXh0
cmEgcGFyc2luZyBjb2RlIGJlY2F1c2UgdGhlCisgICAgICAgIHNwZWNzIG1hbmRhdGVzIHRvIGNo
ZWNrIHRoYXQgdGhlIGRlZmluZWQgZ3JpZCBhcmVhcyBhcmUgaW5kZWVkCisgICAgICAgIHJlY3Rh
bmd1bGFyLiBOYW1lZCBncmlkIGFyZWFzIGFyZSBzdGlsbCBub3QgZnVsbHkgc3VwcG9ydGVkLCB3
aWxsCisgICAgICAgIGJlIGRvbmUgaW4gYSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgQXMg
dmFsaWRhdGluZyBpbnZvbHZlcyBidWlsZGluZyB0aGUgZ3JpZCBhcmVhcyBhIG5ldyBDU1NWYWx1
ZSB3YXMKKyAgICAgICAgYWRkZWQgdG8gaG9sZCB0aGUgY29tcHV0ZWQgdmFsdWUuIE5vdGUgdGhh
dCB3ZSBoYXZlIHRvIHRyYWNrIHRoZQorICAgICAgICBleHBsaWNpdCBzaXplIG9mIHRoZSBuYW1l
ZCBncmlkIGFyZWFzIGFzIHRoZSBuYW1lZCBncmlkIGFyZWFzCisgICAgICAgICgiLiIpIGFyZSBu
b3QgdHJhY2tlZCBpbiBvdXIgSGFzaE1hcCBvZiBncmlkIGFyZWFzLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsc28gaW52b2x2ZXMgbW92aW5nIEdyaWRDb29yZGluYXRlIGFuZCBHcmlkU3BhbiB0
byBhCisgICAgICAgIHNlcGFyYXRlIGZpbGUgaW4gb3JkZXIgdG8gc2hhcmUgdGhlIGNvZGUgdGhh
dCBkZXNjcmliZXMgdGhlIGdyaWQKKyAgICAgICAgYXJlYSBjb29yZGluYXRlcy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBmaWxlcyB0byB0aGUgYnVpbGQuCisg
ICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0dyaWRUZW1wbGF0ZVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NHcmlk
VGVtcGxhdGVWYWx1ZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nRm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFs
dWU6OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9DU1NHcmlkVGVtcGxhdGVWYWx1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRUZW1wbGF0ZVZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWU6On5DU1NHcmlkVGVtcGxh
dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Z3JpZEFy
ZWFNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWU6OnJvd0NvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRUZW1wbGF0ZVZhbHVlOjpjb2x1bW5Db3VudCk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0dyaWRUZW1wbGF0ZVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRlKTogY3Jl
YXRlIHRoZSBncmlkIGFyZWFzIGFuZAorICAgICAgICB2YWxpZGF0ZSB0aGF0IHRoZXkgZGVmaW5l
IHJlY3Rhbmd1bGFyIHNlY3Rpb25zLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjogQWRkZWQgLXdlYmtpdC1ncmlkLXRlbXBsYXRl
LgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZTo6ZXF1YWxzKTogYWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ1NTR3JpZFRlbXBsYXRlVmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc0dyaWRUZW1wbGF0ZVZhbHVlKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjYWNoZWRHcmlkQ29vcmRpbmF0
ZSk6IFJlcGxhY2VkIFJlbmRlckdyaWQ6OkdyaWRTcGFuIGJ5IFdlYkNvcmU6OkdyaWRTcGFuLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tQXV0
b1BsYWNlbWVudFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGlu
ZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRp
b25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6IFRvb2sgR3JpZFNwYW4gYW5kIEdyaWRDb29yZGluYXRlIG91dC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmlkU3Bhbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjpH
cmlkU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkQ29vcmRpbmF0ZTo6R3JpZENvb3JkaW5hdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZENvb3JkaW5hdGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZENvb3JkaW5hdGU6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUdyaWREYXRhOjpvcGVyYXRvcj09KToKKwogMjAxMy0xMC0wNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggZjM3OTBiYzM2YzY4ZmJjNTlmNmFkYjQzZmRiMmNjNmZlODgyNTYzMy4uODkz
MmY4NDU4MDBmMjdjMmQ5ZTM4MTViNzc0YzBmNjA2ZmY5MjY1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC0yNTI0LDYgKzI1MjQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JvdXBpbmdSdWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaCBcCkBA
IC00NTMyLDYgKzQ1MzQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQ29vcmRpbmF0
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmggXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggZDJhYWJhNjZjMjYx
YmFmZTAzZTMxMzY3NGUzZWI5MjgzNDUxNjU3MS4uNThjZDkzYmI0OThlYWM1MjU3ZWFlYjRkOTll
YzRiNzM5N2Q0Nzc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCkBAIC04NjkyLDYgKzg2OTIsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xDU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcQ1NTR3JvdXBpbmdSdWxlLmNwcCI+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xOTM0OSw2ICsxOTM1
MCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRm9udFZhbHVlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTRnVuY3Rpb25WYWx1ZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0dyYWRpZW50VmFsdWUuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0dyb3VwaW5nUnVsZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0hlbHBlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0hvc3RSdWxlLmgiIC8+CkBAIC0xOTYwMCw2ICsxOTYwMiw3
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3R5bGVcQ3Vyc29yTGlz
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXERhdGFS
ZWYuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxGaWxs
TGF5ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxH
cmlkQ29vcmRpbmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5n
XHN0eWxlXEdyaWRQb3NpdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXHN0eWxlXEdyaWRUcmFja1NpemUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJlbmRlcmluZ1xzdHlsZVxLZXlmcmFtZUxpc3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBm
ZDIwNTY2MjZhM2MwZDA3M2NkYzU4NmQxNWUyYmZmYTg5ZDQ0MzA4Li5jNDVhYTdjZjU4NGNkOTYx
ZTlhNGE2ZDFjNGQ2YmU1NDVkZjkwYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC05NTczLDYgKzk1NzMs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXEZpbGxMYXll
ci5oIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN0eWxlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3R5bGVcR3JpZENv
b3JkaW5hdGUuaCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzdHlsZTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxl
XEdyaWRQb3NpdGlvbi5oIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN0eWxlPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjFiNzIyMDc1Yjg3MzQwMzE1YjZkMzc4ZTJhOWYxMTU4
NmU2ZTM5NS4uMGUyYTc5ODQzZDY5ODM3NWZhYTFkNGU1NjMxMTdjYmFjMzdmYzViNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTI5MSw2ICs1MjkxLDkgQEAKIAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
QTQ5NTkxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2
NDE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1QjE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyTGlzdC5jcHAgKi87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0
MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlz
dC5oICovOyB9OworCQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFC
MTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0UyNTIzMTgwNDZCQ0QwMEUyN0Y1NiAv
KiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUyMTE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBs
YXRlVmFsdWUuY3BwICovOyB9OworCQlDRDNFMjUyNDE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3Jp
ZFRlbXBsYXRlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5o
ICovOyB9OwogCQlDRDQ3QjNGQzE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRh
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tICovOyB9
OwogCQlDRDRBQzUyQTE0OTZBRTlBMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiBpbiBDb3B5IEF1
ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDRBQzUy
ODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLzsgfTsKIAkJQ0Q1MzkzRDMxNzVF
MDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDUzOTNEMTE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1v
cnlJbmZvLmNwcCAqLzsgfTsKQEAgLTEyMjA5LDYgKzEyMjEyLDkgQEAKIAkJQ0QzQTQ5NUIxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVmZmVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEM0E0OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlckxpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzQTQ5NUQxN0E5RDAxQjAwMjc0RTQyIC8q
IFNvdXJjZUJ1ZmZlckxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNvdXJjZUJ1ZmZl
ckxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDNFMjUxQjE4MDQ2QjA2
MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gR3JpZENvb3JkaW5hdGUuaDsgcGF0aCA9IHN0eWxlL0dyaWRDb29yZGluYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1NiAvKiBD
U1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEM0UyNTIyMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ3QjNGOTE2Q0MzNEY4MDBBMjFFQzggLyog
Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDRE1Qcml2YXRlQVZGb3VuZGF0
aW9uLm1tOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRBQzUyODE0OTZBRTJGMDA4
N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IENvbXBvc2l0ZS53YXY7IHBhdGggPSBw
bGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvQ29tcG9zaXRlLndhdjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwpAQCAtMTk0MDcsNiArMTk0MTMsNyBAQAogCQlCQzhDOEZBQTBERENEMkYyMDBC
NTkyRjQgLyogc3R5bGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUNEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovLAog
CQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8sCiAJCQkJ
RkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCiAJCQkJQkM1RUI1
RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKQEAgLTIwMTYzLDYgKzIwMTcw
LDggQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0QzRTI1MjExODA0NkJDRDAwRTI3RjU2
IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcCAqLywKKwkJCQlDRDNFMjUyMjE4MDQ2QkNEMDBF
MjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuaCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZB
MDBERjg2NzcgLyogbWFrZXRva2VuaXplciAqLywKIAkJCQlGQkQ2QUY4NDE1RUYyMUQ0MDA4Qjcx
MTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJRkJENkFGODUxNUVGMjFENDAw
OEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCAqLywKQEAgLTI0NjMzLDYgKzI0NjQyLDgg
QEAKIAkJCQlCQzEwRDc2ODE3RDhFRTcxMDA1RTI2MjYgLyogUmVuZGVyQmxvY2tGbG93LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMENCMDAyNTE3REY4MjZDMDAxNzg5NkIgLyogTGluZVdpZHRoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMDZCRkUyRTE3REZCNDNGMDA4MzAyQkIgLyogTGluZUluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29v
cmRpbmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8q
IENTU0dyaWRUZW1wbGF0ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3Njk5LDYgKzI3NzEw
LDcgQEAKIAkJCQlCRTE2QzU5NDE3Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTBENzY3MTdEOEVFNkUwMDVFMjYyNiAvKiBS
ZW5kZXJCbG9ja0Zsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBDQjAwMjQxN0RGODI2NjAw
MTc4OTZCIC8qIExpbmVXaWR0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDNFMjUyMzE4MDQ2
QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IDFmMzk2NmVjZjJmMjIyNDJlODIwYTc2MjExNGI2OTFmMTU4YmQ0YzkuLmRiMzAwMjgx
ZTkzMmUzYTViYTUwYmUzNGYyY2RkZGNhZGIxYWFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmlkVGVt
cGxhdGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0xpbmVCb3hDb250YWluVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgpAQCAtMjE0
NSw2ICsyMTQ2LDE0IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkUm93OgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5
VmFsdWVzRm9yR3JpZFNob3J0aGFuZCh3ZWJraXRHcmlkUm93U2hvcnRoYW5kKCkpOwogCisgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkVGVtcGxhdGU6CisgICAgICAgICAgICBpZiAo
IXN0eWxlLT5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSkgeworICAgICAgICAgICAgICAgIEFTU0VS
VCghc3R5bGUtPm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCgpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBDU1NHcmlkVGVtcGxhdGVWYWx1
ZTo6Y3JlYXRlKHN0eWxlLT5uYW1lZEdyaWRBcmVhKCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhUm93
Q291bnQoKSwgc3R5bGUtPm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCgpKTsKKwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5SGVpZ2h0OgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAg
ICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIvdmlz
dWRldC5odG1sI3RoZS1oZWlnaHQtcHJvcGVydHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
aWRUZW1wbGF0ZVZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjRjZGU1NjhlZjA0MjFiYjk0MTQ0Njlk
ZGU4ZTYxYzEwNDQ0NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyaWRUZW1wbGF0ZVZhbHVlLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNTU0dyaWRUZW1wbGF0ZVZhbHVlLmgiCisKKyNpbmNsdWRlICJHcmlkQ29v
cmRpbmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Q1NTR3JpZFRlbXBsYXRlVmFs
dWUoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIHNpemVfdCByb3dDb3VudCwg
c2l6ZV90IGNvbHVtbkNvdW50KQorICAgIDogQ1NTVmFsdWUoR3JpZFRlbXBsYXRlQ2xhc3MpCisg
ICAgLCBtX2dyaWRBcmVhTWFwKGdyaWRBcmVhTWFwKQorICAgICwgbV9yb3dDb3VudChyb3dDb3Vu
dCkKKyAgICAsIG1fY29sdW1uQ291bnQoY29sdW1uQ291bnQpCit7CisgICAgQVNTRVJUKG1fcm93
Q291bnQpOworICAgIEFTU0VSVChtX2NvbHVtbkNvdW50KTsKK30KKworc3RhdGljIFN0cmluZyBz
dHJpbmdGb3JQb3NpdGlvbihjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgc2l6
ZV90IHJvdywgc2l6ZV90IGNvbHVtbikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBjYW5kaWRhdGVz
OworCisgICAgTmFtZWRHcmlkQXJlYU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZ3JpZEFyZWFN
YXAuZW5kKCk7CisgICAgZm9yIChOYW1lZEdyaWRBcmVhTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGdyaWRBcmVhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBH
cmlkQ29vcmRpbmF0ZSYgY29vcmRpbmF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgaWYgKHJvdyA+
PSBjb29yZGluYXRlLnJvd3MuaW5pdGlhbFBvc2l0aW9uSW5kZXggJiYgcm93IDw9IGNvb3JkaW5h
dGUucm93cy5maW5hbFBvc2l0aW9uSW5kZXgpCisgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVu
ZChpdC0+a2V5KTsKKyAgICB9CisKKyAgICBlbmQgPSBncmlkQXJlYU1hcC5lbmQoKTsKKyAgICBm
b3IgKE5hbWVkR3JpZEFyZWFNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZ3JpZEFyZWFNYXAuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IEdyaWRDb29yZGluYXRlJiBj
b29yZGluYXRlID0gaXQtPnZhbHVlOworICAgICAgICBpZiAoY29sdW1uID49IGNvb3JkaW5hdGUu
Y29sdW1ucy5pbml0aWFsUG9zaXRpb25JbmRleCAmJiBjb2x1bW4gPD0gY29vcmRpbmF0ZS5jb2x1
bW5zLmZpbmFsUG9zaXRpb25JbmRleCAmJiBjYW5kaWRhdGVzLmNvbnRhaW5zKGl0LT5rZXkpKQor
ICAgICAgICAgICAgcmV0dXJuIGl0LT5rZXk7CisgICAgfQorCisgICAgcmV0dXJuICIuIjsKK30K
KworU3RyaW5nIENTU0dyaWRUZW1wbGF0ZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sK
KyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93
IDwgbV9yb3dDb3VudDsgKytyb3cpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1wiJyk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG1fY29sdW1uQ291bnQ7ICsr
Y29sdW1uKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmdGb3JQb3NpdGlvbiht
X2dyaWRBcmVhTWFwLCByb3csIGNvbHVtbikpOworICAgICAgICAgICAgaWYgKGNvbHVtbiAhPSBt
X2NvbHVtbkNvdW50IC0gMSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwor
ICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcIicpOworICAgICAgICBpZiAocm93
ICE9IG1fcm93Q291bnQgLSAxKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAg
ICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlVmFsdWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MWEzNDA4M2IwNTU5NDNiMmQ5OWM5MGIwYmMxOGFjY2E5NDVmNTMyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmgKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ1NTR3JpZFRlbXBsYXRlVmFsdWVfaAorI2RlZmluZSBDU1NHcmlk
VGVtcGxhdGVWYWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkdyaWRD
b29yZGluYXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTR3JpZFRlbXBs
YXRlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU0dyaWRUZW1wbGF0ZVZhbHVlPiBjcmVhdGUoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYg
Z3JpZEFyZWFNYXAsIHNpemVfdCByb3dDb3VudCwgc2l6ZV90IGNvbHVtbkNvdW50KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQ1NTR3JpZFRlbXBsYXRlVmFsdWUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50
LCBjb2x1bW5Db3VudCkpOyB9CisgICAgfkNTU0dyaWRUZW1wbGF0ZVZhbHVlKCkgeyB9CisKKyAg
ICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OworCisgICAgY29uc3QgTmFtZWRHcmlkQXJl
YU1hcCYgZ3JpZEFyZWFNYXAoKSBjb25zdCB7IHJldHVybiBtX2dyaWRBcmVhTWFwOyB9CisgICAg
c2l6ZV90IHJvd0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yb3dDb3VudDsgfQorICAgIHNpemVf
dCBjb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uQ291bnQ7IH0KKworcHJpdmF0
ZToKKyAgICBDU1NHcmlkVGVtcGxhdGVWYWx1ZShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiwgc2l6
ZV90IHJvd0NvdW50LCBzaXplX3QgY29sdW1uQ291bnQpOworCisgICAgTmFtZWRHcmlkQXJlYU1h
cCBtX2dyaWRBcmVhTWFwOworICAgIHNpemVfdCBtX3Jvd0NvdW50OworICAgIHNpemVfdCBtX2Nv
bHVtbkNvdW50OworfTsKKworaW5saW5lIENTU0dyaWRUZW1wbGF0ZVZhbHVlKiB0b0NTU0dyaWRU
ZW1wbGF0ZVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTih2YWx1ZS0+aXNHcmlkVGVtcGxhdGVWYWx1ZSgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q1NTR3JpZFRlbXBsYXRlVmFsdWUqPih2YWx1ZSk7Cit9CisKK2lubGluZSBj
b25zdCBDU1NHcmlkVGVtcGxhdGVWYWx1ZSogdG9DU1NHcmlkVGVtcGxhdGVWYWx1ZShjb25zdCBD
U1NWYWx1ZSogdmFsdWUpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
dmFsdWUtPmlzR3JpZFRlbXBsYXRlVmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IENTU0dyaWRUZW1wbGF0ZVZhbHVlKj4odmFsdWUpOworfQorCisvLyBDYXRjaCB1bm5lZWRl
ZCBjYXN0Lgordm9pZCB0b0NTU0dyaWRUZW1wbGF0ZVZhbHVlKGNvbnN0IENTU0dyaWRUZW1wbGF0
ZVZhbHVlKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU0dyaWRU
ZW1wbGF0ZVZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNWIzMTBjOGYzYWZj
NjQ3ZmRmNzk1YTc4OTczMGZjZDdhMDc5YTFiZS4uNzkwYWMxZmIxYTRhNzgyODU1MmE5NWMyZGE0
NGI0OTk3ZjVmNGY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0dyaWRUZW1w
bGF0ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0lu
aGVyaXRlZFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCkBAIC0yNzEyLDYg
KzI3MTMsMTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICByZXR1cm4gcGFyc2VHcmlkSXRlbVBvc2l0aW9u
U2hvcnRoYW5kKHByb3BJZCwgaW1wb3J0YW50KTsKICAgICB9CiAKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0R3JpZFRlbXBsYXRlOgorICAgICAgICBpZiAoIWNzc0dyaWRMYXlvdXRFbmFibGVk
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBw
YXJzZUdyaWRUZW1wbGF0ZSgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5Db2xsYXBzZTogewogICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAg
ICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
Q29sbGFwc2UpOwpAQCAtNTEzOSw2ICs1MTQ3LDc5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURh
c2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogCiAj
ZW5kaWYgLyogRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSAqLwogCitQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRlKCkKK3sKKyAgICBOYW1lZEdyaWRBcmVh
TWFwIGdyaWRBcmVhTWFwOworICAgIHNpemVfdCByb3dDb3VudCA9IDA7CisgICAgc2l6ZV90IGNv
bHVtbkNvdW50ID0gMDsKKworICAgIHdoaWxlIChDU1NQYXJzZXJWYWx1ZSogY3VycmVudFZhbHVl
ID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgeworICAgICAgICBpZiAoY3VycmVudFZhbHVlLT51
bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAgICAgU3RyaW5nIGdyaWRSb3dOYW1lcyA9IGN1cnJlbnRWYWx1ZS0+c3RyaW5n
OworICAgICAgICBpZiAoIWdyaWRSb3dOYW1lcy5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzOworICAgICAgICBncmlk
Um93TmFtZXMuc3BsaXQoJyAnLCBjb2x1bW5OYW1lcyk7CisKKyAgICAgICAgaWYgKCFjb2x1bW5D
b3VudCkgeworICAgICAgICAgICAgY29sdW1uQ291bnQgPSBjb2x1bW5OYW1lcy5zaXplKCk7Cisg
ICAgICAgICAgICBBU1NFUlQoY29sdW1uQ291bnQpOworICAgICAgICB9IGVsc2UgaWYgKGNvbHVt
bkNvdW50ICE9IGNvbHVtbk5hbWVzLnNpemUoKSkgeworICAgICAgICAgICAgLy8gVGhlIGRlY2xh
cmF0aW9uIGlzIGludmFsaWQgaXMgYWxsIHRoZSByb3dzIGRvbid0IGhhdmUgdGhlIG51bWJlciBv
ZiBjb2x1bW5zLgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKHNpemVfdCBjdXJyZW50Q29sID0gMDsgY3VycmVudENvbCA8IGNvbHVtbkNvdW50OyArK2N1
cnJlbnRDb2wpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZ3JpZEFyZWFOYW1lID0gY29s
dW1uTmFtZXNbY3VycmVudENvbF07CisKKyAgICAgICAgICAgIC8vIFVuYW1lZCBhcmVhcyBhcmUg
YWx3YXlzIHZhbGlkICh3ZSBjb25zaWRlciB0aGVtIHRvIGJlIDF4MSkuCisgICAgICAgICAgICBp
ZiAoZ3JpZEFyZWFOYW1lID09ICIuIikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgLy8gV2UgaGFuZGxlIHNldmVyYWwgZ3JpZCBhcmVhcyB3aXRoIHRoZSBzYW1lIG5h
bWUgYXQgb25jZSB0byBzaW1wbGlmeSB0aGUgdmFsaWRhdGlvbiBjb2RlLgorICAgICAgICAgICAg
c2l6ZV90IGxvb2tBaGVhZENvbDsKKyAgICAgICAgICAgIGZvciAobG9va0FoZWFkQ29sID0gY3Vy
cmVudENvbDsgbG9va0FoZWFkQ29sIDwgKGNvbHVtbkNvdW50IC0gMSk7ICsrbG9va0FoZWFkQ29s
KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbHVtbk5hbWVzW2xvb2tBaGVhZENvbCArIDFdICE9
IGdyaWRBcmVhTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIE5hbWVkR3JpZEFyZWFNYXA6Oml0ZXJhdG9yIGdyaWRBcmVhSXQgPSBn
cmlkQXJlYU1hcC5maW5kKGdyaWRBcmVhTmFtZSk7CisgICAgICAgICAgICBpZiAoZ3JpZEFyZWFJ
dCA9PSBncmlkQXJlYU1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICBncmlkQXJlYU1hcC5hZGQo
Z3JpZEFyZWFOYW1lLCBHcmlkQ29vcmRpbmF0ZShHcmlkU3Bhbihyb3dDb3VudCwgcm93Q291bnQp
LCBHcmlkU3BhbihjdXJyZW50Q29sLCBsb29rQWhlYWRDb2wpKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBHcmlkQ29vcmRpbmF0ZSYgZ3JpZENvb3JkaW5hdGUgPSBncmlk
QXJlYUl0LT52YWx1ZTsKKworICAgICAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2hlY2tz
IHRlc3QgdGhhdCB0aGUgZ3JpZCBhcmVhIGlzIGEgc2luZ2xlIGZpbGxlZC1pbiByZWN0YW5nbGUu
CisgICAgICAgICAgICAgICAgLy8gMS4gVGhlIG5ldyByb3cgaXMgYWRqYWNlbnQgdG8gdGhlIHBy
ZXZpb3VzbHkgcGFyc2VkIHJvdy4KKyAgICAgICAgICAgICAgICBpZiAocm93Q291bnQgIT0gZ3Jp
ZENvb3JkaW5hdGUucm93cy5pbml0aWFsUG9zaXRpb25JbmRleCArIDEpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAgICAgLy8gMi4gVGhlIG5ldyBhcmVhIHN0
YXJ0cyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhcyB0aGUgcHJldmlvdXNseSBwYXJzZWQgYXJlYS4K
KyAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbCAhPSBncmlkQ29vcmRpbmF0ZS5jb2x1bW5z
LmluaXRpYWxQb3NpdGlvbkluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKwor
ICAgICAgICAgICAgICAgIC8vIDMuIFRoZSBuZXcgYXJlYSBlbmRzIGF0IHRoZSBzYW1lIHBvc2l0
aW9uIGFzIHRoZSBwcmV2aW91c2x5IHBhcnNlZCBhcmVhLgorICAgICAgICAgICAgICAgIGlmIChs
b29rQWhlYWRDb2wgIT0gZ3JpZENvb3JkaW5hdGUuY29sdW1ucy5maW5hbFBvc2l0aW9uSW5kZXgp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAgICAgKytncmlk
Q29vcmRpbmF0ZS5yb3dzLmZpbmFsUG9zaXRpb25JbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGN1cnJlbnRDb2wgPSBsb29rQWhlYWRDb2w7CisgICAgICAgIH0KKworICAgICAgICAr
K3Jvd0NvdW50OworICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgIH0KKworICAgIGlm
ICghcm93Q291bnQgfHwgIWNvbHVtbkNvdW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dDb3VudCwg
Y29sdW1uQ291bnQpOworfQorCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNl
Q291bnRlckNvbnRlbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzLCBib29sIGNvdW50ZXJzKQog
ewogICAgIHVuc2lnbmVkIG51bUFyZ3MgPSBhcmdzLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKaW5kZXggNmNjMTQzOTVmNDhmZDQ0NTlkZjYzYmM4ZDUzMDYyMmU5MjVjYmJjMS4uMjQ1MmQ0
ZjcwNWJkYTJmMzQ0Y2RmMmM1NjNiYWZmNzIzOTU2YWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aApAQCAtMTY5LDYgKzE2OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlR3JpZFRyYWNrTGlz
dChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcGFyc2VHcmlkVHJhY2tTaXplKCk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcGFyc2VHcmlkQnJlYWR0aChDU1NQYXJzZXJWYWx1ZSopOworICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFRlbXBsYXRlKCk7CiAKICAgICBib29sIHBhcnNlRGFz
aGJvYXJkUmVnaW9ucyhDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggMTk5NmU0ODFjZDFmMWNmMzE5NWIzMWJk
NThmZjY1NWU3M2U5YWYzOC4uYjczMGIxODk5MzRmYmVmZDRiMDRjZWM4MjVmM2Y0NGI0YmFmNDZk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTMxNCw2ICszMTQs
NyBAQCB6LWluZGV4CiAtd2Via2l0LWdyaWQtcm93LXN0YXJ0CiAtd2Via2l0LWdyaWQtY29sdW1u
CiAtd2Via2l0LWdyaWQtcm93Cistd2Via2l0LWdyaWQtdGVtcGxhdGUKIC13ZWJraXQtZ3JpZC1h
dXRvLWZsb3cKIC13ZWJraXQtaGlnaGxpZ2h0IFtJbmhlcml0ZWRdCiAtd2Via2l0LWh5cGhlbmF0
ZS1jaGFyYWN0ZXIgW0luaGVyaXRlZF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IDIwMjNk
ZTg4YmY4MmVmZWQxYmNkN2MxNDdkYWM3OTM2ODQ1MGQ0ZGYuLmE2YjE1NmEwZTRkZDBjZTQyZTJm
N2I2ZjRkOGNmMmQ3ZmZkNGJlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Z1bmN0aW9u
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3Jp
ZFRlbXBsYXRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIK
QEAgLTE5OCw2ICsxOTksOCBAQCBib29sIENTU1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NTVmFsdWUm
IG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTSW5o
ZXJpdGVkVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2UgSW5pdGlhbENsYXNzOgog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTSW5pdGlhbFZhbHVlPigqdGhp
cywgb3RoZXIpOworICAgICAgICBjYXNlIEdyaWRUZW1wbGF0ZUNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTR3JpZFRlbXBsYXRlVmFsdWU+KCp0aGlzLCBvdGhl
cik7CiAgICAgICAgIGNhc2UgUHJpbWl0aXZlQ2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNTU1ZhbHVlczxDU1NQcmltaXRpdmVWYWx1ZT4oKnRoaXMsIG90aGVyKTsKICAgICAgICAg
Y2FzZSBSZWZsZWN0Q2xhc3M6CkBAIC0zMDAsNiArMzAzLDggQEAgU3RyaW5nIENTU1ZhbHVlOjpj
c3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0luaGVy
aXRlZFZhbHVlKj4odGhpcyktPmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIEluaXRpYWxDbGFz
czoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0luaXRpYWxWYWx1ZSo+KHRo
aXMpLT5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBHcmlkVGVtcGxhdGVDbGFzczoKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0dyaWRUZW1wbGF0ZVZhbHVlKj4odGhpcykt
PmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqPih0aGlzKS0+Y3VzdG9tQ1NT
VGV4dCgpOwogICAgIGNhc2UgUmVmbGVjdENsYXNzOgpAQCAtNDI1LDYgKzQzMCw5IEBAIHZvaWQg
Q1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgSW5pdGlhbENsYXNzOgogICAgICAgICBkZWxl
dGUgdG9DU1NJbml0aWFsVmFsdWUodGhpcyk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEdy
aWRUZW1wbGF0ZUNsYXNzOgorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Q1NTR3JpZFRlbXBs
YXRlVmFsdWUqPih0aGlzKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgUHJpbWl0aXZlQ2xh
c3M6CiAgICAgICAgIGRlbGV0ZSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRoaXMpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDI1OTY1YWIyN2Q4YTU2ZTVkOGZiYjJhMDk1
YWRkNzc5OTI1MzZjYTYuLjY3OTkwMzc2NWJkMTliOWRjZWRjYzBmZWE3MTdmYmFiZGI5Y2E0NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogI2lmIEVO
QUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGJvb2wgaXNWYXJpYWJsZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc1R5cGUgPT0gVmFyaWFibGVDbGFzczsgfQogI2VuZGlmCisgICAgYm9vbCBp
c0dyaWRUZW1wbGF0ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZFRl
bXBsYXRlQ2xhc3M7IH0KICNpZiBFTkFCTEUoU1ZHKQogICAgIGJvb2wgaXNTVkdDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNWR0NvbG9yQ2xhc3MgfHwgbV9jbGFzc1R5cGUg
PT0gU1ZHUGFpbnRDbGFzczsgfQogICAgIGJvb2wgaXNTVkdQYWludCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xhc3NUeXBlID09IFNWR1BhaW50Q2xhc3M7IH0KQEAgLTE3OSw2ICsxODAsNyBAQCBwcm90
ZWN0ZWQ6CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIFZhcmlhYmxlQ2xhc3Ms
CiAjZW5kaWYKKyAgICAgICAgR3JpZFRlbXBsYXRlQ2xhc3MsCiAjaWYgRU5BQkxFKFNWRykKICAg
ICAgICAgU1ZHQ29sb3JDbGFzcywKICAgICAgICAgU1ZHUGFpbnRDbGFzcywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAzMWJmZTNiNzE1ZjQ0NmE3NDc1MTJjY2E5NzRmYjE1
YWVhY2FiNDM2Li4wOWYzZmU1OGUwOGY4NTJmZTRlMTRiZDI4NmVhMzEzZTYzYTdiOTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkNTU0ZvbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0dyaWRUZW1wbGF0ZVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Bh
Z2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCkBAIC0yNzg1LDYgKzI3ODYsMzEgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1Zh
bHVlKiB2YWx1ZSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZEl0ZW1Sb3dFbmQocm93
RW5kUG9zaXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRHcmlkVGVtcGxhdGU6IHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCkgeworICAgICAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYShzdGF0ZS5wYXJlbnRTdHlsZSgp
LT5uYW1lZEdyaWRBcmVhKCkpOworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRH
cmlkQXJlYVJvd0NvdW50KHN0YXRlLnBhcmVudFN0eWxlKCktPm5hbWVkR3JpZEFyZWFSb3dDb3Vu
dCgpKTsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFDb2x1bW5D
b3VudChzdGF0ZS5wYXJlbnRTdHlsZSgpLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSW5pdGlhbCkgewor
ICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYShSZW5kZXJTdHlsZTo6
aW5pdGlhbE5hbWVkR3JpZEFyZWEoKSk7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRO
YW1lZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291
bnQoKSk7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgeworICAgICAgICAgICAgQVNTRVJUKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUp
LT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIENTU0dyaWRUZW1wbGF0ZVZhbHVlKiBncmlkVGVtcGxhdGVWYWx1
ZSA9IHRvQ1NTR3JpZFRlbXBsYXRlVmFsdWUodmFsdWUpOworICAgICAgICBzdGF0ZS5zdHlsZSgp
LT5zZXROYW1lZEdyaWRBcmVhKGdyaWRUZW1wbGF0ZVZhbHVlLT5ncmlkQXJlYU1hcCgpKTsKKyAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KGdyaWRUZW1wbGF0
ZVZhbHVlLT5yb3dDb3VudCgpKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlk
QXJlYUNvbHVtbkNvdW50KGdyaWRUZW1wbGF0ZVZhbHVlLT5jb2x1bW5Db3VudCgpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGFsaWFzZWQg
YW5kIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIgYWxyZWFkeSBhcHBsaWVkIHRoZSBwcm9wZXJ0eSBv
biB0aGUgcHJlZml4ZWQgdmVyc2lvbi4KICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRl
bGF5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDRiNGM3OGU2
ZDhlYjU0NzdmOWRkMmJmMTE1OThlMTYyMGUyNzkxMjcuLjI1ODM1N2FlY2NkNDI1MzRhM2ZjNjA3
Y2MwNmJhNWQxMWMzNWMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5k
ZXJHcmlkLmgiCiAKKyNpbmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgogI2luY2x1ZGUgIkxheW91
dFJlcGFpbnRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKQEAgLTcwNSwyMCArNzA2LDIwIEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0
R3JpZEl0ZW1zKCkKICAgICBjbGVhckdyaWQoKTsKIH0KIAotUmVuZGVyR3JpZDo6R3JpZENvb3Jk
aW5hdGUgUmVuZGVyR3JpZDo6Y2FjaGVkR3JpZENvb3JkaW5hdGUoY29uc3QgUmVuZGVyQm94KiBn
cmlkSXRlbSkgY29uc3QKK0dyaWRDb29yZGluYXRlIFJlbmRlckdyaWQ6OmNhY2hlZEdyaWRDb29y
ZGluYXRlKGNvbnN0IFJlbmRlckJveCogZ3JpZEl0ZW0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1f
Z3JpZEl0ZW1Db29yZGluYXRlLmNvbnRhaW5zKGdyaWRJdGVtKSk7CiAgICAgcmV0dXJuIG1fZ3Jp
ZEl0ZW1Db29yZGluYXRlLmdldChncmlkSXRlbSk7CiB9CiAKLVJlbmRlckdyaWQ6OkdyaWRTcGFu
IFJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlv
bihjb25zdCBSZW5kZXJCb3gqLCBUcmFja1NpemluZ0RpcmVjdGlvbiwgc2l6ZV90IGluaXRpYWxQ
b3NpdGlvbikgY29uc3QKK0dyaWRTcGFuIFJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gqLCBUcmFja1NpemluZ0Rp
cmVjdGlvbiwgc2l6ZV90IGluaXRpYWxQb3NpdGlvbikgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
V2UgZG9uJ3Qgc3VwcG9ydCBzcGFubmluZyB3aXRoIGF1dG8gcG9zaXRpb25zIHlldC4gT25jZSB3
ZSBkbywgdGhpcyBpcyB3cm9uZy4gQWxzbyB3ZSBzaG91bGQgbWFrZQogICAgIC8vIHN1cmUgdGhl
IGdyaWQgY2FuIGFjY29tb2RhdGUgdGhlIG5ldyBpdGVtIGFzIHdlIG9ubHkgZ3JvdyAxIHBvc2l0
aW9uIGluIGEgZ2l2ZW4gZGlyZWN0aW9uLgogICAgIHJldHVybiBHcmlkU3Bhbihpbml0aWFsUG9z
aXRpb24sIGluaXRpYWxQb3NpdGlvbik7CiB9CiAKLVBhc3NPd25QdHI8UmVuZGVyR3JpZDo6R3Jp
ZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJl
bmRlckJveCogZ3JpZEl0ZW0sIFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QK
K1Bhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKGNvbnN0IFJlbmRlckJveCogZ3JpZEl0ZW0sIFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikgY29uc3QKIHsKICAgICBjb25zdCBHcmlkUG9zaXRpb24mIGluaXRpYWxQb3NpdGlv
biA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBncmlkSXRlbS0+c3R5bGUoKS0+Z3JpZEl0
ZW1Db2x1bW5TdGFydCgpIDogZ3JpZEl0ZW0tPnN0eWxlKCktPmdyaWRJdGVtUm93U3RhcnQoKTsK
ICAgICBjb25zdCBHcmlkUG9zaXRpb25TaWRlIGluaXRpYWxQb3NpdGlvblNpZGUgPSAoZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gQ29sdW1uU3RhcnRTaWRlIDogUm93U3RhcnRTaWRlOwpAQCAt
ODI5LDcgKzgzMCw3IEBAIHNpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJv
bVN0eWxlKGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyCiAgICAgcmV0dXJuIDA7CiB9
CiAKLVBhc3NPd25QdHI8UmVuZGVyR3JpZDo6R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVH
cmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0
ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRl
IHNpZGUpIGNvbnN0CitQYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlR3Jp
ZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQ
b3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBz
aWRlKSBjb25zdAogewogICAgIGlmIChwb3NpdGlvbi5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJu
IEdyaWRTcGFuOjpjcmVhdGUocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCByZXNvbHZlZE9wcG9z
aXRlUG9zaXRpb24pOwpAQCAtODUzLDcgKzg1NCw3IEBAIFBhc3NPd25QdHI8UmVuZGVyR3JpZDo6
R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQ
CiAgICAgcmV0dXJuIEdyaWRTcGFuOjpjcmVhdGUocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBy
ZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24gKyBwb3NpdGlvbk9mZnNldCk7CiB9CiAKLVBhc3NPd25Q
dHI8UmVuZGVyR3JpZDo6R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVOYW1lZEdyaWRMaW5l
UG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBv
c2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNp
ZGUpIGNvbnN0CitQYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRH
cmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bw
b3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9u
U2lkZSBzaWRlKSBjb25zdAogewogICAgIEFTU0VSVChwb3NpdGlvbi5pc1NwYW4oKSk7CiAgICAg
QVNTRVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwpAQCAtODc0LDcgKzg3
NSw3IEBAIFBhc3NPd25QdHI8UmVuZGVyR3JpZDo6R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29s
dmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0CiAgICAgcmV0dXJuIHJlc29sdmVSb3dFbmRD
b2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihyZXNv
bHZlZE9wcG9zaXRlUG9zaXRpb24sIHBvc2l0aW9uLCBpdC0+dmFsdWUpOwogfQogCi1QYXNzT3du
UHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlUm93U3RhcnRDb2x1
bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVf
dCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24s
IGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBncmlkTGluZXMpIGNvbnN0CitQYXNzT3duUHRyPEdyaWRT
cGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9z
aXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXplX3Q+
JiBncmlkTGluZXMpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGdyaWQgbGluZSBpbmVxdWFsaXR5IG5l
ZWRzIHRvIGJlIHN0cmljdCAod2hpY2ggZG9lc24ndCBtYXRjaCB0aGUgYWZ0ZXIgLyBlbmQgY2Fz
ZSkgYmVjYXVzZSB8cmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9ufAogICAgIC8vIGlzIGFscmVhZHkg
Y29udmVydGVkIHRvIGFuIGluZGV4IGluIG91ciBncmlkIHJlcHJlc2VudGF0aW9uIChpZSBvbmUg
d2FzIHJlbW92ZWQgZnJvbSB0aGUgZ3JpZCBsaW5lIHRvIGFjY291bnQgZm9yIHRoZSBzaWRlKS4K
QEAgLTg4OSw3ICs4OTAsNyBAQCBQYXNzT3duUHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBSZW5k
ZXJHcmlkOjpyZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZAogICAgIHJldHVybiBH
cmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0
ZVBvc2l0aW9uKTsKIH0KIAotUGFzc093blB0cjxSZW5kZXJHcmlkOjpHcmlkU3Bhbj4gUmVuZGVy
R3JpZDo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RP
cHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdy
aWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBncmlkTGluZXMpIGNv
bnN0CitQYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlUm93RW5kQ29sdW1u
RW5kTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJl
c29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgY29u
c3QgVmVjdG9yPHNpemVfdD4mIGdyaWRMaW5lcykgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBjb3VsZCBiZSBhIGJpbmFyeSBzZWFyY2ggYXMgfGdyaWRMaW5lc3wgaXMgb3JkZXJlZC4KICAg
ICBzaXplX3QgZmlyc3RMaW5lQWZ0ZXJPcHBvc2l0ZVBvc2l0aW9uSW5kZXggPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggZThkMWI5ZmYyMzA3OWEzMmVmNTZiMTll
NGVjZGIzOTJkOTg1OWU4Yy4uOTkxODkxOWI2NDQ1N2IwZGI1MjBhNzYwZGNkMDQ3NWE3YmMyN2Jh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0zMCw2ICszMCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JpZENvb3JkaW5hdGU7CitjbGFzcyBH
cmlkU3BhbjsKIGNsYXNzIEdyaWRUcmFjazsKIAogY2xhc3MgUmVuZGVyR3JpZCBGSU5BTCA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CkBAIC01OSw0MSArNjEsNiBAQCBwcml2YXRlOgogCiAgICAgTGF5
b3V0VW5pdCBjb21wdXRlUHJlZmVycmVkVHJhY2tXaWR0aChjb25zdCBMZW5ndGgmLCBzaXplX3Qp
IGNvbnN0OwogCi0gICAgc3RydWN0IEdyaWRTcGFuIHsKLSAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8R3JpZFNwYW4+IGNyZWF0ZShzaXplX3QgaW5pdGlhbFBvc2l0aW9uLCBzaXplX3QgZmluYWxQ
b3NpdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmlk
U3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEdyaWRTcGFuKHNpemVfdCBpbml0aWFsUG9zaXRpb24sIHNpemVfdCBmaW5hbFBvc2l0aW9u
KQotICAgICAgICAgICAgOiBpbml0aWFsUG9zaXRpb25JbmRleChpbml0aWFsUG9zaXRpb24pCi0g
ICAgICAgICAgICAsIGZpbmFsUG9zaXRpb25JbmRleChmaW5hbFBvc2l0aW9uKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoaW5pdGlhbFBvc2l0aW9uSW5kZXggPD0gZmluYWxQb3NpdGlv
bkluZGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdCBpbml0aWFsUG9zaXRpb25JbmRl
eDsKLSAgICAgICAgc2l6ZV90IGZpbmFsUG9zaXRpb25JbmRleDsKLSAgICB9OwotCi0gICAgc3Ry
dWN0IEdyaWRDb29yZGluYXRlIHsKLSAgICAgICAgLy8gSGFzaE1hcCByZXF1aXJlcyBhIGRlZmF1
bHQgY29uc3R1Y3Rvci4KLSAgICAgICAgR3JpZENvb3JkaW5hdGUoKQotICAgICAgICAgICAgOiBj
b2x1bW5zKDAsIDApCi0gICAgICAgICAgICAsIHJvd3MoMCwgMCkKLSAgICAgICAgewotICAgICAg
ICB9Ci0KLSAgICAgICAgR3JpZENvb3JkaW5hdGUoY29uc3QgR3JpZFNwYW4mIHIsIGNvbnN0IEdy
aWRTcGFuJiBjKQotICAgICAgICAgICAgOiBjb2x1bW5zKGMpCi0gICAgICAgICAgICAsIHJvd3Mo
cikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgR3JpZFNwYW4gY29sdW1uczsKLSAg
ICAgICAgR3JpZFNwYW4gcm93czsKLSAgICB9OwotCiAgICAgY2xhc3MgR3JpZEl0ZXJhdG9yOwog
ICAgIGVudW0gVHJhY2tTaXppbmdEaXJlY3Rpb24geyBGb3JDb2x1bW5zLCBGb3JSb3dzIH07CiAg
ICAgdm9pZCBjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKFRyYWNrU2l6aW5nRGlyZWN0
aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYg
cm93VHJhY2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9H
cmlkQ29vcmRpbmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRDb29y
ZGluYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAwZDVmNjFmOTk3OWE3NDlmNWI3ZWMwZDQ5YmRmZjgxNjNi
NWJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9H
cmlkQ29vcmRpbmF0ZS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdyaWRDb29yZGluYXRlX2gK
KyNkZWZpbmUgR3JpZENvb3JkaW5hdGVfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgc3BhbiBpbiBhIHNpbmdsZSBkaXJlY3Rp
b24gKGVpdGhlciByb3dzIG9yIGNvbHVtbnMpLiBOb3RlIHRoYXQgfGluaXRpYWxQb3NpdGlvbklu
ZGV4fAorLy8gYW5kIHxmaW5hbFBvc2l0aW9uSW5kZXh8IGFyZSBncmlkIGFyZWFzJyBpbmRleGVz
LCBOT1QgZ3JpZCBsaW5lcycuIEl0ZXJhdGluZyBvdmVyIHRoZQorLy8gc3BhbiBzaG91bGQgaW5j
bHVkZSBib3RoIHxpbml0aWFsUG9zaXRpb25JbmRleHwgYW5kIHxmaW5hbFBvc2l0aW9uSW5kZXh8
IHRvIGJlIGNvcnJlY3QuCitzdHJ1Y3QgR3JpZFNwYW4geworICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdyaWRTcGFuPiBjcmVhdGUoc2l6ZV90IGluaXRpYWxQb3NpdGlvbiwgc2l6ZV90IGZpbmFsUG9z
aXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdyaWRTcGFuKGluaXRp
YWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbikpOworICAgIH0KKworICAgIEdyaWRTcGFuKHNpemVf
dCBpbml0aWFsUG9zaXRpb24sIHNpemVfdCBmaW5hbFBvc2l0aW9uKQorICAgICAgICA6IGluaXRp
YWxQb3NpdGlvbkluZGV4KGluaXRpYWxQb3NpdGlvbikKKyAgICAgICAgLCBmaW5hbFBvc2l0aW9u
SW5kZXgoZmluYWxQb3NpdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVChpbml0aWFsUG9zaXRp
b25JbmRleCA8PSBmaW5hbFBvc2l0aW9uSW5kZXgpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBHcmlkU3BhbiYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpbml0
aWFsUG9zaXRpb25JbmRleCA9PSBvLmluaXRpYWxQb3NpdGlvbkluZGV4ICYmIGZpbmFsUG9zaXRp
b25JbmRleCA9PSBvLmZpbmFsUG9zaXRpb25JbmRleDsKKyAgICB9CisKKyAgICBzaXplX3QgaW5p
dGlhbFBvc2l0aW9uSW5kZXg7CisgICAgc2l6ZV90IGZpbmFsUG9zaXRpb25JbmRleDsKK307CisK
Ky8vIFRoaXMgcmVwcmVzZW50cyBhIGdyaWQgYXJlYSB0aGF0IHNwYW5zIGluIGJvdGggcm93cycg
YW5kIGNvbHVtbnMnIGRpcmVjdGlvbi4KK3N0cnVjdCBHcmlkQ29vcmRpbmF0ZSB7CisgICAgLy8g
SGFzaE1hcCByZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rvci4KKyAgICBHcmlkQ29vcmRpbmF0
ZSgpCisgICAgICAgIDogY29sdW1ucygwLCAwKQorICAgICAgICAsIHJvd3MoMCwgMCkKKyAgICB7
CisgICAgfQorCisgICAgR3JpZENvb3JkaW5hdGUoY29uc3QgR3JpZFNwYW4mIHIsIGNvbnN0IEdy
aWRTcGFuJiBjKQorICAgICAgICA6IGNvbHVtbnMoYykKKyAgICAgICAgLCByb3dzKHIpCisgICAg
eworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkQ29vcmRpbmF0ZSYgbykg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb2x1bW5zID09IG8uY29sdW1ucyAmJiByb3dz
ID09IG8ucm93czsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JpZENvb3Jk
aW5hdGUmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAg
ICB9CisKKyAgICBHcmlkU3BhbiBjb2x1bW5zOworICAgIEdyaWRTcGFuIHJvd3M7Cit9OworCit0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBHcmlkQ29vcmRpbmF0ZT4gTmFtZWRHcmlkQXJlYU1hcDsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3JpZENvb3JkaW5hdGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAyMmM1
MzY4ZTI1ZjZhNTEwODRjOWRlNTdmMGM5NTliYmFhZDM1NWUzLi5kMzQ3YTM4M2ZjZWU2NmY0MjVm
YjUwY2E4NTk2YzU3N2FiMTM4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaApAQCAtNzgzLDYgKzc4Myw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93czsgfQogICAgIGNvbnN0IE5hbWVkR3JpZExp
bmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KICAgICBjb25zdCBO
YW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29u
c3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYTsgfQorICAgIHNpemVfdCBu
YW1lZEdyaWRBcmVhUm93Q291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkLT5tX25hbWVkR3JpZEFyZWFSb3dDb3VudDsgfQorICAgIHNpemVfdCBuYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsgfQogICAgIEdyaWRBdXRvRmxvdyBn
cmlkQXV0b0Zsb3coKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2dyaWRBdXRvRmxvdzsgfQogICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIGdyaWRBdXRvQ29s
dW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3Jp
ZEF1dG9Db2x1bW5zOyB9CiAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgZ3JpZEF1dG9Sb3dzKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b1Jv
d3M7IH0KQEAgLTEzMTgsNiArMTMyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyaWRSb3dz
KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZFJvd3MsIGxlbmd0aHMpOyB9CiAg
ICAgdm9pZCBzZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYg
bmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9ncmlkLCBtX25hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1lZEdyaWRDb2x1bW5MaW5l
cyk7IH0KICAgICB2b2lkIHNldE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVz
TWFwJiBuYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2dyaWQsIG1fbmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsg
fQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1l
ZEdyaWRBcmVhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3Jp
ZCwgbV9uYW1lZEdyaWRBcmVhLCBuYW1lZEdyaWRBcmVhKTsgfQorICAgIHZvaWQgc2V0TmFtZWRH
cmlkQXJlYVJvd0NvdW50KHNpemVfdCByb3dDb3VudCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50LCByb3dDb3Vu
dCk7IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChzaXplX3QgY29sdW1u
Q291bnQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkLCBt
X25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCwgY29sdW1uQ291bnQpOyB9CiAgICAgdm9pZCBzZXRH
cmlkQXV0b0Zsb3coR3JpZEF1dG9GbG93IGZsb3cpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9ncmlkLCBtX2dyaWRBdXRvRmxvdywgZmxvdyk7IH0KICAgICB2b2lk
IHNldEdyaWRJdGVtQ29sdW1uU3RhcnQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5TdGFydFBv
c2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0
ZW0sIG1fZ3JpZENvbHVtblN0YXJ0LCBjb2x1bW5TdGFydFBvc2l0aW9uKTsgfQogICAgIHZvaWQg
c2V0R3JpZEl0ZW1Db2x1bW5FbmQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5FbmRQb3NpdGlv
bikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBt
X2dyaWRDb2x1bW5FbmQsIGNvbHVtbkVuZFBvc2l0aW9uKTsgfQpAQCAtMTc3Myw2ICsxNzc5LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGluaXRpYWxHcmlkQXV0b0NvbHVt
bnMoKSB7IHJldHVybiBHcmlkVHJhY2tTaXplKEF1dG8pOyB9CiAgICAgc3RhdGljIEdyaWRUcmFj
a1NpemUgaW5pdGlhbEdyaWRBdXRvUm93cygpIHsgcmV0dXJuIEdyaWRUcmFja1NpemUoQXV0byk7
IH0KIAorICAgIHN0YXRpYyBOYW1lZEdyaWRBcmVhTWFwIGluaXRpYWxOYW1lZEdyaWRBcmVhKCkg
eyByZXR1cm4gTmFtZWRHcmlkQXJlYU1hcCgpOyB9CisgICAgc3RhdGljIHNpemVfdCBpbml0aWFs
TmFtZWRHcmlkQXJlYUNvdW50KCkgeyByZXR1cm4gMDsgfQorCiAgICAgLy8gJ2F1dG8nIGlzIHRo
ZSBkZWZhdWx0LgogICAgIHN0YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRQb3NpdGlvbigp
IHsgcmV0dXJuIEdyaWRQb3NpdGlvbigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcAppbmRleCA5NDliZTAyNjBlYTUyNDhlY2FmZWNm
MDA3NzcxNDk2NjMxNTMzMDVlLi4yZDY1ZWM4ODVjNDM1ZDE2NzBiNWMyNDZlYWNmNDRkZTVhYTYw
NWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlk
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuY3BwCkBAIC0zNiw2ICszNiw5IEBAIFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoKQog
ICAgICwgbV9ncmlkQXV0b0Zsb3coUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0Zsb3coKSkK
ICAgICAsIG1fZ3JpZEF1dG9Sb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkp
CiAgICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvQ29s
dW1ucygpKQorICAgICwgbV9uYW1lZEdyaWRBcmVhKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRH
cmlkQXJlYSgpKQorICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKKyAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNv
dW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpCiB7CiB9CiAKQEAg
LTQ4LDYgKzUxLDkgQEAgU3R5bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YShjb25zdCBTdHlsZUdy
aWREYXRhJiBvKQogICAgICwgbV9ncmlkQXV0b0Zsb3coby5tX2dyaWRBdXRvRmxvdykKICAgICAs
IG1fZ3JpZEF1dG9Sb3dzKG8ubV9ncmlkQXV0b1Jvd3MpCiAgICAgLCBtX2dyaWRBdXRvQ29sdW1u
cyhvLm1fZ3JpZEF1dG9Db2x1bW5zKQorICAgICwgbV9uYW1lZEdyaWRBcmVhKG8ubV9uYW1lZEdy
aWRBcmVhKQorICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoby5tX25hbWVkR3JpZEFyZWFS
b3dDb3VudCkKKyAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KG8ubV9uYW1lZEdyaWRB
cmVhQ29sdW1uQ291bnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkRGF0YS5oCmluZGV4IDdhMzFhM2VjNTA3ZGY1ZTA2YWEyMWU1YjJiMzYxMjMx
NzYwMmY5YzIuLjg4NTgxOWVlZTU1YTkzYjYzNjMxZGM5NDcyYzMyNDI3NGYxMzBjNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBTdHlsZUdyaWREYXRhX2gKICNkZWZpbmUgU3R5bGVHcmlkRGF0
YV9oCiAKKyNpbmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgogI2luY2x1ZGUgIkdyaWRUcmFja1Np
emUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU3R5bGVHcmlkRGF0YSYgbykgY29uc3QKICAgICB7CiAgICAgICAgIC8vIEZJWE1F
OiBjb21wYXJpbmcgdHdvIGhhc2hlcyBkb2Vzbid0IGxvb2sgZ3JlYXQgZm9yIHBlcmZvcm1hbmNl
LiBTb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIGdvaW5nIGZvcndhcmQuCi0gICAgICAgIHJldHVy
biBtX2dyaWRDb2x1bW5zID09IG8ubV9ncmlkQ29sdW1ucyAmJiBtX2dyaWRSb3dzID09IG8ubV9n
cmlkUm93cyAmJiBtX2dyaWRBdXRvRmxvdyA9PSBvLm1fZ3JpZEF1dG9GbG93ICYmIG1fZ3JpZEF1
dG9Sb3dzID09IG8ubV9ncmlkQXV0b1Jvd3MgJiYgbV9ncmlkQXV0b0NvbHVtbnMgPT0gby5tX2dy
aWRBdXRvQ29sdW1ucyAmJiBtX25hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubV9uYW1lZEdyaWRD
b2x1bW5MaW5lcyAmJiBtX25hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9uYW1lZEdyaWRSb3dMaW5l
czsKKyAgICAgICAgcmV0dXJuIG1fZ3JpZENvbHVtbnMgPT0gby5tX2dyaWRDb2x1bW5zICYmIG1f
Z3JpZFJvd3MgPT0gby5tX2dyaWRSb3dzICYmIG1fZ3JpZEF1dG9GbG93ID09IG8ubV9ncmlkQXV0
b0Zsb3cgJiYgbV9ncmlkQXV0b1Jvd3MgPT0gby5tX2dyaWRBdXRvUm93cyAmJiBtX2dyaWRBdXRv
Q29sdW1ucyA9PSBvLm1fZ3JpZEF1dG9Db2x1bW5zICYmIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMg
PT0gby5tX25hbWVkR3JpZENvbHVtbkxpbmVzICYmIG1fbmFtZWRHcmlkUm93TGluZXMgPT0gby5t
X25hbWVkR3JpZFJvd0xpbmVzICYmIG1fbmFtZWRHcmlkQXJlYSA9PSBvLm1fbmFtZWRHcmlkQXJl
YSAmJiBtX25hbWVkR3JpZEFyZWEgPT0gby5tX25hbWVkR3JpZEFyZWEgJiYgbV9uYW1lZEdyaWRB
cmVhUm93Q291bnQgPT0gby5tX25hbWVkR3JpZEFyZWFSb3dDb3VudCAmJiBtX25hbWVkR3JpZEFy
ZWFDb2x1bW5Db3VudCA9PSBvLm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OwogICAgIH0KIAog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWREYXRhJiBvKSBjb25zdApAQCAtNjUs
NiArNjYsMTIgQEAgcHVibGljOgogICAgIEdyaWRUcmFja1NpemUgbV9ncmlkQXV0b1Jvd3M7CiAg
ICAgR3JpZFRyYWNrU2l6ZSBtX2dyaWRBdXRvQ29sdW1uczsKIAorICAgIE5hbWVkR3JpZEFyZWFN
YXAgbV9uYW1lZEdyaWRBcmVhOworICAgIC8vIEJlY2F1c2UgbV9uYW1lZEdyaWRBcmVhIGRvZXNu
J3Qgc3RvcmUgdGhlIHVubmFtZWQgZ3JpZCBhcmVhcywgd2UgbmVlZCB0byBrZWVwIHRyYWNrCisg
ICAgLy8gb2YgdGhlIGV4cGxpY2l0IGdyaWQgc2l6ZSBkZWZpbmVkIGJ5IGJvdGggbmFtZWQgYW5k
IHVubmFtZWQgZ3JpZCBhcmVhcy4KKyAgICBzaXplX3QgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7
CisgICAgc2l6ZV90IG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OworCiBwcml2YXRlOgogICAg
IFN0eWxlR3JpZERhdGEoKTsKICAgICBTdHlsZUdyaWREYXRhKGNvbnN0IFN0eWxlR3JpZERhdGEm
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5MmM4M2ZhOGExNjc5YjFmYzZiODg1MDVhZTI5MTQyYjA4NDYxM2ZmLi4wYjY3
ODEyNjQ5OTY0NjU1NzNkNGE4ZGM2NGM1YTlkMmZlMzIwM2QzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTMtMTAtMDggIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGdyaWQt
dGVtcGxhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzMxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZyb20gQmxpbmsgcjE1MzQyNywgcjE1NTE5OSBhbmQgcjE1NTcxMiAgYnkgPGpjaGFmZnJhaXhA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0byB2ZXJpZnkgdGhhdCB3ZSBw
cm9wZXJseSByZWNvZ25pemUsIHBhcnNlLCBzdG9yZQorICAgICAgICBhbmQgcmV0dXJuIHRoZSB2
YWx1ZSBvZiBncmlkLXRlbXBsYXRlLgorCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
Z3JpZC10ZW1wbGF0ZS1nZXQtc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC10ZW1wbGF0ZS1nZXQtc2V0Lmh0bWw6IEFkZGVkLgorCiAy
MDEzLTEwLTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBtZWRpYS92aWRlby1zcmMtYmxvYi5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXRlbXBsYXRlLWdldC1zZXQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC10ZW1wbGF0ZS1n
ZXQtc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2Q4N2EwZDZmNjg2ZjRjNzVhMzVlZDdl
OTFmNTRlNDViN2FhMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC10ZW1wbGF0ZS1nZXQtc2V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMxIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ3JpZC10ZW1wbGF0ZSBpcyBwcm9wZXJseSBw
YXJzZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0IGdldHRpbmcgZ3Jp
ZC10ZW1wbGF0ZSBzZXQgdGhyb3VnaCBDU1MuCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGdyaWRXaXRoRGVmYXVsdFRlbXBsYXRlKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
dGVtcGxhdGUnKSBpcyAibm9uZSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdp
dGhTaW5nbGVTdHJpbmdUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRl
bXBsYXRlJykgaXMgIlwiYXJlYVwiIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlk
V2l0aFR3b0NvbHVtbnNUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRl
bXBsYXRlJykgaXMgIlwiZmlyc3Qgc2Vjb25kXCIiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGdyaWRXaXRoVHdvUm93c1RlbXBsYXRlKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtdGVtcGxhdGUnKSBpcyAiXCJmaXJzdFwiIFwic2Vjb25kXCIiCitQQVNTIHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGdyaWRXaXRoU3Bhbm5pbmdDb2x1bW5zVGVtcGxhdGUpLmdldFByb3BlcnR5
VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJcInNwYW4gc3BhblwiIgorUEFTUyB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFNwYW5uaW5nUm93c0RvdFRlbXBsYXRlKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJzcGFuXCIgXCIu
XCIiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRG90Q29sdW1uKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJoZWFkZXIgLlwiIFwi
Zm9vdGVyIC5cIiIKK1Rlc3QgZ3JpZC10ZW1wbGF0ZTogaW5pdGlhbAorUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVt
cGxhdGUnKSBpcyAiXCJmb29iYXJcIiIKK1Rlc3QgZ3JpZC10ZW1wbGF0ZTogaW5oZXJpdAorUEFT
UyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJmb28gYmFyXCIiCitQQVNTIHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10
ZW1wbGF0ZScpIGlzICJcImZvbyBiYXJcIiIKK1Rlc3QgaW52YWxpZCBncmlkLXRlbXBsYXRlIHZh
bHVlcy4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIm5vbmUiCitQQVNTIHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1w
bGF0ZScpIGlzICJub25lIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAibm9uZSIKK1BBU1Mg
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLXRlbXBsYXRlJykgaXMgIm5vbmUiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJu
b25lIgorCitGSVhNRTogV2UgY3VycmVudGx5IGRvbid0IHZhbGlkYXRlIHRoYXQgdGhlIG5hbWVk
IGdyaWQgYXJlYXMgYXJlIDxpbmRlbnQ+LgorRkFJTCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShl
bGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBzaG91bGQg
YmUgbm9uZS4gV2FzICJuYXYtdXAiLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQt
bGF5b3V0L2dyaWQtdGVtcGxhdGUtZ2V0LXNldC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC10ZW1wbGF0ZS1nZXQtc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM3MzQ2
ZmRjYTY1OTc5NDJhODQ4YTQ2YThjNGRlZjQ5NDNiN2M1MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtdGVtcGxhdGUtZ2V0LXNldC5odG1s
CkBAIC0wLDAgKzEsMTI0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91
dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPGxpbmsgaHJlZj0icmVzb3VyY2VzL2dyaWQuY3Nz
IiByZWw9InN0eWxlc2hlZXQiPgorPHN0eWxlPgorI2dyaWRXaXRoU2luZ2xlU3RyaW5nVGVtcGxh
dGUgeworICAgIC13ZWJraXQtZ3JpZC10ZW1wbGF0ZTogImFyZWEiOworfQorCisjZ3JpZFdpdGhU
d29Db2x1bW5zVGVtcGxhdGUgeworICAgIC13ZWJraXQtZ3JpZC10ZW1wbGF0ZTogImZpcnN0IHNl
Y29uZCI7Cit9CisKKyNncmlkV2l0aFR3b1Jvd3NUZW1wbGF0ZSB7CisgICAgLXdlYmtpdC1ncmlk
LXRlbXBsYXRlOiAiZmlyc3QiCisgICAgICAgICAgICAgICAgICAgInNlY29uZCI7Cit9CisKKyNn
cmlkV2l0aFNwYW5uaW5nQ29sdW1uc1RlbXBsYXRlIHsKKyAgICAtd2Via2l0LWdyaWQtdGVtcGxh
dGU6ICJzcGFuIHNwYW4iOworfQorCisjZ3JpZFdpdGhTcGFubmluZ1Jvd3NEb3RUZW1wbGF0ZSB7
CisgICAgLXdlYmtpdC1ncmlkLXRlbXBsYXRlOiAic3BhbiIKKyAgICAgICAgICAgICAgICAgICAi
LiI7Cit9CisKKyNncmlkV2l0aERvdENvbHVtbiB7CisgICAgLXdlYmtpdC1ncmlkLXRlbXBsYXRl
OiAiaGVhZGVyIC4iCisgICAgICAgICAgICAgICAgICAgImZvb3RlciAuIjsKK30KKzwvc3R5bGU+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWRXaXRoRGVmYXVsdFRl
bXBsYXRlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkV2l0aFNpbmdsZVN0cmlu
Z1RlbXBsYXRlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkV2l0aFR3b0NvbHVt
bnNUZW1wbGF0ZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZFdpdGhUd29Sb3dz
VGVtcGxhdGUiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWRXaXRoU3Bhbm5pbmdD
b2x1bW5zVGVtcGxhdGUiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWRXaXRoU3Bh
bm5pbmdSb3dzRG90VGVtcGxhdGUiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWRX
aXRoRG90Q29sdW1uIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBjaGVja3MgdGhhdCBncmlkLXRlbXBsYXRlIGlzIHByb3Blcmx5IHBhcnNlZC4iKTsKKworICAg
IGRlYnVnKCJUZXN0IGdldHRpbmcgZ3JpZC10ZW1wbGF0ZSBzZXQgdGhyb3VnaCBDU1MuIik7Cisg
ICAgdmFyIGdyaWRXaXRoRGVmYXVsdFRlbXBsYXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImdyaWRXaXRoRGVmYXVsdFRlbXBsYXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aERlZmF1bHRUZW1wbGF0ZSkuZ2V0UHJvcGVy
dHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAibm9uZSIpCisKKyAgICB2YXIgZ3Jp
ZFdpdGhTaW5nbGVTdHJpbmdUZW1wbGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlk
V2l0aFNpbmdsZVN0cmluZ1RlbXBsYXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFNpbmdsZVN0cmluZ1RlbXBsYXRlKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICciYXJlYSInKQorCisgICAg
dmFyIGdyaWRXaXRoVHdvQ29sdW1uc1RlbXBsYXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImdyaWRXaXRoVHdvQ29sdW1uc1RlbXBsYXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFR3b0NvbHVtbnNUZW1wbGF0ZSkuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAnImZpcnN0IHNlY29uZCIn
KQorCisgICAgdmFyIGdyaWRXaXRoVHdvUm93c1RlbXBsYXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImdyaWRXaXRoVHdvUm93c1RlbXBsYXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFR3b1Jvd3NUZW1wbGF0ZSkuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAnImZpcnN0IiAic2Vjb25k
IicpCisKKyAgICB2YXIgZ3JpZFdpdGhTcGFubmluZ0NvbHVtbnNUZW1wbGF0ZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aFNwYW5uaW5nQ29sdW1uc1RlbXBsYXRlIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFNw
YW5uaW5nQ29sdW1uc1RlbXBsYXRlKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVt
cGxhdGUnKSIsICcic3BhbiBzcGFuIicpCisKKyAgICB2YXIgZ3JpZFdpdGhTcGFubmluZ1Jvd3NE
b3RUZW1wbGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aFNwYW5uaW5nUm93
c0RvdFRlbXBsYXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShncmlkV2l0aFNwYW5uaW5nUm93c0RvdFRlbXBsYXRlKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICcic3BhbiIgIi4iJykKKworICAgIHZhciBn
cmlkV2l0aERvdENvbHVtbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aERvdENv
bHVtbiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5
bGUoZ3JpZFdpdGhEb3RDb2x1bW4pLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1w
bGF0ZScpIiwgJyJoZWFkZXIgLiIgImZvb3RlciAuIicpCisKKyAgICBkZWJ1ZygiVGVzdCBncmlk
LXRlbXBsYXRlOiBpbml0aWFsIik7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwor
ICAgIGVsZW1lbnQuc3R5bGUud2Via2l0R3JpZFRlbXBsYXRlID0gIidmb29iYXInIjsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgJyJmb29iYXIiJykKKyAg
ICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICJpbml0aWFsIjsKKyAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpOworCisgICAgZGVidWcoIlRlc3QgZ3JpZC10
ZW1wbGF0ZTogaW5oZXJpdCIpOworICAgIHZhciBwYXJlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnRF
bGVtZW50KTsKKyAgICBwYXJlbnRFbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICIn
Zm9vIGJhciciOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVk
U3R5bGUocGFyZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBs
YXRlJykiLCAnImZvbyBiYXIiJykKKworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50KTsK
KyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICJpbmhlcml0IjsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgJyJmb28gYmFyIicpCisg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwYXJlbnRFbGVtZW50KTsKKworICAgIGRlYnVn
KCJUZXN0IGludmFsaWQgZ3JpZC10ZW1wbGF0ZSB2YWx1ZXMuIik7CisgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworCisgICAgLy8gJ25hdicgaXMgbm90IGEgcmVjdGFuZ3VsYXIgZGVm
aW5pdGlvbi4KKyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICInbmF2IGhl
YWQnICduYXYgbmF2JyI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxh
dGUnKSIsICJub25lIikKKworICAgIC8vICduYXYnIGlzIG5vdCBjb250aWd1b3VzIGluIHRoZSBj
b2x1bW4gZGlyZWN0aW9uLgorICAgIGVsZW1lbnQuc3R5bGUud2Via2l0R3JpZFRlbXBsYXRlID0g
IiduYXYgaGVhZCBuYXYnIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1w
bGF0ZScpIiwgIm5vbmUiKQorCisgICAgLy8gJ25hdicgaXMgbm90IGNvbnRpZ3VvdXMgaW4gdGhl
IHJvdyBkaXJlY3Rpb24uCisgICAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkVGVtcGxhdGUgPSAi
J25hdiBoZWFkJyAnbWlkZGxlIG1pZGRsZScgJ25hdiBmb290ZXInIjsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5
VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgIm5vbmUiKQorCisgICAgLy8gVGhlIHJv
d3MgZG9uJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgY29sdW1ucy4KKyAgICBlbGVtZW50LnN0
eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICInbmF2IGhlYWQnICdmb290JyI7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICJub25lIikKKworICAgIC8vIEVt
cHR5IHJvd3MuCisgICAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkVGVtcGxhdGUgPSAiJycgJyci
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxl
bWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAibm9uZSIp
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkZJWE1FOiBXZSBjdXJyZW50bHkgZG9uJ3Qg
dmFsaWRhdGUgdGhhdCB0aGUgbmFtZWQgZ3JpZCBhcmVhcyBhcmUgJmx0O2luZGVudCZndDsuIik7
CisgICAgLy8gPGlkZW50PiBvbmx5IGFsbG93cyBhIGxlYWRpbmcgJy0nLgorICAgIGVsZW1lbnQu
c3R5bGUud2Via2l0R3JpZFRlbXBsYXRlID0gIiduYXYtdXAnIjsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgIm5vbmUiKQorPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213699</attachid>
            <date>2013-10-08 10:34:12 -0700</date>
            <delta_ts>2013-10-09 00:51:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103313-20131008193409.patch</filename>
            <type>text/plain</type>
            <size>57368</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0ODE1ZGY3ZmRhMmM3
NmFhZDYzZWFjOTk5NWUxZDgwMWZhNGZhNi4uZGJhMDNkNGMxZWEzYTM0NWZhYmJiZjNhZGZkZjU4
NjllNGYxMzgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTEwLTA4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBzdXBwb3J0IGZvciBncmlkLXRlbXBsYXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcm9tIEJsaW5rIHIxNTM0Mjcs
IHIxNTUxOTkgYW5kIHIxNTU3MTIgIGJ5IDxqY2hhZmZyYWl4QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXRlbXBsYXRlLWdldC1zZXQuaHRt
bAorCisgICAgICAgIFJlY29nbml6ZSwgcGFyc2UsIHN0b3JlIGFuZCByZXR1cm4gcHJvcGVybHkg
dGhlIHZhbHVlIG9mCisgICAgICAgIGdyaWQtdGVtcGxhdGUuIEl0IHJlcXVpcmVkIHNvbWUgZXh0
cmEgcGFyc2luZyBjb2RlIGJlY2F1c2UgdGhlCisgICAgICAgIHNwZWNzIG1hbmRhdGVzIHRvIGNo
ZWNrIHRoYXQgdGhlIGRlZmluZWQgZ3JpZCBhcmVhcyBhcmUgaW5kZWVkCisgICAgICAgIHJlY3Rh
bmd1bGFyLiBOYW1lZCBncmlkIGFyZWFzIGFyZSBzdGlsbCBub3QgZnVsbHkgc3VwcG9ydGVkLCB3
aWxsCisgICAgICAgIGJlIGRvbmUgaW4gYSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgQXMg
dmFsaWRhdGluZyBpbnZvbHZlcyBidWlsZGluZyB0aGUgZ3JpZCBhcmVhcyBhIG5ldyBDU1NWYWx1
ZSB3YXMKKyAgICAgICAgYWRkZWQgdG8gaG9sZCB0aGUgY29tcHV0ZWQgdmFsdWUuIE5vdGUgdGhh
dCB3ZSBoYXZlIHRvIHRyYWNrIHRoZQorICAgICAgICBleHBsaWNpdCBzaXplIG9mIHRoZSBuYW1l
ZCBncmlkIGFyZWFzIGFzIHRoZSBuYW1lZCBncmlkIGFyZWFzCisgICAgICAgICgiLiIpIGFyZSBu
b3QgdHJhY2tlZCBpbiBvdXIgSGFzaE1hcCBvZiBncmlkIGFyZWFzLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsc28gaW52b2x2ZXMgbW92aW5nIEdyaWRDb29yZGluYXRlIGFuZCBHcmlkU3BhbiB0
byBhCisgICAgICAgIHNlcGFyYXRlIGZpbGUgaW4gb3JkZXIgdG8gc2hhcmUgdGhlIGNvZGUgdGhh
dCBkZXNjcmliZXMgdGhlIGdyaWQKKyAgICAgICAgYXJlYSBjb29yZGluYXRlcy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBmaWxlcyB0byB0aGUgYnVpbGQuCisg
ICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0dyaWRUZW1wbGF0ZVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NHcmlk
VGVtcGxhdGVWYWx1ZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nRm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFs
dWU6OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9DU1NHcmlkVGVtcGxhdGVWYWx1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRUZW1wbGF0ZVZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWU6On5DU1NHcmlkVGVtcGxh
dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Z3JpZEFy
ZWFNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWU6OnJvd0NvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRUZW1wbGF0ZVZhbHVlOjpjb2x1bW5Db3VudCk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0dyaWRUZW1wbGF0ZVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRlKTogY3Jl
YXRlIHRoZSBncmlkIGFyZWFzIGFuZAorICAgICAgICB2YWxpZGF0ZSB0aGF0IHRoZXkgZGVmaW5l
IHJlY3Rhbmd1bGFyIHNlY3Rpb25zLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjogQWRkZWQgLXdlYmtpdC1ncmlkLXRlbXBsYXRl
LgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZTo6ZXF1YWxzKTogYWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ1NTR3JpZFRlbXBsYXRlVmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc0dyaWRUZW1wbGF0ZVZhbHVlKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjYWNoZWRHcmlkQ29vcmRpbmF0
ZSk6IFJlcGxhY2VkIFJlbmRlckdyaWQ6OkdyaWRTcGFuIGJ5IFdlYkNvcmU6OkdyaWRTcGFuLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tQXV0
b1BsYWNlbWVudFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGlu
ZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRp
b25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6IFRvb2sgR3JpZFNwYW4gYW5kIEdyaWRDb29yZGluYXRlIG91dC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmlkU3Bhbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjpH
cmlkU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkQ29vcmRpbmF0ZTo6R3JpZENvb3JkaW5hdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZENvb3JkaW5hdGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZENvb3JkaW5hdGU6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUdyaWREYXRhOjpvcGVyYXRvcj09KToKKwogMjAxMy0xMC0wOCAgVGhpYWdvIGRlIEJh
cnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBH
ZXQgRUZMIGFuZCBHVEsgY29tcGlsaW5nIHdpdGggbWVkaWEgc3RyZWFtIGVuYWJsZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDk5MmNiZDY2NWMyZjYzNmM4ODAwZjQyZTM5MzVi
OTM4YmJjZjcwNGIuLmU1ZWUxMjdjYzMwYWNhOTBkYjZmNDc0Y2E4ZTJkMTE4MDhiM2IxOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjUyNSw2ICsyNTI1LDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlk
VGVtcGxhdGVWYWx1ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVW
YWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSGVscGVyLmggXApAQCAtNDUzMyw2ICs0NTM1LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvR3JpZENvb3JkaW5hdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVM
aXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmlu
ZGV4IGQyYWFiYTY2YzI2MWJhZmUwM2UzMTM2NzRlM2ViOTI4MzQ1MTY1NzEuLjU4Y2Q5M2JiNDk4
ZWFjNTI1N2VhZWI0ZDk5ZWM0YjczOTdkNDc3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtODY5Miw2ICs4NjkyLDcgQEAKICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcQ1NTR3JpZFRlbXBsYXRl
VmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXENTU0dyb3VwaW5n
UnVsZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpA
QCAtMTkzNDksNiArMTkzNTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENT
U0ZvbnRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0Z1bmN0
aW9uVmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NHcmFkaWVu
dFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTR3JpZFRlbXBs
YXRlVmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NHcm91cGlu
Z1J1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NIZWxwZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NIb3N0UnVsZS5oIiAvPgpAQCAt
MTk2MDAsNiArMTk2MDIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5n
XHN0eWxlXEN1cnNvckxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRl
cmluZ1xzdHlsZVxEYXRhUmVmLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5k
ZXJpbmdcc3R5bGVcRmlsbExheWVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcc3R5bGVcR3JpZENvb3JkaW5hdGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxHcmlkUG9zaXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxHcmlkVHJhY2tTaXplLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3R5bGVcS2V5ZnJhbWVMaXN0LmgiIC8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKaW5kZXggZmQyMDU2NjI2YTNjMGQwNzNjZGM1ODZkMTVlMmJmZmE4OWQ0NDMwOC4u
YzQ1YWE3Y2Y1ODRjZDk2MWU5YTRhNmQxYzRkNmJlNTQ1ZGY5MGI2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtOTU3Myw2ICs5NTczLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmlu
Z1xzdHlsZVxGaWxsTGF5ZXIuaCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzdHlsZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXHN0eWxlXEdyaWRDb29yZGluYXRlLmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcc3R5
bGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzdHlsZVxHcmlkUG9zaXRpb24uaCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmlu
Z1xzdHlsZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYxYjcyMjA3NWI4NzM0MDMx
NWI2ZDM3OGUyYTlmMTE1ODZlNmUzOTUuLjBlMmE3OTg0M2Q2OTgzNzVmYWExZDRlNTYzMTE3Y2Jh
YzM3ZmM1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTUyOTEsNiArNTI5MSw5IEBACiAJCUNEM0E0OTYyMTdBOUQwMUIwMDI3
NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCAq
LzsgfTsKIAkJQ0QzQTQ5NjQxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NUIx
N0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuY3BwICovOyB9OwogCQlDRDNBNDk2
NTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8q
IFNvdXJjZUJ1ZmZlckxpc3QuaCAqLzsgfTsKKwkJQ0QzRTI1MUMxODA0NkIwNjAwRTI3RjU2IC8q
IEdyaWRDb29yZGluYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNFMjUyMzE4
MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzRTI1MjExODA0NkJDRDAwRTI3RjU2
IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcCAqLzsgfTsKKwkJQ0QzRTI1MjQxODA0NkJDRDAw
RTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3Jp
ZFRlbXBsYXRlVmFsdWUuaCAqLzsgfTsKIAkJQ0Q0N0IzRkMxNkNDMzRGODAwQTIxRUM4IC8qIENE
TVByaXZhdGVBVkZvdW5kYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDQ3QjNGQTE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91
bmRhdGlvbi5tbSAqLzsgfTsKIAkJQ0Q0QUM1MkExNDk2QUU5QTAwODdDNEVGIC8qIENvbXBvc2l0
ZS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q0QUM1MjgxNDk2QUUyRjAwODdDNEVGIC8qIENvbXBvc2l0ZS53YXYgKi87IH07
CiAJCUNENTM5M0QzMTc1RTAxODYwMEMwNzEyMyAvKiBKU01lbW9yeUluZm8uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1MzkzRDExNzVFMDE4NjAw
QzA3MTIzIC8qIEpTTWVtb3J5SW5mby5jcHAgKi87IH07CkBAIC0xMjIwOSw2ICsxMjIxMiw5IEBA
CiAJCUNEM0E0OTVCMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZUJ1ZmZlckxpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyog
U291cmNlQnVmZmVyTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3Vy
Y2VCdWZmZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTVEMTdB
OUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTb3VyY2VCdWZmZXJMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdyaWRDb29yZGluYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdyaWRDb29yZGluYXRlLmg7IHBhdGggPSBzdHlsZS9Hcmlk
Q29vcmRpbmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDNFMjUyMTE4MDQ2
QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRDNFMjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRl
bXBsYXRlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTR3JpZFRl
bXBsYXRlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0N0IzRjkxNkND
MzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBwYXRoID0gTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ0RN
UHJpdmF0ZUFWRm91bmRhdGlvbi5tbTsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZUFWRm91bmRhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0
QUM1MjgxNDk2QUUyRjAwODdDNEVGIC8qIENvbXBvc2l0ZS53YXYgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBDb21wb3Np
dGUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0NvbXBvc2l0ZS53YXY7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTE5NDA3LDYgKzE5NDEzLDcgQEAKIAkJQkM4
QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENv
b3JkaW5hdGUuaCAqLywKIAkJCQlGQkQ2QUY4MjE1RUYyMUEzMDA4QjcxMTAgLyogQmFzaWNTaGFw
ZXMuY3BwICovLAogCQkJCUZCRDZBRjgzMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5o
ICovLAogCQkJCUJDNUVCNUUwMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggKi8sCkBA
IC0yMDE2Myw2ICsyMDE3MCw4IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3Mg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEM0UyNTIx
MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAgKi8sCisJCQkJQ0Qz
RTI1MjIxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVlLmggKi8sCiAJCQkJ
OTNDQTRDOUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0b2tlbml6ZXIgKi8sCiAJCQkJRkJENkFG
ODQxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuY3BwICovLAogCQkJCUZC
RDZBRjg1MTVFRjIxRDQwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmggKi8sCkBAIC0y
NDYzMyw2ICsyNDY0Miw4IEBACiAJCQkJQkMxMEQ3NjgxN0Q4RUU3MTAwNUUyNjI2IC8qIFJlbmRl
ckJsb2NrRmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBDQjAwMjUxN0RGODI2QzAwMTc4OTZC
IC8qIExpbmVXaWR0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTA2QkZFMkUxN0RGQjQzRjAwODMw
MkJCIC8qIExpbmVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNFMjUxQzE4MDQ2QjA2MDBF
MjdGNTYgLyogR3JpZENvb3JkaW5hdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0UyNTI0MTgw
NDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzY5OSw2ICsyNzcxMCw3IEBACiAJCQkJQkUxNkM1OTQxN0NGRTE3MjAwODUyQzA0IC8qIElu
YmFuZFdlYlZUVFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEwRDc2NzE3RDhF
RTZFMDA1RTI2MjYgLyogUmVuZGVyQmxvY2tGbG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEw
Q0IwMDI0MTdERjgyNjYwMDE3ODk2QiAvKiBMaW5lV2lkdGguY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0QzRTI1MjMxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAppbmRleCA5ZjY1YWY2Y2Q2NWZlYzdlMWJjMjZhMDg1OTU0ODNhZmRj
ZjI2OTQ2Li5mYjc5N2JkNzNlZDI2ZTFiOWUzZWNjMTNhMDZhZDI0ZWIwMWNkNjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NGb250VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTR3JpZFRlbXBsYXRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NMaW5lQm94Q29udGFp
blZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKQEAgLTIxNDUsNiArMjE0NiwxNCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFJvdzoKICAgICAgICAgICAgIHJldHVy
biBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQod2Via2l0R3JpZFJvd1Nob3J0
aGFuZCgpKTsKIAorICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFRlbXBsYXRlOgor
ICAgICAgICAgICAgaWYgKCFzdHlsZS0+bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIXN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vbmUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gQ1NT
R3JpZFRlbXBsYXRlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bmFtZWRHcmlkQXJlYSgpLCBzdHlsZS0+
bmFtZWRHcmlkQXJlYVJvd0NvdW50KCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQo
KSk7CisKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKICAgICAgICAgICAgIGlmIChy
ZW5kZXJlcikgewogICAgICAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyL3Zpc3VkZXQuaHRtbCN0aGUtaGVpZ2h0LXByb3BlcnR5LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY0Y2RlNTY4
ZWYwNDIxYmI5NDE0NDY5ZGRlOGU2MWMxMDQ0NDVkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAKQEAgLTAsMCArMSw4NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIgorCisj
aW5jbHVkZSAiR3JpZENvb3JkaW5hdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTR3JpZFRlbXBsYXRlVmFsdWU6OkNT
U0dyaWRUZW1wbGF0ZVZhbHVlKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBz
aXplX3Qgcm93Q291bnQsIHNpemVfdCBjb2x1bW5Db3VudCkKKyAgICA6IENTU1ZhbHVlKEdyaWRU
ZW1wbGF0ZUNsYXNzKQorICAgICwgbV9ncmlkQXJlYU1hcChncmlkQXJlYU1hcCkKKyAgICAsIG1f
cm93Q291bnQocm93Q291bnQpCisgICAgLCBtX2NvbHVtbkNvdW50KGNvbHVtbkNvdW50KQorewor
ICAgIEFTU0VSVChtX3Jvd0NvdW50KTsKKyAgICBBU1NFUlQobV9jb2x1bW5Db3VudCk7Cit9CisK
K3N0YXRpYyBTdHJpbmcgc3RyaW5nRm9yUG9zaXRpb24oY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYg
Z3JpZEFyZWFNYXAsIHNpemVfdCByb3csIHNpemVfdCBjb2x1bW4pCit7CisgICAgVmVjdG9yPFN0
cmluZz4gY2FuZGlkYXRlczsKKworICAgIE5hbWVkR3JpZEFyZWFNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGdyaWRBcmVhTWFwLmVuZCgpOworICAgIGZvciAoTmFtZWRHcmlkQXJlYU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBncmlkQXJlYU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgY29uc3QgR3JpZENvb3JkaW5hdGUmIGNvb3JkaW5hdGUgPSBpdC0+dmFsdWU7Cisg
ICAgICAgIGlmIChyb3cgPj0gY29vcmRpbmF0ZS5yb3dzLmluaXRpYWxQb3NpdGlvbkluZGV4ICYm
IHJvdyA8PSBjb29yZGluYXRlLnJvd3MuZmluYWxQb3NpdGlvbkluZGV4KQorICAgICAgICAgICAg
Y2FuZGlkYXRlcy5hcHBlbmQoaXQtPmtleSk7CisgICAgfQorCisgICAgZW5kID0gZ3JpZEFyZWFN
YXAuZW5kKCk7CisgICAgZm9yIChOYW1lZEdyaWRBcmVhTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGdyaWRBcmVhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBH
cmlkQ29vcmRpbmF0ZSYgY29vcmRpbmF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgaWYgKGNvbHVt
biA+PSBjb29yZGluYXRlLmNvbHVtbnMuaW5pdGlhbFBvc2l0aW9uSW5kZXggJiYgY29sdW1uIDw9
IGNvb3JkaW5hdGUuY29sdW1ucy5maW5hbFBvc2l0aW9uSW5kZXggJiYgY2FuZGlkYXRlcy5jb250
YWlucyhpdC0+a2V5KSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgIH0KKworICAg
IHJldHVybiAiLiI7Cit9CisKK1N0cmluZyBDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Y3VzdG9tQ1NT
VGV4dCgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAoc2l6
ZV90IHJvdyA9IDA7IHJvdyA8IG1fcm93Q291bnQ7ICsrcm93KSB7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdcIicpOworICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBt
X2NvbHVtbkNvdW50OyArK2NvbHVtbikgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Ry
aW5nRm9yUG9zaXRpb24obV9ncmlkQXJlYU1hcCwgcm93LCBjb2x1bW4pKTsKKyAgICAgICAgICAg
IGlmIChjb2x1bW4gIT0gbV9jb2x1bW5Db3VudCAtIDEpCisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKKyAgICAgICAgfQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnXCInKTsK
KyAgICAgICAgaWYgKHJvdyAhPSBtX3Jvd0NvdW50IC0gMSkKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmlkVGVtcGxhdGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0
ZVZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFhMzQwODNiMDU1OTQzYjJkOTljOTBiMGJjMThhY2NhOTQ1
ZjUzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxh
dGVWYWx1ZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENTU0dyaWRUZW1wbGF0ZVZhbHVlX2gK
KyNkZWZpbmUgQ1NTR3JpZFRlbXBsYXRlVmFsdWVfaAorCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIK
KyNpbmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENTU0dyaWRUZW1wbGF0ZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NHcmlkVGVtcGxhdGVWYWx1ZT4gY3JlYXRlKGNvbnN0IE5h
bWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBzaXplX3Qgcm93Q291bnQsIHNpemVfdCBjb2x1
bW5Db3VudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENTU0dyaWRUZW1wbGF0ZVZhbHVlKGdyaWRB
cmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpKTsgfQorICAgIH5DU1NHcmlkVGVtcGxhdGVW
YWx1ZSgpIHsgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKworICAgIGNv
bnN0IE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwKCkgY29uc3QgeyByZXR1cm4gbV9ncmlk
QXJlYU1hcDsgfQorICAgIHNpemVfdCByb3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm93Q291
bnQ7IH0KKyAgICBzaXplX3QgY29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbkNv
dW50OyB9CisKK3ByaXZhdGU6CisgICAgQ1NTR3JpZFRlbXBsYXRlVmFsdWUoY29uc3QgTmFtZWRH
cmlkQXJlYU1hcCYsIHNpemVfdCByb3dDb3VudCwgc2l6ZV90IGNvbHVtbkNvdW50KTsKKworICAg
IE5hbWVkR3JpZEFyZWFNYXAgbV9ncmlkQXJlYU1hcDsKKyAgICBzaXplX3QgbV9yb3dDb3VudDsK
KyAgICBzaXplX3QgbV9jb2x1bW5Db3VudDsKK307CisKK2lubGluZSBDU1NHcmlkVGVtcGxhdGVW
YWx1ZSogdG9DU1NHcmlkVGVtcGxhdGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odmFsdWUtPmlzR3JpZFRlbXBsYXRlVmFsdWUo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0dyaWRUZW1wbGF0ZVZhbHVlKj4odmFsdWUp
OworfQorCitpbmxpbmUgY29uc3QgQ1NTR3JpZFRlbXBsYXRlVmFsdWUqIHRvQ1NTR3JpZFRlbXBs
YXRlVmFsdWUoY29uc3QgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKHZhbHVlLT5pc0dyaWRUZW1wbGF0ZVZhbHVlKCkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDU1NHcmlkVGVtcGxhdGVWYWx1ZSo+KHZhbHVlKTsKK30KKwor
Ly8gQ2F0Y2ggdW5uZWVkZWQgY2FzdC4KK3ZvaWQgdG9DU1NHcmlkVGVtcGxhdGVWYWx1ZShjb25z
dCBDU1NHcmlkVGVtcGxhdGVWYWx1ZSopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBDU1NHcmlkVGVtcGxhdGVWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmlu
ZGV4IDViMzEwYzhmM2FmYzY0N2ZkZjc5NWE3ODk3MzBmY2Q3YTA3OWExYmUuLjc5MGFjMWZiMWE0
YTc4Mjg1NTJhOTVjMmRhNDRiNDk5N2Y1ZjRmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiQ1NTRm9udFZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKKyNpbmNs
dWRlICJDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1
ZS5oIgpAQCAtMjcxMiw2ICsyNzEzLDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgcmV0dXJuIHBhcnNl
R3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChwcm9wSWQsIGltcG9ydGFudCk7CiAgICAgfQogCisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRUZW1wbGF0ZToKKyAgICAgICAgaWYgKCFjc3NH
cmlkTGF5b3V0RW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IHBhcnNlZFZhbHVlID0gcGFyc2VHcmlkVGVtcGxhdGUoKTsKKyAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6IHsKICAgICAgICAgaWYgKG51
bSA9PSAxKSB7CiAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKQEAgLTUxMzksNiArNTE0Nyw3OSBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKIAogI2VuZGlmIC8qIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgKi8KIAor
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZSgpCit7Cisg
ICAgTmFtZWRHcmlkQXJlYU1hcCBncmlkQXJlYU1hcDsKKyAgICBzaXplX3Qgcm93Q291bnQgPSAw
OworICAgIHNpemVfdCBjb2x1bW5Db3VudCA9IDA7CisKKyAgICB3aGlsZSAoQ1NTUGFyc2VyVmFs
dWUqIGN1cnJlbnRWYWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKKyAgICAgICAgaWYg
KGN1cnJlbnRWYWx1ZS0+dW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIFN0cmluZyBncmlkUm93TmFtZXMgPSBjdXJy
ZW50VmFsdWUtPnN0cmluZzsKKyAgICAgICAgaWYgKCFncmlkUm93TmFtZXMubGVuZ3RoKCkpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5OYW1l
czsKKyAgICAgICAgZ3JpZFJvd05hbWVzLnNwbGl0KCcgJywgY29sdW1uTmFtZXMpOworCisgICAg
ICAgIGlmICghY29sdW1uQ291bnQpIHsKKyAgICAgICAgICAgIGNvbHVtbkNvdW50ID0gY29sdW1u
TmFtZXMuc2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKGNvbHVtbkNvdW50KTsKKyAgICAgICAg
fSBlbHNlIGlmIChjb2x1bW5Db3VudCAhPSBjb2x1bW5OYW1lcy5zaXplKCkpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBkZWNsYXJhdGlvbiBpcyBpbnZhbGlkIGlzIGFsbCB0aGUgcm93cyBkb24ndCBo
YXZlIHRoZSBudW1iZXIgb2YgY29sdW1ucy4KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgY3VycmVudENvbCA9IDA7IGN1cnJlbnRDb2wgPCBj
b2x1bW5Db3VudDsgKytjdXJyZW50Q29sKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGdy
aWRBcmVhTmFtZSA9IGNvbHVtbk5hbWVzW2N1cnJlbnRDb2xdOworCisgICAgICAgICAgICAvLyBV
bmFtZWQgYXJlYXMgYXJlIGFsd2F5cyB2YWxpZCAod2UgY29uc2lkZXIgdGhlbSB0byBiZSAxeDEp
LgorICAgICAgICAgICAgaWYgKGdyaWRBcmVhTmFtZSA9PSAiLiIpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZSBzZXZlcmFsIGdyaWQgYXJlYXMg
d2l0aCB0aGUgc2FtZSBuYW1lIGF0IG9uY2UgdG8gc2ltcGxpZnkgdGhlIHZhbGlkYXRpb24gY29k
ZS4KKyAgICAgICAgICAgIHNpemVfdCBsb29rQWhlYWRDb2w7CisgICAgICAgICAgICBmb3IgKGxv
b2tBaGVhZENvbCA9IGN1cnJlbnRDb2w7IGxvb2tBaGVhZENvbCA8IChjb2x1bW5Db3VudCAtIDEp
OyArK2xvb2tBaGVhZENvbCkgeworICAgICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lc1tsb29r
QWhlYWRDb2wgKyAxXSAhPSBncmlkQXJlYU5hbWUpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOYW1lZEdyaWRBcmVhTWFwOjppdGVyYXRv
ciBncmlkQXJlYUl0ID0gZ3JpZEFyZWFNYXAuZmluZChncmlkQXJlYU5hbWUpOworICAgICAgICAg
ICAgaWYgKGdyaWRBcmVhSXQgPT0gZ3JpZEFyZWFNYXAuZW5kKCkpCisgICAgICAgICAgICAgICAg
Z3JpZEFyZWFNYXAuYWRkKGdyaWRBcmVhTmFtZSwgR3JpZENvb3JkaW5hdGUoR3JpZFNwYW4ocm93
Q291bnQsIHJvd0NvdW50KSwgR3JpZFNwYW4oY3VycmVudENvbCwgbG9va0FoZWFkQ29sKSkpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgR3JpZENvb3JkaW5hdGUmIGdyaWRD
b29yZGluYXRlID0gZ3JpZEFyZWFJdC0+dmFsdWU7CisKKyAgICAgICAgICAgICAgICAvLyBUaGUg
Zm9sbG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQgdGhlIGdyaWQgYXJlYSBpcyBhIHNpbmdsZSBmaWxs
ZWQtaW4gcmVjdGFuZ2xlLgorICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBuZXcgcm93IGlzIGFk
amFjZW50IHRvIHRoZSBwcmV2aW91c2x5IHBhcnNlZCByb3cuCisgICAgICAgICAgICAgICAgaWYg
KHJvd0NvdW50ICE9IGdyaWRDb29yZGluYXRlLnJvd3MuaW5pdGlhbFBvc2l0aW9uSW5kZXggKyAx
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgICAgIC8vIDIu
IFRoZSBuZXcgYXJlYSBzdGFydHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3Vz
bHkgcGFyc2VkIGFyZWEuCisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2wgIT0gZ3JpZENv
b3JkaW5hdGUuY29sdW1ucy5pbml0aWFsUG9zaXRpb25JbmRleCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICAvLyAzLiBUaGUgbmV3IGFyZWEgZW5kcyBh
dCB0aGUgc2FtZSBwb3NpdGlvbiBhcyB0aGUgcHJldmlvdXNseSBwYXJzZWQgYXJlYS4KKyAgICAg
ICAgICAgICAgICBpZiAobG9va0FoZWFkQ29sICE9IGdyaWRDb29yZGluYXRlLmNvbHVtbnMuZmlu
YWxQb3NpdGlvbkluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICAgICAgICAgICsrZ3JpZENvb3JkaW5hdGUucm93cy5maW5hbFBvc2l0aW9uSW5kZXg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50Q29sID0gbG9va0FoZWFkQ29sOworICAgICAg
ICB9CisKKyAgICAgICAgKytyb3dDb3VudDsKKyAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsK
KyAgICB9CisKKyAgICBpZiAoIXJvd0NvdW50IHx8ICFjb2x1bW5Db3VudCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRlVmFsdWU6OmNyZWF0ZShncmlkQXJl
YU1hcCwgcm93Q291bnQsIGNvbHVtbkNvdW50KTsKK30KKwogUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywg
Ym9vbCBjb3VudGVycykKIHsKICAgICB1bnNpZ25lZCBudW1BcmdzID0gYXJncy0+c2l6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDZjYzE0Mzk1ZjQ4ZmQ0NDU5ZGY2M2JjOGQ1MzA2MjJl
OTI1Y2JiYzEuLjI0NTJkNGY3MDViZGEyZjM0NGNkZjJjNTYzYmFmZjcyMzk1NmFjODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTE2OSw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
YXJzZUdyaWRUcmFja0xpc3QoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JpZFRyYWNrU2l6ZSgpOwogICAgIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JpZEJyZWFkdGgoQ1NTUGFyc2VyVmFs
dWUqKTsKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRUZW1wbGF0ZSgpOwogCiAg
ICAgYm9vbCBwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5p
biBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDE5OTZlNDgx
Y2QxZjFjZjMxOTViMzFiZDU4ZmY2NTVlNzNlOWFmMzguLmI3MzBiMTg5OTM0ZmJlZmQ0YjA0Y2Vj
ODI1ZjNmNDRiNGJhZjQ2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmlu
CkBAIC0zMTQsNiArMzE0LDcgQEAgei1pbmRleAogLXdlYmtpdC1ncmlkLXJvdy1zdGFydAogLXdl
YmtpdC1ncmlkLWNvbHVtbgogLXdlYmtpdC1ncmlkLXJvdworLXdlYmtpdC1ncmlkLXRlbXBsYXRl
CiAtd2Via2l0LWdyaWQtYXV0by1mbG93CiAtd2Via2l0LWhpZ2hsaWdodCBbSW5oZXJpdGVkXQog
LXdlYmtpdC1oeXBoZW5hdGUtY2hhcmFjdGVyIFtJbmhlcml0ZWRdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmNwcAppbmRleCAyMDNlYjYyMmI4NmJhZmEwMjk3ZmY5MDcxMDJkMmMyZmE1ODcwOTU5Li5kYmM5
NDNkYTM5ODY3N2Y5ZWY3MTg5NTU3Yjk1MzA0ZmFjNTE2YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIKICNpbmNs
dWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgor
I2luY2x1ZGUgIkNTU0dyaWRUZW1wbGF0ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKICNpbmNsdWRlICJD
U1NJbWFnZVZhbHVlLmgiCkBAIC0xOTgsNiArMTk5LDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1YWxz
KGNvbnN0IENTU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVzPENTU0luaGVyaXRlZFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNl
IEluaXRpYWxDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0lu
aXRpYWxWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBHcmlkVGVtcGxhdGVDbGFz
czoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0dyaWRUZW1wbGF0ZVZh
bHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0aGlzLCBv
dGhlcik7CiAgICAgICAgIGNhc2UgUmVmbGVjdENsYXNzOgpAQCAtMzAwLDYgKzMwMyw4IEBAIFN0
cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0b0NTU0luaGVy
aXRlZFZhbHVlKHRoaXMpLT5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBJbml0aWFsQ2xhc3M6
CiAgICAgICAgIHJldHVybiB0b0NTU0luaXRpYWxWYWx1ZSh0aGlzKS0+Y3VzdG9tQ1NTVGV4dCgp
OworICAgIGNhc2UgR3JpZFRlbXBsYXRlQ2xhc3M6CisgICAgICAgIHJldHVybiB0b0NTU0dyaWRU
ZW1wbGF0ZVZhbHVlKHRoaXMpLT5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBQcmltaXRpdmVD
bGFzczoKICAgICAgICAgcmV0dXJuIHRvQ1NTUHJpbWl0aXZlVmFsdWUodGhpcyktPmN1c3RvbUNT
U1RleHQoKTsKICAgICBjYXNlIFJlZmxlY3RDbGFzczoKQEAgLTQyNSw2ICs0MzAsOSBAQCB2b2lk
IENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICBjYXNlIEluaXRpYWxDbGFzczoKICAgICAgICAgZGVs
ZXRlIHRvQ1NTSW5pdGlhbFZhbHVlKHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBH
cmlkVGVtcGxhdGVDbGFzczoKKyAgICAgICAgZGVsZXRlIHRvQ1NTR3JpZFRlbXBsYXRlVmFsdWUo
dGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgogICAgICAg
ICBkZWxldGUgdG9DU1NQcmltaXRpdmVWYWx1ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuaAppbmRleCAyNTk2NWFiMjdkOGE1NmU1ZDhmYmIyYTA5NWFkZDc3OTkyNTM2
Y2E2Li42Nzk5MDM3NjViZDE5YjlkY2VkY2MwZmVhNzE3ZmJhYmRiOWNhNDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKICAgICBib29sIGlzVmFyaWFibGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xh
c3NUeXBlID09IFZhcmlhYmxlQ2xhc3M7IH0KICNlbmRpZgorICAgIGJvb2wgaXNHcmlkVGVtcGxh
dGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRUZW1wbGF0ZUNsYXNz
OyB9CiAjaWYgRU5BQkxFKFNWRykKICAgICBib29sIGlzU1ZHQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBTVkdDb2xvckNsYXNzIHx8IG1fY2xhc3NUeXBlID09IFNWR1BhaW50
Q2xhc3M7IH0KICAgICBib29sIGlzU1ZHUGFpbnQoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA9PSBTVkdQYWludENsYXNzOyB9CkBAIC0xNzksNiArMTgwLDcgQEAgcHJvdGVjdGVkOgogI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgICAgICBWYXJpYWJsZUNsYXNzLAogI2VuZGlmCisg
ICAgICAgIEdyaWRUZW1wbGF0ZUNsYXNzLAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIFNWR0Nv
bG9yQ2xhc3MsCiAgICAgICAgIFNWR1BhaW50Q2xhc3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggMzFiZmUzYjcxNWY0NDZhNzQ3NTEyY2NhOTc0ZmIxNWFlYWNhYjQzNi4u
MDlmM2ZlNThlMDhmODUyZmU0ZTE0YmQyODZlYTMxM2U2M2E3YjkyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRG
ZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJD
U1NGb250VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0xpbmVCb3hDb250YWluVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgog
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgpAQCAtMjc4NSw2ICsyNzg2LDMxIEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUp
CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRJdGVtUm93RW5kKHJvd0VuZFBvc2l0aW9u
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3Jp
ZFRlbXBsYXRlOiB7CisgICAgICAgIGlmIChpc0luaGVyaXQpIHsKKyAgICAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWEoc3RhdGUucGFyZW50U3R5bGUoKS0+bmFtZWRHcmlk
QXJlYSgpKTsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFSb3dD
b3VudChzdGF0ZS5wYXJlbnRTdHlsZSgpLT5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSk7CisgICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoc3RhdGUu
cGFyZW50U3R5bGUoKS0+bmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChpc0luaXRpYWwpIHsKKyAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWEoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1l
ZEdyaWRBcmVhKCkpOworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJl
YVJvd0NvdW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpOworICAg
ICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KFJlbmRl
clN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVCh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBDU1NHcmlkVGVtcGxhdGVWYWx1ZSogZ3JpZFRlbXBsYXRlVmFsdWUgPSB0b0NTU0dy
aWRUZW1wbGF0ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRH
cmlkQXJlYShncmlkVGVtcGxhdGVWYWx1ZS0+Z3JpZEFyZWFNYXAoKSk7CisgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFSb3dDb3VudChncmlkVGVtcGxhdGVWYWx1ZS0+cm93
Q291bnQoKSk7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFDb2x1bW5D
b3VudChncmlkVGVtcGxhdGVWYWx1ZS0+Y29sdW1uQ291bnQoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBEZXByZWNh
dGVkU3R5bGVCdWlsZGVyIGFscmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHByZWZp
eGVkIHZlcnNpb24uCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA0YjRjNzhlNmQ4ZWI1NDc3Zjlk
ZDJiZjExNTk4ZTE2MjBlMjc5MTI3Li4yNTgzNTdhZWNjZDQyNTM0YTNmYzYwN2NjMDZiYTVkMTFj
MzVjMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyR3JpZC5oIgog
CisjaW5jbHVkZSAiR3JpZENvb3JkaW5hdGUuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CkBAIC03MDUsMjAgKzcwNiwyMCBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygp
CiAgICAgY2xlYXJHcmlkKCk7CiB9CiAKLVJlbmRlckdyaWQ6OkdyaWRDb29yZGluYXRlIFJlbmRl
ckdyaWQ6OmNhY2hlZEdyaWRDb29yZGluYXRlKGNvbnN0IFJlbmRlckJveCogZ3JpZEl0ZW0pIGNv
bnN0CitHcmlkQ29vcmRpbmF0ZSBSZW5kZXJHcmlkOjpjYWNoZWRHcmlkQ29vcmRpbmF0ZShjb25z
dCBSZW5kZXJCb3gqIGdyaWRJdGVtKSBjb25zdAogewogICAgIEFTU0VSVChtX2dyaWRJdGVtQ29v
cmRpbmF0ZS5jb250YWlucyhncmlkSXRlbSkpOwogICAgIHJldHVybiBtX2dyaWRJdGVtQ29vcmRp
bmF0ZS5nZXQoZ3JpZEl0ZW0pOwogfQogCi1SZW5kZXJHcmlkOjpHcmlkU3BhbiBSZW5kZXJHcmlk
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24oY29uc3QgUmVu
ZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24sIHNpemVfdCBpbml0aWFsUG9zaXRpb24pIGNv
bnN0CitHcmlkU3BhbiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxh
Y2VtZW50UG9zaXRpb24oY29uc3QgUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24sIHNp
emVfdCBpbml0aWFsUG9zaXRpb24pIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1
cHBvcnQgc3Bhbm5pbmcgd2l0aCBhdXRvIHBvc2l0aW9ucyB5ZXQuIE9uY2Ugd2UgZG8sIHRoaXMg
aXMgd3JvbmcuIEFsc28gd2Ugc2hvdWxkIG1ha2UKICAgICAvLyBzdXJlIHRoZSBncmlkIGNhbiBh
Y2NvbW9kYXRlIHRoZSBuZXcgaXRlbSBhcyB3ZSBvbmx5IGdyb3cgMSBwb3NpdGlvbiBpbiBhIGdp
dmVuIGRpcmVjdGlvbi4KICAgICByZXR1cm4gR3JpZFNwYW4oaW5pdGlhbFBvc2l0aW9uLCBpbml0
aWFsUG9zaXRpb24pOwogfQogCi1QYXNzT3duUHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBSZW5k
ZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gqIGdy
aWRJdGVtLCBUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CitQYXNzT3duUHRy
PEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25z
dCBSZW5kZXJCb3gqIGdyaWRJdGVtLCBUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNv
bnN0CiB7CiAgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24gPSAoZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gZ3JpZEl0ZW0tPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1uU3Rh
cnQoKSA6IGdyaWRJdGVtLT5zdHlsZSgpLT5ncmlkSXRlbVJvd1N0YXJ0KCk7CiAgICAgY29uc3Qg
R3JpZFBvc2l0aW9uU2lkZSBpbml0aWFsUG9zaXRpb25TaWRlID0gKGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zKSA/IENvbHVtblN0YXJ0U2lkZSA6IFJvd1N0YXJ0U2lkZTsKQEAgLTgyOSw3ICs4MzAs
NyBAQCBzaXplX3QgUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25z
dCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcgogICAgIHJldHVybiAwOwogfQogCi1QYXNzT3du
UHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9u
QWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwg
Y29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKSBjb25z
dAorUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNv
bnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkgY29uc3QK
IHsKICAgICBpZiAocG9zaXRpb24uaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBHcmlkU3Bhbjo6
Y3JlYXRlKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9u
KTsKQEAgLTg1Myw3ICs4NTQsNyBAQCBQYXNzT3duUHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBS
ZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUAogICAgIHJldHVy
biBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBv
c2l0ZVBvc2l0aW9uICsgcG9zaXRpb25PZmZzZXQpOwogfQogCi1QYXNzT3duUHRyPFJlbmRlckdy
aWQ6OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdh
aW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29u
c3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKSBjb25zdAor
UGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3Np
dGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRp
b24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkg
Y29uc3QKIHsKICAgICBBU1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAgIEFTU0VSVCghcG9z
aXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKQEAgLTg3NCw3ICs4NzUsNyBAQCBQYXNz
T3duUHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdAogICAgIHJldHVybiByZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFt
ZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24ocmVzb2x2ZWRPcHBvc2l0
ZVBvc2l0aW9uLCBwb3NpdGlvbiwgaXQtPnZhbHVlKTsKIH0KIAotUGFzc093blB0cjxSZW5kZXJH
cmlkOjpHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1l
ZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWZWN0
b3I8c2l6ZV90PiYgZ3JpZExpbmVzKSBjb25zdAorUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVy
R3JpZDo6cmVzb2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2Fp
bnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25z
dCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgZ3JpZExpbmVz
KSBjb25zdAogewogICAgIC8vIFRoZSBncmlkIGxpbmUgaW5lcXVhbGl0eSBuZWVkcyB0byBiZSBz
dHJpY3QgKHdoaWNoIGRvZXNuJ3QgbWF0Y2ggdGhlIGFmdGVyIC8gZW5kIGNhc2UpIGJlY2F1c2Ug
fHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbnwKICAgICAvLyBpcyBhbHJlYWR5IGNvbnZlcnRlZCB0
byBhbiBpbmRleCBpbiBvdXIgZ3JpZCByZXByZXNlbnRhdGlvbiAoaWUgb25lIHdhcyByZW1vdmVk
IGZyb20gdGhlIGdyaWQgbGluZSB0byBhY2NvdW50IGZvciB0aGUgc2lkZSkuCkBAIC04ODksNyAr
ODkwLDcgQEAgUGFzc093blB0cjxSZW5kZXJHcmlkOjpHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVz
b2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWQKICAgICByZXR1cm4gR3JpZFNwYW46OmNy
ZWF0ZShyZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7
CiB9CiAKLVBhc3NPd25QdHI8UmVuZGVyR3JpZDo6R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29s
dmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3Np
dGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgZ3JpZExpbmVzKSBjb25zdAorUGFzc093
blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3Jp
ZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9z
aXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3Rvcjxz
aXplX3Q+JiBncmlkTGluZXMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUg
YSBiaW5hcnkgc2VhcmNoIGFzIHxncmlkTGluZXN8IGlzIG9yZGVyZWQuCiAgICAgc2l6ZV90IGZp
cnN0TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbkluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5oCmluZGV4IGU4ZDFiOWZmMjMwNzlhMzJlZjU2YjE5ZTRlY2RiMzkyZDk4
NTllOGMuLjk5MTg5MTliNjQ0NTdiMGRiNTIwYTc2MGRjZDA0NzVhN2JjMjdiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyaWRDb29yZGluYXRlOworY2xhc3MgR3JpZFNwYW47CiBj
bGFzcyBHcmlkVHJhY2s7CiAKIGNsYXNzIFJlbmRlckdyaWQgRklOQUwgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewpAQCAtNTksNDEgKzYxLDYgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgY29t
cHV0ZVByZWZlcnJlZFRyYWNrV2lkdGgoY29uc3QgTGVuZ3RoJiwgc2l6ZV90KSBjb25zdDsKIAot
ICAgIHN0cnVjdCBHcmlkU3BhbiB7Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyaWRTcGFu
PiBjcmVhdGUoc2l6ZV90IGluaXRpYWxQb3NpdGlvbiwgc2l6ZV90IGZpbmFsUG9zaXRpb24pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR3JpZFNwYW4oaW5pdGlh
bFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBHcmlkU3Bh
bihzaXplX3QgaW5pdGlhbFBvc2l0aW9uLCBzaXplX3QgZmluYWxQb3NpdGlvbikKLSAgICAgICAg
ICAgIDogaW5pdGlhbFBvc2l0aW9uSW5kZXgoaW5pdGlhbFBvc2l0aW9uKQotICAgICAgICAgICAg
LCBmaW5hbFBvc2l0aW9uSW5kZXgoZmluYWxQb3NpdGlvbikKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKGluaXRpYWxQb3NpdGlvbkluZGV4IDw9IGZpbmFsUG9zaXRpb25JbmRleCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBzaXplX3QgaW5pdGlhbFBvc2l0aW9uSW5kZXg7Ci0gICAgICAg
IHNpemVfdCBmaW5hbFBvc2l0aW9uSW5kZXg7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBHcmlkQ29v
cmRpbmF0ZSB7Ci0gICAgICAgIC8vIEhhc2hNYXAgcmVxdWlyZXMgYSBkZWZhdWx0IGNvbnN0dWN0
b3IuCi0gICAgICAgIEdyaWRDb29yZGluYXRlKCkKLSAgICAgICAgICAgIDogY29sdW1ucygwLCAw
KQotICAgICAgICAgICAgLCByb3dzKDAsIDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIEdyaWRDb29yZGluYXRlKGNvbnN0IEdyaWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykK
LSAgICAgICAgICAgIDogY29sdW1ucyhjKQotICAgICAgICAgICAgLCByb3dzKHIpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIEdyaWRTcGFuIGNvbHVtbnM7Ci0gICAgICAgIEdyaWRT
cGFuIHJvd3M7Ci0gICAgfTsKLQogICAgIGNsYXNzIEdyaWRJdGVyYXRvcjsKICAgICBlbnVtIFRy
YWNrU2l6aW5nRGlyZWN0aW9uIHsgRm9yQ29sdW1ucywgRm9yUm93cyB9OwogICAgIHZvaWQgY29t
cHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9y
PEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgVmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5h
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQ29vcmRpbmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUwMGQ1ZjYxZjk5NzlhNzQ5ZjViN2VjMGQ0OWJkZmY4MTYzYjViZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5h
dGUuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHcmlkQ29vcmRpbmF0ZV9oCisjZGVmaW5lIEdy
aWRDb29yZGluYXRlX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBBIHNwYW4gaW4gYSBzaW5nbGUgZGlyZWN0aW9uIChlaXRoZXIg
cm93cyBvciBjb2x1bW5zKS4gTm90ZSB0aGF0IHxpbml0aWFsUG9zaXRpb25JbmRleHwKKy8vIGFu
ZCB8ZmluYWxQb3NpdGlvbkluZGV4fCBhcmUgZ3JpZCBhcmVhcycgaW5kZXhlcywgTk9UIGdyaWQg
bGluZXMnLiBJdGVyYXRpbmcgb3ZlciB0aGUKKy8vIHNwYW4gc2hvdWxkIGluY2x1ZGUgYm90aCB8
aW5pdGlhbFBvc2l0aW9uSW5kZXh8IGFuZCB8ZmluYWxQb3NpdGlvbkluZGV4fCB0byBiZSBjb3Jy
ZWN0Lgorc3RydWN0IEdyaWRTcGFuIHsKKyAgICBzdGF0aWMgUGFzc093blB0cjxHcmlkU3Bhbj4g
Y3JlYXRlKHNpemVfdCBpbml0aWFsUG9zaXRpb24sIHNpemVfdCBmaW5hbFBvc2l0aW9uKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmlkU3Bhbihpbml0aWFsUG9zaXRpb24s
IGZpbmFsUG9zaXRpb24pKTsKKyAgICB9CisKKyAgICBHcmlkU3BhbihzaXplX3QgaW5pdGlhbFBv
c2l0aW9uLCBzaXplX3QgZmluYWxQb3NpdGlvbikKKyAgICAgICAgOiBpbml0aWFsUG9zaXRpb25J
bmRleChpbml0aWFsUG9zaXRpb24pCisgICAgICAgICwgZmluYWxQb3NpdGlvbkluZGV4KGZpbmFs
UG9zaXRpb24pCisgICAgeworICAgICAgICBBU1NFUlQoaW5pdGlhbFBvc2l0aW9uSW5kZXggPD0g
ZmluYWxQb3NpdGlvbkluZGV4KTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
R3JpZFNwYW4mIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaW5pdGlhbFBvc2l0aW9u
SW5kZXggPT0gby5pbml0aWFsUG9zaXRpb25JbmRleCAmJiBmaW5hbFBvc2l0aW9uSW5kZXggPT0g
by5maW5hbFBvc2l0aW9uSW5kZXg7CisgICAgfQorCisgICAgc2l6ZV90IGluaXRpYWxQb3NpdGlv
bkluZGV4OworICAgIHNpemVfdCBmaW5hbFBvc2l0aW9uSW5kZXg7Cit9OworCisvLyBUaGlzIHJl
cHJlc2VudHMgYSBncmlkIGFyZWEgdGhhdCBzcGFucyBpbiBib3RoIHJvd3MnIGFuZCBjb2x1bW5z
JyBkaXJlY3Rpb24uCitzdHJ1Y3QgR3JpZENvb3JkaW5hdGUgeworICAgIC8vIEhhc2hNYXAgcmVx
dWlyZXMgYSBkZWZhdWx0IGNvbnN0dWN0b3IuCisgICAgR3JpZENvb3JkaW5hdGUoKQorICAgICAg
ICA6IGNvbHVtbnMoMCwgMCkKKyAgICAgICAgLCByb3dzKDAsIDApCisgICAgeworICAgIH0KKwor
ICAgIEdyaWRDb29yZGluYXRlKGNvbnN0IEdyaWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykK
KyAgICAgICAgOiBjb2x1bW5zKGMpCisgICAgICAgICwgcm93cyhyKQorICAgIHsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR3JpZENvb3JkaW5hdGUmIG8pIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gY29sdW1ucyA9PSBvLmNvbHVtbnMgJiYgcm93cyA9PSBvLnJvd3M7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdyaWRDb29yZGluYXRlJiBvKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgfQorCisgICAg
R3JpZFNwYW4gY29sdW1uczsKKyAgICBHcmlkU3BhbiByb3dzOworfTsKKwordHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgR3JpZENvb3JkaW5hdGU+IE5hbWVkR3JpZEFyZWFNYXA7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdyaWRDb29yZGluYXRlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMjJjNTM2OGUyNWY2YTUx
MDg0YzlkZTU3ZjBjOTU5YmJhYWQzNTVlMy4uZDM0N2EzODNmY2VlNjZmNDI1ZmI1MGNhODU5NmM1
NzdhYjEzODQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTc4Myw2ICs3ODMsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEdyaWRU
cmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KICAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFt
ZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX25hbWVkR3JpZENvbHVtbkxpbmVzOyB9CiAgICAgY29uc3QgTmFtZWRHcmlkTGlu
ZXNNYXAmIG5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE5hbWVkR3Jp
ZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZEFyZWE7IH0KKyAgICBzaXplX3QgbmFtZWRHcmlkQXJl
YVJvd0NvdW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+
bV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7IH0KKyAgICBzaXplX3QgbmFtZWRHcmlkQXJlYUNvbHVt
bkNvdW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9u
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7IH0KICAgICBHcmlkQXV0b0Zsb3cgZ3JpZEF1dG9GbG93
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0
b0Zsb3c7IH0KICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiBncmlkQXV0b0NvbHVtbnMoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvQ29sdW1u
czsgfQogICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIGdyaWRBdXRvUm93cygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9Sb3dzOyB9CkBAIC0x
MzE4LDYgKzEzMjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9ncmlkLCBtX2dyaWRSb3dzLCBsZW5ndGhzKTsgfQogICAgIHZvaWQgc2V0
TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENv
bHVtbkxpbmVzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3Jp
ZCwgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CiAgICAg
dm9pZCBzZXROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRH
cmlkUm93TGluZXMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9n
cmlkLCBtX25hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAgICB2b2lk
IHNldE5hbWVkR3JpZEFyZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYSkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fbmFtZWRH
cmlkQXJlYSwgbmFtZWRHcmlkQXJlYSk7IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFSb3dD
b3VudChzaXplX3Qgcm93Q291bnQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9ncmlkLCBtX25hbWVkR3JpZEFyZWFSb3dDb3VudCwgcm93Q291bnQpOyB9CisgICAg
dm9pZCBzZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZCwgbV9uYW1lZEdyaWRB
cmVhQ29sdW1uQ291bnQsIGNvbHVtbkNvdW50KTsgfQogICAgIHZvaWQgc2V0R3JpZEF1dG9GbG93
KEdyaWRBdXRvRmxvdyBmbG93KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fZ3JpZCwgbV9ncmlkQXV0b0Zsb3csIGZsb3cpOyB9CiAgICAgdm9pZCBzZXRHcmlkSXRl
bUNvbHVtblN0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uU3RhcnRQb3NpdGlvbikgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dyaWRD
b2x1bW5TdGFydCwgY29sdW1uU3RhcnRQb3NpdGlvbik7IH0KICAgICB2b2lkIHNldEdyaWRJdGVt
Q29sdW1uRW5kKGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uRW5kUG9zaXRpb24pIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkSXRlbSwgbV9ncmlkQ29sdW1u
RW5kLCBjb2x1bW5FbmRQb3NpdGlvbik7IH0KQEAgLTE3NzMsNiArMTc3OSw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBpbml0aWFsR3JpZEF1dG9Db2x1bW5zKCkgeyByZXR1
cm4gR3JpZFRyYWNrU2l6ZShBdXRvKTsgfQogICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGluaXRp
YWxHcmlkQXV0b1Jvd3MoKSB7IHJldHVybiBHcmlkVHJhY2tTaXplKEF1dG8pOyB9CiAKKyAgICBz
dGF0aWMgTmFtZWRHcmlkQXJlYU1hcCBpbml0aWFsTmFtZWRHcmlkQXJlYSgpIHsgcmV0dXJuIE5h
bWVkR3JpZEFyZWFNYXAoKTsgfQorICAgIHN0YXRpYyBzaXplX3QgaW5pdGlhbE5hbWVkR3JpZEFy
ZWFDb3VudCgpIHsgcmV0dXJuIDA7IH0KKwogICAgIC8vICdhdXRvJyBpcyB0aGUgZGVmYXVsdC4K
ICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkUG9zaXRpb24oKSB7IHJldHVybiBH
cmlkUG9zaXRpb24oKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVHcmlkRGF0YS5jcHAKaW5kZXggOTQ5YmUwMjYwZWE1MjQ4ZWNhZmVjZjAwNzc3MTQ5NjYz
MTUzMzA1ZS4uMmQ2NWVjODg1YzQzNWQxNjcwYjVjMjQ2ZWFjZjQ0ZGU1YWE2MDViMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcApAQCAt
MzYsNiArMzYsOSBAQCBTdHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKCkKICAgICAsIG1fZ3Jp
ZEF1dG9GbG93KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9GbG93KCkpCiAgICAgLCBtX2dy
aWRBdXRvUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUm93cygpKQogICAgICwgbV9n
cmlkQXV0b0NvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSkKKyAg
ICAsIG1fbmFtZWRHcmlkQXJlYShSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWEoKSkK
KyAgICAsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRH
cmlkQXJlYUNvdW50KCkpCisgICAgLCBtX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChSZW5kZXJT
dHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKQogewogfQogCkBAIC00OCw2ICs1MSw5
IEBAIFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYgbykK
ICAgICAsIG1fZ3JpZEF1dG9GbG93KG8ubV9ncmlkQXV0b0Zsb3cpCiAgICAgLCBtX2dyaWRBdXRv
Um93cyhvLm1fZ3JpZEF1dG9Sb3dzKQogICAgICwgbV9ncmlkQXV0b0NvbHVtbnMoby5tX2dyaWRB
dXRvQ29sdW1ucykKKyAgICAsIG1fbmFtZWRHcmlkQXJlYShvLm1fbmFtZWRHcmlkQXJlYSkKKyAg
ICAsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50KG8ubV9uYW1lZEdyaWRBcmVhUm93Q291bnQpCisg
ICAgLCBtX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChvLm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNv
dW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3Jp
ZERhdGEuaAppbmRleCA3YTMxYTNlYzUwN2RmNWUwNmFhMjFlNWIyYjM2MTIzMTc2MDJmOWMyLi44
ODU4MTllZWU1NWE5M2I2MzYzMWRjOTQ3MmMzMjQyNzRmMTMwYzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgU3R5bGVHcmlkRGF0YV9oCiAjZGVmaW5lIFN0eWxlR3JpZERhdGFfaAogCisjaW5j
bHVkZSAiR3JpZENvb3JkaW5hdGUuaCIKICNpbmNsdWRlICJHcmlkVHJhY2tTaXplLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0
eWxlR3JpZERhdGEmIG8pIGNvbnN0CiAgICAgewogICAgICAgICAvLyBGSVhNRTogY29tcGFyaW5n
IHR3byBoYXNoZXMgZG9lc24ndCBsb29rIGdyZWF0IGZvciBwZXJmb3JtYW5jZS4gU29tZXRoaW5n
IHRvIGtlZXAgaW4gbWluZCBnb2luZyBmb3J3YXJkLgotICAgICAgICByZXR1cm4gbV9ncmlkQ29s
dW1ucyA9PSBvLm1fZ3JpZENvbHVtbnMgJiYgbV9ncmlkUm93cyA9PSBvLm1fZ3JpZFJvd3MgJiYg
bV9ncmlkQXV0b0Zsb3cgPT0gby5tX2dyaWRBdXRvRmxvdyAmJiBtX2dyaWRBdXRvUm93cyA9PSBv
Lm1fZ3JpZEF1dG9Sb3dzICYmIG1fZ3JpZEF1dG9Db2x1bW5zID09IG8ubV9ncmlkQXV0b0NvbHVt
bnMgJiYgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fbmFtZWRHcmlkQ29sdW1uTGluZXMg
JiYgbV9uYW1lZEdyaWRSb3dMaW5lcyA9PSBvLm1fbmFtZWRHcmlkUm93TGluZXM7CisgICAgICAg
IHJldHVybiBtX2dyaWRDb2x1bW5zID09IG8ubV9ncmlkQ29sdW1ucyAmJiBtX2dyaWRSb3dzID09
IG8ubV9ncmlkUm93cyAmJiBtX2dyaWRBdXRvRmxvdyA9PSBvLm1fZ3JpZEF1dG9GbG93ICYmIG1f
Z3JpZEF1dG9Sb3dzID09IG8ubV9ncmlkQXV0b1Jvd3MgJiYgbV9ncmlkQXV0b0NvbHVtbnMgPT0g
by5tX2dyaWRBdXRvQ29sdW1ucyAmJiBtX25hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubV9uYW1l
ZEdyaWRDb2x1bW5MaW5lcyAmJiBtX25hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9uYW1lZEdyaWRS
b3dMaW5lcyAmJiBtX25hbWVkR3JpZEFyZWEgPT0gby5tX25hbWVkR3JpZEFyZWEgJiYgbV9uYW1l
ZEdyaWRBcmVhID09IG8ubV9uYW1lZEdyaWRBcmVhICYmIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50
ID09IG8ubV9uYW1lZEdyaWRBcmVhUm93Q291bnQgJiYgbV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291
bnQgPT0gby5tX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsKICAgICB9CiAKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVHcmlkRGF0YSYgbykgY29uc3QKQEAgLTY1LDYgKzY2LDEyIEBA
IHB1YmxpYzoKICAgICBHcmlkVHJhY2tTaXplIG1fZ3JpZEF1dG9Sb3dzOwogICAgIEdyaWRUcmFj
a1NpemUgbV9ncmlkQXV0b0NvbHVtbnM7CiAKKyAgICBOYW1lZEdyaWRBcmVhTWFwIG1fbmFtZWRH
cmlkQXJlYTsKKyAgICAvLyBCZWNhdXNlIG1fbmFtZWRHcmlkQXJlYSBkb2Vzbid0IHN0b3JlIHRo
ZSB1bm5hbWVkIGdyaWQgYXJlYXMsIHdlIG5lZWQgdG8ga2VlcCB0cmFjaworICAgIC8vIG9mIHRo
ZSBleHBsaWNpdCBncmlkIHNpemUgZGVmaW5lZCBieSBib3RoIG5hbWVkIGFuZCB1bm5hbWVkIGdy
aWQgYXJlYXMuCisgICAgc2l6ZV90IG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50OworICAgIHNpemVf
dCBtX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsKKwogcHJpdmF0ZToKICAgICBTdHlsZUdyaWRE
YXRhKCk7CiAgICAgU3R5bGVHcmlkRGF0YShjb25zdCBTdHlsZUdyaWREYXRhJik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MjhjNDE3ZmFkMjFiNWU1M2NhNWZjZGY1NjI3MjY0NTYyMGNhNzk5My4uNmViM2JkNTEyYjQxYTgy
NzM3ZmVlNDQ3YWZkYTZiOTUzZDY2ZGM1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEw
LTA4ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBzdXBwb3J0IGZvciBncmlkLXRlbXBsYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcm9tIEJsaW5r
IHIxNTM0MjcsIHIxNTUxOTkgYW5kIHIxNTU3MTIgIGJ5IDxqY2hhZmZyYWl4QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVyaWZ5IHRoYXQgd2UgcHJvcGVybHkgcmVj
b2duaXplLCBwYXJzZSwgc3RvcmUKKyAgICAgICAgYW5kIHJldHVybiB0aGUgdmFsdWUgb2YgZ3Jp
ZC10ZW1wbGF0ZS4KKworICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtdGVtcGxh
dGUtZ2V0LXNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQt
bGF5b3V0L2dyaWQtdGVtcGxhdGUtZ2V0LXNldC5odG1sOiBBZGRlZC4KKwogMjAxMy0xMC0wOCAg
R3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIGdhcmRlbmluZy4gQWRkaW5nIEltYWdlT25seUZhaWx1cmUgZXhwZWN0YXRpb25zIHRvOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC10ZW1wbGF0
ZS1nZXQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2dyaWQtdGVtcGxhdGUtZ2V0LXNldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdkODdhMGQ2
ZjY4NmY0Yzc1YTM1ZWQ3ZTkxZjU0ZTQ1YjdhYTM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtdGVtcGxhdGUtZ2V0LXNldC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzMSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdyaWQtdGVtcGxh
dGUgaXMgcHJvcGVybHkgcGFyc2VkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
VGVzdCBnZXR0aW5nIGdyaWQtdGVtcGxhdGUgc2V0IHRocm91Z2ggQ1NTLgorUEFTUyB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aERlZmF1bHRUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIm5vbmUiCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGdyaWRXaXRoU2luZ2xlU3RyaW5nVGVtcGxhdGUpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJcImFyZWFcIiIKK1BBU1Mgd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZ3JpZFdpdGhUd29Db2x1bW5zVGVtcGxhdGUpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJcImZpcnN0IHNlY29uZFwiIgorUEFTUyB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFR3b1Jvd3NUZW1wbGF0ZSkuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIlwiZmlyc3RcIiBcInNlY29uZFwiIgor
UEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFNwYW5uaW5nQ29sdW1uc1RlbXBs
YXRlKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJzcGFu
IHNwYW5cIiIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhTcGFubmluZ1Jv
d3NEb3RUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykg
aXMgIlwic3BhblwiIFwiLlwiIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0
aERvdENvbHVtbikuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMg
IlwiaGVhZGVyIC5cIiBcImZvb3RlciAuXCIiCitUZXN0IGdyaWQtdGVtcGxhdGU6IGluaXRpYWwK
K1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIlwiZm9vYmFyXCIiCitUZXN0IGdyaWQtdGVtcGxh
dGU6IGluaGVyaXQKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50RWxlbWVudCku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIlwiZm9vIGJhclwi
IgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJmb28gYmFyXCIiCitUZXN0IGludmFsaWQg
Z3JpZC10ZW1wbGF0ZSB2YWx1ZXMuCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1l
bnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJub25lIgor
UEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAibm9uZSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykg
aXMgIm5vbmUiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3Bl
cnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJub25lIgorUEFTUyB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
dGVtcGxhdGUnKSBpcyAibm9uZSIKKworRklYTUU6IFdlIGN1cnJlbnRseSBkb24ndCB2YWxpZGF0
ZSB0aGF0IHRoZSBuYW1lZCBncmlkIGFyZWFzIGFyZSA8aW5kZW50Pi4KK0ZBSUwgd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRl
bXBsYXRlJykgc2hvdWxkIGJlIG5vbmUuIFdhcyAibmF2LXVwIi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXRlbXBsYXRlLWdldC1zZXQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtdGVtcGxhdGUtZ2V0LXNldC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQzNzM0NmZkY2E2NTk3OTQyYTg0OGE0NmE4YzRkZWY0OTQzYjdjNTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXRlbXBs
YXRlLWdldC1zZXQuaHRtbApAQCAtMCwwICsxLDEyNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgMSk7Cis8L3NjcmlwdD4KKzxsaW5rIGhyZWY9InJl
c291cmNlcy9ncmlkLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KKzxzdHlsZT4KKyNncmlkV2l0aFNp
bmdsZVN0cmluZ1RlbXBsYXRlIHsKKyAgICAtd2Via2l0LWdyaWQtdGVtcGxhdGU6ICJhcmVhIjsK
K30KKworI2dyaWRXaXRoVHdvQ29sdW1uc1RlbXBsYXRlIHsKKyAgICAtd2Via2l0LWdyaWQtdGVt
cGxhdGU6ICJmaXJzdCBzZWNvbmQiOworfQorCisjZ3JpZFdpdGhUd29Sb3dzVGVtcGxhdGUgewor
ICAgIC13ZWJraXQtZ3JpZC10ZW1wbGF0ZTogImZpcnN0IgorICAgICAgICAgICAgICAgICAgICJz
ZWNvbmQiOworfQorCisjZ3JpZFdpdGhTcGFubmluZ0NvbHVtbnNUZW1wbGF0ZSB7CisgICAgLXdl
YmtpdC1ncmlkLXRlbXBsYXRlOiAic3BhbiBzcGFuIjsKK30KKworI2dyaWRXaXRoU3Bhbm5pbmdS
b3dzRG90VGVtcGxhdGUgeworICAgIC13ZWJraXQtZ3JpZC10ZW1wbGF0ZTogInNwYW4iCisgICAg
ICAgICAgICAgICAgICAgIi4iOworfQorCisjZ3JpZFdpdGhEb3RDb2x1bW4geworICAgIC13ZWJr
aXQtZ3JpZC10ZW1wbGF0ZTogImhlYWRlciAuIgorICAgICAgICAgICAgICAgICAgICJmb290ZXIg
LiI7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJn
cmlkV2l0aERlZmF1bHRUZW1wbGF0ZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3Jp
ZFdpdGhTaW5nbGVTdHJpbmdUZW1wbGF0ZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIiBpZD0i
Z3JpZFdpdGhUd29Db2x1bW5zVGVtcGxhdGUiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9
ImdyaWRXaXRoVHdvUm93c1RlbXBsYXRlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJn
cmlkV2l0aFNwYW5uaW5nQ29sdW1uc1RlbXBsYXRlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQi
IGlkPSJncmlkV2l0aFNwYW5uaW5nUm93c0RvdFRlbXBsYXRlIj48L2Rpdj4KKzxkaXYgY2xhc3M9
ImdyaWQiIGlkPSJncmlkV2l0aERvdENvbHVtbiI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ3JpZC10ZW1wbGF0ZSBpcyBwcm9wZXJseSBw
YXJzZWQuIik7CisKKyAgICBkZWJ1ZygiVGVzdCBnZXR0aW5nIGdyaWQtdGVtcGxhdGUgc2V0IHRo
cm91Z2ggQ1NTLiIpOworICAgIHZhciBncmlkV2l0aERlZmF1bHRUZW1wbGF0ZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aERlZmF1bHRUZW1wbGF0ZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhEZWZhdWx0VGVt
cGxhdGUpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgIm5vbmUi
KQorCisgICAgdmFyIGdyaWRXaXRoU2luZ2xlU3RyaW5nVGVtcGxhdGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZ3JpZFdpdGhTaW5nbGVTdHJpbmdUZW1wbGF0ZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhTaW5nbGVTdHJp
bmdUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAn
ImFyZWEiJykKKworICAgIHZhciBncmlkV2l0aFR3b0NvbHVtbnNUZW1wbGF0ZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aFR3b0NvbHVtbnNUZW1wbGF0ZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhUd29Db2x1
bW5zVGVtcGxhdGUpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwg
JyJmaXJzdCBzZWNvbmQiJykKKworICAgIHZhciBncmlkV2l0aFR3b1Jvd3NUZW1wbGF0ZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aFR3b1Jvd3NUZW1wbGF0ZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhUd29S
b3dzVGVtcGxhdGUpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwg
JyJmaXJzdCIgInNlY29uZCInKQorCisgICAgdmFyIGdyaWRXaXRoU3Bhbm5pbmdDb2x1bW5zVGVt
cGxhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhTcGFubmluZ0NvbHVtbnNU
ZW1wbGF0ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVk
U3R5bGUoZ3JpZFdpdGhTcGFubmluZ0NvbHVtbnNUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAnInNwYW4gc3BhbiInKQorCisgICAgdmFyIGdyaWRX
aXRoU3Bhbm5pbmdSb3dzRG90VGVtcGxhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Jp
ZFdpdGhTcGFubmluZ1Jvd3NEb3RUZW1wbGF0ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhTcGFubmluZ1Jvd3NEb3RUZW1wbGF0
ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAnInNwYW4iICIu
IicpCisKKyAgICB2YXIgZ3JpZFdpdGhEb3RDb2x1bW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZ3JpZFdpdGhEb3RDb2x1bW4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRG90Q29sdW1uKS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICciaGVhZGVyIC4iICJmb290ZXIgLiInKQorCisgICAg
ZGVidWcoIlRlc3QgZ3JpZC10ZW1wbGF0ZTogaW5pdGlhbCIpOworICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChlbGVtZW50KTsKKyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICIn
Zm9vYmFyJyI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIs
ICciZm9vYmFyIicpCisgICAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkVGVtcGxhdGUgPSAiaW5p
dGlhbCI7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTsKKworICAgIGRl
YnVnKCJUZXN0IGdyaWQtdGVtcGxhdGU6IGluaGVyaXQiKTsKKyAgICB2YXIgcGFyZW50RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQocGFyZW50RWxlbWVudCk7CisgICAgcGFyZW50RWxlbWVudC5zdHlsZS53ZWJraXRH
cmlkVGVtcGxhdGUgPSAiJ2ZvbyBiYXInIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgJyJmb28gYmFyIicpCisKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7CisgICAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkVGVtcGxhdGUgPSAi
aW5oZXJpdCI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIs
ICciZm9vIGJhciInKQorICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocGFyZW50RWxlbWVu
dCk7CisKKyAgICBkZWJ1ZygiVGVzdCBpbnZhbGlkIGdyaWQtdGVtcGxhdGUgdmFsdWVzLiIpOwor
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKworICAgIC8vICduYXYnIGlzIG5vdCBh
IHJlY3Rhbmd1bGFyIGRlZmluaXRpb24uCisgICAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkVGVt
cGxhdGUgPSAiJ25hdiBoZWFkJyAnbmF2IG5hdiciOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdl
YmtpdC1ncmlkLXRlbXBsYXRlJykiLCAibm9uZSIpCisKKyAgICAvLyAnbmF2JyBpcyBub3QgY29u
dGlndW91cyBpbiB0aGUgY29sdW1uIGRpcmVjdGlvbi4KKyAgICBlbGVtZW50LnN0eWxlLndlYmtp
dEdyaWRUZW1wbGF0ZSA9ICInbmF2IGhlYWQgbmF2JyI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICJub25lIikKKworICAgIC8vICduYXYnIGlzIG5vdCBj
b250aWd1b3VzIGluIHRoZSByb3cgZGlyZWN0aW9uLgorICAgIGVsZW1lbnQuc3R5bGUud2Via2l0
R3JpZFRlbXBsYXRlID0gIiduYXYgaGVhZCcgJ21pZGRsZSBtaWRkbGUnICduYXYgZm9vdGVyJyI7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVt
ZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICJub25lIikK
KworICAgIC8vIFRoZSByb3dzIGRvbid0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGNvbHVtbnMu
CisgICAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkVGVtcGxhdGUgPSAiJ25hdiBoZWFkJyAnZm9v
dCciOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAibm9u
ZSIpCisKKyAgICAvLyBFbXB0eSByb3dzLgorICAgIGVsZW1lbnQuc3R5bGUud2Via2l0R3JpZFRl
bXBsYXRlID0gIicnICcnIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1w
bGF0ZScpIiwgIm5vbmUiKQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJGSVhNRTogV2Ug
Y3VycmVudGx5IGRvbid0IHZhbGlkYXRlIHRoYXQgdGhlIG5hbWVkIGdyaWQgYXJlYXMgYXJlICZs
dDtpbmRlbnQmZ3Q7LiIpOworICAgIC8vIDxpZGVudD4gb25seSBhbGxvd3MgYSBsZWFkaW5nICct
Jy4KKyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICInbmF2LXVwJyI7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICJub25lIikKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213758</attachid>
            <date>2013-10-09 00:51:32 -0700</date>
            <delta_ts>2013-10-09 15:31:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103313-20131009095129.patch</filename>
            <type>text/plain</type>
            <size>57370</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0ODE1ZGY3ZmRhMmM3
NmFhZDYzZWFjOTk5NWUxZDgwMWZhNGZhNi4uNTVjNDVjZDE1NjdlYzQ5MmU2YTA3YWMzMWU1MGM1
NjYzM2EwNWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEzLTEwLTA4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBzdXBwb3J0IGZvciBncmlkLXRlbXBsYXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBCbGluayByMTUz
NDI3LCByMTU1MTk5IGFuZCByMTU1NzEyIGJ5IDxqY2hhZmZyYWl4QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXRlbXBsYXRlLWdldC1zZXQu
aHRtbAorCisgICAgICAgIFJlY29nbml6ZSwgcGFyc2UsIHN0b3JlIGFuZCByZXR1cm4gcHJvcGVy
bHkgdGhlIHZhbHVlIG9mCisgICAgICAgIGdyaWQtdGVtcGxhdGUuIEl0IHJlcXVpcmVkIHNvbWUg
ZXh0cmEgcGFyc2luZyBjb2RlIGJlY2F1c2UgdGhlCisgICAgICAgIHNwZWNzIG1hbmRhdGVzIHRv
IGNoZWNrIHRoYXQgdGhlIGRlZmluZWQgZ3JpZCBhcmVhcyBhcmUgaW5kZWVkCisgICAgICAgIHJl
Y3Rhbmd1bGFyLiBOYW1lZCBncmlkIGFyZWFzIGFyZSBzdGlsbCBub3QgZnVsbHkgc3VwcG9ydGVk
LCB3aWxsCisgICAgICAgIGJlIGRvbmUgaW4gYSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAg
QXMgdmFsaWRhdGluZyBpbnZvbHZlcyBidWlsZGluZyB0aGUgZ3JpZCBhcmVhcyBhIG5ldyBDU1NW
YWx1ZSB3YXMKKyAgICAgICAgYWRkZWQgdG8gaG9sZCB0aGUgY29tcHV0ZWQgdmFsdWUuIE5vdGUg
dGhhdCB3ZSBoYXZlIHRvIHRyYWNrIHRoZQorICAgICAgICBleHBsaWNpdCBzaXplIG9mIHRoZSBu
YW1lZCBncmlkIGFyZWFzIGFzIHRoZSBuYW1lZCBncmlkIGFyZWFzCisgICAgICAgICgiLiIpIGFy
ZSBub3QgdHJhY2tlZCBpbiBvdXIgSGFzaE1hcCBvZiBncmlkIGFyZWFzLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGFsc28gaW52b2x2ZXMgbW92aW5nIEdyaWRDb29yZGluYXRlIGFuZCBHcmlkU3Bh
biB0byBhCisgICAgICAgIHNlcGFyYXRlIGZpbGUgaW4gb3JkZXIgdG8gc2hhcmUgdGhlIGNvZGUg
dGhhdCBkZXNjcmliZXMgdGhlIGdyaWQKKyAgICAgICAgYXJlYSBjb29yZGluYXRlcy4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcgZmlsZXMgdG8gdGhlIGJ1aWxkLgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVyczogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmlkVGVtcGxhdGVWYWx1ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWU6OkNTU0dy
aWRUZW1wbGF0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ0ZvclBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRUZW1wbGF0ZVZhbHVlOjpjdXN0b21DU1NUZXh0KToK
KyAgICAgICAgKiBjc3MvQ1NTR3JpZFRlbXBsYXRlVmFsdWUuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0dyaWRUZW1wbGF0ZVZhbHVlOjp+Q1NTR3JpZFRlbXBsYXRlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWU6OmdyaWRBcmVhTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0dyaWRUZW1wbGF0ZVZhbHVlOjpyb3dDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9DU1NHcmlkVGVtcGxhdGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZSk6IGNyZWF0ZSB0aGUgZ3JpZCBhcmVhcyBh
bmQKKyAgICAgICAgdmFsaWRhdGUgdGhhdCB0aGV5IGRlZmluZSByZWN0YW5ndWxhciBzZWN0aW9u
cy4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW46IEFkZGVkIC13ZWJraXQtZ3JpZC10ZW1wbGF0ZS4KKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6IGFkZCBzdXBw
b3J0IGZvciB0aGUgbmV3IENTU0dyaWRUZW1wbGF0ZVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFsdWU6OmNzc1RleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpk
ZXN0cm95KTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NWYWx1ZTo6aXNHcmlkVGVtcGxhdGVWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6Y2FjaGVkR3JpZENvb3JkaW5hdGUpOiBSZXBsYWNlZCBSZW5kZXJH
cmlkOjpHcmlkU3BhbiBieSBXZWJDb3JlOjpHcmlkU3Bhbi4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlv
bnNGcm9tU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29s
dmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RP
cHBvc2l0ZVBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpy
ZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBv
c2l0ZVBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNv
bHZlUm93RW5kQ29sdW1uRW5kTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9z
aXRpb24pOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOiBUb29rIEdy
aWRTcGFuIGFuZCBHcmlkQ29vcmRpbmF0ZSBvdXQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L0dyaWRDb29yZGluYXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6R3JpZFNwYW4pOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZFNwYW46Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZENv
b3JkaW5hdGU6OkdyaWRDb29yZGluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRDb29yZGlu
YXRlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRDb29yZGluYXRlOjpvcGVy
YXRvciE9KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHcmlkRGF0YTo6b3Bl
cmF0b3I9PSk6CisKIDIwMTMtMTAtMDggIFRoaWFnbyBkZSBCYXJyb3MgTGFjZXJkYSAgPHRoaWFn
by5sYWNlcmRhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgR2V0IEVGTCBhbmQgR1RLIGNvbXBp
bGluZyB3aXRoIG1lZGlhIHN0cmVhbSBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE0
MDVhODQzMDA3Y2NiMmNlNTkxMjdlMjgzNjgzMTA0NTE5MzBkNGEuLmM0YmZkNTUxZjVlYWU2ZDY4
MTY4ZDg5ZThkMzNjMjQ1MjFmOGZjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05OTAsNiAr
OTkwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9DU1NGb250VmFsdWUuY3BwCiAg
ICAgY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCiAgICAgY3NzL0NTU0dyYWRpZW50VmFsdWUuY3Bw
CisgICAgY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcAogICAgIGNzcy9DU1NHcm91cGluZ1J1
bGUuY3BwCiAgICAgY3NzL0NTU0hvc3RSdWxlLmNwcAogICAgIGNzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTkyY2JkNjY1YzJm
NjM2Yzg4MDBmNDJlMzkzNWI5MzhiYmNmNzA0Yi4uZTVlZTEyN2NjMzBhY2E5MGRiNmY0NzRjYThl
MmQxMTgwOGIzYjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTI1LDYg
KzI1MjUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
dW5jdGlvblZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBcCisJU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGlu
Z1J1bGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmggXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaCBcCkBAIC00NTMzLDYgKzQ1MzUsNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVm
LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmggXAorCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQ29vcmRpbmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvS2V5ZnJhbWVMaXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggZDJhYWJhNjZjMjYxYmFmZTAzZTMxMzY3NGUzZWI5MjgzNDUx
NjU3MS4uNThjZDkzYmI0OThlYWM1MjU3ZWFlYjRkOTllYzRiNzM5N2Q0Nzc1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04NjkyLDYg
Kzg2OTIsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNz
c1xDU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxjc3NcQ1NTR3JvdXBpbmdSdWxlLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CkBAIC0xOTM0OSw2ICsxOTM1MCw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxjc3NcQ1NTRm9udFZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxjc3NcQ1NTRnVuY3Rpb25WYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cY3NzXENTU0dyYWRpZW50VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGNzc1xDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cY3NzXENTU0dyb3VwaW5nUnVsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Y3NzXENTU0hlbHBlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0hv
c3RSdWxlLmgiIC8+CkBAIC0xOTYwMCw2ICsxOTYwMiw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxyZW5kZXJpbmdcc3R5bGVcQ3Vyc29yTGlzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXERhdGFSZWYuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxGaWxsTGF5ZXIuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxHcmlkQ29vcmRpbmF0ZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXEdyaWRQb3NpdGlvbi5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXEdyaWRUcmFja1Np
emUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxLZXlm
cmFtZUxpc3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBmZDIwNTY2MjZhM2MwZDA3M2NkYzU4NmQx
NWUyYmZmYTg5ZDQ0MzA4Li5jNDVhYTdjZjU4NGNkOTYxZTlhNGE2ZDFjNGQ2YmU1NDVkZjkwYjY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC05NTczLDYgKzk1NzMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXEZpbGxMYXllci5oIj4KICAgICAgIDxGaWx0ZXI+cmVu
ZGVyaW5nXHN0eWxlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcc3R5bGVcR3JpZENvb3JkaW5hdGUuaCI+CisgICAgICA8Rmls
dGVyPnJlbmRlcmluZ1xzdHlsZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXEdyaWRQb3NpdGlvbi5oIj4KICAgICAg
IDxGaWx0ZXI+cmVuZGVyaW5nXHN0eWxlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZjFiNzIyMDc1Yjg3MzQwMzE1YjZkMzc4ZTJhOWYxMTU4NmU2ZTM5NS4uMGUyYTc5ODQzZDY5ODM3
NWZhYTFkNGU1NjMxMTdjYmFjMzdmYzViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTI5MSw2ICs1MjkxLDkgQEAKIAkJQ0Qz
QTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5RDAxQjAwMjc0RTQyIC8q
IFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NDE3QTlEMDFCMDAyNzRFNDIgLyogU291
cmNlQnVmZmVyTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNBNDk1QjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5jcHAg
Ki87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1QzE3
QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovOyB9OworCQlDRDNFMjUxQzE4
MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlk
Q29vcmRpbmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNEM0UyNTIzMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUy
MTE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwICovOyB9OworCQlD
RDNFMjUyNDE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0Qw
MEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oICovOyB9OwogCQlDRDQ3QjNGQzE2Q0Mz
NEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAv
KiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tICovOyB9OwogCQlDRDRBQzUyQTE0OTZBRTlBMDA4
N0M0RUYgLyogQ29tcG9zaXRlLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDRBQzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29t
cG9zaXRlLndhdiAqLzsgfTsKIAkJQ0Q1MzkzRDMxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5
SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDUzOTNEMTE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCAqLzsgfTsKQEAgLTEy
MjA5LDYgKzEyMjEyLDkgQEAKIAkJQ0QzQTQ5NUIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNl
QnVmZmVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTVDMTdB
OUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QzQTQ5NUQxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFNvdXJjZUJ1ZmZlckxpc3QuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5h
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR3JpZENvb3JkaW5hdGUuaDsg
cGF0aCA9IHN0eWxlL0dyaWRDb29yZGluYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NHcmlkVGVtcGxhdGVWYWx1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEM0UyNTIyMTgwNDZCQ0QwMEUy
N0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDQ3QjNGOTE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9u
Lmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4
IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDRBQzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndh
djsgbmFtZSA9IENvbXBvc2l0ZS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMv
Q29tcG9zaXRlLndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTk0MDcsNiAr
MTk0MTMsNyBAQAogCQlCQzhDOEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEM0UyNTFCMTgwNDZCMDYw
MEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovLAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhC
NzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8sCiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEw
IC8qIEJhc2ljU2hhcGVzLmggKi8sCiAJCQkJQkM1RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJv
cmRlckRhdGEuaCAqLywKQEAgLTIwMTYzLDYgKzIwMTcwLDggQEAKIAkJRjUyM0QxODQwMkRFNDJF
ODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0QzRTI1MjExODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVl
LmNwcCAqLywKKwkJCQlDRDNFMjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRl
VmFsdWUuaCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXRva2VuaXpl
ciAqLywKIAkJCQlGQkQ2QUY4NDE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9u
cy5jcHAgKi8sCiAJCQkJRkJENkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5j
dGlvbnMuaCAqLywKQEAgLTI0NjMzLDYgKzI0NjQyLDggQEAKIAkJCQlCQzEwRDc2ODE3RDhFRTcx
MDA1RTI2MjYgLyogUmVuZGVyQmxvY2tGbG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMENCMDAy
NTE3REY4MjZDMDAxNzg5NkIgLyogTGluZVdpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMDZC
RkUyRTE3REZCNDNGMDA4MzAyQkIgLyogTGluZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTI3Njk5LDYgKzI3NzEwLDcgQEAKIAkJCQlCRTE2QzU5NDE3Q0ZF
MTcyMDA4NTJDMDQgLyogSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMTBENzY3MTdEOEVFNkUwMDVFMjYyNiAvKiBSZW5kZXJCbG9ja0Zsb3cuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTBDQjAwMjQxN0RGODI2NjAwMTc4OTZCIC8qIExpbmVXaWR0aC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDRDNFMjUyMzE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRl
bXBsYXRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDlmNjVhZjZjZDY1ZmVjN2Ux
YmMyNmEwODU5NTQ4M2FmZGNmMjY5NDYuLmZiNzk3YmQ3M2VkMjZlMWI5ZTNlY2MxM2EwNmFkMjRl
YjAxY2Q2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1
cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Z1bmN0
aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU0xpbmVCb3hDb250YWluVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgpAQCAtMjE0NSw2ICsyMTQ2LDE0IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93Ogog
ICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZCh3
ZWJraXRHcmlkUm93U2hvcnRoYW5kKCkpOwogCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRHcmlkVGVtcGxhdGU6CisgICAgICAgICAgICBpZiAoIXN0eWxlLT5uYW1lZEdyaWRBcmVhUm93
Q291bnQoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghc3R5bGUtPm5hbWVkR3JpZEFyZWFD
b2x1bW5Db3VudCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBDU1NHcmlkVGVtcGxhdGVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5uYW1lZEdy
aWRBcmVhKCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSwgc3R5bGUtPm5hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudCgpKTsKKwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0Ogog
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgLy8gQWNjb3JkaW5n
IHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIvdmlzdWRldC5odG1sI3RoZS1oZWlnaHQtcHJv
cGVydHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NmVhNDA2MDQzYmRkYTdiNDhmZTIwMTA3MmM0YjkzYTFmNGQ2MjNkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcApA
QCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU0dyaWRUZW1w
bGF0ZVZhbHVlLmgiCisKKyNpbmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NHcmlk
VGVtcGxhdGVWYWx1ZTo6Q1NTR3JpZFRlbXBsYXRlVmFsdWUoY29uc3QgTmFtZWRHcmlkQXJlYU1h
cCYgZ3JpZEFyZWFNYXAsIHNpemVfdCByb3dDb3VudCwgc2l6ZV90IGNvbHVtbkNvdW50KQorICAg
IDogQ1NTVmFsdWUoR3JpZFRlbXBsYXRlQ2xhc3MpCisgICAgLCBtX2dyaWRBcmVhTWFwKGdyaWRB
cmVhTWFwKQorICAgICwgbV9yb3dDb3VudChyb3dDb3VudCkKKyAgICAsIG1fY29sdW1uQ291bnQo
Y29sdW1uQ291bnQpCit7CisgICAgQVNTRVJUKG1fcm93Q291bnQpOworICAgIEFTU0VSVChtX2Nv
bHVtbkNvdW50KTsKK30KKworc3RhdGljIFN0cmluZyBzdHJpbmdGb3JQb3NpdGlvbihjb25zdCBO
YW1lZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgc2l6ZV90IHJvdywgc2l6ZV90IGNvbHVtbikK
K3sKKyAgICBWZWN0b3I8U3RyaW5nPiBjYW5kaWRhdGVzOworCisgICAgZm9yIChhdXRvIGl0ID0g
Z3JpZEFyZWFNYXAuYmVnaW4oKSwgZW5kID0gZ3JpZEFyZWFNYXAuZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBjb25zdCBHcmlkQ29vcmRpbmF0ZSYgY29vcmRpbmF0ZSA9IGl0LT52
YWx1ZTsKKyAgICAgICAgaWYgKHJvdyA+PSBjb29yZGluYXRlLnJvd3MuaW5pdGlhbFBvc2l0aW9u
SW5kZXggJiYgcm93IDw9IGNvb3JkaW5hdGUucm93cy5maW5hbFBvc2l0aW9uSW5kZXgpCisgICAg
ICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChpdC0+a2V5KTsKKyAgICB9CisKKyAgICBmb3IgKGF1
dG8gaXQgPSBncmlkQXJlYU1hcC5iZWdpbigpLCBlbmQgPSBncmlkQXJlYU1hcC5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IEdyaWRDb29yZGluYXRlJiBjb29yZGluYXRl
ID0gaXQtPnZhbHVlOworICAgICAgICBpZiAoY29sdW1uID49IGNvb3JkaW5hdGUuY29sdW1ucy5p
bml0aWFsUG9zaXRpb25JbmRleCAmJiBjb2x1bW4gPD0gY29vcmRpbmF0ZS5jb2x1bW5zLmZpbmFs
UG9zaXRpb25JbmRleCAmJiBjYW5kaWRhdGVzLmNvbnRhaW5zKGl0LT5rZXkpKQorICAgICAgICAg
ICAgcmV0dXJuIGl0LT5rZXk7CisgICAgfQorCisgICAgcmV0dXJuICIuIjsKK30KKworU3RyaW5n
IENTU0dyaWRUZW1wbGF0ZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgbV9yb3dD
b3VudDsgKytyb3cpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1wiJyk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG1fY29sdW1uQ291bnQ7ICsrY29sdW1uKSB7
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmdGb3JQb3NpdGlvbihtX2dyaWRBcmVh
TWFwLCByb3csIGNvbHVtbikpOworICAgICAgICAgICAgaWYgKGNvbHVtbiAhPSBtX2NvbHVtbkNv
dW50IC0gMSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICB9
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcIicpOworICAgICAgICBpZiAocm93ICE9IG1fcm93
Q291bnQgLSAxKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICB9CisgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlVmFsdWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjI0
NjY2NmE2NWJiNzViMjhmOTFjMDVjZWJhZjMyODBlZmNkODkyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZVZhbHVlLmgKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQ1NTR3JpZFRlbXBsYXRlVmFsdWVfaAorI2RlZmluZSBDU1NHcmlkVGVtcGxhdGVW
YWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkdyaWRDb29yZGluYXRl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTR3JpZFRlbXBsYXRlVmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0dy
aWRUZW1wbGF0ZVZhbHVlPiBjcmVhdGUoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFN
YXAsIHNpemVfdCByb3dDb3VudCwgc2l6ZV90IGNvbHVtbkNvdW50KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgQ1NTR3JpZFRlbXBsYXRlVmFsdWUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5D
b3VudCkpOyB9CisgICAgfkNTU0dyaWRUZW1wbGF0ZVZhbHVlKCkgeyB9CisKKyAgICBTdHJpbmcg
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0OworCisgICAgY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgZ3Jp
ZEFyZWFNYXAoKSBjb25zdCB7IHJldHVybiBtX2dyaWRBcmVhTWFwOyB9CisgICAgc2l6ZV90IHJv
d0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yb3dDb3VudDsgfQorICAgIHNpemVfdCBjb2x1bW5D
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uQ291bnQ7IH0KKworcHJpdmF0ZToKKyAgICBD
U1NHcmlkVGVtcGxhdGVWYWx1ZShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiwgc2l6ZV90IHJvd0Nv
dW50LCBzaXplX3QgY29sdW1uQ291bnQpOworCisgICAgTmFtZWRHcmlkQXJlYU1hcCBtX2dyaWRB
cmVhTWFwOworICAgIHNpemVfdCBtX3Jvd0NvdW50OworICAgIHNpemVfdCBtX2NvbHVtbkNvdW50
OworfTsKKworQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoR3JpZFRlbXBsYXRlVmFsdWUpCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU0dyaWRUZW1wbGF0ZVZhbHVlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNWIzMTBjOGYzYWZjNjQ3ZmRmNzk1YTc4OTczMGZj
ZDdhMDc5YTFiZS4uZjI1M2EwZDhmYmY2MTgyMzNmYmI4ZTY1OWVlOTM3ZmM3MjM3MWQ0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJDU1NG
b250VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
R3JhZGllbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0dyaWRUZW1wbGF0ZVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCkBAIC0yNzEyLDYgKzI3MTMsMTMgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgICAgICByZXR1cm4gcGFyc2VHcmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKHByb3BJZCwg
aW1wb3J0YW50KTsKICAgICB9CiAKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFRlbXBs
YXRlOgorICAgICAgICBpZiAoIWNzc0dyaWRMYXlvdXRFbmFibGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZUdyaWRUZW1wbGF0ZSgp
OworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xs
YXBzZTogewogICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgIFNob3J0aGFuZFNj
b3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwpAQCAtNTEz
OSw2ICs1MTQ3LDgxIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogCiAjZW5kaWYgLyogRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKSAqLwogCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBh
cnNlR3JpZFRlbXBsYXRlKCkKK3sKKyAgICBOYW1lZEdyaWRBcmVhTWFwIGdyaWRBcmVhTWFwOwor
ICAgIHNpemVfdCByb3dDb3VudCA9IDA7CisgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gMDsKKwor
ICAgIHdoaWxlIChDU1NQYXJzZXJWYWx1ZSogY3VycmVudFZhbHVlID0gbV92YWx1ZUxpc3QtPmN1
cnJlbnQoKSkgeworICAgICAgICBpZiAoY3VycmVudFZhbHVlLT51bml0ICE9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfU1RSSU5HKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgU3Ry
aW5nIGdyaWRSb3dOYW1lcyA9IGN1cnJlbnRWYWx1ZS0+c3RyaW5nOworICAgICAgICBpZiAoIWdy
aWRSb3dOYW1lcy5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzOworICAgICAgICBncmlkUm93TmFtZXMuc3BsaXQoJyAn
LCBjb2x1bW5OYW1lcyk7CisKKyAgICAgICAgaWYgKGNvbHVtbkNvdW50ICYmIChjb2x1bW5Db3Vu
dCAhPSBjb2x1bW5OYW1lcy5zaXplKCkpKSB7CisgICAgICAgICAgICAvLyBUaGUgZGVjbGFyYXRp
b24gaXMgaW52YWxpZCBpZiBhbGwgdGhlIHJvd3MgZG9uJ3QgaGF2ZSB0aGUgbnVtYmVyIG9mIGNv
bHVtbnMuCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
Y29sdW1uQ291bnQpIHsKKyAgICAgICAgICAgIGNvbHVtbkNvdW50ID0gY29sdW1uTmFtZXMuc2l6
ZSgpOworICAgICAgICAgICAgQVNTRVJUKGNvbHVtbkNvdW50KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoc2l6ZV90IGN1cnJlbnRDb2wgPSAwOyBjdXJyZW50Q29sIDwgY29sdW1uQ291bnQ7
ICsrY3VycmVudENvbCkgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBncmlkQXJlYU5hbWUg
PSBjb2x1bW5OYW1lc1tjdXJyZW50Q29sXTsKKworICAgICAgICAgICAgLy8gVW5hbWVkIGFyZWFz
IGFyZSBhbHdheXMgdmFsaWQgKHdlIGNvbnNpZGVyIHRoZW0gdG8gYmUgMXgxKS4KKyAgICAgICAg
ICAgIGlmIChncmlkQXJlYU5hbWUgPT0gIi4iKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAvLyBXZSBoYW5kbGUgc2V2ZXJhbCBncmlkIGFyZWFzIHdpdGggdGhlIHNh
bWUgbmFtZSBhdCBvbmNlIHRvIHNpbXBsaWZ5IHRoZSB2YWxpZGF0aW9uIGNvZGUuCisgICAgICAg
ICAgICBzaXplX3QgbG9va0FoZWFkQ29sOworICAgICAgICAgICAgZm9yIChsb29rQWhlYWRDb2wg
PSBjdXJyZW50Q29sOyBsb29rQWhlYWRDb2wgPCAoY29sdW1uQ291bnQgLSAxKTsgKytsb29rQWhl
YWRDb2wpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29sdW1uTmFtZXNbbG9va0FoZWFkQ29sICsg
MV0gIT0gZ3JpZEFyZWFOYW1lKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgYXV0byBncmlkQXJlYUl0ZXJhdG9yID0gZ3JpZEFyZWFNYXAu
ZmluZChncmlkQXJlYU5hbWUpOworICAgICAgICAgICAgaWYgKGdyaWRBcmVhSXRlcmF0b3IgPT0g
Z3JpZEFyZWFNYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgZ3JpZEFyZWFNYXAuYWRkKGdyaWRB
cmVhTmFtZSwgR3JpZENvb3JkaW5hdGUoR3JpZFNwYW4ocm93Q291bnQsIHJvd0NvdW50KSwgR3Jp
ZFNwYW4oY3VycmVudENvbCwgbG9va0FoZWFkQ29sKSkpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgR3JpZENvb3JkaW5hdGUmIGdyaWRDb29yZGluYXRlID0gZ3JpZEFyZWFJ
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNr
cyB0ZXN0IHRoYXQgdGhlIGdyaWQgYXJlYSBpcyBhIHNpbmdsZSBmaWxsZWQtaW4gcmVjdGFuZ2xl
LgorICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBuZXcgcm93IGlzIGFkamFjZW50IHRvIHRoZSBw
cmV2aW91c2x5IHBhcnNlZCByb3cuCisgICAgICAgICAgICAgICAgaWYgKHJvd0NvdW50ICE9IGdy
aWRDb29yZGluYXRlLnJvd3MuaW5pdGlhbFBvc2l0aW9uSW5kZXggKyAxKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgICAgIC8vIDIuIFRoZSBuZXcgYXJlYSBz
dGFydHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFyZWEu
CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2wgIT0gZ3JpZENvb3JkaW5hdGUuY29sdW1u
cy5pbml0aWFsUG9zaXRpb25JbmRleCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisK
KyAgICAgICAgICAgICAgICAvLyAzLiBUaGUgbmV3IGFyZWEgZW5kcyBhdCB0aGUgc2FtZSBwb3Np
dGlvbiBhcyB0aGUgcHJldmlvdXNseSBwYXJzZWQgYXJlYS4KKyAgICAgICAgICAgICAgICBpZiAo
bG9va0FoZWFkQ29sICE9IGdyaWRDb29yZGluYXRlLmNvbHVtbnMuZmluYWxQb3NpdGlvbkluZGV4
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgICAgICsrZ3Jp
ZENvb3JkaW5hdGUucm93cy5maW5hbFBvc2l0aW9uSW5kZXg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjdXJyZW50Q29sID0gbG9va0FoZWFkQ29sOworICAgICAgICB9CisKKyAgICAgICAg
Kytyb3dDb3VudDsKKyAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICB9CisKKyAgICBp
ZiAoIXJvd0NvdW50IHx8ICFjb2x1bW5Db3VudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gQ1NTR3JpZFRlbXBsYXRlVmFsdWU6OmNyZWF0ZShncmlkQXJlYU1hcCwgcm93Q291bnQs
IGNvbHVtbkNvdW50KTsKK30KKwogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywgYm9vbCBjb3VudGVycykK
IHsKICAgICB1bnNpZ25lZCBudW1BcmdzID0gYXJncy0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IDZjYzE0Mzk1ZjQ4ZmQ0NDU5ZGY2M2JjOGQ1MzA2MjJlOTI1Y2JiYzEuLjI0NTJk
NGY3MDViZGEyZjM0NGNkZjJjNTYzYmFmZjcyMzk1NmFjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKQEAgLTE2OSw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZUdyaWRUcmFja0xp
c3QoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHBhcnNlR3JpZFRyYWNrU2l6ZSgpOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHBhcnNlR3JpZEJyZWFkdGgoQ1NTUGFyc2VyVmFsdWUqKTsKKyAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRUZW1wbGF0ZSgpOwogCiAgICAgYm9vbCBwYXJzZURh
c2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDE5OTZlNDgxY2QxZjFjZjMxOTViMzFi
ZDU4ZmY2NTVlNzNlOWFmMzguLmI3MzBiMTg5OTM0ZmJlZmQ0YjA0Y2VjODI1ZjNmNDRiNGJhZjQ2
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0zMTQsNiArMzE0
LDcgQEAgei1pbmRleAogLXdlYmtpdC1ncmlkLXJvdy1zdGFydAogLXdlYmtpdC1ncmlkLWNvbHVt
bgogLXdlYmtpdC1ncmlkLXJvdworLXdlYmtpdC1ncmlkLXRlbXBsYXRlCiAtd2Via2l0LWdyaWQt
YXV0by1mbG93CiAtd2Via2l0LWhpZ2hsaWdodCBbSW5oZXJpdGVkXQogLXdlYmtpdC1oeXBoZW5h
dGUtY2hhcmFjdGVyIFtJbmhlcml0ZWRdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCAyMDNl
YjYyMmI4NmJhZmEwMjk3ZmY5MDcxMDJkMmMyZmE1ODcwOTU5Li5kYmM5NDNkYTM5ODY3N2Y5ZWY3
MTg5NTU3Yjk1MzA0ZmFjNTE2YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGdW5jdGlv
blZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0dy
aWRUZW1wbGF0ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgi
CkBAIC0xOTgsNiArMTk5LDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVl
JiBvdGhlcikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0lu
aGVyaXRlZFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEluaXRpYWxDbGFzczoK
ICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0luaXRpYWxWYWx1ZT4oKnRo
aXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBHcmlkVGVtcGxhdGVDbGFzczoKKyAgICAgICAgICAg
IHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0dyaWRUZW1wbGF0ZVZhbHVlPigqdGhpcywgb3Ro
ZXIpOwogICAgICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgogICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDU1NWYWx1ZXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAg
IGNhc2UgUmVmbGVjdENsYXNzOgpAQCAtMzAwLDYgKzMwMyw4IEBAIFN0cmluZyBDU1NWYWx1ZTo6
Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0b0NTU0luaGVyaXRlZFZhbHVlKHRoaXMp
LT5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBJbml0aWFsQ2xhc3M6CiAgICAgICAgIHJldHVy
biB0b0NTU0luaXRpYWxWYWx1ZSh0aGlzKS0+Y3VzdG9tQ1NTVGV4dCgpOworICAgIGNhc2UgR3Jp
ZFRlbXBsYXRlQ2xhc3M6CisgICAgICAgIHJldHVybiB0b0NTU0dyaWRUZW1wbGF0ZVZhbHVlKHRo
aXMpLT5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBQcmltaXRpdmVDbGFzczoKICAgICAgICAg
cmV0dXJuIHRvQ1NTUHJpbWl0aXZlVmFsdWUodGhpcyktPmN1c3RvbUNTU1RleHQoKTsKICAgICBj
YXNlIFJlZmxlY3RDbGFzczoKQEAgLTQyNSw2ICs0MzAsOSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0
cm95KCkKICAgICBjYXNlIEluaXRpYWxDbGFzczoKICAgICAgICAgZGVsZXRlIHRvQ1NTSW5pdGlh
bFZhbHVlKHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBHcmlkVGVtcGxhdGVDbGFz
czoKKyAgICAgICAgZGVsZXRlIHRvQ1NTR3JpZFRlbXBsYXRlVmFsdWUodGhpcyk7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgogICAgICAgICBkZWxldGUgdG9DU1NQ
cmltaXRpdmVWYWx1ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApp
bmRleCAyNTk2NWFiMjdkOGE1NmU1ZDhmYmIyYTA5NWFkZDc3OTkyNTM2Y2E2Li42Nzk5MDM3NjVi
ZDE5YjlkY2VkY2MwZmVhNzE3ZmJhYmRiOWNhNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAt
MTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBi
b29sIGlzVmFyaWFibGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFZhcmlh
YmxlQ2xhc3M7IH0KICNlbmRpZgorICAgIGJvb2wgaXNHcmlkVGVtcGxhdGVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRUZW1wbGF0ZUNsYXNzOyB9CiAjaWYgRU5BQkxF
KFNWRykKICAgICBib29sIGlzU1ZHQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9
PSBTVkdDb2xvckNsYXNzIHx8IG1fY2xhc3NUeXBlID09IFNWR1BhaW50Q2xhc3M7IH0KICAgICBi
b29sIGlzU1ZHUGFpbnQoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTVkdQYWludENs
YXNzOyB9CkBAIC0xNzksNiArMTgwLDcgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQogICAgICAgICBWYXJpYWJsZUNsYXNzLAogI2VuZGlmCisgICAgICAgIEdyaWRUZW1w
bGF0ZUNsYXNzLAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIFNWR0NvbG9yQ2xhc3MsCiAgICAg
ICAgIFNWR1BhaW50Q2xhc3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
MzFiZmUzYjcxNWY0NDZhNzQ3NTEyY2NhOTc0ZmIxNWFlYWNhYjQzNi4uMDlmM2ZlNThlMDhmODUy
ZmU0ZTE0YmQyODZlYTMxM2U2M2E3YjkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIK
KyNpbmNsdWRlICJDU1NHcmlkVGVtcGxhdGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0xpbmVCb3hD
b250YWluVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1Bh
cnNlci5oIgpAQCAtMjc4NSw2ICsyNzg2LDMxIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldEdyaWRJdGVtUm93RW5kKHJvd0VuZFBvc2l0aW9uKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFRlbXBsYXRlOiB7Cisg
ICAgICAgIGlmIChpc0luaGVyaXQpIHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5h
bWVkR3JpZEFyZWEoc3RhdGUucGFyZW50U3R5bGUoKS0+bmFtZWRHcmlkQXJlYSgpKTsKKyAgICAg
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFSb3dDb3VudChzdGF0ZS5wYXJl
bnRTdHlsZSgpLT5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSk7CisgICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoc3RhdGUucGFyZW50U3R5bGUoKS0+
bmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlmIChpc0luaXRpYWwpIHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldE5hbWVkR3JpZEFyZWEoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhKCkpOwor
ICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KFJlbmRl
clN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpOworICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFs
TmFtZWRHcmlkQXJlYUNvdW50KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVCh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBDU1NHcmlk
VGVtcGxhdGVWYWx1ZSogZ3JpZFRlbXBsYXRlVmFsdWUgPSB0b0NTU0dyaWRUZW1wbGF0ZVZhbHVl
KHZhbHVlKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYShncmlkVGVt
cGxhdGVWYWx1ZS0+Z3JpZEFyZWFNYXAoKSk7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5h
bWVkR3JpZEFyZWFSb3dDb3VudChncmlkVGVtcGxhdGVWYWx1ZS0+cm93Q291bnQoKSk7CisgICAg
ICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChncmlkVGVtcGxh
dGVWYWx1ZS0+Y29sdW1uQ291bnQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAv
LyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBEZXByZWNhdGVkU3R5bGVCdWlsZGVy
IGFscmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHByZWZpeGVkIHZlcnNpb24uCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCA0YjRjNzhlNmQ4ZWI1NDc3ZjlkZDJiZjExNTk4ZTE2MjBl
Mjc5MTI3Li4yNTgzNTdhZWNjZDQyNTM0YTNmYzYwN2NjMDZiYTVkMTFjMzVjMjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyR3JpZC5oIgogCisjaW5jbHVkZSAiR3Jp
ZENvb3JkaW5hdGUuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC03MDUsMjAgKzcw
NiwyMCBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCiAgICAgY2xlYXJHcmlk
KCk7CiB9CiAKLVJlbmRlckdyaWQ6OkdyaWRDb29yZGluYXRlIFJlbmRlckdyaWQ6OmNhY2hlZEdy
aWRDb29yZGluYXRlKGNvbnN0IFJlbmRlckJveCogZ3JpZEl0ZW0pIGNvbnN0CitHcmlkQ29vcmRp
bmF0ZSBSZW5kZXJHcmlkOjpjYWNoZWRHcmlkQ29vcmRpbmF0ZShjb25zdCBSZW5kZXJCb3gqIGdy
aWRJdGVtKSBjb25zdAogewogICAgIEFTU0VSVChtX2dyaWRJdGVtQ29vcmRpbmF0ZS5jb250YWlu
cyhncmlkSXRlbSkpOwogICAgIHJldHVybiBtX2dyaWRJdGVtQ29vcmRpbmF0ZS5nZXQoZ3JpZEl0
ZW0pOwogfQogCi1SZW5kZXJHcmlkOjpHcmlkU3BhbiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBv
c2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24oY29uc3QgUmVuZGVyQm94KiwgVHJhY2tT
aXppbmdEaXJlY3Rpb24sIHNpemVfdCBpbml0aWFsUG9zaXRpb24pIGNvbnN0CitHcmlkU3BhbiBS
ZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24o
Y29uc3QgUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24sIHNpemVfdCBpbml0aWFsUG9z
aXRpb24pIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgc3Bhbm5pbmcg
d2l0aCBhdXRvIHBvc2l0aW9ucyB5ZXQuIE9uY2Ugd2UgZG8sIHRoaXMgaXMgd3JvbmcuIEFsc28g
d2Ugc2hvdWxkIG1ha2UKICAgICAvLyBzdXJlIHRoZSBncmlkIGNhbiBhY2NvbW9kYXRlIHRoZSBu
ZXcgaXRlbSBhcyB3ZSBvbmx5IGdyb3cgMSBwb3NpdGlvbiBpbiBhIGdpdmVuIGRpcmVjdGlvbi4K
ICAgICByZXR1cm4gR3JpZFNwYW4oaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsUG9zaXRpb24pOwog
fQogCi1QYXNzT3duUHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZl
R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gqIGdyaWRJdGVtLCBUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CitQYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5k
ZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gqIGdy
aWRJdGVtLCBUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgY29u
c3QgR3JpZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24gPSAoZGlyZWN0aW9uID09IEZvckNvbHVt
bnMpID8gZ3JpZEl0ZW0tPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1uU3RhcnQoKSA6IGdyaWRJdGVt
LT5zdHlsZSgpLT5ncmlkSXRlbVJvd1N0YXJ0KCk7CiAgICAgY29uc3QgR3JpZFBvc2l0aW9uU2lk
ZSBpbml0aWFsUG9zaXRpb25TaWRlID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IENvbHVt
blN0YXJ0U2lkZSA6IFJvd1N0YXJ0U2lkZTsKQEAgLTgyOSw3ICs4MzAsNyBAQCBzaXplX3QgUmVu
ZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uLCBHcgogICAgIHJldHVybiAwOwogfQogCi1QYXNzT3duUHRyPFJlbmRlckdyaWQ6
OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRl
UG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0
aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKSBjb25zdAorUGFzc093blB0cjxH
cmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBv
c2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlv
biYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkgY29uc3QKIHsKICAgICBpZiAocG9z
aXRpb24uaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVk
T3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKQEAgLTg1Myw3ICs4
NTQsNyBAQCBQYXNzT3duUHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNv
bHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUAogICAgIHJldHVybiBHcmlkU3Bhbjo6Y3Jl
YXRlKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uICsg
cG9zaXRpb25PZmZzZXQpOwogfQogCi1QYXNzT3duUHRyPFJlbmRlckdyaWQ6OkdyaWRTcGFuPiBS
ZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9z
aXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9u
JiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKSBjb25zdAorUGFzc093blB0cjxHcmlk
U3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBv
c2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQ
b3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkgY29uc3QKIHsKICAgICBB
U1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAgIEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlk
TGluZSgpLmlzTnVsbCgpKTsKQEAgLTg3NCw3ICs4NzUsNyBAQCBQYXNzT3duUHRyPFJlbmRlckdy
aWQ6OkdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdh
aW5zdAogICAgIHJldHVybiByZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFtZWRHcmlkTGluZVBvc2l0
aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24ocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBwb3Np
dGlvbiwgaXQtPnZhbHVlKTsKIH0KIAotUGFzc093blB0cjxSZW5kZXJHcmlkOjpHcmlkU3Bhbj4g
UmVuZGVyR3JpZDo6cmVzb2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRp
b25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9u
LCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgZ3Jp
ZExpbmVzKSBjb25zdAorUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZVJv
d1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3Np
dGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgZ3JpZExpbmVzKSBjb25zdAogewogICAg
IC8vIFRoZSBncmlkIGxpbmUgaW5lcXVhbGl0eSBuZWVkcyB0byBiZSBzdHJpY3QgKHdoaWNoIGRv
ZXNuJ3QgbWF0Y2ggdGhlIGFmdGVyIC8gZW5kIGNhc2UpIGJlY2F1c2UgfHJlc29sdmVkT3Bwb3Np
dGVQb3NpdGlvbnwKICAgICAvLyBpcyBhbHJlYWR5IGNvbnZlcnRlZCB0byBhbiBpbmRleCBpbiBv
dXIgZ3JpZCByZXByZXNlbnRhdGlvbiAoaWUgb25lIHdhcyByZW1vdmVkIGZyb20gdGhlIGdyaWQg
bGluZSB0byBhY2NvdW50IGZvciB0aGUgc2lkZSkuCkBAIC04ODksNyArODkwLDcgQEAgUGFzc093
blB0cjxSZW5kZXJHcmlkOjpHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZVJvd1N0YXJ0Q29s
dW1uU3RhcnROYW1lZEdyaWQKICAgICByZXR1cm4gR3JpZFNwYW46OmNyZWF0ZShyZXNvbHZlZEdy
aWRMaW5lUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7CiB9CiAKLVBhc3NPd25Q
dHI8UmVuZGVyR3JpZDo6R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVSb3dFbmRDb2x1bW5F
bmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVz
b2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBjb25z
dCBWZWN0b3I8c2l6ZV90PiYgZ3JpZExpbmVzKSBjb25zdAorUGFzc093blB0cjxHcmlkU3Bhbj4g
UmVuZGVyR3JpZDo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNv
bnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBncmlkTGlu
ZXMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgYSBiaW5hcnkgc2VhcmNo
IGFzIHxncmlkTGluZXN8IGlzIG9yZGVyZWQuCiAgICAgc2l6ZV90IGZpcnN0TGluZUFmdGVyT3Bw
b3NpdGVQb3NpdGlvbkluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CmluZGV4IGU4ZDFiOWZmMjMwNzlhMzJlZjU2YjE5ZTRlY2RiMzkyZDk4NTllOGMuLjk5MTg5MTli
NjQ0NTdiMGRiNTIwYTc2MGRjZDA0NzVhN2JjMjdiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaApAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEdyaWRDb29yZGluYXRlOworY2xhc3MgR3JpZFNwYW47CiBjbGFzcyBHcmlkVHJhY2s7
CiAKIGNsYXNzIFJlbmRlckdyaWQgRklOQUwgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewpAQCAtNTks
NDEgKzYxLDYgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgY29tcHV0ZVByZWZlcnJlZFRy
YWNrV2lkdGgoY29uc3QgTGVuZ3RoJiwgc2l6ZV90KSBjb25zdDsKIAotICAgIHN0cnVjdCBHcmlk
U3BhbiB7Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyaWRTcGFuPiBjcmVhdGUoc2l6ZV90
IGluaXRpYWxQb3NpdGlvbiwgc2l6ZV90IGZpbmFsUG9zaXRpb24pCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR3JpZFNwYW4oaW5pdGlhbFBvc2l0aW9uLCBmaW5h
bFBvc2l0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBHcmlkU3BhbihzaXplX3QgaW5pdGlh
bFBvc2l0aW9uLCBzaXplX3QgZmluYWxQb3NpdGlvbikKLSAgICAgICAgICAgIDogaW5pdGlhbFBv
c2l0aW9uSW5kZXgoaW5pdGlhbFBvc2l0aW9uKQotICAgICAgICAgICAgLCBmaW5hbFBvc2l0aW9u
SW5kZXgoZmluYWxQb3NpdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGluaXRp
YWxQb3NpdGlvbkluZGV4IDw9IGZpbmFsUG9zaXRpb25JbmRleCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBzaXplX3QgaW5pdGlhbFBvc2l0aW9uSW5kZXg7Ci0gICAgICAgIHNpemVfdCBmaW5hbFBv
c2l0aW9uSW5kZXg7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBHcmlkQ29vcmRpbmF0ZSB7Ci0gICAg
ICAgIC8vIEhhc2hNYXAgcmVxdWlyZXMgYSBkZWZhdWx0IGNvbnN0dWN0b3IuCi0gICAgICAgIEdy
aWRDb29yZGluYXRlKCkKLSAgICAgICAgICAgIDogY29sdW1ucygwLCAwKQotICAgICAgICAgICAg
LCByb3dzKDAsIDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEdyaWRDb29yZGlu
YXRlKGNvbnN0IEdyaWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykKLSAgICAgICAgICAgIDog
Y29sdW1ucyhjKQotICAgICAgICAgICAgLCByb3dzKHIpCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIEdyaWRTcGFuIGNvbHVtbnM7Ci0gICAgICAgIEdyaWRTcGFuIHJvd3M7Ci0gICAg
fTsKLQogICAgIGNsYXNzIEdyaWRJdGVyYXRvcjsKICAgICBlbnVtIFRyYWNrU2l6aW5nRGlyZWN0
aW9uIHsgRm9yQ29sdW1ucywgRm9yUm93cyB9OwogICAgIHZvaWQgY29tcHV0ZWRVc2VkQnJlYWR0
aE9mR3JpZFRyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIGNv
bHVtblRyYWNrcywgVmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQ29vcmRpbmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjYTZl
YzUzMmMzMTUyNjA0YTgwOGEzZGI3ZjAyYzdmMjRhMDY3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaApAQCAtMCwwICsx
LDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgR3JpZENvb3JkaW5hdGVfaAorI2RlZmluZSBHcmlkQ29vcmRpbmF0ZV9o
CisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gQSBzcGFuIGluIGEgc2luZ2xlIGRpcmVjdGlvbiAoZWl0aGVyIHJvd3Mgb3IgY29sdW1u
cykuIE5vdGUgdGhhdCB8aW5pdGlhbFBvc2l0aW9uSW5kZXh8CisvLyBhbmQgfGZpbmFsUG9zaXRp
b25JbmRleHwgYXJlIGdyaWQgYXJlYXMnIGluZGV4ZXMsIE5PVCBncmlkIGxpbmVzJy4gSXRlcmF0
aW5nIG92ZXIgdGhlCisvLyBzcGFuIHNob3VsZCBpbmNsdWRlIGJvdGggfGluaXRpYWxQb3NpdGlv
bkluZGV4fCBhbmQgfGZpbmFsUG9zaXRpb25JbmRleHwgdG8gYmUgY29ycmVjdC4KK2NsYXNzIEdy
aWRTcGFuIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxHcmlkU3Bhbj4gY3JlYXRl
KHNpemVfdCBpbml0aWFsUG9zaXRpb24sIHNpemVfdCBmaW5hbFBvc2l0aW9uKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmlkU3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFs
UG9zaXRpb24pKTsKKyAgICB9CisKKyAgICBHcmlkU3BhbihzaXplX3QgaW5pdGlhbFBvc2l0aW9u
LCBzaXplX3QgZmluYWxQb3NpdGlvbikKKyAgICAgICAgOiBpbml0aWFsUG9zaXRpb25JbmRleChp
bml0aWFsUG9zaXRpb24pCisgICAgICAgICwgZmluYWxQb3NpdGlvbkluZGV4KGZpbmFsUG9zaXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlQoaW5pdGlhbFBvc2l0aW9uSW5kZXggPD0gZmluYWxQ
b3NpdGlvbkluZGV4KTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR3JpZFNw
YW4mIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaW5pdGlhbFBvc2l0aW9uSW5kZXgg
PT0gby5pbml0aWFsUG9zaXRpb25JbmRleCAmJiBmaW5hbFBvc2l0aW9uSW5kZXggPT0gby5maW5h
bFBvc2l0aW9uSW5kZXg7CisgICAgfQorCisgICAgc2l6ZV90IGluaXRpYWxQb3NpdGlvbkluZGV4
OworICAgIHNpemVfdCBmaW5hbFBvc2l0aW9uSW5kZXg7Cit9OworCisvLyBUaGlzIHJlcHJlc2Vu
dHMgYSBncmlkIGFyZWEgdGhhdCBzcGFucyBpbiBib3RoIHJvd3MnIGFuZCBjb2x1bW5zJyBkaXJl
Y3Rpb24uCitjbGFzcyBHcmlkQ29vcmRpbmF0ZSB7CitwdWJsaWM6CisgICAgLy8gSGFzaE1hcCBy
ZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rvci4KKyAgICBHcmlkQ29vcmRpbmF0ZSgpCisgICAg
ICAgIDogY29sdW1ucygwLCAwKQorICAgICAgICAsIHJvd3MoMCwgMCkKKyAgICB7CisgICAgfQor
CisgICAgR3JpZENvb3JkaW5hdGUoY29uc3QgR3JpZFNwYW4mIHIsIGNvbnN0IEdyaWRTcGFuJiBj
KQorICAgICAgICA6IGNvbHVtbnMoYykKKyAgICAgICAgLCByb3dzKHIpCisgICAgeworICAgIH0K
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkQ29vcmRpbmF0ZSYgbykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBjb2x1bW5zID09IG8uY29sdW1ucyAmJiByb3dzID09IG8ucm93
czsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JpZENvb3JkaW5hdGUmIG8p
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICB9CisKKyAg
ICBHcmlkU3BhbiBjb2x1bW5zOworICAgIEdyaWRTcGFuIHJvd3M7Cit9OworCit0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBHcmlkQ29vcmRpbmF0ZT4gTmFtZWRHcmlkQXJlYU1hcDsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3JpZENvb3JkaW5hdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAyMmM1MzY4ZTI1ZjZh
NTEwODRjOWRlNTdmMGM5NTliYmFhZDM1NWUzLi5kMzQ3YTM4M2ZjZWU2NmY0MjVmYjUwY2E4NTk2
YzU3N2FiMTM4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaApAQCAtNzgzLDYgKzc4Myw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZ3JpZC0+bV9ncmlkUm93czsgfQogICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBu
YW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2dyaWQtPm1fbmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KICAgICBjb25zdCBOYW1lZEdyaWRM
aW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29uc3QgTmFtZWRH
cmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYTsgfQorICAgIHNpemVfdCBuYW1lZEdyaWRB
cmVhUm93Q291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX25hbWVkR3JpZEFyZWFSb3dDb3VudDsgfQorICAgIHNpemVfdCBuYW1lZEdyaWRBcmVhQ29s
dW1uQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5t
X25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsgfQogICAgIEdyaWRBdXRvRmxvdyBncmlkQXV0b0Zs
b3coKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRB
dXRvRmxvdzsgfQogICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIGdyaWRBdXRvQ29sdW1ucygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9Db2x1
bW5zOyB9CiAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgZ3JpZEF1dG9Sb3dzKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b1Jvd3M7IH0KQEAg
LTEzMTgsNiArMTMyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZFJvd3MsIGxlbmd0aHMpOyB9CiAgICAgdm9pZCBz
ZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlk
Q29sdW1uTGluZXMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9n
cmlkLCBtX25hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KICAg
ICB2b2lkIHNldE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1l
ZEdyaWRSb3dMaW5lcykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2dyaWQsIG1fbmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQorICAgIHZv
aWQgc2V0TmFtZWRHcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVh
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZCwgbV9uYW1l
ZEdyaWRBcmVhLCBuYW1lZEdyaWRBcmVhKTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYVJv
d0NvdW50KHNpemVfdCByb3dDb3VudCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2dyaWQsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50LCByb3dDb3VudCk7IH0KKyAg
ICB2b2lkIHNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChzaXplX3QgY29sdW1uQ291bnQpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkLCBtX25hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudCwgY29sdW1uQ291bnQpOyB9CiAgICAgdm9pZCBzZXRHcmlkQXV0b0Zs
b3coR3JpZEF1dG9GbG93IGZsb3cpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9ncmlkLCBtX2dyaWRBdXRvRmxvdywgZmxvdyk7IH0KICAgICB2b2lkIHNldEdyaWRJ
dGVtQ29sdW1uU3RhcnQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5TdGFydFBvc2l0aW9uKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0ZW0sIG1fZ3Jp
ZENvbHVtblN0YXJ0LCBjb2x1bW5TdGFydFBvc2l0aW9uKTsgfQogICAgIHZvaWQgc2V0R3JpZEl0
ZW1Db2x1bW5FbmQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5FbmRQb3NpdGlvbikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dyaWRDb2x1
bW5FbmQsIGNvbHVtbkVuZFBvc2l0aW9uKTsgfQpAQCAtMTc3Myw2ICsxNzc5LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSB7IHJl
dHVybiBHcmlkVHJhY2tTaXplKEF1dG8pOyB9CiAgICAgc3RhdGljIEdyaWRUcmFja1NpemUgaW5p
dGlhbEdyaWRBdXRvUm93cygpIHsgcmV0dXJuIEdyaWRUcmFja1NpemUoQXV0byk7IH0KIAorICAg
IHN0YXRpYyBOYW1lZEdyaWRBcmVhTWFwIGluaXRpYWxOYW1lZEdyaWRBcmVhKCkgeyByZXR1cm4g
TmFtZWRHcmlkQXJlYU1hcCgpOyB9CisgICAgc3RhdGljIHNpemVfdCBpbml0aWFsTmFtZWRHcmlk
QXJlYUNvdW50KCkgeyByZXR1cm4gMDsgfQorCiAgICAgLy8gJ2F1dG8nIGlzIHRoZSBkZWZhdWx0
LgogICAgIHN0YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRQb3NpdGlvbigpIHsgcmV0dXJu
IEdyaWRQb3NpdGlvbigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdyaWREYXRhLmNwcAppbmRleCA5NDliZTAyNjBlYTUyNDhlY2FmZWNmMDA3NzcxNDk2
NjMxNTMzMDVlLi4yZDY1ZWM4ODVjNDM1ZDE2NzBiNWMyNDZlYWNmNDRkZTVhYTYwNWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCkBA
IC0zNiw2ICszNiw5IEBAIFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoKQogICAgICwgbV9n
cmlkQXV0b0Zsb3coUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0Zsb3coKSkKICAgICAsIG1f
Z3JpZEF1dG9Sb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkpCiAgICAgLCBt
X2dyaWRBdXRvQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvQ29sdW1ucygpKQor
ICAgICwgbV9uYW1lZEdyaWRBcmVhKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYSgp
KQorICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1l
ZEdyaWRBcmVhQ291bnQoKSkKKyAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KFJlbmRl
clN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpCiB7CiB9CiAKQEAgLTQ4LDYgKzUx
LDkgQEAgU3R5bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YShjb25zdCBTdHlsZUdyaWREYXRhJiBv
KQogICAgICwgbV9ncmlkQXV0b0Zsb3coby5tX2dyaWRBdXRvRmxvdykKICAgICAsIG1fZ3JpZEF1
dG9Sb3dzKG8ubV9ncmlkQXV0b1Jvd3MpCiAgICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhvLm1fZ3Jp
ZEF1dG9Db2x1bW5zKQorICAgICwgbV9uYW1lZEdyaWRBcmVhKG8ubV9uYW1lZEdyaWRBcmVhKQor
ICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoby5tX25hbWVkR3JpZEFyZWFSb3dDb3VudCkK
KyAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KG8ubV9uYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
cmlkRGF0YS5oCmluZGV4IDdhMzFhM2VjNTA3ZGY1ZTA2YWEyMWU1YjJiMzYxMjMxNzYwMmY5YzIu
Ljg4NTgxOWVlZTU1YTkzYjYzNjMxZGM5NDcyYzMyNDI3NGYxMzBjNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBTdHlsZUdyaWREYXRhX2gKICNkZWZpbmUgU3R5bGVHcmlkRGF0YV9oCiAKKyNp
bmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgogI2luY2x1ZGUgIkdyaWRUcmFja1NpemUuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVHcmlkRGF0YSYgbykgY29uc3QKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBjb21wYXJp
bmcgdHdvIGhhc2hlcyBkb2Vzbid0IGxvb2sgZ3JlYXQgZm9yIHBlcmZvcm1hbmNlLiBTb21ldGhp
bmcgdG8ga2VlcCBpbiBtaW5kIGdvaW5nIGZvcndhcmQuCi0gICAgICAgIHJldHVybiBtX2dyaWRD
b2x1bW5zID09IG8ubV9ncmlkQ29sdW1ucyAmJiBtX2dyaWRSb3dzID09IG8ubV9ncmlkUm93cyAm
JiBtX2dyaWRBdXRvRmxvdyA9PSBvLm1fZ3JpZEF1dG9GbG93ICYmIG1fZ3JpZEF1dG9Sb3dzID09
IG8ubV9ncmlkQXV0b1Jvd3MgJiYgbV9ncmlkQXV0b0NvbHVtbnMgPT0gby5tX2dyaWRBdXRvQ29s
dW1ucyAmJiBtX25hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubV9uYW1lZEdyaWRDb2x1bW5MaW5l
cyAmJiBtX25hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9uYW1lZEdyaWRSb3dMaW5lczsKKyAgICAg
ICAgcmV0dXJuIG1fZ3JpZENvbHVtbnMgPT0gby5tX2dyaWRDb2x1bW5zICYmIG1fZ3JpZFJvd3Mg
PT0gby5tX2dyaWRSb3dzICYmIG1fZ3JpZEF1dG9GbG93ID09IG8ubV9ncmlkQXV0b0Zsb3cgJiYg
bV9ncmlkQXV0b1Jvd3MgPT0gby5tX2dyaWRBdXRvUm93cyAmJiBtX2dyaWRBdXRvQ29sdW1ucyA9
PSBvLm1fZ3JpZEF1dG9Db2x1bW5zICYmIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX25h
bWVkR3JpZENvbHVtbkxpbmVzICYmIG1fbmFtZWRHcmlkUm93TGluZXMgPT0gby5tX25hbWVkR3Jp
ZFJvd0xpbmVzICYmIG1fbmFtZWRHcmlkQXJlYSA9PSBvLm1fbmFtZWRHcmlkQXJlYSAmJiBtX25h
bWVkR3JpZEFyZWEgPT0gby5tX25hbWVkR3JpZEFyZWEgJiYgbV9uYW1lZEdyaWRBcmVhUm93Q291
bnQgPT0gby5tX25hbWVkR3JpZEFyZWFSb3dDb3VudCAmJiBtX25hbWVkR3JpZEFyZWFDb2x1bW5D
b3VudCA9PSBvLm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OwogICAgIH0KIAogICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWREYXRhJiBvKSBjb25zdApAQCAtNjUsNiArNjYsMTIg
QEAgcHVibGljOgogICAgIEdyaWRUcmFja1NpemUgbV9ncmlkQXV0b1Jvd3M7CiAgICAgR3JpZFRy
YWNrU2l6ZSBtX2dyaWRBdXRvQ29sdW1uczsKIAorICAgIE5hbWVkR3JpZEFyZWFNYXAgbV9uYW1l
ZEdyaWRBcmVhOworICAgIC8vIEJlY2F1c2UgbV9uYW1lZEdyaWRBcmVhIGRvZXNuJ3Qgc3RvcmUg
dGhlIHVubmFtZWQgZ3JpZCBhcmVhcywgd2UgbmVlZCB0byBrZWVwIHRyYWNrCisgICAgLy8gb2Yg
dGhlIGV4cGxpY2l0IGdyaWQgc2l6ZSBkZWZpbmVkIGJ5IGJvdGggbmFtZWQgYW5kIHVubmFtZWQg
Z3JpZCBhcmVhcy4KKyAgICBzaXplX3QgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7CisgICAgc2l6
ZV90IG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OworCiBwcml2YXRlOgogICAgIFN0eWxlR3Jp
ZERhdGEoKTsKICAgICBTdHlsZUdyaWREYXRhKGNvbnN0IFN0eWxlR3JpZERhdGEmKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAyOGM0MTdmYWQyMWI1ZTUzY2E1ZmNkZjU2MjcyNjQ1NjIwY2E3OTkzLi42ZWIzYmQ1MTJiNDFh
ODI3MzdmZWU0NDdhZmRhNmI5NTNkNjZkYzVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMt
MTAtMDggIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGdyaWQtdGVtcGxhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gQmxp
bmsgcjE1MzQyNywgcjE1NTE5OSBhbmQgcjE1NTcxMiAgYnkgPGpjaGFmZnJhaXhAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0byB2ZXJpZnkgdGhhdCB3ZSBwcm9wZXJseSBy
ZWNvZ25pemUsIHBhcnNlLCBzdG9yZQorICAgICAgICBhbmQgcmV0dXJuIHRoZSB2YWx1ZSBvZiBn
cmlkLXRlbXBsYXRlLgorCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC10ZW1w
bGF0ZS1nZXQtc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtZ3Jp
ZC1sYXlvdXQvZ3JpZC10ZW1wbGF0ZS1nZXQtc2V0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTEwLTA4
ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgZ2FyZGVuaW5nLiBBZGRpbmcgSW1hZ2VPbmx5RmFpbHVyZSBleHBlY3RhdGlvbnMgdG86
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXRlbXBs
YXRlLWdldC1zZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvZ3JpZC10ZW1wbGF0ZS1nZXQtc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2Q4N2Ew
ZDZmNjg2ZjRjNzVhMzVlZDdlOTFmNTRlNDViN2FhMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC10ZW1wbGF0ZS1nZXQtc2V0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMxIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ3JpZC10ZW1w
bGF0ZSBpcyBwcm9wZXJseSBwYXJzZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitUZXN0IGdldHRpbmcgZ3JpZC10ZW1wbGF0ZSBzZXQgdGhyb3VnaCBDU1MuCitQQVNTIHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRGVmYXVsdFRlbXBsYXRlKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAibm9uZSIKK1BBU1Mgd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZ3JpZFdpdGhTaW5nbGVTdHJpbmdUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIlwiYXJlYVwiIgorUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShncmlkV2l0aFR3b0NvbHVtbnNUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIlwiZmlyc3Qgc2Vjb25kXCIiCitQQVNTIHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoVHdvUm93c1RlbXBsYXRlKS5nZXRQcm9wZXJ0
eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJmaXJzdFwiIFwic2Vjb25kXCIi
CitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoU3Bhbm5pbmdDb2x1bW5zVGVt
cGxhdGUpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJcInNw
YW4gc3BhblwiIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFNwYW5uaW5n
Um93c0RvdFRlbXBsYXRlKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUn
KSBpcyAiXCJzcGFuXCIgXCIuXCIiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRX
aXRoRG90Q29sdW1uKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBp
cyAiXCJoZWFkZXIgLlwiIFwiZm9vdGVyIC5cIiIKK1Rlc3QgZ3JpZC10ZW1wbGF0ZTogaW5pdGlh
bAorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJmb29iYXJcIiIKK1Rlc3QgZ3JpZC10ZW1w
bGF0ZTogaW5oZXJpdAorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnRFbGVtZW50
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSBpcyAiXCJmb28gYmFy
XCIiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJcImZvbyBiYXJcIiIKK1Rlc3QgaW52YWxp
ZCBncmlkLXRlbXBsYXRlIHZhbHVlcy4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxl
bWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIm5vbmUi
CitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIGlzICJub25lIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUn
KSBpcyAibm9uZSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykgaXMgIm5vbmUiCitQQVNTIHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC10ZW1wbGF0ZScpIGlzICJub25lIgorCitGSVhNRTogV2UgY3VycmVudGx5IGRvbid0IHZhbGlk
YXRlIHRoYXQgdGhlIG5hbWVkIGdyaWQgYXJlYXMgYXJlIDxpbmRlbnQ+LgorRkFJTCB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
dGVtcGxhdGUnKSBzaG91bGQgYmUgbm9uZS4gV2FzICJuYXYtdXAiLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtdGVtcGxhdGUtZ2V0LXNldC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC10ZW1wbGF0ZS1nZXQtc2V0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDM3MzQ2ZmRjYTY1OTc5NDJhODQ4YTQ2YThjNGRlZjQ5NDNiN2M1MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtdGVt
cGxhdGUtZ2V0LXNldC5odG1sCkBAIC0wLDAgKzEsMTI0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0Q1NTR3JpZExheW91dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPGxpbmsgaHJlZj0i
cmVzb3VyY2VzL2dyaWQuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorPHN0eWxlPgorI2dyaWRXaXRo
U2luZ2xlU3RyaW5nVGVtcGxhdGUgeworICAgIC13ZWJraXQtZ3JpZC10ZW1wbGF0ZTogImFyZWEi
OworfQorCisjZ3JpZFdpdGhUd29Db2x1bW5zVGVtcGxhdGUgeworICAgIC13ZWJraXQtZ3JpZC10
ZW1wbGF0ZTogImZpcnN0IHNlY29uZCI7Cit9CisKKyNncmlkV2l0aFR3b1Jvd3NUZW1wbGF0ZSB7
CisgICAgLXdlYmtpdC1ncmlkLXRlbXBsYXRlOiAiZmlyc3QiCisgICAgICAgICAgICAgICAgICAg
InNlY29uZCI7Cit9CisKKyNncmlkV2l0aFNwYW5uaW5nQ29sdW1uc1RlbXBsYXRlIHsKKyAgICAt
d2Via2l0LWdyaWQtdGVtcGxhdGU6ICJzcGFuIHNwYW4iOworfQorCisjZ3JpZFdpdGhTcGFubmlu
Z1Jvd3NEb3RUZW1wbGF0ZSB7CisgICAgLXdlYmtpdC1ncmlkLXRlbXBsYXRlOiAic3BhbiIKKyAg
ICAgICAgICAgICAgICAgICAiLiI7Cit9CisKKyNncmlkV2l0aERvdENvbHVtbiB7CisgICAgLXdl
YmtpdC1ncmlkLXRlbXBsYXRlOiAiaGVhZGVyIC4iCisgICAgICAgICAgICAgICAgICAgImZvb3Rl
ciAuIjsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9
ImdyaWRXaXRoRGVmYXVsdFRlbXBsYXRlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJn
cmlkV2l0aFNpbmdsZVN0cmluZ1RlbXBsYXRlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQiIGlk
PSJncmlkV2l0aFR3b0NvbHVtbnNUZW1wbGF0ZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIiBp
ZD0iZ3JpZFdpdGhUd29Sb3dzVGVtcGxhdGUiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9
ImdyaWRXaXRoU3Bhbm5pbmdDb2x1bW5zVGVtcGxhdGUiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3Jp
ZCIgaWQ9ImdyaWRXaXRoU3Bhbm5pbmdSb3dzRG90VGVtcGxhdGUiPjwvZGl2PgorPGRpdiBjbGFz
cz0iZ3JpZCIgaWQ9ImdyaWRXaXRoRG90Q29sdW1uIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhhdCBncmlkLXRlbXBsYXRlIGlzIHByb3Blcmx5
IHBhcnNlZC4iKTsKKworICAgIGRlYnVnKCJUZXN0IGdldHRpbmcgZ3JpZC10ZW1wbGF0ZSBzZXQg
dGhyb3VnaCBDU1MuIik7CisgICAgdmFyIGdyaWRXaXRoRGVmYXVsdFRlbXBsYXRlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoRGVmYXVsdFRlbXBsYXRlIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aERlZmF1bHRU
ZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAibm9u
ZSIpCisKKyAgICB2YXIgZ3JpZFdpdGhTaW5nbGVTdHJpbmdUZW1wbGF0ZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJncmlkV2l0aFNpbmdsZVN0cmluZ1RlbXBsYXRlIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFNpbmdsZVN0
cmluZ1RlbXBsYXRlKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIs
ICciYXJlYSInKQorCisgICAgdmFyIGdyaWRXaXRoVHdvQ29sdW1uc1RlbXBsYXRlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoVHdvQ29sdW1uc1RlbXBsYXRlIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFR3b0Nv
bHVtbnNUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJyki
LCAnImZpcnN0IHNlY29uZCInKQorCisgICAgdmFyIGdyaWRXaXRoVHdvUm93c1RlbXBsYXRlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoVHdvUm93c1RlbXBsYXRlIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFR3
b1Jvd3NUZW1wbGF0ZSkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlJyki
LCAnImZpcnN0IiAic2Vjb25kIicpCisKKyAgICB2YXIgZ3JpZFdpdGhTcGFubmluZ0NvbHVtbnNU
ZW1wbGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aFNwYW5uaW5nQ29sdW1u
c1RlbXBsYXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShncmlkV2l0aFNwYW5uaW5nQ29sdW1uc1RlbXBsYXRlKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICcic3BhbiBzcGFuIicpCisKKyAgICB2YXIgZ3Jp
ZFdpdGhTcGFubmluZ1Jvd3NEb3RUZW1wbGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJn
cmlkV2l0aFNwYW5uaW5nUm93c0RvdFRlbXBsYXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFNwYW5uaW5nUm93c0RvdFRlbXBs
YXRlKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICcic3BhbiIg
Ii4iJykKKworICAgIHZhciBncmlkV2l0aERvdENvbHVtbiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJncmlkV2l0aERvdENvbHVtbiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhEb3RDb2x1bW4pLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgJyJoZWFkZXIgLiIgImZvb3RlciAuIicpCisKKyAg
ICBkZWJ1ZygiVGVzdCBncmlkLXRlbXBsYXRlOiBpbml0aWFsIik7CisgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIGVsZW1lbnQuc3R5bGUud2Via2l0R3JpZFRlbXBsYXRlID0g
Iidmb29iYXInIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScp
IiwgJyJmb29iYXIiJykKKyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICJp
bml0aWFsIjsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpOworCisgICAg
ZGVidWcoIlRlc3QgZ3JpZC10ZW1wbGF0ZTogaW5oZXJpdCIpOworICAgIHZhciBwYXJlbnRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChwYXJlbnRFbGVtZW50KTsKKyAgICBwYXJlbnRFbGVtZW50LnN0eWxlLndlYmtp
dEdyaWRUZW1wbGF0ZSA9ICInZm9vIGJhciciOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLXRlbXBsYXRlJykiLCAnImZvbyBiYXIiJykKKworICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyZW50RWxlbWVudC5hcHBl
bmRDaGlsZChlbGVtZW50KTsKKyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9
ICJpbmhlcml0IjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScp
IiwgJyJmb28gYmFyIicpCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwYXJlbnRFbGVt
ZW50KTsKKworICAgIGRlYnVnKCJUZXN0IGludmFsaWQgZ3JpZC10ZW1wbGF0ZSB2YWx1ZXMuIik7
CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworCisgICAgLy8gJ25hdicgaXMgbm90
IGEgcmVjdGFuZ3VsYXIgZGVmaW5pdGlvbi4KKyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRU
ZW1wbGF0ZSA9ICInbmF2IGhlYWQnICduYXYgbmF2JyI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICJub25lIikKKworICAgIC8vICduYXYnIGlzIG5vdCBj
b250aWd1b3VzIGluIHRoZSBjb2x1bW4gZGlyZWN0aW9uLgorICAgIGVsZW1lbnQuc3R5bGUud2Vi
a2l0R3JpZFRlbXBsYXRlID0gIiduYXYgaGVhZCBuYXYnIjsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgIm5vbmUiKQorCisgICAgLy8gJ25hdicgaXMgbm90
IGNvbnRpZ3VvdXMgaW4gdGhlIHJvdyBkaXJlY3Rpb24uCisgICAgZWxlbWVudC5zdHlsZS53ZWJr
aXRHcmlkVGVtcGxhdGUgPSAiJ25hdiBoZWFkJyAnbWlkZGxlIG1pZGRsZScgJ25hdiBmb290ZXIn
IjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVs
ZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgIm5vbmUi
KQorCisgICAgLy8gVGhlIHJvd3MgZG9uJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgY29sdW1u
cy4KKyAgICBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRUZW1wbGF0ZSA9ICInbmF2IGhlYWQnICdm
b290JyI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHls
ZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUnKSIsICJu
b25lIikKKworICAgIC8vIEVtcHR5IHJvd3MuCisgICAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlk
VGVtcGxhdGUgPSAiJycgJyciOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRl
bXBsYXRlJykiLCAibm9uZSIpCisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkZJWE1FOiBX
ZSBjdXJyZW50bHkgZG9uJ3QgdmFsaWRhdGUgdGhhdCB0aGUgbmFtZWQgZ3JpZCBhcmVhcyBhcmUg
Jmx0O2luZGVudCZndDsuIik7CisgICAgLy8gPGlkZW50PiBvbmx5IGFsbG93cyBhIGxlYWRpbmcg
Jy0nLgorICAgIGVsZW1lbnQuc3R5bGUud2Via2l0R3JpZFRlbXBsYXRlID0gIiduYXYtdXAnIjsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1l
bnQpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZScpIiwgIm5vbmUiKQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="236161"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>