<?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>177064</bug_id>
          
          <creation_ts>2017-09-17 19:29:35 -0700</creation_ts>
          <short_desc>Start working on WSL documentation</short_desc>
          <delta_ts>2018-10-13 16:30:27 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349818</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-17 19:29:35 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349819</commentid>
    <comment_count>1</comment_count>
      <attachid>321066</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-17 19:30:24 -0700</bug_when>
    <thetext>Created attachment 321066
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349835</commentid>
    <comment_count>2</comment_count>
      <attachid>321073</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-17 21:05:27 -0700</bug_when>
    <thetext>Created attachment 321073
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349839</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-17 22:06:34 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/222140/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349841</commentid>
    <comment_count>4</comment_count>
      <attachid>321073</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-17 22:19:01 -0700</bug_when>
    <thetext>Comment on attachment 321073
the patch

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

&gt; Tools/WebGPUShadingLanguageRI/WSL.md:284
&gt; +    int y;

I think you meant double here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349843</commentid>
    <comment_count>5</comment_count>
      <attachid>321073</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-17 22:24:02 -0700</bug_when>
    <thetext>Comment on attachment 321073
the patch

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

&gt; Tools/WebGPUShadingLanguageRI/WSL.md:311
&gt; +- Read-modify-write operators like `+=` are desugared to a load of the load value, the underlying operator (like `+`), and a store of the new value. It&apos;s not possible to override `+=`, `-=`, etc.

I think right now it is. We should remove this functionality if this isn&apos;t desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349949</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-18 09:55:43 -0700</bug_when>
    <thetext>&quot;Mylex Maxfield&quot; 😖</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349976</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-18 10:42:09 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; &quot;Mylex Maxfield&quot; 😖

oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353381</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:26:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468922</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 16:30:27 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/124</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321066</attachid>
            <date>2017-09-17 19:30:24 -0700</date>
            <delta_ts>2017-09-17 21:05:27 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10099</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMjEzOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE3LTA5LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RhcnQgd29ya2luZyBvbiBXU0wgZG9jdW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MDY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgd29y
