<?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>167736</bug_id>
          
          <creation_ts>2017-02-02 09:05:20 -0800</creation_ts>
          <short_desc>[JSC] Add operationToInt32SensibleSlow to optimize kraken pbkdf2 and sha256</short_desc>
          <delta_ts>2017-02-04 13:22:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1272478</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-02 09:05:20 -0800</bug_when>
    <thetext>[JSC] Add operationToInt32Fallback to optimize kraken pbkdf2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272481</commentid>
    <comment_count>1</comment_count>
      <attachid>300414</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-02 09:13:11 -0800</bug_when>
    <thetext>Created attachment 300414
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272482</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-02 09:13:44 -0800</bug_when>
    <thetext>Still considering about the edge cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272484</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-02 09:15:52 -0800</bug_when>
    <thetext>CAUTION: Currently, this is only valid in x64 (sensible double to int32 case in DFG and FTL). And still I&apos;m now considering about edge cases.
BTW, the latest ARM64 has super fast double to int32 operation. If this instruction becomes available, we can optimize this in ARM64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272490</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-02 09:34:39 -0800</bug_when>
    <thetext>Pf course, later, we should make DFG prediction better not to emit ValueToInt32 in such a case.
But I think optimizing this sensitive double to int32 is worth doing.

Note that kraken pbkdf2 consumes 1/3 time for operationToInt32. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272504</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-02 10:13:08 -0800</bug_when>
    <thetext>This also improves kraken sha256 iterative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272547</commentid>
    <comment_count>6</comment_count>
      <attachid>300414</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-02 11:17:13 -0800</bug_when>
    <thetext>Comment on attachment 300414
Patch

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

&gt; Source/JavaScriptCore/runtime/MathCommon.cpp:481
&gt; +    // If exponent &lt; 0 there will be no bits to the left of the decimal point
&gt; +    // after rounding; if the exponent is &gt; 83 then no bits of precision can be
&gt; +    // left in the low 32-bit range of the result (IEEE-754 doubles have 52 bits
&gt; +    // of fractional precision).
&gt; +    // Note this case handles 0, -0, and all infinite, NaN, &amp; denormal value.
&gt; +    if (exp &lt; 0 || exp &gt; 83)
&gt; +        return 0;

