<?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>202826</bug_id>
          
          <creation_ts>2019-10-10 14:38:33 -0700</creation_ts>
          <short_desc>Outsets for referenced SVG filters are always zero</short_desc>
          <delta_ts>2019-10-25 09:41:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=136418</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>repstein</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1578863</commentid>
    <comment_count>0</comment_count>
      <attachid>380688</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-10 14:38:33 -0700</bug_when>
    <thetext>Created attachment 380688
test case

Open the attached test case.

Result: A blurred green rectangle.
Expected: A solid green rectangle.

In the test case, there is an 800x800 &lt;div&gt; element filled with &quot;background-color: green;&quot;. An SVG filter applied to this &lt;div&gt; with the effect: &quot;&lt;fegaussianblur stdDeviation=&quot;100&quot;&gt;&quot;. This filtered element is transformed by: &quot;translate(-300px, -300px)&quot; and it is placed inside another container 100x100 &lt;div&gt; whose &quot;overflow: hidden;&quot;. So the container element shows only the rectangle { location = { 300, 300 }, size = { 100, 100 } } of the filtered element. This means none of the filter blurred pixels should be shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578884</commentid>
    <comment_count>1</comment_count>
      <attachid>380693</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-10 15:26:30 -0700</bug_when>
    <thetext>Created attachment 380693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578888</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-10 15:28:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/55791120&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579142</commentid>
    <comment_count>3</comment_count>
      <attachid>380761</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-11 10:31:04 -0700</bug_when>
    <thetext>Created attachment 380761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579147</commentid>
    <comment_count>4</comment_count>
      <attachid>380763</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-11 10:44:18 -0700</bug_when>
    <thetext>Created attachment 380763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579180</commentid>
    <comment_count>5</comment_count>
      <attachid>380763</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-11 11:53:32 -0700</bug_when>
    <thetext>Comment on attachment 380763
Patch

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

&gt; Source/WebCore/rendering/CSSFilter.cpp:-380
&gt; -        rectForRepaint.move(-m_outsets.right(), -m_outsets.bottom());

I think the old calculation is wrong. I could not understand what &quot;going backwards&quot; means here and how this is translated to offsetting the rectangle by (-right, -bottom) instead of (-left, -top).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579879</commentid>
    <comment_count>6</comment_count>
      <attachid>380929</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-14 15:58:33 -0700</bug_when>
    <thetext>Created attachment 380929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579948</commentid>
    <comment_count>7</comment_count>
      <attachid>380929</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 19:00:44 -0700</bug_when>
    <thetext>Comment on attachment 380929
Patch

Clearing flags on attachment: 380929

Committed r251119: &lt;https://trac.webkit.org/changeset/251119&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579949</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 19:00:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580272</commentid>
    <comment_count>9</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-15 14:35:38 -0700</bug_when>
    <thetext>The new test css3/filters/svg-blur-filter-clipped.html added in https://trac.webkit.org/changeset/251119/webkit

is failing on iOS

History:
https://results.webkit.org/?suite=layout-tests&amp;test=css3%2Ffilters%2Fsvg-blur-filter-clipped.html

Diff:
https://build.webkit.org/results/Apple%20iOS%2013%20Simulator%20Release%20WK2%20(Tests)/r251149%20(545)/css3/filters/svg-blur-filter-clipped-diffs.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580275</commentid>
    <comment_count>10</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-15 14:43:38 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #9)
&gt; The new test css3/filters/svg-blur-filter-clipped.html added in
&gt; https://trac.webkit.org/changeset/251119/webkit
&gt; 
&gt; is failing on iOS
&gt; 
&gt; History:
&gt; https://results.webkit.org/?suite=layout-tests&amp;test=css3%2Ffilters%2Fsvg-
&gt; blur-filter-clipped.html
&gt; 
&gt; Diff:
&gt; https://build.webkit.org/results/
&gt; Apple%20iOS%2013%20Simulator%20Release%20WK2%20(Tests)/r251149%20(545)/css3/
&gt; filters/svg-blur-filter-clipped-diffs.html

But it was skipped in LayoutTests/platform/iOS/TestExpectations in the r251119. So how can it fail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580562</commentid>
    <comment_count>11</comment_count>
    <who name="Russell Epstein">repstein</who>
    <bug_when>2019-10-16 10:10:20 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #10)
