<?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>123956</bug_id>
          
          <creation_ts>2013-11-06 22:23:45 -0800</creation_ts>
          <short_desc>Change CallFrameRegister to architected frame pointer register</short_desc>
          <delta_ts>2013-11-07 15:44:01 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948073</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-11-06 22:23:45 -0800</bug_when>
    <thetext>This is part of moving to the C++ stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948074</commentid>
    <comment_count>1</comment_count>
      <attachid>216260</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-11-06 22:49:29 -0800</bug_when>
    <thetext>Created attachment 216260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948082</commentid>
    <comment_count>2</comment_count>
      <attachid>216260</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-06 23:05:58 -0800</bug_when>
    <thetext>Comment on attachment 216260
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp:166
&gt; +    if (MacroAssembler::framePointerRegister == GPRInfo::callFrameRegister)
&gt; +        jit.pop(GPRInfo::regT3); // ignore prior framePointer
&gt; +    else
&gt; +        jit.pop(MacroAssembler::framePointerRegister);

Why is this an &apos;if&apos; statement?  Isn&apos;t it always true after your patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948089</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-11-06 23:16:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 216260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216260&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp:166
&gt; &gt; +    if (MacroAssembler::framePointerRegister == GPRInfo::callFrameRegister)
&gt; &gt; +        jit.pop(GPRInfo::regT3); // ignore prior framePointer
&gt; &gt; +    else
&gt; &gt; +        jit.pop(MacroAssembler::framePointerRegister);
&gt; 
&gt; Why is this an &apos;if&apos; statement?  Isn&apos;t it always true after your patch?

It isn&apos;t needed, but I thought it would be helpful for debugging if one wants to change the register assignments.  Also, MacroAssembler::framePointerRegister and GPRInfo::callFrameRegister are different names.  If you like, I can change this to a RELEASE_ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948331</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-07 10:33:10 -0800</bug_when>
    <thetext>&gt; If you like, I can change this to a RELEASE_ASSERT.

static_assert is even better for something like this, since the two sides are both constants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948368</commentid>
    <comment_count>5</comment_count>
      <attachid>216260</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-07 11:46:36 -0800</bug_when>
    <thetext>Comment on attachment 216260
Patch

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

You mentioned that this patch broke the debugger in some way. Did you get to the bottom of that? Do we need a bug about that?

r=me, with some fixups below.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Changed X86 and ARM variants as well as MIPS to use their respective arcitected

Should be &quot;architected&quot; or &quot;architectures&apos;&quot;.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        frame pointer register.  For X86, this freed up another register as a temp or for

Should be &quot;frame pointer registers&quot;.

As a temp for what? Baseline JIT? Did you start using that register somewhere?

&gt; Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp:80
&gt; +    // Restore the callFrame value into a temp, as the framePointerRegister may be the callFrameRegister
&gt; +    // Below we use the temp register when accessing the destination call frame.

There are two problems with this comment.

(1) You say &quot;may be&quot; when you mean &quot;I have been working for months to ensure that this is definitely so, and many levels of our architecture rely on it being so&quot;. When you say &quot;may&quot; it implies that sometimes this many not be the case, and it&apos;s the reader&apos;s job to worry about the times when it&apos;s not the case. Very confusing.

(2) Your comment explains why you changed from the old code to the new code, and it makes sense in the context of a diff that shows you removing the old code that used callFrameRegister. However, it won&apos;t make any sense to a future programmer, who only sees the new code.

I think this comment should just say &quot;regT4 points to the exiting function&apos;s call frame&quot;.

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp:166
&gt;&gt;&gt; +        jit.pop(MacroAssembler::framePointerRegister);
&gt;&gt; 
&gt;&gt; Why is this an &apos;if&apos; statement?  Isn&apos;t it always true after your patch?
&gt; 
&gt; It isn&apos;t needed, but I thought it would be helpful for debugging if one wants to change the register assignments.  Also, MacroAssembler::framePointerRegister and GPRInfo::callFrameRegister are different names.  If you like, I can change this to a RELEASE_ASSERT.

static_assert, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948450</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-11-07 15:43:21 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 216260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216260&amp;action=review
&gt; 
&gt; You mentioned that this patch broke the debugger in some way. Did you get to the bottom of that? Do we need a bug about that?