And I think this check is also unnecessary.
1. If exp &lt; 0, truncate should succeed.
2. If exp &gt; 83 (exp &gt;= 84), the following code produces 0 as a result. (exp &gt; 52, so static_cast&lt;int32_t&gt;(bits &lt;&lt; (84 - 52)) -&gt; 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272879</commentid>
    <comment_count>7</comment_count>
      <attachid>300518</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-03 05:09:23 -0800</bug_when>
    <thetext>Created attachment 300518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273209</commentid>
    <comment_count>8</comment_count>
      <attachid>300518</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-04 01:12:49 -0800</bug_when>
    <thetext>Comment on attachment 300518
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:63
&gt; +            1ff:   66 48 0f 7e c0          movq   %xmm0,%rax

I wonder why this doesn&apos;t do a mov rdx, rax

&gt; Source/JavaScriptCore/runtime/MathCommon.cpp:470
&gt; +int32_t JIT_OPERATION operationToInt32SensibleSlow(double number)

IEE754 is fun</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273235</commentid>
    <comment_count>9</comment_count>
      <attachid>300518</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-04 05:46:14 -0800</bug_when>
    <thetext>Comment on attachment 300518
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:63
&gt;&gt; +            1ff:   66 48 0f 7e c0          movq   %xmm0,%rax
&gt; 
&gt; I wonder why this doesn&apos;t do a mov rdx, rax

Yeah, that&apos;s storage. But it&apos;s due to the GCC6&apos;s decision.

&gt;&gt; Source/JavaScriptCore/runtime/MathCommon.cpp:470
&gt;&gt; +int32_t JIT_OPERATION operationToInt32SensibleSlow(double number)
&gt; 
&gt; IEE754 is fun

Yeah :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273236</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-04 05:47:51 -0800</bug_when>
    <thetext>Committed r211670: &lt;http://trac.webkit.org/changeset/211670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273281</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-04 13:16:37 -0800</bug_when>
    <thetext>I&apos;ve confirmed that this is a 1-1.5% progression on Mac Kraken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273282</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-04 13:22:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/30364482&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300414</attachid>
            <date>2017-02-02 09:13:11 -0800</date>
            <delta_ts>2017-02-03 05:09:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167736-20170203021055.patch</filename>
            <type>text/plain</type>
            <size>10951</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OWUwZDlmMzkwNjZkYjJkYjlkYjJhMDgyOTgzY2UwODdiYTUyYjMzLi5mNWQxYWQxNjc5OTI0NjZk
YTg3NmYwOWE2MmNmYzk5Y2E3YjFhOTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTctMDItMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIG9wZXJhdGlvblRvSW50MzJGYWxsYmFjayB0byBv
cHRpbWl6ZSBrcmFrZW4gcGJrZGYyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjc3MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBuZXcgZnVuY3Rpb24gb3BlcmF0aW9uVG9JbnQzMkZhbGxiYWNr
LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkKKyAgICAgICAgY2FsbGVkIGFmdGVyIHg4NiBjdnR0c3My
c2lfcnIgaXMgZmFpbGVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlCisgICAgICAgIGdpdmVuIGRvdWJs
ZSBudW1iZXIgbmV2ZXIgaW4gcmFuZ2Ugb2YgaW50MzIgdHJ1bmNhdGFibGUgbnVtYmVycy4KKwor
ICAgICAgICBBcyBhIHJlc3VsdCwgZXhwIGluIG9wZXJhdGlvblRvSW50MzIgYWx3YXlzIGJlY29t
ZXMgPj0gMzEuIFNvCisgICAgICAgIHdlIGNhbiBjaGFuZ2UgdGhlIGNvbmRpdGlvbiBmcm9tIGBl
eHAgPCAzMmAgdG8gYGV4cCA9PSAzMWAuCisgICAgICAgIFRoaXMgbWFrZXMgbWlzc2luZ09uZSBj
b25zdGFudC4gQW5kIGl0IGxlYWRzIHNpZ25pZmljYW50bHkgZ29vZAorICAgICAgICBjb2RlIGdl
bmVyYXRpb24uCisKKyAgICAgICAgVGhlIG9yaWdpbmFsIG9wZXJhdGlvblRvSW50MzIgY29kZS4K
KyAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAxNzAgPF9aTjNKU0MxNm9wZXJhdGlvblRvSW50MzJF
ZD46CisgICAgICAgICAgICAxNzA6ICAgNjYgNDggMGYgN2UgYzEgICAgICAgICAgbW92cSAgICV4
bW0wLCVyY3gKKyAgICAgICAgICAgIDE3NTogICAzMSBjMCAgICAgICAgICAgICAgICAgICB4b3Ig
ICAgJWVheCwlZWF4CisgICAgICAgICAgICAxNzc6ICAgNjYgNDggMGYgN2UgYzYgICAgICAgICAg
bW92cSAgICV4bW0wLCVyc2kKKyAgICAgICAgICAgIDE3YzogICA0OCBjMSBmOSAzNCAgICAgICAg
ICAgICBzYXIgICAgJDB4MzQsJXJjeAorICAgICAgICAgICAgMTgwOiAgIDgxIGUxIGZmIDA3IDAw
IDAwICAgICAgIGFuZCAgICAkMHg3ZmYsJWVjeAorICAgICAgICAgICAgMTg2OiAgIDhkIDkxIDAx
IGZjIGZmIGZmICAgICAgIGxlYSAgICAtMHgzZmYoJXJjeCksJWVkeAorICAgICAgICAgICAgMThj
OiAgIDgzIGZhIDUzICAgICAgICAgICAgICAgIGNtcCAgICAkMHg1MywlZWR4CisgICAgICAgICAg
ICAxOGY6ICAgNzcgMzcgICAgICAgICAgICAgICAgICAgamEgICAgIDFjOCA8X1pOM0pTQzE2b3Bl
cmF0aW9uVG9JbnQzMkVkKzB4NTg+CisgICAgICAgICAgICAxOTE6ICAgODMgZmEgMzQgICAgICAg
ICAgICAgICAgY21wICAgICQweDM0LCVlZHgKKyAgICAgICAgICAgIDE5NDogICA3ZiAzYSAgICAg
ICAgICAgICAgICAgICBqZyAgICAgMWQwIDxfWk4zSlNDMTZvcGVyYXRpb25Ub0ludDMyRWQrMHg2
MD4KKyAgICAgICAgICAgIDE5NjogICBiOSAzNCAwMCAwMCAwMCAgICAgICAgICBtb3YgICAgJDB4
MzQsJWVjeAorICAgICAgICAgICAgMTliOiAgIDY2IDQ4IDBmIDdlIGM3ICAgICAgICAgIG1vdnEg
ICAleG1tMCwlcmRpCisgICAgICAgICAgICAxYTA6ICAgMjkgZDEgICAgICAgICAgICAgICAgICAg
c3ViICAgICVlZHgsJWVjeAorICAgICAgICAgICAgMWEyOiAgIDQ4IGQzIGZmICAgICAgICAgICAg
ICAgIHNhciAgICAlY2wsJXJkaQorICAgICAgICAgICAgMWE1OiAgIDgzIGZhIDFmICAgICAgICAg
ICAgICAgIGNtcCAgICAkMHgxZiwlZWR4CisgICAgICAgICAgICAxYTg6ICAgODkgZjggICAgICAg
ICAgICAgICAgICAgbW92ICAgICVlZGksJWVheAorICAgICAgICAgICAgMWFhOiAgIDdmIDEyICAg
ICAgICAgICAgICAgICAgIGpnICAgICAxYmUgPF9aTjNKU0MxNm9wZXJhdGlvblRvSW50MzJFZCsw
eDRlPgorICAgICAgICAgICAgMWFjOiAgIDg5IGQxICAgICAgICAgICAgICAgICAgIG1vdiAgICAl
ZWR4LCVlY3gKKyAgICAgICAgICAgIDFhZTogICBiOCAwMSAwMCAwMCAwMCAgICAgICAgICBtb3Yg
ICAgJDB4MSwlZWF4CisgICAgICAgICAgICAxYjM6ICAgZDMgZTAgICAgICAgICAgICAgICAgICAg
c2hsICAgICVjbCwlZWF4CisgICAgICAgICAgICAxYjU6ICAgODkgYzIgICAgICAgICAgICAgICAg
ICAgbW92ICAgICVlYXgsJWVkeAorICAgICAgICAgICAgMWI3OiAgIDhkIDQwIGZmICAgICAgICAg
ICAgICAgIGxlYSAgICAtMHgxKCVyYXgpLCVlYXgKKyAgICAgICAgICAgIDFiYTogICAyMSBmOCAg
ICAgICAgICAgICAgICAgICBhbmQgICAgJWVkaSwlZWF4CisgICAgICAgICAgICAxYmM6ICAgMDEg
ZDAgICAgICAgICAgICAgICAgICAgYWRkICAgICVlZHgsJWVheAorICAgICAgICAgICAgMWJlOiAg
IDg5IGMyICAgICAgICAgICAgICAgICAgIG1vdiAgICAlZWF4LCVlZHgKKyAgICAgICAgICAgIDFj
MDogICBmNyBkYSAgICAgICAgICAgICAgICAgICBuZWcgICAgJWVkeAorICAgICAgICAgICAgMWMy
OiAgIDQ4IDg1IGY2ICAgICAgICAgICAgICAgIHRlc3QgICAlcnNpLCVyc2kKKyAgICAgICAgICAg
IDFjNTogICAwZiA0OCBjMiAgICAgICAgICAgICAgICBjbW92cyAgJWVkeCwlZWF4CisgICAgICAg
ICAgICAxYzg6ICAgZjMgYzMgICAgICAgICAgICAgICAgICAgcmVweiByZXRxCisgICAgICAgICAg
ICAxY2E6ICAgNjYgMGYgMWYgNDQgMDAgMDAgICAgICAgbm9wdyAgIDB4MCglcmF4LCVyYXgsMSkK
KyAgICAgICAgICAgIDFkMDogICA2NiA0OCAwZiA3ZSBjMCAgICAgICAgICBtb3ZxICAgJXhtbTAs
JXJheAorICAgICAgICAgICAgMWQ1OiAgIDgxIGU5IDMzIDA0IDAwIDAwICAgICAgIHN1YiAgICAk
MHg0MzMsJWVjeAorICAgICAgICAgICAgMWRiOiAgIDQ4IGQzIGUwICAgICAgICAgICAgICAgIHNo
bCAgICAlY2wsJXJheAorICAgICAgICAgICAgMWRlOiAgIGViIGRlICAgICAgICAgICAgICAgICAg
IGptcCAgICAxYmUgPF9aTjNKU0MxNm9wZXJhdGlvblRvSW50MzJFZCsweDRlPgorCisgICAgICAg
IFRoZSBvcGVyYXRpb25Ub0ludDMyRmFsbGJhY2sgY29kZS4KKyAgICAgICAgICAgIDAwMDAwMDAw
MDAwMDAxZTAgPF9aTjNKU0MyNG9wZXJhdGlvblRvSW50MzJGYWxsYmFja0VkPjoKKyAgICAgICAg
ICAgIDFlMDogICA2NiA0OCAwZiA3ZSBjMSAgICAgICAgICBtb3ZxICAgJXhtbTAsJXJjeAorICAg
ICAgICAgICAgMWU1OiAgIDMxIGMwICAgICAgICAgICAgICAgICAgIHhvciAgICAlZWF4LCVlYXgK
KyAgICAgICAgICAgIDFlNzogICA2NiA0OCAwZiA3ZSBjMiAgICAgICAgICBtb3ZxICAgJXhtbTAs
JXJkeAorICAgICAgICAgICAgMWVjOiAgIDQ4IGMxIGY5IDM0ICAgICAgICAgICAgIHNhciAgICAk
MHgzNCwlcmN4CisgICAgICAgICAgICAxZjA6ICAgODEgZTEgZmYgMDcgMDAgMDAgICAgICAgYW5k
ICAgICQweDdmZiwlZWN4CisgICAgICAgICAgICAxZjY6ICAgOGQgYjEgMDEgZmMgZmYgZmYgICAg
ICAgbGVhICAgIC0weDNmZiglcmN4KSwlZXNpCisgICAgICAgICAgICAxZmM6ICAgODMgZmUgNTMg
ICAgICAgICAgICAgICAgY21wICAgICQweDUzLCVlc2kKKyAgICAgICAgICAgIDFmZjogICA3NyAy
YyAgICAgICAgICAgICAgICAgICBqYSAgICAgMjJkIDxfWk4zSlNDMjRvcGVyYXRpb25Ub0ludDMy
RmFsbGJhY2tFZCsweDRkPgorICAgICAgICAgICAgMjAxOiAgIDgzIGZlIDM0ICAgICAgICAgICAg
ICAgIGNtcCAgICAkMHgzNCwlZXNpCisgICAgICAgICAgICAyMDQ6ICAgN2YgMmEgICAgICAgICAg
ICAgICAgICAgamcgICAgIDIzMCA8X1pOM0pTQzI0b3BlcmF0aW9uVG9JbnQzMkZhbGxiYWNrRWQr
MHg1MD4KKyAgICAgICAgICAgIDIwNjogICBiOSAzNCAwMCAwMCAwMCAgICAgICAgICBtb3YgICAg
JDB4MzQsJWVjeAorICAgICAgICAgICAgMjBiOiAgIDY2IDQ4IDBmIDdlIGMwICAgICAgICAgIG1v
dnEgICAleG1tMCwlcmF4CisgICAgICAgICAgICAyMTA6ICAgMjkgZjEgICAgICAgICAgICAgICAg
ICAgc3ViICAgICVlc2ksJWVjeAorICAgICAgICAgICAgMjEyOiAgIDQ4IGQzIGY4ICAgICAgICAg
ICAgICAgIHNhciAgICAlY2wsJXJheAorICAgICAgICAgICAgMjE1OiAgIDg5IGMxICAgICAgICAg
ICAgICAgICAgIG1vdiAgICAlZWF4LCVlY3gKKyAgICAgICAgICAgIDIxNzogICA4MSBjOSAwMCAw
MCAwMCA4MCAgICAgICBvciAgICAgJDB4ODAwMDAwMDAsJWVjeAorICAgICAgICAgICAgMjFkOiAg
IDgzIGZlIDFmICAgICAgICAgICAgICAgIGNtcCAgICAkMHgxZiwlZXNpCisgICAgICAgICAgICAy
MjA6ICAgMGYgNDQgYzEgICAgICAgICAgICAgICAgY21vdmUgICVlY3gsJWVheAorICAgICAgICAg
ICAgMjIzOiAgIDg5IGMxICAgICAgICAgICAgICAgICAgIG1vdiAgICAlZWF4LCVlY3gKKyAgICAg
ICAgICAgIDIyNTogICBmNyBkOSAgICAgICAgICAgICAgICAgICBuZWcgICAgJWVjeAorICAgICAg
ICAgICAgMjI3OiAgIDQ4IDg1IGQyICAgICAgICAgICAgICAgIHRlc3QgICAlcmR4LCVyZHgKKyAg
ICAgICAgICAgIDIyYTogICAwZiA0OCBjMSAgICAgICAgICAgICAgICBjbW92cyAgJWVjeCwlZWF4
CisgICAgICAgICAgICAyMmQ6ICAgZjMgYzMgICAgICAgICAgICAgICAgICAgcmVweiByZXRxCisg
ICAgICAgICAgICAyMmY6ICAgOTAgICAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAyMzA6ICAgNjYgNDggMGYgN2UgYzAgICAgICAgICAgbW92cSAgICV4bW0wLCVyYXgKKyAgICAg
ICAgICAgIDIzNTogICA4MSBlOSAzMyAwNCAwMCAwMCAgICAgICBzdWIgICAgJDB4NDMzLCVlY3gK
KyAgICAgICAgICAgIDIzYjogICA0OCBkMyBlMCAgICAgICAgICAgICAgICBzaGwgICAgJWNsLCVy
YXgKKyAgICAgICAgICAgIDIzZTogICBlYiBlMyAgICAgICAgICAgICAgICAgICBqbXAgICAgMjIz
IDxfWk4zSlNDMjRvcGVyYXRpb25Ub0ludDMyRmFsbGJhY2tFZCsweDQzPgorCisgICAgICAgIFRo
aXMgaW1wcm92ZXMga3Jha2VuIHBia2RmMiAxMCUuCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgcGF0Y2hlZAor
CisgICAgICAgICAgICBzdGFuZm9yZC1jcnlwdG8tcGJrZGYyICAgICAgIDE0OS45ODMrLTMuMTY4
ICAgICAgXiAgICAgMTM2LjA3NCstMi41OTIgICAgICAgICBeIGRlZmluaXRlbHkgMS4xMDIyeCBm
YXN0ZXIKKworICAgICAgICAgICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAxNDkuOTgz
Ky0zLjE2OCAgICAgIF4gICAgIDEzNi4wNzQrLTIuNTkyICAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MTAyMnggZmFzdGVyCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6c2Vuc2libGVEb3VibGVUb0ludDMyKToKKyAgICAgICAgKiBydW50aW1l
L01hdGhDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25Ub0ludDMyRmFsbGJhY2sp
OgorICAgICAgICAqIHJ1bnRpbWUvTWF0aENvbW1vbi5oOgorCiAyMDE3LTAyLTAyICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCB1bnVzZWQg
bV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnkgZnJvbSBJbnRlcnByZXRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2NzFjMDYzNzdm
NGU5MGZjZjJlOTZiOWU3NzUwYjY0ZGI4MmQxNTYxLi5jNmNjMDZjNjg5NjY0YTA5NWE0NWI0NTUz
NjgzZTc4OWM3NGEzYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMjIwOCw3ICsyMjA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgZ3ByID0g
cmVzdWx0LmdwcigpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0lu
dGVnZXIgPSBtX2ppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENv
bXBpbGVyOjpCcmFuY2hJZlRydW5jYXRlRmFpbGVkKTsKICAgICAgICAgCi0gICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRoaXMs
IG9wZXJhdGlvblRvSW50MzIsIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05vdE5lZWRlZCwgZ3ByLCBmcHIpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywgb3BlcmF0aW9uVG9J
bnQzMkZhbGxiYWNrLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hl
Y2tOb3ROZWVkZWQsIGdwciwgZnByKSk7CiAgICAgICAgIAogICAgICAgICBpbnQzMlJlc3VsdChn
cHIsIG5vZGUpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNmRjYWY4NWIyZDI2MTEzYjNhZjdmMDI4YjAyMjU2
YzI4YjZiMGYyYy4uMDM0Y2M2NTA1NjhmYTE1MjYyZWFlYTc5OTdkYmEwN2RjNzk3NTVmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTE2
MTEsNyArMTE2MTEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0
aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigK
LSAgICAgICAgICAgIG1fb3V0LmNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25U
b0ludDMyKSwgZG91YmxlVmFsdWUpKTsKKyAgICAgICAgICAgIG1fb3V0LmNhbGwoSW50MzIsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub0ludDMyRmFsbGJhY2spLCBkb3VibGVWYWx1ZSkpOwog
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aENvbW1vbi5jcHAKaW5kZXggNmYxMTk3NTQxNTE3ODhmODNmNWFmZWQw
NWYzNGVlYmQxNTAyYzRjNS4uNTk0YzBhZWE3ZjllMzFkMzQ2NmU1ZTRkNTBlZmI3MzBjYzU1ZjYy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5jcHAKQEAg
LTQ2Nyw2ICs0NjcsNDkgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvSW50MzIo
ZG91YmxlIHZhbHVlKQogICAgIHJldHVybiBKU0M6OnRvSW50MzIodmFsdWUpOwogfQogCitpbnQz
Ml90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbnQzMkZhbGxiYWNrKGRvdWJsZSBudW1iZXIp
Cit7CisgICAgaW50NjRfdCBiaXRzID0gV1RGOjpiaXR3aXNlX2Nhc3Q8aW50NjRfdD4obnVtYmVy
KTsKKyAgICBpbnQzMl90IGV4cCA9IChzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzID4+IDUyKSAm
IDB4N2ZmKSAtIDB4M2ZmOworCisgICAgLy8gSWYgZXhwb25lbnQgPCAwIHRoZXJlIHdpbGwgYmUg
bm8gYml0cyB0byB0aGUgbGVmdCBvZiB0aGUgZGVjaW1hbCBwb2ludAorICAgIC8vIGFmdGVyIHJv
dW5kaW5nOyBpZiB0aGUgZXhwb25lbnQgaXMgPiA4MyB0aGVuIG5vIGJpdHMgb2YgcHJlY2lzaW9u
IGNhbiBiZQorICAgIC8vIGxlZnQgaW4gdGhlIGxvdyAzMi1iaXQgcmFuZ2Ugb2YgdGhlIHJlc3Vs
dCAoSUVFRS03NTQgZG91YmxlcyBoYXZlIDUyIGJpdHMKKyAgICAvLyBvZiBmcmFjdGlvbmFsIHBy
ZWNpc2lvbikuCisgICAgLy8gTm90ZSB0aGlzIGNhc2UgaGFuZGxlcyAwLCAtMCwgYW5kIGFsbCBp
bmZpbml0ZSwgTmFOLCAmIGRlbm9ybWFsIHZhbHVlLgorICAgIGlmIChleHAgPCAwIHx8IGV4cCA+
IDgzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUg
MzItYml0cyBmcm9tIHRoZSBmbG9hdGluZyBwb2ludCBtYW50aXNzYS4gSWYgdGhlCisgICAgLy8g
ZXhwb25lbnQgaXMgNTIgdGhlbiB0aGUgYml0cyB3ZSBuZWVkIHRvIHNlbGVjdCBhcmUgYWxyZWFk
eSBhbGlnbmVkIHRvIHRoZQorICAgIC8vIGxvd2VzdCBiaXRzIG9mIHRoZSA2NC1iaXQgaW50ZWdl
ciByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyLCBubyBuZWVkCisgICAgLy8gdG8gc2hpZnQu
IElmIHRoZSBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4gNTIgd2UgbmVlZCB0byBzaGlmdCB0aGUg
dmFsdWUKKyAgICAvLyBsZWZ0IGJ5IChleHAgLSA1MiksIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIHRo
YW4gNTIgd2UgbmVlZCB0byBzaGlmdCByaWdodAorICAgIC8vIGFjY29yZGluZ2x5LgorICAgIGlu
dDMyX3QgcmVzdWx0ID0gKGV4cCA+IDUyKQorICAgICAgICA/IHN0YXRpY19jYXN0PGludDMyX3Q+
KGJpdHMgPDwgKGV4cCAtIDUyKSkKKyAgICAgICAgOiBzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRz
ID4+ICg1MiAtIGV4cCkpOworCisgICAgLy8gSUVFRS03NTQgZG91YmxlIHByZWNpc2lvbiB2YWx1
ZXMgYXJlIHN0b3JlZCBvbWl0dGluZyBhbiBpbXBsaWNpdCAxIGJlZm9yZQorICAgIC8vIHRoZSBk
ZWNpbWFsIHBvaW50OyB3ZSBuZWVkIHRvIHJlaW5zZXJ0IHRoaXMgbm93LiBXZSBtYXkgYWxzbyB0
aGUgc2hpZnRlZAorICAgIC8vIGludmFsaWQgYml0cyBpbnRvIHRoZSByZXN1bHQgdGhhdCBhcmUg
bm90IGEgcGFydCBvZiB0aGUgbWFudGlzc2EgKHRoZSBzaWduCisgICAgLy8gYW5kIGV4cG9uZW50
IGJpdHMgZnJvbSB0aGUgZmxvYXRpbmdwb2ludCByZXByZXNlbnRhdGlvbik7IG1hc2sgdGhlc2Ug
b3V0LgorICAgIC8vCisgICAgLy8gVGhlIGltcG9ydGFudCBvYnNlcnZhdGlvbiBpcyB0aGF0IGV4
cCBpcyBhbHdheXMgbGFyZ2VyIHRoYW4gMzAuIFRoaXMKKyAgICAvLyBvcGVyYXRpb25Ub0ludDMy
RmFsbGJhY2sgaXMgb25seSBjYWxsZWQgd2hlbiBkb3VibGUgdG8gaW50MzIgdHJ1bmNhdGUgaXMK
KyAgICAvLyBmYWlsZWQuIElmIHRoZSBleHAgaXMgPD0gMzAsIHRoaXMgdHJ1bmNhdGUgc3VjY2Vl
ZHMuCisgICAgQVNTRVJUKGV4cCA+PSAzMSk7CisgICAgaWYgKGV4cCA9PSAzMSkgeworICAgICAg
ICBpbnQzMl90IG1pc3NpbmdPbmUgPSAxIDw8IGV4cDsKKyAgICAgICAgcmVzdWx0ICY9IChtaXNz
aW5nT25lIC0gMSk7CisgICAgICAgIHJlc3VsdCArPSBtaXNzaW5nT25lOworICAgIH0KKworICAg
IC8vIElmIHRoZSBpbnB1dCB2YWx1ZSB3YXMgbmVnYXRpdmUgKHdlIGNvdWxkIHRlc3QgZWl0aGVy
ICdudW1iZXInIG9yICdiaXRzJywKKyAgICAvLyBidXQgdGVzdGluZyAnYml0cycgaXMgbGlrZWx5
IGZhc3RlcikgaW52ZXJ0IHRoZSByZXN1bHQgYXBwcm9wcmlhdGVseS4KKyAgICByZXR1cm4gYml0
cyA8IDAgPyAtcmVzdWx0IDogcmVzdWx0OworfQorCiAjaWYgSEFWRShBUk1fSURJVl9JTlNUUlVD
VElPTlMpCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpY3RJbnQzMihkb3VibGUgdmFsdWUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggNjMyNTc4
NmJjNDZhMDdmMmE1OWJlMjQwOTMyMDFiNzc1ZGY5OThiMS4uZDUxN2Y0NTRlYWJiYmFhMWE4Mzhm
YmMzYWViN2Y2Mzg5YmE4MDgxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhDb21tb24uaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IGludDMy
X3QgbWF4RXhwb25lbnRGb3JJbnRlZ2VyTWF0aFBvdyA9IDEwMDA7CiBkb3VibGUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25NYXRoUG93KGRvdWJsZSB4LCBkb3VibGUgeSkgV1RGX0lOVEVSTkFMOwog
aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvSW50MzIoZG91YmxlKSBXVEZfSU5URVJO
QUw7CitpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbnQzMkZhbGxiYWNrKGRvdWJs
ZSkgV1RGX0lOVEVSTkFMOwogCiBpbmxpbmUgY29uc3RleHByIGRvdWJsZSBtYXhTYWZlSW50ZWdl
cigpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300518</attachid>
            <date>2017-02-03 05:09:23 -0800</date>
            <delta_ts>2017-02-04 01:12:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167736-20170203220707.patch</filename>
            <type>text/plain</type>
            <size>16537</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OWUwZDlmMzkwNjZkYjJkYjlkYjJhMDgyOTgzY2UwODdiYTUyYjMzLi44YmQyOTIxNGJkNGYwYWJk
ZGFmYzE4YWE0Y2Q4MjFmMjMzMjM5OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMTctMDItMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIG9wZXJhdGlvblRvSW50MzJTZW5zaWJsZVNsb3cg
dG8gb3B0aW1pemUga3Jha2VuIHBia2RmMiBhbmQgc2hhMjU2CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc3MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgZnVuY3Rpb24gb3BlcmF0aW9u
VG9JbnQzMlNlbnNpYmxlU2xvdy4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5CisgICAgICAgIGNhbGxl
ZCBhZnRlciB4ODYgY3Z0dHNzMnNpX3JyIGlzIGZhaWxlZC4gVGhpcyBtZWFucyB0aGF0IHRoZQor
ICAgICAgICBnaXZlbiBkb3VibGUgbnVtYmVyIG5ldmVyIGluIHJhbmdlIG9mIGludDMyIHRydW5j
YXRhYmxlIG51bWJlcnMuCisKKyAgICAgICAgQXMgYSByZXN1bHQsIGV4cCBpbiBvcGVyYXRpb25U
b0ludDMyIGFsd2F5cyBiZWNvbWVzID49IDMxLiBTbworICAgICAgICB3ZSBjYW4gY2hhbmdlIHRo
ZSBjb25kaXRpb24gZnJvbSBgZXhwIDwgMzJgIHRvIGBleHAgPT0gMzFgLgorICAgICAgICBUaGlz
IG1ha2VzIG1pc3NpbmdPbmUgY29uc3RhbnQuIEFuZCBpdCBsZWFkcyBzaWduaWZpY2FudGx5IGdv
b2QKKyAgICAgICAgY29kZSBnZW5lcmF0aW9uLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBvcGVy
YXRpb25Ub0ludDMyIGNvZGUuCisKKyAgICAgICAgICAgIDE3MDogICA2NiA0OCAwZiA3ZSBjMSAg
ICAgICAgICBtb3ZxICAgJXhtbTAsJXJjeAorICAgICAgICAgICAgMTc1OiAgIDMxIGMwICAgICAg
ICAgICAgICAgICAgIHhvciAgICAlZWF4LCVlYXgKKyAgICAgICAgICAgIDE3NzogICA2NiA0OCAw
ZiA3ZSBjNiAgICAgICAgICBtb3ZxICAgJXhtbTAsJXJzaQorICAgICAgICAgICAgMTdjOiAgIDQ4
IGMxIGY5IDM0ICAgICAgICAgICAgIHNhciAgICAkMHgzNCwlcmN4CisgICAgICAgICAgICAxODA6
ICAgODEgZTEgZmYgMDcgMDAgMDAgICAgICAgYW5kICAgICQweDdmZiwlZWN4CisgICAgICAgICAg
ICAxODY6ICAgOGQgOTEgMDEgZmMgZmYgZmYgICAgICAgbGVhICAgIC0weDNmZiglcmN4KSwlZWR4
CisgICAgICAgICAgICAxOGM6ICAgODMgZmEgNTMgICAgICAgICAgICAgICAgY21wICAgICQweDUz
LCVlZHgKKyAgICAgICAgICAgIDE4ZjogICA3NyAzNyAgICAgICAgICAgICAgICAgICBqYSAgICAg
MWM4IDxfWk4zSlNDMTZvcGVyYXRpb25Ub0ludDMyRWQrMHg1OD4KKyAgICAgICAgICAgIDE5MTog
ICA4MyBmYSAzNCAgICAgICAgICAgICAgICBjbXAgICAgJDB4MzQsJWVkeAorICAgICAgICAgICAg
MTk0OiAgIDdmIDNhICAgICAgICAgICAgICAgICAgIGpnICAgICAxZDAgPF9aTjNKU0MxNm9wZXJh
dGlvblRvSW50MzJFZCsweDYwPgorICAgICAgICAgICAgMTk2OiAgIGI5IDM0IDAwIDAwIDAwICAg
ICAgICAgIG1vdiAgICAkMHgzNCwlZWN4CisgICAgICAgICAgICAxOWI6ICAgNjYgNDggMGYgN2Ug
YzcgICAgICAgICAgbW92cSAgICV4bW0wLCVyZGkKKyAgICAgICAgICAgIDFhMDogICAyOSBkMSAg
ICAgICAgICAgICAgICAgICBzdWIgICAgJWVkeCwlZWN4CisgICAgICAgICAgICAxYTI6ICAgNDgg
ZDMgZmYgICAgICAgICAgICAgICAgc2FyICAgICVjbCwlcmRpCisgICAgICAgICAgICAxYTU6ICAg
ODMgZmEgMWYgICAgICAgICAgICAgICAgY21wICAgICQweDFmLCVlZHgKKyAgICAgICAgICAgIDFh
ODogICA4OSBmOCAgICAgICAgICAgICAgICAgICBtb3YgICAgJWVkaSwlZWF4CisgICAgICAgICAg
ICAxYWE6ICAgN2YgMTIgICAgICAgICAgICAgICAgICAgamcgICAgIDFiZSA8X1pOM0pTQzE2b3Bl
cmF0aW9uVG9JbnQzMkVkKzB4NGU+CisgICAgICAgICAgICAxYWM6ICAgODkgZDEgICAgICAgICAg
ICAgICAgICAgbW92ICAgICVlZHgsJWVjeAorICAgICAgICAgICAgMWFlOiAgIGI4IDAxIDAwIDAw
IDAwICAgICAgICAgIG1vdiAgICAkMHgxLCVlYXgKKyAgICAgICAgICAgIDFiMzogICBkMyBlMCAg
ICAgICAgICAgICAgICAgICBzaGwgICAgJWNsLCVlYXgKKyAgICAgICAgICAgIDFiNTogICA4OSBj
MiAgICAgICAgICAgICAgICAgICBtb3YgICAgJWVheCwlZWR4CisgICAgICAgICAgICAxYjc6ICAg
OGQgNDAgZmYgICAgICAgICAgICAgICAgbGVhICAgIC0weDEoJXJheCksJWVheAorICAgICAgICAg
ICAgMWJhOiAgIDIxIGY4ICAgICAgICAgICAgICAgICAgIGFuZCAgICAlZWRpLCVlYXgKKyAgICAg
ICAgICAgIDFiYzogICAwMSBkMCAgICAgICAgICAgICAgICAgICBhZGQgICAgJWVkeCwlZWF4Cisg
ICAgICAgICAgICAxYmU6ICAgODkgYzIgICAgICAgICAgICAgICAgICAgbW92ICAgICVlYXgsJWVk
eAorICAgICAgICAgICAgMWMwOiAgIGY3IGRhICAgICAgICAgICAgICAgICAgIG5lZyAgICAlZWR4
CisgICAgICAgICAgICAxYzI6ICAgNDggODUgZjYgICAgICAgICAgICAgICAgdGVzdCAgICVyc2ks
JXJzaQorICAgICAgICAgICAgMWM1OiAgIDBmIDQ4IGMyICAgICAgICAgICAgICAgIGNtb3ZzICAl
ZWR4LCVlYXgKKyAgICAgICAgICAgIDFjODogICBmMyBjMyAgICAgICAgICAgICAgICAgICByZXB6
IHJldHEKKyAgICAgICAgICAgIDFjYTogICA2NiAwZiAxZiA0NCAwMCAwMCAgICAgICBub3B3ICAg
MHgwKCVyYXgsJXJheCwxKQorICAgICAgICAgICAgMWQwOiAgIDY2IDQ4IDBmIDdlIGMwICAgICAg
ICAgIG1vdnEgICAleG1tMCwlcmF4CisgICAgICAgICAgICAxZDU6ICAgODEgZTkgMzMgMDQgMDAg
MDAgICAgICAgc3ViICAgICQweDQzMywlZWN4CisgICAgICAgICAgICAxZGI6ICAgNDggZDMgZTAg
ICAgICAgICAgICAgICAgc2hsICAgICVjbCwlcmF4CisgICAgICAgICAgICAxZGU6ICAgZWIgZGUg
ICAgICAgICAgICAgICAgICAgam1wICAgIDFiZSA8X1pOM0pTQzE2b3BlcmF0aW9uVG9JbnQzMkVk
KzB4NGU+CisKKyAgICAgICAgVGhlIG9wZXJhdGlvblRvSW50MzJTZW5zaWJsZVNsb3cgY29kZS4K
KyAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAxZTAgPF9aTjNKU0MyOG9wZXJhdGlvblRvSW50MzJT
ZW5zaWJsZVNsb3dFZD46CisgICAgICAgICAgICAxZTA6ICAgNjYgNDggMGYgN2UgYzEgICAgICAg
ICAgbW92cSAgICV4bW0wLCVyY3gKKyAgICAgICAgICAgIDFlNTogICA2NiA0OCAwZiA3ZSBjMiAg
ICAgICAgICBtb3ZxICAgJXhtbTAsJXJkeAorICAgICAgICAgICAgMWVhOiAgIDQ4IGMxIGY5IDM0
ICAgICAgICAgICAgIHNhciAgICAkMHgzNCwlcmN4CisgICAgICAgICAgICAxZWU6ICAgODEgZTEg
ZmYgMDcgMDAgMDAgICAgICAgYW5kICAgICQweDdmZiwlZWN4CisgICAgICAgICAgICAxZjQ6ICAg
OGQgYjEgMDEgZmMgZmYgZmYgICAgICAgbGVhICAgIC0weDNmZiglcmN4KSwlZXNpCisgICAgICAg
ICAgICAxZmE6ICAgODMgZmUgMzQgICAgICAgICAgICAgICAgY21wICAgICQweDM0LCVlc2kKKyAg
ICAgICAgICAgIDFmZDogICA3ZSAyMSAgICAgICAgICAgICAgICAgICBqbGUgICAgMjIwIDxfWk4z
SlNDMjhvcGVyYXRpb25Ub0ludDMyU2Vuc2libGVTbG93RWQrMHg0MD4KKyAgICAgICAgICAgIDFm
ZjogICA2NiA0OCAwZiA3ZSBjMCAgICAgICAgICBtb3ZxICAgJXhtbTAsJXJheAorICAgICAgICAg
ICAgMjA0OiAgIDgxIGU5IDMzIDA0IDAwIDAwICAgICAgIHN1YiAgICAkMHg0MzMsJWVjeAorICAg
ICAgICAgICAgMjBhOiAgIDQ4IGQzIGUwICAgICAgICAgICAgICAgIHNobCAgICAlY2wsJXJheAor
ICAgICAgICAgICAgMjBkOiAgIDg5IGMxICAgICAgICAgICAgICAgICAgIG1vdiAgICAlZWF4LCVl
Y3gKKyAgICAgICAgICAgIDIwZjogICBmNyBkOSAgICAgICAgICAgICAgICAgICBuZWcgICAgJWVj
eAorICAgICAgICAgICAgMjExOiAgIDQ4IDg1IGQyICAgICAgICAgICAgICAgIHRlc3QgICAlcmR4
LCVyZHgKKyAgICAgICAgICAgIDIxNDogICAwZiA0OCBjMSAgICAgICAgICAgICAgICBjbW92cyAg
JWVjeCwlZWF4CisgICAgICAgICAgICAyMTc6ICAgYzMgICAgICAgICAgICAgICAgICAgICAgcmV0
cQorICAgICAgICAgICAgMjE4OiAgIDBmIDFmIDg0IDAwIDAwIDAwIDAwICAgIG5vcGwgICAweDAo
JXJheCwlcmF4LDEpCisgICAgICAgICAgICAyMWY6ICAgMDAKKyAgICAgICAgICAgIDIyMDogICA2
NiA0OCAwZiA3ZSBjMCAgICAgICAgICBtb3ZxICAgJXhtbTAsJXJheAorICAgICAgICAgICAgMjI1
OiAgIGI5IDM0IDAwIDAwIDAwICAgICAgICAgIG1vdiAgICAkMHgzNCwlZWN4CisgICAgICAgICAg
ICAyMmE6ICAgMjkgZjEgICAgICAgICAgICAgICAgICAgc3ViICAgICVlc2ksJWVjeAorICAgICAg
ICAgICAgMjJjOiAgIDQ4IGQzIGY4ICAgICAgICAgICAgICAgIHNhciAgICAlY2wsJXJheAorICAg
ICAgICAgICAgMjJmOiAgIDg5IGMxICAgICAgICAgICAgICAgICAgIG1vdiAgICAlZWF4LCVlY3gK
KyAgICAgICAgICAgIDIzMTogICA4MSBjOSAwMCAwMCAwMCA4MCAgICAgICBvciAgICAgJDB4ODAw
MDAwMDAsJWVjeAorICAgICAgICAgICAgMjM3OiAgIDgzIGZlIDFmICAgICAgICAgICAgICAgIGNt
cCAgICAkMHgxZiwlZXNpCisgICAgICAgICAgICAyM2E6ICAgMGYgNDQgYzEgICAgICAgICAgICAg
ICAgY21vdmUgICVlY3gsJWVheAorICAgICAgICAgICAgMjNkOiAgIDg5IGMxICAgICAgICAgICAg
ICAgICAgIG1vdiAgICAlZWF4LCVlY3gKKyAgICAgICAgICAgIDIzZjogICBmNyBkOSAgICAgICAg
ICAgICAgICAgICBuZWcgICAgJWVjeAorICAgICAgICAgICAgMjQxOiAgIDQ4IDg1IGQyICAgICAg
ICAgICAgICAgIHRlc3QgICAlcmR4LCVyZHgKKyAgICAgICAgICAgIDI0NDogICAwZiA0OCBjMSAg
ICAgICAgICAgICAgICBjbW92cyAgJWVjeCwlZWF4CisgICAgICAgICAgICAyNDc6ICAgYzMgICAg
ICAgICAgICAgICAgICAgICAgcmV0cQorICAgICAgICAgICAgMjQ4OiAgIDBmIDFmIDg0IDAwIDAw
IDAwIDAwICAgIG5vcGwgICAweDAoJXJheCwlcmF4LDEpCisgICAgICAgICAgICAyNGY6ICAgMDAK
KworICAgICAgICBUaGlzIGltcHJvdmVzIGtyYWtlbiBwYmtkZjIgYnkgMTAuOCUgYW5kIHNoYTI1
NiBieSA3LjUlLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAg
ICAgIHN0YW5mb3JkLWNyeXB0by1wYmtkZjIgICAgICAgICAgICAgICAgIDE1My4xOTUrLTIuNzQ1
ICAgICAgXiAgICAgMTM4LjIwNCstMi41MTMgICAgICAgICBeIGRlZmluaXRlbHkgMS4xMDg1eCBm
YXN0ZXIKKyAgICAgICAgICAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAg
ICA0OS4wNDcrLTEuMDM4ICAgICAgXiAgICAgIDQ1LjYxMCstMS4yMzUgICAgICAgICBeIGRlZmlu
aXRlbHkgMS4wNzU0eCBmYXN0ZXIKKworICAgICAgICAgICAgPGFyaXRobWV0aWM+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTAxLjEyMSstMS4zNzkgICAgICBeICAgICAgOTEuOTA3Ky0xLjUw
MCAgICAgICAgIF4gZGVmaW5pdGVseSAxLjEwMDN4IGZhc3RlcgorCisgICAgICAgICogYXNzZW1i
bGVyL0NQVS5oOgorICAgICAgICAoSlNDOjpoYXNTZW5zaWJsZURvdWJsZVRvSW50KToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZG91Ymxl
VG9JbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNlbnNpYmxl
RG91YmxlVG9JbnQzMik6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpoYXNTZW5zaWJsZURvdWJsZVRvSW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgICogcnVudGltZS9NYXRoQ29tbW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6b3BlcmF0aW9uVG9JbnQzMlNlbnNpYmxlU2xvdyk6CisgICAgICAgICog
cnVudGltZS9NYXRoQ29tbW9uLmg6CisKIDIwMTctMDItMDIgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmVkIHVudXNlZCBtX2Vycm9ySGFuZGxp
bmdNb2RlUmVlbnRyeSBmcm9tIEludGVycHJldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9DUFUuaAppbmRleCAyZDJiNDg2MWE2NThiMjQ1MDA2MjRlNjA4OTc4YTI5MjM5ZWU1YWYxLi44
ZThjODJmOWI2M2JiMzBjNjU3OGI3YTY2Y2FiMmVkNTA1NzFjMjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQ1BVLmgKQEAgLTg1LDUgKzg1LDEwIEBAIGlubGluZSBib29sIG9wdGlt
aXplRm9yWDg2XzY0KCkKICAgICByZXR1cm4gaXNYODZfNjQoKSAmJiBPcHRpb25zOjp1c2VBcmNo
aXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKTsKIH0KIAoraW5saW5lIGJvb2wgaGFzU2Vu
c2libGVEb3VibGVUb0ludCgpCit7CisgICAgcmV0dXJuIG9wdGltaXplRm9yWDg2KCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDY3MWMwNjM3N2Y0ZTkwZmNmMmU5NmI5ZTc3NTBiNjRk
YjgyZDE1NjEuLmIyNWJjNGE4N2MwN2FkZGIyMzUwZGQ4MjI0ZmJkY2U1MDg4MzFmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0y
MjA4LDcgKzIyMDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMy
KE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRy
dW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNh
dGVGYWlsZWQpOwogICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywgb3BlcmF0aW9uVG9JbnQzMiwgTmVl
ZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTm90TmVlZGVkLCBncHIs
IGZwcikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90VHJ1
bmNhdGVkVG9JbnRlZ2VyLCB0aGlzLAorICAgICAgICAgICAgaGFzU2Vuc2libGVEb3VibGVUb0lu
dCgpID8gb3BlcmF0aW9uVG9JbnQzMlNlbnNpYmxlU2xvdyA6IG9wZXJhdGlvblRvSW50MzIsIE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05vdE5lZWRlZCwgZ3By
LCBmcHIpKTsKICAgICAgICAgCiAgICAgICAgIGludDMyUmVzdWx0KGdwciwgbm9kZSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCA2ZGNhZjg1YjJkMjYxMTNiM2FmN2YwMjhiMDIyNTZjMjhiNmIwZjJjLi45N2Jh
M2ZiOThiOGE5NjY0ZWJjN2VjMTExNTg1ZjM1YzViY2U5NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMTU5MSw3ICsxMTU5MSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgTFZhbHVlIGRvdWJsZVRvSW50MzIoTFZh
bHVlIGRvdWJsZVZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKE91dHB1dDo6aGFzU2Vuc2libGVE
b3VibGVUb0ludCgpKQorICAgICAgICBpZiAoaGFzU2Vuc2libGVEb3VibGVUb0ludCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHNlbnNpYmxlRG91YmxlVG9JbnQzMihkb3VibGVWYWx1ZSk7CiAgICAg
ICAgIAogICAgICAgICBkb3VibGUgbGltaXQgPSBwb3coMiwgMzEpIC0gMTsKQEAgLTExNjExLDcg
KzExNjExLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAg
ICAgICAgICBtX291dC5jYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9JbnQz
MiksIGRvdWJsZVZhbHVlKSk7CisgICAgICAgICAgICBtX291dC5jYWxsKEludDMyLCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uVG9JbnQzMlNlbnNpYmxlU2xvdyksIGRvdWJsZVZhbHVlKSk7CiAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuY3BwCmluZGV4IGJmMjA5YjA0Yzk0NGQ5OGUxZDhiZWQ2MWUxZDg1MDE4N2E0
YmMyNzIuLmJkNjVlNjRlOTU1MWZiNGI2MzY0MTA1NzEyOWYwMmI4NzkzODcwZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAgLTMzMywxMSArMzMzLDYgQEAgTFZh
bHVlIE91dHB1dDo6ZG91YmxlTG9nKExWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gY2FsbFdpdGhv
dXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBsb2dEb3VibGUsIHZhbHVlKTsKIH0KIAotYm9vbCBP
dXRwdXQ6Omhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKQotewotICAgIHJldHVybiBvcHRpbWl6ZUZv
clg4NigpOwotfQotCiBMVmFsdWUgT3V0cHV0Ojpkb3VibGVUb0ludChMVmFsdWUgdmFsdWUpCiB7
CiAgICAgUGF0Y2hwb2ludFZhbHVlKiByZXN1bHQgPSBwYXRjaHBvaW50KEludDMyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IDQzM2UxZTAzNzFkNWQ2NzZkNTQzNzZk
MzFhOTQzZGEzY2U4YzZiNzcuLjkxZTU0OGM3OGJkYmY2OWZlZTM1YjlmZGMxZDM5NGQzNDU3ZDY0
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMTkzLDcgKzE5Myw2
IEBAIGNsYXNzIE91dHB1dCA6IHB1YmxpYyBDb21tb25WYWx1ZXMgewogCiAgICAgTFZhbHVlIGRv
dWJsZUxvZyhMVmFsdWUpOwogCi0gICAgc3RhdGljIGJvb2wgaGFzU2Vuc2libGVEb3VibGVUb0lu
dCgpOwogICAgIExWYWx1ZSBkb3VibGVUb0ludChMVmFsdWUpOwogICAgIExWYWx1ZSBkb3VibGVU
b1VJbnQoTFZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWF0aENvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29t
bW9uLmNwcAppbmRleCA2ZjExOTc1NDE1MTc4OGY4M2Y1YWZlZDA1ZjM0ZWViZDE1MDJjNGM1Li5l
YjA2MGExMjE3MGI2M2ZkNDMwMTlkYWI2ZDliNTMzMTA5ZTMxZGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNwcApAQCAtNDY3LDYgKzQ2Nyw3MSBAQCBp
bnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbnQzMihkb3VibGUgdmFsdWUpCiAgICAg
cmV0dXJuIEpTQzo6dG9JbnQzMih2YWx1ZSk7CiB9CiAKK2ludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ub0ludDMyU2Vuc2libGVTbG93KGRvdWJsZSBudW1iZXIpCit7CisgICAgLy8gVGhp
cyBmdW5jdGlvbiBpcyBzcGVjaWFsaXplZCBgb3BlcmF0aW9uVG9JbnQzMmAgZm9yIHRoZSBzbG93
IGNhc2Ugb2YKKyAgICAvLyB0aGUgc2Vuc2libGUgZG91YmxlLXRvLWludDMyIG9wZXJhdGlvbi4g
SXQgaXMgYXZhaWxhYmxlIGluIHg4Ni4KKyAgICAvLworICAgIC8vIEluIHRoZSBzZW5zaWJsZSBk
b3VibGUtdG8taW50MzIsIGZpcnN0IHdlIGF0dGVtcHQgdG8gdHJ1bmNhdGUgdGhlCisgICAgLy8g
ZG91YmxlIHZhbHVlIHRvIGludDMyIGJ5IHVzaW5nIGN2dHRzZDJzaV9yci4KKyAgICAvLyBBY2Nv
cmRpbmcgdG8gdGhlIEludGVsJ3MgbWFudWFsLCBjdnR0c2Qyc2kgcGVyZm9ybSB0aGUgZm9sbG93
aW5nIHRydW5jYXRlCisgICAgLy8gb3BlcmF0aW9uLgorICAgIC8vCisgICAgLy8gSWYgc3JjID0g
TmFOLCArLUluZiwgb3IgfChzcmMpcnp8ID4gMHg3ZmZmZmZmZiBhbmQgKHNyYylyeiAhPSAweDgw
MDAwMDAwLAorICAgIC8vIHRoZSByZXN1bHQgYmVjb21lcyAweDgwMDAwMDAwLiBPdGhlcndpc2Us
IHRoZSBvcGVyYXRpb24gc3VjY2VlZHMuCisgICAgLy8gTm90ZSB0aGF0ICgpcnogaXMgcm91ZGlu
ZyB0b3dhcmRzIHplcm8uCisgICAgLy8KKyAgICAvLyBXZSBjYWxsIHRoaXMgc2xvdyBjYXNlIGZ1
bmN0aW9uIHdoZW4gdGhlIGFib3ZlIGN2dHRzZDJzaSBmYWlscy4gV2UgY2hlY2sKKyAgICAvLyB0
aGlzIGNvbmRpdGlvbiBieSBwZXJmb3JtaW5nIGByZXN1bHQgPT0gMHg4MDAwMDAwMGAuIFNvIHRo
aXMgZnVuY3Rpb24gb25seQorICAgIC8vIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBudW1iZXJzLgor
ICAgIC8vCisgICAgLy8gICAgIE5hTiwgKy1JbmYsIHwoc3JjKXJ6fCA+IDB4N2ZmZmZmZmYuCisg
ICAgLy8KKyAgICAvLyBBcyBhIHJlc3VsdCwgdGhlIGV4cCBvZiB0aGUgZG91YmxlIGlzIGFsd2F5
cyA+PSAzMS4KKyAgICAvLyBUaGlzIGNvbmRpdGlvbiBzaW1wbGlmaWVzIGFuZCBzcGVlZHMgdXAg
dGhlIHRvSW50MzIgaW1wbGVtZW50YXRpb24uCisgICAgaW50NjRfdCBiaXRzID0gV1RGOjpiaXR3
aXNlX2Nhc3Q8aW50NjRfdD4obnVtYmVyKTsKKyAgICBpbnQzMl90IGV4cCA9IChzdGF0aWNfY2Fz
dDxpbnQzMl90PihiaXRzID4+IDUyKSAmIDB4N2ZmKSAtIDB4M2ZmOworCisgICAgLy8gSWYgZXhw
b25lbnQgPCAwIHRoZXJlIHdpbGwgYmUgbm8gYml0cyB0byB0aGUgbGVmdCBvZiB0aGUgZGVjaW1h
bCBwb2ludAorICAgIC8vIGFmdGVyIHJvdW5kaW5nOyBpZiB0aGUgZXhwb25lbnQgaXMgPiA4MyB0
aGVuIG5vIGJpdHMgb2YgcHJlY2lzaW9uIGNhbiBiZQorICAgIC8vIGxlZnQgaW4gdGhlIGxvdyAz
Mi1iaXQgcmFuZ2Ugb2YgdGhlIHJlc3VsdCAoSUVFRS03NTQgZG91YmxlcyBoYXZlIDUyIGJpdHMK
KyAgICAvLyBvZiBmcmFjdGlvbmFsIHByZWNpc2lvbikuCisgICAgLy8gTm90ZSB0aGlzIGNhc2Ug
aGFuZGxlcyAwLCAtMCwgYW5kIGFsbCBpbmZpbml0ZSwgTmFOLCAmIGRlbm9ybWFsIHZhbHVlLgor
CisgICAgLy8gSWYgZXhwIDwgMCwgdHJ1bmNhdGUgb3BlcmF0aW9uIHN1Y2NlZWRzLiBTbyB0aGlz
IGZ1bmN0aW9uIGRvZXMgbm90CisgICAgLy8gZW5jb3VudGVyIHRoYXQgY2FzZS4gSWYgZXhwID4g
ODMsIGl0IG1lYW5zIGV4cCA+PSA4NC4gSW4gdGhhdCBjYXNlLAorICAgIC8vIHRoZSBmb2xsb3dp
bmcgb3BlcmF0aW9uIHByb2R1Y2VzIDAgZm9yIHRoZSByZXN1bHQuCisgICAgQVNTRVJUKGV4cCA+
PSAwKTsKKworICAgIC8vIFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgMzItYml0cyBmcm9tIHRoZSBm
bG9hdGluZyBwb2ludCBtYW50aXNzYS4gSWYgdGhlCisgICAgLy8gZXhwb25lbnQgaXMgNTIgdGhl
biB0aGUgYml0cyB3ZSBuZWVkIHRvIHNlbGVjdCBhcmUgYWxyZWFkeSBhbGlnbmVkIHRvIHRoZQor
ICAgIC8vIGxvd2VzdCBiaXRzIG9mIHRoZSA2NC1iaXQgaW50ZWdlciByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgbnVtYmVyLCBubyBuZWVkCisgICAgLy8gdG8gc2hpZnQuIElmIHRoZSBleHBvbmVudCBp
cyBncmVhdGVyIHRoYW4gNTIgd2UgbmVlZCB0byBzaGlmdCB0aGUgdmFsdWUKKyAgICAvLyBsZWZ0
IGJ5IChleHAgLSA1MiksIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIHRoYW4gNTIgd2UgbmVlZCB0byBz
aGlmdCByaWdodAorICAgIC8vIGFjY29yZGluZ2x5LgorICAgIGludDMyX3QgcmVzdWx0ID0gKGV4
cCA+IDUyKQorICAgICAgICA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMgPDwgKGV4cCAtIDUy
KSkKKyAgICAgICAgOiBzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzID4+ICg1MiAtIGV4cCkpOwor
CisgICAgLy8gSUVFRS03NTQgZG91YmxlIHByZWNpc2lvbiB2YWx1ZXMgYXJlIHN0b3JlZCBvbWl0
dGluZyBhbiBpbXBsaWNpdCAxIGJlZm9yZQorICAgIC8vIHRoZSBkZWNpbWFsIHBvaW50OyB3ZSBu
ZWVkIHRvIHJlaW5zZXJ0IHRoaXMgbm93LiBXZSBtYXkgYWxzbyB0aGUgc2hpZnRlZAorICAgIC8v
IGludmFsaWQgYml0cyBpbnRvIHRoZSByZXN1bHQgdGhhdCBhcmUgbm90IGEgcGFydCBvZiB0aGUg
bWFudGlzc2EgKHRoZSBzaWduCisgICAgLy8gYW5kIGV4cG9uZW50IGJpdHMgZnJvbSB0aGUgZmxv
YXRpbmdwb2ludCByZXByZXNlbnRhdGlvbik7IG1hc2sgdGhlc2Ugb3V0LgorICAgIC8vCisgICAg
Ly8gVGhlIGltcG9ydGFudCBvYnNlcnZhdGlvbiBpcyB0aGF0IGV4cCBpcyBhbHdheXMgPj0gMzEu
IFNvIHRoZSBhYm92ZSBjYXNlCisgICAgLy8gaXMgbmVlZGVkIHRvIGJlIGNhcmVkIG9ubHkgd2hl
biB0aGUgZXhwID09IDMxLgorICAgIEFTU0VSVChleHAgPj0gMzEpOworICAgIGlmIChleHAgPT0g
MzEpIHsKKyAgICAgICAgaW50MzJfdCBtaXNzaW5nT25lID0gMSA8PCBleHA7CisgICAgICAgIHJl
c3VsdCAmPSAobWlzc2luZ09uZSAtIDEpOworICAgICAgICByZXN1bHQgKz0gbWlzc2luZ09uZTsK
KyAgICB9CisKKyAgICAvLyBJZiB0aGUgaW5wdXQgdmFsdWUgd2FzIG5lZ2F0aXZlICh3ZSBjb3Vs
ZCB0ZXN0IGVpdGhlciAnbnVtYmVyJyBvciAnYml0cycsCisgICAgLy8gYnV0IHRlc3RpbmcgJ2Jp
dHMnIGlzIGxpa2VseSBmYXN0ZXIpIGludmVydCB0aGUgcmVzdWx0IGFwcHJvcHJpYXRlbHkuCisg
ICAgcmV0dXJuIGJpdHMgPCAwID8gLXJlc3VsdCA6IHJlc3VsdDsKK30KKwogI2lmIEhBVkUoQVJN
X0lESVZfSU5TVFJVQ1RJT05TKQogc3RhdGljIGlubGluZSBib29sIGlzU3RyaWN0SW50MzIoZG91
YmxlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aENvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5o
CmluZGV4IDYzMjU3ODZiYzQ2YTA3ZjJhNTliZTI0MDkzMjAxYjc3NWRmOTk4YjEuLjRiYzJmOTA4
YmQ0ODM0MmRhOGRkZDkyNjE3NDM1MTk1YzA3ZjlhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoQ29tbW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjb25zdCBpbnQzMl90IG1heEV4cG9uZW50Rm9ySW50ZWdlck1hdGhQb3cgPSAxMDAwOwogZG91
YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0aFBvdyhkb3VibGUgeCwgZG91YmxlIHkpIFdU
Rl9JTlRFUk5BTDsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub0ludDMyKGRvdWJs
ZSkgV1RGX0lOVEVSTkFMOworaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvSW50MzJT
ZW5zaWJsZVNsb3coZG91YmxlKSBXVEZfSU5URVJOQUw7CiAKIGlubGluZSBjb25zdGV4cHIgZG91
YmxlIG1heFNhZmVJbnRlZ2VyKCkKIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDlmNjFlMWRmMzYzNDRkMDcwODcyNGRjMWZkNGJiNWE4
ZTZkMzUwZi4uOThkODI2YWQxMjRkMTQ5MjMxZWRmOTY4MDQ5Y2FlOTUxNTJjOTlmZCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxNy0wMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgb3BlcmF0aW9uVG9JbnQzMlNlbnNpYmxlU2xvdyB0byBv
cHRpbWl6ZSBrcmFrZW4gcGJrZGYyIGFuZCBzaGEyNTYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzczNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3RvLWludDMyLXNlbnNpYmxlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRvSW50MzIpOgorICAgICAgICAo
dGVzdCk6CisKIDIwMTctMDItMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZlIGxvb3AKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3RvLWludDMyLXNlbnNpYmxlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdG8taW50MzIt
c2Vuc2libGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1YTEyYmJiNTg2ZDFjYTFhZTExZDY1MjMxZTI1NTM0
MTg3OTUwYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RvLWludDMyLXNlbnNp
YmxlLmpzCkBAIC0wLDAgKzEsNDAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisvLyBWYWx1ZVRvSW50MzIoRG91Ymxl
UmVwKQorZnVuY3Rpb24gdG9JbnQzMihudW1iZXIpCit7CisgICAgcmV0dXJuIChudW1iZXIgKiAw
LjUpID4+IDA7Cit9Citub0lubGluZSh0b0ludDMyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1
OyArK2kpCisgICAgdG9JbnQzMihpICogMS4wKTsKKworZnVuY3Rpb24gdGVzdChudW1iZXIpCit7
CisgICAgcmV0dXJuIHRvSW50MzIobnVtYmVyICogMik7Cit9CisKK2NvbnN0IElOVDMyX01BWCA9
IDIxNDc0ODM2NDc7Citjb25zdCBJTlQzMl9NSU4gPSAtMjE0NzQ4MzY0ODsKKworc2hvdWxkQmUo
dGVzdChJTlQzMl9NQVggLSAxKSwgSU5UMzJfTUFYIC0gMSk7CitzaG91bGRCZSh0ZXN0KElOVDMy
X01BWCAtIDAuNSksIElOVDMyX01BWCAtIDEpOworc2hvdWxkQmUodGVzdChJTlQzMl9NQVgpLCBJ
TlQzMl9NQVgpOworc2hvdWxkQmUodGVzdChJTlQzMl9NQVggKyAwLjUpLCBJTlQzMl9NQVgpOwor
c2hvdWxkQmUodGVzdChJTlQzMl9NQVggKyAxKSwgSU5UMzJfTUlOKTsKKworc2hvdWxkQmUodGVz
dChJTlQzMl9NSU4gLSAxKSwgSU5UMzJfTUFYKTsKK3Nob3VsZEJlKHRlc3QoSU5UMzJfTUlOIC0g
MC41KSwgSU5UMzJfTUlOKTsKK3Nob3VsZEJlKHRlc3QoSU5UMzJfTUlOKSwgSU5UMzJfTUlOKTsK
K3Nob3VsZEJlKHRlc3QoSU5UMzJfTUlOICsgMC41KSwgSU5UMzJfTUlOICsgMSk7CitzaG91bGRC
ZSh0ZXN0KElOVDMyX01JTiArIDEpLCBJTlQzMl9NSU4gKyAxKTsKKworc2hvdWxkQmUodGVzdChO
dW1iZXIuRVBTSUxPTiksIDApOworc2hvdWxkQmUodGVzdChOdW1iZXIuTmFOKSwgMCk7CitzaG91
bGRCZSh0ZXN0KE51bWJlci5QT1NJVElWRV9JTkZJTklUWSksIDApOworc2hvdWxkQmUodGVzdChO
dW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpLCAwKTsKK3Nob3VsZEJlKHRlc3QoTnVtYmVyLk1BWF9T
QUZFX0lOVEVHRVIpLCAtMSk7CitzaG91bGRCZSh0ZXN0KE51bWJlci5NSU5fU0FGRV9JTlRFR0VS
KSwgMSk7Cg==
</data>
<flag name="review"
          id="322392"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>