<?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>188716</bug_id>
          
          <creation_ts>2018-08-17 19:04:26 -0700</creation_ts>
          <short_desc>[WTF] Add WTF::unalignedLoad and WTF::unalignedStore</short_desc>
          <delta_ts>2018-08-20 20:38:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>fujii</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451323</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-17 19:04:26 -0700</bug_when>
    <thetext>[WTF] Add WTF::unalignedLoad and WTF::unalignedStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451325</commentid>
    <comment_count>1</comment_count>
      <attachid>347421</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-17 19:10:40 -0700</bug_when>
    <thetext>Created attachment 347421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451329</commentid>
    <comment_count>2</comment_count>
      <attachid>347423</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-17 19:18:59 -0700</bug_when>
    <thetext>Created attachment 347423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451443</commentid>
    <comment_count>3</comment_count>
      <attachid>347455</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-19 01:21:51 -0700</bug_when>
    <thetext>Created attachment 347455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451462</commentid>
    <comment_count>4</comment_count>
      <attachid>347455</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-19 12:24:36 -0700</bug_when>
    <thetext>Comment on attachment 347455
Patch

How close does this put us to removing reinterpret_cast_ptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451483</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-19 15:42:00 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 347455 [details]
&gt; Patch
&gt; 
&gt; How close does this put us to removing reinterpret_cast_ptr?

Nice catch. Currently, `reinterpret_cast_ptr&lt;T&gt;(ptr)` is used only when we ensure that the casted `ptr` has the expected alignment by `T`. It would be optimized way with CPUs without unaligned accesses support. But since the major CPUs like ARM64, X86, and X86_64 support unaligned accesses, always using `WTF::unalignedXXX` would be feasible. We should investigate each site of `reinterpret_cast_ptr` carefully to decide whether we can replace it with unalignedXXX helpers!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451484</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-19 15:50:11 -0700</bug_when>
    <thetext>Committed r235018: &lt;https://trac.webkit.org/changeset/235018&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451592</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-08-20 06:58:37 -0700</bug_when>
    <thetext>I&apos;m surprised. There are so many unaligned access.
I thought unaligned memory access is slow.
See https://github.com/spotify/linux/blob/master/Documentation/unaligned-memory-access.txt

Are they really unaligned memory access? Or, actually aligned?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451825</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-20 16:52:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/43534448&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451948</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-20 20:38:26 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #7)
&gt; I&apos;m surprised. There are so many unaligned access.
&gt; I thought unaligned memory access is slow.
&gt; See
&gt; https://github.com/spotify/linux/blob/master/Documentation/unaligned-memory-
&gt; access.txt
&gt; 
&gt; Are they really unaligned memory access? Or, actually aligned?

Unaligned accesses reported by UBSan. They are typically filling/extracting an value into/from X86 machine code stream.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347421</attachid>
            <date>2018-08-17 19:10:40 -0700</date>
            <delta_ts>2018-08-17 19:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188716-20180818111039.patch</filename>
            <type>text/plain</type>
            <size>10640</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OGE2YWFlNDk4YTg5NWQ4OTZhYTU1MDNlZDJhMGRhOWFhMDkzMDIyLi5kNzk3NDdjYjYxZGU4Njlh
