<?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>49086</bug_id>
          
          <creation_ts>2010-11-05 13:00:27 -0700</creation_ts>
          <short_desc>Incorrect image map used when multiple maps have the same name</short_desc>
          <delta_ts>2010-11-08 10:50:40 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>305469</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-05 13:00:27 -0700</bug_when>
    <thetext>Incorrect image map used when multiple maps have the same name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305473</commentid>
    <comment_count>1</comment_count>
      <attachid>73104</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-05 13:06:58 -0700</bug_when>
    <thetext>Created attachment 73104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305474</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-05 13:08:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/7627800&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305547</commentid>
    <comment_count>3</comment_count>
      <attachid>73104</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-05 14:58:08 -0700</bug_when>
    <thetext>Comment on attachment 73104
Patch

It seems a little strange that image map names are tracked in the same way as element IDs, but names in general are handled elsewhere in a very different manner (see e.g. JSHTMLDocument::nameGetter()). I guess that&apos;s fine as long as we always want the duplicate that&apos;s first in document order, but it&apos;s still surprising. Perhaps I don&apos;t understand what&apos;s so special about map names - why is there even HTMLMapElement::m_name when the same value is in an attribute, perhaps lowercased?

The test needs a subtest to make sure that the latest dynamically added map doesn&apos;t get precedence (note that subtest 5 re-adds the first element, so it doesn&apos;t test for that). It also needs an XHTML version, making sure that names are case sensitive.

Do all tests pass in Firefox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305612</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-05 16:08:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Do all tests pass in Firefox?

They do not. Firefox has different behavior. But HTML5 specifies the behavior the test asks for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305616</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-05 16:10:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why is there even HTMLMapElement::m_name when the same value is in an attribute, perhaps lowercased?

There’s no good reason for that. There was a lot of that in the DOM implementation in the old days and I’ve removed a lot of it over time. It could and probably should be fixed.

&gt; The test needs a subtest to make sure that the latest dynamically added map doesn&apos;t get precedence

Easy to add. Will do.

&gt; It also needs an XHTML version, making sure that names are case sensitive.

Much less pleasant to add. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306215</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-08 10:50:40 -0800</bug_when>
    <thetext>Committed r71543: &lt;http://trac.webkit.org/changeset/71543&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73104</attachid>
            <date>2010-11-05 13:06:58 -0700</date>
            <delta_ts>2010-11-05 14:58:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49086-20101105130657.patch</filename>
            <type>text/plain</type>
            <size>19338</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMTEtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY29y
