<?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>121769</bug_id>
          
          <creation_ts>2013-09-22 14:33:12 -0700</creation_ts>
          <short_desc>CTTE: StaticNodeLists often contain only Elements, we shouldn&apos;t store them as Vector&lt;RefPtr&lt;Node&gt;&gt; in those cases</short_desc>
          <delta_ts>2013-09-22 15:10:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931928</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-22 14:33:12 -0700</bug_when>
    <thetext>CTTE: StaticNodeLists often contain only Elements, we shouldn&apos;t store them as Vector&lt;RefPtr&lt;Node&gt;&gt; in those cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931929</commentid>
    <comment_count>1</comment_count>
      <attachid>212307</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-22 14:34:21 -0700</bug_when>
    <thetext>Created attachment 212307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931930</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-22 14:37:05 -0700</bug_when>
    <thetext>Attachment 212307 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/AccessibilityRenderObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLFormControlsCollectionCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLFormElementCustom.cpp&apos;, u&apos;Source/WebCore/dom/SelectorQuery.cpp&apos;, u&apos;Source/WebCore/dom/StaticNodeList.cpp&apos;, u&apos;Source/WebCore/dom/StaticNodeList.h&apos;, u&apos;Source/WebCore/dom/WebKitNamedFlow.cpp&apos;, u&apos;Source/WebCore/html/HTMLCollection.cpp&apos;, u&apos;Source/WebCore/html/HTMLCollection.h&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.h&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.cpp&apos;]&quot; exit_code: 1
Source/WebCore/html/HTMLCollection.cpp:649:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebCore/html/HTMLFormElement.cpp:676:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebCore/html/HTMLCollection.h:46:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebCore/html/HTMLFormElement.h:51:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebCore/dom/StaticNodeList.h:42:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebCore/dom/StaticNodeList.h:66:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Total errors found: 6 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931931</commentid>
    <comment_count>3</comment_count>
      <attachid>212307</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-22 14:43:36 -0700</bug_when>
    <thetext>Comment on attachment 212307
Patch

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

r=me

&gt; Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp:46
&gt; +    Vector&lt;Ref&lt;Element&gt;&gt; namedItems;
&gt;      collection-&gt;impl()-&gt;namedItems(propertyNameToAtomicString(propertyName), namedItems);

Would be nice to make namedItems() return a vector instead of taking an out-parameter.

&gt; Source/WebCore/dom/StaticNodeList.cpp:69
&gt; +    return 0;

nullptr