ZGEzZTY4YWQ1OTQwNzc2MzVjMDU3MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOC0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXVEZdIEFkZCBXVEY6OnVuYWxpZ25lZExvYWQgYW5kIFdU
Rjo6dW5hbGlnbmVkU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4ODcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdoaWxlIHNvbWUgQ1BVcyBhbGxvdyB1bmFsaWduZWQgYWNjZXNzZXMgdG8gbWVt
b3J5LCBkb2luZyBpdCBpbiBDKysgd2l0aCBgcmVpbnRlcnByZXRfY2FzdDw+YCBpcworICAgICAg
ICB1bmRlZmluZWQgYmVoYXZpb3IuIFRoaXMgcGF0Y2ggYWRkcyBXVEY6Ont1bmFsaWduZWRMb2Fk
LHVuYWxpZ25lZFN0b3JlfSBoZWxwZXIgZnVuY3Rpb25zLCB3aGljaAorICAgICAgICBjYW4gbG9h
ZCBmcm9tIGFuZCBzdG9yZSB0byB0aGUgcG9pbnRlciBpbiBhbiB1bmFsaWduZWQgbWFubmVyLgor
ICAgICAgICBBY3R1YWwgaW1wbGVtZW50YXRpb24gdXNlcyBgbWVtY3B5YC4gVGhpcyBjYW4gYmUg
b3B0aW1pemVkIHRvIGRpcmVjdCB1bmFsaWduZWQgYWNjZXNzIG9wZXJhdGlvbnMKKyAgICAgICAg
aW4gc3VwcG9ydGVkIENQVXMgbGlrZSB4ODYuIEV2ZW4gdGhvdWdoIGEgQ1BVIGRvZXMgbm90IHN1
cHBvcnQgdW5hbGlnbmVkIGFjY2Vzc2VzLCBtZW1jcHkgaXMgc3RpbGwKKyAgICAgICAgc2FmZSBh
bmQgdGhlIGNvbXBpbGVyIGVtaXRzIGFwcHJvcHJpYXRlIGNvZGUuCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQXNzZW1ibGVyQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6
TG9jYWxXcml0ZXI6OnB1dEludGVncmFsVW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bGVyQnVmZmVyOjpwdXRJbnRlZ3JhbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6
cHV0SW50ZWdyYWxVbmNoZWNrZWQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVhZENhbGxUYXJnZXQp
OgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpsaW5rSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVhZFBv
aW50ZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSGx0KToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6OnNldFBvaW50ZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
OnNldEludDMyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzZXRJbnQ4KToKKwogMjAx
OC0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPiBhbmQg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbSlND
XSBBZGQgR1BSUmVnOjpJbnZhbGlkR1BSUmVnIGFuZCBGUFJSZWc6OkludmFsaWRGUFJSZWcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNjY4ZTliODFiZTU5NDhiZGY0MDgzZmYzNjUzZDU3ZjQ0MmU0ZDUxMC4uOWI5NmZhMmJiNjQy
N2NkZmJlMjM1YzI3OTViZGQxZmE3NWM4OTYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0w
OC0xNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAg
ICAgIFtXVEZdIEFkZCBXVEY6OnVuYWxpZ25lZExvYWQgYW5kIFdURjo6dW5hbGlnbmVkU3RvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODcxNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9VbmFsaWduZWRBY2Nlc3MuaDogQWRkZWQuCisg
ICAgICAgIChXVEY6OnVuYWxpZ25lZExvYWQpOgorICAgICAgICAoV1RGOjp1bmFsaWduZWRTdG9y
ZSk6CisKIDIwMTgtMDgtMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXVEYncyBpbnRlcm5hbCBzdGQ6Om9wdGlvbmFsIGltcGxlbWVudGF0aW9uIHNob3Vs
ZCByZWxlYXNlIGFzc2VydCBvbiBhbGwgYmFkIGFjY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAppbmRleCA3MzQwOTUyZDUzYzRm
NWQ0ZjU4ODU1ZmVhYzc1MTEzMjRlNWVmOWRkLi41NGIyZTliMWViMTYyZTAzYjlhMWUzN2U5ZTQz
MTYxZWUwY2IxZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fzc2VtYmxlckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QXNzZW1ibGVyQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmFsaWduZWRBY2Nlc3MuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKQEAgLTIzOSw3ICsyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHZvaWQgcHV0SW50ZWdyYWxVbmNoZWNrZWQoSW50ZWdyYWxUeXBlIHZhbHVlKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIEFTU0VSVChtX2luZGV4ICsgc2l6ZW9mKEludGVncmFsVHlw
ZSkgPD0gbV9idWZmZXIubV9zdG9yYWdlLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgICAgICpy
ZWludGVycHJldF9jYXN0X3B0cjxJbnRlZ3JhbFR5cGUqPihtX3N0b3JhZ2VCdWZmZXIgKyBtX2lu
ZGV4KSA9IHZhbHVlOworICAgICAgICAgICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8SW50ZWdy
YWxUeXBlPihtX3N0b3JhZ2VCdWZmZXIgKyBtX2luZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgbV9pbmRleCArPSBzaXplb2YoSW50ZWdyYWxUeXBlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIEFzc2VtYmxlckJ1ZmZlciYgbV9idWZmZXI7CkBAIC0yNTgsMTYgKzI1OSwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IG1faW5kZXgg
KyBzaXplb2YoSW50ZWdyYWxUeXBlKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShuZXh0SW5k
ZXggPiBtX3N0b3JhZ2UuY2FwYWNpdHkoKSkpCiAgICAgICAgICAgICAgICAgb3V0T2ZMaW5lR3Jv
dygpOwotICAgICAgICAgICAgQVNTRVJUKGlzQXZhaWxhYmxlKHNpemVvZihJbnRlZ3JhbFR5cGUp
KSk7Ci0gICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdF9wdHI8SW50ZWdyYWxUeXBlKj4obV9z
dG9yYWdlLmJ1ZmZlcigpICsgbV9pbmRleCkgPSB2YWx1ZTsKLSAgICAgICAgICAgIG1faW5kZXgg
PSBuZXh0SW5kZXg7CisgICAgICAgICAgICBwdXRJbnRlZ3JhbFVuY2hlY2tlZDxJbnRlZ3JhbFR5
cGU+KHZhbHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVn
cmFsVHlwZT4KICAgICAgICAgdm9pZCBwdXRJbnRlZ3JhbFVuY2hlY2tlZChJbnRlZ3JhbFR5cGUg
dmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc0F2YWlsYWJsZShzaXplb2Yo
SW50ZWdyYWxUeXBlKSkpOwotICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPEludGVn
cmFsVHlwZSo+KG1fc3RvcmFnZS5idWZmZXIoKSArIG1faW5kZXgpID0gdmFsdWU7CisgICAgICAg
ICAgICBXVEY6OnVuYWxpZ25lZFN0b3JlPEludGVncmFsVHlwZT4obV9zdG9yYWdlLmJ1ZmZlcigp
ICsgbV9pbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgbV9pbmRleCArPSBzaXplb2YoSW50ZWdy
YWxUeXBlKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKaW5kZXggOGJjMDIzZDU3MWEwNmFlNmY2MTQwODdi
ZjliMGRjMjRmNzE5ZWQ5Ni4uNzJkZWY3MmM2YjRiNzE4ODkwOTY5M2FjNWYxZmEwYmNiYWFkNDM5
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Ni5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODYuaApAQCAtMzAyLDcgKzMwMiw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2IDog
cHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICB0ZW1wbGF0ZTxQdHJUYWcgcmVz
dWx0VGFnLCBQdHJUYWcgbG9jYXRpb25UYWc+CiAgICAgc3RhdGljIEZ1bmN0aW9uUHRyPHJlc3Vs
dFRhZz4gcmVhZENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uQ2FsbDxsb2NhdGlvblRhZz4gY2FsbCkK
ICAgICB7Ci0gICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJf
dCo+KGNhbGwuZGF0YUxvY2F0aW9uKCkpWy0xXTsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0g
V1RGOjp1bmFsaWduZWRMb2FkPGludDMyX3Q+KGJpdHdpc2VfY2FzdDxpbnQzMl90Kj4oY2FsbC5k
YXRhTG9jYXRpb24oKSkgLSAxKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyPHJlc3VsdFRh
Zz4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNh
bGwuZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBmM2E0MDgzYzEyMWQ1NzE4
ODZmZGVjMWQwOTE5ZWFhYzllYzBiODQxLi4yZjVkMGMyNmRlNmU0NTMxZDRhMWEyMGJlYzM0OWMz
NzUxMTg0NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgKQEAgLTM2ODAsNyArMzY4MCw3IEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAgICAg
ICAgIEFTU0VSVCh0by5pc1NldCgpKTsKIAogICAgICAgICBjaGFyKiBjb2RlID0gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4obV9mb3JtYXR0ZXIuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUKCFyZWlu
dGVycHJldF9jYXN0PGludDMyX3QqPihjb2RlICsgZnJvbS5tX29mZnNldClbLTFdKTsKKyAgICAg
ICAgQVNTRVJUKCFXVEY6OnVuYWxpZ25lZExvYWQ8aW50MzJfdD4oYml0d2lzZV9jYXN0PGludDMy
X3QqPihjb2RlICsgZnJvbS5tX29mZnNldCkgLSAxKSk7CiAgICAgICAgIHNldFJlbDMyKGNvZGUg
KyBmcm9tLm1fb2Zmc2V0LCBjb2RlICsgdG8ubV9vZmZzZXQpOwogICAgIH0KICAgICAKQEAgLTM3
MzksMjIgKzM3MzksMjEgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsKICAgICAKICAgICBzdGF0aWMg
dm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCiAgICAgewotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CisgICAgICAgIHJldHVybiBXVEY6OnVu
YWxpZ25lZExvYWQ8dm9pZCo+KGJpdHdpc2VfY2FzdDx2b2lkKio+KHdoZXJlKSAtIDEpOwogICAg
IH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSGx0KHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQpCiAgICAgewotICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgcHRyWzBdID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oT1BfSExUKTsKKyAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTx1aW50OF90PihpbnN0
cnVjdGlvblN0YXJ0LCBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9ITFQpKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9p
ZCogdG8pCiAgICAgewotICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgdWludDhfdCogZHN0UHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4odG8pOworICAgICAgICB1aW50OF90KiBwdHIgPSBiaXR3
aXNlX2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICB1aW50OF90KiBk
c3RQdHIgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRvKTsKICAgICAgICAgaW50cHRyX3QgZGlz
dGFuY2UgPSAoaW50cHRyX3QpKGRzdFB0ciAtIChwdHIgKyA1KSk7Ci0gICAgICAgIHB0clswXSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KE9QX0pNUF9yZWwzMik7Ci0gICAgICAgICpyZWludGVycHJl
dF9jYXN0PGludDMyX3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNl
KTsKKyAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTx1aW50OF90PihwdHIsIE9QX0pNUF9yZWwz
Mik7CisgICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8dWludDMyX3Q+KHB0ciArIDEsIGRpc3Rh
bmNlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkKQEAgLTM5NTYsMTcgKzM5NTUsMTcgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsKIAog
ICAgIHN0YXRpYyB2b2lkIHNldFBvaW50ZXIodm9pZCogd2hlcmUsIHZvaWQqIHZhbHVlKQogICAg
IHsKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV0gPSB2YWx1ZTsK
KyAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTx2b2lkKj4oYml0d2lzZV9jYXN0PHZvaWQqKj4o
d2hlcmUpIC0gMSwgdmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNldEludDMyKHZv
aWQqIHdoZXJlLCBpbnQzMl90IHZhbHVlKQogICAgIHsKLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90Kj4od2hlcmUpWy0xXSA9IHZhbHVlOworICAgICAgICBXVEY6OnVuYWxpZ25lZFN0
b3JlPGludDMyX3Q+KGJpdHdpc2VfY2FzdDxpbnQzMl90Kj4od2hlcmUpIC0gMSwgdmFsdWUpOwog
ICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCBzZXRJbnQ4KHZvaWQqIHdoZXJlLCBpbnQ4X3Qg
dmFsdWUpCiAgICAgewotICAgICAgICByZWludGVycHJldF9jYXN0PGludDhfdCo+KHdoZXJlKVst
MV0gPSB2YWx1ZTsKKyAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTxpbnQ4X3Q+KGJpdHdpc2Vf
Y2FzdDxpbnQ4X3QqPih3aGVyZSkgLSAxLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZv
aWQgc2V0UmVsMzIodm9pZCogZnJvbSwgdm9pZCogdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4
IDk3OThiOWI4YTEwNTg1ZjM0ZjA3OTJjOWEzMTQ5ZTA5YzM4Y2U5NjQuLjlhZGI1NTU0M2QwMTNm
ZWE5YWY1YTdhYWU0OTQzMmY5NWYzMjQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yNDAs
NiArMjQwLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFRyaVN0YXRlLmgKICAgICBU
eXBlQ2FzdHMuaAogICAgIFVVSUQuaAorICAgIFVuYWxpZ25lZEFjY2Vzcy5oCiAgICAgVW5leHBl
Y3RlZC5oCiAgICAgVW5pU3RkRXh0cmFzLmgKICAgICBVbmlvbkZpbmQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVW5hbGlnbmVkQWNjZXNzLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmFsaWdu
ZWRBY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTM3YjRlZWMxYWQyMTI0YTM1YzgzYzZiYzBlY2I4ZWRj
YTY1MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVW5hbGlnbmVkQWNjZXNz
LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6
dWtpIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBl
PgoraW5saW5lIEludGVncmFsVHlwZSB1bmFsaWduZWRMb2FkKGNvbnN0IHZvaWQqIHBvaW50ZXIp
Cit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPEludGVncmFsVHlwZT46OnZh
bHVlIHx8IHN0ZDo6aXNfcG9pbnRlcjxJbnRlZ3JhbFR5cGU+Ojp2YWx1ZSwgIiIpOworICAgIElu
dGVncmFsVHlwZSByZXN1bHQgeyB9OworICAgIG1lbWNweSgmcmVzdWx0LCBwb2ludGVyLCBzaXpl
b2YoSW50ZWdyYWxUeXBlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgSW50ZWdyYWxUeXBlPgoraW5saW5lIHZvaWQgdW5hbGlnbmVkU3RvcmUodm9pZCogcG9p
bnRlciwgSW50ZWdyYWxUeXBlIHZhbHVlKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19p
bnRlZ3JhbDxJbnRlZ3JhbFR5cGU+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3BvaW50ZXI8SW50ZWdyYWxU
eXBlPjo6dmFsdWUsICIiKTsKKyAgICBtZW1jcHkocG9pbnRlciwgJnZhbHVlLCBzaXplb2YoSW50
ZWdyYWxUeXBlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347423</attachid>
            <date>2018-08-17 19:18:59 -0700</date>
            <delta_ts>2018-08-19 01:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188716-20180818111848.patch</filename>
            <type>text/plain</type>
            <size>13058</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NDc0Y2MxNzI3NmFkNTYwY2Y4MjQxNTBmMGVmMWEwNjc2NjVmMTVlLi5hNWZhNzQ0ZjE3MDgxZWY3