cmVjdCBpbWFnZSBtYXAgdXNlZCB3aGVuIG11bHRpcGxlIG1hcHMgaGF2ZSB0aGUgc2FtZSBuYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTA4Ngor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL2ltYWdlLW1hcC1tdWx0aXBsZS5odG1sCisKKyAg
ICAgICAgRmFjdG9yZWQgb3V0IHRoZSBjb2RlIHVzZWQgdG8gbG9vayB1cCBlbGVtZW50cyBieSBp
ZCBhbmQgcmV1c2VkIGl0CisgICAgICAgIHRvIGxvb2sgdXAgbWFwcyBieSBuYW1lLiBJdCBoYW5k
bGVzIG11bHRpcGxlIGVsZW1lbnRzIGVmZmljaWVudGx5LgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6
OmNsZWFyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnRPcmRl
cmVkTWFwOjphZGQpOiBBZGRlZC4gSGFzIGNvZGUgdGhhdAorICAgICAgICB3YXMgZm9ybWVybHkg
aW4gYWRkRWxlbWVudEJ5SWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnRP
cmRlcmVkTWFwOjpyZW1vdmUpOiBBZGRlZC4gSGFzIGNvZGUgdGhhdAorICAgICAgICB3YXMgZm9y
bWVybHkgaW4gcmVtb3ZlRWxlbWVudEJ5SWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQpOiBBZGRlZC4gSGFzIGNvZGUgdGhhdAorICAgICAgICB3
YXMgZm9ybWVybHkgaW4gZ2V0RWxlbWVudEJ5SWQuCisgICAgICAgIChXZWJDb3JlOjprZXlNYXRj
aGVzSWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRFbGVtZW50QnlJ
ZCk6IFVzZSBEb2N1bWVudE9yZGVyZWRNYXA6OmdldC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjphZGRFbGVtZW50QnlJZCk6IFVzZSBEb2N1bWVudE9yZGVyZWRNYXA6OmFkZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVFbGVtZW50QnlJZCk6IFVzZSBEb2N1bWVudE9y
ZGVyZWRNYXA6OnJlbW92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRJbWFnZU1h
cCk6IFVzZSBEb2N1bWVudE9yZGVyZWRNYXA6OmFkZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZW1vdmVJbWFnZU1hcCk6IFVzZSBEb2N1bWVudE9yZGVyZWRNYXA6OnJlbW92ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNNYXBOYW1lKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjprZXlNYXRjaGVzTG93ZXJjYXNlZE1hcE5hbWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpnZXRJbWFnZU1hcCk6IFVzZSBEb2N1bWVudE9yZGVyZWRNYXA6OmdldC4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBEb2N1bWVudE9yZGVyZWRNYXAgY2xh
c3MsIHVzZWQgaW5zaWRlIHRoZQorICAgICAgICBEb2N1bWVudCBjbGFzcy4gQ2hhbmdlZCBtX2lt
YWdlTWFwc0J5TmFtZSB0byBiZSBhIERvY3VtZW50T3JkZXJlZE1hcC4KKyAgICAgICAgQ2hhbmdl
ZCBtX2VsZW1lbnRzQnlJZCB0byBiZSBhIERvY3VtZW50T3JkZXJlZE1hcC4gRWxpbWluYXRlZAor
ICAgICAgICBtX2R1cGxpY2F0ZUlkcywgc2luY2UgRG9jdW1lbnRPcmRlcmVkTWFwIG5vdyBoYXMg
dGhhdCBpbnRlcm5hbGx5LgorCiAyMDEwLTExLTA1ICBDaHJpcyBHdWlsbG9yeSAgPGNocmlzLmd1
aWxsb3J5QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2gu
CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3MTQyNCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDggKzIxMiwxMCBAQCB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogLy8gZm9yIGR1YWwgRzVzLiA6KQogc3RhdGljIGNvbnN0IGludCBjTGF5b3V0
U2NoZWR1bGVUaHJlc2hvbGQgPSAyNTA7CiAKLS8vIFVzZSAxIHRvIHJlcHJlc2VudCB0aGUgZG9j
dW1lbnQncyBkZWZhdWx0IGZvcm0uCi1zdGF0aWMgSFRNTEZvcm1FbGVtZW50KiBjb25zdCBkZWZh
dWx0Rm9ybSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oMSk7CisvLyBUaGVz
ZSBmdW5jdGlvbnMgY2FuJ3QgaGF2ZSBpbnRlcm5hbCBsaW5rYWdlIGJlY2F1c2UgdGhleSBhcmUg
dXNlZCBhcyB0ZW1wbGF0ZSBhcmd1bWVudHMuCitib29sIGtleU1hdGNoZXNJZChBdG9taWNTdHJp
bmdJbXBsKiwgRWxlbWVudCopOworYm9vbCBrZXlNYXRjaGVzTWFwTmFtZShBdG9taWNTdHJpbmdJ
bXBsKiwgRWxlbWVudCopOworYm9vbCBrZXlNYXRjaGVzTG93ZXJjYXNlZE1hcE5hbWUoQXRvbWlj
U3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKIAogLy8gRE9NIExldmVsIDIgc2F5cyAobGV0dGVycyBh
ZGRlZCk6CiAvLwpAQCAtNDgxLDYgKzQ4MywxMiBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBjb25zdCBLCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgRG9jdW1lbnQ6OkRvY3Vt
ZW50T3JkZXJlZE1hcDo6Y2xlYXIoKQoreworICAgIG1fbWFwLmNsZWFyKCk7CisgICAgbV9kdXBs
aWNhdGVDb3VudHMuY2xlYXIoKTsKK30KKwogdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYo
KQogewogICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKQEAgLTkzOCwzNCArOTQ2LDg5
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW0KICAgICByZXR1cm4g
Y3JlYXRlRWxlbWVudChxTmFtZSwgZmFsc2UpOwogfQogCi1FbGVtZW50KiBEb2N1bWVudDo6Z2V0
RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CitpbmxpbmUg
dm9pZCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjphZGQoQXRvbWljU3RyaW5nSW1wbCog
a2V5LCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQoa2V5KTsKKyAgICBBU1NFUlQoZWxlbWVudCk7
CisKKyAgICBpZiAoIW1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGtleSkpIHsKKyAgICAgICAg
Ly8gRmFzdCBwYXRoLiBUaGUga2V5IGlzIG5vdCBhbHJlYWR5IGluIG1fZHVwbGljYXRlQ291bnRz
LCBzbyB3ZSBhc3N1bWUgdGhhdCBpdCdzCisgICAgICAgIC8vIGFsc28gbm90IGFscmVhZHkgaW4g
bV9tYXAgYW5kIHRyeSB0byBhZGQgaXQuIElmIHRoYXQgYWRkIHN1Y2NlZWRzLCB3ZSdyZSBkb25l
LgorICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fbWFwLmFk
ZChrZXksIGVsZW1lbnQpOworICAgICAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAvLyBUaGUgYWRkIGZhaWxlZCwgc28gdGhpcyBrZXkgd2Fz
IGFscmVhZHkgY2FjaGVkIGluIG1fbWFwLgorICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUg
ZWxlbWVudHMgd2l0aCB0aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcAorICAgICAgICAvLyBjYWNo
ZSBmb3IgdGhpcyBrZXkgc28gZ2V0IHNlYXJjaGVzIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2Fs
bGVkLgorICAgICAgICBtX21hcC5yZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgbV9k
dXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlcmUg
YXJlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhpcyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKKyAg
ICAgICAgLy8gY2FjaGUgZm9yIHRoaXMga2V5IHNvIGdldCB3aWxsIHNlYXJjaCBmb3IgaXQgbmV4
dCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgICAgTWFwOjppdGVyYXRvciBjYWNoZWRJdGVtID0g
bV9tYXAuZmluZChrZXkpOworICAgICAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQoKSkg
eworICAgICAgICAgICAgbV9tYXAucmVtb3ZlKGNhY2hlZEl0ZW0pOworICAgICAgICAgICAgbV9k
dXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBtX2VsZW1l
bnRzQnlJZC5jaGVja0NvbnNpc3RlbmN5KCk7CisgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtl
eSk7Cit9CiAKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9lbGVtZW50c0J5SWQuZ2V0KGVsZW1l
bnRJZC5pbXBsKCkpOworaW5saW5lIHZvaWQgRG9jdW1lbnQ6OkRvY3VtZW50T3JkZXJlZE1hcDo6
cmVtb3ZlKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBB
U1NFUlQoa2V5KTsKKyAgICBBU1NFUlQoZWxlbWVudCk7CisKKyAgICBtX21hcC5jaGVja0NvbnNp
c3RlbmN5KCk7CisgICAgTWFwOjppdGVyYXRvciBjYWNoZWRJdGVtID0gbV9tYXAuZmluZChrZXkp
OworICAgIGlmIChjYWNoZWRJdGVtICE9IG1fbWFwLmVuZCgpICYmIGNhY2hlZEl0ZW0tPnNlY29u
ZCA9PSBlbGVtZW50KQorICAgICAgICBtX21hcC5yZW1vdmUoY2FjaGVkSXRlbSk7CisgICAgZWxz
ZQorICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5yZW1vdmUoa2V5KTsKK30KKwordGVtcGxhdGU8
Ym9vbCBrZXlNYXRjaGVzKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik+IGlubGluZSBFbGVt
ZW50KiBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQoQXRvbWljU3RyaW5nSW1wbCog
a2V5LCBjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGtleSk7
CisKKyAgICBtX21hcC5jaGVja0NvbnNpc3RlbmN5KCk7CisKKyAgICBFbGVtZW50KiBlbGVtZW50
ID0gbV9tYXAuZ2V0KGtleSk7CiAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgIHJldHVybiBlbGVt
ZW50OwogCi0gICAgaWYgKG1fZHVwbGljYXRlSWRzLmNvbnRhaW5zKGVsZW1lbnRJZC5pbXBsKCkp
KSB7Ci0gICAgICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB3aXRoIHRo
aXMgaWQsIGJ1dCB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIGZpcnN0IG9uZSBpcy4KLSAgICAgICAg
Zm9yIChOb2RlKiBuID0gdHJhdmVyc2VOZXh0Tm9kZSgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0
Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpID09
IGVsZW1lbnRJZCkgewotICAgICAgICAgICAgICAgICAgICBtX2R1cGxpY2F0ZUlkcy5yZW1vdmUo
ZWxlbWVudElkLmltcGwoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZWxlbWVudHNCeUlkLnNl
dChlbGVtZW50SWQuaW1wbCgpLCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgIGlmIChtX2R1
cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7CisgICAgICAgIC8vIFdlIGtub3cgdGhlcmUn
cyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0IG1hdGNoZXM7IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmly
c3Qgb25lLgorICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+Zmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBp
ZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CisgICAgICAg
ICAgICBpZiAoIWtleU1hdGNoZXMoa2V5LCBlbGVtZW50KSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIG1fZHVwbGljYXRlQ291bnRzLnJlbW92ZShrZXkpOworICAgICAg
ICAgICAgbV9tYXAuc2V0KGtleSwgZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dDsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisKICAg
ICByZXR1cm4gMDsKIH0KIAoraW5saW5lIGJvb2wga2V5TWF0Y2hlc0lkKEF0b21pY1N0cmluZ0lt
cGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQo
KSAmJiBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBrZXk7Cit9CisKK0VsZW1l
bnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJ
ZCkgY29uc3QKK3sKKyAgICBpZiAoZWxlbWVudElkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG1fZWxlbWVudHNCeUlkLmdldDxrZXlNYXRjaGVzSWQ+KGVsZW1lbnRJ
ZC5pbXBsKCksIHRoaXMpOworfQorCiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUoKSBjb25z
dAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBsb2FkaW5nLCAoImxv
YWRpbmciKSk7CkBAIC0xMTk4LDQwICsxMjYxLDEyIEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3Vt
ZW50OjpjYXJldFJhbmdlRnIKIAogdm9pZCBEb2N1bWVudDo6YWRkRWxlbWVudEJ5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ZXJhdG9y
OwotICAgIGlmICghbV9kdXBsaWNhdGVJZHMuY29udGFpbnMoZWxlbWVudElkLmltcGwoKSkpIHsK
LSAgICAgICAgLy8gRmFzdCBwYXRoLiBUaGUgSUQgaXMgbm90IGFscmVhZHkgaW4gbV9kdXBsaWNh
dGVJZHMsIHNvIHdlIGFzc3VtZSB0aGF0IGl0J3MKLSAgICAgICAgLy8gYWxzbyBub3QgYWxyZWFk
eSBpbiBtX2VsZW1lbnRzQnlJZCBhbmQgZG8gYW4gYWRkLiBJZiB0aGF0IGFkZCBzdWNjZWVkcywg
d2UncmUgZG9uZS4KLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9l
bGVtZW50c0J5SWQuYWRkKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1lbnQpOwotICAgICAgICBpZiAo
YWRkUmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgLy8gVGhlIGFk
ZCBmYWlsZWQsIHNvIHRoaXMgSUQgd2FzIGFscmVhZHkgY2FjaGVkIGluIG1fZWxlbWVudHNCeUlk
LgotICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIElELiBS
ZW1vdmUgdGhlIG1fZWxlbWVudHNCeUlkCi0gICAgICAgIC8vIGNhY2hlIGZvciB0aGlzIElEIHNv
IGdldEVsZW1lbnRCeUlkIHNlYXJjaGVzIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgot
ICAgICAgICBtX2VsZW1lbnRzQnlJZC5yZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKLSAgICAgICAg
bV9kdXBsaWNhdGVJZHMuYWRkKGVsZW1lbnRJZC5pbXBsKCkpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRoaXMgSUQuIElmIGl0IGV4
aXN0cywgcmVtb3ZlIHRoZSBtX2VsZW1lbnRzQnlJZAotICAgICAgICAvLyBjYWNoZSBmb3IgdGhp
cyBJRCBzbyBnZXRFbGVtZW50QnlJZCBzZWFyY2hlcyBmb3IgaXQgbmV4dCB0aW1lIGl0IGlzIGNh
bGxlZC4KLSAgICAgICAgaXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1fZWxlbWVudHNCeUlkLmZpbmQo
ZWxlbWVudElkLmltcGwoKSk7Ci0gICAgICAgIGlmIChjYWNoZWRJdGVtICE9IG1fZWxlbWVudHNC
eUlkLmVuZCgpKSB7Ci0gICAgICAgICAgICBtX2VsZW1lbnRzQnlJZC5yZW1vdmUoY2FjaGVkSXRl
bSk7Ci0gICAgICAgICAgICBtX2R1cGxpY2F0ZUlkcy5hZGQoZWxlbWVudElkLmltcGwoKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgbV9kdXBsaWNhdGVJZHMuYWRkKGVsZW1lbnRJZC5pbXBsKCkp
OworICAgIG1fZWxlbWVudHNCeUlkLmFkZChlbGVtZW50SWQuaW1wbCgpLCBlbGVtZW50KTsKIH0K
IAogdm9pZCBEb2N1bWVudDo6cmVtb3ZlRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50SWQsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgbV9lbGVtZW50c0J5SWQuY2hlY2tD
b25zaXN0ZW5jeSgpOwotCi0gICAgaWYgKG1fZWxlbWVudHNCeUlkLmdldChlbGVtZW50SWQuaW1w
bCgpKSA9PSBlbGVtZW50KQotICAgICAgICBtX2VsZW1lbnRzQnlJZC5yZW1vdmUoZWxlbWVudElk
LmltcGwoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX2luUmVtb3ZlZExhc3RSZWZG
dW5jdGlvbiB8fCBtX2R1cGxpY2F0ZUlkcy5jb250YWlucyhlbGVtZW50SWQuaW1wbCgpKSk7Ci0g
ICAgICAgIG1fZHVwbGljYXRlSWRzLnJlbW92ZShlbGVtZW50SWQuaW1wbCgpKTsKLSAgICB9Cisg
ICAgbV9lbGVtZW50c0J5SWQucmVtb3ZlKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1lbnQpOwogfQog
CiBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYg
a2V5KSBjb25zdApAQCAtMzc3NiwzMCArMzgxMSwyOCBAQCBib29sIERvY3VtZW50OjpwYXJzZVF1
YWxpZmllZE5hbWUoY29uc3QgCiAKIHZvaWQgRG9jdW1lbnQ6OmFkZEltYWdlTWFwKEhUTUxNYXBF
bGVtZW50KiBpbWFnZU1hcCkKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBpbWFn
ZU1hcC0+Z2V0TmFtZSgpOwotICAgIGlmICghbmFtZS5pbXBsKCkpCisgICAgQXRvbWljU3RyaW5n
SW1wbCogbmFtZSA9IGltYWdlTWFwLT5nZXROYW1lKCkuaW1wbCgpOworICAgIGlmICghbmFtZSkK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQWRkIHRoZSBpbWFnZSBtYXAsIHVubGVzcyB0aGVy
ZSdzIGFscmVhZHkgYW5vdGhlciB3aXRoIHRoYXQgbmFtZS4KLSAgICAvLyAiRmlyc3QgbWFwIHdp
bnMiIGlzIHRoZSBydWxlIG90aGVyIGJyb3dzZXJzIHNlZW0gdG8gaW1wbGVtZW50LgotICAgIG1f
aW1hZ2VNYXBzQnlOYW1lLmFkZChuYW1lLmltcGwoKSwgaW1hZ2VNYXApOworICAgIG1faW1hZ2VN
YXBzQnlOYW1lLmFkZChuYW1lLCBpbWFnZU1hcCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlbW92
ZUltYWdlTWFwKEhUTUxNYXBFbGVtZW50KiBpbWFnZU1hcCkKIHsKLSAgICAvLyBSZW1vdmUgdGhl
IGltYWdlIG1hcCBieSBuYW1lLgotICAgIC8vIEJ1dCBkb24ndCByZW1vdmUgc29tZSBvdGhlciBp
bWFnZSBtYXAgdGhhdCBqdXN0IGhhcHBlbnMgdG8gaGF2ZSB0aGUgc2FtZSBuYW1lLgotICAgIC8v
IEZJWE1FOiBVc2UgYSBIYXNoQ291bnRlZFNldCBhcyB3ZSBkbyBmb3IgSURzIHRvIGZpbmQgdGhl
IGZpcnN0IHJlbWFpbmluZyBtYXAKLSAgICAvLyBvbmNlIGEgbWFwIGhhcyBiZWVuIHJlbW92ZWQu
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaW1hZ2VNYXAtPmdldE5hbWUoKTsKLSAg
ICBpZiAoIW5hbWUuaW1wbCgpKQorICAgIEF0b21pY1N0cmluZ0ltcGwqIG5hbWUgPSBpbWFnZU1h
cC0+Z2V0TmFtZSgpLmltcGwoKTsKKyAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKKyAg
ICBtX2ltYWdlTWFwc0J5TmFtZS5yZW1vdmUobmFtZSwgaW1hZ2VNYXApOworfQorCitpbmxpbmUg
Ym9vbCBrZXlNYXRjaGVzTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVs
ZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSAmJiBzdGF0
aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KGVsZW1lbnQpLT5nZXROYW1lKCkuaW1wbCgpID09IGtl
eTsKK30KIAotICAgIG1faW1hZ2VNYXBzQnlOYW1lLmNoZWNrQ29uc2lzdGVuY3koKTsKLQotICAg
IEltYWdlTWFwc0J5TmFtZTo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlTWFwc0J5TmFtZS5maW5kKG5h
bWUuaW1wbCgpKTsKLSAgICBpZiAoaXQgIT0gbV9pbWFnZU1hcHNCeU5hbWUuZW5kKCkgJiYgaXQt
PnNlY29uZCA9PSBpbWFnZU1hcCkKLSAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUucmVtb3ZlKGl0
KTsKK2lubGluZSBib29sIGtleU1hdGNoZXNMb3dlcmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmdJ
bXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1Rh
Z05hbWUobWFwVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KGVsZW1lbnQpLT5n
ZXROYW1lKCkubG93ZXIoKS5pbXBsKCkgPT0ga2V5OwogfQogCiBIVE1MTWFwRWxlbWVudCogRG9j
dW1lbnQ6OmdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdApAQCAtMzgwOCw5ICsz
ODQxLDkgQEAgSFRNTE1hcEVsZW1lbnQqIERvY3VtZW50OjpnZXRJbWFnZU1hcChjbwogICAgICAg
ICByZXR1cm4gMDsKICAgICBzaXplX3QgaGFzaFBvcyA9IHVybC5maW5kKCcjJyk7CiAgICAgU3Ry
aW5nIG5hbWUgPSAoaGFzaFBvcyA9PSBub3RGb3VuZCA/IHVybCA6IHVybC5zdWJzdHJpbmcoaGFz
aFBvcyArIDEpKS5pbXBsKCk7Ci0gICAgQXRvbWljU3RyaW5nIG1hcE5hbWUgPSBpc0hUTUxEb2N1
bWVudCgpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKLSAgICBtX2ltYWdlTWFwc0J5TmFtZS5jaGVj
a0NvbnNpc3RlbmN5KCk7Ci0gICAgcmV0dXJuIG1faW1hZ2VNYXBzQnlOYW1lLmdldChtYXBOYW1l
LmltcGwoKSk7CisgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KG1faW1hZ2VNYXBzQnlOYW1lLmdldDxrZXlNYXRjaGVz
TG93ZXJjYXNlZE1hcE5hbWU+KEF0b21pY1N0cmluZyhuYW1lLmxvd2VyKCkpLmltcGwoKSwgdGhp
cykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KG1faW1hZ2VNYXBz
QnlOYW1lLmdldDxrZXlNYXRjaGVzTWFwTmFtZT4oQXRvbWljU3RyaW5nKG5hbWUpLmltcGwoKSwg
dGhpcykpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXREZWNvZGVyKFBhc3NSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gZGVjb2RlcikKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNzE0MjQpCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIEVsZW1lbnQqIGdldEVsZW1l
bnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaGFzRWxlbWVudFdp
dGhJZChBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWluc011bHRp
cGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIHsgcmV0dXJu
IG1fZHVwbGljYXRlSWRzLmNvbnRhaW5zKGVsZW1lbnRJZC5pbXBsKCkpOyB9CisgICAgYm9vbCBj
b250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29u
c3Q7CiAKICAgICAvKioKICAgICAgKiBSZXRyaWV2ZSBhbGwgbm9kZXMgdGhhdCBpbnRlcnNlY3Qg
YSByZWN0IGluIHRoZSB3aW5kb3cncyBkb2N1bWVudCwgdW50aWwgaXQgaXMgZnVsbHkgZW5jbG9z
ZWQgYnkKQEAgLTEwNTQsNiArMTA1NCwyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhclhN
TFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0cmluZygpOyB9CiAKIHByaXZhdGU6CisgICAg
Y2xhc3MgRG9jdW1lbnRPcmRlcmVkTWFwIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgYWRk
KEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7CisgICAgICAgIHZvaWQgcmVtb3ZlKEF0b21p
Y1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7CisgICAgICAgIHZvaWQgY2xlYXIoKTsKKworICAgICAg
ICBib29sIGNvbnRhaW5zKEF0b21pY1N0cmluZ0ltcGwqKSBjb25zdDsKKyAgICAgICAgYm9vbCBj
b250YWluc011bHRpcGxlKEF0b21pY1N0cmluZ0ltcGwqKSBjb25zdDsKKyAgICAgICAgdGVtcGxh
dGU8Ym9vbCBrZXlNYXRjaGVzKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik+IEVsZW1lbnQq
IGdldChBdG9taWNTdHJpbmdJbXBsKiwgY29uc3QgRG9jdW1lbnQqKSBjb25zdDsKKworICAgICAg
ICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAg
IHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgRWxlbWVudCo+IE1hcDsKKworICAg
ICAgICAvLyBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgbV9kdXBsaWNhdGVDb3VudHMg
aXMgdGhlIGNvdW50IG9mIGFsbCBlbGVtZW50cyB3aXRoIGEgZ2l2ZW4ga2V5CisgICAgICAgIC8v
IGV4Y2x1ZGluZyB0aGUgb25lIHJlZmVyZW5jZWQgaW4gbV9tYXAsIGlmIGFueS4gVGhpcyBtZWFu
cyBpdCBvbmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBjb3VudAorICAgICAgICAvLyB3aGVuIHRoZSBm
aXJzdCBub2RlIHdpdGggYSBnaXZlbiBrZXkgaXMgY2FjaGVkLCBvdGhlcndpc2UgdGhlIHNhbWUg
YXMgdGhlIHRvdGFsIGNvdW50LgorICAgICAgICBtdXRhYmxlIE1hcCBtX21hcDsKKyAgICAgICAg
bXV0YWJsZSBIYXNoQ291bnRlZFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9kdXBsaWNhdGVDb3Vu
dHM7CisgICAgfTsKKwogICAgIGZyaWVuZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291
bnRJbmNyZW1lbnRlcjsKIAogICAgIHZvaWQgZGV0YWNoUGFyc2VyKCk7CkBAIC0xMjQzLDggKzEy
NjUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudD4gbV90cmFuc2Zvcm1Tb3VyY2VE
b2N1bWVudDsKICNlbmRpZgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBIVE1MTWFwRWxlbWVudCo+IEltYWdlTWFwc0J5TmFtZTsKLSAgICBJbWFnZU1hcHNCeU5hbWUg
bV9pbWFnZU1hcHNCeU5hbWU7CisgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBzQnlO
YW1lOwogCiAgICAgaW50IG1fZG9jSUQ7IC8vIEEgdW5pcXVlIGRvY3VtZW50IGlkZW50aWZpZXIg
dXNlZCBmb3IgdGhpbmdzIGxpa2UgZG9jdW1lbnQtc3BlY2lmaWMgbWFwcGVkIGF0dHJpYnV0ZXMu
CiAKQEAgLTEyNjIsMTEgKzEyODMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAKLSAgICAvLyBXZSBtYWludGFpbiB0aGUgaW52
YXJpYW50IHRoYXQgbV9kdXBsaWNhdGVJZHMgaXMgdGhlIGNvdW50IG9mIGFsbCBlbGVtZW50cyB3
aXRoIGEgZ2l2ZW4gSUQKLSAgICAvLyBleGNsdWRpbmcgdGhlIG9uZSByZWZlcmVuY2VkIGluIG1f
ZWxlbWVudHNCeUlkLCBpZiBhbnkuIFRoaXMgbWVhbnMgaXQgb25lIGxlc3MgdGhhbiB0aGUgdG90
YWwgY291bnQKLSAgICAvLyB3aGVuIHRoZSBmaXJzdCBub2RlIHdpdGggYSBnaXZlbiBJRCBpcyBj
YWNoZWQsIG90aGVyd2lzZSB0aGUgc2FtZSBhcyB0aGUgdG90YWwgY291bnQuCi0gICAgbXV0YWJs
ZSBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kj4gbV9lbGVtZW50c0J5SWQ7Ci0g
ICAgbXV0YWJsZSBIYXNoQ291bnRlZFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9kdXBsaWNhdGVJ
ZHM7CisgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1fZWxlbWVudHNCeUlkOwogICAgIAogICAgIG11
dGFibGUgSGFzaE1hcDxTdHJpbmdJbXBsKiwgRWxlbWVudCosIENhc2VGb2xkaW5nSGFzaD4gbV9l
bGVtZW50c0J5QWNjZXNzS2V5OwogICAgIApAQCAtMTM0OCwxMCArMTM2NSwyNSBAQCBwcml2YXRl
OgogICAgIERvY3VtZW50VGltaW5nIG1fZG9jdW1lbnRUaW1pbmc7CiB9OwogCitpbmxpbmUgYm9v
bCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWlucyhBdG9taWNTdHJpbmdJbXBs
KiBpZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXAuY29udGFpbnMoaWQpIHx8IG1fZHVwbGlj
YXRlQ291bnRzLmNvbnRhaW5zKGlkKTsKK30KKworaW5saW5lIGJvb2wgRG9jdW1lbnQ6OkRvY3Vt
ZW50T3JkZXJlZE1hcDo6Y29udGFpbnNNdWx0aXBsZShBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoaWQpOworfQorCiBp
bmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChBdG9taWNTdHJpbmdJbXBsKiBp
ZCkgY29uc3QKIHsKICAgICBBU1NFUlQoaWQpOwotICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5j
b250YWlucyhpZCkgfHwgbV9kdXBsaWNhdGVJZHMuY29udGFpbnMoaWQpOworICAgIHJldHVybiBt
X2VsZW1lbnRzQnlJZC5jb250YWlucyhpZCk7Cit9CisKK2lubGluZSBib29sIERvY3VtZW50Ojpj
b250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQuY29udGFpbnNNdWx0aXBsZShpZC5pbXBs
KCkpOwogfQogICAgIAogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNzE0NDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMS0wNSAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5jb3JyZWN0IGltYWdlIG1hcCB1c2VkIHdoZW4gbXVsdGlwbGUgbWFwcyBoYXZlIHRo
ZSBzYW1lIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ5MDg2CisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlwbGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlw
bGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkIHByb3BlcnR5IHN2bjpleGVjdXRhYmxlLgorCiAyMDEwLTEx
LTA1ICBDaGFuZyBTaHUgIDxjaGFuZy5zaHVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1t
YXAtbXVsdGlwbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2ltYWdlLW1hcC1tdWx0aXBsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlwbGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACisgCitUaGlzIHRlc3RzIGltYWdlIG1hcCBiZWhh
dmlvciB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXBzIHdpdGggdGhlIHNhbWUgbmFtZS4KKwor
CisxOiBQQVNTOiBTdWNjZXNzZnVsbHkgaGl0IHRoZSBmaXJzdCBtYXAgaW4gdGhlIGRvY3VtZW50
LgorMjogUEFTUzogU3VjY2Vzc2Z1bGx5IGhpdCB0aGUgc2Vjb25kIG1hcCBhZnRlciB0aGUgZmly
c3Qgd2FzIHJlbmFtZWQuCiszOiBQQVNTOiBTdWNjZXNzZnVsbHkgaGl0IHRoZSBmaXJzdCBtYXAg
YWZ0ZXIgaXQgd2FzIHJlbmFtZWQgYmFjay4KKzQ6IFBBU1M6IFN1Y2Nlc3NmdWxseSBoaXQgdGhl
IHNlY29uZCBtYXAgYWZ0ZXIgdGhlIGZpcnN0IHdhcyByZW1vdmVkLgorNTogUEFTUzogU3VjY2Vz
c2Z1bGx5IGhpdCB0aGUgZmlyc3QgbWFwIGFmdGVyIGl0IHdhcyBhZGRlZCBiYWNrLgorCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlw
bGUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlwbGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlw
bGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLW1h
cC1tdWx0aXBsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8c2NyaXB0Pgor
Cit2YXIgdGVzdCA9IDE7Cit2YXIgc2F2ZWRFbGVtZW50OworCitmdW5jdGlvbiBzZXRSZXN1bHQo
cmVzdWx0KQoreworICAgIHZhciBtZXNzYWdlID0gIkZBSUw6IFVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OworCisgICAgaWYgKHRlc3QgPT09IDEpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9
PT0gJzEnKQorICAgICAgICAgICAgbWVzc2FnZSA9ICJQQVNTOiBTdWNjZXNzZnVsbHkgaGl0IHRo
ZSBmaXJzdCBtYXAgaW4gdGhlIGRvY3VtZW50LiI7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCIxIikubmFtZSA9ICJhbm90aGVybmFtZSI7CisgICAgfQorICAgIGlmICh0ZXN0ID09
PSAyKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT09ICcyJykKKyAgICAgICAgICAgIG1lc3NhZ2Ug
PSAiUEFTUzogU3VjY2Vzc2Z1bGx5IGhpdCB0aGUgc2Vjb25kIG1hcCBhZnRlciB0aGUgZmlyc3Qg
d2FzIHJlbmFtZWQuIjsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIjEiKS5uYW1l
ID0gIm1hcG5hbWUiOworICAgIH0KKyAgICBpZiAodGVzdCA9PT0gMykgeworICAgICAgICBpZiAo
cmVzdWx0ID09PSAnMScpCisgICAgICAgICAgICBtZXNzYWdlID0gIlBBU1M6IFN1Y2Nlc3NmdWxs
eSBoaXQgdGhlIGZpcnN0IG1hcCBhZnRlciBpdCB3YXMgcmVuYW1lZCBiYWNrLiI7CisgICAgICAg
IHNhdmVkRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIxIik7CisgICAgICAgIHNh
dmVkRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNhdmVkRWxlbWVudCk7CisgICAgfQor
ICAgIGlmICh0ZXN0ID09PSA0KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT09ICcyJykKKyAgICAg
ICAgICAgIG1lc3NhZ2UgPSAiUEFTUzogU3VjY2Vzc2Z1bGx5IGhpdCB0aGUgc2Vjb25kIG1hcCBh
ZnRlciB0aGUgZmlyc3Qgd2FzIHJlbW92ZWQuIjsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIjIiKS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzYXZlZEVsZW1lbnQsIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCIyIikpOworICAgICAgICBzYXZlZEVsZW1lbnQgPSBudWxsOworICAg
IH0KKyAgICBpZiAodGVzdCA9PT0gNSkgeworICAgICAgICBpZiAocmVzdWx0ID09PSAnMScpCisg
ICAgICAgICAgICBtZXNzYWdlID0gIlBBU1M6IFN1Y2Nlc3NmdWxseSBoaXQgdGhlIGZpcnN0IG1h
cCBhZnRlciBpdCB3YXMgYWRkZWQgYmFjay4iOworICAgIH0KKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2ciKS50ZXh0Q29udGVudCArPSB0ZXN0ICsgIjogIiArIG1lc3NhZ2UgKyAi
XG4iOworICAgICsrdGVzdDsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIG51
bUNsaWNrcyA9IDU7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLnRleHRDb250ZW50ID0gIlRvIHJ1biB0aGUgdGVz
dCBtYW51YWxseSwgY2xpY2sgIiArIG51bUNsaWNrcyArICIgdGltZXMgaW4gdGhlIGltYWdlIHJl
Y3RhbmdsZS5cbiI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLCA1MCk7
CisgICAgZm9yICh2YXIgY2xpY2sgPSAwOyBjbGljayA8IG51bUNsaWNrczsgKytjbGljaykgewor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8bWFwIG5hbWU9Im1hcE5hbWUiIGlkPSIxIj48YXJlYSBzaGFwZT1yZWN0IGNvb3Jkcz0iMCww
LDEwMCwxMDAiIG9uY2xpY2s9InNldFJlc3VsdCgnMScpIj48L21hcD4KKzxtYXAgbmFtZT0ibWFw
bmFtZSIgaWQ9IjIiPjxhcmVhIHNoYXBlPXJlY3QgY29vcmRzPSIwLDAsMTAwLDEwMCIgb25jbGlj
az0ic2V0UmVzdWx0KCcyJykiPjwvbWFwPgorPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5qcGci
IGJvcmRlcj0yMCB3aWR0aD0xMDAgaGVpZ2h0PTEwMCB1c2VtYXA9IiNtYXBuYW1lIiBpc21hcCBv
bmNsaWNrPSJzZXRSZXN1bHQoJ2ltZycpIj4KKzxkaXY+VGhpcyB0ZXN0cyBpbWFnZSBtYXAgYmVo
YXZpb3Igd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWFwcyB3aXRoIHRoZSBzYW1lIG5hbWUuPC9k
aXY+Cis8cHJlIGlkPSJsb2ciPjwvZGl2PgorPC9ib2R5PgoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtbWFwLW11bHRpcGxlLmh0bWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbApBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoK
</data>
<flag name="review"
          id="63483"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>