&gt; Source/WebCore/dom/StaticNodeList.cpp:75
&gt; +    size_t length = m_elements.size();
&gt; +    for (size_t i = 0; i &lt; length; ++i) {

Modern WebKit style would be:
for (unsigned i = 0, length = m_elements.size(); i &lt; length; ++i) {

&gt; Source/WebCore/dom/StaticNodeList.cpp:81
&gt; +    return 0;

nullptr

&gt; Source/WebCore/dom/StaticNodeList.h:80
&gt; +    virtual Node* item(unsigned index) const OVERRIDE;
&gt; +    virtual Node* namedItem(const AtomicString&amp;) const OVERRIDE;

Can we make these return Element* instead? (C++ supports covariant return types for virtuals, no?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931932</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-22 15:10:22 -0700</bug_when>
    <thetext>Committed r156251: &lt;http://trac.webkit.org/changeset/156251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212307</attachid>
            <date>2013-09-22 14:34:21 -0700</date>
            <delta_ts>2013-09-22 14:43:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121769-20130922143420.patch</filename>
            <type>text/plain</type>
            <size>22370</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjI1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTA5LTIyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1RURTogU3RhdGljTm9kZUxpc3RzIG9m
dGVuIGNvbnRhaW4gb25seSBFbGVtZW50cywgd2Ugc2hvdWxkbid0IHN0b3JlIHRoZW0gYXMgVmVj
dG9yPFJlZlB0cjxOb2RlPj4gaW4gdGhvc2UgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgU3RhdGljRWxlbWVudExpc3QgYW5k
IHVzZXMgaXQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cE1lbWJlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVt
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hU
TUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWxsRWxlbWVudEV4dHJhY3RvclNlbGVjdG9yUXVlcnlU
cmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckRhdGFMaXN0OjpxdWVyeUFsbCk6CisgICAgICAgICogZG9tL1N0YXRpY05vZGVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0VsZW1lbnRMaXN0OjpsZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U3RhdGljRWxlbWVudExpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3Rh
dGljRWxlbWVudExpc3Q6Om5hbWVkSXRlbSk6CisgICAgICAgICogZG9tL1N0YXRpY05vZGVMaXN0
Lmg6CisgICAgICAgICogZG9tL1dlYktpdE5hbWVkRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0TmFtZWRGbG93OjpnZXRSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dE5hbWVkRmxvdzo6Z2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZs
b3c6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0TmFtZWRGbG93OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29s
bGVjdGlvbjo6bmFtZWRJdGVtcyk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6Z2V0TmFtZWRFbGVtZW50cyk6CisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpjb2xsZWN0SW50ZXJzZWN0aW9uT3JFbmNsb3N1cmVMaXN0
KToKKwogMjAxMy0wOS0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IENUVEU6IFJlbmRlck5hbWVkRmxvd1RocmVhZCBhbmQgRmxvd1RocmVhZENvbnRyb2xsZXIgc2hv
dWxkIG9wZXJhdGUgb24gRWxlbWVudHMsIG5vdCBOb2RlcwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxNTYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzEsMTMgKzkz
MSwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvCiAgICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQobm9kZSk7CiAgICAgLy8g
aWYgdGhlcmUncyBhIGZvcm0sIHRoZW4gdGhpcyBpcyBlYXN5CiAgICAgaWYgKGlucHV0LT5mb3Jt
KCkpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGZvcm1FbGVtZW50czsKKyAgICAg
ICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gZm9ybUVsZW1lbnRzOwogICAgICAgICBpbnB1dC0+Zm9y
bSgpLT5nZXROYW1lZEVsZW1lbnRzKGlucHV0LT5uYW1lKCksIGZvcm1FbGVtZW50cyk7CiAgICAg
ICAgIAogICAgICAgICB1bnNpZ25lZCBsZW4gPSBmb3JtRWxlbWVudHMuc2l6ZSgpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgICAgIE5vZGUq
IGFzc29jaWF0ZUVsZW1lbnQgPSBmb3JtRWxlbWVudHNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShhc3NvY2lhdGVFbGVtZW50KSkKKyAgICAgICAgICAgIEVsZW1lbnQmIGFzc29jaWF0ZUVs
ZW1lbnQgPSBmb3JtRWxlbWVudHNbaV0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZSgmYXNzb2Np
YXRlRWxlbWVudCkpCiAgICAgICAgICAgICAgICAgbGlua2VkVUlFbGVtZW50cy5hcHBlbmQob2Jq
ZWN0KTsgICAgICAgIAogICAgICAgICB9IAogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9t
LmNwcAkocmV2aXNpb24gMTU2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE3ICs0Miwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMo
RXhlY1N0YXRlKiBleGVjLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0
ZW1zOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXM7CiAgICAgY29sbGVjdGlv
bi0+aW1wbCgpLT5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSksIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0g
MSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCks
IG5hbWVkSXRlbXNbMF0uZ2V0KCkpOworICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0
aW9uLT5nbG9iYWxPYmplY3QoKSwgJm5hbWVkSXRlbXNbMF0uZ2V0KCkpOwogCiAgICAgLy8gRklY
TUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0
aW9uLgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0
aW9uCi0gICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0
YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMo
ZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY0VsZW1lbnRMaXN0OjphZG9w
dChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKIC8vIEhUTUxBbGxDb2xsZWN0aW9ucyBhcmUgc3Ry
YW5nZSBvYmplY3RzLCB0aGV5IHN1cHBvcnQgYm90aCBnZXQgYW5kIGNhbGwuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9t
LmNwcAkocmV2aXNpb24gMTU2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlICJKU1JhZGlvTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiUmFkaW9Ob2RlTGlzdC5oIgotI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTU2MjQ3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE0ICszOSwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVj
LCBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwor
ICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXM7CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKICAg
ICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAKICAg
ICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7Cisg
ICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCAmbmFt
ZWRJdGVtc1swXS5nZXQoKSk7CiAKICAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1wbCgpLT50eXBl
KCkgPT0gRm9ybUNvbnRyb2xzKTsKICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5n
bG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aW1wbCgpLT5vd25lck5vZGUoKS0+cmFkaW9Ob2Rl
TGlzdChuYW1lKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxNTYyNDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDE2ICs0NywxNiBAQCBKU1ZhbHVlIEpTSFRNTEZvcm1FbGVt
ZW50OjpuYW1lR2V0dGVyKEV4CiAgICAgSlNIVE1MRWxlbWVudCoganNGb3JtID0ganNDYXN0PEpT
SFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRm9ybUVsZW1l
bnQqIGZvcm0gPSB0b0hUTUxGb3JtRWxlbWVudChqc0Zvcm0tPmltcGwoKSk7CiAKLSAgICBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBu
YW1lZEl0ZW1zOwogICAgIGZvcm0tPmdldE5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CiAgICAgCiAgICAgaWYgKG5hbWVk
SXRlbXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAo
bmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywganNGb3Jt
LT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7CisgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIGpzRm9ybS0+Z2xvYmFsT2JqZWN0KCksICZuYW1lZEl0ZW1zWzBdLmdldCgpKTsK
IAogICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBhIFJh
ZGlvTm9kZUxpc3QuCi0gICAgcmV0dXJuIHRvSlMoZXhlYywganNGb3JtLT5nbG9iYWxPYmplY3Qo
KSwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKKyAgICByZXR1cm4g
dG9KUyhleGVjLCBqc0Zvcm0tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNFbGVtZW50TGlzdDo6YWRv
cHQobmFtZWRJdGVtcykuZ2V0KCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCShyZXZpc2lvbiAxNTYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0b3JRdWVyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE2ICs4MSwxNiBAQCBib29sIFNl
bGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoRWxlbWVudCogCiB9CiAKIHN0cnVjdCBBbGxFbGVtZW50
RXh0cmFjdG9yU2VsZWN0b3JRdWVyeVRyYWl0IHsKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
Tm9kZT4+IE91dHB1dFR5cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBPdXRw
dXRUeXBlOwogICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVu
dCA9IGZhbHNlOwotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kT3V0cHV0Rm9y
RWxlbWVudChPdXRwdXRUeXBlJiBvdXRwdXQsIEVsZW1lbnQqIGVsZW1lbnQpIHsgb3V0cHV0LmFw
cGVuZChlbGVtZW50KTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kT3V0
cHV0Rm9yRWxlbWVudChPdXRwdXRUeXBlJiBvdXRwdXQsIEVsZW1lbnQqIGVsZW1lbnQpIHsgQVNT
RVJUKGVsZW1lbnQpOyBvdXRwdXQuYXBwZW5kKCplbGVtZW50KTsgfQogfTsKIAogUGFzc1JlZlB0
cjxOb2RlTGlzdD4gU2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlBbGwoTm9kZSogcm9vdE5vZGUpIGNv
bnN0CiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gcmVzdWx0OworICAgIFZlY3RvcjxSZWY8
RWxlbWVudD4+IHJlc3VsdDsKICAgICBleGVjdXRlPEFsbEVsZW1lbnRFeHRyYWN0b3JTZWxlY3Rv
clF1ZXJ5VHJhaXQ+KHJvb3ROb2RlLCByZXN1bHQpOwotICAgIHJldHVybiBTdGF0aWNOb2RlTGlz
dDo6YWRvcHQocmVzdWx0KTsKKyAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmFkb3B0KHJl
c3VsdCk7CiB9CiAKIHN0cnVjdCBTaW5nbGVFbGVtZW50RXh0cmFjdG9yU2VsZWN0b3JRdWVyeVRy
YWl0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcAkocmV2aXNpb24g
MTU2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNCArNTcsMjggQEAgTm9kZSogU3RhdGljTm9kZUxpc3Q6Om5hbWVkSXRl
bShjb25zdCBBdAogICAgIHJldHVybiAwOwogfQogCit1bnNpZ25lZCBTdGF0aWNFbGVtZW50TGlz
dDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbGVtZW50cy5zaXplKCk7Cit9CisK
K05vZGUqIFN0YXRpY0VsZW1lbnRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorewor
ICAgIGlmIChpbmRleCA8IG1fZWxlbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gJmNvbnN0
X2Nhc3Q8RWxlbWVudCY+KG1fZWxlbWVudHNbaW5kZXhdLmdldCgpKTsKKyAgICByZXR1cm4gMDsK
K30KKworTm9kZSogU3RhdGljRWxlbWVudExpc3Q6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIGVsZW1lbnRJZCkgY29uc3QKK3sKKyAgICBzaXplX3QgbGVuZ3RoID0gbV9lbGVtZW50cy5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICBFbGVtZW50JiBlbGVtZW50ID0gY29uc3RfY2FzdDxFbGVtZW50Jj4obV9lbGVtZW50c1tpXS5n
ZXQoKSk7CisgICAgICAgIGlmIChlbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gZWxlbWVudElk
KQorICAgICAgICAgICAgcmV0dXJuICZlbGVtZW50OworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU3Rh
dGljTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9k
ZUxpc3QuaAkocmV2aXNpb24gMTU2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05v
ZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgU3RhdGlj
Tm9kZUxpc3RfaAogI2RlZmluZSBTdGF0aWNOb2RlTGlzdF9oCiAKKyNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDMxICszNyw1NSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSAgICBjbGFzcyBOb2RlOworY2xhc3MgU3RhdGljTm9kZUxpc3QgRklOQUwg
OiBwdWJsaWMgTm9kZUxpc3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRp
Y05vZGVMaXN0PiBhZG9wdChWZWN0b3I8UmVmUHRyPE5vZGU+PiYgbm9kZXMpCisgICAgeworICAg
ICAgICBSZWZQdHI8U3RhdGljTm9kZUxpc3Q+IG5vZGVMaXN0ID0gYWRvcHRSZWYobmV3IFN0YXRp
Y05vZGVMaXN0KTsKKyAgICAgICAgbm9kZUxpc3QtPm1fbm9kZXMuc3dhcChub2Rlcyk7CisgICAg
ICAgIHJldHVybiBub2RlTGlzdC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RhdGljTm9kZUxpc3Q+IGNyZWF0ZUVtcHR5KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU3RhdGljTm9kZUxpc3QpOworICAgIH0KKworICAgIHZpcnR1YWwgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBT
dGF0aWNOb2RlTGlzdCgpIHsgfQorCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gbV9ub2RlczsK
K307CisKK2NsYXNzIFN0YXRpY0VsZW1lbnRMaXN0IEZJTkFMIDogcHVibGljIE5vZGVMaXN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNFbGVtZW50TGlzdD4gYWRvcHQo
VmVjdG9yPFJlZjxFbGVtZW50Pj4mIGVsZW1lbnRzKQorICAgIHsKKyAgICAgICAgUmVmUHRyPFN0
YXRpY0VsZW1lbnRMaXN0PiBub2RlTGlzdCA9IGFkb3B0UmVmKG5ldyBTdGF0aWNFbGVtZW50TGlz
dCk7CisgICAgICAgIG5vZGVMaXN0LT5tX2VsZW1lbnRzLnN3YXAoZWxlbWVudHMpOworICAgICAg
ICByZXR1cm4gbm9kZUxpc3QucmVsZWFzZSgpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0YXRpY0VsZW1lbnRMaXN0PiBjcmVhdGVFbXB0eSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFN0YXRpY0VsZW1lbnRMaXN0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZSogaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBOb2RlKiBuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6Cisg
ICAgU3RhdGljRWxlbWVudExpc3QoKQorICAgIHsKKyAgICB9CiAKLSAgICBjbGFzcyBTdGF0aWNO
b2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdGF0aWNOb2RlTGlzdD4gYWRvcHQoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBu
b2RlcykKLSAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPFN0YXRpY05vZGVMaXN0PiBub2Rl
TGlzdCA9IGFkb3B0UmVmKG5ldyBTdGF0aWNOb2RlTGlzdCk7Ci0gICAgICAgICAgICBub2RlTGlz
dC0+bV9ub2Rlcy5zd2FwKG5vZGVzKTsKLSAgICAgICAgICAgIHJldHVybiBub2RlTGlzdC5yZWxl
YXNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNOb2Rl
TGlzdD4gY3JlYXRlRW1wdHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0YXRpY05vZGVMaXN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgTm9kZSogaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgTm9kZSog
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgU3RhdGljTm9kZUxpc3QoKSB7IH0KLQotICAgICAgICBWZWN0b3I8UmVm
UHRyPE5vZGU+ID4gbV9ub2RlczsKLSAgICB9OworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG1f
ZWxlbWVudHM7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCShyZXZpc2lvbiAxNTYyNTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcg
KzExOCw3IEBAIGludCBXZWJLaXROYW1lZEZsb3c6OmZpcnN0RW1wdHlSZWdpb25JbmQKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudChOb2Rl
KiBjb250ZW50Tm9kZSkKIHsKICAgICBpZiAoIWNvbnRlbnROb2RlKQotICAgICAgICByZXR1cm4g
U3RhdGljTm9kZUxpc3Q6OmNyZWF0ZUVtcHR5KCk7CisgICAgICAgIHJldHVybiBTdGF0aWNFbGVt
ZW50TGlzdDo6Y3JlYXRlRW1wdHkoKTsKIAogICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVu
dCgpKQogICAgICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKQEAgLTEyNiw5ICsxMjYsOSBAQCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdlCiAgICAgLy8gVGhlIHJlbmRlcmVyIG1heSBiZSBk
ZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgogICAgIC8vIEJlY2F1
c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMgYSByZWZl
cmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgogICAgIGlmICgh
bV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmNyZWF0
ZUVtcHR5KCk7CisgICAgICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlRW1wdHko
KTsKIAotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IHJlZ2lvbkVsZW1lbnRzOworICAgIFZlY3Rv
cjxSZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwogCiAgICAgaWYgKGluRmxvd1RocmVhZChj
b250ZW50Tm9kZS0+cmVuZGVyZXIoKSwgbV9wYXJlbnRGbG93VGhyZWFkKSkgewogICAgICAgICBj
b25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gbV9wYXJlbnRGbG93VGhyZWFkLT5y
ZW5kZXJSZWdpb25MaXN0KCk7CkBAIC0xNDEsMTIgKzE0MSwxMiBAQCBQYXNzUmVmUHRyPE5vZGVM
aXN0PiBXZWJLaXROYW1lZEZsb3c6OmdlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVu
dE5vZGUtPnJlbmRlcmVyKCksIHJlbmRlclJlZ2lvbikpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICAgICAgICAgICAgICBy
ZWdpb25FbGVtZW50cy5hcHBlbmQocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsK
KyAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50cy5hcHBlbmQoKnJlbmRlclJlZ2lvbi0+Z2Vu
ZXJhdGluZ0VsZW1lbnQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KHJlZ2lvbkVsZW1lbnRzKTsKKyAgICByZXR1
cm4gU3RhdGljRWxlbWVudExpc3Q6OmFkb3B0KHJlZ2lvbkVsZW1lbnRzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gV2ViS2l0TmFtZWRGbG93OjpnZXRSZWdpb25zKCkKQEAgLTE1Nyw5ICsx
NTcsOSBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdlCiAgICAgLy8g
VGhlIHJlbmRlcmVyIG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUg
dXBkYXRlLgogICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhl
IHdyYXBwZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMg
bmVjZXNzYXJ5LgogICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4g
U3RhdGljTm9kZUxpc3Q6OmNyZWF0ZUVtcHR5KCk7CisgICAgICAgIHJldHVybiBTdGF0aWNFbGVt
ZW50TGlzdDo6Y3JlYXRlRW1wdHkoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IHJlZ2lv
bkVsZW1lbnRzOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwogCiAg
ICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVh
ZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwogICAgIGZvciAoYXV0byBpdGVyID0gcmVnaW9uTGlzdC5i
ZWdpbigpLCBlbmQgPSByZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CkBA
IC0xNzAsMTAgKzE3MCwxMCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6
OmdlCiAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmlzUHNldWRvRWxlbWVudCgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVChyZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdF
bGVtZW50KCkpOwotICAgICAgICByZWdpb25FbGVtZW50cy5hcHBlbmQocmVuZGVyUmVnaW9uLT5n
ZW5lcmF0aW5nRWxlbWVudCgpKTsKKyAgICAgICAgcmVnaW9uRWxlbWVudHMuYXBwZW5kKCpyZW5k
ZXJSZWdpb24tPmdlbmVyYXRpbmdFbGVtZW50KCkpOwogICAgIH0KIAotICAgIHJldHVybiBTdGF0
aWNOb2RlTGlzdDo6YWRvcHQocmVnaW9uRWxlbWVudHMpOworICAgIHJldHVybiBTdGF0aWNFbGVt
ZW50TGlzdDo6YWRvcHQocmVnaW9uRWxlbWVudHMpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBXZWJLaXROYW1lZEZsb3c6OmdldENvbnRlbnQoKQpAQCAtMTg0LDE4ICsxODQsMTggQEAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gV2ViS2l0TmFtZWRGbG93OjpnZQogICAgIC8vIFRoZSByZW5kZXJl
ciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KICAg
ICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtl
ZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4K
ICAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIFN0YXRpY05vZGVM
aXN0OjpjcmVhdGVFbXB0eSgpOworICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNy
ZWF0ZUVtcHR5KCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBjb250ZW50RWxlbWVudHM7
CisgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gY29udGVudEVsZW1lbnRzOwogCiAgICAgY29uc3Qg
TmFtZWRGbG93Q29udGVudEVsZW1lbnRzJiBjb250ZW50RWxlbWVudHNMaXN0ID0gbV9wYXJlbnRG
bG93VGhyZWFkLT5jb250ZW50RWxlbWVudHMoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBjb250ZW50
RWxlbWVudHNMaXN0LmJlZ2luKCksIGVuZCA9IGNvbnRlbnRFbGVtZW50c0xpc3QuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gKml0OwogICAgICAg
ICBBU1NFUlQoZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpLT5mbG93VGhyZWFkKCkgPT0gbV9wYXJl
bnRGbG93VGhyZWFkLT5mbG93VGhyZWFkTmFtZSgpKTsKLSAgICAgICAgY29udGVudEVsZW1lbnRz
LmFwcGVuZChlbGVtZW50KTsKKyAgICAgICAgY29udGVudEVsZW1lbnRzLmFwcGVuZCgqZWxlbWVu
dCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChjb250ZW50RWxl
bWVudHMpOworICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6YWRvcHQoY29udGVudEVsZW1l
bnRzKTsKIH0KIAogdm9pZCBXZWJLaXROYW1lZEZsb3c6OnNldFJlbmRlcmVyKFJlbmRlck5hbWVk
Rmxvd1RocmVhZCogcGFyZW50Rmxvd1RocmVhZCkKQEAgLTIyNSw5ICsyMjUsNyBAQCB2b2lkIFdl
YktpdE5hbWVkRmxvdzo6ZGlzcGF0Y2hSZWdpb25MYXlvCiAgICAgaWYgKGZsb3dTdGF0ZSgpID09
IEZsb3dTdGF0ZU51bGwpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZl
bnQgPSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHJlZ2lvbmxheW91dHVwZGF0
ZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPmRlZmF1bHRW
aWV3KCksIDApOwotCi0gICAgZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgZGlzcGF0Y2hFdmVu
dChVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHJlZ2lvbmxheW91dHVwZGF0ZUV2
ZW50LCBmYWxzZSwgZmFsc2UsIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3
KCksIDApKTsKIH0KICAgICAKIHZvaWQgV2ViS2l0TmFtZWRGbG93OjpkaXNwYXRjaFJlZ2lvbk92
ZXJzZXRDaGFuZ2VFdmVudCgpCkBAIC0yMzcsMTAgKzIzNSw4IEBAIHZvaWQgV2ViS2l0TmFtZWRG
bG93OjpkaXNwYXRjaFJlZ2lvbk92ZXIKICAgICAvLyBJZiB0aGUgZmxvdyBpcyBpbiB0aGUgIk5V
TEwiIHN0YXRlIHRoZSBldmVudCBzaG91bGQgbm90IGJlIGRpc3BhdGNoZWQgYW55IG1vcmUuCiAg
ICAgaWYgKGZsb3dTdGF0ZSgpID09IEZsb3dTdGF0ZU51bGwpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gVUlFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS53ZWJraXRyZWdpb25vdmVyc2V0Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbV9mbG93TWFu
YWdlci0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgMCk7Ci0gICAgCi0gICAgZGlzcGF0Y2hF
dmVudChldmVudCk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFVJRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkud2Via2l0cmVnaW9ub3ZlcnNldGNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1fZmxv
d01hbmFnZXItPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIDApKTsKIH0KIAogRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgV2ViS2l0TmFtZWRGbG93OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTU2
MjQ3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0Niw3ICs2NDYsNyBAQCBib29sIEhUTUxDb2xsZWN0aW9uOjpoYXNOYW1lZEl0
ZW0oY29uc3QgCiAgICAgcmV0dXJuIG5hbWVkSXRlbShuYW1lKTsKIH0KIAotdm9pZCBIVE1MQ29s
bGVjdGlvbjo6bmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiYgcmVzdWx0KSBjb25zdAordm9pZCBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVt
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWY8RWxlbWVudD4+JiByZXN1bHQp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlc3VsdC5pc0VtcHR5KCkpOwogICAgIGlmIChuYW1lLmlz
RW1wdHkoKSkKQEAgLTY1OCwxMCArNjU4LDEwIEBAIHZvaWQgSFRNTENvbGxlY3Rpb246Om5hbWVk
SXRlbXMoY29uc3QgQXQKICAgICBWZWN0b3I8RWxlbWVudCo+KiBuYW1lUmVzdWx0cyA9IG5hbWVD
YWNoZShuYW1lKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGlkUmVzdWx0cyAmJiBpIDwg
aWRSZXN1bHRzLT5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChpZFJlc3VsdHMt
PmF0KGkpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgqaWRSZXN1bHRzLT5hdChpKSk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBuYW1lUmVzdWx0cyAmJiBpIDwgbmFtZVJlc3VsdHMtPnNp
emUoKTsgKytpKQotICAgICAgICByZXN1bHQuYXBwZW5kKG5hbWVSZXN1bHRzLT5hdChpKSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoKm5hbWVSZXN1bHRzLT5hdChpKSk7CiB9CiAKIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0YWdzKGNvbnN0IFN0cmluZyYgbmFtZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDE1NjI0NykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOb24tRE9NIEFQSQogICAgIHZpcnR1YWwg
Ym9vbCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICB2
b2lkIG5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4mKSBjb25zdDsKKyAgICB2b2lkIG5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8UmVmPEVsZW1lbnQ+PiYpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoaXNMZW5ndGhDYWNoZVZhbGlkKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTYyNDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3MywxNiArNjczLDE2IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpoYXNOYW1lZEVsZW1lbnQo
Y28KIH0KIAogLy8gRklYTUU6IFVzZSBSZWZQdHI8SFRNTEVsZW1lbnQ+IGZvciBuYW1lZEl0ZW1z
LiBlbGVtZW50cygpLT5uYW1lZEl0ZW1zIG5ldmVyIHJldHVybiBub24tSFRNTEVsZW1lbnQgbm9k
ZXMuCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6Z2V0TmFtZWRFbGVtZW50cyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbmFtZWRJdGVtcykKK3ZvaWQgSFRN
TEZvcm1FbGVtZW50OjpnZXROYW1lZEVsZW1lbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
VmVjdG9yPFJlZjxFbGVtZW50Pj4mIG5hbWVkSXRlbXMpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvZm9ybXMuaHRt
bCNkb20tZm9ybS1uYW1lZGl0ZW0KICAgICBlbGVtZW50cygpLT5uYW1lZEl0ZW1zKG5hbWUsIG5h
bWVkSXRlbXMpOwogCiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnRGcm9tUGFzdCA9IGVsZW1lbnRG
cm9tUGFzdE5hbWVzTWFwKG5hbWUpOwotICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxICYm
IG5hbWVkSXRlbXMuZmlyc3QoKSAhPSBlbGVtZW50RnJvbVBhc3QpCi0gICAgICAgIGFkZFRvUGFz
dE5hbWVzTWFwKHRvSFRNTEVsZW1lbnQobmFtZWRJdGVtcy5maXJzdCgpLmdldCgpKS0+YXNGb3Jt
TmFtZWRJdGVtKCksIG5hbWUpOworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxICYmICZu
YW1lZEl0ZW1zLmZpcnN0KCkuZ2V0KCkgIT0gZWxlbWVudEZyb21QYXN0KQorICAgICAgICBhZGRU
b1Bhc3ROYW1lc01hcCh0b0hUTUxFbGVtZW50KCZuYW1lZEl0ZW1zLmZpcnN0KCkuZ2V0KCkpLT5h
c0Zvcm1OYW1lZEl0ZW0oKSwgbmFtZSk7CiAgICAgZWxzZSBpZiAoZWxlbWVudEZyb21QYXN0ICYm
IG5hbWVkSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICBuYW1lZEl0ZW1zLmFwcGVuZChlbGVtZW50
RnJvbVBhc3QpOworICAgICAgICBuYW1lZEl0ZW1zLmFwcGVuZCgqZWxlbWVudEZyb21QYXN0KTsK
IH0KIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNo
ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDE1
NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gZWxlbWVudHMoKTsKICAgICBib29sIGhhc05hbWVkRWxlbWVudChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKLSAgICB2b2lkIGdldE5hbWVkRWxlbWVudHMoY29uc3QgQXRvbWljU3RyaW5n
JiwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+Jik7CisgICAgdm9pZCBnZXROYW1lZEVsZW1lbnRzKGNv
bnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxSZWY8RWxlbWVudD4+Jik7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKICAgICBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjI0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1
LDIwICszMzUsMjEgQEAgdm9pZCBTVkdTVkdFbGVtZW50Ojpmb3JjZVJlZHJhdygpCiAKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IFNWR1NWR0VsZW1lbnQ6OmNvbGxlY3RJbnRlcnNlY3Rpb25PckVuY2xv
c3VyZUxpc3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBTVkdFbGVtZW50KiByZWZlcmVuY2VFbGVt
ZW50LCBDb2xsZWN0SW50ZXJzZWN0aW9uT3JFbmNsb3N1cmUgY29sbGVjdCkgY29uc3QKIHsKLSAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbm9kZXM7CisgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4g
ZWxlbWVudHM7CiAKICAgICBhdXRvIHN2Z0Rlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8
U1ZHRWxlbWVudD4ocmVmZXJlbmNlRWxlbWVudCA/IHJlZmVyZW5jZUVsZW1lbnQgOiB0aGlzKTsK
ICAgICBmb3IgKGF1dG8gaXQgPSBzdmdEZXNjZW5kYW50cy5iZWdpbigpLCBlbmQgPSBzdmdEZXNj
ZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IFNWR0VsZW1l
bnQqIHN2Z0VsZW1lbnQgPSAmKml0OwogICAgICAgICBpZiAoY29sbGVjdCA9PSBDb2xsZWN0SW50
ZXJzZWN0aW9uTGlzdCkgewotICAgICAgICAgICAgaWYgKGNoZWNrSW50ZXJzZWN0aW9uKHN2Z0Vs
ZW1lbnQsIHJlY3QpKQotICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChjb25zdF9jYXN0PFNW
R0VsZW1lbnQqPihzdmdFbGVtZW50KSk7CisgICAgICAgICAgICBpZiAoUmVuZGVyU1ZHTW9kZWxP
YmplY3Q6OmNoZWNrSW50ZXJzZWN0aW9uKHN2Z0VsZW1lbnQtPnJlbmRlcmVyKCksIHJlY3QpKQor
ICAgICAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgqY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4o
c3ZnRWxlbWVudCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGNoZWNrRW5j
bG9zdXJlKHN2Z0VsZW1lbnQsIHJlY3QpKQotICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChj
b25zdF9jYXN0PFNWR0VsZW1lbnQqPihzdmdFbGVtZW50KSk7CisgICAgICAgICAgICBpZiAoUmVu
ZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrRW5jbG9zdXJlKHN2Z0VsZW1lbnQtPnJlbmRlcmVyKCks
IHJlY3QpKQorICAgICAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgqY29uc3RfY2FzdDxTVkdF
bGVtZW50Kj4oc3ZnRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBTdGF0
aWNOb2RlTGlzdDo6YWRvcHQobm9kZXMpOworCisgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0
OjphZG9wdChlbGVtZW50cyk7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IFNWR1NWR0VsZW1l
bnQ6OmdldEludGVyc2VjdGlvbkxpc3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBTVkdFbGVtZW50
KiByZWZlcmVuY2VFbGVtZW50KSBjb25zdAo=
</data>
<flag name="review"
          id="234499"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>