<?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>133834</bug_id>
          
          <creation_ts>2014-06-12 17:52:35 -0700</creation_ts>
          <short_desc>make RegisterAllocator smarter</short_desc>
          <delta_ts>2014-06-13 15:27:24 -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>CSS</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015298</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-12 17:52:35 -0700</bug_when>
    <thetext>The register allocator should not use a hash set for the few registers it keeps track of.  It should use a deque to cycle the register usage, and it should also have a way to indicate a preferred register to allocate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015305</commentid>
    <comment_count>1</comment_count>
      <attachid>233013</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-12 18:05:36 -0700</bug_when>
    <thetext>Created attachment 233013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015499</commentid>
    <comment_count>2</comment_count>
      <attachid>233013</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-13 12:54:55 -0700</bug_when>
    <thetext>Comment on attachment 233013
Patch

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

Very neat! I love it.

&gt; Source/WebCore/cssjit/RegisterAllocator.h:93
&gt; +        RELEASE_ASSERT(m_registers.size());

I think you should put this assertion one line above. Otherwise it looks a little weird accessing the first element before checking if the size is valid.

&gt; Source/WebCore/cssjit/RegisterAllocator.h:113
&gt; +    JSC::MacroAssembler::RegisterID allocateRegisterWithPreference(JSC::MacroAssembler::RegisterID registerID)

registerID -&gt; preferedRegisterID?

&gt; Source/WebCore/cssjit/RegisterAllocator.h:115
&gt; +        UNUSED_PARAM(registerID);

Forgot this?

&gt; Source/WebCore/cssjit/RegisterAllocator.h:133
&gt; +        for (auto reg : m_registers)

reg -&gt; register</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015520</commentid>
    <comment_count>3</comment_count>
      <attachid>233072</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-13 13:55:52 -0700</bug_when>
    <thetext>Created attachment 233072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015552</commentid>
    <comment_count>4</comment_count>
      <attachid>233072</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-13 15:27:22 -0700</bug_when>
    <thetext>Comment on attachment 233072
Patch

Clearing flags on attachment: 233072

Committed r169953: &lt;http://trac.webkit.org/changeset/169953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015553</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-13 15:27:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233013</attachid>
            <date>2014-06-12 18:05:36 -0700</date>
            <delta_ts>2014-06-13 13:55:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133834-20140612180511.patch</filename>
            <type>text/plain</type>
            <size>11512</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTkyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA2LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBjc3Mg