&gt; (In reply to Truitt Savell from comment #9)
&gt; &gt; The new test css3/filters/svg-blur-filter-clipped.html added in
&gt; &gt; https://trac.webkit.org/changeset/251119/webkit
&gt; &gt; 
&gt; &gt; is failing on iOS
&gt; &gt; 
&gt; &gt; History:
&gt; &gt; https://results.webkit.org/?suite=layout-tests&amp;test=css3%2Ffilters%2Fsvg-
&gt; &gt; blur-filter-clipped.html
&gt; &gt; 
&gt; &gt; Diff:
&gt; &gt; https://build.webkit.org/results/
&gt; &gt; Apple%20iOS%2013%20Simulator%20Release%20WK2%20(Tests)/r251149%20(545)/css3/
&gt; &gt; filters/svg-blur-filter-clipped-diffs.html
&gt; 
&gt; But it was skipped in LayoutTests/platform/iOS/TestExpectations in the
&gt; r251119. So how can it fail?

The test expectation was defined as &quot;Failure&quot; which means it is expecting a TEXT failure. Since this test produces an image, the expectation needs to be &quot;ImageOnlyFailure&quot;.

I&apos;ve corrected the TestExpectation in r251189.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583866</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-25 09:41:46 -0700</bug_when>
    <thetext>*** Bug 166739 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>380688</attachid>
            <date>2019-10-10 14:38:33 -0700</date>
            <delta_ts>2019-10-10 14:38:33 -0700</delta_ts>
            <desc>test case</desc>
            <filename>svg-blur-filter-clipped.html</filename>
            <type>text/html</type>
            <size>581</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN0eWxlPgogICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMHB4OwogICAgICAgIGhl
aWdodDogMTAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CiAgICB9CiAgICAuYm94IHsKICAgICAgICB3aWR0aDogODAwcHg7CiAgICAg
ICAgaGVpZ2h0OiA4MDBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgIH0K
ICAgIC5nYXVzc2lhbi1ibHVyIHsKICAgICAgICBmaWx0ZXI6IHVybCgjZ2F1c3NpYW4tYmx1cik7
CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwMHB4LCAtMzAwcHgpOwogICAgfQo8L3N0
eWxlPgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFz
cz0iYm94IGdhdXNzaWFuLWJsdXIiPjwvZGl2PgogICAgPC9kaXY+CiAgICA8c3ZnIGhlaWdodD0i
MCI+CiAgICAgICAgPGZpbHRlciBpZD0iZ2F1c3NpYW4tYmx1ciI+CiAgICAgICAgICAgIDxmZWdh
dXNzaWFuYmx1ciBzdGREZXZpYXRpb249IjEwMCI+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L3N2
Zz4KPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380693</attachid>
            <date>2019-10-10 15:26:30 -0700</date>
            <delta_ts>2019-10-11 10:31:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202826-20191010152629.patch</filename>
            <type>text/plain</type>
            <size>21790</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE5LTEwLTEwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0c2V0cyBm
b3IgcmVmZXJlbmNlZCBTVkcgZmlsdGVycyBhcmUgYWx3YXlzIHplcm8KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjgyNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV0aW1lcyB0aGUgZmlsdGVyIGlz
IGFwcGxpZWQgdG8gb25seSBhIHBhcnQgb2YgdGhlIGltYWdlLCBzbyB3ZSBuZWVkCisgICAgICAg
IHRvIGVubGFyZ2UgdGhlIHNvdXJjZSByZWN0YW5nbGUgc3VjaCB0aGF0IHRoZSByZXN1bHQgaW1h
Z2UgbG9va3MgbGlrZQorICAgICAgICBhcyBpZiB0aGUgZmlsdGVyIHdlcmUgYXBwbGllZCB0byB0
aGUgd2hvbGUgaW1hZ2UuCisKKyAgICAgICAgVGhpcyBpcyBjYWxsZWQgdGhlIEZpbHRlck91dHNl
dHMgYW5kIHRoZXkgYXJlIGNhbGN1bGF0ZWQgb25seSBmb3IgR2F1c3NpYW4KKyAgICAgICAgYmx1
ciBvciBEcm9wIFNoYWRvdyBmaWx0ZXJzLiBUaGUgcHJvYmxlbSBpcyBGaWx0ZXJPcGVyYXRpb25z
OjpvdXRzZXRzKCkKKyAgICAgICAgd2FzIGlnbm9yaW5nIHRoZSByZWZlcmVuY2VkIGZpbHRlcnMg
YW5kIHdhcyByZXR1cm5pbmcgZW1wdHkgRmlsdGVyT3V0c2V0cy4KKworICAgICAgICBUaGUgZml4
IGlzIHRvIHJlbHkgb24gQ1NTRmlsdGVyIGluIGNhbGN1bGF0aW5nIHRoZSBGaWx0ZXJPdXRzZXRz
IGFmdGVyIAorICAgICAgICBidWlsZGluZyBpdHMgRmlsdGVyRWZmZWN0IGxpc3QuIEJ5IGFkZGlu
ZyBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIAorICAgICAgICBvdXRzZXQoKSB0byB0aGUgRmls
dGVyRWZmZWN0LCB3ZSBjYW4gbG9vcCB0aHJvdWdoIHRoZSBDU1NGaWx0ZXI6Om1fZWZmZWN0cwor
ICAgICAgICBhc2tpbmcgZXZlcnkgRmlsdGVyRWZmZWN0IHRvIHJldHVybiBpdHMgb3V0c2V0KCku
IFRoaXMgZnVuY3Rpb24gaXMgb25seQorICAgICAgICBvdmVycmlkZGVuIGJ5IEZFRHJvcFNoYWRv
dyBhbmQgRkVHYXVzc2lhbkJsdXIuCisKKyAgICAgICAgV2UgY2FuIGRlbGV0ZSBGaWx0ZXJPcGVy
YXRpb25zOjpvdXRzZXRzKCkgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgYnkgdGhlCisgICAgICAg
IFJlbmRlckxheWVyIHRocm91Z2ggaXRzIHJlbmRlcmVyKCkuc3R5bGUoKS5maWx0ZXIoKS4gV2Ug
Y2FuIG5vdyBnZXQgdGhlIAorICAgICAgICBGaWx0ZXJPdXRzZXRzIHRocm91Z2ggUmVuZGVyTGF5
ZXIgQ1NTRmlsdGVyIG1fZmlsdGVycy0+ZmlsdGVyKCkuIFNpbmNlCisgICAgICAgIFJlbmRlckxh
eWVyIGJ1aWxkcyB0aGUgQ1NTRmlsdGVyIHdoZW4gUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZCgp
IGhhcHBlbnMKKyAgICAgICAgdGhyb3VnaCBpdHMgUmVuZGVyTGF5ZXI6OnVwZGF0ZUZpbHRlclBh
aW50aW5nU3RyYXRlZ3koKSwgdGhpcyBzaG91bGQKKyAgICAgICAgZ3VhcmFudGVlIHRoYXQgbV9m
aWx0ZXJzLT5maWx0ZXIoKS0+b3V0c2V0cygpIHdpbGwgcmV0dXJuIHRoZSBzYW1lIHZhbHVlCisg
ICAgICAgIGFzIHJlbmRlcigpLT5zdHlsZSgpLmZpbHRlcigpLm91dHNldHMoKS4KKworICAgICAg
ICBUZXN0OiBjc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbAorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5oOgorICAgICAgICBJbnRSZWN0
RXh0ZW50IGlzIG9ubHkgdXNlZCBhcyBGaWx0ZXJPdXRzZXRzLiBTbyBhZGQgdGhlIGRlZmluaXRp
b24gb2YKKyAgICAgICAgRmlsdGVyT3V0c2V0cyBpbiBJbnRSZWN0RXh0ZW50LmguCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRURyb3BTaGFkb3c6Om91dHNldHMgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUdhdXNzaWFuQmx1cjo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
Om91dHNldHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvdXRzZXRTaXplRm9yQmx1cik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpoYXNPdXRzZXRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om91
dHNldHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9ucy5oOgorCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmJ1aWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHNldHMgY29uc3QpOgorICAgICAgICBDYWxjdWxh
dGUgbV9vdXRzZXRzIG9uY2UgYW5kIGNhY2hlIGl0cyB2YWx1ZSBmb3IgbGF0ZXIgdXNlcy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEZpbHRlckJh
Y2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6Omhhc0FuY2VzdG9yV2l0aEZpbHRlck91dHNldHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dHJhbnNwYXJlbmN5Q2xpcEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpoYXNGaWx0ZXJPdXRzZXRzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpmaWx0ZXJPdXRzZXRzIGNvbnN0KTogRGVs
ZXRlZC4KKwogMjAxOS0xMC0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYV0gZm9udC1mYW1pbHk6c3lzdGVtLXVpIG9uIENoaW5lc2Ug
c3lzdGVtcyBkb24ndCBnZXQgQ2hpbmVzZSBxdW90ZSBtYXJrcwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaAkocmV2aXNpb24gMjUw
OTIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICAgICAgcmVjdC5l
eHBhbmQobGVmdCgpICsgcmlnaHQoKSwgdG9wKCkgKyBib3R0b20oKSk7CiAgICAgfQogCi1wcml2
YXRlOgogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIWxlZnQoKSAmJiAhcmlnaHQo
KSAmJiAhdG9wKCkgJiYgIWJvdHRvbSgpOyB9CiAKK3ByaXZhdGU6CiAgICAgaW50IG1fdG9wOwog
ICAgIGludCBtX3JpZ2h0OwogICAgIGludCBtX2JvdHRvbTsKQEAgLTEwMyw2ICsxMDMsOCBAQCBp
bmxpbmUgdm9pZCBvcGVyYXRvcis9KEludFJlY3RFeHRlbnQmIGEsCiAgICAgYS5zZXRMZWZ0KGEu
bGVmdCgpICsgYi5sZWZ0KCkpOwogfQogCit1c2luZyBGaWx0ZXJPdXRzZXRzID0gSW50UmVjdEV4
dGVudDsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW50UmVjdEV4dGVu
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCShyZXZpc2lvbiAyNTA5MjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNSw2ICsxMTUsMTcgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZQogICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVy
KCpzb3VyY2VJbWFnZSwgZHJhd2luZ1JlZ2lvbik7CiB9CiAKK0ZpbHRlck91dHNldHMgRkVEcm9w
U2hhZG93OjpvdXRzZXRzKCkgY29uc3QKK3sKKyAgICBJbnRTaXplIG91dHNldFNpemUgPSBGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZSh7IG1fc3RkWCwgbV9zdGRZIH0pOworICAg
IHJldHVybiB7CisgICAgICAgIHN0ZDo6bWF4PGludD4oMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSAt
IG1fZHkpLAorICAgICAgICBzdGQ6Om1heDxpbnQ+KDAsIG91dHNldFNpemUud2lkdGgoKSArIG1f
ZHgpLAorICAgICAgICBzdGQ6Om1heDxpbnQ+KDAsIG91dHNldFNpemUuaGVpZ2h0KCkgKyBtX2R5
KSwKKyAgICAgICAgc3RkOjptYXg8aW50PigwLCBvdXRzZXRTaXplLndpZHRoKCkgLSBtX2R4KQor
ICAgIH07Cit9CisKIFRleHRTdHJlYW0mIEZFRHJvcFNoYWRvdzo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBj
b25zdAogewogICAgIHRzIDw8IGluZGVudCA8PCJbZmVEcm9wU2hhZG93IjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuaAkocmV2aXNpb24gMjUwOTIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92
ZXJyaWRlOwogCisgICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CisK
ICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3Ry
ZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1f
c3RkWDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVH
YXVzc2lhbkJsdXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCShyZXZpc2lvbiAyNTA5MjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDg3LDYgKzQ4NywxNCBAQCBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVLZXJuZWxTCiAgICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVs
U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHN0ZERldmlhdGlvbikpOwogfQog
CitJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRTaXplKEZsb2F0U2l6ZSBz
dGREZXZpYXRpb24pCit7CisgICAgYXV0byBrZXJuZWxTaXplID0gY2FsY3VsYXRlVW5zY2FsZWRL
ZXJuZWxTaXplKHN0ZERldmlhdGlvbik7CisKKyAgICAvLyBXZSB0YWtlIHRoZSBoYWxmIGtlcm5l
bCBzaXplIGFuZCBtdWx0aXBseSBpdCB3aXRoIHRocmVlLCBiZWNhdXNlIHdlIHJ1biBib3ggYmx1
ciB0aHJlZSB0aW1lcy4KKyAgICByZXR1cm4geyAzICoga2VybmVsU2l6ZS53aWR0aCgpIC8gMiwg
MyAqIGtlcm5lbFNpemUuaGVpZ2h0KCkgLyAyIH07Cit9CisKIHZvaWQgRkVHYXVzc2lhbkJsdXI6
OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBJbnRTaXplIGtlcm5lbFNpemUg
PSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAt
NTM4LDYgKzU0NiwxMiBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
CiAgICAgcGxhdGZvcm1BcHBseSgqcmVzdWx0UGl4ZWxBcnJheSwgKnRtcEltYWdlRGF0YSwga2Vy
bmVsU2l6ZS53aWR0aCgpLCBrZXJuZWxTaXplLmhlaWdodCgpLCBwYWludFNpemUpOwogfQogCitG
aWx0ZXJPdXRzZXRzIEZFR2F1c3NpYW5CbHVyOjpvdXRzZXRzKCkgY29uc3QKK3sKKyAgICBJbnRT
aXplIG91dHNldFNpemUgPSBjYWxjdWxhdGVPdXRzZXRTaXplKHsgbV9zdGRYLCBtX3N0ZFkgfSk7
CisgICAgcmV0dXJuIHsgb3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0U2l6ZS53aWR0aCgpLCBv
dXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCkgfTsKK30KKwogVGV4dFN0cmVh
bSYgRkVHYXVzc2lhbkJsdXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMs
IFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNlbnRhdGlvbikgY29uc3QKIHsKICAgICB0cyA8PCBp
bmRlbnQgPDwgIltmZUdhdXNzaWFuQmx1ciI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCShyZXZp
c2lvbiAyNTA5MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0ZXIm
LCBGbG9hdFNpemUgc3RkRGV2aWF0aW9uKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVV
bnNjYWxlZEtlcm5lbFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbik7CisgICAgc3RhdGljIElu
dFNpemUgY2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKTsKIAogcHJp
dmF0ZToKICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXImLCBmbG9hdCwgZmxvYXQsIEVkZ2VNb2Rl
VHlwZSk7CkBAIC02Nyw2ICs2OCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKKyAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMo
KSBjb25zdCBvdmVycmlkZTsKKwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBseVdvcmtlcihQbGF0Zm9ybUFwcGx5
UGFyYW1ldGVycyopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAyNTA5MjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJJ
bnRSZWN0RXh0ZW50LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0xMDMsNiArMTA0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBGaWx0ZXJF
ZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5cGUoKSBjb25zdCB7IHJldHVybiBGaWx0ZXJFZmZlY3RU
eXBlVW5rbm93bjsgfQogCisgICAgdmlydHVhbCBGaWx0ZXJPdXRzZXRzIG91dHNldHMoKSBjb25z
dCB7IHJldHVybiBGaWx0ZXJPdXRzZXRzKCk7IH0KKwogICAgIGVudW0gY2xhc3MgUmVwcmVzZW50
YXRpb25UeXBlIHsgVGVzdE91dHB1dCwgRGVidWdnaW5nIH07CiAgICAgdmlydHVhbCBXVEY6OlRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVz
ZW50YXRpb25UeXBlID0gUmVwcmVzZW50YXRpb25UeXBlOjpUZXN0T3V0cHV0KSBjb25zdDsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNTA5MjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBpbmxpbmUgSW50U2l6ZSBvdXRzZXRTaXplRm9yQmx1cihmbG9hdCBzdGREZXZp
YXRpb24pCi17Ci0gICAgYXV0byBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0
ZVVuc2NhbGVkS2VybmVsU2l6ZSh7IHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uIH0pOwotCi0g
ICAgLy8gV2UgdGFrZSB0aGUgaGFsZiBrZXJuZWwgc2l6ZSBhbmQgbXVsdGlwbHkgaXQgd2l0aCB0
aHJlZSwgYmVjYXVzZSB3ZSBydW4gYm94IGJsdXIgdGhyZWUgdGltZXMuCi0gICAgcmV0dXJuIHsK
LSAgICAgICAgMyAqIGtlcm5lbFNpemUud2lkdGgoKSAvIDIsCi0gICAgICAgIDMgKiBrZXJuZWxT
aXplLmhlaWdodCgpIC8gMgotICAgIH07Ci19Ci0KIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6b3Bl
cmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikgY29uc3QKIHsKICAgICBzaXpl
X3Qgc2l6ZSA9IG1fb3BlcmF0aW9ucy5zaXplKCk7CkBAIC03OCw0OCArNjcsNiBAQCBib29sIEZp
bHRlck9wZXJhdGlvbnM6Omhhc1JlZmVyZW5jZUZpbHRlCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMoKSBjb25zdAotewotICAgIGZvciAo
YXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7Ci0gICAgICAgIGF1dG8gdHlwZSA9IG9w
ZXJhdGlvbi0+dHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBGaWx0ZXJPcGVyYXRpb246OkJM
VVIgfHwgdHlwZSA9PSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotRmlsdGVyT3V0c2V0
cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKLXsKLSAgICBGaWx0ZXJPdXRzZXRz
IHRvdGFsT3V0c2V0czsKLSAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1fb3BlcmF0aW9ucykg
ewotICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbi0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAgICAgICAgICBhdXRvJiBibHVyT3BlcmF0aW9uID0g
ZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbik7Ci0gICAgICAgICAgICBm
bG9hdCBzdGREZXZpYXRpb24gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJPcGVyYXRpb24uc3Rk
RGV2aWF0aW9uKCksIDApOwotICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0
U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsKLSAgICAgICAgICAgIEZpbHRlck91dHNldHMgb3V0
c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCksIG91dHNldFNpemUu
aGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7Ci0gICAgICAgICAgICB0b3RhbE91dHNldHMg
Kz0gb3V0c2V0czsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgYXV0byYgZHJvcFNo
YWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24+KCpvcGVy
YXRpb24pOwotICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0U2l6ZUZvckJs
dXIoZHJvcFNoYWRvd09wZXJhdGlvbi5zdGREZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICBGaWx0
ZXJPdXRzZXRzIG91dHNldHMgewotICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNp
emUuaGVpZ2h0KCkgLSBkcm9wU2hhZG93T3BlcmF0aW9uLnkoKSksCi0gICAgICAgICAgICAgICAg
c3RkOjptYXgoMCwgb3V0c2V0U2l6ZS53aWR0aCgpICsgZHJvcFNoYWRvd09wZXJhdGlvbi54KCkp
LAotICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUuaGVpZ2h0KCkgKyBkcm9w
U2hhZG93T3BlcmF0aW9uLnkoKSksCi0gICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0
U2l6ZS53aWR0aCgpIC0gZHJvcFNoYWRvd09wZXJhdGlvbi54KCkpCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHRvdGFsT3V0c2V0czsKLX0KLQogYm9vbCBGaWx0ZXJPcGVy
YXRpb25zOjp0cmFuc2Zvcm1Db2xvcihDb2xvciYgY29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKGlz
RW1wdHkoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgJ
KHJldmlzaW9uIDI1MDkyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgRmlsdGVyT3V0c2V0cyA9IEludFJlY3RF
eHRlbnQ7Ci0KIGNsYXNzIEZpbHRlck9wZXJhdGlvbnMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtNTEsOSArNDksNiBAQCBwdWJsaWM6CiAKICAgICBib29sIG9w
ZXJhdGlvbnNNYXRjaChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CiAKLSAgICBib29s
IGhhc091dHNldHMoKSBjb25zdDsKLSAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMoKSBjb25zdDsK
LQogICAgIGJvb2wgaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdDsKICAgICBib29sIGhhc0ZpbHRlclRo
YXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjUwOTIzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MywxMCArMTMzLDkgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbgog
ewogICAgIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJU
aGF0TW92ZXNQaXhlbHMoKTsKICAgICBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRC
eVNlY3VyaXR5T3JpZ2luID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmlj
dGVkQnlTZWN1cml0eU9yaWdpbigpOwotICAgIGlmIChtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVs
cykKLSAgICAgICAgbV9vdXRzZXRzID0gb3BlcmF0aW9ucy5vdXRzZXRzKCk7CiAKICAgICBtX2Vm
ZmVjdHMuY2xlYXIoKTsKKyAgICBtX291dHNldHMgPSB7IH07CiAKICAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBwcmV2aW91c0VmZmVjdCA9IG1fc291cmNlR3JhcGhpYy5wdHIoKTsKICAgICBmb3Ig
KGF1dG8mIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CkBAIC0zNzcsOCAr
Mzc2LDkgQEAgTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZQogICAgIGlm
IChoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkgewogICAgICAgICAvLyBOb3RlIHRoYXQgdGhl
IG91dHNldHMgYXJlIHJldmVyc2VkIGhlcmUgYmVjYXVzZSB3ZSBhcmUgZ29pbmcgYmFja3dhcmRz
IC0+IHdlIGhhdmUgdGhlIGRpcnR5IHJlY3QgYW5kCiAgICAgICAgIC8vIG5lZWQgdG8gZmluZCBv
dXQgd2hhdCBpcyB0aGUgcmVjdGFuZ2xlIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSByZXN1bHQg
aW5zaWRlIHRoYXQgZGlydHkgcmVjdC4KLSAgICAgICAgcmVjdEZvclJlcGFpbnQubW92ZSgtbV9v
dXRzZXRzLnJpZ2h0KCksIC1tX291dHNldHMuYm90dG9tKCkpOwotICAgICAgICByZWN0Rm9yUmVw
YWludC5leHBhbmQobV9vdXRzZXRzLmxlZnQoKSArIG1fb3V0c2V0cy5yaWdodCgpLCBtX291dHNl
dHMudG9wKCkgKyBtX291dHNldHMuYm90dG9tKCkpOworICAgICAgICBhdXRvIG91dHNldHMgPSB0
aGlzLT5vdXRzZXRzKCk7CisgICAgICAgIHJlY3RGb3JSZXBhaW50Lm1vdmUoLW91dHNldHMucmln
aHQoKSwgLW91dHNldHMuYm90dG9tKCkpOworICAgICAgICByZWN0Rm9yUmVwYWludC5leHBhbmQo
b3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMudG9wKCkgKyBvdXRzZXRz
LmJvdHRvbSgpKTsKICAgICB9CiAgICAgcmVjdEZvclJlcGFpbnQuaW50ZXJzZWN0KGZpbHRlckJv
eFJlY3QpOwogICAgIHJldHVybiByZWN0Rm9yUmVwYWludDsKQEAgLTM5Nyw3ICszOTcsNiBAQCB2
b2lkIENTU0ZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0CiAgICAgbV9ncmFwaGljc0J1
ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKLQogdm9pZCBDU1NGaWx0ZXI6OnNldE1heEVmZmVj
dFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKIHsKICAgICBmb3IgKGF1dG8mIGVm
ZmVjdCA6IG1fZWZmZWN0cykKQEAgLTQxMiw0ICs0MTEsMTcgQEAgSW50UmVjdCBDU1NGaWx0ZXI6
Om91dHB1dFJlY3QoKSBjb25zdAogICAgIHJldHVybiBsYXN0RWZmZWN0LnJlcXVlc3RlZFJlZ2lv
bk9mSW5wdXRJbWFnZURhdGEoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOwogfQogCitGaWx0
ZXJPdXRzZXRzIENTU0ZpbHRlcjo6b3V0c2V0cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0Zp
bHRlclRoYXRNb3Zlc1BpeGVscykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghbV9v
dXRzZXRzLmlzWmVybygpKQorICAgICAgICByZXR1cm4gbV9vdXRzZXRzOworCisgICAgZm9yIChh
dXRvJiBlZmZlY3QgOiBtX2VmZmVjdHMpCisgICAgICAgIG1fb3V0c2V0cyArPSBlZmZlY3QtPm91
dHNldHMoKTsKKyAgICByZXR1cm4gbV9vdXRzZXRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCShyZXZpc2lvbiAyNTA5
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRmlsdGVyVGhhdFNob3Vs
ZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2hhc0ZpbHRl
clRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luOyB9CiAKICAgICB2b2lkIGRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOworICAgIEZpbHRlck91dHNldHMgb3V0
c2V0cygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU0ZpbHRlcigpOwpAQCAtOTMsNyArOTQs
NyBAQCBwcml2YXRlOgogICAgIFJlZjxTb3VyY2VHcmFwaGljPiBtX3NvdXJjZUdyYXBoaWM7CiAg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9zb3VyY2VBbHBoYTsKIAotICAgIEludFJlY3RFeHRl
bnQgbV9vdXRzZXRzOworICAgIG11dGFibGUgRmlsdGVyT3V0c2V0cyBtX291dHNldHM7CiAKICAg
ICBib29sIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hh
c0ZpbHRlclRoYXRNb3Zlc1BpeGVscyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDI1MDkyMykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjksNyAr
MTkyOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1IKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIExheW91dFJlY3QgcmVjdEZvclJlcGFpbnQgPSByZWN0Owot
ICAgIHJlbmRlcmVyKCkuc3R5bGUoKS5maWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChyZWN0Rm9y
UmVwYWludCk7CisgICAgZmlsdGVyT3V0c2V0cygpLmV4cGFuZFJlY3QocmVjdEZvclJlcGFpbnQp
OwogCiAgICAgbV9maWx0ZXJzLT5leHBhbmREaXJ0eVNvdXJjZVJlY3QocmVjdEZvclJlcGFpbnQp
OwogICAgIApAQCAtMTk2NCw3ICsxOTY0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0RmlsdGVy
QmFja2VuZE5lZWRzUgogYm9vbCBSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0
c2V0cygpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBSZW5kZXJMYXllciogY3VyciA9IHRoaXM7
IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAoY3Vyci0+cmVuZGVy
ZXIoKS5zdHlsZSgpLmhhc0ZpbHRlck91dHNldHMoKSkKKyAgICAgICAgaWYgKGN1cnItPmhhc0Zp
bHRlck91dHNldHMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yMDg3LDcgKzIwODcsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCB0cmFuc3Bh
cmVuY3lDbGlwQm94KGNvCiAgICAgICAgIC8vIHBhaW50cyB1bmZyYWdtZW50ZWQuCiAgICAgICAg
IExheW91dFJlY3QgY2xpcFJlY3QgPSBsYXllci5ib3VuZGluZ0JveCgmbGF5ZXIpOwogICAgICAg
ICBleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbihjbGlwUmVjdCwgbGF5
ZXIsICZsYXllciwgdHJhbnNwYXJlbmN5QmVoYXZpb3IsIHBhaW50QmVoYXZpb3IpOwotICAgICAg
ICBsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVyT3V0c2V0cygpLmV4cGFuZFJlY3QoY2xp
cFJlY3QpOworICAgICAgICBsYXllci5maWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChjbGlwUmVj
dCk7CiAgICAgICAgIExheW91dFJlY3QgcmVzdWx0ID0gdHJhbnNmb3JtLm1hcFJlY3QoY2xpcFJl
Y3QpOwogICAgICAgICBpZiAoIXBhZ2luYXRpb25MYXllcikKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0yMTAzLDcgKzIxMDMsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCB0cmFuc3BhcmVu
Y3lDbGlwQm94KGNvCiAgICAgCiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGxheWVyLmJvdW5k
aW5nQm94KHJvb3RMYXllciwgbGF5ZXIub2Zmc2V0RnJvbUFuY2VzdG9yKHJvb3RMYXllciksIHRy
YW5zcGFyZW5jeUJlaGF2aW9yID09IEhpdFRlc3RpbmdUcmFuc3BhcmVuY3lDbGlwQm94ID8gUmVu
ZGVyTGF5ZXI6OlVzZUZyYWdtZW50Qm94ZXNJbmNsdWRpbmdDb21wb3NpdGluZyA6IFJlbmRlckxh
eWVyOjpVc2VGcmFnbWVudEJveGVzRXhjbHVkaW5nQ29tcG9zaXRpbmcpOwogICAgIGV4cGFuZENs
aXBSZWN0Rm9yRGVzY2VuZGFudHNBbmRSZWZsZWN0aW9uKGNsaXBSZWN0LCBsYXllciwgcm9vdExh
eWVyLCB0cmFuc3BhcmVuY3lCZWhhdmlvciwgcGFpbnRCZWhhdmlvcik7Ci0gICAgbGF5ZXIucmVu
ZGVyZXIoKS5zdHlsZSgpLmZpbHRlck91dHNldHMoKS5leHBhbmRSZWN0KGNsaXBSZWN0KTsKKyAg
ICBsYXllci5maWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChjbGlwUmVjdCk7CiAKICAgICByZXR1
cm4gY2xpcFJlY3Q7CiB9CkBAIC02MTE0LDcgKzYxMTQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxh
eWVyOjpjYWxjdWxhdGVMYXllckJvCiAgICAgICAgIGNvbXB1dGVMYXllcnNVbmlvbigqY2hpbGRM
YXllcik7CiAKICAgICBpZiAoZmxhZ3MuY29udGFpbnMoSW5jbHVkZUZpbHRlck91dHNldHMpIHx8
IChmbGFncy5jb250YWlucyhJbmNsdWRlUGFpbnRlZEZpbHRlck91dHNldHMpICYmIHBhaW50c1dp
dGhGaWx0ZXJzKCkpKQotICAgICAgICByZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVyT3V0c2V0cygp
LmV4cGFuZFJlY3QodW5pb25Cb3VuZHMpOworICAgICAgICBmaWx0ZXJPdXRzZXRzKCkuZXhwYW5k
UmVjdCh1bmlvbkJvdW5kcyk7CiAKICAgICBpZiAoKGZsYWdzICYgSW5jbHVkZVNlbGZUcmFuc2Zv
cm0pICYmIHBhaW50c1dpdGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvcjo6Tm9ybWFsKSkgewogICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCogYWZmaW5lVHJhbnMgPSB0cmFuc2Zvcm0oKTsKQEAg
LTY4MzcsNiArNjgzNywxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpmaWx0ZXJOZWVkc1JlcGFpbnQo
KQogICAgIHJlbmRlcmVyKCkucmVwYWludCgpOwogfQogCitGaWx0ZXJPdXRzZXRzIFJlbmRlckxh
eWVyOjpmaWx0ZXJPdXRzZXRzKCkgY29uc3QKK3sKKyAgICBpZiAobV9maWx0ZXJzICYmIG1fZmls
dGVycy0+ZmlsdGVyKCkpCisgICAgICAgIHJldHVybiBtX2ZpbHRlcnMtPmZpbHRlcigpLT5vdXRz
ZXRzKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogYm9vbCBSZW5kZXJMYXllcjo6aXNUcmFuc3Bh
cmVudFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgbWluaW11bVZpc2libGVPcGFjaXR5ID0gMC4wMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiAyNTA5MjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzkwLDYgKzc5MCw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmlsdGVyTmVlZHNSZXBhaW50KCk7CiAgICAgYm9vbCBo
YXNGaWx0ZXIoKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLmhhc0ZpbHRlcigpOyB9CisgICAg
RmlsdGVyT3V0c2V0cyBmaWx0ZXJPdXRzZXRzKCkgY29uc3Q7CisgICAgYm9vbCBoYXNGaWx0ZXJP
dXRzZXRzKCkgY29uc3QgeyByZXR1cm4gIWZpbHRlck91dHNldHMoKS5pc1plcm8oKTsgfQogICAg
IGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXIoKSBjb25zdAogICAgIHsKICNpZiBFTkFCTEUoRklMVEVS
U19MRVZFTF8yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgJKHJldmlzaW9uIDI1MDkyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksOSArMjI5LDYgQEAgcHVi
bGljOgogCiAgICAgTGF5b3V0Qm94RXh0ZW50IG1hc2tCb3hJbWFnZU91dHNldHMoKSBjb25zdCB7
IHJldHVybiBpbWFnZU91dHNldHMobWFza0JveEltYWdlKCkpOyB9CiAKLSAgICBib29sIGhhc0Zp
bHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSAmJiBmaWx0ZXIoKS5oYXNP
dXRzZXRzKCk7IH0KLSAgICBGaWx0ZXJPdXRzZXRzIGZpbHRlck91dHNldHMoKSBjb25zdCB7IHJl
dHVybiBoYXNGaWx0ZXIoKSA/IGZpbHRlcigpLm91dHNldHMoKSA6IEZpbHRlck91dHNldHMoKTsg
fQotCiAgICAgT3JkZXIgcnRsT3JkZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxP
cmRlcj4obV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyk7IH0KICAgICB2b2lkIHNldFJUTE9y
ZGVyaW5nKE9yZGVyIG9yZGVyaW5nKSB7IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ob3JkZXJpbmcpOyB9CiAKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
MDkyMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDE5LTEwLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgT3V0c2V0cyBmb3IgcmVmZXJlbmNlZCBTVkcgZmlsdGVycyBhcmUg
YWx3YXlzIHplcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMjgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5o
dG1sOiBBZGRlZC4KKwogMjAxOS0xMC0wOSAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW01TRV1bR1N0cmVhbWVyXSBGaXggdmlkZW8gc29tZXRpbWVz
IG5vdCBhcHBlYXJpbmcKSW5kZXg6IExheW91dFRlc3RzL2NzczMvZmlsdGVycy9zdmctYmx1ci1m
aWx0ZXItY2xpcHBlZC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC1leHBlY3RlZC5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2NzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBl
ZC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxzdHlsZT4K
KyAgICAuY29udGFpbmVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNz
PSJjb250YWluZXIiPjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvY3NzMy9maWx0
ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorPHN0eWxlPgorICAgIC5jb250YWlu
ZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICB9CisgICAgLmJveCB7CisgICAgICAgIHdpZHRoOiA4MDBweDsKKyAgICAgICAgaGVpZ2h0OiA4
MDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorICAgIC5nYXVz
c2lhbi1ibHVyIHsKKyAgICAgICAgZmlsdGVyOiB1cmwoI2dhdXNzaWFuLWJsdXIpOworICAgICAg
ICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzAwcHgsIC0zMDBweCk7CisgICAgfQorPC9zdHlsZT4K
Kzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgY2xhc3M9
ImJveCBnYXVzc2lhbi1ibHVyIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c3ZnIGhlaWdodD0i
MCI+CisgICAgICAgIDxmaWx0ZXIgaWQ9ImdhdXNzaWFuLWJsdXIiPgorICAgICAgICAgICAgPGZl
Z2F1c3NpYW5ibHVyIHN0ZERldmlhdGlvbj0iMTAwIj4KKyAgICAgICAgPC9maWx0ZXI+CisgICAg
PC9zdmc+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380761</attachid>
            <date>2019-10-11 10:31:04 -0700</date>
            <delta_ts>2019-10-11 10:44:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202826-20191011103103.patch</filename>
            <type>text/plain</type>
            <size>26213</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzYzMzViYzY3NzQ1YWZh
MDk4NWM2YmI0YWIxNDVmOTM3M2IxNDExNi4uN2I4ZGMyZjAzMjVlNTIzZDZlNzVkMzkyYzUxNGRj
ZTVlNTg5ZmE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE5LTEwLTExICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0c2V0
cyBmb3IgcmVmZXJlbmNlZCBTVkcgZmlsdGVycyBhcmUgYWx3YXlzIHplcm8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjgyNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV0aW1lcyB0aGUgZmlsdGVy
IGlzIGFwcGxpZWQgb25seSB0byBhIHBhcnQgb2YgdGhlIGltYWdlLCBzbyB3ZSBuZWVkCisgICAg
ICAgIHRvIGVubGFyZ2UgdGhlIHNvdXJjZSByZWN0YW5nbGUgc3VjaCB0aGF0IHRoZSBib3JkZXIg
b2YgdGhlIHJlc3VsdCBpbWFnZQorICAgICAgICBsb29rcyBsaWtlIGFzIGlmIHRoZSBmaWx0ZXIg
d2VyZSBhcHBsaWVkIHRvIHRoZSB3aG9sZSBpbWFnZS4KKworICAgICAgICBUaGUgZmlsdGVyIG91
dHNldHMgc2hvdWxkIG9ubHkgYmUgY2FsY3VsYXRlZCBmb3IgdGhlIGJsdXIgYW5kIHRoZSBkcm9w
CisgICAgICAgIHNoYWRvdyBmaWx0ZXJzLiBUaGUgcHJvYmxlbSBpcyBGaWx0ZXJPcGVyYXRpb25z
OjpvdXRzZXRzKCkgd2FzIHJldHVybmluZworICAgICAgICBlbXB0eSBvdXRzZXRzIGFsd2F5cyBm
b3IgdGhlIHJlZmVyZW5jZWQgZmlsdGVycy4KKworICAgICAgICBTaW5jZSB0aGUgcmVmZXJlbmNl
ZCBmaWx0ZXJzIG11c3QgYmUgc29mdHdhcmUgZmlsdGVycywgdGhlIGZpeCBpcyB0byByZWx5Cisg
ICAgICAgIG9uIENTU0ZpbHRlciBpbiBjYWxjdWxhdGluZyB0aGUgZmlsdGVyIG91dHNldHMgZm9y
IHNvZnR3YXJlIGZpbHRlcnMuCisKKyAgICAgICAgQnkgYWRkaW5nIGEgdmlydHVhbCBmdW5jdGlv
biBjYWxsZWQgb3V0c2V0KCkgdG8gdGhlIEZpbHRlckVmZmVjdCBjbGFzcywgCisgICAgICAgIHdl
IGNhbiBsb29wIHRocm91Z2ggdGhlIENTU0ZpbHRlcjo6bV9lZmZlY3RzIGFza2luZyBldmVyeSBG
aWx0ZXJFZmZlY3QKKyAgICAgICAgdG8gcmV0dXJuIGl0cyBvdXRzZXQoKS4gVGhpcyBmdW5jdGlv
biBpcyBvbmx5IG92ZXJyaWRkZW4gYnkgRkVEcm9wU2hhZG93CisgICAgICAgIGFuZCBGRUdhdXNz
aWFuQmx1ci4KKworICAgICAgICBUaGlzIHNob3VsZCB3b3JrIGJlY2F1c2UgUmVuZGVyTGF5ZXIg
YnVpbGRzIHRoZSBDU1NGaWx0ZXIgd2hlbiB0aGUgc3R5bGVDaGFuZ2VkKCkKKyAgICAgICAgaGFw
cGVucyB0aHJvdWdoIGl0cyB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCkuIFRoaXMgd2ls
bCBndWFyYW50ZWUgCisgICAgICAgIHRoYXQgbV9maWx0ZXJzLT5maWx0ZXIoKS0+b3V0c2V0cygp
IHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IG91dHNldHMgZm9yCisgICAgICAgIHRoZSByZWZlcmVu
Y2VkIGFuZCB0aGUgbm9uLXJlZmVyZW5jZWQgc29mdHdhcmUgZmlsdGVycy4KKworICAgICAgICBX
ZSBzaG91bGQga2VlcCBGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKCkgYmVjYXVzZSBpdCBoYXMg
YmUgdXNlZCBmb3IKKyAgICAgICAgdGhlIGhhcmR3YXJlIG5vbi1yZWZlcmVuY2VkIGZpbHRlcnMu
IEluIHRoYXQgY2FzZSwgUmVuZGVyTGF5ZXIgZG9lcyBub3QKKyAgICAgICAgYnVpbGQgdGhlIHRo
ZSBmaWx0ZXIgZWZmZWN0cy4gVGhlcmVmb3JlIG1fZmlsdGVycyBjYW4ndCBiZSB1c2VkIGJlY2F1
c2UKKyAgICAgICAgaXQgaXMgbnVsbCBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgRm9yIGFjY3Vy
YWN5LCBoYXNPdXRzZXRzKCkgaW1wbGVtZW50YXRpb24gaXMgZGVsZXRlZC4gSGF2aW5nIGEgYmx1
ciBvcgorICAgICAgICBkcm9wIHNoYWRvdyBmaWx0ZXIgZWZmZWN0IGlzIG5vdCBlbm91Z2ggdG8g
c2F5IGhhc091dHNldHMoKSBpcyB0cnVlLiBXZQorICAgICAgICBuZWVkIHRvIGNhbGN1bGF0ZSB0
aGUgb3V0c2V0cyBmaXJzdCBhbmQgdGhlbiBhc2sgaWYgaXQgaXNaZXJvKCkgb3Igbm90LgorCisg
ICAgICAgIFRlc3Q6IGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yKz0pOgorICAg
ICAgICAoV2ViQ29yZTo6SW50UmVjdEV4dGVudDo6ZXhwYW5kUmVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIEludFJlY3RFeHRlbnQgaXMgb25seSB1c2VkIGFzIGEgZmlsdGVyIG91dHNldHMu
IFNvIGFkZCB0aGUgZGVmaW5pdGlvbiBvZgorICAgICAgICBJbnRPdXRzZXRzIGluIEludFJlY3RF
eHRlbnQuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6b3V0c2V0cyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpvdXRzZXRzIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbnM6Om91dHNldHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3V0c2V0
U2l6ZUZvckJsdXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzT3V0c2V0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpoYXNPdXRzZXRzIGNvbnN0KToKKworICAgICAgICAqIHJlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRzZXRzIGNvbnN0KToKKyAgICAgICAg
Q2FsY3VsYXRlIG1fb3V0c2V0cyBvbmNlIGFuZCBjYWNoZSBpdHMgdmFsdWUgZm9yIGxhdGVyIHVz
ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRG
aWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpoYXNBbmNlc3RvcldpdGhGaWx0ZXJPdXRzZXRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnRyYW5zcGFyZW5jeUNsaXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZmlsdGVyT3V0c2V0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzRmlsdGVyT3V0c2V0cyBjb25zdCk6IERlbGV0
ZWQuCisKIDIwMTktMTAtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVXNlIEhBVkUoSU9TVVJGQUNFX1JHQjEwKSBpbnN0ZWFkIG9mIFBMQVRGT1JN
KElPU19GQU1JTFkpIHdoZXJlIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmgKaW5kZXggNjExNzM5MDU0MDIxYjQzMzRiN2Jm
YmY2NDdlM2M2ZDE1OTYzZTk2ZS4uNDNjODMyZTA4OGUwNDI2MjhmMjdiYWUyNDQ5YjQwOGEyMDNh
NjI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dEV4dGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RF
eHRlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMjIgKzI4LDEzIEBACiAgKiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEludFJlY3RFeHRlbnRfaAotI2RlZmluZSBJbnRSZWN0RXh0ZW50X2gKLQot
I2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFJlY3RFeHRlbnQgewogcHVibGljOgotICAgIEludFJlY3RFeHRlbnQo
KQotICAgICAgICA6IG1fdG9wKDApCi0gICAgICAgICwgbV9yaWdodCgwKQotICAgICAgICAsIG1f
Ym90dG9tKDApCi0gICAgICAgICwgbV9sZWZ0KDApCi0gICAgewotICAgIH0KKyAgICBJbnRSZWN0
RXh0ZW50KCkgPSBkZWZhdWx0OwogCiAgICAgSW50UmVjdEV4dGVudChpbnQgdG9wLCBpbnQgcmln
aHQsIGludCBib3R0b20sIGludCBsZWZ0KQogICAgICAgICA6IG1fdG9wKHRvcCkKQEAgLTY0LDMw
ICs1NiwxOCBAQCBwdWJsaWM6CiAgICAgaW50IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnQ7
IH0KICAgICB2b2lkIHNldExlZnQoaW50IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQogCi0gICAg
dm9pZCBleHBhbmRSZWN0KExheW91dFJlY3QmIHJlY3QpIGNvbnN0Ci0gICAgewotICAgICAgICBp
ZiAoaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVjdC5tb3ZlKC1s
ZWZ0KCksIC10b3AoKSk7Ci0gICAgICAgIHJlY3QuZXhwYW5kKGxlZnQoKSArIHJpZ2h0KCksIHRv
cCgpICsgYm90dG9tKCkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBib29sIGlzWmVybygpIGNv
bnN0IHsgcmV0dXJuICFsZWZ0KCkgJiYgIXJpZ2h0KCkgJiYgIXRvcCgpICYmICFib3R0b20oKTsg
fQogCi0gICAgaW50IG1fdG9wOwotICAgIGludCBtX3JpZ2h0OwotICAgIGludCBtX2JvdHRvbTsK
LSAgICBpbnQgbV9sZWZ0OworcHJpdmF0ZToKKyAgICBpbnQgbV90b3AgeyAwIH07CisgICAgaW50
IG1fcmlnaHQgeyAwIH07CisgICAgaW50IG1fYm90dG9tIHsgMCB9OworICAgIGludCBtX2xlZnQg
eyAwIH07CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludFJlY3RFeHRlbnQm
IGEsIGNvbnN0IEludFJlY3RFeHRlbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEudG9wKCkgPT0gYi50
b3AoKQotICAgICAgICAmJiBhLnJpZ2h0KCkgPT0gYi5yaWdodCgpCi0gICAgICAgICYmIGEuYm90
dG9tKCkgPT0gYi5ib3R0b20oKQotICAgICAgICAmJiBhLmxlZnQoKSA9PSBiLmxlZnQoKTsKKyAg
ICByZXR1cm4gYS50b3AoKSA9PSBiLnRvcCgpICYmIGEucmlnaHQoKSA9PSBiLnJpZ2h0KCkgJiYg
YS5ib3R0b20oKSA9PSBiLmJvdHRvbSgpICYmIGEubGVmdCgpID09IGIubGVmdCgpOwogfQogCiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFJlY3RFeHRlbnQmIGEsIGNvbnN0IEludFJl
Y3RFeHRlbnQmIGIpCkBAIC05NSwxNCArNzUsMjMgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJbnRSZWN0RXh0ZW50JiBhLCBjb25zdCBJbnRSZWN0RXh0ZW50JiBiKQogICAgIHJldHVy
biAhKGEgPT0gYik7CiB9CiAKLWlubGluZSB2b2lkIG9wZXJhdG9yKz0oSW50UmVjdEV4dGVudCYg
YSwgY29uc3QgSW50UmVjdEV4dGVudCYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY3RUeXBlPgor
aW5saW5lIFJlY3RUeXBlJiBvcGVyYXRvcis9KFJlY3RUeXBlJiByZWN0LCBjb25zdCBJbnRSZWN0
RXh0ZW50JiBleHRlbnQpCit7CisgICAgcmVjdC5tb3ZlKC1leHRlbnQubGVmdCgpLCAtZXh0ZW50
LnRvcCgpKTsKKyAgICByZWN0LmV4cGFuZChleHRlbnQubGVmdCgpICsgZXh0ZW50LnJpZ2h0KCks
IGV4dGVudC50b3AoKSArIGV4dGVudC5ib3R0b20oKSk7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisK
K2lubGluZSBJbnRSZWN0RXh0ZW50JiBvcGVyYXRvcis9KEludFJlY3RFeHRlbnQmIGEsIGNvbnN0
IEludFJlY3RFeHRlbnQmIGIpCiB7CiAgICAgYS5zZXRUb3AoYS50b3AoKSArIGIudG9wKCkpOwog
ICAgIGEuc2V0UmlnaHQoYS5yaWdodCgpICsgYi5yaWdodCgpKTsKICAgICBhLnNldEJvdHRvbShh
LmJvdHRvbSgpICsgYi5ib3R0b20oKSk7CiAgICAgYS5zZXRMZWZ0KGEubGVmdCgpICsgYi5sZWZ0
KCkpOworICAgIHJldHVybiBhOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit1c2luZyBJ
bnRPdXRzZXRzID0gSW50UmVjdEV4dGVudDsKIAotI2VuZGlmIC8vIEludFJlY3RFeHRlbnRfaAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IGEzNzQ0ZmExNWUw
ZjNmOWEwM2I4Njk2NzA2ZDI4YzE0NTg2MTZjNDIuLjg4OWFhMmRmYjJlMTY1NjE0OThiMzVkZWYx
Njg4NGY3YWJlNjBjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTExNSw2ICsxMTUsMTcgQEAg
dm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3aW5nUmVnaW9u
KTsKIH0KIAorSW50T3V0c2V0cyBGRURyb3BTaGFkb3c6Om91dHNldHMoKSBjb25zdAoreworICAg
IEludFNpemUgb3V0c2V0U2l6ZSA9IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRTaXpl
KHsgbV9zdGRYLCBtX3N0ZFkgfSk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc3RkOjptYXg8aW50
PigwLCBvdXRzZXRTaXplLmhlaWdodCgpIC0gbV9keSksCisgICAgICAgIHN0ZDo6bWF4PGludD4o
MCwgb3V0c2V0U2l6ZS53aWR0aCgpICsgbV9keCksCisgICAgICAgIHN0ZDo6bWF4PGludD4oMCwg
b3V0c2V0U2l6ZS5oZWlnaHQoKSArIG1fZHkpLAorICAgICAgICBzdGQ6Om1heDxpbnQ+KDAsIG91
dHNldFNpemUud2lkdGgoKSAtIG1fZHgpCisgICAgfTsKK30KKwogVGV4dFN0cmVhbSYgRkVEcm9w
U2hhZG93OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRh
dGlvblR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0CiB7CiAgICAgdHMgPDwgaW5kZW50IDw8Iltm
ZURyb3BTaGFkb3ciOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKaW5kZXggNTdhMjY3NzhiZWIyYTVmMDk0ZjdmNTM5
OWEzOGRjMzU4NzZlNWY3NS4uYjRlMGEyMDEyZmVkYjdiNzdiZjNlMDU3MzRlZTg4YTI5ZWZmMzg0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRHJvcFNoYWRvdy5oCkBAIC01Niw2ICs1Niw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKKyAgICBJbnRPdXRzZXRz
IG91dHNldHMoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgZmxvYXQgbV9zdGRYOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApp
bmRleCAxMTgwMjMxMWU5YWVjMWM5YjVmMmQwN2FmYTI5ZDQ3MTMwNjJiNjdiLi40OWJhODQxNzNj
MmQxYTk5NTRlNTYxMzkwY2UwM2MyNGJjOTBjODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApA
QCAtNDg3LDYgKzQ4NywxNCBAQCBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVLZXJu
ZWxTaXplKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGbG9hdFNpemUgc3RkRAogICAgIHJldHVybiBj
YWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlv
bihzdGREZXZpYXRpb24pKTsKIH0KIAorSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRl
T3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQoreworICAgIGF1dG8ga2VybmVsU2l6
ZSA9IGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShzdGREZXZpYXRpb24pOworCisgICAgLy8g
V2UgdGFrZSB0aGUgaGFsZiBrZXJuZWwgc2l6ZSBhbmQgbXVsdGlwbHkgaXQgd2l0aCB0aHJlZSwg
YmVjYXVzZSB3ZSBydW4gYm94IGJsdXIgdGhyZWUgdGltZXMuCisgICAgcmV0dXJuIHsgMyAqIGtl
cm5lbFNpemUud2lkdGgoKSAvIDIsIDMgKiBrZXJuZWxTaXplLmhlaWdodCgpIC8gMiB9OworfQor
CiB2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiB7CiAg
ICAgSW50U2l6ZSBrZXJuZWxTaXplID0gY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIoKSwgeyBt
X3N0ZFgsIG1fc3RkWSB9KTsKQEAgLTUzOCw2ICs1NDYsMTIgQEAgdm9pZCBGRUdhdXNzaWFuQmx1
cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBwbGF0Zm9ybUFwcGx5KCpyZXN1bHRQaXhl
bEFycmF5LCAqdG1wSW1hZ2VEYXRhLCBrZXJuZWxTaXplLndpZHRoKCksIGtlcm5lbFNpemUuaGVp
Z2h0KCksIHBhaW50U2l6ZSk7CiB9CiAKK0ludE91dHNldHMgRkVHYXVzc2lhbkJsdXI6Om91dHNl
dHMoKSBjb25zdAoreworICAgIEludFNpemUgb3V0c2V0U2l6ZSA9IGNhbGN1bGF0ZU91dHNldFNp
emUoeyBtX3N0ZFgsIG1fc3RkWSB9KTsKKyAgICByZXR1cm4geyBvdXRzZXRTaXplLmhlaWdodCgp
LCBvdXRzZXRTaXplLndpZHRoKCksIG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lk
dGgoKSB9OworfQorCiBUZXh0U3RyZWFtJiBGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9u
KSBjb25zdAogewogICAgIHRzIDw8IGluZGVudCA8PCAiW2ZlR2F1c3NpYW5CbHVyIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuaAppbmRleCAwN2VmYzdhNWRjYTVjYjFjNGViNWU1OGRlNzZhMDY4ZTdkODY0ZTlh
Li41ZmI5N2ZmYjA3MGMyZGFlYjZlYjI4M2JlYWFhMTc2NDdjYmIyZDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJbnRTaXplIGNh
bGN1bGF0ZUtlcm5lbFNpemUoY29uc3QgRmlsdGVyJiwgRmxvYXRTaXplIHN0ZERldmlhdGlvbik7
CiAgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0U2l6
ZSBzdGREZXZpYXRpb24pOworICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZU91dHNldFNpemUo
RmxvYXRTaXplIHN0ZERldmlhdGlvbik7CiAKIHByaXZhdGU6CiAgICAgRkVHYXVzc2lhbkJsdXIo
RmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBFZGdlTW9kZVR5cGUpOwpAQCAtNjcsNiArNjgsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRl
OwogCisgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBXVEY6
OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVw
cmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lkIHBsYXRm
b3JtQXBwbHlXb3JrZXIoUGxhdGZvcm1BcHBseVBhcmFtZXRlcnMqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmlu
ZGV4IDliMDA2ZTNmMjk3Y2M4YWMzZDBmZmQxOTAxMTk2ZGQyMTQ1NDUyNGUuLjE5ZjZmYjRkZGJm
MmM0MzY2YjhlNWIwNjVkMTc4ZWE2NTZlYzQxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtMjQsNiAr
MjQsNyBAQAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTAzLDYgKzEwNCw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRmlsdGVyRWZmZWN0VHlwZSBmaWx0ZXJFZmZlY3RU
eXBlKCkgY29uc3QgeyByZXR1cm4gRmlsdGVyRWZmZWN0VHlwZVVua25vd247IH0KIAorICAgIHZp
cnR1YWwgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gSW50T3V0c2V0cygpOyB9
CisKICAgICBlbnVtIGNsYXNzIFJlcHJlc2VudGF0aW9uVHlwZSB7IFRlc3RPdXRwdXQsIERlYnVn
Z2luZyB9OwogICAgIHZpcnR1YWwgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSA9IFJlcHJlc2VudGF0aW9u
VHlwZTo6VGVzdE91dHB1dCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCmluZGV4
IDM2ZGZjZjc4NDU2ZjIwZDE1ODAyYTBmZDZhZjljYjliN2JjNGI4OTcuLjdmODk3NGNiNTVmN2Rm
MTA0NjE1YmVkM2MzM2RmYWExYTBmY2E2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcApA
QCAtMzQsMTcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5l
IEludFNpemUgb3V0c2V0U2l6ZUZvckJsdXIoZmxvYXQgc3RkRGV2aWF0aW9uKQotewotICAgIGF1
dG8ga2VybmVsU2l6ZSA9IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNp
emUoeyBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiB9KTsKLQotICAgIC8vIFdlIHRha2UgdGhl
IGhhbGYga2VybmVsIHNpemUgYW5kIG11bHRpcGx5IGl0IHdpdGggdGhyZWUsIGJlY2F1c2Ugd2Ug
cnVuIGJveCBibHVyIHRocmVlIHRpbWVzLgotICAgIHJldHVybiB7Ci0gICAgICAgIDMgKiBrZXJu
ZWxTaXplLndpZHRoKCkgLyAyLAotICAgICAgICAzICoga2VybmVsU2l6ZS5oZWlnaHQoKSAvIDIK
LSAgICB9OwotfQotCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHNpemUgPSBtX29wZXJh
dGlvbnMuc2l6ZSgpOwpAQCAtNzgsMzMgKzY3LDI0IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6
aGFzUmVmZXJlbmNlRmlsdGVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
RmlsdGVyT3BlcmF0aW9uczo6aGFzT3V0c2V0cygpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKLSAgICAgICAgYXV0byB0eXBlID0gb3BlcmF0aW9u
LT50eXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCB0
eXBlID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1GaWx0ZXJPdXRzZXRzIEZpbHRl
ck9wZXJhdGlvbnM6Om91dHNldHMoKSBjb25zdAorSW50T3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25z
OjpvdXRzZXRzKCkgY29uc3QKIHsKLSAgICBGaWx0ZXJPdXRzZXRzIHRvdGFsT3V0c2V0czsKKyAg
ICBJbnRPdXRzZXRzIHRvdGFsT3V0c2V0czsKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1f
b3BlcmF0aW9ucykgewogICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbi0+dHlwZSgpKSB7CiAgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICBhdXRvJiBibHVy
T3BlcmF0aW9uID0gZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CiAg
ICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJP
cGVyYXRpb24uc3RkRGV2aWF0aW9uKCksIDApOwotICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRT
aXplID0gb3V0c2V0U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsKLSAgICAgICAgICAgIEZpbHRl
ck91dHNldHMgb3V0c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCks
IG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7CisgICAgICAgICAgICBJ
bnRTaXplIG91dHNldFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZSh7
IHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uIH0pOworICAgICAgICAgICAgSW50T3V0c2V0cyBv
dXRzZXRzKG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSwgb3V0c2V0U2l6
ZS5oZWlnaHQoKSwgb3V0c2V0U2l6ZS53aWR0aCgpKTsKICAgICAgICAgICAgIHRvdGFsT3V0c2V0
cyArPSBvdXRzZXRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CiAgICAgICAgICAgICBhdXRvJiBkcm9w
U2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbj4oKm9w
ZXJhdGlvbik7Ci0gICAgICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBvdXRzZXRTaXplRm9y
Qmx1cihkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpKTsKLSAgICAgICAgICAgIEZp
bHRlck91dHNldHMgb3V0c2V0cyB7CisgICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBk
cm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpOworICAgICAgICAgICAgSW50U2l6ZSBv
dXRzZXRTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZU91dHNldFNpemUoeyBzdGREZXZp
YXRpb24sIHN0ZERldmlhdGlvbiB9KTsKKyAgICAgICAgICAgIEludE91dHNldHMgb3V0c2V0cyB7
CiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSAtIGRyb3BT
aGFkb3dPcGVyYXRpb24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBvdXRzZXRT
aXplLndpZHRoKCkgKyBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSksCiAgICAgICAgICAgICAgICAg
c3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BTaGFkb3dPcGVyYXRpb24ueSgp
KSwKQEAgLTExMyw2ICs5Myw5IEBAIEZpbHRlck91dHNldHMgRmlsdGVyT3BlcmF0aW9uczo6b3V0
c2V0cygpIGNvbnN0CiAgICAgICAgICAgICB0b3RhbE91dHNldHMgKz0gb3V0c2V0czsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpS
RUZFUkVOQ0U6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmgKaW5kZXggOTMwMzQzYzRhNGYxMDJmMmVkZTU0OWEwOTY2Yzc4
MGFiOThmMDAyYS4uM2M3NzMwMDY4NWNiYzIwNGQwZDUwZDQ1Yzk1NjZhOGE1ZTcxMWNmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTMyLDggKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi11c2luZyBGaWx0ZXJPdXRzZXRzID0gSW50UmVjdEV4dGVudDsKLQogY2xhc3MgRmls
dGVyT3BlcmF0aW9ucyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC01MSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0aW9uc01hdGNoKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKIAotICAgIGJvb2wgaGFzT3V0c2V0cygpIGNvbnN0
OwotICAgIEZpbHRlck91dHNldHMgb3V0c2V0cygpIGNvbnN0OworICAgIGJvb2wgaGFzT3V0c2V0
cygpIGNvbnN0IHsgcmV0dXJuICFvdXRzZXRzKCkuaXNaZXJvKCk7IH0KKyAgICBJbnRPdXRzZXRz
IG91dHNldHMoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5
KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggNDc5ODFhZTY5OTFkYzY0OTE1
MjBmYzgyNDMyZWNjNDk1ODY0NDNmYS4uNmQ1OTVhMmRiMjljNTNiZmIyOWI2NmFlNTJiZjIyN2U1
YmE3MTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTEzMywx
MCArMTMzLDkgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb24KIHsKICAgICBtX2hhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscyA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7CiAg
ICAgbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiA9IG9w
ZXJhdGlvbnMuaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4o
KTsKLSAgICBpZiAobV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMpCi0gICAgICAgIG1fb3V0c2V0
cyA9IG9wZXJhdGlvbnMub3V0c2V0cygpOwogCiAgICAgbV9lZmZlY3RzLmNsZWFyKCk7CisgICAg
bV9vdXRzZXRzID0geyB9OwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZl
Y3QgPSBtX3NvdXJjZUdyYXBoaWMucHRyKCk7CiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBv
cGVyYXRpb25zLm9wZXJhdGlvbnMoKSkgewpAQCAtMzc0LDEyICszNzMsOCBAQCBMYXlvdXRSZWN0
IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlv
dXRSZWN0JiBmaWx0ZQogewogICAgIC8vIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyB0
aGUgYXJlYSBpbiB0aGUgImZpbHRlckJveFJlY3QiIHRoYXQgbmVlZHMgdG8gYmUgcmVwYWludGVk
LCBzbyB0aGF0IHdlIGZ1bGx5IGNvdmVyIHRoZSAiZGlydHlSZWN0Ii4KICAgICBhdXRvIHJlY3RG
b3JSZXBhaW50ID0gZGlydHlSZWN0OwotICAgIGlmIChoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMo
KSkgewotICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIG91dHNldHMgYXJlIHJldmVyc2VkIGhlcmUg
YmVjYXVzZSB3ZSBhcmUgZ29pbmcgYmFja3dhcmRzIC0+IHdlIGhhdmUgdGhlIGRpcnR5IHJlY3Qg
YW5kCi0gICAgICAgIC8vIG5lZWQgdG8gZmluZCBvdXQgd2hhdCBpcyB0aGUgcmVjdGFuZ2xlIHRo
YXQgbWlnaHQgaW5mbHVlbmNlIHRoZSByZXN1bHQgaW5zaWRlIHRoYXQgZGlydHkgcmVjdC4KLSAg
ICAgICAgcmVjdEZvclJlcGFpbnQubW92ZSgtbV9vdXRzZXRzLnJpZ2h0KCksIC1tX291dHNldHMu
Ym90dG9tKCkpOwotICAgICAgICByZWN0Rm9yUmVwYWludC5leHBhbmQobV9vdXRzZXRzLmxlZnQo
KSArIG1fb3V0c2V0cy5yaWdodCgpLCBtX291dHNldHMudG9wKCkgKyBtX291dHNldHMuYm90dG9t
KCkpOwotICAgIH0KKyAgICBpZiAoaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpCisgICAgICAg
IHJlY3RGb3JSZXBhaW50ICs9IG91dHNldHMoKTsKICAgICByZWN0Rm9yUmVwYWludC5pbnRlcnNl
Y3QoZmlsdGVyQm94UmVjdCk7CiAgICAgcmV0dXJuIHJlY3RGb3JSZXBhaW50OwogfQpAQCAtMzk3
LDcgKzM5Miw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0g
ZmFsc2U7CiB9CiAKLQogdm9pZCBDU1NGaWx0ZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZs
b2F0UmVjdCYgZWZmZWN0UmVjdCkKIHsKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fZWZmZWN0
cykKQEAgLTQxMiw0ICs0MDYsMTcgQEAgSW50UmVjdCBDU1NGaWx0ZXI6Om91dHB1dFJlY3QoKSBj
b25zdAogICAgIHJldHVybiBsYXN0RWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURh
dGEoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOwogfQogCitJbnRPdXRzZXRzIENTU0ZpbHRl
cjo6b3V0c2V0cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVs
cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghbV9vdXRzZXRzLmlzWmVybygpKQor
ICAgICAgICByZXR1cm4gbV9vdXRzZXRzOworCisgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBtX2Vm
ZmVjdHMpCisgICAgICAgIG1fb3V0c2V0cyArPSBlZmZlY3QtPm91dHNldHMoKTsKKyAgICByZXR1
cm4gbV9vdXRzZXRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggYmU4ZjdhNmZhM2NiMGU1Y2E2N2QzOWM1OWE4NDAzNzRk
NmJkYzg4Zi4uNjgzYWE4NGJhZDBkYWI0OWZmYzE2NDZhNzhlYTA1ODY1MzdlNjU0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJp
dHlPcmlnaW47IH0KIAogICAgIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KCk7CisgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NT
RmlsdGVyKCk7CkBAIC05Myw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFNvdXJjZUdyYXBo
aWM+IG1fc291cmNlR3JhcGhpYzsKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX3NvdXJjZUFs
cGhhOwogCi0gICAgSW50UmVjdEV4dGVudCBtX291dHNldHM7CisgICAgbXV0YWJsZSBJbnRPdXRz
ZXRzIG1fb3V0c2V0czsKIAogICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDljNDQ5MTI2YjIzMGQy
MjY1MDg0N2Q5ZjEzMTcxY2I4MmNiNzZjZTQuLmRkYTkyM2E0ZTRiOTM3NmI2NGZiNjMxN2RkODcx
ZjRmNmRjNzM1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMTkyOSw3ICsxOTI5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0RmlsdGVyQmFja2VuZE5l
ZWRzUmVwYWludGluZ0luUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgTGF5b3V0UmVjdCByZWN0Rm9yUmVwYWludCA9IHJlY3Q7Ci0gICAgcmVu
ZGVyZXIoKS5zdHlsZSgpLmZpbHRlck91dHNldHMoKS5leHBhbmRSZWN0KHJlY3RGb3JSZXBhaW50
KTsKKyAgICByZWN0Rm9yUmVwYWludCArPSBmaWx0ZXJPdXRzZXRzKCk7CiAKICAgICBtX2ZpbHRl
cnMtPmV4cGFuZERpcnR5U291cmNlUmVjdChyZWN0Rm9yUmVwYWludCk7CiAgICAgCkBAIC0xOTY0
LDcgKzE5NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBh
aW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiBib29sIFJlbmRlckxheWVyOjpo
YXNBbmNlc3RvcldpdGhGaWx0ZXJPdXRzZXRzKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IFJl
bmRlckxheWVyKiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7Ci0g
ICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLnN0eWxlKCkuaGFzRmlsdGVyT3V0c2V0cygpKQor
ICAgICAgICBpZiAoY3Vyci0+aGFzRmlsdGVyT3V0c2V0cygpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTIwODcsNyArMjA4Nyw3IEBAIHN0
YXRpYyBMYXlvdXRSZWN0IHRyYW5zcGFyZW5jeUNsaXBCb3goY29uc3QgUmVuZGVyTGF5ZXImIGxh
eWVyLCBjb25zdCBSZW5kZXJMYXllCiAgICAgICAgIC8vIHBhaW50cyB1bmZyYWdtZW50ZWQuCiAg
ICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBsYXllci5ib3VuZGluZ0JveCgmbGF5ZXIpOwog
ICAgICAgICBleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbihjbGlwUmVj
dCwgbGF5ZXIsICZsYXllciwgdHJhbnNwYXJlbmN5QmVoYXZpb3IsIHBhaW50QmVoYXZpb3IpOwot
ICAgICAgICBsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVyT3V0c2V0cygpLmV4cGFuZFJl
Y3QoY2xpcFJlY3QpOworICAgICAgICBjbGlwUmVjdCArPSBsYXllci5maWx0ZXJPdXRzZXRzKCk7
CiAgICAgICAgIExheW91dFJlY3QgcmVzdWx0ID0gdHJhbnNmb3JtLm1hcFJlY3QoY2xpcFJlY3Qp
OwogICAgICAgICBpZiAoIXBhZ2luYXRpb25MYXllcikKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CkBAIC0yMTAzLDcgKzIxMDMsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCB0cmFuc3BhcmVuY3lD
bGlwQm94KGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZQogICAgIAog
ICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBsYXllci5ib3VuZGluZ0JveChyb290TGF5ZXIsIGxh
eWVyLm9mZnNldEZyb21BbmNlc3Rvcihyb290TGF5ZXIpLCB0cmFuc3BhcmVuY3lCZWhhdmlvciA9
PSBIaXRUZXN0aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCA/IFJlbmRlckxheWVyOjpVc2VGcmFnbWVu
dEJveGVzSW5jbHVkaW5nQ29tcG9zaXRpbmcgOiBSZW5kZXJMYXllcjo6VXNlRnJhZ21lbnRCb3hl
c0V4Y2x1ZGluZ0NvbXBvc2l0aW5nKTsKICAgICBleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRz
QW5kUmVmbGVjdGlvbihjbGlwUmVjdCwgbGF5ZXIsIHJvb3RMYXllciwgdHJhbnNwYXJlbmN5QmVo
YXZpb3IsIHBhaW50QmVoYXZpb3IpOwotICAgIGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5maWx0
ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChjbGlwUmVjdCk7CisgICAgY2xpcFJlY3QgKz0gbGF5ZXIu
ZmlsdGVyT3V0c2V0cygpOwogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpAQCAtNjExNCw3ICs2
MTE0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29u
c3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICAgICAgY29tcHV0ZUxheWVyc1Vu
aW9uKCpjaGlsZExheWVyKTsKIAogICAgIGlmIChmbGFncy5jb250YWlucyhJbmNsdWRlRmlsdGVy
T3V0c2V0cykgfHwgKGZsYWdzLmNvbnRhaW5zKEluY2x1ZGVQYWludGVkRmlsdGVyT3V0c2V0cykg
JiYgcGFpbnRzV2l0aEZpbHRlcnMoKSkpCi0gICAgICAgIHJlbmRlcmVyKCkuc3R5bGUoKS5maWx0
ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdCh1bmlvbkJvdW5kcyk7CisgICAgICAgIHVuaW9uQm91bmRz
ICs9IGZpbHRlck91dHNldHMoKTsKIAogICAgIGlmICgoZmxhZ3MgJiBJbmNsdWRlU2VsZlRyYW5z
Zm9ybSkgJiYgcGFpbnRzV2l0aFRyYW5zZm9ybShQYWludEJlaGF2aW9yOjpOb3JtYWwpKSB7CiAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KiBhZmZpbmVUcmFucyA9IHRyYW5zZm9ybSgpOwpA
QCAtNjgzNyw2ICs2ODM3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVwYWlu
dCgpCiAgICAgcmVuZGVyZXIoKS5yZXBhaW50KCk7CiB9CiAKK0ludE91dHNldHMgUmVuZGVyTGF5
ZXI6OmZpbHRlck91dHNldHMoKSBjb25zdAoreworICAgIGlmIChtX2ZpbHRlcnMpCisgICAgICAg
IHJldHVybiBtX2ZpbHRlcnMtPmZpbHRlcigpID8gbV9maWx0ZXJzLT5maWx0ZXIoKS0+b3V0c2V0
cygpIDogSW50T3V0c2V0cygpOworICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVy
T3V0c2V0cygpOworfQorCiBib29sIFJlbmRlckxheWVyOjppc1RyYW5zcGFyZW50UmVzcGVjdGlu
Z1BhcmVudEZyYW1lcygpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVt
VmlzaWJsZU9wYWNpdHkgPSAwLjAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aAppbmRleCBjZjQyODliZDdmOGRkOGY0NzJjZDBmZWY1NzQxYjc0ODhmNmFlNWVkLi5hOTdjM2Y5
YjY2NzA4MGNmNzI2ZGJkMDg0ZjM4OTU5NjQ3OGY5ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaApAQCAtNzkwLDYgKzc5MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZmlsdGVyTmVlZHNSZXBhaW50KCk7CiAgICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJldHVy
biByZW5kZXJlcigpLmhhc0ZpbHRlcigpOyB9CisgICAgYm9vbCBoYXNGaWx0ZXJPdXRzZXRzKCkg
Y29uc3QgeyByZXR1cm4gIWZpbHRlck91dHNldHMoKS5pc1plcm8oKTsgfQorICAgIEludE91dHNl
dHMgZmlsdGVyT3V0c2V0cygpIGNvbnN0OwogICAgIGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXIoKSBj
b25zdAogICAgIHsKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBjYmYyNTM2M2FjNWJmZmQ4NDQ1
OGE5YTVhNWNmNmVmZjc1NWFmOTg1Li5lNjFlYjdjMGJiOTRmM2UwMDUyMjViMzY5NzI3NTgxZDU3
MTQwOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aApAQCAtMjI5LDggKzIyOSw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dEJveEV4dGVudCBtYXNr
Qm94SW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaW1hZ2VPdXRzZXRzKG1hc2tCb3hJbWFn
ZSgpKTsgfQogCi0gICAgYm9vbCBoYXNGaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFz
RmlsdGVyKCkgJiYgZmlsdGVyKCkuaGFzT3V0c2V0cygpOyB9Ci0gICAgRmlsdGVyT3V0c2V0cyBm
aWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFzRmlsdGVyKCkgPyBmaWx0ZXIoKS5vdXRz
ZXRzKCkgOiBGaWx0ZXJPdXRzZXRzKCk7IH0KKyAgICBJbnRPdXRzZXRzIGZpbHRlck91dHNldHMo
KSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSA/IGZpbHRlcigpLm91dHNldHMoKSA6IEludE91
dHNldHMoKTsgfQogCiAgICAgT3JkZXIgcnRsT3JkZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxPcmRlcj4obV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyk7IH0KICAgICB2b2lk
IHNldFJUTE9yZGVyaW5nKE9yZGVyIG9yZGVyaW5nKSB7IG1faW5oZXJpdGVkRmxhZ3MucnRsT3Jk
ZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3JkZXJpbmcpOyB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzg2ZTMy
ZWVlMTYwYmU0MzQzZmY5OTc1NjJiYmU0YmNkZjEzZjFhOC4uMGQ2OThlNGQxM2Q3ZDE1YjNjNDMw
NTM0YjFmNWJhOGE3NTE4NDcxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEwLTExICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0
c2V0cyBmb3IgcmVmZXJlbmNlZCBTVkcgZmlsdGVycyBhcmUgYWx3YXlzIHplcm8KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjgyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzMy9maWx0ZXJzL3N2
Zy1ibHVyLWZpbHRlci1jbGlwcGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNz
czMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sOiBBZGRlZC4KKwogMjAxOS0x
MC0xMCAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBJbXBvcnQgY3NzL2Nzcy1pbWFnZXMgV1BUIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MGNjY2MyM2ZlNzAyMzQ2NGYwZTgzM2M4MWYwN2YyNWI2
ZmVlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvc3ZnLWJs
dXItZmlsdGVyLWNsaXBwZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8c3R5bGU+
CisgICAgLmNvbnRhaW5lciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBjbGFz
cz0iY29udGFpbmVyIj48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sIGIvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjgzMzEx
NWNiZTFlMjc5YTkzNDcxNGZmZGFkZDg1NTVlZjQyNzg2NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sCkBAIC0w
LDAgKzEsMjcgQEAKKzxzdHlsZT4KKyAgICAuY29udGFpbmVyIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwor
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgfQorICAgIC5ib3ggeworICAgICAg
ICB3aWR0aDogODAwcHg7CisgICAgICAgIGhlaWdodDogODAwcHg7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgICAuZ2F1c3NpYW4tYmx1ciB7CisgICAgICAgIGZp
bHRlcjogdXJsKCNnYXVzc2lhbi1ibHVyKTsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUo
LTMwMHB4LCAtMzAwcHgpOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNz
PSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJib3ggZ2F1c3NpYW4tYmx1ciI+PC9k
aXY+CisgICAgPC9kaXY+CisgICAgPHN2ZyBoZWlnaHQ9IjAiPgorICAgICAgICA8ZmlsdGVyIGlk
PSJnYXVzc2lhbi1ibHVyIj4KKyAgICAgICAgICAgIDxmZWdhdXNzaWFuYmx1ciBzdGREZXZpYXRp
b249IjEwMCI+CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwvc3ZnPgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380763</attachid>
            <date>2019-10-11 10:44:18 -0700</date>
            <delta_ts>2019-10-14 15:58:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202826-20191011104417.patch</filename>
            <type>text/plain</type>
            <size>27253</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzYzMzViYzY3NzQ1YWZh
MDk4NWM2YmI0YWIxNDVmOTM3M2IxNDExNi4uYTc4ZjFhNzAzMzhkZGM0MTgwZmJjODdkYzc1YjQ2
MzIwYzk0ZTk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE5LTEwLTExICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0c2V0
cyBmb3IgcmVmZXJlbmNlZCBTVkcgZmlsdGVycyBhcmUgYWx3YXlzIHplcm8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjgyNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV0aW1lcyB0aGUgZmlsdGVy
IGlzIGFwcGxpZWQgb25seSB0byBhIHBhcnQgb2YgdGhlIGltYWdlLCBzbyB3ZSBuZWVkCisgICAg
ICAgIHRvIGVubGFyZ2UgdGhlIHNvdXJjZSByZWN0YW5nbGUgc3VjaCB0aGF0IHRoZSBib3JkZXIg
b2YgdGhlIHJlc3VsdCBpbWFnZQorICAgICAgICBsb29rcyBsaWtlIGFzIGlmIHRoZSBmaWx0ZXIg
d2VyZSBhcHBsaWVkIHRvIHRoZSB3aG9sZSBpbWFnZS4KKworICAgICAgICBUaGUgZmlsdGVyIG91
dHNldHMgc2hvdWxkIG9ubHkgYmUgY2FsY3VsYXRlZCBmb3IgdGhlIGJsdXIgYW5kIHRoZSBkcm9w
CisgICAgICAgIHNoYWRvdyBmaWx0ZXJzLiBUaGUgcHJvYmxlbSBpcyBGaWx0ZXJPcGVyYXRpb25z
OjpvdXRzZXRzKCkgd2FzIHJldHVybmluZworICAgICAgICBlbXB0eSBvdXRzZXRzIGFsd2F5cyBm
b3IgdGhlIHJlZmVyZW5jZWQgZmlsdGVycy4KKworICAgICAgICBTaW5jZSB0aGUgcmVmZXJlbmNl
ZCBmaWx0ZXJzIG11c3QgYmUgc29mdHdhcmUgZmlsdGVycywgdGhlIGZpeCBpcyB0byByZWx5Cisg
ICAgICAgIG9uIENTU0ZpbHRlciBpbiBjYWxjdWxhdGluZyB0aGUgZmlsdGVyIG91dHNldHMgZm9y
IHNvZnR3YXJlIGZpbHRlcnMuCisKKyAgICAgICAgQnkgYWRkaW5nIGEgdmlydHVhbCBmdW5jdGlv
biBjYWxsZWQgb3V0c2V0KCkgdG8gdGhlIEZpbHRlckVmZmVjdCBjbGFzcywgCisgICAgICAgIHdl
IGNhbiBsb29wIHRocm91Z2ggdGhlIENTU0ZpbHRlcjo6bV9lZmZlY3RzIGFza2luZyBldmVyeSBG
aWx0ZXJFZmZlY3QKKyAgICAgICAgdG8gcmV0dXJuIGl0cyBvdXRzZXQoKS4gVGhpcyBmdW5jdGlv
biBpcyBvbmx5IG92ZXJyaWRkZW4gYnkgRkVEcm9wU2hhZG93CisgICAgICAgIGFuZCBGRUdhdXNz
aWFuQmx1ci4KKworICAgICAgICBUaGlzIHNob3VsZCB3b3JrIGJlY2F1c2UgUmVuZGVyTGF5ZXIg
YnVpbGRzIHRoZSBDU1NGaWx0ZXIgd2hlbiB0aGUgc3R5bGVDaGFuZ2VkKCkKKyAgICAgICAgaGFw
cGVucyB0aHJvdWdoIGl0cyB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCkuIFRoaXMgd2ls
bCBndWFyYW50ZWUgCisgICAgICAgIHRoYXQgbV9maWx0ZXJzLT5maWx0ZXIoKS0+b3V0c2V0cygp
IHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IG91dHNldHMgZm9yCisgICAgICAgIHRoZSByZWZlcmVu
Y2VkIGFuZCB0aGUgbm9uLXJlZmVyZW5jZWQgc29mdHdhcmUgZmlsdGVycy4KKworICAgICAgICBX
ZSBzaG91bGQga2VlcCBGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKCkgYmVjYXVzZSBpdCBoYXMg
YmUgdXNlZCBmb3IKKyAgICAgICAgdGhlIGhhcmR3YXJlIG5vbi1yZWZlcmVuY2VkIGZpbHRlcnMu
IEluIHRoYXQgY2FzZSwgUmVuZGVyTGF5ZXIgZG9lcyBub3QKKyAgICAgICAgYnVpbGQgdGhlIHRo
ZSBmaWx0ZXIgZWZmZWN0cy4gVGhlcmVmb3JlIG1fZmlsdGVycyBjYW4ndCBiZSB1c2VkIGJlY2F1
c2UKKyAgICAgICAgaXQgaXMgbnVsbCBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgRm9yIGFjY3Vy
YWN5LCBoYXNPdXRzZXRzKCkgaW1wbGVtZW50YXRpb24gaXMgZGVsZXRlZC4gSGF2aW5nIGEgYmx1
ciBvcgorICAgICAgICBkcm9wIHNoYWRvdyBmaWx0ZXIgZWZmZWN0IGlzIG5vdCBlbm91Z2ggdG8g
c2F5IGhhc091dHNldHMoKSBpcyB0cnVlLiBXZQorICAgICAgICBuZWVkIHRvIGNhbGN1bGF0ZSB0
aGUgb3V0c2V0cyBmaXJzdCBhbmQgdGhlbiBhc2sgaWYgaXQgaXNaZXJvKCkgb3Igbm90LgorCisg
ICAgICAgIFRlc3Q6IGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yKz0pOgorICAg
ICAgICAoV2ViQ29yZTo6SW50UmVjdEV4dGVudDo6ZXhwYW5kUmVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIEludFJlY3RFeHRlbnQgaXMgb25seSB1c2VkIGFzIGEgZmlsdGVyIG91dHNldHMu
IFNvIGFkZCB0aGUgZGVmaW5pdGlvbiBvZgorICAgICAgICBJbnRPdXRzZXRzIGluIEludFJlY3RF
eHRlbnQuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6b3V0c2V0cyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpvdXRzZXRzIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbnM6Om91dHNldHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3V0c2V0
U2l6ZUZvckJsdXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzT3V0c2V0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpoYXNPdXRzZXRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zKToKKworICAgICAgICAqIHJlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JE
aXJ0eVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRzZXRzIGNvbnN0KToK
KyAgICAgICAgQ2FsY3VsYXRlIG1fb3V0c2V0cyBvbmNlIGFuZCBjYWNoZSBpdHMgdmFsdWUgZm9y
IGxhdGVyIHVzZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoYXNBbmNlc3RvcldpdGhGaWx0ZXJPdXRzZXRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnRyYW5zcGFyZW5jeUNsaXBCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZmlsdGVyT3V0c2V0cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzRmlsdGVyT3V0c2V0cyBjb25z
dCk6IERlbGV0ZWQuCisKIDIwMTktMTAtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIEhBVkUoSU9TVVJGQUNFX1JHQjEwKSBpbnN0ZWFkIG9m
IFBMQVRGT1JNKElPU19GQU1JTFkpIHdoZXJlIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmgKaW5kZXggNjExNzM5MDU0MDIx
YjQzMzRiN2JmYmY2NDdlM2M2ZDE1OTYzZTk2ZS4uNDNjODMyZTA4OGUwNDI2MjhmMjdiYWUyNDQ5
YjQwOGEyMDNhNjI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdEV4dGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3RFeHRlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMjIgKzI4LDEzIEBACiAgKiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEludFJlY3RFeHRlbnRfaAotI2RlZmluZSBJbnRSZWN0RXh0
ZW50X2gKLQotI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNwcmFnbWEgb25jZQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3RFeHRlbnQgewogcHVibGljOgotICAgIEludFJl
Y3RFeHRlbnQoKQotICAgICAgICA6IG1fdG9wKDApCi0gICAgICAgICwgbV9yaWdodCgwKQotICAg
ICAgICAsIG1fYm90dG9tKDApCi0gICAgICAgICwgbV9sZWZ0KDApCi0gICAgewotICAgIH0KKyAg
ICBJbnRSZWN0RXh0ZW50KCkgPSBkZWZhdWx0OwogCiAgICAgSW50UmVjdEV4dGVudChpbnQgdG9w
LCBpbnQgcmlnaHQsIGludCBib3R0b20sIGludCBsZWZ0KQogICAgICAgICA6IG1fdG9wKHRvcCkK
QEAgLTY0LDMwICs1NiwxOCBAQCBwdWJsaWM6CiAgICAgaW50IGxlZnQoKSBjb25zdCB7IHJldHVy
biBtX2xlZnQ7IH0KICAgICB2b2lkIHNldExlZnQoaW50IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsg
fQogCi0gICAgdm9pZCBleHBhbmRSZWN0KExheW91dFJlY3QmIHJlY3QpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVj
dC5tb3ZlKC1sZWZ0KCksIC10b3AoKSk7Ci0gICAgICAgIHJlY3QuZXhwYW5kKGxlZnQoKSArIHJp
Z2h0KCksIHRvcCgpICsgYm90dG9tKCkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBib29sIGlz
WmVybygpIGNvbnN0IHsgcmV0dXJuICFsZWZ0KCkgJiYgIXJpZ2h0KCkgJiYgIXRvcCgpICYmICFi
b3R0b20oKTsgfQogCi0gICAgaW50IG1fdG9wOwotICAgIGludCBtX3JpZ2h0OwotICAgIGludCBt
X2JvdHRvbTsKLSAgICBpbnQgbV9sZWZ0OworcHJpdmF0ZToKKyAgICBpbnQgbV90b3AgeyAwIH07
CisgICAgaW50IG1fcmlnaHQgeyAwIH07CisgICAgaW50IG1fYm90dG9tIHsgMCB9OworICAgIGlu
dCBtX2xlZnQgeyAwIH07CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludFJl
Y3RFeHRlbnQmIGEsIGNvbnN0IEludFJlY3RFeHRlbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEudG9w
KCkgPT0gYi50b3AoKQotICAgICAgICAmJiBhLnJpZ2h0KCkgPT0gYi5yaWdodCgpCi0gICAgICAg
ICYmIGEuYm90dG9tKCkgPT0gYi5ib3R0b20oKQotICAgICAgICAmJiBhLmxlZnQoKSA9PSBiLmxl
ZnQoKTsKKyAgICByZXR1cm4gYS50b3AoKSA9PSBiLnRvcCgpICYmIGEucmlnaHQoKSA9PSBiLnJp
Z2h0KCkgJiYgYS5ib3R0b20oKSA9PSBiLmJvdHRvbSgpICYmIGEubGVmdCgpID09IGIubGVmdCgp
OwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFJlY3RFeHRlbnQmIGEsIGNv
bnN0IEludFJlY3RFeHRlbnQmIGIpCkBAIC05NSwxNCArNzUsMjMgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbnRSZWN0RXh0ZW50JiBhLCBjb25zdCBJbnRSZWN0RXh0ZW50JiBiKQog
ICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLWlubGluZSB2b2lkIG9wZXJhdG9yKz0oSW50UmVj
dEV4dGVudCYgYSwgY29uc3QgSW50UmVjdEV4dGVudCYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFJl
Y3RUeXBlPgoraW5saW5lIFJlY3RUeXBlJiBvcGVyYXRvcis9KFJlY3RUeXBlJiByZWN0LCBjb25z
dCBJbnRSZWN0RXh0ZW50JiBleHRlbnQpCit7CisgICAgcmVjdC5tb3ZlKC1leHRlbnQubGVmdCgp
LCAtZXh0ZW50LnRvcCgpKTsKKyAgICByZWN0LmV4cGFuZChleHRlbnQubGVmdCgpICsgZXh0ZW50
LnJpZ2h0KCksIGV4dGVudC50b3AoKSArIGV4dGVudC5ib3R0b20oKSk7CisgICAgcmV0dXJuIHJl
Y3Q7Cit9CisKK2lubGluZSBJbnRSZWN0RXh0ZW50JiBvcGVyYXRvcis9KEludFJlY3RFeHRlbnQm
IGEsIGNvbnN0IEludFJlY3RFeHRlbnQmIGIpCiB7CiAgICAgYS5zZXRUb3AoYS50b3AoKSArIGIu
dG9wKCkpOwogICAgIGEuc2V0UmlnaHQoYS5yaWdodCgpICsgYi5yaWdodCgpKTsKICAgICBhLnNl
dEJvdHRvbShhLmJvdHRvbSgpICsgYi5ib3R0b20oKSk7CiAgICAgYS5zZXRMZWZ0KGEubGVmdCgp
ICsgYi5sZWZ0KCkpOworICAgIHJldHVybiBhOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit1c2luZyBJbnRPdXRzZXRzID0gSW50UmVjdEV4dGVudDsKIAotI2VuZGlmIC8vIEludFJlY3RF
eHRlbnRfaAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IGEz
NzQ0ZmExNWUwZjNmOWEwM2I4Njk2NzA2ZDI4YzE0NTg2MTZjNDIuLjg4OWFhMmRmYjJlMTY1NjE0
OThiMzVkZWYxNjg4NGY3YWJlNjBjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTExNSw2ICsx
MTUsMTcgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3
aW5nUmVnaW9uKTsKIH0KIAorSW50T3V0c2V0cyBGRURyb3BTaGFkb3c6Om91dHNldHMoKSBjb25z
dAoreworICAgIEludFNpemUgb3V0c2V0U2l6ZSA9IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVP
dXRzZXRTaXplKHsgbV9zdGRYLCBtX3N0ZFkgfSk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc3Rk
OjptYXg8aW50PigwLCBvdXRzZXRTaXplLmhlaWdodCgpIC0gbV9keSksCisgICAgICAgIHN0ZDo6
bWF4PGludD4oMCwgb3V0c2V0U2l6ZS53aWR0aCgpICsgbV9keCksCisgICAgICAgIHN0ZDo6bWF4
PGludD4oMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIG1fZHkpLAorICAgICAgICBzdGQ6Om1heDxp
bnQ+KDAsIG91dHNldFNpemUud2lkdGgoKSAtIG1fZHgpCisgICAgfTsKK30KKwogVGV4dFN0cmVh
bSYgRkVEcm9wU2hhZG93OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBS
ZXByZXNlbnRhdGlvblR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0CiB7CiAgICAgdHMgPDwgaW5k
ZW50IDw8IltmZURyb3BTaGFkb3ciOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKaW5kZXggNTdhMjY3NzhiZWIyYTVm
MDk0ZjdmNTM5OWEzOGRjMzU4NzZlNWY3NS4uYjRlMGEyMDEyZmVkYjdiNzdiZjNlMDU3MzRlZTg4
YTI5ZWZmMzg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURyb3BTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCkBAIC01Niw2ICs1Niw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKKyAgICBJ
bnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIFdURjo6VGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlv
blR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZmxvYXQgbV9zdGRYOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcAppbmRleCAxMTgwMjMxMWU5YWVjMWM5YjVmMmQwN2FmYTI5ZDQ3MTMwNjJiNjdiLi40
OWJhODQxNzNjMmQxYTk5NTRlNTYxMzkwY2UwM2MyNGJjOTBjODFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcApAQCAtNDg3LDYgKzQ4NywxNCBAQCBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxj
dWxhdGVLZXJuZWxTaXplKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGbG9hdFNpemUgc3RkRAogICAg
IHJldHVybiBjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVy
UmVzb2x1dGlvbihzdGREZXZpYXRpb24pKTsKIH0KIAorSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQoreworICAgIGF1dG8g
a2VybmVsU2l6ZSA9IGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShzdGREZXZpYXRpb24pOwor
CisgICAgLy8gV2UgdGFrZSB0aGUgaGFsZiBrZXJuZWwgc2l6ZSBhbmQgbXVsdGlwbHkgaXQgd2l0
aCB0aHJlZSwgYmVjYXVzZSB3ZSBydW4gYm94IGJsdXIgdGhyZWUgdGltZXMuCisgICAgcmV0dXJu
IHsgMyAqIGtlcm5lbFNpemUud2lkdGgoKSAvIDIsIDMgKiBrZXJuZWxTaXplLmhlaWdodCgpIC8g
MiB9OworfQorCiB2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dCgpCiB7CiAgICAgSW50U2l6ZSBrZXJuZWxTaXplID0gY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0
ZXIoKSwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKQEAgLTUzOCw2ICs1NDYsMTIgQEAgdm9pZCBGRUdh
dXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBwbGF0Zm9ybUFwcGx5KCpy
ZXN1bHRQaXhlbEFycmF5LCAqdG1wSW1hZ2VEYXRhLCBrZXJuZWxTaXplLndpZHRoKCksIGtlcm5l
bFNpemUuaGVpZ2h0KCksIHBhaW50U2l6ZSk7CiB9CiAKK0ludE91dHNldHMgRkVHYXVzc2lhbkJs
dXI6Om91dHNldHMoKSBjb25zdAoreworICAgIEludFNpemUgb3V0c2V0U2l6ZSA9IGNhbGN1bGF0
ZU91dHNldFNpemUoeyBtX3N0ZFgsIG1fc3RkWSB9KTsKKyAgICByZXR1cm4geyBvdXRzZXRTaXpl
LmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCksIG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNl
dFNpemUud2lkdGgoKSB9OworfQorCiBUZXh0U3RyZWFtJiBGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJl
c2VudGF0aW9uKSBjb25zdAogewogICAgIHRzIDw8IGluZGVudCA8PCAiW2ZlR2F1c3NpYW5CbHVy
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVHYXVzc2lhbkJsdXIuaAppbmRleCAwN2VmYzdhNWRjYTVjYjFjNGViNWU1OGRlNzZhMDY4
ZTdkODY0ZTlhLi41ZmI5N2ZmYjA3MGMyZGFlYjZlYjI4M2JlYWFhMTc2NDdjYmIyZDNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJ
bnRTaXplIGNhbGN1bGF0ZUtlcm5lbFNpemUoY29uc3QgRmlsdGVyJiwgRmxvYXRTaXplIHN0ZERl
dmlhdGlvbik7CiAgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXpl
KEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pOworICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZU91
dHNldFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbik7CiAKIHByaXZhdGU6CiAgICAgRkVHYXVz
c2lhbkJsdXIoRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBFZGdlTW9kZVR5cGUpOwpAQCAtNjcsNiAr
NjgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgp
IG92ZXJyaWRlOwogCisgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CisK
ICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3Ry
ZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2
b2lkIHBsYXRmb3JtQXBwbHlXb3JrZXIoUGxhdGZvcm1BcHBseVBhcmFtZXRlcnMqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCmluZGV4IDliMDA2ZTNmMjk3Y2M4YWMzZDBmZmQxOTAxMTk2ZGQyMTQ1NDUyNGUuLjE5
ZjZmYjRkZGJmMmM0MzY2YjhlNWIwNjVkMTc4ZWE2NTZlYzQxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50UmVjdEV4dGVudC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTAz
LDYgKzEwNCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRmlsdGVyRWZmZWN0VHlwZSBmaWx0
ZXJFZmZlY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gRmlsdGVyRWZmZWN0VHlwZVVua25vd247IH0K
IAorICAgIHZpcnR1YWwgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gSW50T3V0
c2V0cygpOyB9CisKICAgICBlbnVtIGNsYXNzIFJlcHJlc2VudGF0aW9uVHlwZSB7IFRlc3RPdXRw
dXQsIERlYnVnZ2luZyB9OwogICAgIHZpcnR1YWwgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSA9IFJlcHJl
c2VudGF0aW9uVHlwZTo6VGVzdE91dHB1dCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwCmluZGV4IDM2ZGZjZjc4NDU2ZjIwZDE1ODAyYTBmZDZhZjljYjliN2JjNGI4OTcuLjdmODk3
NGNiNTVmN2RmMTA0NjE1YmVkM2MzM2RmYWExYTBmY2E2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b25zLmNwcApAQCAtMzQsMTcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgaW5saW5lIEludFNpemUgb3V0c2V0U2l6ZUZvckJsdXIoZmxvYXQgc3RkRGV2aWF0aW9uKQot
ewotICAgIGF1dG8ga2VybmVsU2l6ZSA9IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVVbnNjYWxl
ZEtlcm5lbFNpemUoeyBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiB9KTsKLQotICAgIC8vIFdl
IHRha2UgdGhlIGhhbGYga2VybmVsIHNpemUgYW5kIG11bHRpcGx5IGl0IHdpdGggdGhyZWUsIGJl
Y2F1c2Ugd2UgcnVuIGJveCBibHVyIHRocmVlIHRpbWVzLgotICAgIHJldHVybiB7Ci0gICAgICAg
IDMgKiBrZXJuZWxTaXplLndpZHRoKCkgLyAyLAotICAgICAgICAzICoga2VybmVsU2l6ZS5oZWln
aHQoKSAvIDIKLSAgICB9OwotfQotCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHNpemUg
PSBtX29wZXJhdGlvbnMuc2l6ZSgpOwpAQCAtNzgsMzMgKzY3LDI0IEBAIGJvb2wgRmlsdGVyT3Bl
cmF0aW9uczo6aGFzUmVmZXJlbmNlRmlsdGVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFzT3V0c2V0cygpIGNvbnN0Ci17Ci0gICAgZm9y
IChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKLSAgICAgICAgYXV0byB0eXBlID0g
b3BlcmF0aW9uLT50eXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IEZpbHRlck9wZXJhdGlvbjo6
QkxVUiB8fCB0eXBlID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1GaWx0ZXJPdXRz
ZXRzIEZpbHRlck9wZXJhdGlvbnM6Om91dHNldHMoKSBjb25zdAorSW50T3V0c2V0cyBGaWx0ZXJP
cGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKIHsKLSAgICBGaWx0ZXJPdXRzZXRzIHRvdGFsT3V0
c2V0czsKKyAgICBJbnRPdXRzZXRzIHRvdGFsT3V0c2V0czsKICAgICBmb3IgKGF1dG8mIG9wZXJh
dGlvbiA6IG1fb3BlcmF0aW9ucykgewogICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbi0+dHlwZSgp
KSB7CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICBh
dXRvJiBibHVyT3BlcmF0aW9uID0gZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oKm9wZXJh
dGlvbik7CiAgICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGJsdXJPcGVyYXRpb24uc3RkRGV2aWF0aW9uKCksIDApOwotICAgICAgICAgICAgSW50U2l6
ZSBvdXRzZXRTaXplID0gb3V0c2V0U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsKLSAgICAgICAg
ICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXpl
LndpZHRoKCksIG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7CisgICAg
ICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0
c2V0U2l6ZSh7IHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uIH0pOworICAgICAgICAgICAgSW50
T3V0c2V0cyBvdXRzZXRzKG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSwg
b3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0U2l6ZS53aWR0aCgpKTsKICAgICAgICAgICAgIHRv
dGFsT3V0c2V0cyArPSBvdXRzZXRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CiAgICAgICAgICAgICBh
dXRvJiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJh
dGlvbj4oKm9wZXJhdGlvbik7Ci0gICAgICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBvdXRz
ZXRTaXplRm9yQmx1cihkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpKTsKLSAgICAg
ICAgICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyB7CisgICAgICAgICAgICBmbG9hdCBzdGREZXZp
YXRpb24gPSBkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpOworICAgICAgICAgICAg
SW50U2l6ZSBvdXRzZXRTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZU91dHNldFNpemUo
eyBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiB9KTsKKyAgICAgICAgICAgIEludE91dHNldHMg
b3V0c2V0cyB7CiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQo
KSAtIGRyb3BTaGFkb3dPcGVyYXRpb24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgw
LCBvdXRzZXRTaXplLndpZHRoKCkgKyBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSksCiAgICAgICAg
ICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BTaGFkb3dPcGVy
YXRpb24ueSgpKSwKQEAgLTExMyw2ICs5Myw5IEBAIEZpbHRlck91dHNldHMgRmlsdGVyT3BlcmF0
aW9uczo6b3V0c2V0cygpIGNvbnN0CiAgICAgICAgICAgICB0b3RhbE91dHNldHMgKz0gb3V0c2V0
czsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpSRUZFUkVOQ0U6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKaW5kZXggOTMwMzQzYzRhNGYxMDJmMmVkZTU0
OWEwOTY2Yzc4MGFiOThmMDAyYS4uM2M3NzMwMDY4NWNiYzIwNGQwZDUwZDQ1Yzk1NjZhOGE1ZTcx
MWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTMyLDggKzMyLDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi11c2luZyBGaWx0ZXJPdXRzZXRzID0gSW50UmVjdEV4dGVudDsKLQog
Y2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC01MSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0aW9uc01h
dGNoKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKIAotICAgIGJvb2wgaGFzT3V0c2V0
cygpIGNvbnN0OwotICAgIEZpbHRlck91dHNldHMgb3V0c2V0cygpIGNvbnN0OworICAgIGJvb2wg
aGFzT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuICFvdXRzZXRzKCkuaXNaZXJvKCk7IH0KKyAgICBJ
bnRPdXRzZXRzIG91dHNldHMoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmlsdGVyVGhhdEFmZmVj
dHNPcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggMDZmMzIyZDAyZTg1MzU5ZTlk
YWYyN2JkMDkyMWIxYjRhY2RmM2ExNy4uOTk5MzRiODA1NTczNTRmN2FmM2IyZTFhYmE1MTUzYWZi
ZjYyZmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTI5OCw3ICsyOTgsNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zKFJlZ2lvbiYg
b3ZlcmxhcFJlZ2lvbiwgUmVnaW9uJiBubwogICAgICAgICBib3VuZGluZ1JlY3QgPSBtX3N0YXRl
LmNvbnRlbnRzUmVjdDsKIAogICAgIGlmIChtX2N1cnJlbnRGaWx0ZXJzLmhhc091dHNldHMoKSkg
ewotICAgICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMgPSBtX2N1cnJlbnRGaWx0ZXJzLm91dHNl
dHMoKTsKKyAgICAgICAgYXV0byBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVycy5vdXRzZXRzKCk7
CiAgICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QoYm91bmRpbmdSZWN0KTsKICAg
ICAgICAgYm91bmRpbmdSZWN0Lm1vdmUoc3RkOjptYXgoMCwgLW91dHNldHMubGVmdCgpKSwgc3Rk
OjptYXgoMCwgLW91dHNldHMudG9wKCkpKTsKICAgICAgICAgYm91bmRpbmdSZWN0LmV4cGFuZChv
dXRzZXRzLmxlZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMu
Ym90dG9tKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCA0Nzk4
MWFlNjk5MWRjNjQ5MTUyMGZjODI0MzJlY2M0OTU4NjQ0M2ZhLi42ZDU5NWEyZGIyOWM1M2JmYjI5
YjY2YWU1MmJmMjI3ZTViYTcxMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcApAQCAtMTMzLDEwICsxMzMsOSBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogewogICAg
IG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92
ZXNQaXhlbHMoKTsKICAgICBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3Vy
aXR5T3JpZ2luID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlT
ZWN1cml0eU9yaWdpbigpOwotICAgIGlmIChtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscykKLSAg
ICAgICAgbV9vdXRzZXRzID0gb3BlcmF0aW9ucy5vdXRzZXRzKCk7CiAKICAgICBtX2VmZmVjdHMu
Y2xlYXIoKTsKKyAgICBtX291dHNldHMgPSB7IH07CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBwcmV2aW91c0VmZmVjdCA9IG1fc291cmNlR3JhcGhpYy5wdHIoKTsKICAgICBmb3IgKGF1dG8m
IG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CkBAIC0zNzQsMTIgKzM3Myw4
IEBAIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlS
ZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlCiB7CiAgICAgLy8gVGhlIHJlc3VsdCBvZiB0aGlz
IGZ1bmN0aW9uIGlzIHRoZSBhcmVhIGluIHRoZSAiZmlsdGVyQm94UmVjdCIgdGhhdCBuZWVkcyB0
byBiZSByZXBhaW50ZWQsIHNvIHRoYXQgd2UgZnVsbHkgY292ZXIgdGhlICJkaXJ0eVJlY3QiLgog
ICAgIGF1dG8gcmVjdEZvclJlcGFpbnQgPSBkaXJ0eVJlY3Q7Ci0gICAgaWYgKGhhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscygpKSB7Ci0gICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgb3V0c2V0cyBhcmUg
cmV2ZXJzZWQgaGVyZSBiZWNhdXNlIHdlIGFyZSBnb2luZyBiYWNrd2FyZHMgLT4gd2UgaGF2ZSB0
aGUgZGlydHkgcmVjdCBhbmQKLSAgICAgICAgLy8gbmVlZCB0byBmaW5kIG91dCB3aGF0IGlzIHRo
ZSByZWN0YW5nbGUgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIHJlc3VsdCBpbnNpZGUgdGhhdCBk
aXJ0eSByZWN0LgotICAgICAgICByZWN0Rm9yUmVwYWludC5tb3ZlKC1tX291dHNldHMucmlnaHQo
KSwgLW1fb3V0c2V0cy5ib3R0b20oKSk7Ci0gICAgICAgIHJlY3RGb3JSZXBhaW50LmV4cGFuZCht
X291dHNldHMubGVmdCgpICsgbV9vdXRzZXRzLnJpZ2h0KCksIG1fb3V0c2V0cy50b3AoKSArIG1f
b3V0c2V0cy5ib3R0b20oKSk7Ci0gICAgfQorICAgIGlmIChoYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKSkKKyAgICAgICAgcmVjdEZvclJlcGFpbnQgKz0gb3V0c2V0cygpOwogICAgIHJlY3RGb3JS
ZXBhaW50LmludGVyc2VjdChmaWx0ZXJCb3hSZWN0KTsKICAgICByZXR1cm4gcmVjdEZvclJlcGFp
bnQ7CiB9CkBAIC0zOTcsNyArMzkyLDYgQEAgdm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdl
UmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKICAgICBtX2dyYXBoaWNzQnVm
ZmVyQXR0YWNoZWQgPSBmYWxzZTsKIH0KIAotCiB2b2lkIENTU0ZpbHRlcjo6c2V0TWF4RWZmZWN0
UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KQogewogICAgIGZvciAoYXV0byYgZWZm
ZWN0IDogbV9lZmZlY3RzKQpAQCAtNDEyLDQgKzQwNiwxNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6
b3V0cHV0UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGxhc3RFZmZlY3QucmVxdWVzdGVkUmVnaW9u
T2ZJbnB1dEltYWdlRGF0YShJbnRSZWN0IHsgbV9maWx0ZXJSZWdpb24gfSk7CiB9CiAKK0ludE91
dHNldHMgQ1NTRmlsdGVyOjpvdXRzZXRzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzRmlsdGVy
VGhhdE1vdmVzUGl4ZWxzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFtX291dHNl
dHMuaXNaZXJvKCkpCisgICAgICAgIHJldHVybiBtX291dHNldHM7CisKKyAgICBmb3IgKGF1dG8m
IGVmZmVjdCA6IG1fZWZmZWN0cykKKyAgICAgICAgbV9vdXRzZXRzICs9IGVmZmVjdC0+b3V0c2V0
cygpOworICAgIHJldHVybiBtX291dHNldHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAppbmRleCBiZThmN2E2ZmEzY2IwZTVjYTY3
ZDM5YzU5YTg0MDM3NGQ2YmRjODhmLi42ODNhYTg0YmFkMGRhYjQ5ZmZjMTY0NmE3OGVhMDU4NjUz
N2U2NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC02MSw2ICs2MSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0
cmljdGVkQnlTZWN1cml0eU9yaWdpbjsgfQogCiAgICAgdm9pZCBkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oKTsKKyAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBDU1NGaWx0ZXIoKTsKQEAgLTkzLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWY8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFwaGljOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IG1fc291cmNlQWxwaGE7CiAKLSAgICBJbnRSZWN0RXh0ZW50IG1fb3V0c2V0czsKKyAgICBt
dXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCiAgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVy
QXR0YWNoZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
OWM0NDkxMjZiMjMwZDIyNjUwODQ3ZDlmMTMxNzFjYjgyY2I3NmNlNC4uZGRhOTIzYTRlNGI5Mzc2
YjY0ZmI2MzE3ZGQ4NzFmNGY2ZGM3MzVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0xOTI5LDcgKzE5MjksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRG
aWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3Qp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBMYXlvdXRSZWN0IHJlY3RGb3JSZXBhaW50ID0g
cmVjdDsKLSAgICByZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVyT3V0c2V0cygpLmV4cGFuZFJlY3Qo
cmVjdEZvclJlcGFpbnQpOworICAgIHJlY3RGb3JSZXBhaW50ICs9IGZpbHRlck91dHNldHMoKTsK
IAogICAgIG1fZmlsdGVycy0+ZXhwYW5kRGlydHlTb3VyY2VSZWN0KHJlY3RGb3JSZXBhaW50KTsK
ICAgICAKQEAgLTE5NjQsNyArMTk2NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEZpbHRlckJh
Y2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIGJvb2wg
UmVuZGVyTGF5ZXI6Omhhc0FuY2VzdG9yV2l0aEZpbHRlck91dHNldHMoKSBjb25zdAogewogICAg
IGZvciAoY29uc3QgUmVuZGVyTGF5ZXIqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+
cGFyZW50KCkpIHsKLSAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuc3R5bGUoKS5oYXNGaWx0
ZXJPdXRzZXRzKCkpCisgICAgICAgIGlmIChjdXJyLT5oYXNGaWx0ZXJPdXRzZXRzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA4Nyw3
ICsyMDg3LDcgQEAgc3RhdGljIExheW91dFJlY3QgdHJhbnNwYXJlbmN5Q2xpcEJveChjb25zdCBS
ZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IFJlbmRlckxheWUKICAgICAgICAgLy8gcGFpbnRzIHVu
ZnJhZ21lbnRlZC4KICAgICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGxheWVyLmJvdW5kaW5n
Qm94KCZsYXllcik7CiAgICAgICAgIGV4cGFuZENsaXBSZWN0Rm9yRGVzY2VuZGFudHNBbmRSZWZs
ZWN0aW9uKGNsaXBSZWN0LCBsYXllciwgJmxheWVyLCB0cmFuc3BhcmVuY3lCZWhhdmlvciwgcGFp
bnRCZWhhdmlvcik7Ci0gICAgICAgIGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5maWx0ZXJPdXRz
ZXRzKCkuZXhwYW5kUmVjdChjbGlwUmVjdCk7CisgICAgICAgIGNsaXBSZWN0ICs9IGxheWVyLmZp
bHRlck91dHNldHMoKTsKICAgICAgICAgTGF5b3V0UmVjdCByZXN1bHQgPSB0cmFuc2Zvcm0ubWFw
UmVjdChjbGlwUmVjdCk7CiAgICAgICAgIGlmICghcGFnaW5hdGlvbkxheWVyKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIxMDMsNyArMjEwMyw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0
IHRyYW5zcGFyZW5jeUNsaXBCb3goY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5k
ZXJMYXllCiAgICAgCiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGxheWVyLmJvdW5kaW5nQm94
KHJvb3RMYXllciwgbGF5ZXIub2Zmc2V0RnJvbUFuY2VzdG9yKHJvb3RMYXllciksIHRyYW5zcGFy
ZW5jeUJlaGF2aW9yID09IEhpdFRlc3RpbmdUcmFuc3BhcmVuY3lDbGlwQm94ID8gUmVuZGVyTGF5
ZXI6OlVzZUZyYWdtZW50Qm94ZXNJbmNsdWRpbmdDb21wb3NpdGluZyA6IFJlbmRlckxheWVyOjpV
c2VGcmFnbWVudEJveGVzRXhjbHVkaW5nQ29tcG9zaXRpbmcpOwogICAgIGV4cGFuZENsaXBSZWN0
Rm9yRGVzY2VuZGFudHNBbmRSZWZsZWN0aW9uKGNsaXBSZWN0LCBsYXllciwgcm9vdExheWVyLCB0
cmFuc3BhcmVuY3lCZWhhdmlvciwgcGFpbnRCZWhhdmlvcik7Ci0gICAgbGF5ZXIucmVuZGVyZXIo
KS5zdHlsZSgpLmZpbHRlck91dHNldHMoKS5leHBhbmRSZWN0KGNsaXBSZWN0KTsKKyAgICBjbGlw
UmVjdCArPSBsYXllci5maWx0ZXJPdXRzZXRzKCk7CiAKICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9
CkBAIC02MTE0LDcgKzYxMTQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVM
YXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgYwogICAgICAgICBj
b21wdXRlTGF5ZXJzVW5pb24oKmNoaWxkTGF5ZXIpOwogCiAgICAgaWYgKGZsYWdzLmNvbnRhaW5z
KEluY2x1ZGVGaWx0ZXJPdXRzZXRzKSB8fCAoZmxhZ3MuY29udGFpbnMoSW5jbHVkZVBhaW50ZWRG
aWx0ZXJPdXRzZXRzKSAmJiBwYWludHNXaXRoRmlsdGVycygpKSkKLSAgICAgICAgcmVuZGVyZXIo
KS5zdHlsZSgpLmZpbHRlck91dHNldHMoKS5leHBhbmRSZWN0KHVuaW9uQm91bmRzKTsKKyAgICAg
ICAgdW5pb25Cb3VuZHMgKz0gZmlsdGVyT3V0c2V0cygpOwogCiAgICAgaWYgKChmbGFncyAmIElu
Y2x1ZGVTZWxmVHJhbnNmb3JtKSAmJiBwYWludHNXaXRoVHJhbnNmb3JtKFBhaW50QmVoYXZpb3I6
Ok5vcm1hbCkpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgqIGFmZmluZVRyYW5zID0g
dHJhbnNmb3JtKCk7CkBAIC02ODM3LDYgKzY4MzcsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6Zmls
dGVyTmVlZHNSZXBhaW50KCkKICAgICByZW5kZXJlcigpLnJlcGFpbnQoKTsKIH0KIAorSW50T3V0
c2V0cyBSZW5kZXJMYXllcjo6ZmlsdGVyT3V0c2V0cygpIGNvbnN0Cit7CisgICAgaWYgKG1fZmls
dGVycykKKyAgICAgICAgcmV0dXJuIG1fZmlsdGVycy0+ZmlsdGVyKCkgPyBtX2ZpbHRlcnMtPmZp
bHRlcigpLT5vdXRzZXRzKCkgOiBJbnRPdXRzZXRzKCk7CisgICAgcmV0dXJuIHJlbmRlcmVyKCku
c3R5bGUoKS5maWx0ZXJPdXRzZXRzKCk7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXI6OmlzVHJhbnNw
YXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3QKIHsKICAgICBzdGF0aWMgY29uc3Qg
ZG91YmxlIG1pbmltdW1WaXNpYmxlT3BhY2l0eSA9IDAuMDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCmluZGV4IGNmNDI4OWJkN2Y4ZGQ4ZjQ3MmNkMGZlZjU3NDFiNzQ4OGY2
YWU1ZWQuLmE5N2MzZjliNjY3MDgwY2Y3MjZkYmQwODRmMzg5NTk2NDc4ZjlmMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03OTAsNiArNzkwLDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKICAgICBib29sIGhhc0ZpbHRlcigp
IGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuaGFzRmlsdGVyKCk7IH0KKyAgICBib29sIGhhc0Zp
bHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiAhZmlsdGVyT3V0c2V0cygpLmlzWmVybygpOyB9
CisgICAgSW50T3V0c2V0cyBmaWx0ZXJPdXRzZXRzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNCYWNr
ZHJvcEZpbHRlcigpIGNvbnN0CiAgICAgewogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGNiZjI1
MzYzYWM1YmZmZDg0NDU4YTlhNWE1Y2Y2ZWZmNzU1YWY5ODUuLmU2MWViN2MwYmI5NGYzZTAwNTIy
NWIzNjk3Mjc1ODFkNTcxNDA5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCkBAIC0yMjksOCArMjI5LDcgQEAgcHVibGljOgogCiAgICAgTGF5b3V0
Qm94RXh0ZW50IG1hc2tCb3hJbWFnZU91dHNldHMoKSBjb25zdCB7IHJldHVybiBpbWFnZU91dHNl
dHMobWFza0JveEltYWdlKCkpOyB9CiAKLSAgICBib29sIGhhc0ZpbHRlck91dHNldHMoKSBjb25z
dCB7IHJldHVybiBoYXNGaWx0ZXIoKSAmJiBmaWx0ZXIoKS5oYXNPdXRzZXRzKCk7IH0KLSAgICBG
aWx0ZXJPdXRzZXRzIGZpbHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSA/
IGZpbHRlcigpLm91dHNldHMoKSA6IEZpbHRlck91dHNldHMoKTsgfQorICAgIEludE91dHNldHMg
ZmlsdGVyT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZpbHRlcigpID8gZmlsdGVyKCkub3V0
c2V0cygpIDogSW50T3V0c2V0cygpOyB9CiAKICAgICBPcmRlciBydGxPcmRlcmluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9yZGVyPihtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5n
KTsgfQogICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIgb3JkZXJpbmcpIHsgbV9pbmhlcml0
ZWRGbGFncy5ydGxPcmRlcmluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmRlcmluZyk7IH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzODZlMzJlZWUxNjBiZTQzNDNmZjk5NzU2MmJiZTRiY2RmMTNmMWE4Li4wZDY5OGU0
ZDEzZDdkMTViM2M0MzA1MzRiMWY1YmE4YTc1MTg0NzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTktMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4K
KworICAgICAgICBPdXRzZXRzIGZvciByZWZlcmVuY2VkIFNWRyBmaWx0ZXJzIGFyZSBhbHdheXMg
emVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAy
ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBj
c3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLmh0bWw6IEFk
ZGVkLgorCiAyMDE5LTEwLTEwICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIEltcG9ydCBjc3MvY3NzLWltYWdlcyBXUFQgdGVzdHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBl
ZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRl
ci1jbGlwcGVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjkwY2NjYzIzZmU3MDIzNDY0ZjBl
ODMzYzgxZjA3ZjI1YjZmZWUwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MTEgQEAKKzxzdHlsZT4KKyAgICAuY29udGFpbmVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4K
KyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ODMzMTE1Y2JlMWUyNzlhOTM0NzE0ZmZkYWRkODU1NWVmNDI3ODY3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlw
cGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPHN0eWxlPgorICAgIC5jb250YWluZXIgeworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJm
bG93OiBoaWRkZW47CisgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB9CisgICAg
LmJveCB7CisgICAgICAgIHdpZHRoOiA4MDBweDsKKyAgICAgICAgaGVpZ2h0OiA4MDBweDsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorICAgIC5nYXVzc2lhbi1ibHVy
IHsKKyAgICAgICAgZmlsdGVyOiB1cmwoI2dhdXNzaWFuLWJsdXIpOworICAgICAgICB0cmFuc2Zv
cm06IHRyYW5zbGF0ZSgtMzAwcHgsIC0zMDBweCk7CisgICAgfQorPC9zdHlsZT4KKzxib2R5Pgor
ICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCBnYXVz
c2lhbi1ibHVyIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c3ZnIGhlaWdodD0iMCI+CisgICAg
ICAgIDxmaWx0ZXIgaWQ9ImdhdXNzaWFuLWJsdXIiPgorICAgICAgICAgICAgPGZlZ2F1c3NpYW5i
bHVyIHN0ZERldmlhdGlvbj0iMTAwIj4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgPC9zdmc+Cis8
L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380929</attachid>
            <date>2019-10-14 15:58:33 -0700</date>
            <delta_ts>2019-10-14 19:00:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202826-20191014155832.patch</filename>
            <type>text/plain</type>
            <size>28036</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzYzMzViYzY3NzQ1YWZh
MDk4NWM2YmI0YWIxNDVmOTM3M2IxNDExNi4uOTU0NTYxN2ViOWE2ODAzYjgzODE1NGZhYzQ0ZTIz
ZTNhYTM4ZmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE5LTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0c2V0
cyBmb3IgcmVmZXJlbmNlZCBTVkcgZmlsdGVycyBhcmUgYWx3YXlzIHplcm8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjgyNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTb21ldGltZXMgdGhlIGZpbHRlciBp
cyBhcHBsaWVkIG9ubHkgdG8gYSBwYXJ0IG9mIHRoZSBpbWFnZSwgc28gd2UgbmVlZAorICAgICAg
ICB0byBlbmxhcmdlIHRoZSBzb3VyY2UgcmVjdGFuZ2xlIHN1Y2ggdGhhdCB0aGUgYm9yZGVyIG9m
IHRoZSByZXN1bHQgaW1hZ2UKKyAgICAgICAgbG9va3MgbGlrZSBhcyBpZiB0aGUgZmlsdGVyIHdl
cmUgYXBwbGllZCB0byB0aGUgd2hvbGUgaW1hZ2UuCisKKyAgICAgICAgVGhlIGZpbHRlciBvdXRz
ZXRzIHNob3VsZCBvbmx5IGJlIGNhbGN1bGF0ZWQgZm9yIHRoZSBibHVyIGFuZCB0aGUgZHJvcAor
ICAgICAgICBzaGFkb3cgZmlsdGVycy4gVGhlIHByb2JsZW0gaXMgRmlsdGVyT3BlcmF0aW9uczo6
b3V0c2V0cygpIHdhcyByZXR1cm5pbmcKKyAgICAgICAgZW1wdHkgb3V0c2V0cyBhbHdheXMgZm9y
IHRoZSByZWZlcmVuY2VkIGZpbHRlcnMuCisKKyAgICAgICAgU2luY2UgdGhlIHJlZmVyZW5jZWQg
ZmlsdGVycyBtdXN0IGJlIHNvZnR3YXJlIGZpbHRlcnMsIHRoZSBmaXggaXMgdG8gcmVseQorICAg
ICAgICBvbiBDU1NGaWx0ZXIgaW4gY2FsY3VsYXRpbmcgdGhlIGZpbHRlciBvdXRzZXRzIGZvciBz
b2Z0d2FyZSBmaWx0ZXJzLgorCisgICAgICAgIEJ5IGFkZGluZyBhIHZpcnR1YWwgZnVuY3Rpb24g
Y2FsbGVkIG91dHNldCgpIHRvIHRoZSBGaWx0ZXJFZmZlY3QgY2xhc3MsIAorICAgICAgICB3ZSBj
YW4gbG9vcCB0aHJvdWdoIHRoZSBDU1NGaWx0ZXI6Om1fZWZmZWN0cyBhc2tpbmcgZXZlcnkgRmls
dGVyRWZmZWN0CisgICAgICAgIHRvIHJldHVybiBpdHMgb3V0c2V0KCkuIFRoaXMgZnVuY3Rpb24g
aXMgb25seSBvdmVycmlkZGVuIGJ5IEZFRHJvcFNoYWRvdworICAgICAgICBhbmQgRkVHYXVzc2lh
bkJsdXIuCisKKyAgICAgICAgVGhpcyBzaG91bGQgd29yayBiZWNhdXNlIFJlbmRlckxheWVyIGJ1
aWxkcyB0aGUgQ1NTRmlsdGVyIHdoZW4gdGhlIHN0eWxlQ2hhbmdlZCgpCisgICAgICAgIGhhcHBl
bnMgdGhyb3VnaCBpdHMgdXBkYXRlRmlsdGVyUGFpbnRpbmdTdHJhdGVneSgpLiBUaGlzIHdpbGwg
Z3VhcmFudGVlIAorICAgICAgICB0aGF0IG1fZmlsdGVycy0+ZmlsdGVyKCktPm91dHNldHMoKSB3
aWxsIHJldHVybiB0aGUgY29ycmVjdCBvdXRzZXRzIGZvcgorICAgICAgICB0aGUgcmVmZXJlbmNl
ZCBhbmQgdGhlIG5vbi1yZWZlcmVuY2VkIHNvZnR3YXJlIGZpbHRlcnMuCisKKyAgICAgICAgV2Ug
c2hvdWxkIGtlZXAgRmlsdGVyT3BlcmF0aW9uczo6b3V0c2V0cygpIGJlY2F1c2UgaXQgaGFzIGJl
IHVzZWQgZm9yCisgICAgICAgIHRoZSBoYXJkd2FyZSBub24tcmVmZXJlbmNlZCBmaWx0ZXJzLiBJ
biB0aGF0IGNhc2UsIFJlbmRlckxheWVyIGRvZXMgbm90CisgICAgICAgIGJ1aWxkIHRoZSB0aGUg
ZmlsdGVyIGVmZmVjdHMuIFRoZXJlZm9yZSBtX2ZpbHRlcnMgY2FuJ3QgYmUgdXNlZCBiZWNhdXNl
CisgICAgICAgIGl0IGlzIG51bGwgaW4gdGhpcyBjYXNlLgorCisgICAgICAgIEZvciBhY2N1cmFj
eSwgaGFzT3V0c2V0cygpIGltcGxlbWVudGF0aW9uIGlzIGRlbGV0ZWQuIEhhdmluZyBhIGJsdXIg
b3IKKyAgICAgICAgZHJvcCBzaGFkb3cgZmlsdGVyIGVmZmVjdCBpcyBub3QgZW5vdWdoIHRvIHNh
eSBoYXNPdXRzZXRzKCkgaXMgdHJ1ZS4gV2UKKyAgICAgICAgbmVlZCB0byBjYWxjdWxhdGUgdGhl
IG91dHNldHMgZmlyc3QgYW5kIHRoZW4gYXNrIGlmIGl0IGlzWmVybygpIG9yIG5vdC4KKworICAg
ICAgICBUZXN0OiBjc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcis9KToKKyAgICAg
ICAgKFdlYkNvcmU6OkludFJlY3RFeHRlbnQ6OmV4cGFuZFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICBJbnRSZWN0RXh0ZW50IGlzIG9ubHkgdXNlZCBhcyBhIGZpbHRlciBvdXRzZXRzLiBT
byBhZGQgdGhlIGRlZmluaXRpb24gb2YKKyAgICAgICAgSW50T3V0c2V0cyBpbiBJbnRSZWN0RXh0
ZW50LmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6Om91dHNldHMgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6Om91dHNldHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zOjpvdXRzZXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om91dHNldFNp
emVGb3JCbHVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6
Omhhc091dHNldHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uczo6aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OmNvbXB1dGVPdmVybGFwUmVnaW9ucyk6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGly
dHlSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0c2V0cyBjb25zdCk6Cisg
ICAgICAgIENhbGN1bGF0ZSBtX291dHNldHMgb25jZSBhbmQgY2FjaGUgaXRzIHZhbHVlIGZvciBs
YXRlciB1c2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6c2V0RmlsdGVyQmFja2VuZE5lZWRzUmVwYWludGluZ0luUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cmFuc3BhcmVuY3lDbGlwQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZpbHRlck91dHNldHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhhc0ZpbHRlck91dHNldHMgY29uc3Qp
OiBEZWxldGVkLgorCiAyMDE5LTEwLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBIQVZFKElPU1VSRkFDRV9SR0IxMCkgaW5zdGVhZCBvZiBQ
TEFURk9STShJT1NfRkFNSUxZKSB3aGVyZSBhcHByb3ByaWF0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5oCmluZGV4IDYxMTczOTA1NDAyMWI0
MzM0YjdiZmJmNjQ3ZTNjNmQxNTk2M2U5NmUuLjQzYzgzMmUwODhlMDQyNjI4ZjI3YmFlMjQ0OWI0
MDhhMjAzYTYyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3RFeHRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0RXh0ZW50LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDIyICsyOCwxMyBAQAogICogU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBJbnRSZWN0RXh0ZW50X2gKLSNkZWZpbmUgSW50UmVjdEV4dGVu
dF9oCi0KLSNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJbnRSZWN0RXh0ZW50IHsKIHB1YmxpYzoKLSAgICBJbnRSZWN0
RXh0ZW50KCkKLSAgICAgICAgOiBtX3RvcCgwKQotICAgICAgICAsIG1fcmlnaHQoMCkKLSAgICAg
ICAgLCBtX2JvdHRvbSgwKQotICAgICAgICAsIG1fbGVmdCgwKQotICAgIHsKLSAgICB9CisgICAg
SW50UmVjdEV4dGVudCgpID0gZGVmYXVsdDsKIAogICAgIEludFJlY3RFeHRlbnQoaW50IHRvcCwg
aW50IHJpZ2h0LCBpbnQgYm90dG9tLCBpbnQgbGVmdCkKICAgICAgICAgOiBtX3RvcCh0b3ApCkBA
IC02NCwzMCArNTYsMTggQEAgcHVibGljOgogICAgIGludCBsZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9sZWZ0OyB9CiAgICAgdm9pZCBzZXRMZWZ0KGludCBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0K
IAotICAgIHZvaWQgZXhwYW5kUmVjdChMYXlvdXRSZWN0JiByZWN0KSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKGlzWmVybygpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlY3Qu
bW92ZSgtbGVmdCgpLCAtdG9wKCkpOwotICAgICAgICByZWN0LmV4cGFuZChsZWZ0KCkgKyByaWdo
dCgpLCB0b3AoKSArIGJvdHRvbSgpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgYm9vbCBpc1pl
cm8oKSBjb25zdCB7IHJldHVybiAhbGVmdCgpICYmICFyaWdodCgpICYmICF0b3AoKSAmJiAhYm90
dG9tKCk7IH0KIAotICAgIGludCBtX3RvcDsKLSAgICBpbnQgbV9yaWdodDsKLSAgICBpbnQgbV9i
b3R0b207Ci0gICAgaW50IG1fbGVmdDsKK3ByaXZhdGU6CisgICAgaW50IG1fdG9wIHsgMCB9Owor
ICAgIGludCBtX3JpZ2h0IHsgMCB9OworICAgIGludCBtX2JvdHRvbSB7IDAgfTsKKyAgICBpbnQg
bV9sZWZ0IHsgMCB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRSZWN0
RXh0ZW50JiBhLCBjb25zdCBJbnRSZWN0RXh0ZW50JiBiKQogewotICAgIHJldHVybiBhLnRvcCgp
ID09IGIudG9wKCkKLSAgICAgICAgJiYgYS5yaWdodCgpID09IGIucmlnaHQoKQotICAgICAgICAm
JiBhLmJvdHRvbSgpID09IGIuYm90dG9tKCkKLSAgICAgICAgJiYgYS5sZWZ0KCkgPT0gYi5sZWZ0
KCk7CisgICAgcmV0dXJuIGEudG9wKCkgPT0gYi50b3AoKSAmJiBhLnJpZ2h0KCkgPT0gYi5yaWdo
dCgpICYmIGEuYm90dG9tKCkgPT0gYi5ib3R0b20oKSAmJiBhLmxlZnQoKSA9PSBiLmxlZnQoKTsK
IH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbnRSZWN0RXh0ZW50JiBhLCBjb25z
dCBJbnRSZWN0RXh0ZW50JiBiKQpAQCAtOTUsMTQgKzc1LDIzIEBAIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSW50UmVjdEV4dGVudCYgYSwgY29uc3QgSW50UmVjdEV4dGVudCYgYikKICAg
ICByZXR1cm4gIShhID09IGIpOwogfQogCi1pbmxpbmUgdm9pZCBvcGVyYXRvcis9KEludFJlY3RF
eHRlbnQmIGEsIGNvbnN0IEludFJlY3RFeHRlbnQmIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWN0
VHlwZT4KK2lubGluZSBSZWN0VHlwZSYgb3BlcmF0b3IrPShSZWN0VHlwZSYgcmVjdCwgY29uc3Qg
SW50UmVjdEV4dGVudCYgZXh0ZW50KQoreworICAgIHJlY3QubW92ZSgtZXh0ZW50LmxlZnQoKSwg
LWV4dGVudC50b3AoKSk7CisgICAgcmVjdC5leHBhbmQoZXh0ZW50LmxlZnQoKSArIGV4dGVudC5y
aWdodCgpLCBleHRlbnQudG9wKCkgKyBleHRlbnQuYm90dG9tKCkpOworICAgIHJldHVybiByZWN0
OworfQorCitpbmxpbmUgSW50UmVjdEV4dGVudCYgb3BlcmF0b3IrPShJbnRSZWN0RXh0ZW50JiBh
LCBjb25zdCBJbnRSZWN0RXh0ZW50JiBiKQogewogICAgIGEuc2V0VG9wKGEudG9wKCkgKyBiLnRv
cCgpKTsKICAgICBhLnNldFJpZ2h0KGEucmlnaHQoKSArIGIucmlnaHQoKSk7CiAgICAgYS5zZXRC
b3R0b20oYS5ib3R0b20oKSArIGIuYm90dG9tKCkpOwogICAgIGEuc2V0TGVmdChhLmxlZnQoKSAr
IGIubGVmdCgpKTsKKyAgICByZXR1cm4gYTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
dXNpbmcgSW50T3V0c2V0cyA9IEludFJlY3RFeHRlbnQ7CiAKLSNlbmRpZiAvLyBJbnRSZWN0RXh0
ZW50X2gKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAppbmRleCBhMzc0
NGZhMTVlMGYzZjlhMDNiODY5NjcwNmQyOGMxNDU4NjE2YzQyLi44ODlhYTJkZmIyZTE2NTYxNDk4
YjM1ZGVmMTY4ODRmN2FiZTYwY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC0xMTUsNiArMTE1
LDE3IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIHJl
c3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgZHJhd2lu
Z1JlZ2lvbik7CiB9CiAKK0ludE91dHNldHMgRkVEcm9wU2hhZG93OjpvdXRzZXRzKCkgY29uc3QK
K3sKKyAgICBJbnRTaXplIG91dHNldFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0
c2V0U2l6ZSh7IG1fc3RkWCwgbV9zdGRZIH0pOworICAgIHJldHVybiB7CisgICAgICAgIHN0ZDo6
bWF4PGludD4oMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSAtIG1fZHkpLAorICAgICAgICBzdGQ6Om1h
eDxpbnQ+KDAsIG91dHNldFNpemUud2lkdGgoKSArIG1fZHgpLAorICAgICAgICBzdGQ6Om1heDxp
bnQ+KDAsIG91dHNldFNpemUuaGVpZ2h0KCkgKyBtX2R5KSwKKyAgICAgICAgc3RkOjptYXg8aW50
PigwLCBvdXRzZXRTaXplLndpZHRoKCkgLSBtX2R4KQorICAgIH07Cit9CisKIFRleHRTdHJlYW0m
IEZFRHJvcFNoYWRvdzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVw
cmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdAogewogICAgIHRzIDw8IGluZGVu
dCA8PCJbZmVEcm9wU2hhZG93IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCmluZGV4IDU3YTI2Nzc4YmViMmE1ZjA5
NGY3ZjUzOTlhMzhkYzM1ODc2ZTVmNzUuLmI0ZTBhMjAxMmZlZGI3Yjc3YmYzZTA1NzM0ZWU4OGEy
OWVmZjM4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaApAQCAtNTYsNiArNTYsOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwogCisgICAgSW50
T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBXVEY6OlRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25U
eXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1
ci5jcHAKaW5kZXggMTE4MDIzMTFlOWFlYzFjOWI1ZjJkMDdhZmEyOWQ0NzEzMDYyYjY3Yi4uNDli
YTg0MTczYzJkMWE5OTU0ZTU2MTM5MGNlMDNjMjRiYzkwYzgxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1
ci5jcHAKQEAgLTQ4Nyw2ICs0ODcsMTQgQEAgSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3Vs
YXRlS2VybmVsU2l6ZShjb25zdCBGaWx0ZXImIGZpbHRlciwgRmxvYXRTaXplIHN0ZEQKICAgICBy
ZXR1cm4gY2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJl
c29sdXRpb24oc3RkRGV2aWF0aW9uKSk7CiB9CiAKK0ludFNpemUgRkVHYXVzc2lhbkJsdXI6OmNh
bGN1bGF0ZU91dHNldFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikKK3sKKyAgICBhdXRvIGtl
cm5lbFNpemUgPSBjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoc3RkRGV2aWF0aW9uKTsKKwor
ICAgIC8vIFdlIHRha2UgdGhlIGhhbGYga2VybmVsIHNpemUgYW5kIG11bHRpcGx5IGl0IHdpdGgg
dGhyZWUsIGJlY2F1c2Ugd2UgcnVuIGJveCBibHVyIHRocmVlIHRpbWVzLgorICAgIHJldHVybiB7
IDMgKiBrZXJuZWxTaXplLndpZHRoKCkgLyAyLCAzICoga2VybmVsU2l6ZS5oZWlnaHQoKSAvIDIg
fTsKK30KKwogdm9pZCBGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qo
KQogewogICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVy
KCksIHsgbV9zdGRYLCBtX3N0ZFkgfSk7CkBAIC01MzgsNiArNTQ2LDEyIEBAIHZvaWQgRkVHYXVz
c2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcGxhdGZvcm1BcHBseSgqcmVz
dWx0UGl4ZWxBcnJheSwgKnRtcEltYWdlRGF0YSwga2VybmVsU2l6ZS53aWR0aCgpLCBrZXJuZWxT
aXplLmhlaWdodCgpLCBwYWludFNpemUpOwogfQogCitJbnRPdXRzZXRzIEZFR2F1c3NpYW5CbHVy
OjpvdXRzZXRzKCkgY29uc3QKK3sKKyAgICBJbnRTaXplIG91dHNldFNpemUgPSBjYWxjdWxhdGVP
dXRzZXRTaXplKHsgbV9zdGRYLCBtX3N0ZFkgfSk7CisgICAgcmV0dXJuIHsgb3V0c2V0U2l6ZS5o
ZWlnaHQoKSwgb3V0c2V0U2l6ZS53aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRT
aXplLndpZHRoKCkgfTsKK30KKwogVGV4dFN0cmVhbSYgRkVHYXVzc2lhbkJsdXI6OmV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNl
bnRhdGlvbikgY29uc3QKIHsKICAgICB0cyA8PCBpbmRlbnQgPDwgIltmZUdhdXNzaWFuQmx1ciI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggMDdlZmM3YTVkY2E1Y2IxYzRlYjVlNThkZTc2YTA2OGU3
ZDg2NGU5YS4uNWZiOTdmZmIwNzBjMmRhZWI2ZWIyODNiZWFhYTE3NjQ3Y2JiMmQzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVH
YXVzc2lhbkJsdXIuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW50
U2l6ZSBjYWxjdWxhdGVLZXJuZWxTaXplKGNvbnN0IEZpbHRlciYsIEZsb2F0U2l6ZSBzdGREZXZp
YXRpb24pOwogICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShG
bG9hdFNpemUgc3RkRGV2aWF0aW9uKTsKKyAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVPdXRz
ZXRTaXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pOwogCiBwcml2YXRlOgogICAgIEZFR2F1c3Np
YW5CbHVyKEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgRWRnZU1vZGVUeXBlKTsKQEAgLTY3LDYgKzY4
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBv
dmVycmlkZTsKIAorICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRlOworCiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9p
ZCBwbGF0Zm9ybUFwcGx5V29ya2VyKFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJzKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaAppbmRleCA5YjAwNmUzZjI5N2NjOGFjM2QwZmZkMTkwMTE5NmRkMjE0NTQ1MjRlLi4xOWY2
ZmI0ZGRiZjJjNDM2NmI4ZTViMDY1ZDE3OGVhNjU2ZWM0MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAg
LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEwMyw2
ICsxMDQsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVy
RWZmZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVVbmtub3duOyB9CiAK
KyAgICB2aXJ0dWFsIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIEludE91dHNl
dHMoKTsgfQorCiAgICAgZW51bSBjbGFzcyBSZXByZXNlbnRhdGlvblR5cGUgeyBUZXN0T3V0cHV0
LCBEZWJ1Z2dpbmcgfTsKICAgICB2aXJ0dWFsIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUgPSBSZXByZXNl
bnRhdGlvblR5cGU6OlRlc3RPdXRwdXQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNw
cAppbmRleCAzNmRmY2Y3ODQ1NmYyMGQxNTgwMmEwZmQ2YWY5Y2I5YjdiYzRiODk3Li43Zjg5NzRj
YjU1ZjdkZjEwNDYxNWJlZDNjMzNkZmFhMWEwZmNhNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
cy5jcHAKQEAgLTM0LDE3ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGlubGluZSBJbnRTaXplIG91dHNldFNpemVGb3JCbHVyKGZsb2F0IHN0ZERldmlhdGlvbikKLXsK
LSAgICBhdXRvIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlVW5zY2FsZWRL
ZXJuZWxTaXplKHsgc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24gfSk7Ci0KLSAgICAvLyBXZSB0
YWtlIHRoZSBoYWxmIGtlcm5lbCBzaXplIGFuZCBtdWx0aXBseSBpdCB3aXRoIHRocmVlLCBiZWNh
dXNlIHdlIHJ1biBib3ggYmx1ciB0aHJlZSB0aW1lcy4KLSAgICByZXR1cm4gewotICAgICAgICAz
ICoga2VybmVsU2l6ZS53aWR0aCgpIC8gMiwKLSAgICAgICAgMyAqIGtlcm5lbFNpemUuaGVpZ2h0
KCkgLyAyCi0gICAgfTsKLX0KLQogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRvcj09KGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdAogewogICAgIHNpemVfdCBzaXplID0g
bV9vcGVyYXRpb25zLnNpemUoKTsKQEAgLTc4LDMzICs2NywyNCBAQCBib29sIEZpbHRlck9wZXJh
dGlvbnM6Omhhc1JlZmVyZW5jZUZpbHRlcigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMoKSBjb25zdAotewotICAgIGZvciAo
YXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7Ci0gICAgICAgIGF1dG8gdHlwZSA9IG9w
ZXJhdGlvbi0+dHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBGaWx0ZXJPcGVyYXRpb246OkJM
VVIgfHwgdHlwZSA9PSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotRmlsdGVyT3V0c2V0
cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKK0ludE91dHNldHMgRmlsdGVyT3Bl
cmF0aW9uczo6b3V0c2V0cygpIGNvbnN0CiB7Ci0gICAgRmlsdGVyT3V0c2V0cyB0b3RhbE91dHNl
dHM7CisgICAgSW50T3V0c2V0cyB0b3RhbE91dHNldHM7CiAgICAgZm9yIChhdXRvJiBvcGVyYXRp
b24gOiBtX29wZXJhdGlvbnMpIHsKICAgICAgICAgc3dpdGNoIChvcGVyYXRpb24tPnR5cGUoKSkg
ewogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewogICAgICAgICAgICAgYXV0
byYgYmx1ck9wZXJhdGlvbiA9IGRvd25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRp
b24pOwogICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxlbmd0
aChibHVyT3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLCAwKTsKLSAgICAgICAgICAgIEludFNpemUg
b3V0c2V0U2l6ZSA9IG91dHNldFNpemVGb3JCbHVyKHN0ZERldmlhdGlvbik7Ci0gICAgICAgICAg
ICBGaWx0ZXJPdXRzZXRzIG91dHNldHMob3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0U2l6ZS53
aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCkpOworICAgICAg
ICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZU91dHNl
dFNpemUoeyBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiB9KTsKKyAgICAgICAgICAgIEludE91
dHNldHMgb3V0c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCksIG91
dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7CiAgICAgICAgICAgICB0b3Rh
bE91dHNldHMgKz0gb3V0c2V0czsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewogICAgICAgICAgICAgYXV0
byYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24+KCpvcGVyYXRpb24pOwotICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0
U2l6ZUZvckJsdXIoZHJvcFNoYWRvd09wZXJhdGlvbi5zdGREZXZpYXRpb24oKSk7Ci0gICAgICAg
ICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMgeworICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0
aW9uID0gZHJvcFNoYWRvd09wZXJhdGlvbi5zdGREZXZpYXRpb24oKTsKKyAgICAgICAgICAgIElu
dFNpemUgb3V0c2V0U2l6ZSA9IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRTaXplKHsg
c3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24gfSk7CisgICAgICAgICAgICBJbnRPdXRzZXRzIG91
dHNldHMgewogICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUuaGVpZ2h0KCkg
LSBkcm9wU2hhZG93T3BlcmF0aW9uLnkoKSksCiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwg
b3V0c2V0U2l6ZS53aWR0aCgpICsgZHJvcFNoYWRvd09wZXJhdGlvbi54KCkpLAogICAgICAgICAg
ICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUuaGVpZ2h0KCkgKyBkcm9wU2hhZG93T3BlcmF0
aW9uLnkoKSksCkBAIC0xMTMsNiArOTMsOSBAQCBGaWx0ZXJPdXRzZXRzIEZpbHRlck9wZXJhdGlv
bnM6Om91dHNldHMoKSBjb25zdAogICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6UkVGRVJFTkNFOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCmluZGV4IDkzMDM0M2M0YTRmMTAyZjJlZGU1NDlh
MDk2NmM3ODBhYjk4ZjAwMmEuLjNjNzczMDA2ODVjYmMyMDRkMGQ1MGQ0NWM5NTY2YThhNWU3MTFj
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCkBAIC0zMiw4ICszMiw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdXNpbmcgRmlsdGVyT3V0c2V0cyA9IEludFJlY3RFeHRlbnQ7Ci0KIGNs
YXNzIEZpbHRlck9wZXJhdGlvbnMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtNTEsOCArNDksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdGlvbnNNYXRj
aChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CiAKLSAgICBib29sIGhhc091dHNldHMo
KSBjb25zdDsKLSAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMoKSBjb25zdDsKKyAgICBib29sIGhh
c091dHNldHMoKSBjb25zdCB7IHJldHVybiAhb3V0c2V0cygpLmlzWmVybygpOyB9CisgICAgSW50
T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Q7CiAKICAgICBib29sIGhhc0ZpbHRlclRoYXRBZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0OwogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDA2ZjMyMmQwMmU4NTM1OWU5ZGFm
MjdiZDA5MjFiMWI0YWNkZjNhMTcuLjk5OTM0YjgwNTU3MzU0ZjdhZjNiMmUxYWJhNTE1M2FmYmY2
MmZiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVPdmVybGFwUmVnaW9ucyhSZWdpb24mIG92
ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm8KICAgICAgICAgYm91bmRpbmdSZWN0ID0gbV9zdGF0ZS5j
b250ZW50c1JlY3Q7CiAKICAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNPdXRzZXRzKCkpIHsK
LSAgICAgICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVycy5vdXRzZXRz
KCk7CisgICAgICAgIGF1dG8gb3V0c2V0cyA9IG1fY3VycmVudEZpbHRlcnMub3V0c2V0cygpOwog
ICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KGJvdW5kaW5nUmVjdCk7CiAgICAg
ICAgIGJvdW5kaW5nUmVjdC5tb3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxlZnQoKSksIHN0ZDo6
bWF4KDAsIC1vdXRzZXRzLnRvcCgpKSk7CiAgICAgICAgIGJvdW5kaW5nUmVjdC5leHBhbmQob3V0
c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMudG9wKCkgKyBvdXRzZXRzLmJv
dHRvbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggNDc5ODFh
ZTY5OTFkYzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYS4uNmQ1OTVhMmRiMjljNTNiZmIyOWI2
NmFlNTJiZjIyN2U1YmE3MTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKQEAgLTEzMywxMCArMTMzLDkgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb24KIHsKICAgICBt
X2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdE1vdmVz
UGl4ZWxzKCk7CiAgICAgbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0
eU9yaWdpbiA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2Vj
dXJpdHlPcmlnaW4oKTsKLSAgICBpZiAobV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMpCi0gICAg
ICAgIG1fb3V0c2V0cyA9IG9wZXJhdGlvbnMub3V0c2V0cygpOwogCiAgICAgbV9lZmZlY3RzLmNs
ZWFyKCk7CisgICAgbV9vdXRzZXRzID0geyB9OwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
cHJldmlvdXNFZmZlY3QgPSBtX3NvdXJjZUdyYXBoaWMucHRyKCk7CiAgICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKSkgewpAQCAtMzc0LDEyICszNzMsOCBA
QCBMYXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVj
dChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZQogewogICAgIC8vIFRoZSByZXN1bHQgb2YgdGhpcyBm
dW5jdGlvbiBpcyB0aGUgYXJlYSBpbiB0aGUgImZpbHRlckJveFJlY3QiIHRoYXQgbmVlZHMgdG8g
YmUgcmVwYWludGVkLCBzbyB0aGF0IHdlIGZ1bGx5IGNvdmVyIHRoZSAiZGlydHlSZWN0Ii4KICAg
ICBhdXRvIHJlY3RGb3JSZXBhaW50ID0gZGlydHlSZWN0OwotICAgIGlmIChoYXNGaWx0ZXJUaGF0
TW92ZXNQaXhlbHMoKSkgewotICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIG91dHNldHMgYXJlIHJl
dmVyc2VkIGhlcmUgYmVjYXVzZSB3ZSBhcmUgZ29pbmcgYmFja3dhcmRzIC0+IHdlIGhhdmUgdGhl
IGRpcnR5IHJlY3QgYW5kCi0gICAgICAgIC8vIG5lZWQgdG8gZmluZCBvdXQgd2hhdCBpcyB0aGUg
cmVjdGFuZ2xlIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSByZXN1bHQgaW5zaWRlIHRoYXQgZGly
dHkgcmVjdC4KLSAgICAgICAgcmVjdEZvclJlcGFpbnQubW92ZSgtbV9vdXRzZXRzLnJpZ2h0KCks
IC1tX291dHNldHMuYm90dG9tKCkpOwotICAgICAgICByZWN0Rm9yUmVwYWludC5leHBhbmQobV9v
dXRzZXRzLmxlZnQoKSArIG1fb3V0c2V0cy5yaWdodCgpLCBtX291dHNldHMudG9wKCkgKyBtX291
dHNldHMuYm90dG9tKCkpOwotICAgIH0KKyAgICBpZiAoaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxz
KCkpCisgICAgICAgIHJlY3RGb3JSZXBhaW50ICs9IG91dHNldHMoKTsKICAgICByZWN0Rm9yUmVw
YWludC5pbnRlcnNlY3QoZmlsdGVyQm94UmVjdCk7CiAgICAgcmV0dXJuIHJlY3RGb3JSZXBhaW50
OwogfQpAQCAtMzk3LDcgKzM5Miw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiAgICAgbV9ncmFwaGljc0J1ZmZl
ckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKLQogdm9pZCBDU1NGaWx0ZXI6OnNldE1heEVmZmVjdFJl
Y3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKIHsKICAgICBmb3IgKGF1dG8mIGVmZmVj
dCA6IG1fZWZmZWN0cykKQEAgLTQxMiw0ICs0MDYsMTcgQEAgSW50UmVjdCBDU1NGaWx0ZXI6Om91
dHB1dFJlY3QoKSBjb25zdAogICAgIHJldHVybiBsYXN0RWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9m
SW5wdXRJbWFnZURhdGEoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOwogfQogCitJbnRPdXRz
ZXRzIENTU0ZpbHRlcjo6b3V0c2V0cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghbV9vdXRzZXRz
LmlzWmVybygpKQorICAgICAgICByZXR1cm4gbV9vdXRzZXRzOworCisgICAgZm9yIChhdXRvJiBl
ZmZlY3QgOiBtX2VmZmVjdHMpCisgICAgICAgIG1fb3V0c2V0cyArPSBlZmZlY3QtPm91dHNldHMo
KTsKKyAgICByZXR1cm4gbV9vdXRzZXRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggYmU4ZjdhNmZhM2NiMGU1Y2E2N2Qz
OWM1OWE4NDAzNzRkNmJkYzg4Zi4uNjgzYWE4NGJhZDBkYWI0OWZmYzE2NDZhNzhlYTA1ODY1Mzdl
NjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtNjEsNiArNjEsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1
cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJp
Y3RlZEJ5U2VjdXJpdHlPcmlnaW47IH0KIAogICAgIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCk7CisgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgQ1NTRmlsdGVyKCk7CkBAIC05Myw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgUmVm
PFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBtX3NvdXJjZUFscGhhOwogCi0gICAgSW50UmVjdEV4dGVudCBtX291dHNldHM7CisgICAgbXV0
YWJsZSBJbnRPdXRzZXRzIG1fb3V0c2V0czsKIAogICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0
dGFjaGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDlj
NDQ5MTI2YjIzMGQyMjY1MDg0N2Q5ZjEzMTcxY2I4MmNiNzZjZTQuLmRkYTkyM2E0ZTRiOTM3NmI2
NGZiNjMxN2RkODcxZjRmNmRjNzM1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcApAQCAtMTkyOSw3ICsxOTI5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0Rmls
dGVyQmFja2VuZE5lZWRzUmVwYWludGluZ0luUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTGF5b3V0UmVjdCByZWN0Rm9yUmVwYWludCA9IHJl
Y3Q7Ci0gICAgcmVuZGVyZXIoKS5zdHlsZSgpLmZpbHRlck91dHNldHMoKS5leHBhbmRSZWN0KHJl
Y3RGb3JSZXBhaW50KTsKKyAgICByZWN0Rm9yUmVwYWludCArPSBmaWx0ZXJPdXRzZXRzKCk7CiAK
ICAgICBtX2ZpbHRlcnMtPmV4cGFuZERpcnR5U291cmNlUmVjdChyZWN0Rm9yUmVwYWludCk7CiAg
ICAgCkBAIC0xOTY0LDcgKzE5NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRGaWx0ZXJCYWNr
ZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiBib29sIFJl
bmRlckxheWVyOjpoYXNBbmNlc3RvcldpdGhGaWx0ZXJPdXRzZXRzKCkgY29uc3QKIHsKICAgICBm
b3IgKGNvbnN0IFJlbmRlckxheWVyKiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPnBh
cmVudCgpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLnN0eWxlKCkuaGFzRmlsdGVy
T3V0c2V0cygpKQorICAgICAgICBpZiAoY3Vyci0+aGFzRmlsdGVyT3V0c2V0cygpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTIwODcsNyAr
MjA4Nyw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IHRyYW5zcGFyZW5jeUNsaXBCb3goY29uc3QgUmVu
ZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJMYXllCiAgICAgICAgIC8vIHBhaW50cyB1bmZy
YWdtZW50ZWQuCiAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBsYXllci5ib3VuZGluZ0Jv
eCgmbGF5ZXIpOwogICAgICAgICBleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRzQW5kUmVmbGVj
dGlvbihjbGlwUmVjdCwgbGF5ZXIsICZsYXllciwgdHJhbnNwYXJlbmN5QmVoYXZpb3IsIHBhaW50
QmVoYXZpb3IpOwotICAgICAgICBsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVyT3V0c2V0
cygpLmV4cGFuZFJlY3QoY2xpcFJlY3QpOworICAgICAgICBjbGlwUmVjdCArPSBsYXllci5maWx0
ZXJPdXRzZXRzKCk7CiAgICAgICAgIExheW91dFJlY3QgcmVzdWx0ID0gdHJhbnNmb3JtLm1hcFJl
Y3QoY2xpcFJlY3QpOwogICAgICAgICBpZiAoIXBhZ2luYXRpb25MYXllcikKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CkBAIC0yMTAzLDcgKzIxMDMsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCB0
cmFuc3BhcmVuY3lDbGlwQm94KGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgUmVuZGVy
TGF5ZQogICAgIAogICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBsYXllci5ib3VuZGluZ0JveChy
b290TGF5ZXIsIGxheWVyLm9mZnNldEZyb21BbmNlc3Rvcihyb290TGF5ZXIpLCB0cmFuc3BhcmVu
Y3lCZWhhdmlvciA9PSBIaXRUZXN0aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCA/IFJlbmRlckxheWVy
OjpVc2VGcmFnbWVudEJveGVzSW5jbHVkaW5nQ29tcG9zaXRpbmcgOiBSZW5kZXJMYXllcjo6VXNl
RnJhZ21lbnRCb3hlc0V4Y2x1ZGluZ0NvbXBvc2l0aW5nKTsKICAgICBleHBhbmRDbGlwUmVjdEZv
ckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbihjbGlwUmVjdCwgbGF5ZXIsIHJvb3RMYXllciwgdHJh
bnNwYXJlbmN5QmVoYXZpb3IsIHBhaW50QmVoYXZpb3IpOwotICAgIGxheWVyLnJlbmRlcmVyKCku
c3R5bGUoKS5maWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChjbGlwUmVjdCk7CisgICAgY2xpcFJl
Y3QgKz0gbGF5ZXIuZmlsdGVyT3V0c2V0cygpOwogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpA
QCAtNjExNCw3ICs2MTE0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5
ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICAgICAgY29t
cHV0ZUxheWVyc1VuaW9uKCpjaGlsZExheWVyKTsKIAogICAgIGlmIChmbGFncy5jb250YWlucyhJ
bmNsdWRlRmlsdGVyT3V0c2V0cykgfHwgKGZsYWdzLmNvbnRhaW5zKEluY2x1ZGVQYWludGVkRmls
dGVyT3V0c2V0cykgJiYgcGFpbnRzV2l0aEZpbHRlcnMoKSkpCi0gICAgICAgIHJlbmRlcmVyKCku
c3R5bGUoKS5maWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdCh1bmlvbkJvdW5kcyk7CisgICAgICAg
IHVuaW9uQm91bmRzICs9IGZpbHRlck91dHNldHMoKTsKIAogICAgIGlmICgoZmxhZ3MgJiBJbmNs
dWRlU2VsZlRyYW5zZm9ybSkgJiYgcGFpbnRzV2l0aFRyYW5zZm9ybShQYWludEJlaGF2aW9yOjpO
b3JtYWwpKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KiBhZmZpbmVUcmFucyA9IHRy
YW5zZm9ybSgpOwpAQCAtNjgzNyw2ICs2ODM3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmZpbHRl
ck5lZWRzUmVwYWludCgpCiAgICAgcmVuZGVyZXIoKS5yZXBhaW50KCk7CiB9CiAKK0ludE91dHNl
dHMgUmVuZGVyTGF5ZXI6OmZpbHRlck91dHNldHMoKSBjb25zdAoreworICAgIGlmIChtX2ZpbHRl
cnMpCisgICAgICAgIHJldHVybiBtX2ZpbHRlcnMtPmZpbHRlcigpID8gbV9maWx0ZXJzLT5maWx0
ZXIoKS0+b3V0c2V0cygpIDogSW50T3V0c2V0cygpOworICAgIHJldHVybiByZW5kZXJlcigpLnN0
eWxlKCkuZmlsdGVyT3V0c2V0cygpOworfQorCiBib29sIFJlbmRlckxheWVyOjppc1RyYW5zcGFy
ZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSBtaW5pbXVtVmlzaWJsZU9wYWNpdHkgPSAwLjAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCBjZjQyODliZDdmOGRkOGY0NzJjZDBmZWY1NzQxYjc0ODhmNmFl
NWVkLi5hOTdjM2Y5YjY2NzA4MGNmNzI2ZGJkMDg0ZjM4OTU5NjQ3OGY5ZjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNzkwLDYgKzc5MCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZmlsdGVyTmVlZHNSZXBhaW50KCk7CiAgICAgYm9vbCBoYXNGaWx0ZXIoKSBj
b25zdCB7IHJldHVybiByZW5kZXJlcigpLmhhc0ZpbHRlcigpOyB9CisgICAgYm9vbCBoYXNGaWx0
ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gIWZpbHRlck91dHNldHMoKS5pc1plcm8oKTsgfQor
ICAgIEludE91dHNldHMgZmlsdGVyT3V0c2V0cygpIGNvbnN0OwogICAgIGJvb2wgaGFzQmFja2Ry
b3BGaWx0ZXIoKSBjb25zdAogICAgIHsKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBjYmYyNTM2
M2FjNWJmZmQ4NDQ1OGE5YTVhNWNmNmVmZjc1NWFmOTg1Li5lNjFlYjdjMGJiOTRmM2UwMDUyMjVi
MzY5NzI3NTgxZDU3MTQwOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaApAQCAtMjI5LDggKzIyOSw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dEJv
eEV4dGVudCBtYXNrQm94SW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaW1hZ2VPdXRzZXRz
KG1hc2tCb3hJbWFnZSgpKTsgfQogCi0gICAgYm9vbCBoYXNGaWx0ZXJPdXRzZXRzKCkgY29uc3Qg
eyByZXR1cm4gaGFzRmlsdGVyKCkgJiYgZmlsdGVyKCkuaGFzT3V0c2V0cygpOyB9Ci0gICAgRmls
dGVyT3V0c2V0cyBmaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFzRmlsdGVyKCkgPyBm
aWx0ZXIoKS5vdXRzZXRzKCkgOiBGaWx0ZXJPdXRzZXRzKCk7IH0KKyAgICBJbnRPdXRzZXRzIGZp
bHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSA/IGZpbHRlcigpLm91dHNl
dHMoKSA6IEludE91dHNldHMoKTsgfQogCiAgICAgT3JkZXIgcnRsT3JkZXJpbmcoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxPcmRlcj4obV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyk7
IH0KICAgICB2b2lkIHNldFJUTE9yZGVyaW5nKE9yZGVyIG9yZGVyaW5nKSB7IG1faW5oZXJpdGVk
RmxhZ3MucnRsT3JkZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3JkZXJpbmcpOyB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMzg2ZTMyZWVlMTYwYmU0MzQzZmY5OTc1NjJiYmU0YmNkZjEzZjFhOC4uMGFhY2IzMzkz
OWM0ZjEzZjgwNDkwNjAzNzMwMzllOGI4NjEwZGExZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE5LTEwLTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisK
KyAgICAgICAgT3V0c2V0cyBmb3IgcmVmZXJlbmNlZCBTVkcgZmlsdGVycyBhcmUgYWx3YXlzIHpl
cm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjgy
NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGNzczMv
ZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTktMTAtMTAg
IENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgSW1wb3J0IGNzcy9jc3MtaW1hZ2VzIFdQVCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOTBjY2NjMjNmZTcwMjM0NjRmMGU4MzNjODFmMDdmMjViNmZlZTA5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZp
bHRlci1jbGlwcGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAg
IC5jb250YWluZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImNv
bnRhaW5lciI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4MzMxMTVjYmUx
ZTI3OWE5MzQ3MTRmZmRhZGQ4NTU1ZWY0Mjc4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbApAQCAtMCwwICsx
LDI3IEBACis8c3R5bGU+CisgICAgLmNvbnRhaW5lciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIH0KKyAgICAuYm94IHsKKyAgICAgICAgd2lk
dGg6IDgwMHB4OworICAgICAgICBoZWlnaHQ6IDgwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsKKyAgICB9CisgICAgLmdhdXNzaWFuLWJsdXIgeworICAgICAgICBmaWx0ZXI6
IHVybCgjZ2F1c3NpYW4tYmx1cik7CisgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0zMDBw
eCwgLTMwMHB4KTsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0iY29u
dGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IGdhdXNzaWFuLWJsdXIiPjwvZGl2Pgor
ICAgIDwvZGl2PgorICAgIDxzdmcgaGVpZ2h0PSIwIj4KKyAgICAgICAgPGZpbHRlciBpZD0iZ2F1
c3NpYW4tYmx1ciI+CisgICAgICAgICAgICA8ZmVnYXVzc2lhbmJsdXIgc3RkRGV2aWF0aW9uPSIx
MDAiPgorICAgICAgICA8L2ZpbHRlcj4KKyAgICA8L3N2Zz4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmY2NmE1NzUyMjI1ZTQ1MGQ2OTY4
ZjE2NGFlZjI1ZmM4M2U0YmFmZC4uZjFlMDM3MjNiMDRjMmM0MDYwMGFlOGEyYzAxOGVkNzUwOTYw
ZjAxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM0
MDIsMyArMzQwMiw1IEBAIHdlYmtpdC5vcmcvYi8yMDI1MTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy8yZGNvbnRleHQvcGF0aC1vYmplY3RzLzJkLnBhCiAKIHdlYmtpdC5vcmcvYi8y
MDI1MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvZHJhd2luZy10
ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5tZWFzdXJlLmZvbnRCb3VuZGluZ0JveC5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjAyNTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQubWVhc3Vy
ZS5lbUhlaWdodHMuaHRtbCBbIEZhaWx1cmUgXQorCit3ZWJraXQub3JnL2IvMjAyOTU4IGNzczMv
ZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>