ZjYzMDAyOWQ5Y2RmZDdiNjk2ZWZhNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOC0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXVEZdIEFkZCBXVEY6OnVuYWxpZ25lZExvYWQgYW5kIFdU
Rjo6dW5hbGlnbmVkU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4ODcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBXVEY6OnVuYWxpZ25lZExvYWQgYW5kIFdURjo6dW5hbGlnbmVkU3RvcmUg
dG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yLgorICAgICAgICBUaGUgY29tcGlsZXIgY2FuIGVt
aXQgYXBwcm9wcmlhdGUgbW92IG9wZXJhdGlvbnMgaW4geDg2IGV2ZW4gaWYgd2UgdXNlIHRoZXNl
CisgICAgICAgIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQXNzZW1i
bGVyQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXI6
OnB1dEludGVncmFsVW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpw
dXRJbnRlZ3JhbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6cHV0SW50ZWdyYWxV
bmNoZWNrZWQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVhZENhbGxUYXJnZXQpOgorICAgICAgICAq
IGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjps
aW5rSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVhZFBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSGx0KToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnNldFBvaW50ZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnNldEludDMyKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzZXRJbnQ4KToKKwogMjAxOC0wOC0xNyAgU2Fh
bSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBpbnRlcnNlY3Rpb25PZlBh
c3RWYWx1ZXNBdEhlYWQgbXVzdCBmaWx0ZXIgdmFsdWVzIGFmdGVyIHRoZXkndmUgb2JzZXJ2ZWQg
YW4gaW52YWxpZGF0aW9uIHBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY2OGU5YjgxYmU1OTQ4YmRmNDA4M2ZmMzY1M2Q1
N2Y0NDJlNGQ1MTAuLmU4ZjQ3Njc2ZDQyOWIxMmRlZDRkZWMyMTFiZTM1MDg2NTdlMDQ3NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDgtMTcgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1
a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgV1RGOjp1bmFsaWduZWRMb2Fk
IGFuZCBXVEY6OnVuYWxpZ25lZFN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODg3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGlsZSBzb21lIENQVXMgYWxsb3cgdW5hbGlnbmVkIGFjY2Vzc2Vz
IHRvIG1lbW9yeSwgZG9pbmcgaXQgaW4gQysrIHdpdGggYHJlaW50ZXJwcmV0X2Nhc3Q8PmAgaXMK
KyAgICAgICAgdW5kZWZpbmVkIGJlaGF2aW9yLiBUaGlzIHBhdGNoIGFkZHMgV1RGOjp7dW5hbGln
bmVkTG9hZCx1bmFsaWduZWRTdG9yZX0gaGVscGVyIGZ1bmN0aW9ucywgd2hpY2gKKyAgICAgICAg
Y2FuIGxvYWQgZnJvbSBhbmQgc3RvcmUgdG8gdGhlIHBvaW50ZXIgaW4gYW4gdW5hbGlnbmVkIG1h
bm5lci4KKyAgICAgICAgQWN0dWFsIGltcGxlbWVudGF0aW9uIHVzZXMgYG1lbWNweWAuIFRoaXMg
Y2FuIGJlIG9wdGltaXplZCB0byBkaXJlY3QgdW5hbGlnbmVkIGFjY2VzcyBvcGVyYXRpb25zCisg
ICAgICAgIGluIHN1cHBvcnRlZCBDUFVzIGxpa2UgeDg2LiBFdmVuIHRob3VnaCBhIENQVSBkb2Vz
IG5vdCBzdXBwb3J0IHVuYWxpZ25lZCBhY2Nlc3NlcywgbWVtY3B5IGlzIHN0aWxsCisgICAgICAg
IHNhZmUgYW5kIHRoZSBjb21waWxlciBlbWl0cyBhcHByb3ByaWF0ZSBjb2RlLgorCisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIHd0Zi9VbmFsaWduZWRBY2Nlc3MuaDogQWRkZWQuCisgICAgICAg
IChXVEY6OnVuYWxpZ25lZExvYWQpOgorICAgICAgICAoV1RGOjp1bmFsaWduZWRTdG9yZSk6CisK
IDIwMTgtMDgtMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXVEYncyBpbnRlcm5hbCBzdGQ6Om9wdGlvbmFsIGltcGxlbWVudGF0aW9uIHNob3VsZCByZWxl
YXNlIGFzc2VydCBvbiBhbGwgYmFkIGFjY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAppbmRleCA3MzQwOTUyZDUzYzRmNWQ0ZjU4
ODU1ZmVhYzc1MTEzMjRlNWVmOWRkLi41NGIyZTliMWViMTYyZTAzYjlhMWUzN2U5ZTQzMTYxZWUw
Y2IxZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1i
bGVyQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VbmFsaWduZWRBY2Nlc3MuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTIzOSw3ICsyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHZvaWQg
cHV0SW50ZWdyYWxVbmNoZWNrZWQoSW50ZWdyYWxUeXBlIHZhbHVlKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2luZGV4ICsgc2l6ZW9mKEludGVncmFsVHlwZSkgPD0g
bV9idWZmZXIubV9zdG9yYWdlLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgICAgICpyZWludGVy
cHJldF9jYXN0X3B0cjxJbnRlZ3JhbFR5cGUqPihtX3N0b3JhZ2VCdWZmZXIgKyBtX2luZGV4KSA9
IHZhbHVlOworICAgICAgICAgICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8SW50ZWdyYWxUeXBl
PihtX3N0b3JhZ2VCdWZmZXIgKyBtX2luZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgbV9p
bmRleCArPSBzaXplb2YoSW50ZWdyYWxUeXBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IEFzc2VtYmxlckJ1ZmZlciYgbV9idWZmZXI7CkBAIC0yNTgsMTYgKzI1OSwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IG1faW5kZXggKyBzaXpl
b2YoSW50ZWdyYWxUeXBlKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShuZXh0SW5kZXggPiBt
X3N0b3JhZ2UuY2FwYWNpdHkoKSkpCiAgICAgICAgICAgICAgICAgb3V0T2ZMaW5lR3JvdygpOwot
ICAgICAgICAgICAgQVNTRVJUKGlzQXZhaWxhYmxlKHNpemVvZihJbnRlZ3JhbFR5cGUpKSk7Ci0g
ICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdF9wdHI8SW50ZWdyYWxUeXBlKj4obV9zdG9yYWdl
LmJ1ZmZlcigpICsgbV9pbmRleCkgPSB2YWx1ZTsKLSAgICAgICAgICAgIG1faW5kZXggPSBuZXh0
SW5kZXg7CisgICAgICAgICAgICBwdXRJbnRlZ3JhbFVuY2hlY2tlZDxJbnRlZ3JhbFR5cGU+KHZh
bHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlw
ZT4KICAgICAgICAgdm9pZCBwdXRJbnRlZ3JhbFVuY2hlY2tlZChJbnRlZ3JhbFR5cGUgdmFsdWUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc0F2YWlsYWJsZShzaXplb2YoSW50ZWdy
YWxUeXBlKSkpOwotICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPEludGVncmFsVHlw
ZSo+KG1fc3RvcmFnZS5idWZmZXIoKSArIG1faW5kZXgpID0gdmFsdWU7CisgICAgICAgICAgICBX
VEY6OnVuYWxpZ25lZFN0b3JlPEludGVncmFsVHlwZT4obV9zdG9yYWdlLmJ1ZmZlcigpICsgbV9p
bmRleCwgdmFsdWUpOwogICAgICAgICAgICAgbV9pbmRleCArPSBzaXplb2YoSW50ZWdyYWxUeXBl
KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2LmgKaW5kZXggOGJjMDIzZDU3MWEwNmFlNmY2MTQwODdiZjliMGRj
MjRmNzE5ZWQ5Ni4uNzJkZWY3MmM2YjRiNzE4ODkwOTY5M2FjNWYxZmEwYmNiYWFkNDM5OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaApAQCAtMzAyLDcgKzMwMiw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2IDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICB0ZW1wbGF0ZTxQdHJUYWcgcmVzdWx0VGFn
LCBQdHJUYWcgbG9jYXRpb25UYWc+CiAgICAgc3RhdGljIEZ1bmN0aW9uUHRyPHJlc3VsdFRhZz4g
cmVhZENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uQ2FsbDxsb2NhdGlvblRhZz4gY2FsbCkKICAgICB7
Ci0gICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGNh
bGwuZGF0YUxvY2F0aW9uKCkpWy0xXTsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gV1RGOjp1
bmFsaWduZWRMb2FkPGludDMyX3Q+KGJpdHdpc2VfY2FzdDxpbnQzMl90Kj4oY2FsbC5kYXRhTG9j
YXRpb24oKSkgLSAxKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyPHJlc3VsdFRhZz4ocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhbGwuZGF0
YUxvY2F0aW9uKCkpICsgb2Zmc2V0KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBmM2E0MDgzYzEyMWQ1NzE4ODZmZGVj
MWQwOTE5ZWFhYzllYzBiODQxLi4yZjVkMGMyNmRlNmU0NTMxZDRhMWEyMGJlYzM0OWMzNzUxMTg0
NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKQEAgLTM2ODAsNyArMzY4MCw3IEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAgICAgICAgIEFT
U0VSVCh0by5pc1NldCgpKTsKIAogICAgICAgICBjaGFyKiBjb2RlID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obV9mb3JtYXR0ZXIuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUKCFyZWludGVycHJl
dF9jYXN0PGludDMyX3QqPihjb2RlICsgZnJvbS5tX29mZnNldClbLTFdKTsKKyAgICAgICAgQVNT
RVJUKCFXVEY6OnVuYWxpZ25lZExvYWQ8aW50MzJfdD4oYml0d2lzZV9jYXN0PGludDMyX3QqPihj
b2RlICsgZnJvbS5tX29mZnNldCkgLSAxKSk7CiAgICAgICAgIHNldFJlbDMyKGNvZGUgKyBmcm9t
Lm1fb2Zmc2V0LCBjb2RlICsgdG8ubV9vZmZzZXQpOwogICAgIH0KICAgICAKQEAgLTM3MzksMjIg
KzM3MzksMjEgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsKICAgICAKICAgICBzdGF0aWMgdm9pZCog
cmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCiAgICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CisgICAgICAgIHJldHVybiBXVEY6OnVuYWxpZ25l
ZExvYWQ8dm9pZCo+KGJpdHdpc2VfY2FzdDx2b2lkKio+KHdoZXJlKSAtIDEpOwogICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSGx0KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCiAg
ICAgewotICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihp
bnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgcHRyWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
T1BfSExUKTsKKyAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTx1aW50OF90PihpbnN0cnVjdGlv
blN0YXJ0LCBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9ITFQpKTsKICAgICB9CiAKICAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8p
CiAgICAgewotICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihpbnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgdWludDhfdCogZHN0UHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4odG8pOworICAgICAgICB1aW50OF90KiBwdHIgPSBiaXR3aXNlX2Nh
c3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICB1aW50OF90KiBkc3RQdHIg
PSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRvKTsKICAgICAgICAgaW50cHRyX3QgZGlzdGFuY2Ug
PSAoaW50cHRyX3QpKGRzdFB0ciAtIChwdHIgKyA1KSk7Ci0gICAgICAgIHB0clswXSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KE9QX0pNUF9yZWwzMik7Ci0gICAgICAgICpyZWludGVycHJldF9jYXN0
PGludDMyX3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAg
ICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTx1aW50OF90PihwdHIsIE9QX0pNUF9yZWwzMik7Cisg
ICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8dWludDMyX3Q+KHB0ciArIDEsIGRpc3RhbmNlKTsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCkKQEAgLTM5NTYsMTcgKzM5NTUsMTcgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsKIAogICAgIHN0
YXRpYyB2b2lkIHNldFBvaW50ZXIodm9pZCogd2hlcmUsIHZvaWQqIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV0gPSB2YWx1ZTsKKyAgICAg
ICAgV1RGOjp1bmFsaWduZWRTdG9yZTx2b2lkKj4oYml0d2lzZV9jYXN0PHZvaWQqKj4od2hlcmUp
IC0gMSwgdmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNldEludDMyKHZvaWQqIHdo
ZXJlLCBpbnQzMl90IHZhbHVlKQogICAgIHsKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnQz
Ml90Kj4od2hlcmUpWy0xXSA9IHZhbHVlOworICAgICAgICBXVEY6OnVuYWxpZ25lZFN0b3JlPGlu
dDMyX3Q+KGJpdHdpc2VfY2FzdDxpbnQzMl90Kj4od2hlcmUpIC0gMSwgdmFsdWUpOwogICAgIH0K
ICAgICAKICAgICBzdGF0aWMgdm9pZCBzZXRJbnQ4KHZvaWQqIHdoZXJlLCBpbnQ4X3QgdmFsdWUp
CiAgICAgewotICAgICAgICByZWludGVycHJldF9jYXN0PGludDhfdCo+KHdoZXJlKVstMV0gPSB2
YWx1ZTsKKyAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTxpbnQ4X3Q+KGJpdHdpc2VfY2FzdDxp
bnQ4X3QqPih3aGVyZSkgLSAxLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgc2V0
UmVsMzIodm9pZCogZnJvbSwgdm9pZCogdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA3MDQzMzhhNTI0ZDA3NGE3M2UyODI0Y2ZjZTI2YTEwNjdlOGQyYTNl
Li40NWI1Y2VhZWNmMGUwMmVjNWQ2NTE2Nzc4NzY3NWM2ODlkMzUyNDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyMyw2ICs2MjMsOCBAQAogCQlFMzEx
RkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8qIFBsYXRmb3JtUmVnaXN0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVnaXN0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0Q1Rjg3MUZCRUQ2NjcwMEJGNjI1RSAvKiBSZWN1cnNh
YmxlTGFtYmRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3Vyc2FibGVM
YW1iZGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MEM3NjQyMTI3Qjg1QjAw
QzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVbmFsaWduZWRBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2
MEM3NjUyMTI3Qjg1QzAwQzkwRjBFIC8qIFVuZXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVW5leHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzg4ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NkUyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUG9vbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVVRpbWVDb2Nv
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE3LDYgKzExMTksOCBAQAog
CQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCiAJCQkJMTQ5
RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8sCiAJCQkJODNGQkE5MzExOURG
NDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovLAorCQkJCUUzNjBDNzY0MjEyN0I4NUIwMEM5
MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3MuaCAqLywKKwkJCQlFMzYwQzc2NTIxMjdCODVDMDBDOTBG
MEUgLyogVW5leHBlY3RlZC5oICovLAogCQkJCUE4QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBV
bmlvbkZpbmQuaCAqLywKIAkJCQlFMzAwRTUyMTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJy
YXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDk3OThiOWI4YTEwNTg1ZjM0ZjA3OTJjOWEzMTQ5ZTA5
YzM4Y2U5NjQuLjlhZGI1NTU0M2QwMTNmZWE5YWY1YTdhYWU0OTQzMmY5NWYzMjQwZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0yNDAsNiArMjQwLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVS
UwogICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMuaAogICAgIFVVSUQuaAorICAgIFVuYWxp
Z25lZEFjY2Vzcy5oCiAgICAgVW5leHBlY3RlZC5oCiAgICAgVW5pU3RkRXh0cmFzLmgKICAgICBV
bmlvbkZpbmQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5hbGlnbmVkQWNjZXNzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9VbmFsaWduZWRBY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTM3YjRlZWMx
YWQyMTI0YTM1YzgzYzZiYzBlY2I4ZWRjYTY1MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvVW5hbGlnbmVkQWNjZXNzLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPgoraW5saW5lIEludGVncmFsVHlwZSB1bmFsaWduZWRM
b2FkKGNvbnN0IHZvaWQqIHBvaW50ZXIpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2lu
dGVncmFsPEludGVncmFsVHlwZT46OnZhbHVlIHx8IHN0ZDo6aXNfcG9pbnRlcjxJbnRlZ3JhbFR5
cGU+Ojp2YWx1ZSwgIiIpOworICAgIEludGVncmFsVHlwZSByZXN1bHQgeyB9OworICAgIG1lbWNw
eSgmcmVzdWx0LCBwb2ludGVyLCBzaXplb2YoSW50ZWdyYWxUeXBlKSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPgoraW5saW5lIHZvaWQg
dW5hbGlnbmVkU3RvcmUodm9pZCogcG9pbnRlciwgSW50ZWdyYWxUeXBlIHZhbHVlKQoreworICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxJbnRlZ3JhbFR5cGU+Ojp2YWx1ZSB8fCBz
dGQ6OmlzX3BvaW50ZXI8SW50ZWdyYWxUeXBlPjo6dmFsdWUsICIiKTsKKyAgICBtZW1jcHkocG9p
bnRlciwgJnZhbHVlLCBzaXplb2YoSW50ZWdyYWxUeXBlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347455</attachid>
            <date>2018-08-19 01:21:51 -0700</date>
            <delta_ts>2018-08-19 12:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188716-20180819172150.patch</filename>
            <type>text/plain</type>
            <size>18399</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NDc0Y2MxNzI3NmFkNTYwY2Y4MjQxNTBmMGVmMWEwNjc2NjVmMTVlLi43YWY1NzVmOWFjYjU0MDY5