aml0IGFsbG9jYXRvciBzbWFydGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMzODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBjc3NqaXQvUmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjphbGxvY2F0ZVJlZ2lzdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjpkZWFsbG9jYXRlUmVnaXN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVnaXN0ZXJBbGxvY2F0b3I6OnJlc2VydmVDYWxsZWVTYXZlZFJlZ2lzdGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFJlZ2lzdGVyOjpMb2NhbFJlZ2lzdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjpSZWdpc3RlckFsbG9jYXRvcik6CisgICAg
ICAgIFVzZSBhIERlcXVlIGZvciB0aGUgcmVnaXN0ZXJzLiAgQWxsb2NhdGUgZnJvbSB0aGUgZnJv
bnQgYW5kIGRlYWxsb2NhdGUgdG8gdGhlIGJhY2sgdG8gY3ljbGUgdGhlIHJlZ2lzdGVyIHVzYWdl
LgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlUmVnaXN0ZXJX
aXRoUHJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFJlZ2lzdGVyV2l0aFByZWZl
cmVuY2U6OkxvY2FsUmVnaXN0ZXJXaXRoUHJlZmVyZW5jZSk6CisgICAgICAgIEFkZGVkIHRoZSBh
YmlsaXR5IHRvIHNwZWNpZnkgdGhhdCB3ZSBwcmVmZXIgYSBjZXJ0YWluIHJlZ2lzdGVyIGlmIGl0
IGlzIGF2YWlsYWJsZSB3aGlsZSBhbGxvY2F0aW5nLgorICAgICAgICBUaGVzZSBmdW5jdGlvbnMg
YWx3YXlzIHJldHVybiBhIHJlZ2lzdGVyLiAgSXQgaXMganVzdCBhIGRpZmZlcmVudCByZWdpc3Rl
ciB0aGFuIHByZWZlcnJlZCBpZiB0aGUgcHJlZmVycmVkIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFi
bGUuCisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRy
aWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNBY3Rp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0hvdmVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050
aENoaWxkKToKKyAgICAgICAgV2hlbmV2ZXIgd2UgYXJlIGFsbG9jYXRpbmcgYSByZWdpc3RlciBm
b3IgdGhlIHNlY29uZCBhcmd1bWVudCwgd2Ugc2hvdWxkIHNwZWNpZnkgdGhhdCB3ZSAKKyAgICAg
ICAgcHJlZmVyIHRvIGhhdmUgYXJndW1lbnRHUFIxIHRvIHJlZHVjZSByZWdpc3RlciBzd2FwcGlu
ZyB3aGVuIHByZXBhcmluZyBmb3IgYSBmdW5jdGlvbiBjYWxsLgorICAgICAgICBUaGlzIGNhbm5v
dCBiZSBkb25lIGZvciBhcmd1bWVudEdQUjAgYmVjYXVzZSBlbGVtZW50QWRkcmVzc1JlZ2lzdGVy
IGlzIGFyZ3VtZW50R1BSMCBhbmQgaXQgaXMgYWx3YXlzIGFsbG9jYXRlZC4KKwogMjAxNC0wNi0x
MiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBC
dWlsZCBmaXggYWZ0ZXIgcjE2OTkxOS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9SZWdp
c3RlckFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9SZWdp
c3RlckFsbG9jYXRvci5oCShyZXZpc2lvbiAxNjk4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvUmVnaXN0ZXJBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
I2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
TWFjcm9Bc3NlbWJsZXIuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtODksOSArODksOSBAQCBwdWJsaWM6CiAKICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGFsbG9jYXRlUmVnaXN0ZXIoKQogICAgIHsKLSAgICAgICAgYXV0byBmaXJzdCA9
IG1fcmVnaXN0ZXJzLmJlZ2luKCk7Ci0gICAgICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lz
dGVySUQgcmVnaXN0ZXJJRCA9IHN0YXRpY19jYXN0PEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lz
dGVySUQ+KCpmaXJzdCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVnaXN0ZXJzLnJlbW92
ZShmaXJzdCkpOworICAgICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZ2lz
dGVySUQgPSBtX3JlZ2lzdGVycy5maXJzdCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Jl
Z2lzdGVycy5zaXplKCkpOworICAgICAgICBtX3JlZ2lzdGVycy5yZW1vdmVGaXJzdCgpOwogICAg
ICAgICBBU1NFUlQoIW1fYWxsb2NhdGVkUmVnaXN0ZXJzLmNvbnRhaW5zKHJlZ2lzdGVySUQpKTsK
ICAgICAgICAgbV9hbGxvY2F0ZWRSZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVySUQpOwogICAgICAg
ICByZXR1cm4gcmVnaXN0ZXJJRDsKQEAgLTk5LDkgKzk5LDI5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWxsb2NhdGVSZWdpc3RlcihKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZ2lz
dGVySUQpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZ2lzdGVycy5yZW1vdmUo
cmVnaXN0ZXJJRCkpOwotICAgICAgICBBU1NFUlQoIW1fYWxsb2NhdGVkUmVnaXN0ZXJzLmNvbnRh
aW5zKHJlZ2lzdGVySUQpKTsKLSAgICAgICAgbV9hbGxvY2F0ZWRSZWdpc3RlcnMuYXBwZW5kKHJl
Z2lzdGVySUQpOworICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX3JlZ2lzdGVycy5iZWdpbigpOyBp
dCAhPSBtX3JlZ2lzdGVycy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCppdCA9PSBy
ZWdpc3RlcklEKSB7CisgICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMucmVtb3ZlKGl0KTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoIW1fYWxsb2NhdGVkUmVnaXN0ZXJzLmNvbnRhaW5zKHJlZ2lz
dGVySUQpKTsKKyAgICAgICAgICAgICAgICBtX2FsbG9jYXRlZFJlZ2lzdGVycy5hcHBlbmQocmVn
aXN0ZXJJRCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAor
ICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgYWxsb2NhdGVSZWdpc3RlcldpdGhQ
cmVmZXJlbmNlKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnaXN0ZXJJRCkKKyAg
ICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlcklEKTsKKyAgICAgICAgZm9yIChhdXRv
IGl0ID0gbV9yZWdpc3RlcnMuYmVnaW4oKTsgaXQgIT0gbV9yZWdpc3RlcnMuZW5kKCk7ICsraXQp
IHsKKyAgICAgICAgICAgIGlmICgqaXQgPT0gcmVnaXN0ZXJJRCkgeworICAgICAgICAgICAgICAg
IG1fcmVnaXN0ZXJzLnJlbW92ZShpdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FsbG9j
YXRlZFJlZ2lzdGVycy5jb250YWlucyhyZWdpc3RlcklEKSk7CisgICAgICAgICAgICAgICAgbV9h
bGxvY2F0ZWRSZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVySUQpOworICAgICAgICAgICAgICAgIHJl
dHVybiByZWdpc3RlcklEOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biBhbGxvY2F0ZVJlZ2lzdGVyKCk7CiAgICAgfQogCiAgICAgdm9pZCBkZWFsbG9jYXRlUmVnaXN0
ZXIoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWdpc3RlcklEKQpAQCAtMTEwLDcg
KzEzMCw5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gTW9zdCBhbGxvY2F0aW9uL2RlYWxsb2NhdGlv
biBoYXBwZW4gaW4gc3RhY2stbGlrZSBvcmRlci4gSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzCiAg
ICAgICAgIC8vIGp1c3QgcmVtb3ZlcyB0aGUgbGFzdCBpdGVtLgogICAgICAgICBtX2FsbG9jYXRl
ZFJlZ2lzdGVycy5yZW1vdmUobV9hbGxvY2F0ZWRSZWdpc3RlcnMucmV2ZXJzZUZpbmQocmVnaXN0
ZXJJRCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZ2lzdGVycy5hZGQocmVnaXN0ZXJJ
RCkuaXNOZXdFbnRyeSk7CisgICAgICAgIGZvciAoYXV0byByZWcgOiBtX3JlZ2lzdGVycykKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlZyAhPSByZWdpc3RlcklEKTsKKyAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVySUQpOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCBjYWxsZWVTYXZlZFJlZ2lzdGVyQ291bnQ+
JiByZXNlcnZlQ2FsbGVlU2F2ZWRSZWdpc3RlcnModW5zaWduZWQgY291bnQpCkBAIC0xMjAsNyAr
MTQyLDcgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewogICAgICAgICAgICAgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWdp
c3RlcklkID0gY2FsbGVlU2F2ZWRSZWdpc3RlcnNbaV07CiAgICAgICAgICAgICBtX3Jlc2VydmVk
Q2FsbGVlU2F2ZWRSZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVySWQpOwotICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYWRkKHJlZ2lzdGVySWQpOworICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KHJlZ2lzdGVySWQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3Jlc2VydmVkQ2FsbGVl
U2F2ZWRSZWdpc3RlcnM7CiAgICAgfQpAQCAtMTQ2LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbV9y
ZWdpc3RlcnM7CisgICAgRGVxdWU8SlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gbV9y
ZWdpc3RlcnM7CiAgICAgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIHJl
Z2lzdGVyQ291bnQ+IG1fYWxsb2NhdGVkUmVnaXN0ZXJzOwogICAgIFZlY3RvcjxKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklELCBjYWxsZWVTYXZlZFJlZ2lzdGVyQ291bnQ+IG1fcmVzZXJ2
ZWRDYWxsZWVTYXZlZFJlZ2lzdGVyczsKIH07CkBAIC0xNjksMTUgKzE5MSwyOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX3JlZ2lzdGVyOwogICAgIH0KIAotcHJpdmF0ZToKK3Byb3RlY3Rl
ZDoKKyAgICBleHBsaWNpdCBMb2NhbFJlZ2lzdGVyKFJlZ2lzdGVyQWxsb2NhdG9yJiBhbGxvY2F0
b3IsIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnaXN0ZXJJRCkKKyAgICAgICAg
OiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCisgICAgICAgICwgbV9yZWdpc3RlcihyZWdpc3RlcklE
KQorICAgIHsKKyAgICB9CiAgICAgUmVnaXN0ZXJBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOwogICAg
IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgbV9yZWdpc3RlcjsKIH07CiAKK2NsYXNz
IExvY2FsUmVnaXN0ZXJXaXRoUHJlZmVyZW5jZSA6IHB1YmxpYyBMb2NhbFJlZ2lzdGVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBMb2NhbFJlZ2lzdGVyV2l0aFByZWZlcmVuY2UoUmVnaXN0ZXJB
bGxvY2F0b3ImIGFsbG9jYXRvciwgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBwcmVm
ZXJyZWRSZWdpc3RlcikKKyAgICAgICAgOiBMb2NhbFJlZ2lzdGVyKGFsbG9jYXRvciwgYWxsb2Nh
dG9yLmFsbG9jYXRlUmVnaXN0ZXJXaXRoUHJlZmVyZW5jZShwcmVmZXJyZWRSZWdpc3RlcikpCisg
ICAgeworICAgIH0KK307CisgICAgCiBpbmxpbmUgUmVnaXN0ZXJBbGxvY2F0b3I6OlJlZ2lzdGVy
QWxsb2NhdG9yKCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSChjYWxsZXJTYXZlZFJlZ2lzdGVycyk7ICsraSkKLSAgICAgICAgbV9yZWdpc3RlcnMuYWRk
KGNhbGxlclNhdmVkUmVnaXN0ZXJzW2ldKTsKKyAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKGNh
bGxlclNhdmVkUmVnaXN0ZXJzW2ldKTsKIH0KIAogaW5saW5lIFJlZ2lzdGVyQWxsb2NhdG9yOjp+
UmVnaXN0ZXJBbGxvY2F0b3IoKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9y
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3Rv
ckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMTY5ODA4KQorKysgU291cmNlL1dlYkNvcmUvY3Nzaml0
L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDI3LDcgKzIwMjcsNyBA
QCBzdGF0aWMgaW5saW5lIEFzc2VtYmxlcjo6SnVtcCB0ZXN0SXNIVE1MCiAKIHZvaWQgU2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hp
bmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwZWN0ZWRW
YWx1ZSwgYm9vbCBjYW5EZWZhdWx0VG9DYXNlU2Vuc2l0aXZlVmFsdWVNYXRjaCkKIHsKLSAgICBM
b2NhbFJlZ2lzdGVyIGV4cGVjdGVkVmFsdWVSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsK
KyAgICBMb2NhbFJlZ2lzdGVyV2l0aFByZWZlcmVuY2UgZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyKG1f
cmVnaXN0ZXJBbGxvY2F0b3IsIEpTQzo6R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBtX2Fz
c2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihleHBlY3RlZFZhbHVlLmltcGwo
KSksIGV4cGVjdGVkVmFsdWVSZWdpc3Rlcik7CiAKICAgICBpZiAoY2FuRGVmYXVsdFRvQ2FzZVNl
bnNpdGl2ZVZhbHVlTWF0Y2gpCkBAIC0yMDUxLDcgKzIwNTEsNyBAQCB2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtCiAKICAgICAgICAgRnVuY3Rpb25DYWxsIGZ1bmN0aW9u
Q2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0FsbG9jYXRvciwg
bV9mdW5jdGlvbkNhbGxzKTsKICAgICAgICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVz
cyhXVEY6OmVxdWFsSWdub3JpbmdDYXNlTm9uTnVsbCk7Ci0gICAgICAgIGZ1bmN0aW9uQ2FsbC5z
ZXRUd29Bcmd1bWVudHMoZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyLCB2YWx1ZVN0cmluZ0ltcGwpOwor
ICAgICAgICBmdW5jdGlvbkNhbGwuc2V0VHdvQXJndW1lbnRzKHZhbHVlU3RyaW5nSW1wbCwgZXhw
ZWN0ZWRWYWx1ZVJlZ2lzdGVyKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5jdGlv
bkNhbGwuY2FsbEFuZEJyYW5jaE9uQm9vbGVhblJldHVyblZhbHVlKEFzc2VtYmxlcjo6WmVybykp
OwogCiAgICAgICAgIHNraXBDYXNlSW5zZW5zaXRpdmVDb21wYXJpc29uLmxpbmsoJm1fYXNzZW1i
bGVyKTsKQEAgLTIwNjAsNyArMjA2MCw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZUVsZW0KIAogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVu
dEF0dHJpYnV0ZUZ1bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudEF0dHJpYnV0ZUFkZHJl
c3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwZWN0ZWRWYWx1ZSwgYm9vbCBjYW5EZWZhdWx0VG9D
YXNlU2Vuc2l0aXZlVmFsdWVNYXRjaCwgSlNDOjpGdW5jdGlvblB0ciBjYXNlU2Vuc2l0aXZlVGVz
dCwgSlNDOjpGdW5jdGlvblB0ciBjYXNlSW5zZW5zaXRpdmVUZXN0KQogewotICAgIExvY2FsUmVn
aXN0ZXIgZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOworICAgIExv
Y2FsUmVnaXN0ZXJXaXRoUHJlZmVyZW5jZSBleHBlY3RlZFZhbHVlUmVnaXN0ZXIobV9yZWdpc3Rl
ckFsbG9jYXRvciwgSlNDOjpHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgIG1fYXNzZW1ibGVy
Lm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGV4cGVjdGVkVmFsdWUuaW1wbCgpKSwgZXhw
ZWN0ZWRWYWx1ZVJlZ2lzdGVyKTsKIAogICAgIGlmIChjYW5EZWZhdWx0VG9DYXNlU2Vuc2l0aXZl
VmFsdWVNYXRjaCkgewpAQCAtMjE0OSw3ICsyMTQ5LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlRWxlbQogICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5j
dGlvbkNhbGwuY2FsbEFuZEJyYW5jaE9uQm9vbGVhblJldHVyblZhbHVlKEFzc2VtYmxlcjo6WmVy
bykpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0VG9DaGVj
a2luZ0NvbnRleHQgPSBtX3N0YWNrQWxsb2NhdG9yLm9mZnNldFRvU3RhY2tSZWZlcmVuY2UobV9j
aGVja2luZ0NvbnRleHRTdGFja1JlZmVyZW5jZSk7Ci0gICAgICAgICAgICBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgY2hlY2tpbmdDb250ZXh0ID0gbV9yZWdpc3RlckFsbG9jYXRvci5hbGxvY2F0ZVJl
Z2lzdGVyKCk7CisgICAgICAgICAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hlY2tpbmdDb250
ZXh0ID0gbV9yZWdpc3RlckFsbG9jYXRvci5hbGxvY2F0ZVJlZ2lzdGVyV2l0aFByZWZlcmVuY2Uo
SlNDOjpHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MoQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
b2Zmc2V0VG9DaGVja2luZ0NvbnRleHQpLCBjaGVja2luZ0NvbnRleHQpOwogICAgICAgICAgICAg
bV9yZWdpc3RlckFsbG9jYXRvci5kZWFsbG9jYXRlUmVnaXN0ZXIoY2hlY2tpbmdDb250ZXh0KTsK
IApAQCAtMjIzNCw3ICsyMjM0LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlRWxlbQogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGZ1bmN0aW9uQ2FsbC5jYWxsQW5k
QnJhbmNoT25Cb29sZWFuUmV0dXJuVmFsdWUoQXNzZW1ibGVyOjpaZXJvKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKGZyYWdtZW50LnJlbGF0aW9uVG9SaWdodEZyYWdtZW50ID09IEZyYWdt
ZW50UmVsYXRpb246OlJpZ2h0bW9zdCkgewotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBjaGVj
a2luZ0NvbnRleHQobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgICAgICBMb2NhbFJlZ2lz
dGVyV2l0aFByZWZlcmVuY2UgY2hlY2tpbmdDb250ZXh0KG1fcmVnaXN0ZXJBbGxvY2F0b3IsIEpT
Qzo6R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBu
b3RSZXNvbHZpbmdTdHlsZSA9IGp1bXBJZk5vdFJlc29sdmluZ1N0eWxlKGNoZWNraW5nQ29udGV4
dCk7CiAgICAgICAgICAgICBhZGRGbGFnc1RvRWxlbWVudFN0eWxlRnJvbUNvbnRleHQoY2hlY2tp
bmdDb250ZXh0LCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZsYWdJc2FmZmVjdGVk
QnlIb3ZlcigpKTsKICAgICAgICAgICAgIG5vdFJlc29sdmluZ1N0eWxlLmxpbmsoJm1fYXNzZW1i
bGVyKTsKQEAgLTIyNDUsNyArMjI0NSw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZUVsZW0KICAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxs
LmNhbGxBbmRCcmFuY2hPbkJvb2xlYW5SZXR1cm5WYWx1ZShBc3NlbWJsZXI6Olplcm8pKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldFRvQ2hlY2tpbmdDb250
ZXh0ID0gbV9zdGFja0FsbG9jYXRvci5vZmZzZXRUb1N0YWNrUmVmZXJlbmNlKG1fY2hlY2tpbmdD
b250ZXh0U3RhY2tSZWZlcmVuY2UpOwotICAgICAgICAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGNoZWNraW5nQ29udGV4dCA9IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVSZWdpc3Rlcigp
OworICAgICAgICAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCA9IG1f
cmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVSZWdpc3RlcldpdGhQcmVmZXJlbmNlKEpTQzo6R1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNz
ZW1ibGVyOjpBZGRyZXNzKEFzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFRv
Q2hlY2tpbmdDb250ZXh0KSwgY2hlY2tpbmdDb250ZXh0KTsKICAgICAgICAgICAgIG1fcmVnaXN0
ZXJBbGxvY2F0b3IuZGVhbGxvY2F0ZVJlZ2lzdGVyKGNoZWNraW5nQ29udGV4dCk7CiAKQEAgLTI1
MDUsNyArMjUwNSw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0K
ICAgICAgICAgbV9yZWdpc3RlckFsbG9jYXRvci5kZWFsbG9jYXRlUmVnaXN0ZXIocGFyZW50RWxl
bWVudCk7CiAKICAgICAvLyBTZXR1cCB0aGUgY291bnRlciBhdCAxLgotICAgIExvY2FsUmVnaXN0
ZXIgZWxlbWVudENvdW50ZXIobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgTG9jYWxSZWdpc3Rl
cldpdGhQcmVmZXJlbmNlIGVsZW1lbnRDb3VudGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IsIEpTQzo6
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKDEpLCBlbGVtZW50Q291bnRlcik7CiAKICAgICAvLyBMb29wIG92ZXIgdGhl
IHByZXZpb3VzIGFkamFjZW50IGVsZW1lbnRzIGFuZCBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233072</attachid>
            <date>2014-06-13 13:55:52 -0700</date>
            <delta_ts>2014-06-13 15:27:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133834-20140613135529.patch</filename>
            <type>text/plain</type>
            <size>11557</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTk0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA2LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBjc3Mg