lldb won&apos;t display registers via &quot;reg read&quot; in some cases after this change.  I&apos;ll create a test case and file a bug.

&gt; r=me, with some fixups below.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; +        Changed X86 and ARM variants as well as MIPS to use their respective arcitected
&gt; 
&gt; Should be &quot;architected&quot; or &quot;architectures&apos;&quot;.

Fixed.

&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        frame pointer register.  For X86, this freed up another register as a temp or for
&gt; 
&gt; Should be &quot;frame pointer registers&quot;.

Fixed.
 
&gt; As a temp for what? Baseline JIT? Did you start using that register somewhere?

Actually I added a new temp and made the register available to the DFG allocator.  I updated the code since this review to add back all the JSC specific callFrame registers made available with the change.  I updated the comment accordingly.
 
&gt; &gt; Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp:80
&gt; &gt; +    // Restore the callFrame value into a temp, as the framePointerRegister may be the callFrameRegister
&gt; &gt; +    // Below we use the temp register when accessing the destination call frame.
&gt; 
&gt; There are two problems with this comment.
&gt; 
&gt; (1) You say &quot;may be&quot; when you mean &quot;I have been working for months to ensure that this is definitely so, and many levels of our architecture rely on it being so&quot;. When you say &quot;may&quot; it implies that sometimes this many not be the case, and it&apos;s the reader&apos;s job to worry about the times when it&apos;s not the case. Very confusing.
&gt; 
&gt; (2) Your comment explains why you changed from the old code to the new code, and it makes sense in the context of a diff that shows you removing the old code that used callFrameRegister. However, it won&apos;t make any sense to a future programmer, who only sees the new code.
&gt; 
&gt; I think this comment should just say &quot;regT4 points to the exiting function&apos;s call frame&quot;.

I changed it to: &quot;Restore the exiting function&apos;s callFrame value into a regT4&quot;.

&gt; &gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp:166
&gt; &gt;&gt;&gt; +        jit.pop(MacroAssembler::framePointerRegister);
&gt; &gt;&gt; 
&gt; &gt;&gt; Why is this an &apos;if&apos; statement?  Isn&apos;t it always true after your patch?
&gt; &gt; 
&gt; &gt; It isn&apos;t needed, but I thought it would be helpful for debugging if one wants to change the register assignments.  Also, MacroAssembler::framePointerRegister and GPRInfo::callFrameRegister are different names.  If you like, I can change this to a RELEASE_ASSERT.
&gt; 
&gt; static_assert, please.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948452</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-11-07 15:44:01 -0800</bug_when>
    <thetext>Committed r158883: &lt;http://trac.webkit.org/changeset/158883&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216260</attachid>
            <date>2013-11-06 22:49:29 -0800</date>
            <delta_ts>2013-11-07 11:46:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>123956.patch</filename>
            <type>text/plain</type>
            <size>17760</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4ODI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEzLTExLTA2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENoYW5nZSBDYWxsRnJhbWVSZWdpc3RlciB0byBhcmNoaXRlY3RlZCBmcmFtZSBwb2ludGVy
