<?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>179833</bug_id>
          
          <creation_ts>2017-11-17 11:41:28 -0800</creation_ts>
          <short_desc>FETurbulence: compute all 4 channels at once</short_desc>
          <delta_ts>2017-11-18 09:08:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1373183</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-17 11:41:28 -0800</bug_when>
    <thetext>We can compute all 4 channels in one pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373186</commentid>
    <comment_count>1</comment_count>
      <attachid>327203</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-17 11:42:17 -0800</bug_when>
    <thetext>Created attachment 327203
Patch

This makes FETurbulence about 2x faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373457</commentid>
    <comment_count>2</comment_count>
      <attachid>327286</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-17 17:40:38 -0800</bug_when>
    <thetext>Created attachment 327286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373471</commentid>
    <comment_count>3</comment_count>
      <attachid>327286</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-17 17:57:01 -0800</bug_when>
    <thetext>Comment on attachment 327286
Patch

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

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:42
&gt; +    FloatComponents&amp; operator +=(const FloatComponents&amp; rhs)

We don&apos;t usually put a space after &apos;operator&apos;.

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:51
&gt; +    FloatComponents operator +(float rhs) const

We don&apos;t usually put a space after &apos;operator&apos;.

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:61
&gt; +    FloatComponents operator /(float denominator) const

We don&apos;t usually put a space after &apos;operator&apos;.

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:71
&gt; +    FloatComponents operator *(float factor) const

We don&apos;t usually put a space after &apos;operator&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373483</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-17 18:32:32 -0800</bug_when>
    <thetext>https://trac.webkit.org/r225009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373484</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-17 18:33:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/35628662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373556</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-18 09:08:04 -0800</bug_when>
    <thetext>I know I already reviewed this, but I wonder if this could get an even bigger speedup if we used something like GCC&apos;s:

typedef float  float4  __attribute__((__vector_size__(16)))

or clangs:

typedef __attribute__((__ext_vector_type__(4))) float float4;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327203</attachid>
            <date>2017-11-17 11:42:17 -0800</date>
            <delta_ts>2017-11-17 17:40:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>feturbulence-channels.patch</filename>
            <type>text/plain</type>
            <size>12406</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUdXJidWxlbmNlLmNwcAppbmRleCAyMzRmNzBiNzA3MmIwOGM2NGMwZmQwZTZmNDM0MjhjMGEz