ayBpbiBwcm9ncmVzcy4gSSdkIGxpa2UgdG8gY2hlY2sgaXQgaW4gYW5kIHRoZW4ga2VlcCBhZGRp
bmcgdG8gaXQuCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU0wubWQ6IEFk
ZGVkLgorCiAyMDE3LTA5LTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgV1NMIG5lZWRzIGZsb2F0IGFuZCBkb3VibGUgc3VwcG9ydApJbmRleDog
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV1NMLm1kCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dTTC5tZAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU0wubWQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NTIgQEAKKyMgV2ViR1BVIFNoYWRpbmcgTGFuZ3VhZ2UKKworV2ViR1BVIFNoYWRpbmcgTGFuZ3Vh
Z2UsIG9yIFdTTCBmb3Igc2hvcnQsIGlzIGEgdHlwZS1zYWZlIGxvdy1vdmVyaGVhZCBwcm9ncmFt
bWluZyBsYW5ndWFnZSBmb3IgR1BVcyAoZ3JhcGhpY3MgcHJvY2Vzc2luZyB1bml0cykuIFRoaXMg
ZG9jdW1lbnQgZXhwbGFpbnMgaG93IFdTTCB3b3Jrcy4KKworIyBHb2FscworCitXU0wgaXMgZGVz
aWduZWQgdG8gYWNoaWV2ZSB0aGUgZm9sbG93aW5nIGdvYWxzOgorCistIFdTTCBzaG91bGQgZmVl
bCAqZmFtaWxpYXIqIHRvIEMrKyBwcm9ncmFtbWVycy4KKy0gV1NMIHNob3VsZCBiZSBoYXZlIGEg
KnNvdW5kKiBhbmQgKmRlY2lkYWJsZSogdHlwZSBzeXN0ZW0uCistIFdTTCBzaG91bGQgbm90IHBl
cm1pdCAqb3V0LW9mLWJvdW5kcyogbWVtb3J5IGFjY2Vzc2VzLgorLSBXU0wgc2hvdWxkIGJlIGhh
dmUgKmxvdyBvdmVyaGVhZCouCisKK1RoZSBjb21iaW5hdGlvbiBvZiBhIHNvdW5kIHR5cGUgc3lz
dGVtIGFuZCBib3VuZHMgY2hlY2tpbmcgbWFrZXMgV1NMIGEgc2VjdXJlIHNoYWRlciBsYW5ndWFn
ZTogdGhlIGxhbmd1YWdlIGl0c2VsZiBpcyByZXNwb25zaWJsZSBmb3IgaXNvbGF0aW5nIHRoZSBz
aGFkZXIgZnJvbSB0aGUgcmVzdCBvZiB0aGUgR1BVLgorCisjIEZhbWlsaWFyIFN5bnRheAorCitX
U0wgaXMgYmFzZWQgb24gQyBzeW50YXgsIGJ1dCBleGNsdWRlcyBmZWF0dXJlcyB0aGF0IGFyZSBl
aXRoZXIgdW5uZWNlc3NhcnksIGluc2VjdXJlLCBvciByZXBsYWNlZCBieSBvdGhlciBXU0wgZmVh
dHVyZXM6CisKKy0gTm8gc3RyaW5ncy4KKy0gTm8gYHJlZ2lzdGVyYCwgYHZvbGF0aWxlYCwgYGNv
bnN0YCwgYHJlc3RyaWN0YCwgb3IgYGV4dGVybmAga2V5d29yZHMuCistIE5vIHVuaW9ucy4gYHVu
aW9uYCBpcyBub3QgYSBrZXl3b3JkLgorLSBObyBnb3RvIG9yIGxhYmVscy4gYGdvdG9gIGlzIG5v
dCBhIGtleXdvcmQuCistIE5vIGAqYCBwb2ludGVycy4KKy0gRWZmZWN0bGVzcyBleHByZXNzaW9u
cyBhcmUgbm90IHN0YXRlbWVudHMgKGBhICsgYjtgIGlzIGEgcGFyc2UgZXJyb3IpLgorLSBObyB1
bmRlZmluZWQgdmFsdWVzIChgaW50IHg7YCBpbml0aWFsaXplcyB4IHRvIDApLgorLSBObyBhdXRv
bWF0aWMgdHlwZSBjb252ZXJzaW9ucyAoYGludCB4OyB1aW50IHkgPSB4O2AgaXMgYSB0eXBlIGVy
cm9yKS4KKy0gTm8gcmVjdXJzaW9uLgorLSBObyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uLgor
LSBObyBtb2R1bGFyaXR5LiBUaGUgd2hvbGUgcHJvZ3JhbSBpcyBvbmUgZmlsZS4KKworT24gdG9w
IG9mIHRoaXMgYmFyZSBDLWxpa2UgZm91bmRhdGlvbiwgV1NMIGFkZHMgc2VjdXJlIHZlcnNpb25z
IG9mIGZhbWlsaWFyIEMrKyBmZWF0dXJlczoKKworLSBUeXBlLXNhZmUgcG9pbnRlcnMgKGBeYCkg
YW5kIGFycmF5IHJlZmVyZW5jZXMgKGBbXWApLgorLSBHZW5lcmljcyB0byByZXBsYWNlIHRlbXBs
YXRlcy4KKy0gT3BlcmF0b3Igb3ZlcmxvYWRpbmcuIEJ1aWx0LWluIG9wZXJhdGlvbnMgbGlrZSBg
aW50IG9wZXJhdG9yKyhpbnQsIGludClgIGFyZSBqdXN0IG5hdGl2ZSBmdW5jdGlvbnMuCistIENh
c3Qgb3ZlcmxvYWRpbmcuIEJ1aWx0LWluIGNhc3RzIGxpa2UgYG9wZXJhdG9yIGludChkb3VibGUp
YCBhcmUganVzdCBuYXRpdmUgZnVuY3Rpb25zLgorLSBHZXR0ZXJzIGFuZCBzZXR0ZXJzLiBQcm9w
ZXJ0eSBhY2Nlc3NlcyBsaWtlIGB2ZWMueGAgcmVzb2x2ZSB0byBvdmVybG9hZHMgbGlrZSBgZmxv
YXQgb3BlcmF0b3IuZmllbGQoZmxvYXQ0KWAuCistIEFycmF5IGFjY2VzcyBvdmVybG9hZGluZy4g
QXJyYXkgYWNjZXNzZXMgbGlrZSBgdmVjWzBdYCByZXNvbHZlIHRvIHZlcmxvYWRzIGxpa2UgYGZs
b2F0IG9wZXJhdG9yW10oZmxvYXQ0LCB1aW50KWAuCisKK0luIHRoZSBmb2xsb3dpbmcgc2VjdGlv
bnMsIFdTTCBpcyBzaG93biBieSBleGFtcGxlIHN0YXJ0aW5nIHdpdGggaXRzIEMtbGlrZSBmb3Vu
ZGF0aW9uIGFuZCB0aGVuIGJ1aWxkaW5nIHVwIHRvIGluY2x1ZGUgbW9yZSBzb3BoaXN0aWNhdGVk
IGZlYXR1cmVzIGxpa2UgZ2VuZXJpY3MuCisKKyMjIENvbW1vbiBzdWJzZXQgb2YgQyBhbmQgV1NM
CisKK1RoZSBmb2xsb3dpbmcgaXMgYSB2YWxpZCBXU0wgZnVuY3Rpb24gZGVmaW5pdGlvbjoKKwor
ICAgIGludCBmb28oaW50IHgsIGludCB5LCBib29sIHApCisgICAgeworICAgICAgICBpZiAocCkK
KyAgICAgICAgICAgIHJldHVybiB4IC0geTsKKyAgICAgICAgcmV0dXJuIHggKyB5OworICAgIH0K
KworV1NMIHNvdXJjZSBmaWxlcyBiZWhhdmUgc2ltaWxhcmx5IHRvIEMgc291cmNlIGZpbGVzOgor
CistIFRvcC1sZXZlbCBzdGF0ZW1lbnRzIG11c3QgYmUgdHlwZSBvciBmdW5jdGlvbiBkZWZpbml0
aW9ucy4KKy0gV1NMIHVzZXMgc3RydWN0dXJlZCBDIGNvbnRyb2wgZmxvdyBjb25zdHJ1Y3RzLCBs
aWtlIGBpZmAsIGB3aGlsZWAsIGBmb3JgLCBgZG9gLCBgYnJlYWtgLCBhbmQgYGNvbnRpbnVlYC4K
Ky0gV1NMIHVzZXMgQy1saWtlIGBzd2l0Y2hgIHN0YXRlbWVudHMsIGJ1dCBkb2VzIG5vdCBhbGxv
dyB0aGVtIHRvIG92ZXJsYXAgb3RoZXIgY29udHJvbCBmbG93IChpLmUuIG5vIFtEdWZmJ3MgZGV2
aWNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EdWZmJTI3c19kZXZpY2UpKS4KKy0g
V1NMIGFsbG93cyB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYW55d2hlcmUgQysrIHdvdWxkLgorCitX
U0wgdHlwZXMgZGlmZmVyIGZyb20gQyB0eXBlcy4gRm9yIGV4YW1wbGUsIHRoaXMgaXMgYW4gYXJy
YXkgb2YgNDIgaW50ZWdlcnMgaW4gV1NMOgorCisgICAgaW50WzQyXSBhcnJheTsKKworVGhlIHR5
cGUgbmV2ZXIgc3Vycm91bmRzIHRoZSB2YXJpYWJsZSwgbGlrZSBpdCB3b3VsZCBpbiBDIChgaW50
IGFycmF5WzQyXWApLgorCisjIyBUeXBlLXNhZmUgcG9pbnRlcnMKKworV1NMIGluY2x1ZGVzIGEg
c2VjdXJlIHBvaW50ZXIgdHlwZS4gVG8gZW1waGFzaXplIHRoYXQgaXQgaXMgbm90IGxpa2UgdGhl
IEMgcG9pbnRlciwgV1NMIHVzZXMgYF5gIGZvciB0aGUgcG9pbnRlciB0eXBlIGFuZCBmb3IgZGVy
ZWZlcmVuY2UuIExpa2UgaW4gQywgYCZgIGlzIHVzZWQgdG8gdGFrZSB0aGUgYWRkcmVzcyBvZiBh
IHZhbHVlLiAgQmVjYXVzZSBHUFVzIGhhdmUgZGlmZmVyZW50IGtpbmRzIG9mIG1lbW9yaWVzLCBw
b2ludGVycyBtdXN0IGJlIGFubm90YXRlZCB3aXRoIGFuIGFkZHJlc3Mgc3BhY2UgKG9uZSBvZiBg
dGhyZWFkYCwgYHRocmVhZGdyb3VwYCwgYGRldmljZWAsIG9yIGBjb25zdGFudGApLiBGb3IgZXhh
bXBsZToKKworICAgIHZvaWQgYmFyKHRocmVhZCBpbnReIHApCisgICAgeworICAgICAgICBecCAr
PSA0MjsKKyAgICB9CisgICAgaW50IGZvbygpCisgICAgeworICAgICAgICBpbnQgeCA9IDI0Owor
ICAgICAgICBiYXIoJngpOworICAgICAgICByZXR1cm4geDsgLy8gUmV0dXJucyA2Ni4KKyAgICB9
CisKK1BvaW50ZXJzIGNhbiBiZSBgbnVsbGAuIEVhY2ggcG9pbnRlciBhY2Nlc3MgaXMgbnVsbC1j
aGVja2VkLCB0aG91Z2ggbW9zdCBwb2ludGVyIGFjY2Vzc2VzIChsaWtlIHRoaXMgb25lKSB3aWxs
IG5vdCBoYXZlIGEgbnVsbCBjaGVjay4gV1NMIHBsYWNlcyBlbm91Z2ggY29uc3RyYWludHMgb24g
dGhlIHByb2dyYW1tZXIgdGhhdCBwcm9ncmFtcyBhcmUgZWFzeSBmb3IgdGhlIGNvbXBpbGVyIHRv
IGFuYWx5emUuIFRoZSBjb21waWxlciB3aWxsIGFsd2F5cyBrbm93IHRoYXQgYF5wICs9IDQyYCBh
ZGRzIGA0MmAgdG8gYHhgIGluIHRoaXMgY2FzZS4KKworV1NMIHBvaW50ZXJzIGRvIG5vdCBzdXBw
b3J0IGNhc3Rpbmcgb3IgcG9pbnRlciBhcml0aG1ldGljLiBBbGwgbWVtb3J5IGFjY2Vzc2libGUg
dG8gYSBzaGFkZXIgb3V0bGl2ZXMgdGhlIHNoYWRlci4gVGhpcyBpcyBldmVuIHRydWUgb2YgbG9j
YWwgdmFyaWFibGVzLiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgV1NMIGRvZXMgbm90IHN1cHBv
cnQgcmVjdXJzaW9uLiBUaGVyZWZvcmUsIGxvY2FsIHZhcmlhYmxlcyBzaW1wbHkgZ2V0IGdsb2Jh
bCBzdG9yYWdlLiBMb2NhbCB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBv
ZiB0aGVpciBkZWNsYXJhdGlvbi4gSGVuY2UsIHRoZSBmb2xsb3dpbmcgaXMgYSB2YWxpZCBwcm9n
cmFtLCB3aGljaCB3aWxsIGV4aGliaXQgdGhlIHNhbWUgYmVoYXZpb3Igb24gZXZlcnkgV1NMIGlt
cGxlbWVudGF0aW9uOgorCisgICAgdGhyZWFkIGludF4gZm9vKCkKKyAgICB7CisgICAgICAgIGlu
dCB4ID0gNDI7CisgICAgICAgIHJldHVybiAmeDsKKyAgICB9CisgICAgaW50IGJhcigpCisgICAg
eworICAgICAgICB0aHJlYWQgaW50XiBwID0gZm9vKCk7CisgICAgICAgIHRocmVhZCBpbnReIHEg
PSBmb28oKTsKKyAgICAgICAgXnAgPSA1MzsKKyAgICAgICAgcmV0dXJuIF5xOyAvLyBSZXR1cm5z
IDUzLgorICAgIH0KKyAgICBpbnQgYmF6KCkKKyAgICB7CisgICAgICAgIHRocmVhZCBpbnReIHAg
PSBmb28oKTsKKyAgICAgICAgXnAgPSA1MzsKKyAgICAgICAgZm9vKCk7CisgICAgICAgIHJldHVy
biBecDsgLy8gUmV0dXJucyA0Mi4KKyAgICB9CisKK0l0J3MgcG9zc2libGUgdG8gcG9pbnQgdG8g
YW55IGtpbmQgb2YgZGF0YSB0eXBlLiBGb3IgZXhhbXBsZSwgYHRocmVhZCBkb3VibGVbNDJdXmAg
aXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIDQyIGRvdWJsZXMuCisKKyMjIFR5cGUtc2FmZSBh
cnJheSByZWZlcmVuY2VzCisKK1dTTCBzdXBwb3J0cyBhcnJheSByZWZlcmVuY2VzIHRoYXQgY2Fy
cnkgYSBwb2ludGVyIHRvIHRoZSBiYXNlIG9mIHRoZSBhcnJheSBhbmQgdGhlIGFycmF5J3MgbGVu
Z3RoLiBUaGlzIGFsbG93cyBhY2Nlc3NlcyB0byB0aGUgYXJyYXkgdG8gYmUgYm91bmRzLWNoZWNr
ZWQuCisKK0FuIGFycmF5IHJlZmVyZW5jZSBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgYEBgIG9w
ZXJhdG9yOgorCisgICAgaW50WzQyXSBhcnJheTsKKyAgICB0aHJlYWQgaW50W10gYXJyYXlSZWYg
PSBAYXJyYXk7CisKK0JvdGggYXJyYXlzIGFuZCBhcnJheSByZWZlcmVuY2VzIGNhbiBiZSBsb2Fk
ZWQgZnJvbSBhbmQgc3RvcmVkIHRvIHVzaW5nIGBvcGVyYXRvcltdYDoKKworICAgIGludCB4ID0g
YXJyYXlbaV07CisgICAgaW50IHkgPSBhcnJheVJlZltpXTsKKworQm90aCBhcnJheXMgYW5kIGFy
cmF5IHJlZmVyZW5jZXMga25vdyB0aGVpciBsZW5ndGg6CisKKyAgICB1aW50IGFycmF5TGVuZ3Ro
ID0gYXJyYXkubGVuZ3RoOworICAgIHVpbnQgYXJyYXlSZWZMZW5ndGggPSBhcnJheVJlZi5sZW5n
dGg7CisKK0dpdmVuIGFuIGFycmF5IG9yIGFycmF5IHJlZmVyZW5jZSwgaXQncyBwb3NzaWJsZSB0
byBnZXQgYSBwb2ludGVyIHRvIG9uZSBvZiBpdHMgZWxlbWVudHM6CisKKyAgICB0aHJlYWQgaW50
XiBwdHIxID0gJmFycmF5W2ldOworICAgIHRocmVhZCBpbnReIHB0cjIgPSAmYXJyYXlSZWZbaV07
CisKK0EgcG9pbnRlciBpcyBsaWtlIGFuIGFycmF5IHJlZmVyZW5jZSB3aXRoIG9uZSBlbGVtZW50
LiBJdCdzIHBvc3NpYmxlIHRvIHBlcmZvcm0gdGhpcyBjb252ZXJzaW9uOgorCisgICAgdGhyZWFk
IGludFtdIHJlZiA9IEBwdHIxOworICAgIHJlZlswXSAvLyBFcXVpdmFsZW50IHRvIF5wdHIxLgor
ICAgIHJlZi5sZW5ndGggLy8gMCBpZiBwdHIxIHdhcyBudWxsLCAxIGlmIHB0cjEgd2FzIG5vdCBu
dWxsLgorCitTaW1pbGFybHksIHVzaW5nIGBAYCBvbiBhIG5vbi1wb2ludGVyIHZhbHVlIHJlc3Vs
dHMgaW4gYSByZWZlcmVuY2Ugb2YgbGVuZ3RoIDE6CisKKyAgICBpbnQgeDsKKyAgICB0aHJlYWQg
aW50W10gcmVmID0gQHg7CisgICAgcmVmWzBdIC8vIEFsaWFzZXMgeC4KKyAgICByZWYubGVuZ3Ro
IC8vIFJldHVybnMgMS4KKworSXQncyBub3QgbGVnYWwgdG8gdXNlIGBAYCBvbiBhbiBhcnJheSBy
ZWZlcmVuY2U6CisKKyAgICB0aHJlYWQgaW50W10gcmVmOworICAgIHRocmVhZCBpbnRbXVtdIHJl
ZmVyZWYgPSBAcmVmOyAvLyBFcnJvciEKKworIyMgR2VuZXJpY3MKKworU2luY2UgZWZmZWN0bGVz
cyBleHByZXNzaW9ucyBhcmUgbm90IHN0YXRlbWVudHMsIHBhcnNpbmcgc3RhdGVtZW50cyBsaWtl
IGBhPGI+YztgIGlzIHVuYW1iaWd1b3VzLiBUaGlzIGFsbG93cyBXU0wgdG8gc3VwcG9ydCBhIGNs
ZWFuIGdlbmVyaWNzIHN5bnRheC4gVG8gbWFrZSB0eXBlIGNoZWNraW5nIHNpbXBsZSBhbmQgcHJl
ZGljdGFibGUsIFdTTCByZXF1aXJlcyB0aGF0IGdlbmVyaWMgZnVuY3Rpb25zIGFyZSB0eXBlLWNo
ZWNrYWJsZSBwcmlvciB0byBpbnN0YW50aWF0aW9uLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYSBz
bWFsbCBydWxlcyBkZWZlcnJlZCB0byBhZnRlciBpbnN0YW50aWF0aW9uLiBTZW1hbnRpYyBlcnJv
cnMgaW5zaWRlIGdlbmVyaWMgZnVuY3Rpb25zIHNob3cgdXAgb25jZSByZWdhcmRsZXNzIG9mIHRo
ZSBudW1iZXIgb2YgdGltZXMgdGhlIGdlbmVyaWMgZnVuY3Rpb24gaXMgaW5zdGFudGlhdGVkLgor
CitUaGlzIGlzIGEgc2ltcGxlIGdlbmVyaWMgZnVuY3Rpb246CisKKyAgICBUIGlkZW50aXR5PFQ+
KFQgdmFsdWUpCisgICAgeworICAgICAgICBUIHRtcCA9IHZhbHVlOworICAgICAgICByZXR1cm4g
dG1wOworICAgIH0KKworV1NMIGFsc28gc3VwcG9ydHMgc3RydWN0cywgd2hpY2ggYXJlIGFsc28g
YWxsb3dlZCB0byBiZSBnZW5lcmljOgorCisgICAgLy8gTm90IGdlbmVyaWMuCisgICAgc3RydWN0
IEZvbyB7CisgICAgICAgIGludCB4OworICAgICAgICBkb3VibGUgeTsKKyAgICB9CisgICAgLy8g
R2VuZXJpYy4KKyAgICBzdHJ1Y3QgQmFyPFQsIFU+IHsKKyAgICAgICAgVCB4OworICAgICAgICBV
IHk7CisgICAgfQorCitUeXBlIHBhcmFtZXRlcnMgY2FuIGFsc28gYmUgY29uc3RhbnQgZXhwcmVz
c2lvbnMuIEZvciBleGFtcGxlOgorCisgICAgdm9pZCBpbml0aWFsaXplQXJyYXk8VCwgdWludCBs
ZW5ndGg+KHRocmVhZCBUW2xlbmd0aF1eIGFycmF5LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAg
Zm9yICh1aW50IGkgPSBsZW5ndGg7IGktLTspCisgICAgICAgICAgICAoXmFycmF5KVtpXSA9IHZh
bHVlOworICAgIH0KKworQ29uc3RhbnQgZXhwcmVzc2lvbnMgcGFzc2VkIGFzIHR5cGUgYXJndW1l
bnRzIG11c3Qgb2JleSBhIHZlcnkgbmFycm93IGRlZmluaXRpb24gb2YgY29uc3RhbnRuZXNzLiBP
bmx5IGxpdGVyYWxzIGFuZCByZWZlcmVuY2VzIHRvIG90aGVyIGNvbnN0YW50IHBhcmFtZXRlcnMg
cXVhbGlmeS4KKworV1NMIGlzIGd1YXJhbnRlZWQgdG8gY29tcGlsZSBnZW5lcmljcyBieSBpbnN0
YW50aWF0aW9uLiBUaGlzIGlzIG9ic2VydmFibGUsIHNpbmNlIGZ1bmN0aW9ucyBjYW4gcmV0dXJu
IHBvaW50ZXJzIHRvIHRoZWlyIGxvY2Fscy4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHRoaXMgcGhl
bm9tZW5vbjoKKworICAgIHRocmVhZCBpbnReIGFsbG9jYXRlPHVpbnQ+KCkKKyAgICB7CisgICAg
ICAgIGludCB4OworICAgICAgICByZXR1cm4gJng7CisgICAgfQorCitUaGUgYGFsbG9jYXRlYCBm
dW5jdGlvbiB3aWxsIHJldHVybiBhIGRpZmZlcmVudCBwb2ludGVyIGZvciBlYWNoIHVuc2lnbmVk
IGludGVnZXIgY29uc3RhbnQgcGFzc2VkIGFzIGEgdHlwZSBwYXJhbWV0ZXIuIFRoaXMgYWxsb2Nh
dGlvbiBpcyBjb21wbGV0ZWx5IHN0YXRpYywgc2luY2UgdGhlIGB1aW50YCBwYXJhbWV0ZXIgbXVz
dCBiZSBnaXZlbiBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KKworIyMgUHJvdG9jb2xzCisKK1By
b3RvY29scyBlbmFibGUgZ2VuZXJpYyBmdW5jdGlvbnMgdG8gd29yayB3aXRoIGRhdGEgb2YgZ2Vu
ZXJpYyB0eXBlLiBCZWNhdXNlIGEgZnVuY3Rpb24gbXVzdCBiZSB0eXBlLWNoZWNrYWJsZSBiZWZv
cmUgaW5zdGFudGlhdGlvbiwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3QgYmUgbGVnYWw6CisKKyAg
ICBpbnQgYmFyKGludCkgeyAuLi4gfQorICAgIGRvdWJsZSBiYXIoZG91YmxlKSB7IC4uLiB9Cisg
ICAgCisgICAgVCBmb288VD4oVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBiYXIodmFs
dWUpOyAvLyBFcnJvciEKKyAgICB9CisKK1RoZSBjYWxsIHRvIGBiYXJgIGRvZXNuJ3QgdHlwZSBj
aGVjayBiZWNhdXNlIHRoZSBjb21waWxlciBjYW5ub3Qga25vdyB0aGF0IGBmb288VD5gIHdpbGwg
YmUgaW5zdGFudGlhdGVkIHdpdGggYFQgPSBpbnRgIG9yIGBUID0gZG91YmxlYC4gUHJvdG9jb2xz
IGVuYWJsZSB0aGUgcHJvZ3JhbW1lciB0byB0ZWxsIHRoZSBjb21waWxlciB3aGF0IHRvIGV4cGVj
dCBvZiBhIHR5cGUgdmFyaWFibGU6CisKKyAgICBpbnQgYmFyKGludCkgeyAuLi4gfQorICAgIGRv
dWJsZSBiYXIoZG91YmxlKSB7IC4uLiB9CisgICAgCisgICAgcHJvdG9jb2wgU3VwcG9ydHNCYXIg
eworICAgICAgICBTdXBwb3J0c0JhciBiYXIoU3VwcG9ydHNCYXIpOworICAgIH0KKyAgICAKKyAg
ICBUIGZvbzxUOlN1cHBvcnRzQmFyPihUIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJh
cih2YWx1ZSk7CisgICAgfQorICAgIAorICAgIGludCB4ID0gZm9vKDQyKTsKKyAgICBkb3VibGUg
eSA9IGZvbyg0LjIpOworCitQcm90b2NvbHMgaGF2ZSBhdXRvbWF0aWMgcmVsYXRpb25zaGlwcyB0
byBvbmUgYW5vdGhlciBiYXNlZCBvbiB3aGF0IGZ1bmN0aW9ucyB0aGV5IGNvbnRhaW46CisKKyAg
ICBwcm90b2NvbCBGb28geworICAgICAgICB2b2lkIGZvbyhGb28pOworICAgIH0KKyAgICBwcm90
b2NvbCBCYXIgeworICAgICAgICB2b2lkIGZvbyhCYXIpOworICAgICAgICB2b2lkIGJhcihCYXIp
OworICAgIH0KKyAgICB2b2lkIGZ1eno8VDpGb28+KFQgeCkgeyAuLi4gfQorICAgIHZvaWQgYnV6
ejxUOkJhcj4oVCB4KQorICAgIHsKKyAgICAgICAgZnV6eih4KTsgLy8gT0ssIGJlY2F1c2UgQmFy
IGlzIG1vcmUgc3BlY2lmaWMgdGhhbiBGb28uICAgIAorICAgIH0KKworUHJvdG9jb2xzIGNhbiBh
bHNvIG1peCBvdGhlciBwcm90b2NvbHMgaW4gZXhwbGljaXRseToKKworICAgIHByb3RvY29sIEZv
byB7CisgICAgICAgIHZvaWQgZm9vKEZvbyk7CisgICAgfQorICAgIHByb3RvY29sIEJhciA6IEZv
byB7CisgICAgICAgIHZvaWQgYmFyKEJhcik7CisgICAgfQorICAgIHZvaWQgZnV6ejxUOkZvbz4o
VCB4KSB7IC4uLiB9CisgICAgdm9pZCBidXp6PFQ6QmFyPihUIHgpCisgICAgeworICAgICAgICBm
dXp6KHgpOyAvLyBPSywgYmVjYXVzZSBCYXIgaXMgbW9yZSBzcGVjaWZpYyB0aGFuIEZvby4gICAg
CisgICAgfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321073</attachid>
            <date>2017-09-17 21:05:27 -0700</date>
            <delta_ts>2017-09-17 22:04:06 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16029</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMjEzOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE3LTA5LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RhcnQgd29ya2luZyBvbiBXU0wgZG9jdW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MDY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgd29y