IHJlZ2lzdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjM5NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaGFuZ2VkIFg4NiBhbmQgQVJNIHZhcmlhbnRzIGFzIHdlbGwgYXMgTUlQUyB0byB1c2UgdGhl
aXIgcmVzcGVjdGl2ZSBhcmNpdGVjdGVkCisgICAgICAgIGZyYW1lIHBvaW50ZXIgcmVnaXN0ZXIu
ICBGb3IgWDg2LCB0aGlzIGZyZWVkIHVwIGFub3RoZXIgcmVnaXN0ZXIgYXMgYSB0ZW1wIG9yIGZv
cgorICAgICAgICB1c2UgYnkgdGhlIERGRy4gIE1vZGlmaWVkIHRoZSBGVEwgT1NSIGV4aXQgY29t
cGlsZXIgdG8gdXNlIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyCisgICAgICAgIGFzIGEgc3RhbmQgaW4g
Zm9yIHRoZSBkZXN0aW5hdGlvbiBjYWxsRnJhbWVSZWdpc3RlciBzaW5jZSB0aGUgRlRMIGZyYW1l
IHBvaW50ZXIKKyAgICAgICAgcmVnaXN0ZXIgaXMgbmVlZGVkIHRvIGV4dHJhY3QgdmFsdWVzIGZy
b20gdGhlIEZUTCBzdGFjay4KKworICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBqaXQvQXNzZW1i
bHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcik6
CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkdQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAg
ICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFRvSmF2YVNj
cmlwdCk6CisgICAgICAgICogb2ZmbGluZWFzbS9hcm0ucmI6CisgICAgICAgICogb2ZmbGluZWFz
bS9hcm02NC5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL21pcHMucmI6CisgICAgICAgICogb2Zm
bGluZWFzbS94ODYucmI6CisKIDIwMTMtMTEtMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgQ2hlY2tGdW5jdGlvbgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAko
cmV2aXNpb24gMTU4ODI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw5IEBAIHN0YXRpYyB2b2lk
IGNvbXBpbGVTdHViKAogICAgIC8vIGNhbGwgZnJhbWUuCiAgICAgCiAgICAgLy8gR2V0IHRoZSBj
YWxsIGZyYW1lIGFuZCB0YWcgdGhpbmdpZXMuCi0gICAgcmVjb3JkLT5sb2NhdGlvbnNbMF0ucmVz
dG9yZUludG8oaml0LCBqaXRDb2RlLT5zdGFja21hcHMsIHJlZ2lzdGVyU2NyYXRjaCwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIC8vIFJlc3RvcmUgdGhlIGNhbGxGcmFtZSB2YWx1
ZSBpbnRvIGEgdGVtcCwgYXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIG1heSBiZSB0aGUgY2Fs
bEZyYW1lUmVnaXN0ZXIKKyAgICAvLyBCZWxvdyB3ZSB1c2UgdGhlIHRlbXAgcmVnaXN0ZXIgd2hl
biBhY2Nlc3NpbmcgdGhlIGRlc3RpbmF0aW9uIGNhbGwgZnJhbWUuCisgICAgcmVjb3JkLT5sb2Nh
dGlvbnNbMF0ucmVzdG9yZUludG8oaml0LCBqaXRDb2RlLT5zdGFja21hcHMsIHJlZ2lzdGVyU2Ny
YXRjaCwgR1BSSW5mbzo6cmVnVDQpOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdNYXNrKSwgR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICAKQEAgLTEyNiw3ICsxMjgsNyBAQCBzdGF0aWMg
dm9pZCBjb21waWxlU3R1YigKICAgICAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDMy
OgogICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NTI6CiAgICAgICAgIGNhc2Ug
RXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0Zvcih2YWx1ZS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKHZhbHVlLnZpcnR1YWxSZWdpc3RlcigpLCBHUFJJbmZvOjpyZWdUNCksIEdQUkluZm86OnJl
Z1QwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CkBAIC0xNDYsMTQgKzE0OCwyMiBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAg
aml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgcmVi
b3hBY2NvcmRpbmdUb0Zvcm1hdCgKICAgICAgICAgICAgIHZhbHVlLnZhbHVlRm9ybWF0KCksIGpp
dCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3Iob3BlcmFuZCkpOworICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFu
ZCksIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgfQogICAgIAorICAgIC8vIFNhdmUgdGhlIGN1cnJl
bnQgZnJhbWVQb2ludGVyIGluIGEgdGVtcCBmb3IgdGhlIGVwaWxvZ3VlIGFzIHRoZSBjYWxsRnJh
bWVSZWdpc3RlciBjb3VsZAorICAgIC8vIGFsc28gYmUgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVy
LiBUaGVuIHB1dCB0aGUgY2FsbEZyYW1lIHRlbXAgaW50byBjYWxsRnJhbWVSZWdpc3RlcgorICAg
IGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6
cmVnVDMpOworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgCiAgICAgaGFuZGxlRXhpdENvdW50cyhqaXQsIGV4aXQpOwogICAgIHJl
aWZ5SW5saW5lZENhbGxGcmFtZXMoaml0LCBleGl0KTsKICAgICAKLSAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0LnBvcChNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVy
UmVnaXN0ZXIpOworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QzLCBNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIgPT0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCisgICAgICAgIGppdC5w
b3AoR1BSSW5mbzo6cmVnVDMpOyAvLyBpZ25vcmUgcHJpb3IgZnJhbWVQb2ludGVyCisgICAgZWxz
ZQorICAgICAgICBqaXQucG9wKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7
CiAgICAgaml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gaWdub3JlIHRoZSByZXN1bHQu
CiAgICAgCiAgICAgaWYgKGV4aXQubV9sYXN0U2V0T3BlcmFuZC5pc1ZhbGlkKCkpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24g
MTU4ODI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYnl0ZU9mZnNldCk7
CiAgICAgfQorICAgIHN0YXRpYyBBZGRyZXNzIGFkZHJlc3NGb3IoVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlciwgR1BSUmVnIGJhc2VSZWcpCisgICAgeworICAgICAgICBBU1NFUlQodmly
dHVhbFJlZ2lzdGVyLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2VSZWcs
IHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpOworICAgIH0KICAg
ICBzdGF0aWMgQWRkcmVzcyBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTU4ODI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
NCw3ICsyODQsNyBAQCBwcml2YXRlOgogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1i
ZXJPZlJlZ2lzdGVycyA9IDU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVn
aXN0ZXJzID0gNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CiAKICAgICAvLyBUZW1wb3Jh
cnkgcmVnaXN0ZXJzLgpAQCAtMjkyLDExICsyOTIsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKICAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDQgPSBYODZSZWdpc3RlcnM6OmVzaTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0g
WDg2UmVnaXN0ZXJzOjplZGk7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IFg4NlJl
Z2lzdGVyczo6ZXNpOwogICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUg
SklULgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdU
MDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1Qx
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVkaTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2
UmVnaXN0ZXJzOjplYnA7CiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVz
IGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVy
cy4KICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IFg4NlJlZ2lzdGVyczo6
ZWN4OyAvLyByZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gWDg2
UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCkBAIC0zMTAsNyArMzExLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJl
Z1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0IH07CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVn
VDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5k
ZXhbaW5kZXhdOwogICAgIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
ZGV4Rm9yUmVnaXN0ZXJbOF0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCA0LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
ZGV4Rm9yUmVnaXN0ZXJbOF0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCA1LCA0IH07CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJb
cmVnXTsKICAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMzUyLDcgKzM1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNl
IHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKLSAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTM7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJw
OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgdGFnVHlwZU51bWJlclJlZ2lzdGVyID0gWDg2UmVn
aXN0ZXJzOjpyMTQ7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0YWdNYXNrUmVnaXN0ZXIgPSBY
ODZSZWdpc3RlcnM6OnIxNTsKICAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgpAQCAtNDQ0LDcg
KzQ0NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2Vs
aW5lIEpJVC4KICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0g
cmVnVDA7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSBy
ZWdUMTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gQVJNUmVn
aXN0ZXJzOjpyNTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0g
QVJNUmVnaXN0ZXJzOjpmcDsKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFt
ZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0
ZXJzLgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gQVJNUmVnaXN0ZXJz
OjpyMDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IEFS
TVJlZ2lzdGVyczo6cjE7IC8vIHJlZ1QxCkBAIC01MDQsNyArNTA1LDcgQEAgcHVibGljOgogICAg
IC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDA7CiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0
ZXJzOjp4MjY7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IEFS
TTY0UmVnaXN0ZXJzOjp4MjU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHRhZ1R5
cGVOdW1iZXJSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7CiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyB0YWdNYXNrUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI4OwogICAgIC8vIFRl
bXBvcmFyeSByZWdpc3RlcnMuCkBAIC02MDUsNyArNjA2LDcgQEAgcHVibGljOgogICAgIC8vIFRo
ZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMDsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6ZnA7CiAgICAgLy8g
VGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3Nl
IGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEwOwogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6YTE7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1ODgyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MTcsOCArMTcxNyw4IEBAIGFzbSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCiBISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCi0gICAgIm1vdiAwKCVyMTMpLCAlcjEzXG4iIC8vIENhbGxlckZyYW1lQW5kUEM6OmNhbGxl
ckZyYW1lCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAgIm1vdiAwKCVyYnApLCAlcmJwXG4i
IC8vIENhbGxlckZyYW1lQW5kUEM6OmNhbGxlckZyYW1lCisgICAgIm1vdiAlcmJwLCAlcmRpXG4i
CiAgICAgImptcCAiIExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZSkgIlxuIgogKTsKIApAQCAtMTcyOCw4ICsxNzI4LDggQEAgYXNtICgKICIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIEhJREVfU1lNQk9M
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IDAoJWVkaSksICVlZGlcbiIgLy8gQ2FsbGVy
RnJhbWVBbmRQQzo6Y2FsbGVyRnJhbWUKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAi
bW92IDAoJWVicCksICVlYnBcbiIgLy8gQ2FsbGVyRnJhbWVBbmRQQzo6Y2FsbGVyRnJhbWUKKyAg
ICAibW92ICVlYnAsIDQoJWVzcClcbiIKICAgICAiam1wICIgTE9DQUxfUkVGRVJFTkNFKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCiApOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxNTg4MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHRoaXJkQXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjg7CiAj
ZW5kaWYKIAotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6cjEzOworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBj
YWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwogICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGFnTWFza1JlZ2lzdGVyID0gWDg2UmVn
aXN0ZXJzOjpyMTU7CiAKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6ZWN4OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVu
dFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZHg7CiAgICAgICAgIAotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJl
Z2lzdGVyczo6ZWJwOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDQgPSBBUk1SZWdp
c3RlcnM6OnI3OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUNSA9IEFSTVJl
Z2lzdGVyczo6cjg7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1l
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI1OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6ZnA7CiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpkMDsKICAgICAg
ICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpkMTsK
QEAgLTE0Niw3ICsxNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmVnVDMgPSBBUk02NFJlZ2lzdGVyczo6eDIzOwogICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7CiAgICAgICAgIAot
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTTY0
UmVnaXN0ZXJzOjp4MjU7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFt
ZVJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmZwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRhZ1R5cGVOdW1iZXJSZWdpc3RlciA9IEFSTTY0
UmVnaXN0ZXJzOjp4Mjc7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRhZ01hc2tS
ZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CkBAIC0xNzgsNyArMTc4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1Q0ID0gTUlQU1Jl
Z2lzdGVyczo6dDU7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1Q1ID0gTUlQ
U1JlZ2lzdGVyczo6dDY7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZy
YW1lUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpmcDsKICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IE1JUFNSZWdpc3Rl
cnM6OmY0OwogICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBNSVBT
UmVnaXN0ZXJzOjpmNjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE1ODgyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDExICsyMjQs
MTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNhbGxUb0phdmFTY3JpcHQoVgogICAgIGppdC5w
dXNoKEFSTVJlZ2lzdGVyczo6cjEwKTsKICAgICBqaXQucHVzaChBUk1SZWdpc3RlcnM6OnIxMSk7
CiAgICAgaml0LnB1c2goQVJNUmVnaXN0ZXJzOjpscik7Ci0KKyAgICBqaXQubW92ZShBUk1SZWdp
c3RlcnM6OnIxMSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0LnN1YlB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihFWFRSQV9TVEFDS19TSVpFKSwgQVJNUmVnaXN0ZXJzOjpzcCk7
CiAKICMgICBkZWZpbmUgQ0FMTEZSQU1FX1NSQ19SRUcgR1BSSW5mbzo6YXJndW1lbnRHUFIxCi0j
ICAgZGVmaW5lIFBSRVZJT1VTX0NBTExGUkFNRV9SRUcgQVJNUmVnaXN0ZXJzOjpyMTEKKyMgICBk
ZWZpbmUgUFJFVklPVVNfQ0FMTEZSQU1FX1JFRyBHUFJJbmZvOjpub25BcmdHUFIwCiAjZWxpZiBD
UFUoQVJNX1RIVU1CMikKICAgICBqaXQucHVzaChBUk1SZWdpc3RlcnM6OmxyKTsKICAgICBqaXQu
cHVzaChBUk1SZWdpc3RlcnM6OnI0KTsKQEAgLTIzOSwxMCArMjM5LDExIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjYWxsVG9KYXZhU2NyaXB0KFYKICAgICBqaXQucHVzaChBUk1SZWdpc3RlcnM6
OnI5KTsKICAgICBqaXQucHVzaChBUk1SZWdpc3RlcnM6OnIxMCk7CiAgICAgaml0LnB1c2goQVJN
UmVnaXN0ZXJzOjpyMTEpOworICAgIGppdC5tb3ZlKEFSTVJlZ2lzdGVyczo6cjcsIEdQUkluZm86
Om5vbkFyZ0dQUjApOwogICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
RVhUUkFfU1RBQ0tfU0laRSksIEFSTVJlZ2lzdGVyczo6c3ApOwogCiAjICAgZGVmaW5lIENBTExG
UkFNRV9TUkNfUkVHIEdQUkluZm86OmFyZ3VtZW50R1BSMQotIyAgIGRlZmluZSBQUkVWSU9VU19D
QUxMRlJBTUVfUkVHIEFSTVJlZ2lzdGVyczo6cjcKKyMgICBkZWZpbmUgUFJFVklPVVNfQ0FMTEZS
QU1FX1JFRyBHUFJJbmZvOjpub25BcmdHUFIwCiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgaml0LnB1
c2goQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICBqaXQucHVzaChBUk02NFJlZ2lzdGVyczo6eDE5
KTsKQEAgLTI1Niw5ICsyNTcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNhbGxUb0phdmFT
Y3JpcHQoVgogICAgIGppdC5wdXNoKEFSTTY0UmVnaXN0ZXJzOjp4MjcpOwogICAgIGppdC5wdXNo
KEFSTTY0UmVnaXN0ZXJzOjp4MjgpOwogICAgIGppdC5wdXNoKEFSTTY0UmVnaXN0ZXJzOjp4Mjkp
OworICAgIGppdC5tb3ZlKEFSTTY0UmVnaXN0ZXJzOjp4MjksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogCiAjICAgZGVmaW5lIENBTExGUkFNRV9TUkNfUkVHIEdQUkluZm86OmFyZ3VtZW50R1BSMQot
IyAgIGRlZmluZSBQUkVWSU9VU19DQUxMRlJBTUVfUkVHIEFSTTY0UmVnaXN0ZXJzOjp4MjkKKyMg
ICBkZWZpbmUgUFJFVklPVVNfQ0FMTEZSQU1FX1JFRyBHUFJJbmZvOjpub25BcmdHUFIwCiAjZWxp
ZiBDUFUoTUlQUykKICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFNU
QUNLX0xFTkdUSCksIE1JUFNSZWdpc3RlcnM6OnNwKTsKICAgICBqaXQuc3RvcmVQdHIoTUlQU1Jl
Z2lzdGVyczo6cmEsIENDYWxsSGVscGVyczo6QWRkcmVzcyhNSVBTUmVnaXN0ZXJzOjpzcCwgUFJF
U0VSVkVEX1JFVFVSTl9BRERSRVNTX09GRlNFVCkpOwpAQCAtMjcwLDkgKzI3MiwxMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgY2FsbFRvSmF2YVNjcmlwdChWCiAjaWYgV1RGX01JUFNfUElDCiAg
ICAgaml0LnN0b3JlUHRyKE1JUFNSZWdpc3RlcnM6OmdwKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KE1JUFNSZWdpc3RlcnM6OnNwLCBQUkVTRVJWRURfR1BfT0ZGU0VUKSk7CiAjZW5kaWYKKyAgICBq
aXQubW92ZShNSVBTUmVnaXN0ZXJzOjpmcCwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAKICMgICBk
ZWZpbmUgQ0FMTEZSQU1FX1NSQ19SRUcgR1BSSW5mbzo6YXJndW1lbnRHUFIxCi0jICAgZGVmaW5l
IFBSRVZJT1VTX0NBTExGUkFNRV9SRUcgTUlQU1JlZ2lzdGVyczo6ZnAKKyMgICBkZWZpbmUgUFJF
VklPVVNfQ0FMTEZSQU1FX1JFRyBHUFJJbmZvOjpub25BcmdHUFIwCiAjZWxpZiBDUFUoU0g0KQog
ICAgIGppdC5wdXNoKFNINFJlZ2lzdGVyczo6ZnApOwogICAgIGppdC5wdXNoKFNINFJlZ2lzdGVy
czo6cHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIJ
KHJldmlzaW9uIDE1ODgyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bTY0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgY2xhc3MgUmVnaXN0ZXJJ
RAogICAgICAgICB3aGVuICd0NicKICAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDEyJywga2lu
ZCkKICAgICAgICAgd2hlbiAnY2ZyJwotICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MjUnLCBr
aW5kKQorICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MjknLCBraW5kKQogICAgICAgICB3aGVu
ICdjc3IxJwogICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MjcnLCBraW5kKQogICAgICAgICB3
aGVuICdjc3IyJwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgko
cmV2aXNpb24gMTU4ODI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIGNsYXNzIFJlZ2lzdGVySUQKICAg
ICAgICAgd2hlbiAidDQiCiAgICAgICAgICAgICAicjEwIgogICAgICAgICB3aGVuICJjZnIiCi0g
ICAgICAgICAgICAicjUiCisgICAgICAgICAgICBpc0FSTXY3ID8gICJyNyIgOiAicjExIgogICAg
ICAgICB3aGVuICJsciIKICAgICAgICAgICAgICJsciIKICAgICAgICAgd2hlbiAic3AiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIJKHJldmlzaW9uIDE1ODgy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBjbGFzcyBSZWdpc3RlcklECiAgICAgICAgIHdoZW4g
InQ4IgogICAgICAgICAgICAgIiR0OCIKICAgICAgICAgd2hlbiAiY2ZyIgotICAgICAgICAgICAg
IiRzMCIKKyAgICAgICAgICAgICIkZnAiCiAgICAgICAgIHdoZW4gImxyIgogICAgICAgICAgICAg
IiRyYSIKICAgICAgICAgd2hlbiAic3AiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCShyZXZpc2lvbiAxNTg4MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTE2NiwyNiArMTY2LDI0IEBAIGNs
YXNzIFJlZ2lzdGVySUQKICAgICAgICAgICAgIGlmIGlzWDY0CiAgICAgICAgICAgICAgICAgY2Fz
ZSBraW5kCiAgICAgICAgICAgICAgICAgd2hlbiA6aGFsZgotICAgICAgICAgICAgICAgICAgICAi
JXIxM3ciCisgICAgICAgICAgICAgICAgICAgICIlYnAiCiAgICAgICAgICAgICAgICAgd2hlbiA6
aW50Ci0gICAgICAgICAgICAgICAgICAgICIlcjEzZCIKKyAgICAgICAgICAgICAgICAgICAgIiVl
YnAiCiAgICAgICAgICAgICAgICAgd2hlbiA6cHRyCi0gICAgICAgICAgICAgICAgICAgICIlcjEz
IgorICAgICAgICAgICAgICAgICAgICAiJXJicCIKICAgICAgICAgICAgICAgICB3aGVuIDpxdWFk
Ci0gICAgICAgICAgICAgICAgICAgICIlcjEzIgorICAgICAgICAgICAgICAgICAgICAiJXJicCIK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAg
ICAgICAgICAgZW5kCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FzZSBraW5k
Ci0gICAgICAgICAgICAgICAgd2hlbiA6Ynl0ZQotICAgICAgICAgICAgICAgICAgICAiJWRpbCIK
ICAgICAgICAgICAgICAgICB3aGVuIDpoYWxmCi0gICAgICAgICAgICAgICAgICAgICIlZGkiCisg
ICAgICAgICAgICAgICAgICAgICIlYnAiCiAgICAgICAgICAgICAgICAgd2hlbiA6aW50Ci0gICAg
ICAgICAgICAgICAgICAgICIlZWRpIgorICAgICAgICAgICAgICAgICAgICAiJWVicCIKICAgICAg
ICAgICAgICAgICB3aGVuIDpwdHIKLSAgICAgICAgICAgICAgICAgICAgIiVlZGkiCisgICAgICAg
ICAgICAgICAgICAgICIlZWJwIgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBlbmQK
</data>
<flag name="review"
          id="239194"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>