ODgwMTVkLi43MzM5YzYxYTVmMDkzN2JjNTQ5OWRlNjE1ZDk5MzUzMDMwZjgyNTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwCkBAIC00OCw2ICs0OCwxNSBAQCBzdGF0aWMgY29uc3QgaW50IHNfcmFuZEFt
cGxpdHVkZSA9IDE2ODA3OyAvLyA3Kio1OyBwcmltaXRpdmUgcm9vdCBvZiBtCiBzdGF0aWMgY29u
c3QgaW50IHNfcmFuZFEgPSAxMjc3NzM7IC8vIG0gLyBhCiBzdGF0aWMgY29uc3QgaW50IHNfcmFu
ZFIgPSAyODM2OyAvLyBtICUgYQogCisKK0ZFVHVyYnVsZW5jZTo6Q29sb3JDb21wb25lbnRzOjpD
b2xvckNvbXBvbmVudHMoY29uc3QgRkVUdXJidWxlbmNlOjpGbG9hdENoYW5uZWxzJiBmbG9hdENo
YW5uZWxzKQoreworICAgIGNvbXBvbmVudHNbMF0gPSAyNTUgKiBzdGQ6Om1heChzdGQ6Om1pbihm
bG9hdENoYW5uZWxzLmNoYW5uZWxzWzBdLCAxLmYpLCAwLmYpOworICAgIGNvbXBvbmVudHNbMV0g
PSAyNTUgKiBzdGQ6Om1heChzdGQ6Om1pbihmbG9hdENoYW5uZWxzLmNoYW5uZWxzWzFdLCAxLmYp
LCAwLmYpOworICAgIGNvbXBvbmVudHNbMl0gPSAyNTUgKiBzdGQ6Om1heChzdGQ6Om1pbihmbG9h
dENoYW5uZWxzLmNoYW5uZWxzWzJdLCAxLmYpLCAwLmYpOworICAgIGNvbXBvbmVudHNbM10gPSAy
NTUgKiBzdGQ6Om1heChzdGQ6Om1pbihmbG9hdENoYW5uZWxzLmNoYW5uZWxzWzNdLCAxLmYpLCAw
LmYpOworfQorCiBGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShGaWx0ZXImIGZpbHRlciwgVHVy
YnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVu
Y3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykKICAgICA6
IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX3R5cGUodHlwZSkKQEAgLTIxNiw3ICsyMjUs
NyBAQCBpbmxpbmUgdm9pZCBjaGVja05vaXNlKGludCYgbm9pc2VWYWx1ZSwgaW50IGxpbWl0VmFs
dWUsIGludCBuZXdWYWx1ZSkKICAgICAgICAgbm9pc2VWYWx1ZSAtPSBuZXdWYWx1ZSAtIDE7CiB9
CiAKLWZsb2F0IEZFVHVyYnVsZW5jZTo6bm9pc2UyRChpbnQgY2hhbm5lbCwgY29uc3QgUGFpbnRp
bmdEYXRhJiBwYWludGluZ0RhdGEsIFN0aXRjaERhdGEmIHN0aXRjaERhdGEsIGNvbnN0IEZsb2F0
UG9pbnQmIG5vaXNlVmVjdG9yKQorRkVUdXJidWxlbmNlOjpGbG9hdENoYW5uZWxzIEZFVHVyYnVs
ZW5jZTo6bm9pc2UyRChjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0
YSYgc3RpdGNoRGF0YSwgY29uc3QgRmxvYXRQb2ludCYgbm9pc2VWZWN0b3IpCiB7CiAgICAgc3Ry
dWN0IE5vaXNlIHsKICAgICAgICAgaW50IG5vaXNlUG9zaXRpb25JbnRlZ2VyVmFsdWU7CkBAIC0y
NDYsMzMgKzI1NSw0NCBAQCBmbG9hdCBGRVR1cmJ1bGVuY2U6Om5vaXNlMkQoaW50IGNoYW5uZWws
IGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBTdGl0YwogCiAgICAgZmxvYXQgc3gg
PSBzbW9vdGhDdXJ2ZShub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUpOwogICAgIGZs
b2F0IHN5ID0gc21vb3RoQ3VydmUobm9pc2VZLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlKTsK
LSAgICBmbG9hdCBhLCBiLCB1LCB2OwotCi0gICAgLy8gVGhpcyBpcyB0YWtlbiAxOjEgZnJvbSBT
Vkcgc3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmlsdGVycy5odG1sI2ZlVHVyYnVs
ZW5jZUVsZW1lbnQuCi0gICAgaW50IHRlbXAgPSBwYWludGluZ0RhdGEubGF0dGljZVNlbGVjdG9y
W2xhdHRpY2VJbmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZhbHVlXTsKLSAgICBj
b25zdCBmbG9hdCogcSA9IHBhaW50aW5nRGF0YS5ncmFkaWVudFtjaGFubmVsXVt0ZW1wXTsKLSAg
ICB1ID0gbm9pc2VYLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlICogcVswXSArIG5vaXNlWS5u
b2lzZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAqIHFbMV07Ci0gICAgdGVtcCA9IHBhaW50aW5nRGF0
YS5sYXR0aWNlU2VsZWN0b3JbbmV4dExhdHRpY2VJbmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9u
SW50ZWdlclZhbHVlXTsKLSAgICBxID0gcGFpbnRpbmdEYXRhLmdyYWRpZW50W2NoYW5uZWxdW3Rl
bXBdOwotICAgIHYgPSAobm9pc2VYLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlIC0gMSkgKiBx
WzBdICsgbm9pc2VZLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlICogcVsxXTsKLSAgICBhID0g
bGluZWFySW50ZXJwb2xhdGlvbihzeCwgdSwgdik7Ci0gICAgdGVtcCA9IHBhaW50aW5nRGF0YS5s
YXR0aWNlU2VsZWN0b3JbbGF0dGljZUluZGV4ICsgbm9pc2VZLm5vaXNlUG9zaXRpb25JbnRlZ2Vy
VmFsdWUgKyAxXTsKLSAgICBxID0gcGFpbnRpbmdEYXRhLmdyYWRpZW50W2NoYW5uZWxdW3RlbXBd
OwotICAgIHUgPSBub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUgKiBxWzBdICsgKG5v
aXNlWS5ub2lzZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAtIDEpICogcVsxXTsKLSAgICB0ZW1wID0g
cGFpbnRpbmdEYXRhLmxhdHRpY2VTZWxlY3RvcltuZXh0TGF0dGljZUluZGV4ICsgbm9pc2VZLm5v
aXNlUG9zaXRpb25JbnRlZ2VyVmFsdWUgKyAxXTsKLSAgICBxID0gcGFpbnRpbmdEYXRhLmdyYWRp
ZW50W2NoYW5uZWxdW3RlbXBdOwotICAgIHYgPSAobm9pc2VYLm5vaXNlUG9zaXRpb25GcmFjdGlv
blZhbHVlIC0gMSkgKiBxWzBdICsgKG5vaXNlWS5ub2lzZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAt
IDEpICogcVsxXTsKLSAgICBiID0gbGluZWFySW50ZXJwb2xhdGlvbihzeCwgdSwgdik7Ci0gICAg
cmV0dXJuIGxpbmVhckludGVycG9sYXRpb24oc3ksIGEsIGIpOworCisgICAgYXV0byBub2lzZUZv
ckNoYW5uZWwgPSBbJl0oaW50IGNoYW5uZWwpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0YWtlbiAx
OjEgZnJvbSBTVkcgc3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmlsdGVycy5odG1s
I2ZlVHVyYnVsZW5jZUVsZW1lbnQuCisgICAgICAgIGludCB0ZW1wID0gcGFpbnRpbmdEYXRhLmxh
dHRpY2VTZWxlY3RvcltsYXR0aWNlSW5kZXggKyBub2lzZVkubm9pc2VQb3NpdGlvbkludGVnZXJW
YWx1ZV07CisgICAgICAgIGNvbnN0IGZsb2F0KiBxID0gcGFpbnRpbmdEYXRhLmdyYWRpZW50W2No
YW5uZWxdW3RlbXBdOworCisgICAgICAgIGZsb2F0IHUgPSBub2lzZVgubm9pc2VQb3NpdGlvbkZy
YWN0aW9uVmFsdWUgKiBxWzBdICsgbm9pc2VZLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlICog
cVsxXTsKKyAgICAgICAgdGVtcCA9IHBhaW50aW5nRGF0YS5sYXR0aWNlU2VsZWN0b3JbbmV4dExh
dHRpY2VJbmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZhbHVlXTsKKyAgICAgICAg
cSA9IHBhaW50aW5nRGF0YS5ncmFkaWVudFtjaGFubmVsXVt0ZW1wXTsKKyAgICAgICAgZmxvYXQg
diA9IChub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUgLSAxKSAqIHFbMF0gKyBub2lz
ZVkubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUgKiBxWzFdOworICAgICAgICBmbG9hdCBhID0g
bGluZWFySW50ZXJwb2xhdGlvbihzeCwgdSwgdik7CisgICAgICAgIHRlbXAgPSBwYWludGluZ0Rh
dGEubGF0dGljZVNlbGVjdG9yW2xhdHRpY2VJbmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50
ZWdlclZhbHVlICsgMV07CisgICAgICAgIHEgPSBwYWludGluZ0RhdGEuZ3JhZGllbnRbY2hhbm5l
bF1bdGVtcF07CisgICAgICAgIHUgPSBub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUg
KiBxWzBdICsgKG5vaXNlWS5ub2lzZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAtIDEpICogcVsxXTsK
KyAgICAgICAgdGVtcCA9IHBhaW50aW5nRGF0YS5sYXR0aWNlU2VsZWN0b3JbbmV4dExhdHRpY2VJ
bmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZhbHVlICsgMV07CisgICAgICAgIHEg
PSBwYWludGluZ0RhdGEuZ3JhZGllbnRbY2hhbm5lbF1bdGVtcF07CisgICAgICAgIHYgPSAobm9p
c2VYLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlIC0gMSkgKiBxWzBdICsgKG5vaXNlWS5ub2lz
ZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAtIDEpICogcVsxXTsKKyAgICAgICAgZmxvYXQgYiA9IGxp
bmVhckludGVycG9sYXRpb24oc3gsIHUsIHYpOworCisgICAgICAgIHJldHVybiBsaW5lYXJJbnRl
cnBvbGF0aW9uKHN5LCBhLCBiKTsKKyAgICB9OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgbm9p
c2VGb3JDaGFubmVsKDApLAorICAgICAgICBub2lzZUZvckNoYW5uZWwoMSksCisgICAgICAgIG5v
aXNlRm9yQ2hhbm5lbCgyKSwKKyAgICAgICAgbm9pc2VGb3JDaGFubmVsKDMpCisgICAgfTsKIH0K
IAotdW5zaWduZWQgY2hhciBGRVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZv
clBvaW50KGludCBjaGFubmVsLCBjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgU3Rp
dGNoRGF0YSYgc3RpdGNoRGF0YSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCitGRVR1cmJ1bGVu
Y2U6OkNvbG9yQ29tcG9uZW50cyBGRVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1
ZUZvclBvaW50KGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBTdGl0Y2hEYXRhJiBz
dGl0Y2hEYXRhLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHsKICAgICBmbG9hdCB0aWxlV2lk
dGggPSBwYWludGluZ0RhdGEuZmlsdGVyU2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IHRpbGVIZWln
aHQgPSBwYWludGluZ0RhdGEuZmlsdGVyU2l6ZS5oZWlnaHQoKTsKICAgICBBU1NFUlQodGlsZVdp
ZHRoID4gMCAmJiB0aWxlSGVpZ2h0ID4gMCk7CiAgICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVggPSBt
X2Jhc2VGcmVxdWVuY3lYOwogICAgIGZsb2F0IGJhc2VGcmVxdWVuY3lZID0gbV9iYXNlRnJlcXVl
bmN5WTsKKwogICAgIC8vIEFkanVzdCB0aGUgYmFzZSBmcmVxdWVuY2llcyBpZiBuZWNlc3Nhcnkg
Zm9yIHN0aXRjaGluZy4KICAgICBpZiAobV9zdGl0Y2hUaWxlcykgewogICAgICAgICAvLyBXaGVu
IHN0aXRjaGluZyB0aWxlZCB0dXJidWxlbmNlLCB0aGUgZnJlcXVlbmNpZXMgbXVzdCBiZSBhZGp1
c3RlZApAQCAtMzAxLDE3ICszMjEsMTkgQEAgdW5zaWduZWQgY2hhciBGRVR1cmJ1bGVuY2U6OmNh
bGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGludCBjaGFubmVsLCBjb25zdAogICAgICAg
ICBzdGl0Y2hEYXRhLndyYXBZID0gc19wZXJsaW5Ob2lzZSArIHN0aXRjaERhdGEuaGVpZ2h0Owog
ICAgIH0KIAotICAgIGZsb2F0IHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCA9IDA7CisgICAgRmxv
YXRDaGFubmVscyB0dXJidWxlbmNlRnVuY3Rpb25SZXN1bHQ7CiAgICAgRmxvYXRQb2ludCBub2lz
ZVZlY3Rvcihwb2ludC54KCkgKiBiYXNlRnJlcXVlbmN5WCwgcG9pbnQueSgpICogYmFzZUZyZXF1
ZW5jeVkpOwogICAgIGZsb2F0IHJhdGlvID0gMTsKICAgICBmb3IgKGludCBvY3RhdmUgPSAwOyBv
Y3RhdmUgPCBtX251bU9jdGF2ZXM7ICsrb2N0YXZlKSB7CiAgICAgICAgIGlmIChtX3R5cGUgPT0g
RkVUVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFKQotICAgICAgICAgICAgdHVyYnVsZW5jZUZ1
bmN0aW9uUmVzdWx0ICs9IG5vaXNlMkQoY2hhbm5lbCwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRh
LCBub2lzZVZlY3RvcikgLyByYXRpbzsKKyAgICAgICAgICAgIHR1cmJ1bGVuY2VGdW5jdGlvblJl
c3VsdCArPSBub2lzZTJEKHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgbm9pc2VWZWN0b3IpIC8g
cmF0aW87CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHR1cmJ1bGVuY2VGdW5jdGlvblJlc3Vs
dCArPSBmYWJzZihub2lzZTJEKGNoYW5uZWwsIHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgbm9p
c2VWZWN0b3IpKSAvIHJhdGlvOworICAgICAgICAgICAgdHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0
ICs9IG5vaXNlMkQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBub2lzZVZlY3RvcikuYWJzKCkg
LyByYXRpbzsKKwogICAgICAgICBub2lzZVZlY3Rvci5zZXRYKG5vaXNlVmVjdG9yLngoKSAqIDIp
OwogICAgICAgICBub2lzZVZlY3Rvci5zZXRZKG5vaXNlVmVjdG9yLnkoKSAqIDIpOwogICAgICAg
ICByYXRpbyAqPSAyOworCiAgICAgICAgIGlmIChtX3N0aXRjaFRpbGVzKSB7CiAgICAgICAgICAg
ICAvLyBVcGRhdGUgc3RpdGNoIHZhbHVlcy4gU3VidHJhY3Rpbmcgc19wZXJsaW5Ob2lzZW9pc2Ug
YmVmb3JlIHRoZSBtdWx0aXBsaWNhdGlvbiBhbmQKICAgICAgICAgICAgIC8vIGFkZGluZyBpdCBh
ZnRlcndhcmQgc2ltcGxpZmllcyB0byBzdWJ0cmFjdGluZyBpdCBvbmNlLgpAQCAtMzI2LDkgKzM0
OCw4IEBAIHVuc2lnbmVkIGNoYXIgRkVUdXJidWxlbmNlOjpjYWxjdWxhdGVUdXJidWxlbmNlVmFs
dWVGb3JQb2ludChpbnQgY2hhbm5lbCwgY29uc3QKICAgICAvLyBhbmQgKHR1cmJ1bGVuY2VGdW5j
dGlvblJlc3VsdCAqIDI1NSkgYnkgdHVyYnVsZW5jZS4KICAgICBpZiAobV90eXBlID09IEZFVFVS
QlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSkKICAgICAgICAgdHVyYnVsZW5jZUZ1bmN0aW9uUmVz
dWx0ID0gdHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0ICogMC41ZiArIDAuNWY7Ci0gICAgLy8gQ2xh
bXAgcmVzdWx0Ci0gICAgdHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0ID0gc3RkOjptYXgoc3RkOjpt
aW4odHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0LCAxLmYpLCAwLmYpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0dXJidWxlbmNlRnVuY3Rpb25SZXN1bHQgKiAyNTUpOwor
CisgICAgcmV0dXJuIHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdDsKIH0KIAogdm9pZCBGRVR1cmJ1
bGVuY2U6OmZpbGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXksIGNvbnN0IFBh
aW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkKQEAgLTMzNiw3
ICszNTcsNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJh
eSogcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEludFJlY3QgZmlsdGVyUmVn
aW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBJbnRQb2ludCBwb2ludCgwLCBmaWx0ZXJS
ZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhPZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0
WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAgICBpbnQgY2hhbm5lbDsKICAgICBT
dGl0Y2hEYXRhIHN0aXRjaERhdGE7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zy
b20gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZp
bmVUcmFuc2Zvcm0oKSk7CiAKQEAgLTM0Niw4ICszNjYsMTEgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6
OmZpbGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXksIGNvbnN0IFBhaW50aW5n
RGF0YSYKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBmaWx0ZXJSZWdpb24ud2lkdGgoKTsg
Kyt4KSB7CiAgICAgICAgICAgICBwb2ludC5zZXRYKHBvaW50LngoKSArIDEpOwogICAgICAgICAg
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gaW52ZXJzZVRyYW5zZnJvbS5tYXBQb2ludChwb2lu
dCk7Ci0gICAgICAgICAgICBmb3IgKGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgNDsgKytjaGFubmVs
LCArK2luZGV4T2ZQaXhlbENoYW5uZWwpCi0gICAgICAgICAgICAgICAgcGl4ZWxBcnJheS0+c2V0
KGluZGV4T2ZQaXhlbENoYW5uZWwsIGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGNo
YW5uZWwsIHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgbG9jYWxQb2ludCkpOworICAgICAgICAg
ICAgQ29sb3JDb21wb25lbnRzIHZhbHVlcyA9IGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBv
aW50KHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgbG9jYWxQb2ludCk7CisgICAgICAgICAgICBw
aXhlbEFycmF5LT5zZXQoaW5kZXhPZlBpeGVsQ2hhbm5lbCsrLCB2YWx1ZXMuY29tcG9uZW50c1sw
XSk7CisgICAgICAgICAgICBwaXhlbEFycmF5LT5zZXQoaW5kZXhPZlBpeGVsQ2hhbm5lbCsrLCB2
YWx1ZXMuY29tcG9uZW50c1sxXSk7CisgICAgICAgICAgICBwaXhlbEFycmF5LT5zZXQoaW5kZXhP
ZlBpeGVsQ2hhbm5lbCsrLCB2YWx1ZXMuY29tcG9uZW50c1syXSk7CisgICAgICAgICAgICBwaXhl
bEFycmF5LT5zZXQoaW5kZXhPZlBpeGVsQ2hhbm5lbCsrLCB2YWx1ZXMuY29tcG9uZW50c1szXSk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zODYsNyArNDA5LDcgQEAgdm9pZCBGRVR1cmJ1bGVu
Y2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICAgICAgICAgIGludCBzdGFydFkgPSAw
OwogICAgICAgICAgICAgZm9yICg7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgICAgICAgICBGaWxs
UmVnaW9uUGFyYW1ldGVycyYgcGFyYW1zID0gcGFyYWxsZWxKb2JzLnBhcmFtZXRlcihpLTEpOwor
ICAgICAgICAgICAgICAgIEZpbGxSZWdpb25QYXJhbWV0ZXJzJiBwYXJhbXMgPSBwYXJhbGxlbEpv
YnMucGFyYW1ldGVyKGkgLSAxKTsKICAgICAgICAgICAgICAgICBwYXJhbXMuZmlsdGVyID0gdGhp
czsKICAgICAgICAgICAgICAgICBwYXJhbXMucGl4ZWxBcnJheSA9IHBpeGVsQXJyYXk7CiAgICAg
ICAgICAgICAgICAgcGFyYW1zLnBhaW50aW5nRGF0YSA9ICZwYWludGluZ0RhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaAppbmRleCBmYzFkNzlkNmQzMWZkNzg4MDMxZDI5NWNmMmRjMmNjYTA5NGU2NzExLi5hYjcx
MTUyOTllNWE5YjMzMWY3NDJjMGY2NGFlMWQ4NjgyMGY2ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKQEAg
LTExMywxMyArMTEzLDg3IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBlbmRZOwogICAgIH07CiAK
KyAgICBzdHJ1Y3QgRmxvYXRDaGFubmVscyB7CisgICAgICAgIEZsb2F0Q2hhbm5lbHMoZmxvYXQg
YSA9IDAsIGZsb2F0IGIgPSAwLCBmbG9hdCBjID0gMCwgZmxvYXQgZCA9IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNoYW5uZWxzWzBdID0gYTsKKyAgICAgICAgICAgIGNoYW5uZWxzWzFdID0g
YjsKKyAgICAgICAgICAgIGNoYW5uZWxzWzJdID0gYzsKKyAgICAgICAgICAgIGNoYW5uZWxzWzNd
ID0gZDsKKyAgICAgICAgfQorCisgICAgICAgIEZsb2F0Q2hhbm5lbHMmIG9wZXJhdG9yICs9KGNv
bnN0IEZsb2F0Q2hhbm5lbHMmIHJocykKKyAgICAgICAgeworICAgICAgICAgICAgY2hhbm5lbHNb
MF0gKz0gcmhzLmNoYW5uZWxzWzBdOworICAgICAgICAgICAgY2hhbm5lbHNbMV0gKz0gcmhzLmNo
YW5uZWxzWzFdOworICAgICAgICAgICAgY2hhbm5lbHNbMl0gKz0gcmhzLmNoYW5uZWxzWzJdOwor
ICAgICAgICAgICAgY2hhbm5lbHNbM10gKz0gcmhzLmNoYW5uZWxzWzNdOworICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgRmxvYXRDaGFubmVscyBvcGVyYXRv
ciArKGZsb2F0IHJocykgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgRmxvYXRDaGFubmVs
cyByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQuY2hhbm5lbHNbMF0gPSBjaGFubmVsc1swXSAr
IHJoczsKKyAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsc1sxXSA9IGNoYW5uZWxzWzFdICsgcmhz
OworICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxzWzJdID0gY2hhbm5lbHNbMl0gKyByaHM7Cisg
ICAgICAgICAgICByZXN1bHQuY2hhbm5lbHNbM10gPSBjaGFubmVsc1szXSArIHJoczsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBGbG9hdENoYW5uZWxz
IG9wZXJhdG9yIC8oZmxvYXQgZGVub21pbmF0b3IpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEZsb2F0Q2hhbm5lbHMgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxzWzBd
ID0gY2hhbm5lbHNbMF0gLyBkZW5vbWluYXRvcjsKKyAgICAgICAgICAgIHJlc3VsdC5jaGFubmVs
c1sxXSA9IGNoYW5uZWxzWzFdIC8gZGVub21pbmF0b3I7CisgICAgICAgICAgICByZXN1bHQuY2hh
bm5lbHNbMl0gPSBjaGFubmVsc1syXSAvIGRlbm9taW5hdG9yOworICAgICAgICAgICAgcmVzdWx0
LmNoYW5uZWxzWzNdID0gY2hhbm5lbHNbM10gLyBkZW5vbWluYXRvcjsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBGbG9hdENoYW5uZWxzIG9wZXJhdG9y
ICooZmxvYXQgZmFjdG9yKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBGbG9hdENoYW5u
ZWxzIHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsc1swXSA9IGNoYW5uZWxzWzBd
ICogZmFjdG9yOworICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxzWzFdID0gY2hhbm5lbHNbMV0g
KiBmYWN0b3I7CisgICAgICAgICAgICByZXN1bHQuY2hhbm5lbHNbMl0gPSBjaGFubmVsc1syXSAq
IGZhY3RvcjsKKyAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsc1szXSA9IGNoYW5uZWxzWzNdICog
ZmFjdG9yOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAg
IEZsb2F0Q2hhbm5lbHMgYWJzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgRmxvYXRD
aGFubmVscyByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQuY2hhbm5lbHNbMF0gPSBmYWJzKGNo
YW5uZWxzWzBdKTsKKyAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsc1sxXSA9IGZhYnMoY2hhbm5l
bHNbMV0pOworICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxzWzJdID0gZmFicyhjaGFubmVsc1sy
XSk7CisgICAgICAgICAgICByZXN1bHQuY2hhbm5lbHNbM10gPSBmYWJzKGNoYW5uZWxzWzNdKTsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBj
aGFubmVsc1s0XTsKKyAgICB9OworCisgICAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CisgICAg
ICAgIENvbG9yQ29tcG9uZW50cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbXBvbmVudHNb
MF0gPSAwOworICAgICAgICAgICAgY29tcG9uZW50c1sxXSA9IDA7CisgICAgICAgICAgICBjb21w
b25lbnRzWzJdID0gMDsKKyAgICAgICAgICAgIGNvbXBvbmVudHNbM10gPSAwOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBDb2xvckNvbXBvbmVudHMoY29uc3QgRmxvYXRDaGFubmVscyYp
OworICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbXBvbmVudHNbNF07CisgICAgfTsKKwogICAgIHN0
YXRpYyB2b2lkIGZpbGxSZWdpb25Xb3JrZXIoRmlsbFJlZ2lvblBhcmFtZXRlcnMqKTsKIAogICAg
IEZFVHVyYnVsZW5jZShGaWx0ZXImLCBUdXJidWxlbmNlVHlwZSwgZmxvYXQsIGZsb2F0LCBpbnQs
IGZsb2F0LCBib29sKTsKIAogICAgIHZvaWQgaW5pdFBhaW50KFBhaW50aW5nRGF0YSYpOwotICAg
IGZsb2F0IG5vaXNlMkQoaW50IGNoYW5uZWwsIGNvbnN0IFBhaW50aW5nRGF0YSYsIFN0aXRjaERh
dGEmLCBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgdW5zaWduZWQgY2hhciBjYWxjdWxhdGVUdXJi
dWxlbmNlVmFsdWVGb3JQb2ludChpbnQgY2hhbm5lbCwgY29uc3QgUGFpbnRpbmdEYXRhJiwgU3Rp
dGNoRGF0YSYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBGbG9hdENoYW5uZWxzIG5vaXNlMkQo
Y29uc3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAg
ICBDb2xvckNvbXBvbmVudHMgY2FsY3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQoY29uc3Qg
UGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2b2lk
IGZpbGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkqLCBjb25zdCBQYWludGluZ0RhdGEmLCBpbnQs
IGludCk7CiAKICAgICBUdXJidWxlbmNlVHlwZSBtX3R5cGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327286</attachid>
            <date>2017-11-17 17:40:38 -0800</date>
            <delta_ts>2017-11-17 17:57:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179833-20171117174037.patch</filename>
            <type>text/plain</type>
            <size>20724</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwN2ZjMjJiYjRhYTlh