ayBpbiBwcm9ncmVzcy4gSSdkIGxpa2UgdG8gY2hlY2sgaXQgaW4gYW5kIHRoZW4ga2VlcCBhZGRp
bmcgdG8gaXQuCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU0wubWQ6IEFk
ZGVkLgorCiAyMDE3LTA5LTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgV1NMIG5lZWRzIGZsb2F0IGFuZCBkb3VibGUgc3VwcG9ydApJbmRleDog
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV1NMLm1kCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dTTC5tZAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU0wubWQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MDUgQEAKKyMgV2ViR1BVIFNoYWRpbmcgTGFuZ3VhZ2UKKworV2ViR1BVIFNoYWRpbmcgTGFuZ3Vh
Z2UsIG9yIFdTTCBmb3Igc2hvcnQsIGlzIGEgdHlwZS1zYWZlIGxvdy1vdmVyaGVhZCBwcm9ncmFt
bWluZyBsYW5ndWFnZSBmb3IgR1BVcyAoZ3JhcGhpY3MgcHJvY2Vzc2luZyB1bml0cykuIFRoaXMg
ZG9jdW1lbnQgZXhwbGFpbnMgaG93IFdTTCB3b3Jrcy4KKworIyBHb2FscworCitXU0wgaXMgZGVz
aWduZWQgdG8gYWNoaWV2ZSB0aGUgZm9sbG93aW5nIGdvYWxzOgorCistIFdTTCBzaG91bGQgZmVl
bCAqZmFtaWxpYXIqIHRvIEMrKyBwcm9ncmFtbWVycy4KKy0gV1NMIHNob3VsZCBiZSBoYXZlIGEg
KnNvdW5kKiBhbmQgKmRlY2lkYWJsZSogdHlwZSBzeXN0ZW0uCistIFdTTCBzaG91bGQgbm90IHBl
cm1pdCAqb3V0LW9mLWJvdW5kcyogbWVtb3J5IGFjY2Vzc2VzLgorLSBXU0wgc2hvdWxkIGJlIGhh
dmUgKmxvdyBvdmVyaGVhZCouCisKK1RoZSBjb21iaW5hdGlvbiBvZiBhIHNvdW5kIHR5cGUgc3lz
dGVtIGFuZCBib3VuZHMgY2hlY2tpbmcgbWFrZXMgV1NMIGEgc2VjdXJlIHNoYWRlciBsYW5ndWFn
ZTogdGhlIGxhbmd1YWdlIGl0c2VsZiBpcyByZXNwb25zaWJsZSBmb3IgaXNvbGF0aW5nIHRoZSBz
aGFkZXIgZnJvbSB0aGUgcmVzdCBvZiB0aGUgR1BVLgorCisjIEZhbWlsaWFyIFN5bnRheAorCitX
U0wgaXMgYmFzZWQgb24gQyBzeW50YXgsIGJ1dCBleGNsdWRlcyBmZWF0dXJlcyB0aGF0IGFyZSBl
aXRoZXIgdW5uZWNlc3NhcnksIGluc2VjdXJlLCBvciByZXBsYWNlZCBieSBvdGhlciBXU0wgZmVh
dHVyZXM6CisKKy0gTm8gc3RyaW5ncy4KKy0gTm8gYHJlZ2lzdGVyYCwgYHZvbGF0aWxlYCwgYGNv
bnN0YCwgYHJlc3RyaWN0YCwgb3IgYGV4dGVybmAga2V5d29yZHMuCistIE5vIHVuaW9ucy4gYHVu
aW9uYCBpcyBub3QgYSBrZXl3b3JkLgorLSBObyBnb3RvIG9yIGxhYmVscy4gYGdvdG9gIGlzIG5v
dCBhIGtleXdvcmQuCistIE5vIGAqYCBwb2ludGVycy4KKy0gRWZmZWN0bGVzcyBleHByZXNzaW9u
cyBhcmUgbm90IHN0YXRlbWVudHMgKGBhICsgYjtgIGlzIGEgcGFyc2UgZXJyb3IpLgorLSBObyB1
bmRlZmluZWQgdmFsdWVzIChgaW50IHg7YCBpbml0aWFsaXplcyB4IHRvIDApLgorLSBObyBhdXRv
bWF0aWMgdHlwZSBjb252ZXJzaW9ucyAoYGludCB4OyB1aW50IHkgPSB4O2AgaXMgYSB0eXBlIGVy
cm9yKS4KKy0gTm8gcmVjdXJzaW9uLgorLSBObyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uLgor
LSBObyBtb2R1bGFyaXR5LiBUaGUgd2hvbGUgcHJvZ3JhbSBpcyBvbmUgZmlsZS4KKworT24gdG9w
IG9mIHRoaXMgYmFyZSBDLWxpa2UgZm91bmRhdGlvbiwgV1NMIGFkZHMgc2VjdXJlIHZlcnNpb25z
IG9mIGZhbWlsaWFyIEMrKyBmZWF0dXJlczoKKworLSBUeXBlLXNhZmUgcG9pbnRlcnMgKGBeYCkg
YW5kIGFycmF5IHJlZmVyZW5jZXMgKGBbXWApLgorLSBHZW5lcmljcyB0byByZXBsYWNlIHRlbXBs
YXRlcy4KKy0gT3BlcmF0b3Igb3ZlcmxvYWRpbmcuIEJ1aWx0LWluIG9wZXJhdGlvbnMgbGlrZSBg
aW50IG9wZXJhdG9yKyhpbnQsIGludClgIGFyZSBqdXN0IG5hdGl2ZSBmdW5jdGlvbnMuCistIENh
c3Qgb3ZlcmxvYWRpbmcuIEJ1aWx0LWluIGNhc3RzIGxpa2UgYG9wZXJhdG9yIGludChkb3VibGUp
YCBhcmUganVzdCBuYXRpdmUgZnVuY3Rpb25zLgorLSBHZXR0ZXJzIGFuZCBzZXR0ZXJzLiBQcm9w
ZXJ0eSBhY2Nlc3NlcyBsaWtlIGB2ZWMueGAgcmVzb2x2ZSB0byBvdmVybG9hZHMgbGlrZSBgZmxv
YXQgb3BlcmF0b3IuZmllbGQoZmxvYXQ0KWAuCistIEFycmF5IGFjY2VzcyBvdmVybG9hZGluZy4g
QXJyYXkgYWNjZXNzZXMgbGlrZSBgdmVjWzBdYCByZXNvbHZlIHRvIHZlcmxvYWRzIGxpa2UgYGZs
b2F0IG9wZXJhdG9yW10oZmxvYXQ0LCB1aW50KWAuCisKK0luIHRoZSBmb2xsb3dpbmcgc2VjdGlv
bnMsIFdTTCBpcyBzaG93biBieSBleGFtcGxlIHN0YXJ0aW5nIHdpdGggaXRzIEMtbGlrZSBmb3Vu
ZGF0aW9uIGFuZCB0aGVuIGJ1aWxkaW5nIHVwIHRvIGluY2x1ZGUgbW9yZSBzb3BoaXN0aWNhdGVk
IGZlYXR1cmVzIGxpa2UgZ2VuZXJpY3MuCisKKyMjIENvbW1vbiBzdWJzZXQgb2YgQyBhbmQgV1NM
CisKK1RoZSBmb2xsb3dpbmcgaXMgYSB2YWxpZCBXU0wgZnVuY3Rpb24gZGVmaW5pdGlvbjoKKwor
ICAgIGludCBmb28oaW50IHgsIGludCB5LCBib29sIHApCisgICAgeworICAgICAgICBpZiAocCkK
KyAgICAgICAgICAgIHJldHVybiB4IC0geTsKKyAgICAgICAgcmV0dXJuIHggKyB5OworICAgIH0K
KworV1NMIHNvdXJjZSBmaWxlcyBiZWhhdmUgc2ltaWxhcmx5IHRvIEMgc291cmNlIGZpbGVzOgor
CistIFRvcC1sZXZlbCBzdGF0ZW1lbnRzIG11c3QgYmUgdHlwZSBvciBmdW5jdGlvbiBkZWZpbml0
aW9ucy4KKy0gV1NMIHVzZXMgc3RydWN0dXJlZCBDIGNvbnRyb2wgZmxvdyBjb25zdHJ1Y3RzLCBs
aWtlIGBpZmAsIGB3aGlsZWAsIGBmb3JgLCBgZG9gLCBgYnJlYWtgLCBhbmQgYGNvbnRpbnVlYC4K
Ky0gV1NMIHVzZXMgQy1saWtlIGBzd2l0Y2hgIHN0YXRlbWVudHMsIGJ1dCBkb2VzIG5vdCBhbGxv
dyB0aGVtIHRvIG92ZXJsYXAgb3RoZXIgY29udHJvbCBmbG93IChpLmUuIG5vIFtEdWZmJ3MgZGV2
aWNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EdWZmJTI3c19kZXZpY2UpKS4KKy0g
V1NMIGFsbG93cyB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYW55d2hlcmUgQysrIHdvdWxkLgorCitX
U0wgdHlwZXMgZGlmZmVyIGZyb20gQyB0eXBlcy4gRm9yIGV4YW1wbGUsIHRoaXMgaXMgYW4gYXJy
YXkgb2YgNDIgaW50ZWdlcnMgaW4gV1NMOgorCisgICAgaW50WzQyXSBhcnJheTsKKworVGhlIHR5
cGUgbmV2ZXIgc3Vycm91bmRzIHRoZSB2YXJpYWJsZSwgbGlrZSBpdCB3b3VsZCBpbiBDIChgaW50
IGFycmF5WzQyXWApLgorCisjIyBUeXBlLXNhZmUgcG9pbnRlcnMKKworV1NMIGluY2x1ZGVzIGEg
c2VjdXJlIHBvaW50ZXIgdHlwZS4gVG8gZW1waGFzaXplIHRoYXQgaXQgaXMgbm90IGxpa2UgdGhl
IEMgcG9pbnRlciwgV1NMIHVzZXMgYF5gIGZvciB0aGUgcG9pbnRlciB0eXBlIGFuZCBmb3IgZGVy
ZWZlcmVuY2UuIExpa2UgaW4gQywgYCZgIGlzIHVzZWQgdG8gdGFrZSB0aGUgYWRkcmVzcyBvZiBh
IHZhbHVlLiAgQmVjYXVzZSBHUFVzIGhhdmUgZGlmZmVyZW50IGtpbmRzIG9mIG1lbW9yaWVzLCBw
b2ludGVycyBtdXN0IGJlIGFubm90YXRlZCB3aXRoIGFuIGFkZHJlc3Mgc3BhY2UgKG9uZSBvZiBg
dGhyZWFkYCwgYHRocmVhZGdyb3VwYCwgYGRldmljZWAsIG9yIGBjb25zdGFudGApLiBGb3IgZXhh
bXBsZToKKworICAgIHZvaWQgYmFyKHRocmVhZCBpbnReIHApCisgICAgeworICAgICAgICBecCAr
PSA0MjsKKyAgICB9CisgICAgaW50IGZvbygpCisgICAgeworICAgICAgICBpbnQgeCA9IDI0Owor
ICAgICAgICBiYXIoJngpOworICAgICAgICByZXR1cm4geDsgLy8gUmV0dXJucyA2Ni4KKyAgICB9
CisKK1BvaW50ZXJzIGNhbiBiZSBgbnVsbGAuIEVhY2ggcG9pbnRlciBhY2Nlc3MgaXMgbnVsbC1j
aGVja2VkLCB0aG91Z2ggbW9zdCBwb2ludGVyIGFjY2Vzc2VzIChsaWtlIHRoaXMgb25lKSB3aWxs
IG5vdCBoYXZlIGEgbnVsbCBjaGVjay4gV1NMIHBsYWNlcyBlbm91Z2ggY29uc3RyYWludHMgb24g
dGhlIHByb2dyYW1tZXIgdGhhdCBwcm9ncmFtcyBhcmUgZWFzeSBmb3IgdGhlIGNvbXBpbGVyIHRv
IGFuYWx5emUuIFRoZSBjb21waWxlciB3aWxsIGFsd2F5cyBrbm93IHRoYXQgYF5wICs9IDQyYCBh
ZGRzIGA0MmAgdG8gYHhgIGluIHRoaXMgY2FzZS4KKworV1NMIHBvaW50ZXJzIGRvIG5vdCBzdXBw
b3J0IGNhc3Rpbmcgb3IgcG9pbnRlciBhcml0aG1ldGljLiBBbGwgbWVtb3J5IGFjY2Vzc2libGUg
dG8gYSBzaGFkZXIgb3V0bGl2ZXMgdGhlIHNoYWRlci4gVGhpcyBpcyBldmVuIHRydWUgb2YgbG9j
YWwgdmFyaWFibGVzLiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgV1NMIGRvZXMgbm90IHN1cHBv
cnQgcmVjdXJzaW9uLiBUaGVyZWZvcmUsIGxvY2FsIHZhcmlhYmxlcyBzaW1wbHkgZ2V0IGdsb2Jh
bCBzdG9yYWdlLiBMb2NhbCB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBv
ZiB0aGVpciBkZWNsYXJhdGlvbi4gSGVuY2UsIHRoZSBmb2xsb3dpbmcgaXMgYSB2YWxpZCBwcm9n
cmFtLCB3aGljaCB3aWxsIGV4aGliaXQgdGhlIHNhbWUgYmVoYXZpb3Igb24gZXZlcnkgV1NMIGlt
cGxlbWVudGF0aW9uOgorCisgICAgdGhyZWFkIGludF4gZm9vKCkKKyAgICB7CisgICAgICAgIGlu
dCB4ID0gNDI7CisgICAgICAgIHJldHVybiAmeDsKKyAgICB9CisgICAgaW50IGJhcigpCisgICAg
eworICAgICAgICB0aHJlYWQgaW50XiBwID0gZm9vKCk7CisgICAgICAgIHRocmVhZCBpbnReIHEg
PSBmb28oKTsKKyAgICAgICAgXnAgPSA1MzsKKyAgICAgICAgcmV0dXJuIF5xOyAvLyBSZXR1cm5z
IDUzLgorICAgIH0KKyAgICBpbnQgYmF6KCkKKyAgICB7CisgICAgICAgIHRocmVhZCBpbnReIHAg
PSBmb28oKTsKKyAgICAgICAgXnAgPSA1MzsKKyAgICAgICAgZm9vKCk7CisgICAgICAgIHJldHVy
biBecDsgLy8gUmV0dXJucyA0Mi4KKyAgICB9CisKK0l0J3MgcG9zc2libGUgdG8gcG9pbnQgdG8g
YW55IGtpbmQgb2YgZGF0YSB0eXBlLiBGb3IgZXhhbXBsZSwgYHRocmVhZCBkb3VibGVbNDJdXmAg
aXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIDQyIGRvdWJsZXMuCisKKyMjIFR5cGUtc2FmZSBh
cnJheSByZWZlcmVuY2VzCisKK1dTTCBzdXBwb3J0cyBhcnJheSByZWZlcmVuY2VzIHRoYXQgY2Fy
cnkgYSBwb2ludGVyIHRvIHRoZSBiYXNlIG9mIHRoZSBhcnJheSBhbmQgdGhlIGFycmF5J3MgbGVu
Z3RoLiBUaGlzIGFsbG93cyBhY2Nlc3NlcyB0byB0aGUgYXJyYXkgdG8gYmUgYm91bmRzLWNoZWNr
ZWQuCisKK0FuIGFycmF5IHJlZmVyZW5jZSBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgYEBgIG9w
ZXJhdG9yOgorCisgICAgaW50WzQyXSBhcnJheTsKKyAgICB0aHJlYWQgaW50W10gYXJyYXlSZWYg
PSBAYXJyYXk7CisKK0JvdGggYXJyYXlzIGFuZCBhcnJheSByZWZlcmVuY2VzIGNhbiBiZSBsb2Fk
ZWQgZnJvbSBhbmQgc3RvcmVkIHRvIHVzaW5nIGBvcGVyYXRvcltdYDoKKworICAgIGludCB4ID0g
YXJyYXlbaV07CisgICAgaW50IHkgPSBhcnJheVJlZltpXTsKKworQm90aCBhcnJheXMgYW5kIGFy
cmF5IHJlZmVyZW5jZXMga25vdyB0aGVpciBsZW5ndGg6CisKKyAgICB1aW50IGFycmF5TGVuZ3Ro
ID0gYXJyYXkubGVuZ3RoOworICAgIHVpbnQgYXJyYXlSZWZMZW5ndGggPSBhcnJheVJlZi5sZW5n
dGg7CisKK0dpdmVuIGFuIGFycmF5IG9yIGFycmF5IHJlZmVyZW5jZSwgaXQncyBwb3NzaWJsZSB0
byBnZXQgYSBwb2ludGVyIHRvIG9uZSBvZiBpdHMgZWxlbWVudHM6CisKKyAgICB0aHJlYWQgaW50
XiBwdHIxID0gJmFycmF5W2ldOworICAgIHRocmVhZCBpbnReIHB0cjIgPSAmYXJyYXlSZWZbaV07
CisKK0EgcG9pbnRlciBpcyBsaWtlIGFuIGFycmF5IHJlZmVyZW5jZSB3aXRoIG9uZSBlbGVtZW50
LiBJdCdzIHBvc3NpYmxlIHRvIHBlcmZvcm0gdGhpcyBjb252ZXJzaW9uOgorCisgICAgdGhyZWFk
IGludFtdIHJlZiA9IEBwdHIxOworICAgIHJlZlswXSAvLyBFcXVpdmFsZW50IHRvIF5wdHIxLgor
ICAgIHJlZi5sZW5ndGggLy8gMCBpZiBwdHIxIHdhcyBudWxsLCAxIGlmIHB0cjEgd2FzIG5vdCBu
dWxsLgorCitTaW1pbGFybHksIHVzaW5nIGBAYCBvbiBhIG5vbi1wb2ludGVyIHZhbHVlIHJlc3Vs
dHMgaW4gYSByZWZlcmVuY2Ugb2YgbGVuZ3RoIDE6CisKKyAgICBpbnQgeDsKKyAgICB0aHJlYWQg
aW50W10gcmVmID0gQHg7CisgICAgcmVmWzBdIC8vIEFsaWFzZXMgeC4KKyAgICByZWYubGVuZ3Ro
IC8vIFJldHVybnMgMS4KKworSXQncyBub3QgbGVnYWwgdG8gdXNlIGBAYCBvbiBhbiBhcnJheSBy
ZWZlcmVuY2U6CisKKyAgICB0aHJlYWQgaW50W10gcmVmOworICAgIHRocmVhZCBpbnRbXVtdIHJl
ZmVyZWYgPSBAcmVmOyAvLyBFcnJvciEKKworIyMgR2VuZXJpY3MKKworV1NMIHN1cHBvcnRzIGdl
bmVyaWMgdHlwZXMgdXNpbmcgYSBzaW1wbGUgc3ludGF4LiBXU0wncyBnZW5lcmljIGFyZSBkZXNp
Z25lZCB0byBpbnRlZ3JhdGUgY2xlYW5seSBpbnRvIHRoZSBjb21waWxlciBwaXBlbGluZToKKwor
LSBHZW5lcmljcyBoYXZlIHVuYW1iaWd1b3VzIHN5bnRheC4KKy0gR2VuZXJpYyBmdW5jdGlvbnMg
Y2FuIGJlIHR5cGUgY2hlY2tlZCBiZWZvcmUgdGhleSBhcmUgaW5zdGFudGlhdGVkLgorCitTZW1h
bnRpYyBlcnJvcnMgaW5zaWRlIGdlbmVyaWMgZnVuY3Rpb25zIHNob3cgdXAgb25jZSByZWdhcmRs
ZXNzIG9mIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGdlbmVyaWMgZnVuY3Rpb24gaXMgaW5zdGFu
dGlhdGVkLgorCitUaGlzIGlzIGEgc2ltcGxlIGdlbmVyaWMgZnVuY3Rpb246CisKKyAgICBUIGlk
ZW50aXR5PFQ+KFQgdmFsdWUpCisgICAgeworICAgICAgICBUIHRtcCA9IHZhbHVlOworICAgICAg
ICByZXR1cm4gdG1wOworICAgIH0KKworV1NMIGFsc28gc3VwcG9ydHMgc3RydWN0cywgd2hpY2gg
YXJlIGFsc28gYWxsb3dlZCB0byBiZSBnZW5lcmljOgorCisgICAgLy8gTm90IGdlbmVyaWMuCisg
ICAgc3RydWN0IEZvbyB7CisgICAgICAgIGludCB4OworICAgICAgICBkb3VibGUgeTsKKyAgICB9
CisgICAgLy8gR2VuZXJpYy4KKyAgICBzdHJ1Y3QgQmFyPFQsIFU+IHsKKyAgICAgICAgVCB4Owor
ICAgICAgICBVIHk7CisgICAgfQorCitUeXBlIHBhcmFtZXRlcnMgY2FuIGFsc28gYmUgY29uc3Rh
bnQgZXhwcmVzc2lvbnMuIEZvciBleGFtcGxlOgorCisgICAgdm9pZCBpbml0aWFsaXplQXJyYXk8
VCwgdWludCBsZW5ndGg+KHRocmVhZCBUW2xlbmd0aF1eIGFycmF5LCBUIHZhbHVlKQorICAgIHsK
KyAgICAgICAgZm9yICh1aW50IGkgPSBsZW5ndGg7IGktLTspCisgICAgICAgICAgICAoXmFycmF5
KVtpXSA9IHZhbHVlOworICAgIH0KKworQ29uc3RhbnQgZXhwcmVzc2lvbnMgcGFzc2VkIGFzIHR5
cGUgYXJndW1lbnRzIG11c3Qgb2JleSBhIHZlcnkgbmFycm93IGRlZmluaXRpb24gb2YgY29uc3Rh
bnRuZXNzLiBPbmx5IGxpdGVyYWxzIGFuZCByZWZlcmVuY2VzIHRvIG90aGVyIGNvbnN0YW50IHBh
cmFtZXRlcnMgcXVhbGlmeS4KKworV1NMIGlzIGd1YXJhbnRlZWQgdG8gY29tcGlsZSBnZW5lcmlj
cyBieSBpbnN0YW50aWF0aW9uLiBUaGlzIGlzIG9ic2VydmFibGUsIHNpbmNlIGZ1bmN0aW9ucyBj
YW4gcmV0dXJuIHBvaW50ZXJzIHRvIHRoZWlyIGxvY2Fscy4gSGVyZSBpcyBhbiBleGFtcGxlIG9m
IHRoaXMgcGhlbm9tZW5vbjoKKworICAgIHRocmVhZCBpbnReIGFsbG9jYXRlPHVpbnQ+KCkKKyAg
ICB7CisgICAgICAgIGludCB4OworICAgICAgICByZXR1cm4gJng7CisgICAgfQorCitUaGUgYGFs
bG9jYXRlYCBmdW5jdGlvbiB3aWxsIHJldHVybiBhIGRpZmZlcmVudCBwb2ludGVyIGZvciBlYWNo
IHVuc2lnbmVkIGludGVnZXIgY29uc3RhbnQgcGFzc2VkIGFzIGEgdHlwZSBwYXJhbWV0ZXIuIFRo
aXMgYWxsb2NhdGlvbiBpcyBjb21wbGV0ZWx5IHN0YXRpYywgc2luY2UgdGhlIGB1aW50YCBwYXJh
bWV0ZXIgbXVzdCBiZSBnaXZlbiBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KKworV1NMJ3MgYHR5
cGVkZWZgIHVzZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgc3ludGF4IHRoYW4gQy4gRm9yIGV4YW1w
bGU6CisKKyAgICBzdHJ1Y3QgQ29tcGxleDxUPiB7CisgICAgICAgIFQgcmVhbDsKKyAgICAgICAg
VCBpbWFnOworICAgIH0KKyAgICB0eXBlZGVmIEZDb21wbGV4ID0gQ29tcGxleDxmbG9hdD47CisK
K2B0eXBlZGVmYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgZ2VuZXJpYyB0eXBlczoKKworICAgIHN0
cnVjdCBGb288VCwgVT4geworICAgICAgICBUIHg7CisgICAgICAgIFUgeTsKKyAgICB9CisgICAg
dHlwZWRlZiBCYXI8VD4gPSBGb288VCwgVD47CisKKyMjIFByb3RvY29scworCitQcm90b2NvbHMg
ZW5hYmxlIGdlbmVyaWMgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aCBkYXRhIG9mIGdlbmVyaWMgdHlw
ZS4gQmVjYXVzZSBhIGZ1bmN0aW9uIG11c3QgYmUgdHlwZS1jaGVja2FibGUgYmVmb3JlIGluc3Rh
bnRpYXRpb24sIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IGJlIGxlZ2FsOgorCisgICAgaW50IGJh
cihpbnQpIHsgLi4uIH0KKyAgICBkb3VibGUgYmFyKGRvdWJsZSkgeyAuLi4gfQorICAgIAorICAg
IFQgZm9vPFQ+KFQgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYmFyKHZhbHVlKTsgLy8g
RXJyb3IhCisgICAgfQorCitUaGUgY2FsbCB0byBgYmFyYCBkb2Vzbid0IHR5cGUgY2hlY2sgYmVj
YXVzZSB0aGUgY29tcGlsZXIgY2Fubm90IGtub3cgdGhhdCBgZm9vPFQ+YCB3aWxsIGJlIGluc3Rh
bnRpYXRlZCB3aXRoIGBUID0gaW50YCBvciBgVCA9IGRvdWJsZWAuIFByb3RvY29scyBlbmFibGUg
dGhlIHByb2dyYW1tZXIgdG8gdGVsbCB0aGUgY29tcGlsZXIgd2hhdCB0byBleHBlY3Qgb2YgYSB0
eXBlIHZhcmlhYmxlOgorCisgICAgaW50IGJhcihpbnQpIHsgLi4uIH0KKyAgICBkb3VibGUgYmFy
KGRvdWJsZSkgeyAuLi4gfQorICAgIAorICAgIHByb3RvY29sIFN1cHBvcnRzQmFyIHsKKyAgICAg
ICAgU3VwcG9ydHNCYXIgYmFyKFN1cHBvcnRzQmFyKTsKKyAgICB9CisgICAgCisgICAgVCBmb288
VDpTdXBwb3J0c0Jhcj4oVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBiYXIodmFsdWUp
OworICAgIH0KKyAgICAKKyAgICBpbnQgeCA9IGZvbyg0Mik7CisgICAgZG91YmxlIHkgPSBmb28o
NC4yKTsKKworUHJvdG9jb2xzIGhhdmUgYXV0b21hdGljIHJlbGF0aW9uc2hpcHMgdG8gb25lIGFu
b3RoZXIgYmFzZWQgb24gd2hhdCBmdW5jdGlvbnMgdGhleSBjb250YWluOgorCisgICAgcHJvdG9j
b2wgRm9vIHsKKyAgICAgICAgdm9pZCBmb28oRm9vKTsKKyAgICB9CisgICAgcHJvdG9jb2wgQmFy
IHsKKyAgICAgICAgdm9pZCBmb28oQmFyKTsKKyAgICAgICAgdm9pZCBiYXIoQmFyKTsKKyAgICB9
CisgICAgdm9pZCBmdXp6PFQ6Rm9vPihUIHgpIHsgLi4uIH0KKyAgICB2b2lkIGJ1eno8VDpCYXI+
KFQgeCkKKyAgICB7CisgICAgICAgIGZ1enooeCk7IC8vIE9LLCBiZWNhdXNlIEJhciBpcyBtb3Jl
IHNwZWNpZmljIHRoYW4gRm9vLiAgICAKKyAgICB9CisKK1Byb3RvY29scyBjYW4gYWxzbyBtaXgg
b3RoZXIgcHJvdG9jb2xzIGluIGV4cGxpY2l0bHkuIExpa2UgaW4gdGhlIGV4YW1wbGUgYWJvdmUs
IHRoZSBleGFtcGxlIGJlbG93IHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IGBCYXJgIGlzIGEgbW9y
ZSBzcGVjaWZpYyBwcm90b2NvbCB0aGFuIGBGb29gLiBIb3dldmVyLCB0aGlzIGV4YW1wbGUgZGVj
bGFyZXMgdGhpcyBleHBsaWNpdGx5IChgcHJvdG9jb2wgQmFyIDogRm9vYCkgaW5zdGVhZCBvZiBy
ZWx5aW5nIG9uIHRoZSBsYW5ndWFnZSB0byBpbmZlciBpdDoKKworICAgIHByb3RvY29sIEZvbyB7
CisgICAgICAgIHZvaWQgZm9vKEZvbyk7CisgICAgfQorICAgIHByb3RvY29sIEJhciA6IEZvbyB7
CisgICAgICAgIHZvaWQgYmFyKEJhcik7CisgICAgfQorICAgIHZvaWQgZnV6ejxUOkZvbz4oVCB4
KSB7IC4uLiB9CisgICAgdm9pZCBidXp6PFQ6QmFyPihUIHgpCisgICAgeworICAgICAgICBmdXp6
KHgpOyAvLyBPSywgYmVjYXVzZSBCYXIgaXMgbW9yZSBzcGVjaWZpYyB0aGFuIEZvby4gICAgCisg
ICAgfQorCisjIyBPdmVybG9hZGluZworCitXU0wgc3VwcG9ydHMgb3ZlcmxvYWRpbmcgdmVyeSBz
aW1pbGFybHkgdG8gaG93IEMrKyBkb2VzIGl0LiBGb3IgZXhhbXBsZToKKworICAgIHZvaWQgZm9v
KGludCk7ICAgIC8vIDEKKyAgICB2b2lkIGZvbyhkb3VibGUpOyAvLyAyCisgICAgCisgICAgaW50
IHg7CisgICAgZm9vKHgpOyAvLyBjYWxscyAxCisgICAgCisgICAgaW50IHk7CisgICAgZm9vKHkp
OyAvLyBjYWxscyAyCisKK1dTTCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgdGhlIG1vc3Qgc3BlY2lm
aWMgb3ZlcmxvYWQgaWYgZ2l2ZW4gbXVsdGlwbGUgY2hvaWNlcy4gRm9yIGV4YW1wbGU6CisKKyAg
ICB2b2lkIGZvbyhpbnQpOyAgICAvLyAxCisgICAgdm9pZCBmb28oZG91YmxlKTsgLy8gMgorICAg
IHZvaWQgZm9vPFQ+KFQpOyAgIC8vIDMKKworICAgIGZvbygxKTsgLy8gY2FsbHMgMQorICAgIGZv
bygxLik7IC8vIGNhbGxzIDIKKyAgICBmb28oMXUpOyAvLyBjYWxscyAzCisKK0dlbmVyaWMgZnVu
Y3Rpb25zIGxpa2UgYGZvbzxUPmAgY2FuIGJlIGNhbGxlZCB3aXRoIG9yIHdpdGhvdXQgYWxsIG9m
IHRoZWlyIHR5cGUgYXJndW1lbnRzIHN1cHBsaWVkLiBJZiB0aGV5IGFyZSBub3Qgc3VwcGxpZWQs
IHRoZSBmdW5jdGlvbiBwYXJ0aWNpcGF0ZXMgaW4gb3ZlcmxvYWQgcmVzb2x1dGlvbiBsaWtlIGFu
eSBvdGhlciBmdW5jdGlvbiB3b3VsZC4gRnVuY3Rpb25zIGFyZSByYW5rZWQgYnkgaG93IHNwZWNp
ZmljIHRoZXkgYXJlOyBmdW5jdGlvbiBBIGlzIG1vcmUgc3BlY2lmaWMgdGhhbiBmdW5jdGlvbiBC
IGlmIEEncyBwYXJhbWV0ZXIgdHlwZXMgY2FuIGJlIHVzZWQgYXMgYXJndW1lbnQgdHlwZXMgZm9y
IGEgY2FsbCB0byBCIGJ1dCBub3QgdmljZS12ZXJzYS4gSWYgb25lIGZ1bmN0aW9ucyBtb3JlIHNw
ZWNpZmljIHRoYW4gYWxsIG90aGVycyB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgc2VsZWN0ZWQsIG90
aGVyd2lzZSBhIHR5cGUgZXJyb3IgaXMgaXNzdWVkLgorCisjIyBPcGVyYXRvciBPdmVybG9hZGlu
ZworCitNYW55IFdTTCBvcGVyYXRpb25zIGRlc3VnYXIgdG8gY2FsbHMgdG8gZnVuY3Rpb25zLiBU
aG9zZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCAqb3BlcmF0b3Igb3ZlcmxvYWRzKiBhbmQgYXJlIGRl
Y2xhcmVkIHVzaW5nIHN5bnRheCB0aGF0IGludm9sdmVzIHRoZSBrZXl3b3JkIGBvcGVyYXRvcmAu
IFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyByZXN1bHQgaW4gY2FsbHMgdG8gb3BlcmF0b3Igb3Zl
cmxvYWRzOgorCistIE51bWVyaWNhbCBvcGVyYXRvcnMgKGArYCwgYC1gLCBgKmAsIGAvYCwgZXRj
LikuCistIEluY3JlbWVudCBhbmQgZGVjcmVtZW50IChgKytgLCBgLS1gKS4KKy0gQ2FzdGluZyAo
YHR5cGUodmFsdWUpYCkuCistIEFjY2Vzc2luZyB2YWx1ZXMgaW4gYXJyYXlzIChgW11gLCBgW109
YCwgYCZbXWApLgorLSBBY2Nlc3NpbmcgZmllbGRzIChgLmZpZWxkYCwgYC5maWVsZD1gLCBgJi5m
aWVsZGApLgorCitXU0wncyBvcGVyYXRvciBvdmVybG9hZGluZyBpcyBkZXNpZ25lZCB0byBzeW50
aGVzaXplIG1hbnkgb3BlcmF0b3JzIGZvciB5b3U6CisKKy0gUmVhZC1tb2RpZnktd3JpdGUgb3Bl
cmF0b3JzIGxpa2UgYCs9YCBhcmUgZGVzdWdhcmVkIHRvIGEgbG9hZCBvZiB0aGUgbG9hZCB2YWx1
ZSwgdGhlIHVuZGVybHlpbmcgb3BlcmF0b3IgKGxpa2UgYCtgKSwgYW5kIGEgc3RvcmUgb2YgdGhl
IG5ldyB2YWx1ZS4gSXQncyBub3QgcG9zc2libGUgdG8gb3ZlcnJpZGUgYCs9YCwgYC09YCwgZXRj
LgorLSBgeCsrYCBhbmQgYCsreGAgYm90aCBjYWxsIHRoZSBzYW1lIG9wZXJhdG9yIG92ZXJsb2Fk
LiBgb3BlcmF0b3IrK2AgdGFrZXMgdGhlIG9sZCB2YWx1ZSBhbmQgcmV0dXJucyBhIG5ldyBvbmU7
IGZvciBleGFtcGxlIHRoZSBidWlsdC1pbiBgKytgIGZvciBgaW50YCBjb3VsZCBiZSB3cml0dGVu
IGFzOiBgaW50IG9wZXJhdG9yKysoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSArIDE7IH1gLgor
LSBgb3BlcmF0b3I9PWAgY2FuIGJlIG92ZXJsb2FkZWQsIGJ1dCBgIT1gIGlzIGF1dG9tYXRpY2Fs
bHkgc3ludGhlc2l6ZWQgYW5kIGNhbm5vdCBiZSBvdmVybG9hZGVkLgorCitTb21lIG9wZXJhdG9y
cyBhbmQgb3ZlcmxvYWRzIGFyZSByZXN0cmljdGVkOgorCistIGAhYCwgYCYmYCwgYW5kIGB8fGAg
YXJlIGJ1aWx0LWluIG9wZXJhdGlvbnMgb24gdGhlIGBib29sYCB0eXBlLgorLSBTZWxmLWNhc3Rz
IChgVChUKWApIGFyZSBhbHdheXMgdGhlIGlkZW50aXR5IGZ1bmN0aW9uLgorLSBDYXN0cyB3aXRo
IG5vIGFyZ3VtZW50cyAoYFQoKWApIGFsd2F5cyByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUgZm9y
IHRoYXQgdHlwZS4gRXZlcnkgdHlwZSBoYXMgYSBkZWZhdWx0IHZhbHVlIChgMGAsIGBudWxsYCwg
b3IgdGhlIGVxdWl2YWxlbnQgZm9yIGVhY2ggZmllbGQpLgorCitDYXN0IG92ZXJsb2FkaW5nIGFs
bG93cyBmb3Igc3VwcG9ydGluZyBjb252ZXJzaW9ucyBiZXR3ZWVuIHR5cGVzIGFuZCBmb3IgY3Jl
YXRpbmcgY29uc3RydWN0b3JzIGZvciBjdXN0b20gdHlwZXMuIEhlcmUgaXMgYW4gZXhhbXBsZSBv
ZiBjYXN0IG92ZXJsb2FkaW5nIGJlaW5nIHVzZWQgdG8gY3JlYXRlIGEgY29uc3RydWN0b3I6CisK
KyAgICBzdHJ1Y3QgQ29tcGxleDxUPiB7CisgICAgICAgIFQgcmVhbDsKKyAgICAgICAgVCBpbWFn
OworICAgIH0KKyAgICBvcGVyYXRvcjxUPiBDb21wbGV4PFQ+KFQgcmVhbCwgVCBpbWFnKQorICAg
IHsKKyAgICAgICAgQ29tcGxleDxUPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5yZWFsID0gcmVh
bDsKKyAgICAgICAgcmVzdWx0LmltYWcgPSBpbWFnOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKKyAgICBDb21wbGV4PGZsb2F0PiBpID0gQ29tcGxleDxmbG9hdD4oMCwgMSk7
CisKK1dTTCBzdXBwb3J0cyBhY2Nlc3NvciBvdmVybG9hZGluZyBhcyBwYXJ0IG9mIHRoZSBvcGVy
YXRvciBvdmVybG9hZGluZyBzeW50YXguIFRoaXMgZ2l2ZXMgdGhlIHByb2dyYW1tZXIgYnJvYWQg
cG93ZXJzLiBGb3IgZXhhbXBsZToKKworICAgIHN0cnVjdCBGb28geworICAgICAgICBpbnQgeDsK
KyAgICAgICAgaW50IHk7CisgICAgfQorICAgIGludCBvcGVyYXRvci5zdW0oRm9vIGZvbykKKyAg
ICB7CisgICAgICAgIHJldHVybiBmb28ueCArIGZvby55OworICAgIH0KKworSXQncyBwb3NzaWJs
ZSB0byBzYXkgYGZvby5zdW1gIHRvIGNhbGwgdGhlIGBvcGVyYXRvci5zdW1gIGZ1bmN0aW9uLiBC
b3RoIGdldHRlcnMgYW5kIHNldHRlcnMgY2FuIGJlIHByb3ZpZGVkOgorCisgICAgc3RydWN0IEZv
byB7CisgICAgICAgIGludCB2YWx1ZTsKKyAgICB9CisgICAgZG91YmxlIG9wZXJhdG9yLmRvdWJs
ZVZhbHVlKEZvbyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBkb3VibGUodmFsdWUudmFs
dWUpOworICAgIH0KKyAgICBGb28gb3BlcmF0b3IuZG91YmxlVmFsdWU9KEZvbyB2YWx1ZSwgZG91
YmxlIGRvdWJsZVZhbHVlKQorICAgIHsKKyAgICAgICAgdmFsdWUudmFsdWUgPSBpbnQoZG91Ymxl
VmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCitQcm92aWRpbmcgYm90aCBn
ZXR0ZXIgYW5kIHNldHRlciBvdmVybG9hZHMgbWFrZXMgYGRvdWJsZVZhbHVlYCBiZWhhdmUgYWxt
b3N0IGFzIGlmIGl0IHdhcyBhIGZpZWxkIG9mIGBGb29gLiBGb3IgZXhhbXBsZSwgaXQncyBwb3Nz
aWJsZSB0byBzYXk6CisKKyAgICBGb28gZm9vOworICAgIGZvby52YWx1ZSA9IDQyOworICAgIGZv
by5kb3VibGVWYWx1ZSAqPSAyOyAvLyBOb3cgZm9vLnZhbHVlIGlzIDg0CisKK0l0J3MgYWxzbyBw
b3NzaWJsZSB0byBwcm92aWRlIGFuIGFkZHJlc3MtZ2V0dGluZyBvdmVybG9hZCBjYWxsZWQgYW4g
KmFuZGVyKjoKKworICAgIHN0cnVjdCBGb28geworICAgICAgICBpbnQgdmFsdWU7CisgICAgfQor
ICAgIHRocmVhZCBpbnReIG9wZXJhdG9yJi52YWx1ZUFsaWFzKHRocmVhZCBGb29eIGZvbykKKyAg
ICB7CisgICAgICAgIHJldHVybiAmZm9vLT52YWx1ZTsKKyAgICB9CisKK1Byb3ZpZGluZyBqdXN0
IHRoaXMgb3ZlcmxvYWQgZm9yIGEgcG9pbnRlciB0eXBlIGluIGV2ZXJ5IGFkZHJlc3Mgc3BhY2Ug
Z2l2ZXMgdGhlIHNhbWUgcG93ZXIgYXMgb3ZlcmxvYWRpbmcgZ2V0dGVycyBhbmQgc2V0dGVycy4g
QWRkaXRpb25hbGx5LCBpdCBtYWtlcyBpdCBwb3NzaWJsZSB0byBgJmZvby52YWx1ZUFsaWFzYC4K
KworVGhlIHNhbWUgb3ZlcmxvYWRpbmcgcG93ZXIgaXMgcHJvdmlkZWQgZm9yIGFycmF5IGFjY2Vz
c2VzLiBGb3IgZXhhbXBsZToKKworICAgIHN0cnVjdCBWZWN0b3I8VD4geworICAgICAgICBUIHg7
CisgICAgICAgIFQgeTsKKyAgICB9CisgICAgdGhyZWFkIFReIG9wZXJhdG9yJltdKHRocmVhZCBU
XiBwdHIsIHVpbnQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gaW5kZXggPyAmcHRyLT55
IDogJnB0ci0+eDsKKyAgICB9CisKK0FsdGVybmF0aXZlbHksIGl0J3MgcG9zc2libGUgdG8gb3Zl
cmxvYWQgZ2V0dGVycyBhbmQgc2V0dGVycyAoYG9wZXJhdG9yW11gIGFuZCBgb3BlcmF0b3JbXT1g
KS4KKworIyMgU3VtbWFyeQorCitXU0wgaXMgYSB0eXBlLXNhZmUgbGFuZ3VhZ2UgYmFzZWQgb24g
QyBzeW50YXguIEl0IGVsaW1pbmF0ZXMgc29tZSBDIGZlYXR1cmVzLCBsaWtlIHVuaW9ucyBhbmQg
cG9pbnRlciBjYXN0cywgYnV0IGFkZHMgb3RoZXIgbW9kZXJuIGZlYXR1cmVzIGluIHRoZWlyIHBs
YWNlLCBsaWtlIGdlbmVyaWNzIGFuZCBvdmVybG9hZGluZy4KKworIyBBZGRpdGlvbmFsIExpbWl0
YXRpb25zCisKK1RoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBsaW1pdGF0aW9ucyBtYXkgYmUgcGxh
Y2VkIG9uIGEgV1NMIHByb2dyYW06CisKKy0gYGRldmljZWAsIGBjb25zdGFudGAsIGFuZCBgdGhy
ZWFkZ3JvdXBgIHBvaW50ZXJzIGNhbm5vdCBwb2ludCB0byBkYXRhIHRoYXQgbWF5IGhhdmUgcG9p
bnRlcnMgaW4gaXQuIFRoaXMgc2FmZXR5IGNoZWNrIGlzIG5vdCBkb25lIGFzIHBhcnQgb2YgdGhl
IG5vcm1hbCB0eXBlIHN5c3RlbSBjaGVja3MuIEl0J3MgcGVyZm9ybWVkIG9ubHkgYWZ0ZXIgaW5z
dGFudGlhdGlvbi4KKy0gUG9pbnRlcnMgYW5kIGFycmF5IHJlZmVyZW5jZXMgKGNvbGxlY3RpdmVs
eSwgKnJlZmVyZW5jZXMqKSBtYXkgYmUgcmVzdHJpY3RlZCB0byBzdXBwb3J0IGNvbXBpbGluZyB0
byBTUElSLVYgKmxvZ2ljYWwgbW9kZSouIEluIHRoaXMgbW9kZSwgcmVmZXJlbmNlcyBtYXkgbmV2
ZXIgcG9pbnQgdG8gZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSByZWZlcmVuY2VzIGluIHRoZW0u
IFJlZmVyZW5jZXMgbXVzdCBiZSBpbml0aWFsaXplZCB1cG9uIGRlY2xhcmF0aW9uIGFuZCBuZXZl
ciByZWFzc2lnbmVkLiBGdW5jdGlvbnMgdGhhdCByZXR1cm4gcmVmZXJlbmNlcyBtdXN0IGhhdmUg
b25lIHJldHVybiBwb2ludC4gVGVybmFyeSBleHByZXNzaW9ucyBtYXkgbm90IHJldHVybiByZWZl
cmVuY2VzLgorCisK
</data>
<flag name="review"
          id="341104"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
      

    </bug>

</bugzilla>