NDZjYmY5NTkzNjRjZjliNjExNDllNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOC0wOC0xOSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXVEZdIEFkZCBXVEY6OnVuYWxpZ25lZExvYWQgYW5kIFdU
Rjo6dW5hbGlnbmVkU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4ODcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBXVEY6OnVuYWxpZ25lZExvYWQgYW5kIFdURjo6dW5hbGlnbmVkU3RvcmUg
dG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yLgorICAgICAgICBUaGUgY29tcGlsZXIgY2FuIGVt
aXQgYXBwcm9wcmlhdGUgbW92IG9wZXJhdGlvbnMgaW4geDg2IGV2ZW4gaWYgd2UgdXNlIHRoZXNl
CisgICAgICAgIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQXNzZW1i
bGVyQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXI6
OnB1dEludGVncmFsVW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpw
dXRJbnRlZ3JhbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6cHV0SW50ZWdyYWxV
bmNoZWNrZWQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVhZENhbGxUYXJnZXQpOgorICAgICAgICAq
IGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjps
aW5rSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVhZFBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSGx0KToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnNldFBvaW50ZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnNldEludDMyKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzZXRJbnQ4KToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dE9wY29kZUlEKTogRW1iZWRkZWQgb3Bjb2RlIG1heSBiZSBtaXNhbGlnbmVkLiBBY3R1YWxseSBV
QlNhbiBkZXRlY3RzIG1pc2FsaWduZWQgYWNjZXNzZXMgaGVyZS4KKwogMjAxOC0wOC0xNyAgU2Fh
bSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBpbnRlcnNlY3Rpb25PZlBh
c3RWYWx1ZXNBdEhlYWQgbXVzdCBmaWx0ZXIgdmFsdWVzIGFmdGVyIHRoZXkndmUgb2JzZXJ2ZWQg
YW4gaW52YWxpZGF0aW9uIHBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY2OGU5YjgxYmU1OTQ4YmRmNDA4M2ZmMzY1M2Q1
N2Y0NDJlNGQ1MTAuLmM0ZGMwMjBkN2I1MmRmMDIwOTgyNGE5NmY1ZTdkZjgzNDI1Mzc2MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTgtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1
a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgV1RGOjp1bmFsaWduZWRMb2Fk
IGFuZCBXVEY6OnVuYWxpZ25lZFN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODg3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGlsZSBzb21lIENQVXMgYWxsb3cgdW5hbGlnbmVkIGFjY2Vzc2Vz
IHRvIG1lbW9yeSwgZG9pbmcgaXQgaW4gQysrIHdpdGggYHJlaW50ZXJwcmV0X2Nhc3Q8PmAgaXMK
KyAgICAgICAgdW5kZWZpbmVkIGJlaGF2aW9yLiBUaGlzIHBhdGNoIGFkZHMgV1RGOjp7dW5hbGln
bmVkTG9hZCx1bmFsaWduZWRTdG9yZX0gaGVscGVyIGZ1bmN0aW9ucywgd2hpY2gKKyAgICAgICAg
Y2FuIGxvYWQgZnJvbSBhbmQgc3RvcmUgdG8gdGhlIHBvaW50ZXIgaW4gYW4gdW5hbGlnbmVkIG1h
bm5lci4KKyAgICAgICAgQWN0dWFsIGltcGxlbWVudGF0aW9uIHVzZXMgYG1lbWNweWAuIFRoaXMg
Y2FuIGJlIG9wdGltaXplZCB0byBkaXJlY3QgdW5hbGlnbmVkIGFjY2VzcyBvcGVyYXRpb25zCisg
ICAgICAgIGluIHN1cHBvcnRlZCBDUFVzIGxpa2UgeDg2LiBFdmVuIHRob3VnaCBhIENQVSBkb2Vz
IG5vdCBzdXBwb3J0IHVuYWxpZ25lZCBhY2Nlc3NlcywgbWVtY3B5IGlzIHN0aWxsCisgICAgICAg
IHNhZmUgYW5kIHRoZSBjb21waWxlciBlbWl0cyBhcHByb3ByaWF0ZSBjb2RlLgorCisgICAgICAg
IFdlIG5hbWUgdGhlc2UgZnVuY3Rpb25zIGB1bmFsaWduZWRMb2FkYCBhbmQgYHVuYWxpZ25lZFN0
b3JlYCBpbnN0ZWFkIG9mIGBsb2FkVW5hbGlnbmVkYCBhbmQgYHN0b3JlVW5hbGlnbmVkYAorICAg
ICAgICBpbiBvcmRlciB0byBhbGlnbiB0aGVtIHRvIGBhdG9taWNMb2FkYCBhbmQgYGF0b21pY1N0
b3JlYC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvVW5hbGlnbmVkQWNjZXNzLmg6
IEFkZGVkLgorICAgICAgICAoV1RGOjp1bmFsaWduZWRMb2FkKToKKyAgICAgICAgKFdURjo6dW5h
bGlnbmVkU3RvcmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oOgorICAgICAg
ICAoV1RGOjplcXVhbCk6CisgICAgICAgIChXVEY6OmxvYWRVbmFsaWduZWQpOiBEZWxldGVkLgor
CiAyMDE4LTA4LTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgV1RGJ3MgaW50ZXJuYWwgc3RkOjpvcHRpb25hbCBpbXBsZW1lbnRhdGlvbiBzaG91bGQgcmVs
ZWFzZSBhc3NlcnQgb24gYWxsIGJhZCBhY2Nlc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKaW5kZXggNzM0MDk1MmQ1M2M0ZjVkNGY1
ODg1NWZlYWM3NTExMzI0ZTVlZjlkZC4uNTRiMmU5YjFlYjE2MmUwM2I5YTFlMzdlOWU0MzE2MWVl
MGNiMWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3Nl
bWJsZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5hbGlnbmVkQWNjZXNzLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0yMzksNyArMjQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB2b2lk
IHB1dEludGVncmFsVW5jaGVja2VkKEludGVncmFsVHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQobV9pbmRleCArIHNpemVvZihJbnRlZ3JhbFR5cGUpIDw9
IG1fYnVmZmVyLm1fc3RvcmFnZS5jYXBhY2l0eSgpKTsKLSAgICAgICAgICAgICAgICAqcmVpbnRl
cnByZXRfY2FzdF9wdHI8SW50ZWdyYWxUeXBlKj4obV9zdG9yYWdlQnVmZmVyICsgbV9pbmRleCkg
PSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBXVEY6OnVuYWxpZ25lZFN0b3JlPEludGVncmFsVHlw
ZT4obV9zdG9yYWdlQnVmZmVyICsgbV9pbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIG1f
aW5kZXggKz0gc2l6ZW9mKEludGVncmFsVHlwZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBBc3NlbWJsZXJCdWZmZXImIG1fYnVmZmVyOwpAQCAtMjU4LDE2ICsyNTksMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBuZXh0SW5kZXggPSBtX2luZGV4ICsgc2l6
ZW9mKEludGVncmFsVHlwZSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobmV4dEluZGV4ID4g
bV9zdG9yYWdlLmNhcGFjaXR5KCkpKQogICAgICAgICAgICAgICAgIG91dE9mTGluZUdyb3coKTsK
LSAgICAgICAgICAgIEFTU0VSVChpc0F2YWlsYWJsZShzaXplb2YoSW50ZWdyYWxUeXBlKSkpOwot
ICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPEludGVncmFsVHlwZSo+KG1fc3RvcmFn
ZS5idWZmZXIoKSArIG1faW5kZXgpID0gdmFsdWU7Ci0gICAgICAgICAgICBtX2luZGV4ID0gbmV4
dEluZGV4OworICAgICAgICAgICAgcHV0SW50ZWdyYWxVbmNoZWNrZWQ8SW50ZWdyYWxUeXBlPih2
YWx1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5
cGU+CiAgICAgICAgIHZvaWQgcHV0SW50ZWdyYWxVbmNoZWNrZWQoSW50ZWdyYWxUeXBlIHZhbHVl
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNBdmFpbGFibGUoc2l6ZW9mKEludGVn
cmFsVHlwZSkpKTsKLSAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0X3B0cjxJbnRlZ3JhbFR5
cGUqPihtX3N0b3JhZ2UuYnVmZmVyKCkgKyBtX2luZGV4KSA9IHZhbHVlOworICAgICAgICAgICAg
V1RGOjp1bmFsaWduZWRTdG9yZTxJbnRlZ3JhbFR5cGU+KG1fc3RvcmFnZS5idWZmZXIoKSArIG1f
aW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgIG1faW5kZXggKz0gc2l6ZW9mKEludGVncmFsVHlw
ZSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Ni5oCmluZGV4IDhiYzAyM2Q1NzFhMDZhZTZmNjE0MDg3YmY5YjBk
YzI0ZjcxOWVkOTYuLjcyZGVmNzJjNmI0YjcxODg5MDk2OTNhYzVmMWZhMGJjYmFhZDQzOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2LmgKQEAgLTMwMiw3ICszMDIsNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NiA6IHB1Ymxp
YyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHJlc3VsdFRh
ZywgUHRyVGFnIGxvY2F0aW9uVGFnPgogICAgIHN0YXRpYyBGdW5jdGlvblB0cjxyZXN1bHRUYWc+
IHJlYWRDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkNhbGw8bG9jYXRpb25UYWc+IGNhbGwpCiAgICAg
ewotICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihj
YWxsLmRhdGFMb2NhdGlvbigpKVstMV07CisgICAgICAgIGludHB0cl90IG9mZnNldCA9IFdURjo6
dW5hbGlnbmVkTG9hZDxpbnQzMl90PihiaXR3aXNlX2Nhc3Q8aW50MzJfdCo+KGNhbGwuZGF0YUxv
Y2F0aW9uKCkpIC0gMSk7CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cjxyZXN1bHRUYWc+KHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYWxsLmRh
dGFMb2NhdGlvbigpKSArIG9mZnNldCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggZjNhNDA4M2MxMjFkNTcxODg2ZmRl
YzFkMDkxOWVhYWM5ZWMwYjg0MS4uMmY1ZDBjMjZkZTZlNDUzMWQ0YTFhMjBiZWMzNDljMzc1MTE4
NDcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCkBAIC0zNjgwLDcgKzM2ODAsNyBAQCBjbGFzcyBYODZBc3NlbWJsZXIgewogICAgICAgICBB
U1NFUlQodG8uaXNTZXQoKSk7CiAKICAgICAgICAgY2hhciogY29kZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KG1fZm9ybWF0dGVyLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVCghcmVpbnRlcnBy
ZXRfY2FzdDxpbnQzMl90Kj4oY29kZSArIGZyb20ubV9vZmZzZXQpWy0xXSk7CisgICAgICAgIEFT
U0VSVCghV1RGOjp1bmFsaWduZWRMb2FkPGludDMyX3Q+KGJpdHdpc2VfY2FzdDxpbnQzMl90Kj4o
Y29kZSArIGZyb20ubV9vZmZzZXQpIC0gMSkpOwogICAgICAgICBzZXRSZWwzMihjb2RlICsgZnJv
bS5tX29mZnNldCwgY29kZSArIHRvLm1fb2Zmc2V0KTsKICAgICB9CiAgICAgCkBAIC0zNzM5LDIy
ICszNzM5LDIxIEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAgICAgCiAgICAgc3RhdGljIHZvaWQq
IHJlYWRQb2ludGVyKHZvaWQqIHdoZXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPih3aGVyZSlbLTFdOworICAgICAgICByZXR1cm4gV1RGOjp1bmFsaWdu
ZWRMb2FkPHZvaWQqPihiaXR3aXNlX2Nhc3Q8dm9pZCoqPih3aGVyZSkgLSAxKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEhsdCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQog
ICAgIHsKLSAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
aW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgIHB0clswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KE9QX0hMVCk7CisgICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8dWludDhfdD4oaW5zdHJ1Y3Rp
b25TdGFydCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oT1BfSExUKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRv
KQogICAgIHsKLSAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgIHVpbnQ4X3QqIGRzdFB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KHRvKTsKKyAgICAgICAgdWludDhfdCogcHRyID0gYml0d2lzZV9j
YXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgdWludDhfdCogZHN0UHRy
ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0byk7CiAgICAgICAgIGludHB0cl90IGRpc3RhbmNl
ID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOwotICAgICAgICBwdHJbMF0gPSBzdGF0
aWNfY2FzdDx1aW50OF90PihPUF9KTVBfcmVsMzIpOwotICAgICAgICAqcmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90Kj4ocHRyICsgMSkgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkaXN0YW5jZSk7Cisg
ICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8dWludDhfdD4ocHRyLCBPUF9KTVBfcmVsMzIpOwor
ICAgICAgICBXVEY6OnVuYWxpZ25lZFN0b3JlPHVpbnQzMl90PihwdHIgKyAxLCBkaXN0YW5jZSk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSgpCkBAIC0zOTU2LDE3ICszOTU1LDE3IEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAKICAgICBz
dGF0aWMgdm9pZCBzZXRQb2ludGVyKHZvaWQqIHdoZXJlLCB2b2lkKiB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih3aGVyZSlbLTFdID0gdmFsdWU7CisgICAg
ICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8dm9pZCo+KGJpdHdpc2VfY2FzdDx2b2lkKio+KHdoZXJl
KSAtIDEsIHZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBzZXRJbnQzMih2b2lkKiB3
aGVyZSwgaW50MzJfdCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdCo+KHdoZXJlKVstMV0gPSB2YWx1ZTsKKyAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTxp
bnQzMl90PihiaXR3aXNlX2Nhc3Q8aW50MzJfdCo+KHdoZXJlKSAtIDEsIHZhbHVlKTsKICAgICB9
CiAgICAgCiAgICAgc3RhdGljIHZvaWQgc2V0SW50OCh2b2lkKiB3aGVyZSwgaW50OF90IHZhbHVl
KQogICAgIHsKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih3aGVyZSlbLTFdID0g
dmFsdWU7CisgICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8aW50OF90PihiaXR3aXNlX2Nhc3Q8
aW50OF90Kj4od2hlcmUpIC0gMSwgdmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNl
dFJlbDMyKHZvaWQqIGZyb20sIHZvaWQqIHRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCmluZGV4IGZjODlhMTg5ZDYw
NTdkOGU0ZTBhYjEwYTg3OTFmODU2YjQ5ZjkwNzEuLjQxYTQ1NTFhNjdkOWRmNTRjZDdjYzkxZWE1
MjMwNjI1OTk2YTVjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9VbmFsaWduZWRBY2Nlc3MuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTUxLDcgKzUyLDcgQEAgaW5saW5lIE9wY29kZUlEIEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgIC8vIGluIExvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwKS4KICAgICBhdXRvIGNvZGVQdHIgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Qnl0ZWNv
ZGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Mob3Bjb2RlKTsKICAgICBpbnQz
Ml90KiBvcGNvZGVJREFkZHJlc3MgPSBjb2RlUHRyLmRhdGFMb2NhdGlvbjxpbnQzMl90Kj4oKSAt
IDE7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oKm9wY29k
ZUlEQWRkcmVzcyk7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBzdGF0aWNfY2FzdDxPcGNvZGVJ
RD4oV1RGOjp1bmFsaWduZWRMb2FkPGludDMyX3Q+KG9wY29kZUlEQWRkcmVzcykpOwogICAgIEFT
U0VSVChvcGNvZGVJRCA8IE5VTUJFUl9PRl9CWVRFQ09ERV9JRFMpOwogICAgIHJldHVybiBvcGNv
ZGVJRDsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3MDQzMzhhNTI0ZDA3NGE3M2UyODI0Y2ZjZTI2YTEwNjdlOGQyYTNlLi40NWI1Y2VhZWNmMGUw
MmVjNWQ2NTE2Nzc4NzY3NWM2ODlkMzUyNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYyMyw2ICs2MjMsOCBAQAogCQlFMzExRkIxNjFGMEE1NjhCMDAz
QzA4REUgLyogVGhyZWFkR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGhyZWFkR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjQxRTlB
NTM2RDAwM0I1OUQyIC8qIFBsYXRmb3JtUmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVnaXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzM0Q1Rjg3MUZCRUQ2NjcwMEJGNjI1RSAvKiBSZWN1cnNhYmxlTGFtYmRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3Vyc2FibGVMYW1iZGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8qIFVuYWxp
Z25lZEFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmFsaWduZWRB
Y2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MEM3NjUyMTI3Qjg1QzAw
QzkwRjBFIC8qIFVuZXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VW5leHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4ODg2RDIwQzkw
OTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM4ODg4NkUyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVVRpbWVDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE3LDYgKzExMTksOCBAQAogCQkJCTBGRUQ2N0I1MUIy
MkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAw
MEE0MzMxIC8qIFRyaVN0YXRlLmggKi8sCiAJCQkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8q
IFR5cGVDYXN0cy5oICovLAorCQkJCUUzNjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWdu
ZWRBY2Nlc3MuaCAqLywKKwkJCQlFMzYwQzc2NTIxMjdCODVDMDBDOTBGMEUgLyogVW5leHBlY3Rl
ZC5oICovLAogCQkJCUE4QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywK
IAkJCQlFMzAwRTUyMTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1
QzdDODhEMzFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDk3OThiOWI4YTEwNTg1ZjM0ZjA3OTJjOWEzMTQ5ZTA5YzM4Y2U5NjQuLjlhZGI1
NTU0M2QwMTNmZWE5YWY1YTdhYWU0OTQzMmY5NWYzMjQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CkBAIC0yNDAsNiArMjQwLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFRyaVN0YXRl
LmgKICAgICBUeXBlQ2FzdHMuaAogICAgIFVVSUQuaAorICAgIFVuYWxpZ25lZEFjY2Vzcy5oCiAg
ICAgVW5leHBlY3RlZC5oCiAgICAgVW5pU3RkRXh0cmFzLmgKICAgICBVbmlvbkZpbmQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5hbGlnbmVkQWNjZXNzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9VbmFsaWduZWRBY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTM3YjRlZWMxYWQyMTI0YTM1YzgzYzZi
YzBlY2I4ZWRjYTY1MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVW5hbGln
bmVkQWNjZXNzLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZ
dXN1a2UgU3V6dWtpIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50
ZWdyYWxUeXBlPgoraW5saW5lIEludGVncmFsVHlwZSB1bmFsaWduZWRMb2FkKGNvbnN0IHZvaWQq
IHBvaW50ZXIpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPEludGVncmFs
VHlwZT46OnZhbHVlIHx8IHN0ZDo6aXNfcG9pbnRlcjxJbnRlZ3JhbFR5cGU+Ojp2YWx1ZSwgIiIp
OworICAgIEludGVncmFsVHlwZSByZXN1bHQgeyB9OworICAgIG1lbWNweSgmcmVzdWx0LCBwb2lu
dGVyLCBzaXplb2YoSW50ZWdyYWxUeXBlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPgoraW5saW5lIHZvaWQgdW5hbGlnbmVkU3RvcmUo
dm9pZCogcG9pbnRlciwgSW50ZWdyYWxUeXBlIHZhbHVlKQoreworICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19pbnRlZ3JhbDxJbnRlZ3JhbFR5cGU+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3BvaW50ZXI8
SW50ZWdyYWxUeXBlPjo6dmFsdWUsICIiKTsKKyAgICBtZW1jcHkocG9pbnRlciwgJnZhbHVlLCBz
aXplb2YoSW50ZWdyYWxUeXBlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggNWE0OWY4YzU1YTI2NjYxNjBhNGZjNzdkMDM3MzljM2U0
ZGI4MTQ3Ny4uNjg4MzQ2ODY2ZjNmMGM0ZDZjODY2NWZmYTc4NDAxZDc2MmI0NTRkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8dW5p
Y29kZS91Y2hhci5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3Rm
L05vdEZvdW5kLmg+CisjaW5jbHVkZSA8d3RmL1VuYWxpZ25lZEFjY2Vzcy5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIApAQCAtNDgsMTkgKzQ5LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xh
c3MsIHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2EKIGJv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogdGVt
cGxhdGU8dW5zaWduZWQgbG93ZXJjYXNlTGV0dGVyc0xlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBjaGFyKiwgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRl
cnMpW2xvd2VyY2FzZUxldHRlcnNMZW5ndGhdKTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlu
bGluZSBUIGxvYWRVbmFsaWduZWQoY29uc3QgY2hhciogcykKLXsKLSNpZiBDT01QSUxFUihDTEFO
RykKLSAgICBUIHRtcDsKLSAgICBtZW1jcHkoJnRtcCwgcywgc2l6ZW9mKFQpKTsKLSAgICByZXR1
cm4gdG1wOwotI2Vsc2UKLSAgICAvLyBUaGlzIG1heSByZXN1bHQgaW4gdW5kZWZpbmVkIGJlaGF2
aW9yIGR1ZSB0byB1bmFsaWduZWQgYWNjZXNzLgotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBUKj4ocyk7Ci0jZW5kaWYKLX0KLQogLy8gRG8gY29tcGFyaXNvbnMgOCBvciA0IGJ5
dGVzLWF0LWEtdGltZSBvbiBhcmNoaXRlY3R1cmVzIHdoZXJlIGl0J3Mgc2FmZS4KICNpZiAoQ1BV
KFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSkgJiYgIUFTQU5fRU5BQkxFRAogQUxXQVlTX0lOTElORSBi
b29sIGVxdWFsKGNvbnN0IExDaGFyKiBhTENoYXIsIGNvbnN0IExDaGFyKiBiTENoYXIsIHVuc2ln
bmVkIGxlbmd0aCkKQEAgLTcyLDcgKzYwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNv
bnN0IExDaGFyKiBhTENoYXIsIGNvbnN0IExDaGFyKiBiTENoYXIsIHVuc2lnbmVkIGxlbmcKIAog
ICAgIGlmIChkd29yZExlbmd0aCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9
IGR3b3JkTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChsb2FkVW5hbGlnbmVkPHVpbnQ2
NF90PihhKSAhPSBsb2FkVW5hbGlnbmVkPHVpbnQ2NF90PihiKSkKKyAgICAgICAgICAgIGlmICh1
bmFsaWduZWRMb2FkPHVpbnQ2NF90PihhKSAhPSB1bmFsaWduZWRMb2FkPHVpbnQ2NF90PihiKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIGEgKz0gc2l6ZW9m
KHVpbnQ2NF90KTsKQEAgLTgxLDcgKzY5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNv
bnN0IExDaGFyKiBhTENoYXIsIGNvbnN0IExDaGFyKiBiTENoYXIsIHVuc2lnbmVkIGxlbmcKICAg
ICB9CiAKICAgICBpZiAobGVuZ3RoICYgNCkgewotICAgICAgICBpZiAobG9hZFVuYWxpZ25lZDx1
aW50MzJfdD4oYSkgIT0gbG9hZFVuYWxpZ25lZDx1aW50MzJfdD4oYikpCisgICAgICAgIGlmICh1
bmFsaWduZWRMb2FkPHVpbnQzMl90PihhKSAhPSB1bmFsaWduZWRMb2FkPHVpbnQzMl90PihiKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBhICs9IHNpemVvZih1aW50MzJf
dCk7CkBAIC04OSw3ICs3Nyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25zdCBMQ2hh
ciogYUxDaGFyLCBjb25zdCBMQ2hhciogYkxDaGFyLCB1bnNpZ25lZCBsZW5nCiAgICAgfQogCiAg
ICAgaWYgKGxlbmd0aCAmIDIpIHsKLSAgICAgICAgaWYgKGxvYWRVbmFsaWduZWQ8dWludDE2X3Q+
KGEpICE9IGxvYWRVbmFsaWduZWQ8dWludDE2X3Q+KGIpKQorICAgICAgICBpZiAodW5hbGlnbmVk
TG9hZDx1aW50MTZfdD4oYSkgIT0gdW5hbGlnbmVkTG9hZDx1aW50MTZfdD4oYikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYSArPSBzaXplb2YodWludDE2X3QpOwpAQCAt
MTExLDcgKzk5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNvbnN0IFVDaGFyKiBhVUNo
YXIsIGNvbnN0IFVDaGFyKiBiVUNoYXIsIHVuc2lnbmVkIGxlbmcKIAogICAgIGlmIChkd29yZExl
bmd0aCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGR3b3JkTGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmIChsb2FkVW5hbGlnbmVkPHVpbnQ2NF90PihhKSAhPSBsb2Fk
VW5hbGlnbmVkPHVpbnQ2NF90PihiKSkKKyAgICAgICAgICAgIGlmICh1bmFsaWduZWRMb2FkPHVp
bnQ2NF90PihhKSAhPSB1bmFsaWduZWRMb2FkPHVpbnQ2NF90PihiKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIGEgKz0gc2l6ZW9mKHVpbnQ2NF90KTsKQEAg
LTEyMCw3ICsxMDgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3QgVUNoYXIqIGFV
Q2hhciwgY29uc3QgVUNoYXIqIGJVQ2hhciwgdW5zaWduZWQgbGVuZwogICAgIH0KIAogICAgIGlm
IChsZW5ndGggJiAyKSB7Ci0gICAgICAgIGlmIChsb2FkVW5hbGlnbmVkPHVpbnQzMl90PihhKSAh
PSBsb2FkVW5hbGlnbmVkPHVpbnQzMl90PihiKSkKKyAgICAgICAgaWYgKHVuYWxpZ25lZExvYWQ8
dWludDMyX3Q+KGEpICE9IHVuYWxpZ25lZExvYWQ8dWludDMyX3Q+KGIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGEgKz0gc2l6ZW9mKHVpbnQzMl90KTsKQEAgLTE0MCw3
ICsxMjgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3QgTENoYXIqIGFMQ2hhciwg
Y29uc3QgTENoYXIqIGJMQ2hhciwgdW5zaWduZWQgbGVuZwogCiAgICAgdW5zaWduZWQgd29yZExl
bmd0aCA9IGxlbmd0aCA+PiAyOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gd29yZExl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChsb2FkVW5hbGlnbmVkPHVpbnQzMl90PihhKSAhPSBs
b2FkVW5hbGlnbmVkPHVpbnQzMl90PihiKSkKKyAgICAgICAgaWYgKHVuYWxpZ25lZExvYWQ8dWlu
dDMyX3Q+KGEpICE9IHVuYWxpZ25lZExvYWQ8dWludDMyX3Q+KGIpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBhICs9IHNpemVvZih1aW50MzJfdCk7CiAgICAgICAgIGIgKz0g
c2l6ZW9mKHVpbnQzMl90KTsKQEAgLTE2OCw3ICsxNTYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
ZXF1YWwoY29uc3QgVUNoYXIqIGFVQ2hhciwgY29uc3QgVUNoYXIqIGJVQ2hhciwgdW5zaWduZWQg
bGVuZwogCiAgICAgdW5zaWduZWQgd29yZExlbmd0aCA9IGxlbmd0aCA+PiAxOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgIT0gd29yZExlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChsb2Fk
VW5hbGlnbmVkPHVpbnQzMl90PihhKSAhPSBsb2FkVW5hbGlnbmVkPHVpbnQzMl90PihiKSkKKyAg
ICAgICAgaWYgKHVuYWxpZ25lZExvYWQ8dWludDMyX3Q+KGEpICE9IHVuYWxpZ25lZExvYWQ8dWlu
dDMyX3Q+KGIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBhICs9IHNpemVv
Zih1aW50MzJfdCk7CiAgICAgICAgIGIgKz0gc2l6ZW9mKHVpbnQzMl90KTsK
</data>
<flag name="review"
          id="365236"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>