OTY2NmIwOWRjZmVhZjhhOTQ4NGQyNDgwZS4uN2QzMGE4M2UzYmFkZTU0YjhmM2E5NWJiMGY5NGM2
MDU2OTBkZjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE3LTExLTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIEZFVHVyYnVsZW5j
ZTogY29tcHV0ZSBhbGwgNCBjaGFubmVscyBhdCBvbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2Ugc29tZSBuZXcgaGVscGVyIGNsYXNz
ZXMgZm9yIHN0b3JpbmcgZmxvYXQgY29sb3IgY29tcG9uZW50cywgYW5kIHVzZQorICAgICAgICB0
aGVtIGluIGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KCkgYW5kIG5vaXNlMkQoKSBm
b3IgYWxsIHRoZSBjaGFubmVscyBpbiBvbmUKKyAgICAgICAgcGFzcy4gVGhpcyBtYWtlcyBGRVR1
cmJ1bGVuY2UgYWJvdXQgdHdpY2UgYXMgZmFzdC4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3JDb21wb25lbnRzOjpDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RmxvYXRDb21wb25lbnRzOjpGbG9hdENvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRDb21wb25lbnRzOjpvcGVyYXRvciArPSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdENvbXBv
bmVudHM6Om9wZXJhdG9yICsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRDb21wb25l
bnRzOjpvcGVyYXRvciAvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0Q29tcG9uZW50
czo6b3BlcmF0b3IgKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdENvbXBvbmVudHM6
OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcGVkQ29sb3JDb21wb25lbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6bm9pc2UyRCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaDoKKworMjAxNy0xMS0xNyAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwogICAgICAgICBEb24ndCBpbnZlcnQg
YSBtYXRyaXggZm9yIGV2ZXJ5IGNoYW5uZWwgb2YgZXZlcnkgcGl4ZWwgb2YgYW4gRkVUdXJidWxl
bmNlIGZpbHRlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5ODI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMTdlYTYwOGI1MDBmOTc3NWViMDEwZWJlOTg5
ZWFjOWRhZDA1Zjg4Yy4uYjEzY2NjNGVkOWQwNjZiN2I0Zjk4NDg4MWNhYjUxNTc0YzFkZWQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTE0ODEsNiArMTQ4MSw3IEBAIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI1MDY3NzU1NDdmN2RjMTk2NGYx
ZTYyMmVkNDM2YmYwMDUyNDBhMDYuLjc3NjBjMGM5MWMwZmI3YTc1YzdiN2NiNWY1OTVkMWJhMjdj
MGJjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU0OTgsNiArNTQ5OCw4IEBACiAJCTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJD
QSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERpc3BsYXlMaXN0UmVjb3JkZXIuaDsgcGF0aCA9IGRpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTVGQkQwMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOyBwYXRoID0gZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkU1RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXNwbGF5TGlzdFJlcGxheWVyLmg7IHBh
dGggPSBkaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkU2Qzc2QjFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVt
ZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU3MTQwNDE0MjE3MEI4
MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkU3MTQxNTE0MjE4OUZDMDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI1OTMsNiArMjI1OTUsOCBAQAogCQkJCUIyNzUz
NTM5MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLAogCQkJCTMxMDNCN0RFMURCMDE1NTYw
MDhCQjg5MCAvKiBDb2xvckhhc2guaCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIg
LyogQ29sb3JTcGFjZS5oICovLAorCQkJCTBGRTZDNzZCMUZCRkI3QTYwMDI1QzA1MyAvKiBDb2xv
clV0aWxpdGllcy5jcHAgKi8sCisJCQkJMEZFNkM3NkMxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9y
VXRpbGl0aWVzLmggKi8sCiAJCQkJQzJGNEU3ODgxRTQ1QUVERjAwNkQ3MTA1IC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQzJGNEU3ODkxRTQ1QUVERjAwNkQ3MTA1IC8qIENv
bXBsZXhUZXh0Q29udHJvbGxlci5oICovLAogCQkJCTJEMkZDMDU0MTQ2MENENkYwMDI2MzYzMyAv
KiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTIxODFk
N2ViMWY5NzY2Y2VmZTUyMzY5OWRmYWYwZmNkNDkzMTE2NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcApAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JVdGls
aXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb2xvckNvbXBvbmVudHM6OkNvbG9y
Q29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIGZsb2F0Q29tcG9uZW50cykKK3sKKyAg
ICBjb21wb25lbnRzWzBdID0gY2xhbXBlZENvbG9yQ29tcG9uZW50KGZsb2F0Q29tcG9uZW50cy5j
b21wb25lbnRzWzBdKTsKKyAgICBjb21wb25lbnRzWzFdID0gY2xhbXBlZENvbG9yQ29tcG9uZW50
KGZsb2F0Q29tcG9uZW50cy5jb21wb25lbnRzWzFdKTsKKyAgICBjb21wb25lbnRzWzJdID0gY2xh
bXBlZENvbG9yQ29tcG9uZW50KGZsb2F0Q29tcG9uZW50cy5jb21wb25lbnRzWzJdKTsKKyAgICBj
b21wb25lbnRzWzNdID0gY2xhbXBlZENvbG9yQ29tcG9uZW50KGZsb2F0Q29tcG9uZW50cy5jb21w
b25lbnRzWzNdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThh
MDViODg0MmY3MTRmZmE1OGJmZGVkMWYzNGNkNDViZDkyMjNiNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKQEAgLTAs
MCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRmxvYXRD
b21wb25lbnRzIHsKKyAgICBGbG9hdENvbXBvbmVudHMoZmxvYXQgYSA9IDAsIGZsb2F0IGIgPSAw
LCBmbG9hdCBjID0gMCwgZmxvYXQgZCA9IDApCisgICAgeworICAgICAgICBjb21wb25lbnRzWzBd
ID0gYTsKKyAgICAgICAgY29tcG9uZW50c1sxXSA9IGI7CisgICAgICAgIGNvbXBvbmVudHNbMl0g
PSBjOworICAgICAgICBjb21wb25lbnRzWzNdID0gZDsKKyAgICB9CisKKyAgICBGbG9hdENvbXBv
bmVudHMmIG9wZXJhdG9yICs9KGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgcmhzKQorICAgIHsKKyAg
ICAgICAgY29tcG9uZW50c1swXSArPSByaHMuY29tcG9uZW50c1swXTsKKyAgICAgICAgY29tcG9u
ZW50c1sxXSArPSByaHMuY29tcG9uZW50c1sxXTsKKyAgICAgICAgY29tcG9uZW50c1syXSArPSBy
aHMuY29tcG9uZW50c1syXTsKKyAgICAgICAgY29tcG9uZW50c1szXSArPSByaHMuY29tcG9uZW50
c1szXTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEZsb2F0Q29tcG9uZW50
cyBvcGVyYXRvciArKGZsb2F0IHJocykgY29uc3QKKyAgICB7CisgICAgICAgIEZsb2F0Q29tcG9u
ZW50cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzBdID0gY29tcG9uZW50c1sw
XSArIHJoczsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbMV0gPSBjb21wb25lbnRzWzFdICsg
cmhzOworICAgICAgICByZXN1bHQuY29tcG9uZW50c1syXSA9IGNvbXBvbmVudHNbMl0gKyByaHM7
CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzNdID0gY29tcG9uZW50c1szXSArIHJoczsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBGbG9hdENvbXBvbmVudHMgb3BlcmF0
b3IgLyhmbG9hdCBkZW5vbWluYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIEZsb2F0Q29tcG9u
ZW50cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzBdID0gY29tcG9uZW50c1sw
XSAvIGRlbm9taW5hdG9yOworICAgICAgICByZXN1bHQuY29tcG9uZW50c1sxXSA9IGNvbXBvbmVu
dHNbMV0gLyBkZW5vbWluYXRvcjsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbMl0gPSBjb21w
b25lbnRzWzJdIC8gZGVub21pbmF0b3I7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzNdID0g
Y29tcG9uZW50c1szXSAvIGRlbm9taW5hdG9yOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIEZsb2F0Q29tcG9uZW50cyBvcGVyYXRvciAqKGZsb2F0IGZhY3RvcikgY29uc3QK
KyAgICB7CisgICAgICAgIEZsb2F0Q29tcG9uZW50cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5j
b21wb25lbnRzWzBdID0gY29tcG9uZW50c1swXSAqIGZhY3RvcjsKKyAgICAgICAgcmVzdWx0LmNv
bXBvbmVudHNbMV0gPSBjb21wb25lbnRzWzFdICogZmFjdG9yOworICAgICAgICByZXN1bHQuY29t
cG9uZW50c1syXSA9IGNvbXBvbmVudHNbMl0gKiBmYWN0b3I7CisgICAgICAgIHJlc3VsdC5jb21w
b25lbnRzWzNdID0gY29tcG9uZW50c1szXSAqIGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICBGbG9hdENvbXBvbmVudHMgYWJzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEZsb2F0Q29tcG9uZW50cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzBd
ID0gZmFicyhjb21wb25lbnRzWzBdKTsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbMV0gPSBm
YWJzKGNvbXBvbmVudHNbMV0pOworICAgICAgICByZXN1bHQuY29tcG9uZW50c1syXSA9IGZhYnMo
Y29tcG9uZW50c1syXSk7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzNdID0gZmFicyhjb21w
b25lbnRzWzNdKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBmbG9hdCBj
b21wb25lbnRzWzRdOworfTsKKworc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CisgICAgQ29sb3JD
b21wb25lbnRzKCkgPSBkZWZhdWx0OworICAgIENvbG9yQ29tcG9uZW50cyhjb25zdCBGbG9hdENv
bXBvbmVudHMmKTsKKyAgICB1aW50OF90IGNvbXBvbmVudHNbNF0geyB9OworfTsKKworaW5saW5l
IHVpbnQ4X3QgY2xhbXBlZENvbG9yQ29tcG9uZW50KGZsb2F0IGYpCit7CisgICAgLy8gU2VlIGFs
c28gY29sb3JGbG9hdFRvUkdCQUJ5dGUoKS4KKyAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjpt
aW4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKDI1NS4wZiAqIGYpKSwgMjU1KSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IDAzNjY1MzkxMzFl
ZTgwNWQ5MmUzM2M3NDk2ODU3MTliMGUzZWZmMjEuLmE5Y2JhYmI2Yjk1YjdlMzAxZGQyMTcwOGZl
YWNkMTU4ODRiMjI0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTUsNiArNSw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUmVuYXRhIEhvZG92YW4gPHJlbmlAaW5mLnUtc3plZ2VkLmh1PgogICog
Q29weXJpZ2h0IChDKSAyMDExIEdhYm9yIExva2kgPGxva2lAd2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE4Niw3ICsx
ODcsNyBAQCBpbmxpbmUgdm9pZCBjaGVja05vaXNlKGludCYgbm9pc2VWYWx1ZSwgaW50IGxpbWl0
VmFsdWUsIGludCBuZXdWYWx1ZSkKICAgICAgICAgbm9pc2VWYWx1ZSAtPSBuZXdWYWx1ZSAtIDE7
CiB9CiAKLWZsb2F0IEZFVHVyYnVsZW5jZTo6bm9pc2UyRChpbnQgY2hhbm5lbCwgY29uc3QgUGFp
bnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIFN0aXRjaERhdGEmIHN0aXRjaERhdGEsIGNvbnN0IEZs
b2F0UG9pbnQmIG5vaXNlVmVjdG9yKQorRmxvYXRDb21wb25lbnRzIEZFVHVyYnVsZW5jZTo6bm9p
c2UyRChjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0YSYgc3RpdGNo
RGF0YSwgY29uc3QgRmxvYXRQb2ludCYgbm9pc2VWZWN0b3IpCiB7CiAgICAgc3RydWN0IE5vaXNl
IHsKICAgICAgICAgaW50IG5vaXNlUG9zaXRpb25JbnRlZ2VyVmFsdWU7CkBAIC0yMTYsMzMgKzIx
Nyw0NCBAQCBmbG9hdCBGRVR1cmJ1bGVuY2U6Om5vaXNlMkQoaW50IGNoYW5uZWwsIGNvbnN0IFBh
aW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBTdGl0YwogCiAgICAgZmxvYXQgc3ggPSBzbW9vdGhD
dXJ2ZShub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUpOwogICAgIGZsb2F0IHN5ID0g
c21vb3RoQ3VydmUobm9pc2VZLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlKTsKLSAgICBmbG9h
dCBhLCBiLCB1LCB2OwotCi0gICAgLy8gVGhpcyBpcyB0YWtlbiAxOjEgZnJvbSBTVkcgc3BlYzog
aHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmlsdGVycy5odG1sI2ZlVHVyYnVsZW5jZUVsZW1l
bnQuCi0gICAgaW50IHRlbXAgPSBwYWludGluZ0RhdGEubGF0dGljZVNlbGVjdG9yW2xhdHRpY2VJ
bmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZhbHVlXTsKLSAgICBjb25zdCBmbG9h
dCogcSA9IHBhaW50aW5nRGF0YS5ncmFkaWVudFtjaGFubmVsXVt0ZW1wXTsKLSAgICB1ID0gbm9p
c2VYLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlICogcVswXSArIG5vaXNlWS5ub2lzZVBvc2l0
aW9uRnJhY3Rpb25WYWx1ZSAqIHFbMV07Ci0gICAgdGVtcCA9IHBhaW50aW5nRGF0YS5sYXR0aWNl
U2VsZWN0b3JbbmV4dExhdHRpY2VJbmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZh
bHVlXTsKLSAgICBxID0gcGFpbnRpbmdEYXRhLmdyYWRpZW50W2NoYW5uZWxdW3RlbXBdOwotICAg
IHYgPSAobm9pc2VYLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlIC0gMSkgKiBxWzBdICsgbm9p
c2VZLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlICogcVsxXTsKLSAgICBhID0gbGluZWFySW50
ZXJwb2xhdGlvbihzeCwgdSwgdik7Ci0gICAgdGVtcCA9IHBhaW50aW5nRGF0YS5sYXR0aWNlU2Vs
ZWN0b3JbbGF0dGljZUluZGV4ICsgbm9pc2VZLm5vaXNlUG9zaXRpb25JbnRlZ2VyVmFsdWUgKyAx
XTsKLSAgICBxID0gcGFpbnRpbmdEYXRhLmdyYWRpZW50W2NoYW5uZWxdW3RlbXBdOwotICAgIHUg
PSBub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUgKiBxWzBdICsgKG5vaXNlWS5ub2lz
ZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAtIDEpICogcVsxXTsKLSAgICB0ZW1wID0gcGFpbnRpbmdE
YXRhLmxhdHRpY2VTZWxlY3RvcltuZXh0TGF0dGljZUluZGV4ICsgbm9pc2VZLm5vaXNlUG9zaXRp
b25JbnRlZ2VyVmFsdWUgKyAxXTsKLSAgICBxID0gcGFpbnRpbmdEYXRhLmdyYWRpZW50W2NoYW5u
ZWxdW3RlbXBdOwotICAgIHYgPSAobm9pc2VYLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlIC0g
MSkgKiBxWzBdICsgKG5vaXNlWS5ub2lzZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAtIDEpICogcVsx
XTsKLSAgICBiID0gbGluZWFySW50ZXJwb2xhdGlvbihzeCwgdSwgdik7Ci0gICAgcmV0dXJuIGxp
bmVhckludGVycG9sYXRpb24oc3ksIGEsIGIpOworCisgICAgYXV0byBub2lzZUZvckNoYW5uZWwg
PSBbJl0oaW50IGNoYW5uZWwpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0YWtlbiAxOjEgZnJvbSBT
Vkcgc3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmlsdGVycy5odG1sI2ZlVHVyYnVs
ZW5jZUVsZW1lbnQuCisgICAgICAgIGludCB0ZW1wID0gcGFpbnRpbmdEYXRhLmxhdHRpY2VTZWxl
Y3RvcltsYXR0aWNlSW5kZXggKyBub2lzZVkubm9pc2VQb3NpdGlvbkludGVnZXJWYWx1ZV07Cisg
ICAgICAgIGNvbnN0IGZsb2F0KiBxID0gcGFpbnRpbmdEYXRhLmdyYWRpZW50W2NoYW5uZWxdW3Rl
bXBdOworCisgICAgICAgIGZsb2F0IHUgPSBub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFs
dWUgKiBxWzBdICsgbm9pc2VZLm5vaXNlUG9zaXRpb25GcmFjdGlvblZhbHVlICogcVsxXTsKKyAg
ICAgICAgdGVtcCA9IHBhaW50aW5nRGF0YS5sYXR0aWNlU2VsZWN0b3JbbmV4dExhdHRpY2VJbmRl
eCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZhbHVlXTsKKyAgICAgICAgcSA9IHBhaW50
aW5nRGF0YS5ncmFkaWVudFtjaGFubmVsXVt0ZW1wXTsKKyAgICAgICAgZmxvYXQgdiA9IChub2lz
ZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUgLSAxKSAqIHFbMF0gKyBub2lzZVkubm9pc2VQ
b3NpdGlvbkZyYWN0aW9uVmFsdWUgKiBxWzFdOworICAgICAgICBmbG9hdCBhID0gbGluZWFySW50
ZXJwb2xhdGlvbihzeCwgdSwgdik7CisgICAgICAgIHRlbXAgPSBwYWludGluZ0RhdGEubGF0dGlj
ZVNlbGVjdG9yW2xhdHRpY2VJbmRleCArIG5vaXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZhbHVl
ICsgMV07CisgICAgICAgIHEgPSBwYWludGluZ0RhdGEuZ3JhZGllbnRbY2hhbm5lbF1bdGVtcF07
CisgICAgICAgIHUgPSBub2lzZVgubm9pc2VQb3NpdGlvbkZyYWN0aW9uVmFsdWUgKiBxWzBdICsg
KG5vaXNlWS5ub2lzZVBvc2l0aW9uRnJhY3Rpb25WYWx1ZSAtIDEpICogcVsxXTsKKyAgICAgICAg
dGVtcCA9IHBhaW50aW5nRGF0YS5sYXR0aWNlU2VsZWN0b3JbbmV4dExhdHRpY2VJbmRleCArIG5v
aXNlWS5ub2lzZVBvc2l0aW9uSW50ZWdlclZhbHVlICsgMV07CisgICAgICAgIHEgPSBwYWludGlu
Z0RhdGEuZ3JhZGllbnRbY2hhbm5lbF1bdGVtcF07CisgICAgICAgIHYgPSAobm9pc2VYLm5vaXNl
UG9zaXRpb25GcmFjdGlvblZhbHVlIC0gMSkgKiBxWzBdICsgKG5vaXNlWS5ub2lzZVBvc2l0aW9u
RnJhY3Rpb25WYWx1ZSAtIDEpICogcVsxXTsKKyAgICAgICAgZmxvYXQgYiA9IGxpbmVhckludGVy
cG9sYXRpb24oc3gsIHUsIHYpOworCisgICAgICAgIHJldHVybiBsaW5lYXJJbnRlcnBvbGF0aW9u
KHN5LCBhLCBiKTsKKyAgICB9OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgbm9pc2VGb3JDaGFu
bmVsKDApLAorICAgICAgICBub2lzZUZvckNoYW5uZWwoMSksCisgICAgICAgIG5vaXNlRm9yQ2hh
bm5lbCgyKSwKKyAgICAgICAgbm9pc2VGb3JDaGFubmVsKDMpCisgICAgfTsKIH0KIAotdW5zaWdu
ZWQgY2hhciBGRVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGlu
dCBjaGFubmVsLCBjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0YSYg
c3RpdGNoRGF0YSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCitDb2xvckNvbXBvbmVudHMgRkVU
dXJidWxlbmNlOjpjYWxjdWxhdGVUdXJidWxlbmNlVmFsdWVGb3JQb2ludChjb25zdCBQYWludGlu
Z0RhdGEmIHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0YSYgc3RpdGNoRGF0YSwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQpCiB7CiAgICAgZmxvYXQgdGlsZVdpZHRoID0gcGFpbnRpbmdEYXRhLmZpbHRl
clNpemUud2lkdGgoKTsKICAgICBmbG9hdCB0aWxlSGVpZ2h0ID0gcGFpbnRpbmdEYXRhLmZpbHRl
clNpemUuaGVpZ2h0KCk7CiAgICAgQVNTRVJUKHRpbGVXaWR0aCA+IDAgJiYgdGlsZUhlaWdodCA+
IDApOwogICAgIGZsb2F0IGJhc2VGcmVxdWVuY3lYID0gbV9iYXNlRnJlcXVlbmN5WDsKICAgICBm
bG9hdCBiYXNlRnJlcXVlbmN5WSA9IG1fYmFzZUZyZXF1ZW5jeVk7CisKICAgICAvLyBBZGp1c3Qg
dGhlIGJhc2UgZnJlcXVlbmNpZXMgaWYgbmVjZXNzYXJ5IGZvciBzdGl0Y2hpbmcuCiAgICAgaWYg
KG1fc3RpdGNoVGlsZXMpIHsKICAgICAgICAgLy8gV2hlbiBzdGl0Y2hpbmcgdGlsZWQgdHVyYnVs
ZW5jZSwgdGhlIGZyZXF1ZW5jaWVzIG11c3QgYmUgYWRqdXN0ZWQKQEAgLTI3MSwxNyArMjgzLDE5
IEBAIHVuc2lnbmVkIGNoYXIgRkVUdXJidWxlbmNlOjpjYWxjdWxhdGVUdXJidWxlbmNlVmFsdWVG
b3JQb2ludChpbnQgY2hhbm5lbCwgY29uc3QKICAgICAgICAgc3RpdGNoRGF0YS53cmFwWSA9IHNf
cGVybGluTm9pc2UgKyBzdGl0Y2hEYXRhLmhlaWdodDsKICAgICB9CiAKLSAgICBmbG9hdCB0dXJi
dWxlbmNlRnVuY3Rpb25SZXN1bHQgPSAwOworICAgIEZsb2F0Q29tcG9uZW50cyB0dXJidWxlbmNl
RnVuY3Rpb25SZXN1bHQ7CiAgICAgRmxvYXRQb2ludCBub2lzZVZlY3Rvcihwb2ludC54KCkgKiBi
YXNlRnJlcXVlbmN5WCwgcG9pbnQueSgpICogYmFzZUZyZXF1ZW5jeVkpOwogICAgIGZsb2F0IHJh
dGlvID0gMTsKICAgICBmb3IgKGludCBvY3RhdmUgPSAwOyBvY3RhdmUgPCBtX251bU9jdGF2ZXM7
ICsrb2N0YXZlKSB7CiAgICAgICAgIGlmIChtX3R5cGUgPT0gRkVUVVJCVUxFTkNFX1RZUEVfRlJB
Q1RBTE5PSVNFKQotICAgICAgICAgICAgdHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0ICs9IG5vaXNl
MkQoY2hhbm5lbCwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBub2lzZVZlY3RvcikgLyByYXRp
bzsKKyAgICAgICAgICAgIHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCArPSBub2lzZTJEKHBhaW50
aW5nRGF0YSwgc3RpdGNoRGF0YSwgbm9pc2VWZWN0b3IpIC8gcmF0aW87CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCArPSBmYWJzZihub2lzZTJEKGNo
YW5uZWwsIHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgbm9pc2VWZWN0b3IpKSAvIHJhdGlvOwor
ICAgICAgICAgICAgdHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0ICs9IG5vaXNlMkQocGFpbnRpbmdE
YXRhLCBzdGl0Y2hEYXRhLCBub2lzZVZlY3RvcikuYWJzKCkgLyByYXRpbzsKKwogICAgICAgICBu
b2lzZVZlY3Rvci5zZXRYKG5vaXNlVmVjdG9yLngoKSAqIDIpOwogICAgICAgICBub2lzZVZlY3Rv
ci5zZXRZKG5vaXNlVmVjdG9yLnkoKSAqIDIpOwogICAgICAgICByYXRpbyAqPSAyOworCiAgICAg
ICAgIGlmIChtX3N0aXRjaFRpbGVzKSB7CiAgICAgICAgICAgICAvLyBVcGRhdGUgc3RpdGNoIHZh
bHVlcy4gU3VidHJhY3Rpbmcgc19wZXJsaW5Ob2lzZW9pc2UgYmVmb3JlIHRoZSBtdWx0aXBsaWNh
dGlvbiBhbmQKICAgICAgICAgICAgIC8vIGFkZGluZyBpdCBhZnRlcndhcmQgc2ltcGxpZmllcyB0
byBzdWJ0cmFjdGluZyBpdCBvbmNlLgpAQCAtMjk2LDkgKzMxMCw4IEBAIHVuc2lnbmVkIGNoYXIg
RkVUdXJidWxlbmNlOjpjYWxjdWxhdGVUdXJidWxlbmNlVmFsdWVGb3JQb2ludChpbnQgY2hhbm5l
bCwgY29uc3QKICAgICAvLyBhbmQgKHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCAqIDI1NSkgYnkg
dHVyYnVsZW5jZS4KICAgICBpZiAobV90eXBlID09IEZFVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxO
T0lTRSkKICAgICAgICAgdHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0ID0gdHVyYnVsZW5jZUZ1bmN0
aW9uUmVzdWx0ICogMC41ZiArIDAuNWY7Ci0gICAgLy8gQ2xhbXAgcmVzdWx0Ci0gICAgdHVyYnVs
ZW5jZUZ1bmN0aW9uUmVzdWx0ID0gc3RkOjptYXgoc3RkOjptaW4odHVyYnVsZW5jZUZ1bmN0aW9u
UmVzdWx0LCAxLmYpLCAwLmYpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Pih0dXJidWxlbmNlRnVuY3Rpb25SZXN1bHQgKiAyNTUpOworCisgICAgcmV0dXJuIHR1cmJ1bGVu
Y2VGdW5jdGlvblJlc3VsdDsKIH0KIAogdm9pZCBGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24oVWlu
dDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXksIGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdE
YXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkKQEAgLTMxNSw4ICszMjgsMTEgQEAgdm9pZCBGRVR1
cmJ1bGVuY2U6OmZpbGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXksIGNvbnN0
IFBhaW50aW5nRGF0YSYKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBmaWx0ZXJSZWdpb24u
d2lkdGgoKTsgKyt4KSB7CiAgICAgICAgICAgICBwb2ludC5zZXRYKHBvaW50LngoKSArIDEpOwog
ICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gaW52ZXJzZVRyYW5zZnJvbS5tYXBQ
b2ludChwb2ludCk7Ci0gICAgICAgICAgICBmb3IgKGludCBjaGFubmVsID0gMDsgY2hhbm5lbCA8
IDQ7ICsrY2hhbm5lbCwgKytpbmRleE9mUGl4ZWxDaGFubmVsKQotICAgICAgICAgICAgICAgIHBp
eGVsQXJyYXktPnNldChpbmRleE9mUGl4ZWxDaGFubmVsLCBjYWxjdWxhdGVUdXJidWxlbmNlVmFs
dWVGb3JQb2ludChjaGFubmVsLCBwYWludGluZ0RhdGEsIHN0aXRjaERhdGEsIGxvY2FsUG9pbnQp
KTsKKyAgICAgICAgICAgIENvbG9yQ29tcG9uZW50cyB2YWx1ZXMgPSBjYWxjdWxhdGVUdXJidWxl
bmNlVmFsdWVGb3JQb2ludChwYWludGluZ0RhdGEsIHN0aXRjaERhdGEsIGxvY2FsUG9pbnQpOwor
ICAgICAgICAgICAgcGl4ZWxBcnJheS0+c2V0KGluZGV4T2ZQaXhlbENoYW5uZWwrKywgdmFsdWVz
LmNvbXBvbmVudHNbMF0pOworICAgICAgICAgICAgcGl4ZWxBcnJheS0+c2V0KGluZGV4T2ZQaXhl
bENoYW5uZWwrKywgdmFsdWVzLmNvbXBvbmVudHNbMV0pOworICAgICAgICAgICAgcGl4ZWxBcnJh
eS0+c2V0KGluZGV4T2ZQaXhlbENoYW5uZWwrKywgdmFsdWVzLmNvbXBvbmVudHNbMl0pOworICAg
ICAgICAgICAgcGl4ZWxBcnJheS0+c2V0KGluZGV4T2ZQaXhlbENoYW5uZWwrKywgdmFsdWVzLmNv
bXBvbmVudHNbM10pOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzU1LDcgKzM3MSw3IEBAIHZv
aWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgICAgICAgICBp
bnQgc3RhcnRZID0gMDsKICAgICAgICAgICAgIGZvciAoOyBpID4gMDsgLS1pKSB7Ci0gICAgICAg
ICAgICAgICAgRmlsbFJlZ2lvblBhcmFtZXRlcnMmIHBhcmFtcyA9IHBhcmFsbGVsSm9icy5wYXJh
bWV0ZXIoaS0xKTsKKyAgICAgICAgICAgICAgICBGaWxsUmVnaW9uUGFyYW1ldGVycyYgcGFyYW1z
ID0gcGFyYWxsZWxKb2JzLnBhcmFtZXRlcihpIC0gMSk7CiAgICAgICAgICAgICAgICAgcGFyYW1z
LmZpbHRlciA9IHRoaXM7CiAgICAgICAgICAgICAgICAgcGFyYW1zLnBpeGVsQXJyYXkgPSBwaXhl
bEFycmF5OwogICAgICAgICAgICAgICAgIHBhcmFtcy5wYWludGluZ0RhdGEgPSAmcGFpbnRpbmdE
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVR1cmJ1bGVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmgKaW5kZXggNmVhNDZlMWMzZjIyNDg1NDNiOTgxNjhmOWVjMjk3Yzhh
ZDczNWI2YS4uNzNlZjg1NmZhZWNjN2JhZDUzNjlhYWJjOGQ3MGFhY2EzNTA2MTdhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5oCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHpl
IDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmVuYXRhIEhvZG92YW4g
PHJlbmlAaW5mLnUtc3plZ2VkLmh1PgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsOSArMjIsOSBAQAogICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBGRVR1cmJ1bGVuY2VfaAotI2RlZmluZSBGRVR1
cmJ1bGVuY2VfaAorI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogCkBAIC0xMTgs
OCArMTE5LDggQEAgcHJpdmF0ZToKICAgICBGRVR1cmJ1bGVuY2UoRmlsdGVyJiwgVHVyYnVsZW5j
ZVR5cGUsIGZsb2F0LCBmbG9hdCwgaW50LCBmbG9hdCwgYm9vbCk7CiAKICAgICB2b2lkIGluaXRQ
YWludChQYWludGluZ0RhdGEmKTsKLSAgICBmbG9hdCBub2lzZTJEKGludCBjaGFubmVsLCBjb25z
dCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHVu
c2lnbmVkIGNoYXIgY2FsY3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQoaW50IGNoYW5uZWws
IGNvbnN0IFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEmLCBjb25zdCBGbG9hdFBvaW50Jik7Cisg
ICAgRmxvYXRDb21wb25lbnRzIG5vaXNlMkQoY29uc3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0
YSYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBDb2xvckNvbXBvbmVudHMgY2FsY3VsYXRlVHVy
YnVsZW5jZVZhbHVlRm9yUG9pbnQoY29uc3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSYsIGNv
bnN0IEZsb2F0UG9pbnQmKTsKICAgICB2b2lkIGZpbGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkq
LCBjb25zdCBQYWludGluZ0RhdGEmLCBpbnQsIGludCk7CiAKICAgICBUdXJidWxlbmNlVHlwZSBt
X3R5cGU7CkBAIC0xMzIsNCArMTMzLDMgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gRkVUdXJidWxlbmNlX2gK
</data>
<flag name="review"
          id="346518"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>