aml0IGFsbG9jYXRvciBzbWFydGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMzODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBjc3NqaXQvUmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjphbGxvY2F0ZVJlZ2lzdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjpkZWFsbG9jYXRlUmVnaXN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVnaXN0ZXJBbGxvY2F0b3I6OnJlc2VydmVDYWxsZWVTYXZlZFJlZ2lzdGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFJlZ2lzdGVyOjpMb2NhbFJlZ2lzdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjpSZWdpc3RlckFsbG9jYXRvcik6CisgICAg
ICAgIFVzZSBhIERlcXVlIGZvciB0aGUgcmVnaXN0ZXJzLiAgQWxsb2NhdGUgZnJvbSB0aGUgZnJv
bnQgYW5kIGRlYWxsb2NhdGUgdG8gdGhlIGJhY2sgdG8gY3ljbGUgdGhlIHJlZ2lzdGVyIHVzYWdl
LgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlUmVnaXN0ZXJX
aXRoUHJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFJlZ2lzdGVyV2l0aFByZWZl
cmVuY2U6OkxvY2FsUmVnaXN0ZXJXaXRoUHJlZmVyZW5jZSk6CisgICAgICAgIEFkZGVkIHRoZSBh
YmlsaXR5IHRvIHNwZWNpZnkgdGhhdCB3ZSBwcmVmZXIgYSBjZXJ0YWluIHJlZ2lzdGVyIGlmIGl0
IGlzIGF2YWlsYWJsZSB3aGlsZSBhbGxvY2F0aW5nLgorICAgICAgICBUaGVzZSBmdW5jdGlvbnMg
YWx3YXlzIHJldHVybiBhIHJlZ2lzdGVyLiAgSXQgaXMganVzdCBhIGRpZmZlcmVudCByZWdpc3Rl
ciB0aGFuIHByZWZlcnJlZCBpZiB0aGUgcHJlZmVycmVkIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFi
bGUuCisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRy
aWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNBY3Rp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0hvdmVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050
aENoaWxkKToKKyAgICAgICAgV2hlbmV2ZXIgd2UgYXJlIGFsbG9jYXRpbmcgYSByZWdpc3RlciBm
b3IgdGhlIHNlY29uZCBhcmd1bWVudCwgd2Ugc2hvdWxkIHNwZWNpZnkgdGhhdCB3ZSAKKyAgICAg
ICAgcHJlZmVyIHRvIGhhdmUgYXJndW1lbnRHUFIxIHRvIHJlZHVjZSByZWdpc3RlciBzd2FwcGlu
ZyB3aGVuIHByZXBhcmluZyBmb3IgYSBmdW5jdGlvbiBjYWxsLgorICAgICAgICBUaGlzIGNhbm5v
dCBiZSBkb25lIGZvciBhcmd1bWVudEdQUjAgYmVjYXVzZSBlbGVtZW50QWRkcmVzc1JlZ2lzdGVy
IGlzIGFyZ3VtZW50R1BSMCBhbmQgaXQgaXMgYWx3YXlzIGFsbG9jYXRlZC4KKwogMjAxNC0wNi0x
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IE1ha2UgY3NzIGppdCBjb21waWxlIGZvciBhcm12Ny4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9SZWdpc3RlckFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9SZWdpc3RlckFsbG9jYXRvci5oCShyZXZpc2lvbiAxNjk5NDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvUmVnaXN0ZXJBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQogCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWFjcm9Bc3NlbWJsZXIuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTAyLDkgKzEwMiw5IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6TWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgYWxsb2NhdGVSZWdpc3RlcigpCiAgICAgewotICAgICAgICBh
dXRvIGZpcnN0ID0gbV9yZWdpc3RlcnMuYmVnaW4oKTsKLSAgICAgICAgSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6UmVnaXN0ZXJJRCByZWdpc3RlcklEID0gc3RhdGljX2Nhc3Q8SlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6UmVnaXN0ZXJJRD4oKmZpcnN0KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWdp
c3RlcnMucmVtb3ZlKGZpcnN0KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVnaXN0ZXJz
LnNpemUoKSk7CisgICAgICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnaXN0
ZXJJRCA9IG1fcmVnaXN0ZXJzLmZpcnN0KCk7CisgICAgICAgIG1fcmVnaXN0ZXJzLnJlbW92ZUZp
cnN0KCk7CiAgICAgICAgIEFTU0VSVCghbV9hbGxvY2F0ZWRSZWdpc3RlcnMuY29udGFpbnMocmVn
aXN0ZXJJRCkpOwogICAgICAgICBtX2FsbG9jYXRlZFJlZ2lzdGVycy5hcHBlbmQocmVnaXN0ZXJJ
RCk7CiAgICAgICAgIHJldHVybiByZWdpc3RlcklEOwpAQCAtMTEyLDkgKzExMiwyOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXIoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVn
aXN0ZXJJRCByZWdpc3RlcklEKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWdp
c3RlcnMucmVtb3ZlKHJlZ2lzdGVySUQpKTsKLSAgICAgICAgQVNTRVJUKCFtX2FsbG9jYXRlZFJl
Z2lzdGVycy5jb250YWlucyhyZWdpc3RlcklEKSk7Ci0gICAgICAgIG1fYWxsb2NhdGVkUmVnaXN0
ZXJzLmFwcGVuZChyZWdpc3RlcklEKTsKKyAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9yZWdpc3Rl
cnMuYmVnaW4oKTsgaXQgIT0gbV9yZWdpc3RlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAg
IGlmICgqaXQgPT0gcmVnaXN0ZXJJRCkgeworICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLnJl
bW92ZShpdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FsbG9jYXRlZFJlZ2lzdGVycy5j
b250YWlucyhyZWdpc3RlcklEKSk7CisgICAgICAgICAgICAgICAgbV9hbGxvY2F0ZWRSZWdpc3Rl
cnMuYXBwZW5kKHJlZ2lzdGVySUQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGFsbG9jYXRl
UmVnaXN0ZXJXaXRoUHJlZmVyZW5jZShKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHBy
ZWZlcnJlZFJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9yZWdpc3Rl
cnMuYmVnaW4oKTsgaXQgIT0gbV9yZWdpc3RlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAg
IGlmICgqaXQgPT0gcHJlZmVycmVkUmVnaXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBtX3JlZ2lz
dGVycy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hbGxvY2F0ZWRSZWdp
c3RlcnMuY29udGFpbnMocHJlZmVycmVkUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICBtX2Fs
bG9jYXRlZFJlZ2lzdGVycy5hcHBlbmQocHJlZmVycmVkUmVnaXN0ZXIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBwcmVmZXJyZWRSZWdpc3RlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gYWxsb2NhdGVSZWdpc3RlcigpOwogICAgIH0KIAogICAgIHZvaWQgZGVh
bGxvY2F0ZVJlZ2lzdGVyKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnaXN0ZXJJ
RCkKQEAgLTEyMyw3ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1vc3QgYWxsb2NhdGlv
bi9kZWFsbG9jYXRpb24gaGFwcGVuIGluIHN0YWNrLWxpa2Ugb3JkZXIuIEluIHRoZSBjb21tb24g
Y2FzZSwgdGhpcwogICAgICAgICAvLyBqdXN0IHJlbW92ZXMgdGhlIGxhc3QgaXRlbS4KICAgICAg
ICAgbV9hbGxvY2F0ZWRSZWdpc3RlcnMucmVtb3ZlKG1fYWxsb2NhdGVkUmVnaXN0ZXJzLnJldmVy
c2VGaW5kKHJlZ2lzdGVySUQpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWdpc3RlcnMu
YWRkKHJlZ2lzdGVySUQpLmlzTmV3RW50cnkpOworICAgICAgICBmb3IgKGF1dG8gdW5hbGxvY2F0
ZWRSZWdpc3RlciA6IG1fcmVnaXN0ZXJzKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodW5h
bGxvY2F0ZWRSZWdpc3RlciAhPSByZWdpc3RlcklEKTsKKyAgICAgICAgbV9yZWdpc3RlcnMuYXBw
ZW5kKHJlZ2lzdGVySUQpOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklELCBjYWxsZWVTYXZlZFJlZ2lzdGVyQ291bnQ+JiByZXNlcnZlQ2Fs
bGVlU2F2ZWRSZWdpc3RlcnModW5zaWduZWQgY291bnQpCkBAIC0xMzMsNyArMTU0LDcgQEAgcHVi
bGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICAgICAgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWdpc3RlcklkID0gY2Fs
bGVlU2F2ZWRSZWdpc3RlcnNbaV07CiAgICAgICAgICAgICBtX3Jlc2VydmVkQ2FsbGVlU2F2ZWRS
ZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVySWQpOwotICAgICAgICAgICAgbV9yZWdpc3RlcnMuYWRk
KHJlZ2lzdGVySWQpOworICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVySWQp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3Jlc2VydmVkQ2FsbGVlU2F2ZWRSZWdpc3Rl
cnM7CiAgICAgfQpAQCAtMTYxLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbV9yZWdpc3RlcnM7Cisg
ICAgRGVxdWU8SlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gbV9yZWdpc3RlcnM7CiAg
ICAgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIHJlZ2lzdGVyQ291bnQ+
IG1fYWxsb2NhdGVkUmVnaXN0ZXJzOwogICAgIFZlY3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklELCBjYWxsZWVTYXZlZFJlZ2lzdGVyQ291bnQ+IG1fcmVzZXJ2ZWRDYWxsZWVTYXZl
ZFJlZ2lzdGVyczsKIH07CkBAIC0xODQsMTUgKzIwNSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3JlZ2lzdGVyOwogICAgIH0KIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBMb2NhbFJlZ2lzdGVyKFJlZ2lzdGVyQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEpTQzo6TWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnaXN0ZXJJRCkKKyAgICAgICAgOiBtX2FsbG9jYXRv
cihhbGxvY2F0b3IpCisgICAgICAgICwgbV9yZWdpc3RlcihyZWdpc3RlcklEKQorICAgIHsKKyAg
ICB9CiAgICAgUmVnaXN0ZXJBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOwogICAgIEpTQzo6TWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgbV9yZWdpc3RlcjsKIH07CiAKK2NsYXNzIExvY2FsUmVnaXN0
ZXJXaXRoUHJlZmVyZW5jZSA6IHB1YmxpYyBMb2NhbFJlZ2lzdGVyIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBMb2NhbFJlZ2lzdGVyV2l0aFByZWZlcmVuY2UoUmVnaXN0ZXJBbGxvY2F0b3ImIGFs
bG9jYXRvciwgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBwcmVmZXJyZWRSZWdpc3Rl
cikKKyAgICAgICAgOiBMb2NhbFJlZ2lzdGVyKGFsbG9jYXRvciwgYWxsb2NhdG9yLmFsbG9jYXRl
UmVnaXN0ZXJXaXRoUHJlZmVyZW5jZShwcmVmZXJyZWRSZWdpc3RlcikpCisgICAgeworICAgIH0K
K307CisgICAgCiBpbmxpbmUgUmVnaXN0ZXJBbGxvY2F0b3I6OlJlZ2lzdGVyQWxsb2NhdG9yKCkK
IHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChjYWxsZXJT
YXZlZFJlZ2lzdGVycyk7ICsraSkKLSAgICAgICAgbV9yZWdpc3RlcnMuYWRkKGNhbGxlclNhdmVk
UmVnaXN0ZXJzW2ldKTsKKyAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKGNhbGxlclNhdmVkUmVn
aXN0ZXJzW2ldKTsKIH0KIAogaW5saW5lIFJlZ2lzdGVyQWxsb2NhdG9yOjp+UmVnaXN0ZXJBbGxv
Y2F0b3IoKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNw
cAkocmV2aXNpb24gMTY5OTQ3KQorKysgU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDY0LDcgKzIwNjQsNyBAQCBzdGF0aWMgaW5s
aW5lIEFzc2VtYmxlcjo6SnVtcCB0ZXN0SXNIVE1MCiAKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcoQXNzZW1ibGVy
OjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudEF0
dHJpYnV0ZUFkZHJlc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwZWN0ZWRWYWx1ZSwgYm9vbCBj
YW5EZWZhdWx0VG9DYXNlU2Vuc2l0aXZlVmFsdWVNYXRjaCkKIHsKLSAgICBMb2NhbFJlZ2lzdGVy
IGV4cGVjdGVkVmFsdWVSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICBMb2NhbFJl
Z2lzdGVyV2l0aFByZWZlcmVuY2UgZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxv
Y2F0b3IsIEpTQzo6R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBtX2Fzc2VtYmxlci5tb3Zl
KEFzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihleHBlY3RlZFZhbHVlLmltcGwoKSksIGV4cGVjdGVk
VmFsdWVSZWdpc3Rlcik7CiAKICAgICBpZiAoY2FuRGVmYXVsdFRvQ2FzZVNlbnNpdGl2ZVZhbHVl
TWF0Y2gpCkBAIC0yMDg4LDcgKzIwODgsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVFbGVtCiAKICAgICAgICAgRnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fzc2Vt
YmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlvbkNh
bGxzKTsKICAgICAgICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhXVEY6OmVxdWFs
SWdub3JpbmdDYXNlTm9uTnVsbCk7Ci0gICAgICAgIGZ1bmN0aW9uQ2FsbC5zZXRUd29Bcmd1bWVu
dHMoZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyLCB2YWx1ZVN0cmluZ0ltcGwpOworICAgICAgICBmdW5j
dGlvbkNhbGwuc2V0VHdvQXJndW1lbnRzKHZhbHVlU3RyaW5nSW1wbCwgZXhwZWN0ZWRWYWx1ZVJl
Z2lzdGVyKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5jdGlvbkNhbGwuY2FsbEFu
ZEJyYW5jaE9uQm9vbGVhblJldHVyblZhbHVlKEFzc2VtYmxlcjo6WmVybykpOwogCiAgICAgICAg
IHNraXBDYXNlSW5zZW5zaXRpdmVDb21wYXJpc29uLmxpbmsoJm1fYXNzZW1ibGVyKTsKQEAgLTIw
OTcsNyArMjA5Nyw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0K
IAogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZUZ1
bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2Vz
LCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXhwZWN0ZWRWYWx1ZSwgYm9vbCBjYW5EZWZhdWx0VG9DYXNlU2Vuc2l0aXZl
VmFsdWVNYXRjaCwgSlNDOjpGdW5jdGlvblB0ciBjYXNlU2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5j
dGlvblB0ciBjYXNlSW5zZW5zaXRpdmVUZXN0KQogewotICAgIExvY2FsUmVnaXN0ZXIgZXhwZWN0
ZWRWYWx1ZVJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOworICAgIExvY2FsUmVnaXN0ZXJX
aXRoUHJlZmVyZW5jZSBleHBlY3RlZFZhbHVlUmVnaXN0ZXIobV9yZWdpc3RlckFsbG9jYXRvciwg
SlNDOjpHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKGV4cGVjdGVkVmFsdWUuaW1wbCgpKSwgZXhwZWN0ZWRWYWx1ZVJl
Z2lzdGVyKTsKIAogICAgIGlmIChjYW5EZWZhdWx0VG9DYXNlU2Vuc2l0aXZlVmFsdWVNYXRjaCkg
ewpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlRWxlbQogICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5jdGlvbkNhbGwuY2Fs
bEFuZEJyYW5jaE9uQm9vbGVhblJldHVyblZhbHVlKEFzc2VtYmxlcjo6WmVybykpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0VG9DaGVja2luZ0NvbnRleHQg
PSBtX3N0YWNrQWxsb2NhdG9yLm9mZnNldFRvU3RhY2tSZWZlcmVuY2UobV9jaGVja2luZ0NvbnRl
eHRTdGFja1JlZmVyZW5jZSk7Ci0gICAgICAgICAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hl
Y2tpbmdDb250ZXh0ID0gbV9yZWdpc3RlckFsbG9jYXRvci5hbGxvY2F0ZVJlZ2lzdGVyKCk7Cisg
ICAgICAgICAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hlY2tpbmdDb250ZXh0ID0gbV9yZWdp
c3RlckFsbG9jYXRvci5hbGxvY2F0ZVJlZ2lzdGVyV2l0aFByZWZlcmVuY2UoSlNDOjpHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJs
ZXI6OkFkZHJlc3MoQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgb2Zmc2V0VG9DaGVj
a2luZ0NvbnRleHQpLCBjaGVja2luZ0NvbnRleHQpOwogICAgICAgICAgICAgbV9yZWdpc3RlckFs
bG9jYXRvci5kZWFsbG9jYXRlUmVnaXN0ZXIoY2hlY2tpbmdDb250ZXh0KTsKIApAQCAtMjI3MSw3
ICsyMjcxLDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbQogICAg
ICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGZ1bmN0aW9uQ2FsbC5jYWxsQW5kQnJhbmNoT25Cb29s
ZWFuUmV0dXJuVmFsdWUoQXNzZW1ibGVyOjpaZXJvKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKGZyYWdtZW50LnJlbGF0aW9uVG9SaWdodEZyYWdtZW50ID09IEZyYWdtZW50UmVsYXRpb246
OlJpZ2h0bW9zdCkgewotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBjaGVja2luZ0NvbnRleHQo
bV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgICAgICBMb2NhbFJlZ2lzdGVyV2l0aFByZWZl
cmVuY2UgY2hlY2tpbmdDb250ZXh0KG1fcmVnaXN0ZXJBbGxvY2F0b3IsIEpTQzo6R1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBub3RSZXNvbHZpbmdT
dHlsZSA9IGp1bXBJZk5vdFJlc29sdmluZ1N0eWxlKGNoZWNraW5nQ29udGV4dCk7CiAgICAgICAg
ICAgICBhZGRGbGFnc1RvRWxlbWVudFN0eWxlRnJvbUNvbnRleHQoY2hlY2tpbmdDb250ZXh0LCBS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZsYWdJc2FmZmVjdGVkQnlIb3ZlcigpKTsK
ICAgICAgICAgICAgIG5vdFJlc29sdmluZ1N0eWxlLmxpbmsoJm1fYXNzZW1ibGVyKTsKQEAgLTIy
ODIsNyArMjI4Miw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0K
ICAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxsLmNhbGxBbmRCcmFu
Y2hPbkJvb2xlYW5SZXR1cm5WYWx1ZShBc3NlbWJsZXI6Olplcm8pKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldFRvQ2hlY2tpbmdDb250ZXh0ID0gbV9zdGFj
a0FsbG9jYXRvci5vZmZzZXRUb1N0YWNrUmVmZXJlbmNlKG1fY2hlY2tpbmdDb250ZXh0U3RhY2tS
ZWZlcmVuY2UpOwotICAgICAgICAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29u
dGV4dCA9IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVSZWdpc3RlcigpOworICAgICAgICAg
ICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCA9IG1fcmVnaXN0ZXJBbGxv
Y2F0b3IuYWxsb2NhdGVSZWdpc3RlcldpdGhQcmVmZXJlbmNlKEpTQzo6R1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRy
ZXNzKEFzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFRvQ2hlY2tpbmdDb250
ZXh0KSwgY2hlY2tpbmdDb250ZXh0KTsKICAgICAgICAgICAgIG1fcmVnaXN0ZXJBbGxvY2F0b3Iu
ZGVhbGxvY2F0ZVJlZ2lzdGVyKGNoZWNraW5nQ29udGV4dCk7CiAKQEAgLTI1NDIsNyArMjU0Miw3
IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0KICAgICAgICAgbV9y
ZWdpc3RlckFsbG9jYXRvci5kZWFsbG9jYXRlUmVnaXN0ZXIocGFyZW50RWxlbWVudCk7CiAKICAg
ICAvLyBTZXR1cCB0aGUgY291bnRlciBhdCAxLgotICAgIExvY2FsUmVnaXN0ZXIgZWxlbWVudENv
dW50ZXIobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgTG9jYWxSZWdpc3RlcldpdGhQcmVmZXJl
bmNlIGVsZW1lbnRDb3VudGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IsIEpTQzo6R1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KDEpLCBlbGVtZW50Q291bnRlcik7CiAKICAgICAvLyBMb29wIG92ZXIgdGhlIHByZXZpb3VzIGFk
amFjZW50IGVsZW1lbnRzIGFuZCBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>