<?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>49804</bug_id>
          
          <creation_ts>2010-11-19 06:59:11 -0800</creation_ts>
          <short_desc>Web Inspector: [REGRESSION] Contents of rules inside @media not displayed/editable</short_desc>
          <delta_ts>2010-11-22 22:15:39 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311433</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-19 06:59:11 -0800</bug_when>
    <thetext>If a rule R resides inside a @media rule, R&apos;s properties are not displayed and R is not editable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312358</commentid>
    <comment_count>1</comment_count>
      <attachid>74557</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-22 08:52:16 -0800</bug_when>
    <thetext>Created attachment 74557
[PATCH] Suggested fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312362</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-22 08:59:29 -0800</bug_when>
    <thetext>Attachment 74557 did not build on mac:
Build output: http://queues.webkit.org/results/6269056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312363</commentid>
    <comment_count>3</comment_count>
      <attachid>74557</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-22 09:00:28 -0800</bug_when>
    <thetext>Comment on attachment 74557
[PATCH] Suggested fix

Please test this thoroughly.

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

&gt; WebCore/inspector/InspectorStyleSheet.h:161
&gt; +    bool setText(const String&amp;, bool reparsePageStyleSheet);

Consider splitting this into two methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312365</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-22 09:02:53 -0800</bug_when>
    <thetext>Attachment 74557 did not build on qt:
Build output: http://queues.webkit.org/results/6256092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312371</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-22 09:10:03 -0800</bug_when>
    <thetext>Attachment 74557 did not build on chromium:
Build output: http://queues.webkit.org/results/6108135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312393</commentid>
    <comment_count>6</comment_count>
      <attachid>74567</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-22 09:56:04 -0800</bug_when>
    <thetext>Created attachment 74567
[PATCH] Patch attached to test compilability, review not required</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312403</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-22 10:36:31 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       LayoutTests/ChangeLog
        A       LayoutTests/inspector/resources/styles-new-API-1.css
        M       LayoutTests/inspector/resources/styles-new-API.css
        M       LayoutTests/inspector/styles-new-API-expected.txt
        M       WebCore/ChangeLog
        M       WebCore/css/CSSImportRule.cpp
        M       WebCore/inspector/InspectorCSSAgent.cpp
        M       WebCore/inspector/InspectorStyleSheet.cpp
        M       WebCore/inspector/InspectorStyleSheet.h
Committed r72540</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312425</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-22 11:19:52 -0800</bug_when>
    <thetext>This only includes an Inspector regression test, but has changes that look like they would affect Web content behavior. Can you add a test for the CSSImportRule.cpp change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312429</commentid>
    <comment_count>9</comment_count>
      <attachid>74567</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-22 11:25:58 -0800</bug_when>
    <thetext>Comment on attachment 74567
[PATCH] Patch attached to test compilability, review not required

Clearing r? from landed patch (it was set for bots).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312571</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-22 15:53:58 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; This only includes an Inspector regression test, but has changes that look like they would affect Web content behavior. Can you add a test for the CSSImportRule.cpp change?

Alexey, I&apos;m happy to add a test in a follow-up patch if you can give me a hint on how this test should look like. If you notice, the only CSSImportRule change is an additional NULL check that eliminates a crash whenever the parent CSSStyleSheet (i.e. the one that includes an @import statement) has no parent document - this can be easily seen from the last (non-changed) line of the related snippet in the patch. This can only occur in an artificial setting like parsing text for a hand-crafted CSSStyleSheet created with CSSStyleSheet::create() (with no arguments).

Apparently, WebKit had never encountered such kind of a behavior (otherwise the crash would not have gone unnoticed), and parsing a CSSStyleSheet created for any live node in a real document would invoke addPendingStylesheet() on that document without ever remove..()-ing it. In turn, this would subsequently prevent CSSStyleSelector::styleRulesForElement() from returning ANY matched rules for any element (that&apos;s what had been happening until this patch was committed - you can try inspecting element styles at, say, apple.com).

So, I&apos;m not sure which aspect of the involved CSSImportRule change the test should cover. Should it just confirm that the code does not crash for such a stylesheet (already implicitly covered by the updated styles-new-API.html test) or something more solid still holds for the code in question?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312696</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-22 22:15:39 -0800</bug_when>
    <thetext>That explains why no test is needed, thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74557</attachid>
            <date>2010-11-22 08:52:16 -0800</date>
            <delta_ts>2010-11-22 09:00:28 -0800</delta_ts>
            <desc>[PATCH] Suggested fix</desc>
            <filename>fixrules_review.patch</filename>
            <type>text/plain</type>
            <size>22319</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5Mjk3NGZhLi43YTExMWQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTEt
MjIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUkVH
UkVTU0lPTl0gQ29udGVudHMgb2YgcnVsZXMgaW5zaWRlIEBtZWRpYSBub3QgZGlzcGxheWVkL2Vk
aXRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
OTgwNAorCisgICAgICAgICogaW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtbmV3LUFQSS0xLmNz
czogQWRkZWQuCisgICAgICAgIChAcGFnZSk6CisgICAgICAgIChAcGFnZSA6Zmlyc3QpOgorICAg
ICAgICAoI2Fic2VudC1pZCk6CisgICAgICAgIChib2R5KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVzb3VyY2VzL3N0eWxlcy1uZXctQVBJLmNzczoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
LW5ldy1BUEktZXhwZWN0ZWQudHh0OgorCiAyMDEwLTExLTE5ICBBbnRvbiBNdWhpbiAgPGFudG9u
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBuZXh0IGJhdGNoIG9mIENo
cm9taXVtIHN1cHByZXNzaW9ucyBmb3IgbGF5b3V0IHRlc3QgZmFpbHVyZXMgYWZ0ZXIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLW5ldy1BUEktMS5j
c3MgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1uZXctQVBJLTEuY3Nz
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc2NzlhZTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1uZXctQVBJLTEu
Y3NzCkBAIC0wLDAgKzEsMTYgQEAKK0BwYWdlIHsgbWFyZ2luOiAyY20gfSAvKiBBbGwgbWFyZ2lu
cyBzZXQgdG8gMmNtICovCisKK0BwYWdlIDpmaXJzdCB7CisgIG1hcmdpbi10b3A6IDEwY20gICAg
LyogVG9wIG1hcmdpbiBvbiBmaXJzdCBwYWdlIDEwY20gKi8KK30KKworQG1lZGlhIHNjcmVlbiB7
CisKKyNhYnNlbnQtaWQgeworfQorCitib2R5IHsKKyAgICBwcm9wZXJ0eTogaW1wb3J0ZWQtbWVk
aWEtc2NyZWVuLXN0eWxlc2hlZXQ7Cit9CisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLW5ldy1BUEkuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9zdHlsZXMtbmV3LUFQSS5jc3MKaW5kZXggN2I3YjhlMy4uZjRhZjAzYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtbmV3LUFQ
SS5jc3MKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtbmV3LUFQ
SS5jc3MKQEAgLTEsNyArMSwxMCBAQAorQGltcG9ydCB1cmwoInN0eWxlcy1uZXctQVBJLTEuY3Nz
Iik7CisKIGh0bWwgewogICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiB9CiAKK0BtZWRpYSBzY3JlZW4g
ewogYm9keSB7CiAgICAgZm9udC1zaXplOiAxMnB4OwogICAgIGZvbzogYmFyICEKQEAgLTE2LDYg
KzE5LDcgQEAgYm9keSB7CiAvKiBjb21tZW50IGJlZm9yZSBzZWxlY3RvciAqL2JvZHkubWFpbjEv
KiBjb21tZW50IGFmdGVyIHNlbGVjdG9yICovey8qIGNvbW1lbnQgKi9jb2xvcjogI0YwMEJBQTt6
b286bW9vIC8qIG5vdCBhbiAhaW1wb3J0YW50IHVucmVjb2duaXplZCBwcm9wZXJ0eSAqL30vKiBj
b21tZW50ICovCiAKIGJvZHkubWFpbjJ7YmFja2dyb3VuZDogZ3JlZW4gLyogdmFsdWUgIWltcG9y
dGFudCBjb21tZW50ICovICFpbXBvcnRhbnQgLyogbm8gc2VtaWNvbG9uLCB2ZXJ5ICFpbXBvcnRh
bnQgKi99Cit9CiAKIGJvZHk6OmFmdGVyICB7CiAgICAgY29udGVudDogIkFmdGVyIGJvZHkiOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQK
aW5kZXggYjYyZTAzZS4uZDY0MjJjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0CkBAIC0xOCw2ICsxOCwxMCBAQCBib2R5OiBbdXNl
ci1hZ2VudF0KIAogcnVsZQogYm9keTogW10KK1sncHJvcGVydHknOidpbXBvcnRlZC1tZWRpYS1z
Y3JlZW4tc3R5bGVzaGVldCcgbm9uLXBhcnNlZF0gQFs1LTQ4XSBhY3RpdmUKKworcnVsZQorYm9k
eTogW10KIFsnZm9udC1zaXplJzonMTJweCddIEBbNS0yMV0gYWN0aXZlCiBbJ2Zvbyc6J2JhciAh
CiAKQEAgLTg0LDEwICs4OCwxMyBAQCByYXcgc3R5bGUKIAogPT09IEFsbCBzdHlsZXNoZWV0cyA9
PT0KIAotU3R5bGVTaGVldDogJ2h0bWwgeworU3R5bGVTaGVldDogJ0BpbXBvcnQgdXJsKCJzdHls
ZXMtbmV3LUFQSS0xLmNzcyIpOworCitodG1sIHsKICAgICBmb250LXdlaWdodDogNDAwOwogfQog
CitAbWVkaWEgc2NyZWVuIHsKIGJvZHkgewogICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICBmb286
IGJhciAhCkBAIC0xMDIsNiArMTA5LDcgQEAgYm9keSB7CiAvKiBjb21tZW50IGJlZm9yZSBzZWxl
Y3RvciAqL2JvZHkubWFpbjEvKiBjb21tZW50IGFmdGVyIHNlbGVjdG9yICovey8qIGNvbW1lbnQg
Ki9jb2xvcjogI0YwMEJBQTt6b286bW9vIC8qIG5vdCBhbiAhaW1wb3J0YW50IHVucmVjb2duaXpl
ZCBwcm9wZXJ0eSAqL30vKiBjb21tZW50ICovCiAKIGJvZHkubWFpbjJ7YmFja2dyb3VuZDogZ3Jl
ZW4gLyogdmFsdWUgIWltcG9ydGFudCBjb21tZW50ICovICFpbXBvcnRhbnQgLyogbm8gc2VtaWNv
bG9uLCB2ZXJ5ICFpbXBvcnRhbnQgKi99Cit9CiAKIGJvZHk6OmFmdGVyICB7CiAgICAgY29udGVu
dDogIkFmdGVyIGJvZHkiOwpAQCAtMjQ0LDYgKzI1MiwxMCBAQCBib2R5OiBbdXNlci1hZ2VudF0K
IAogcnVsZQogYm9keTogW10KK1sncHJvcGVydHknOidpbXBvcnRlZC1tZWRpYS1zY3JlZW4tc3R5
bGVzaGVldCcgbm9uLXBhcnNlZF0gQFs1LTQ4XSBhY3RpdmUKKworcnVsZQorYm9keTogW10KIFsn
Zm9udC1zaXplJzonMTJweCddIEBbNS0yMV0gYWN0aXZlCiBbJ2Zvbyc6J2JhciAhCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNiZDk1
My4uYzY0ZWFmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMS0yMiAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtSRUdSRVNTSU9OXSBDb250ZW50cyBvZiBy
dWxlcyBpbnNpZGUgQG1lZGlhIG5vdCBkaXNwbGF5ZWQvZWRpdGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5ODA0CisKKyAgICAgICAgKiBjc3Mv
Q1NTSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbXBvcnRSdWxlOjppbnNl
cnRlZEludG9QYXJlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRl
eHQyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphc0NTU1J1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlU2hlZXQ6OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Ojpy
dWxlRm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUlu
ZGV4QnlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1
cmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNv
dXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJl
RmxhdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJldmFs
aWRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6Zml4VW5wYXJzZWRQcm9wZXJ0eVJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0Ojpjb2xsZWN0RmxhdFJ1bGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5oOgorCiAyMDEwLTExLTE5ICBTYW0gTWFnbnVzb24gIDxzbWFnbnVz
b0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTSW1w
b3J0UnVsZS5jcHAKaW5kZXggZTAyZDI0NC4uODFhZGUzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9j
c3MvQ1NTSW1wb3J0UnVsZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAK
QEAgLTExMiw3ICsxMTIsNyBAQCBib29sIENTU0ltcG9ydFJ1bGU6OmlzTG9hZGluZygpIGNvbnN0
CiB2b2lkIENTU0ltcG9ydFJ1bGU6Omluc2VydGVkSW50b1BhcmVudCgpCiB7CiAgICAgQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7Ci0gICAgaWYgKCFwYXJl
bnRTaGVldCkKKyAgICBpZiAoIXBhcmVudFNoZWV0IHx8ICFwYXJlbnRTaGVldC0+ZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJl
c291cmNlTG9hZGVyID0gcGFyZW50U2hlZXQtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMzdiZjJi
My4uNzQ0NjIwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAt
MjgyLDcgKzI4Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0
Mihjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyCiAgICAgaWYgKCFpbnNwZWN0
b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JTdHlsZVNoZWV0
LT5zZXRUZXh0KHRleHQpOworICAgIGluc3BlY3RvclN0eWxlU2hlZXQtPnNldFRleHQodGV4dCwg
dHJ1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dDIoY29u
c3QgU3RyaW5nJiBmdWxsU3R5bGVJZCwgbG9uZyBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGE1YjJkZmUuLmVh
ZDgzMGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0y
Nyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiQ1NTSW1w
b3J0UnVsZS5oIgorI2luY2x1ZGUgIkNTU01lZGlhUnVsZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNl
ci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1J1
bGUuaCIKQEAgLTQzLDYgKzQ1LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKKyNpbmNsdWRlICJX
ZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTk5LDYgKzEwMiwzNSBAQCBSZWZQdHI8V2ViQ29y
ZTo6Q1NTUnVsZVNvdXJjZURhdGE+IFBhcnNlZFN0eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhQXQo
dW5zaWduZWQgaQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBQYXNzUmVmUHRyPENT
U1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KFN0eWxlQmFzZSogc3R5bGVCYXNlKQoreworICAgIGlm
ICghc3R5bGVCYXNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChzdHlsZUJhc2UtPmlz
Q1NTU3R5bGVTaGVldCgpKQorICAgICAgICByZXR1cm4gQ1NTUnVsZUxpc3Q6OmNyZWF0ZShzdGF0
aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVCYXNlKSwgdHJ1ZSk7CisgICAgaWYgKHN0eWxl
QmFzZS0+aXNSdWxlKCkpIHsKKyAgICAgICAgdW5zaWduZWQgcnVsZVR5cGUgPSBzdGF0aWNfY2Fz
dDxDU1NSdWxlKj4oc3R5bGVCYXNlKS0+dHlwZSgpOworICAgICAgICBSZWZQdHI8Q1NTUnVsZUxp
c3Q+IHJlc3VsdCA9IDA7CisKKyAgICAgICAgc3dpdGNoIChydWxlVHlwZSkgeworICAgICAgICBj
YXNlIENTU1J1bGU6Ok1FRElBX1JVTEU6CisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxDU1NNZWRpYVJ1bGUqPihzdHlsZUJhc2UpLT5jc3NSdWxlcygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX0tFWUZSQU1FU19SVUxFOgorICAgICAg
ICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSo+KHN0eWxl
QmFzZSktPmNzc1J1bGVzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NS
dWxlOjpJTVBPUlRfUlVMRToKKyAgICAgICAgY2FzZSBDU1NSdWxlOjpQQUdFX1JVTEU6CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0
eWxlKCkgY29uc3QKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtNTI5LDE3ICs1NjEsMjEgQEAgSW5zcGVjdG9yU3R5
bGVTaGVldDo6fkluc3BlY3RvclN0eWxlU2hlZXQoKQogICAgIGRlbGV0ZSBtX3BhcnNlZFN0eWxl
U2hlZXQ7CiB9CiAKLWJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0VGV4dChjb25zdCBTdHJp
bmcmIHRleHQpCitib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBib29sIHJlcGFyc2VQYWdlU3R5bGVTaGVldCkKIHsKICAgICBpZiAoIW1fcGFyc2Vk
U3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9wYXJzZWRTdHlsZVNo
ZWV0LT5zZXRUZXh0KHRleHQpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3Bh
Z2VTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9wYWdlU3R5
bGVTaGVldC0+cmVtb3ZlKGkpOwotICAgIG1faW5zcGVjdG9yU3R5bGVzLmNsZWFyKCk7CisgICAg
bV9mbGF0UnVsZXMuY2xlYXIoKTsKKworICAgIGlmIChyZXBhcnNlUGFnZVN0eWxlU2hlZXQpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG1fcGFnZVN0eWxlU2hlZXQtPmxl
bmd0aCgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+cmVt
b3ZlKGkpOworICAgICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3Bh
Z2VTdHlsZVNoZWV0LT51c2VTdHJpY3RQYXJzaW5nKCkpOworICAgICAgICBtX2luc3BlY3RvclN0
eWxlcy5jbGVhcigpOworICAgIH0KIAotICAgIG1fcGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5n
KHRleHQsIG1fcGFnZVN0eWxlU2hlZXQtPnVzZVN0cmljdFBhcnNpbmcoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTU4NCw3ICs2MjAsOCBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0
eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKIAogICAgIHN0eWxlU2hl
ZXRUZXh0ICs9IHNlbGVjdG9yOwogICAgIHN0eWxlU2hlZXRUZXh0ICs9ICIge30iOwotICAgIG1f
cGFyc2VkU3R5bGVTaGVldC0+c2V0VGV4dChzdHlsZVNoZWV0VGV4dCk7CisgICAgLy8gVXNpbmcg
c2V0VGV4dCgpIGFzIHRoaXMgb3BlcmF0aW9uIGNoYW5nZXMgdGhlIHN0eWxlIHNoZWV0IHJ1bGUg
c2V0LgorICAgIHNldFRleHQoc3R5bGVTaGVldFRleHQsIGZhbHNlKTsKIAogICAgIHJldHVybiBy
dWxlOwogfQpAQCAtNjAwLDE3ICs2MzcsOSBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxl
U2hlZXQ6OnJ1bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0CiAgICAgaWYg
KCFvaykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXggPSAw
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5sZW5n
dGgoKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBJbnNw
ZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUobV9wYWdlU3R5bGVTaGVldC0+aXRlbShpKSk7
Ci0gICAgICAgIGlmICghcnVsZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
aW5kZXggPT0gY3VycmVudEluZGV4KQotICAgICAgICAgICAgcmV0dXJuIHJ1bGU7CisgICAgZW5z
dXJlRmxhdFJ1bGVzKCk7CisgICAgcmV0dXJuIGluZGV4ID49IG1fZmxhdFJ1bGVzLnNpemUoKSA/
IDAgOiBtX2ZsYXRSdWxlcy5hdChpbmRleCk7CiAKLSAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0g
ICAgfQotICAgIHJldHVybiAwOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCkKQEAgLTc2Nyw1MSAr
Nzk2LDYgQEAgSW5zcGVjdG9yQ1NTSWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZU9yU3R5bGVJ
ZChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY28KICAgICByZXR1cm4gSW5zcGVjdG9yQ1NT
SWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpmaXhVbnBhcnNlZFByb3BlcnR5
UmFuZ2VzKENTU1J1bGVTb3VyY2VEYXRhKiBydWxlRGF0YSwgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZWV0VGV4dCkKLXsKLSAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3VyY2VEYXRhPiYgcHJvcGVydHlE
YXRhID0gcnVsZURhdGEtPnN0eWxlU291cmNlRGF0YS0+cHJvcGVydHlEYXRhOwotICAgIHVuc2ln
bmVkIHNpemUgPSBwcm9wZXJ0eURhdGEuc2l6ZSgpOwotICAgIGlmICghc2l6ZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgdW5zaWduZWQgc3R5bGVTdGFydCA9IHJ1bGVEYXRhLT5zdHlsZVNvdXJj
ZURhdGEtPnN0eWxlQm9keVJhbmdlLnN0YXJ0OwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
ID0gc3R5bGVTaGVldFRleHQuY2hhcmFjdGVycygpOwotICAgIENTU1Byb3BlcnR5U291cmNlRGF0
YSogbmV4dERhdGEgPSAmKHByb3BlcnR5RGF0YS5hdCgwKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEqIGN1
cnJlbnREYXRhID0gbmV4dERhdGE7Ci0gICAgICAgIG5leHREYXRhID0gaSA8IHNpemUgLSAxID8g
Jihwcm9wZXJ0eURhdGEuYXQoaSArIDEpKSA6IDA7Ci0KLSAgICAgICAgaWYgKGN1cnJlbnREYXRh
LT5wYXJzZWRPaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoY3VycmVudERh
dGEtPnJhbmdlLmVuZCA+IDAgJiYgY2hhcmFjdGVyc1tzdHlsZVN0YXJ0ICsgY3VycmVudERhdGEt
PnJhbmdlLmVuZCAtIDFdID09ICc7JykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IHVuc2lnbmVkIHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0OwotICAgICAgICBpZiAoIW5leHREYXRh
KQotICAgICAgICAgICAgcHJvcGVydHlFbmRJblN0eWxlU2hlZXQgPSBydWxlRGF0YS0+c3R5bGVT
b3VyY2VEYXRhLT5zdHlsZUJvZHlSYW5nZS5lbmQgLSAxOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCA9IHN0eWxlU3RhcnQgKyBuZXh0RGF0YS0+cmFu
Z2Uuc3RhcnQgLSAxOwotCi0gICAgICAgIHdoaWxlIChpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW3By
b3BlcnR5RW5kSW5TdHlsZVNoZWV0XSkpCi0gICAgICAgICAgICAtLXByb3BlcnR5RW5kSW5TdHls
ZVNoZWV0OwotCi0gICAgICAgIC8vIHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0IHBvaW50cyBhdCB0
aGUgbGFzdCBwcm9wZXJ0eSB0ZXh0IGNoYXJhY3Rlci4KLSAgICAgICAgdW5zaWduZWQgbmV3UHJv
cGVydHlFbmQgPSBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCAtIHN0eWxlU3RhcnQgKyAxOyAvLyBF
eGNsdXNpdmUgb2YgdGhlIGxhc3QgcHJvcGVydHkgdGV4dCBjaGFyYWN0ZXIuCi0gICAgICAgIGlm
IChjdXJyZW50RGF0YS0+cmFuZ2UuZW5kICE9IG5ld1Byb3BlcnR5RW5kKSB7Ci0gICAgICAgICAg
ICBjdXJyZW50RGF0YS0+cmFuZ2UuZW5kID0gbmV3UHJvcGVydHlFbmQ7Ci0gICAgICAgICAgICB1
bnNpZ25lZCB2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0ID0gc3R5bGVTdGFydCArIGN1cnJlbnREYXRh
LT5yYW5nZS5zdGFydCArIGN1cnJlbnREYXRhLT5uYW1lLmxlbmd0aCgpOwotICAgICAgICAgICAg
d2hpbGUgKHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgPCBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCAm
JiBjaGFyYWN0ZXJzW3ZhbHVlU3RhcnRJblN0eWxlU2hlZXRdICE9ICc6JykKLSAgICAgICAgICAg
ICAgICArK3ZhbHVlU3RhcnRJblN0eWxlU2hlZXQ7Ci0gICAgICAgICAgICBpZiAodmFsdWVTdGFy
dEluU3R5bGVTaGVldCA8IHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0KQotICAgICAgICAgICAgICAg
ICsrdmFsdWVTdGFydEluU3R5bGVTaGVldDsgLy8gU2hpZnQgcGFzdCB0aGUgJzonLgotICAgICAg
ICAgICAgd2hpbGUgKHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgPCBwcm9wZXJ0eUVuZEluU3R5bGVT
aGVldCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW3ZhbHVlU3RhcnRJblN0eWxlU2hlZXRdKSkK
LSAgICAgICAgICAgICAgICArK3ZhbHVlU3RhcnRJblN0eWxlU2hlZXQ7Ci0gICAgICAgICAgICAv
LyBOZWVkIHRvIGV4Y2x1ZGUgdGhlIHRyYWlsaW5nICc7JyBmcm9tIHRoZSBwcm9wZXJ0eSB2YWx1
ZS4KLSAgICAgICAgICAgIGN1cnJlbnREYXRhLT52YWx1ZSA9IHN0eWxlU2hlZXRUZXh0LnN1YnN0
cmluZyh2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0LCBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCAtIHZh
bHVlU3RhcnRJblN0eWxlU2hlZXQgKyAoY2hhcmFjdGVyc1twcm9wZXJ0eUVuZEluU3R5bGVTaGVl
dF0gPT0gJzsnID8gMCA6IDEpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogRG9jdW1lbnQqIElu
c3BlY3RvclN0eWxlU2hlZXQ6Om93bmVyRG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBt
X3BhZ2VTdHlsZVNoZWV0LT5kb2N1bWVudCgpOwpAQCAtODI0LDEyICs4MDgsMTAgQEAgUmVmUHRy
PENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlU291cmNlRGF0YUZv
cihDU1NTdHlsZURlY2xhcmEKIAogdW5zaWduZWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUlu
ZGV4QnlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBwYWdlU3R5bGUpIGNvbnN0CiB7CisgICAg
ZW5zdXJlRmxhdFJ1bGVzKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIHNpemUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBJbnNwZWN0b3JDU1NBZ2VudDo6
YXNDU1NTdHlsZVJ1bGUobV9wYWdlU3R5bGVTaGVldC0+aXRlbShpKSk7Ci0gICAgICAgIGlmICgh
cnVsZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAocnVsZS0+c3R5bGUoKSA9
PSBwYWdlU3R5bGUpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG1fZmxhdFJ1bGVz
LnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAobV9mbGF0UnVsZXMuYXQoaSkt
PnN0eWxlKCkgPT0gcGFnZVN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogCiAgICAg
ICAgICsraW5kZXg7CkBAIC04NjEsNiArODQzLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0
OjplbnN1cmVUZXh0KCkgY29uc3QKICAgICBib29sIHN1Y2Nlc3MgPSBvcmlnaW5hbFN0eWxlU2hl
ZXRUZXh0KCZ0ZXh0KTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgbV9wYXJzZWRTdHlsZVNo
ZWV0LT5zZXRUZXh0KHRleHQpOworICAgIC8vIE5vIG5lZWQgdG8gY2xlYXIgbV9mbGF0UnVsZXMg
aGVyZSAtIGl0J3MgZW1wdHkuCiAKICAgICByZXR1cm4gc3VjY2VzczsKIH0KQEAgLTg3MywxNyAr
ODU2LDE3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAg
ICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG5ld1N0eWxlU2hlZXQgPSBDU1NTdHls
ZVNoZWV0OjpjcmVhdGUocGFnZVN0eWxlU2hlZXQoKSA/IHBhZ2VTdHlsZVNoZWV0KCktPmRvY3Vt
ZW50KCkgOiAwKTsKKyAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbmV3U3R5bGVTaGVldCA9IENT
U1N0eWxlU2hlZXQ6OmNyZWF0ZSgpOwogICAgIENTU1BhcnNlciBwOwogICAgIFN0eWxlUnVsZVJh
bmdlTWFwIHJ1bGVSYW5nZU1hcDsKICAgICBwLnBhcnNlU2hlZXQobmV3U3R5bGVTaGVldC5nZXQo
KSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIDAsICZydWxlUmFuZ2VNYXApOwogICAgIE93
blB0cjxQYXJzZWRTdHlsZVNoZWV0OjpTb3VyY2VEYXRhPiByYW5nZXNWZWN0b3IobmV3IFBhcnNl
ZFN0eWxlU2hlZXQ6OlNvdXJjZURhdGEoKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBs
ZW5ndGggPSBuZXdTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVs
ZShuZXdTdHlsZVNoZWV0LT5pdGVtKGkpKTsKLSAgICAgICAgaWYgKCFydWxlKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIFN0eWxlUnVsZVJhbmdlTWFwOjppdGVyYXRvciBpdCA9IHJ1
bGVSYW5nZU1hcC5maW5kKHJ1bGUpOworICAgIFZlY3RvcjxDU1NTdHlsZVJ1bGUqPiBydWxlczsK
KyAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVMaXN0ID0gYXNDU1NSdWxlTGlzdChuZXdTdHls
ZVNoZWV0LmdldCgpKTsKKyAgICBjb2xsZWN0RmxhdFJ1bGVzKHJ1bGVMaXN0LCAmcnVsZXMpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgU3R5bGVSdWxlUmFuZ2VNYXA6Oml0ZXJhdG9yIGl0ID0gcnVsZVJhbmdl
TWFwLmZpbmQocnVsZXMuYXQoaSkpOwogICAgICAgICBpZiAoaXQgIT0gcnVsZVJhbmdlTWFwLmVu
ZCgpKSB7CiAgICAgICAgICAgICBmaXhVbnBhcnNlZFByb3BlcnR5UmFuZ2VzKGl0LT5zZWNvbmQu
Z2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpKTsKICAgICAgICAgICAgIHJhbmdlc1Zl
Y3Rvci0+YXBwZW5kKGl0LT5zZWNvbmQpOwpAQCAtODk0LDYgKzg3NywxMyBAQCBib29sIEluc3Bl
Y3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgIHJldHVybiBtX3BhcnNlZFN0
eWxlU2hlZXQtPmhhc1NvdXJjZURhdGEoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0
OjplbnN1cmVGbGF0UnVsZXMoKSBjb25zdAoreworICAgIC8vIFdlIGFyZSBmaW5lIHdpdGggcmVk
b2luZyB0aGlzIGZvciBlbXB0eSBzdHlsZXNoZWV0cyBhcyB0aGlzIHdpbGwgcnVuIGZhc3QuCisg
ICAgaWYgKG1fZmxhdFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgY29sbGVjdEZsYXRSdWxlcyhh
c0NTU1J1bGVMaXN0KHBhZ2VTdHlsZVNoZWV0KCkpLCAmbV9mbGF0UnVsZXMpOworfQorCiBib29s
IEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICghcGFnZVN0eWxlU2hlZXQoKSkK
QEAgLTkzOSwxOCArOTI5LDYgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzdHlsZVNoZWV0
VGV4dFdpdGhDaGFuZ2VkU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpmaW5kUGFnZVJ1
bGVXaXRoU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCi17Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgc2l6ZSA9IG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IEluc3BlY3RvckNTU0FnZW50Ojph
c0NTU1N0eWxlUnVsZShtX3BhZ2VTdHlsZVNoZWV0LT5pdGVtKGkpKTsKLSAgICAgICAgaWYgKCFy
dWxlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChydWxlLT5zdHlsZSgpID09
IHN0eWxlKQotICAgICAgICAgICAgcmV0dXJuIHJ1bGU7Ci0gICAgfQotICAgIHJldHVybiAwOwot
fQotCiBJbnNwZWN0b3JDU1NJZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlSWQoQ1NTU3R5bGVS
dWxlKiBydWxlKSBjb25zdAogewogICAgIHJldHVybiBydWxlT3JTdHlsZUlkKHJ1bGUtPnN0eWxl
KCkpOwpAQCAtOTYyLDEyICs5NDAsMTAgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXZh
bGlkYXRlU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogcGFnZVN0eWxlKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2lzUmV2YWxpZGF0aW5nID0gdHJ1ZTsKKyAgICBlbnN1cmVGbGF0UnVsZXMo
KTsKICAgICBDU1NTdHlsZVNoZWV0KiBwYXJzZWRTaGVldCA9IG1fcGFyc2VkU3R5bGVTaGVldC0+
Y3NzU3R5bGVTaGVldCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBwYXJzZWRT
aGVldC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgU3R5bGVCYXNlKiBzdHls
ZUJhc2UgPSBwYXJzZWRTaGVldC0+aXRlbShpKTsKLSAgICAgICAgQ1NTU3R5bGVSdWxlKiBwYXJz
ZWRSdWxlID0gSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKHN0eWxlQmFzZSk7Ci0g
ICAgICAgIGlmICghcGFyc2VkUnVsZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX2ZsYXRSdWxlcy5zaXplKCk7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgQ1NTU3R5bGVSdWxlKiBwYXJzZWRSdWxlID0gbV9mbGF0UnVsZXMuYXQoaSk7
CiAgICAgICAgIGlmIChwYXJzZWRSdWxlLT5zdHlsZSgpID09IHBhZ2VTdHlsZSkgewogICAgICAg
ICAgICAgaWYgKHBhcnNlZFJ1bGUtPnN0eWxlKCktPmNzc1RleHQoKSAhPSBwYWdlU3R5bGUtPmNz
c1RleHQoKSkgewogICAgICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBkaXNhYmxlZCBwcm9wZXJ0
aWVzIGZvciB0aGUgaW52YWxpZCBzdHlsZSBoZXJlLgpAQCAtMTAyMCwxNCArOTk2LDc3IEBAIFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChDU1NSdWxlTGlzCiAgICAgaWYgKCFydWxlTGlzdCkKICAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gcnVs
ZUxpc3QtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIENTU1N0eWxlUnVsZSog
cnVsZSA9IEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShydWxlTGlzdC0+aXRlbShp
KSk7Ci0gICAgICAgIGlmICghcnVsZSkKKyAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJlZlJ1bGVM
aXN0ID0gcnVsZUxpc3Q7CisgICAgVmVjdG9yPENTU1N0eWxlUnVsZSo+IHJ1bGVzOworICAgIGNv
bGxlY3RGbGF0UnVsZXMocmVmUnVsZUxpc3QsICZydWxlcyk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwLCBzaXplID0gcnVsZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICByZXN1
bHQtPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGVzLmF0KGkpKSk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30KKwordm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpm
aXhVbnBhcnNlZFByb3BlcnR5UmFuZ2VzKENTU1J1bGVTb3VyY2VEYXRhKiBydWxlRGF0YSwgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0VGV4dCkKK3sKKyAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3Vy
Y2VEYXRhPiYgcHJvcGVydHlEYXRhID0gcnVsZURhdGEtPnN0eWxlU291cmNlRGF0YS0+cHJvcGVy
dHlEYXRhOworICAgIHVuc2lnbmVkIHNpemUgPSBwcm9wZXJ0eURhdGEuc2l6ZSgpOworICAgIGlm
ICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgc3R5bGVTdGFydCA9IHJ1
bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEtPnN0eWxlQm9keVJhbmdlLnN0YXJ0OworICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3R5bGVTaGVldFRleHQuY2hhcmFjdGVycygpOworICAgIENT
U1Byb3BlcnR5U291cmNlRGF0YSogbmV4dERhdGEgPSAmKHByb3BlcnR5RGF0YS5hdCgwKSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEqIGN1cnJlbnREYXRhID0gbmV4dERhdGE7CisgICAgICAgIG5leHREYXRh
ID0gaSA8IHNpemUgLSAxID8gJihwcm9wZXJ0eURhdGEuYXQoaSArIDEpKSA6IDA7CisKKyAgICAg
ICAgaWYgKGN1cnJlbnREYXRhLT5wYXJzZWRPaykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoY3VycmVudERhdGEtPnJhbmdlLmVuZCA+IDAgJiYgY2hhcmFjdGVyc1tzdHlsZVN0
YXJ0ICsgY3VycmVudERhdGEtPnJhbmdlLmVuZCAtIDFdID09ICc7JykKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIHJlc3VsdC0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvclJ1bGUo
cnVsZSkpOworICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldDsKKyAgICAg
ICAgaWYgKCFuZXh0RGF0YSkKKyAgICAgICAgICAgIHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0ID0g
cnVsZURhdGEtPnN0eWxlU291cmNlRGF0YS0+c3R5bGVCb2R5UmFuZ2UuZW5kIC0gMTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvcGVydHlFbmRJblN0eWxlU2hlZXQgPSBzdHlsZVN0YXJ0
ICsgbmV4dERhdGEtPnJhbmdlLnN0YXJ0IC0gMTsKKworICAgICAgICB3aGlsZSAoaXNIVE1MU3Bh
Y2UoY2hhcmFjdGVyc1twcm9wZXJ0eUVuZEluU3R5bGVTaGVldF0pKQorICAgICAgICAgICAgLS1w
cm9wZXJ0eUVuZEluU3R5bGVTaGVldDsKKworICAgICAgICAvLyBwcm9wZXJ0eUVuZEluU3R5bGVT
aGVldCBwb2ludHMgYXQgdGhlIGxhc3QgcHJvcGVydHkgdGV4dCBjaGFyYWN0ZXIuCisgICAgICAg
IHVuc2lnbmVkIG5ld1Byb3BlcnR5RW5kID0gcHJvcGVydHlFbmRJblN0eWxlU2hlZXQgLSBzdHls
ZVN0YXJ0ICsgMTsgLy8gRXhjbHVzaXZlIG9mIHRoZSBsYXN0IHByb3BlcnR5IHRleHQgY2hhcmFj
dGVyLgorICAgICAgICBpZiAoY3VycmVudERhdGEtPnJhbmdlLmVuZCAhPSBuZXdQcm9wZXJ0eUVu
ZCkgeworICAgICAgICAgICAgY3VycmVudERhdGEtPnJhbmdlLmVuZCA9IG5ld1Byb3BlcnR5RW5k
OworICAgICAgICAgICAgdW5zaWduZWQgdmFsdWVTdGFydEluU3R5bGVTaGVldCA9IHN0eWxlU3Rh
cnQgKyBjdXJyZW50RGF0YS0+cmFuZ2Uuc3RhcnQgKyBjdXJyZW50RGF0YS0+bmFtZS5sZW5ndGgo
KTsKKyAgICAgICAgICAgIHdoaWxlICh2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0IDwgcHJvcGVydHlF
bmRJblN0eWxlU2hlZXQgJiYgY2hhcmFjdGVyc1t2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0XSAhPSAn
OicpCisgICAgICAgICAgICAgICAgKyt2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0OworICAgICAgICAg
ICAgaWYgKHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgPCBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCkK
KyAgICAgICAgICAgICAgICArK3ZhbHVlU3RhcnRJblN0eWxlU2hlZXQ7IC8vIFNoaWZ0IHBhc3Qg
dGhlICc6Jy4KKyAgICAgICAgICAgIHdoaWxlICh2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0IDwgcHJv
cGVydHlFbmRJblN0eWxlU2hlZXQgJiYgaXNIVE1MU3BhY2UoY2hhcmFjdGVyc1t2YWx1ZVN0YXJ0
SW5TdHlsZVNoZWV0XSkpCisgICAgICAgICAgICAgICAgKyt2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0
OworICAgICAgICAgICAgLy8gTmVlZCB0byBleGNsdWRlIHRoZSB0cmFpbGluZyAnOycgZnJvbSB0
aGUgcHJvcGVydHkgdmFsdWUuCisgICAgICAgICAgICBjdXJyZW50RGF0YS0+dmFsdWUgPSBzdHls
ZVNoZWV0VGV4dC5zdWJzdHJpbmcodmFsdWVTdGFydEluU3R5bGVTaGVldCwgcHJvcGVydHlFbmRJ
blN0eWxlU2hlZXQgLSB2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0ICsgKGNoYXJhY3RlcnNbcHJvcGVy
dHlFbmRJblN0eWxlU2hlZXRdID09ICc7JyA/IDAgOiAxKSk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6Y29sbGVjdEZsYXRSdWxlcyhQYXNzUmVmUHRy
PENTU1J1bGVMaXN0PiBydWxlTGlzdCwgVmVjdG9yPENTU1N0eWxlUnVsZSo+KiByZXN1bHQpCit7
CisgICAgaWYgKCFydWxlTGlzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgc2l6ZSA9IHJ1bGVMaXN0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBDU1NSdWxlKiBydWxlID0gcnVsZUxpc3QtPml0ZW0oaSk7CisgICAgICAgIENTU1N0eWxl
UnVsZSogc3R5bGVSdWxlID0gSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKHJ1bGUp
OworICAgICAgICBpZiAoc3R5bGVSdWxlKQorICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoc3R5
bGVSdWxlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+
IGNoaWxkUnVsZUxpc3QgPSBhc0NTU1J1bGVMaXN0KHJ1bGUpOworICAgICAgICAgICAgaWYgKGNo
aWxkUnVsZUxpc3QpCisgICAgICAgICAgICAgICAgY29sbGVjdEZsYXRSdWxlcyhjaGlsZFJ1bGVM
aXN0LCByZXN1bHQpOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCAy
YTE0YmI5Li44MjNkYjg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5o
CkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZVN0eWxlU2hlZXQ7IH0KLSAgICBib29sIHNldFRleHQoY29u
c3QgU3RyaW5nJik7CisgICAgYm9vbCBzZXRUZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgcmVwYXJz
ZVBhZ2VTdHlsZVNoZWV0KTsKICAgICBib29sIHNldFJ1bGVTZWxlY3Rvcihjb25zdCBJbnNwZWN0
b3JDU1NJZCYsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpOwogICAgIENTU1N0eWxlUnVsZSogYWRk
UnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yKTsKICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGVGb3JJ
ZChjb25zdCBJbnNwZWN0b3JDU1NJZCYpIGNvbnN0OwpAQCAtMTczLDcgKzE3Myw2IEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBib29sIGNhbkJpbmQoKSBjb25zdCB7IHJldHVybiBtX29yaWdp
biAhPSAidXNlckFnZW50IiAmJiBtX29yaWdpbiAhPSAidXNlciI7IH0KICAgICBJbnNwZWN0b3JD
U1NJZCBydWxlT3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdDsKLSAg
ICB2b2lkIGZpeFVucGFyc2VkUHJvcGVydHlSYW5nZXMoQ1NTUnVsZVNvdXJjZURhdGEqIHJ1bGVE
YXRhLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRUZXh0KTsKICAgICB2aXJ0dWFsIGJvb2wgdGV4
dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxl
U291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Q7CkBAIC0xODcs
MTAgKzE4NiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNldFN0eWxlVGV4dChD
U1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CisgICAgc3Rh
dGljIHZvaWQgZml4VW5wYXJzZWRQcm9wZXJ0eVJhbmdlcyhDU1NSdWxlU291cmNlRGF0YSogcnVs
ZURhdGEsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldFRleHQpOworICAgIHN0YXRpYyB2b2lkIGNv
bGxlY3RGbGF0UnVsZXMoUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4sIFZlY3RvcjxDU1NTdHlsZVJ1
bGUqPiogcmVzdWx0KTsKICAgICBib29sIGVuc3VyZVRleHQoKSBjb25zdDsKICAgICBib29sIGVu
c3VyZVNvdXJjZURhdGEoKTsKKyAgICB2b2lkIGVuc3VyZUZsYXRSdWxlcygpIGNvbnN0OwogICAg
IGJvb2wgc3R5bGVTaGVldFRleHRXaXRoQ2hhbmdlZFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24q
LCBjb25zdCBTdHJpbmcmIG5ld1N0eWxlVGV4dCwgU3RyaW5nKiByZXN1bHQpOwotICAgIENTU1N0
eWxlUnVsZSogZmluZFBhZ2VSdWxlV2l0aFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAg
ICBJbnNwZWN0b3JDU1NJZCBydWxlSWQoQ1NTU3R5bGVSdWxlKiBydWxlKSBjb25zdDsKICAgICBJ
bnNwZWN0b3JDU1NJZCBzdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCB7
IHJldHVybiBydWxlT3JTdHlsZUlkKHN0eWxlKTsgfQogICAgIHZvaWQgcmV2YWxpZGF0ZVN0eWxl
KENTU1N0eWxlRGVjbGFyYXRpb24qKTsKQEAgLTE5OSw3ICsyMDAsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgaW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlz
dCopOwogCi0KICAgICBTdHJpbmcgbV9pZDsKICAgICBDU1NTdHlsZVNoZWV0KiBtX3BhZ2VTdHls
ZVNoZWV0OwogICAgIFN0cmluZyBtX29yaWdpbjsKQEAgLTIwNyw2ICsyMDcsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1JldmFsaWRhdGluZzsKICAgICBQYXJzZWRTdHlsZVNoZWV0KiBtX3Bh
cnNlZFN0eWxlU2hlZXQ7CiAgICAgSW5zcGVjdG9yU3R5bGVNYXAgbV9pbnNwZWN0b3JTdHlsZXM7
CisgICAgbXV0YWJsZSBWZWN0b3I8Q1NTU3R5bGVSdWxlKj4gbV9mbGF0UnVsZXM7CiAKICAgICBm
cmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGU7CiB9Owo=
</data>
<flag name="review"
          id="65195"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74567</attachid>
            <date>2010-11-22 09:56:04 -0800</date>
            <delta_ts>2010-11-22 11:25:57 -0800</delta_ts>
            <desc>[PATCH] Patch attached to test compilability, review not required</desc>
            <filename>fixrules_review1.patch</filename>
            <type>text/plain</type>
            <size>22466</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDNhYTQ0NmZmODBmZmUxMzdiMTYxM2EyNTBlMWVhZjU3NWM5YzhlM2MKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgTm92IDE5
IDIwOjAxOjUwIDIwMTAgKzAzMDAKCiAgICBDYWNoZSBmbGF0dGVuZWQgcnVsZXMgKyB1cGRhdGVk
IHRlc3RzCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDE0MmVkMzUuLjA0MzkzNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxMC0xMS0yMiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtSRUdSRVNTSU9OXSBDb250ZW50cyBvZiBydWxlcyBpbnNpZGUgQG1lZGlhIG5vdCBkaXNw
bGF5ZWQvZWRpdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ5ODA0CisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1uZXct
QVBJLTEuY3NzOiBBZGRlZC4KKyAgICAgICAgKEBwYWdlKToKKyAgICAgICAgKEBwYWdlIDpmaXJz
dCk6CisgICAgICAgICgjYWJzZW50LWlkKToKKyAgICAgICAgKGJvZHkpOgorICAgICAgICAqIGlu
c3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLW5ldy1BUEkuY3NzOgorICAgICAgICAqIGluc3BlY3Rv
ci9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTEtMjIgIEFudG9uIE11aGlu
ICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuICBBbm90aGVy
IHBvcnRpb24gb2YgQ2hyb21pdW0gcmViYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1uZXctQVBJLTEuY3NzIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtbmV3LUFQSS0xLmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwLi43Njc5YWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtbmV3LUFQSS0xLmNzcwpAQCAtMCwwICsxLDE2
IEBACitAcGFnZSB7IG1hcmdpbjogMmNtIH0gLyogQWxsIG1hcmdpbnMgc2V0IHRvIDJjbSAqLwor
CitAcGFnZSA6Zmlyc3QgeworICBtYXJnaW4tdG9wOiAxMGNtICAgIC8qIFRvcCBtYXJnaW4gb24g
Zmlyc3QgcGFnZSAxMGNtICovCit9CisKK0BtZWRpYSBzY3JlZW4geworCisjYWJzZW50LWlkIHsK
K30KKworYm9keSB7CisgICAgcHJvcGVydHk6IGltcG9ydGVkLW1lZGlhLXNjcmVlbi1zdHlsZXNo
ZWV0OworfQorCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L3N0eWxlcy1uZXctQVBJLmNzcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5
bGVzLW5ldy1BUEkuY3NzCmluZGV4IDdiN2I4ZTMuLmY0YWYwM2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLW5ldy1BUEkuY3NzCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLW5ldy1BUEkuY3NzCkBAIC0xLDcgKzEs
MTAgQEAKK0BpbXBvcnQgdXJsKCJzdHlsZXMtbmV3LUFQSS0xLmNzcyIpOworCiBodG1sIHsKICAg
ICBmb250LXdlaWdodDogNDAwOwogfQogCitAbWVkaWEgc2NyZWVuIHsKIGJvZHkgewogICAgIGZv
bnQtc2l6ZTogMTJweDsKICAgICBmb286IGJhciAhCkBAIC0xNiw2ICsxOSw3IEBAIGJvZHkgewog
LyogY29tbWVudCBiZWZvcmUgc2VsZWN0b3IgKi9ib2R5Lm1haW4xLyogY29tbWVudCBhZnRlciBz
ZWxlY3RvciAqL3svKiBjb21tZW50ICovY29sb3I6ICNGMDBCQUE7em9vOm1vbyAvKiBub3QgYW4g
IWltcG9ydGFudCB1bnJlY29nbml6ZWQgcHJvcGVydHkgKi99LyogY29tbWVudCAqLwogCiBib2R5
Lm1haW4ye2JhY2tncm91bmQ6IGdyZWVuIC8qIHZhbHVlICFpbXBvcnRhbnQgY29tbWVudCAqLyAh
aW1wb3J0YW50IC8qIG5vIHNlbWljb2xvbiwgdmVyeSAhaW1wb3J0YW50ICovfQorfQogCiBib2R5
OjphZnRlciAgewogICAgIGNvbnRlbnQ6ICJBZnRlciBib2R5IjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0CmluZGV4IGI2MmUwM2UuLmQ2
NDIyY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1uZXctQVBJLWV4
cGVjdGVkLnR4dApAQCAtMTgsNiArMTgsMTAgQEAgYm9keTogW3VzZXItYWdlbnRdCiAKIHJ1bGUK
IGJvZHk6IFtdCitbJ3Byb3BlcnR5JzonaW1wb3J0ZWQtbWVkaWEtc2NyZWVuLXN0eWxlc2hlZXQn
IG5vbi1wYXJzZWRdIEBbNS00OF0gYWN0aXZlCisKK3J1bGUKK2JvZHk6IFtdCiBbJ2ZvbnQtc2l6
ZSc6JzEycHgnXSBAWzUtMjFdIGFjdGl2ZQogWydmb28nOidiYXIgIQogCkBAIC04NCwxMCArODgs
MTMgQEAgcmF3IHN0eWxlCiAKID09PSBBbGwgc3R5bGVzaGVldHMgPT09CiAKLVN0eWxlU2hlZXQ6
ICdodG1sIHsKK1N0eWxlU2hlZXQ6ICdAaW1wb3J0IHVybCgic3R5bGVzLW5ldy1BUEktMS5jc3Mi
KTsKKworaHRtbCB7CiAgICAgZm9udC13ZWlnaHQ6IDQwMDsKIH0KIAorQG1lZGlhIHNjcmVlbiB7
CiBib2R5IHsKICAgICBmb250LXNpemU6IDEycHg7CiAgICAgZm9vOiBiYXIgIQpAQCAtMTAyLDYg
KzEwOSw3IEBAIGJvZHkgewogLyogY29tbWVudCBiZWZvcmUgc2VsZWN0b3IgKi9ib2R5Lm1haW4x
LyogY29tbWVudCBhZnRlciBzZWxlY3RvciAqL3svKiBjb21tZW50ICovY29sb3I6ICNGMDBCQUE7
em9vOm1vbyAvKiBub3QgYW4gIWltcG9ydGFudCB1bnJlY29nbml6ZWQgcHJvcGVydHkgKi99Lyog
Y29tbWVudCAqLwogCiBib2R5Lm1haW4ye2JhY2tncm91bmQ6IGdyZWVuIC8qIHZhbHVlICFpbXBv
cnRhbnQgY29tbWVudCAqLyAhaW1wb3J0YW50IC8qIG5vIHNlbWljb2xvbiwgdmVyeSAhaW1wb3J0
YW50ICovfQorfQogCiBib2R5OjphZnRlciAgewogICAgIGNvbnRlbnQ6ICJBZnRlciBib2R5IjsK
QEAgLTI0NCw2ICsyNTIsMTAgQEAgYm9keTogW3VzZXItYWdlbnRdCiAKIHJ1bGUKIGJvZHk6IFtd
CitbJ3Byb3BlcnR5JzonaW1wb3J0ZWQtbWVkaWEtc2NyZWVuLXN0eWxlc2hlZXQnIG5vbi1wYXJz
ZWRdIEBbNS00OF0gYWN0aXZlCisKK3J1bGUKK2JvZHk6IFtdCiBbJ2ZvbnQtc2l6ZSc6JzEycHgn
XSBAWzUtMjFdIGFjdGl2ZQogWydmb28nOidiYXIgIQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM1MmVhMjguLmQwYTlkMmUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTAtMTEtMjIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbUkVHUkVTU0lPTl0gQ29udGVudHMgb2YgcnVsZXMgaW5zaWRlIEBtZWRp
YSBub3QgZGlzcGxheWVkL2VkaXRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTgwNAorCisgICAgICAgICogY3NzL0NTU0ltcG9ydFJ1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6aW5zZXJ0ZWRJbnRvUGFyZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0Mik6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXND
U1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXBh
cnNlU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Ojpz
ZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUZvcklkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVJbmRleEJ5U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZUZsYXRSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXZhbGlkYXRlU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmZpeFVucGFyc2Vk
UHJvcGVydHlSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6
Y29sbGVjdEZsYXRSdWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaDoKKwogMjAxMC0xMS0yMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5j
cHAKaW5kZXggZTAyZDI0NC4uODFhZGUzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTSW1w
b3J0UnVsZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKQEAgLTExMiw3
ICsxMTIsNyBAQCBib29sIENTU0ltcG9ydFJ1bGU6OmlzTG9hZGluZygpIGNvbnN0CiB2b2lkIENT
U0ltcG9ydFJ1bGU6Omluc2VydGVkSW50b1BhcmVudCgpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCog
cGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7Ci0gICAgaWYgKCFwYXJlbnRTaGVldCkK
KyAgICBpZiAoIXBhcmVudFNoZWV0IHx8ICFwYXJlbnRTaGVldC0+ZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9h
ZGVyID0gcGFyZW50U2hlZXQtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMzdiZjJiMy4uYWJjOTgz
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjgyLDcgKzI4
Miw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0Mihjb25zdCBT
dHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyCiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNo
ZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JTdHlsZVNoZWV0LT5zZXRUZXh0
KHRleHQpOworICAgIGJvb2wgc3VjY2VzcyA9IGluc3BlY3RvclN0eWxlU2hlZXQtPnNldFRleHQo
dGV4dCk7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIGluc3BlY3RvclN0eWxlU2hlZXQtPnJl
cGFyc2VTdHlsZVNoZWV0KHRleHQpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQ
cm9wZXJ0eVRleHQyKGNvbnN0IFN0cmluZyYgZnVsbFN0eWxlSWQsIGxvbmcgcHJvcGVydHlJbmRl
eCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApp
bmRleCBhNWIyZGZlLi45ZjRjYTM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAor
I2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKKyNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKICNp
bmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIK
ICNpbmNsdWRlICJDU1NSdWxlLmgiCkBAIC00Myw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0
LmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgogCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC05OSw2ICsxMDIsMzUg
QEAgUmVmUHRyPFdlYkNvcmU6OkNTU1J1bGVTb3VyY2VEYXRhPiBQYXJzZWRTdHlsZVNoZWV0Ojpy
dWxlU291cmNlRGF0YUF0KHVuc2lnbmVkIGkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0
aWMgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChTdHlsZUJhc2UqIHN0eWxl
QmFzZSkKK3sKKyAgICBpZiAoIXN0eWxlQmFzZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
ZiAoc3R5bGVCYXNlLT5pc0NTU1N0eWxlU2hlZXQoKSkKKyAgICAgICAgcmV0dXJuIENTU1J1bGVM
aXN0OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0eWxlQmFzZSksIHRydWUp
OworICAgIGlmIChzdHlsZUJhc2UtPmlzUnVsZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIHJ1bGVU
eXBlID0gc3RhdGljX2Nhc3Q8Q1NTUnVsZSo+KHN0eWxlQmFzZSktPnR5cGUoKTsKKyAgICAgICAg
UmVmUHRyPENTU1J1bGVMaXN0PiByZXN1bHQgPSAwOworCisgICAgICAgIHN3aXRjaCAocnVsZVR5
cGUpIHsKKyAgICAgICAgY2FzZSBDU1NSdWxlOjpNRURJQV9SVUxFOgorICAgICAgICAgICAgcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8Q1NTTWVkaWFSdWxlKj4oc3R5bGVCYXNlKS0+Y3NzUnVsZXMoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9LRVlGUkFN
RVNfUlVMRToKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYktpdENTU0tleWZy
YW1lc1J1bGUqPihzdHlsZUJhc2UpLT5jc3NSdWxlcygpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ1NTUnVsZTo6SU1QT1JUX1JVTEU6CisgICAgICAgIGNhc2UgQ1NTUnVsZTo6
UEFHRV9SVUxFOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JTdHlsZTo6
YnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKQEAgLTUyOSwxNyArNTYxLDIy
IEBAIEluc3BlY3RvclN0eWxlU2hlZXQ6On5JbnNwZWN0b3JTdHlsZVNoZWV0KCkKICAgICBkZWxl
dGUgbV9wYXJzZWRTdHlsZVNoZWV0OwogfQogCit2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJl
cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwLCBzaXplID0gbV9wYWdlU3R5bGVTaGVldC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kp
CisgICAgICAgIG1fcGFnZVN0eWxlU2hlZXQtPnJlbW92ZShpKTsKKyAgICBtX3BhZ2VTdHlsZVNo
ZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT51c2VTdHJpY3RQYXJzaW5n
KCkpOworICAgIG1faW5zcGVjdG9yU3R5bGVzLmNsZWFyKCk7Cit9CisKIGJvb2wgSW5zcGVjdG9y
U3R5bGVTaGVldDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKCFtX3Bh
cnNlZFN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fcGFyc2VkU3R5
bGVTaGVldC0+c2V0VGV4dCh0ZXh0KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0g
bV9wYWdlU3R5bGVTaGVldC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fcGFn
ZVN0eWxlU2hlZXQtPnJlbW92ZShpKTsKLSAgICBtX2luc3BlY3RvclN0eWxlcy5jbGVhcigpOwor
ICAgIG1fZmxhdFJ1bGVzLmNsZWFyKCk7CiAKLSAgICBtX3BhZ2VTdHlsZVNoZWV0LT5wYXJzZVN0
cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT51c2VTdHJpY3RQYXJzaW5nKCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC01ODQsNyArNjIxLDggQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiAKICAgICBzdHls
ZVNoZWV0VGV4dCArPSBzZWxlY3RvcjsKICAgICBzdHlsZVNoZWV0VGV4dCArPSAiIHt9IjsKLSAg
ICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFRleHQoc3R5bGVTaGVldFRleHQpOworICAgIC8vIFVz
aW5nIHNldFRleHQoKSBhcyB0aGlzIG9wZXJhdGlvbiBjaGFuZ2VzIHRoZSBzdHlsZSBzaGVldCBy
dWxlIHNldC4KKyAgICBzZXRUZXh0KHN0eWxlU2hlZXRUZXh0KTsKIAogICAgIHJldHVybiBydWxl
OwogfQpAQCAtNjAwLDE3ICs2MzgsOSBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OnJ1bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0CiAgICAgaWYgKCFv
aykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXggPSAwOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgo
KTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBJbnNwZWN0
b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUobV9wYWdlU3R5bGVTaGVldC0+aXRlbShpKSk7Ci0g
ICAgICAgIGlmICghcnVsZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaW5k
ZXggPT0gY3VycmVudEluZGV4KQotICAgICAgICAgICAgcmV0dXJuIHJ1bGU7CisgICAgZW5zdXJl
RmxhdFJ1bGVzKCk7CisgICAgcmV0dXJuIGluZGV4ID49IG1fZmxhdFJ1bGVzLnNpemUoKSA/IDAg
OiBtX2ZsYXRSdWxlcy5hdChpbmRleCk7CiAKLSAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAg
fQotICAgIHJldHVybiAwOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVj
dG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCkKQEAgLTc2Nyw1MSArNzk3
LDYgQEAgSW5zcGVjdG9yQ1NTSWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZU9yU3R5bGVJZChD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY28KICAgICByZXR1cm4gSW5zcGVjdG9yQ1NTSWQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpmaXhVbnBhcnNlZFByb3BlcnR5UmFu
Z2VzKENTU1J1bGVTb3VyY2VEYXRhKiBydWxlRGF0YSwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0
VGV4dCkKLXsKLSAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3VyY2VEYXRhPiYgcHJvcGVydHlEYXRh
ID0gcnVsZURhdGEtPnN0eWxlU291cmNlRGF0YS0+cHJvcGVydHlEYXRhOwotICAgIHVuc2lnbmVk
IHNpemUgPSBwcm9wZXJ0eURhdGEuc2l6ZSgpOwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgdW5zaWduZWQgc3R5bGVTdGFydCA9IHJ1bGVEYXRhLT5zdHlsZVNvdXJjZURh
dGEtPnN0eWxlQm9keVJhbmdlLnN0YXJ0OwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0g
c3R5bGVTaGVldFRleHQuY2hhcmFjdGVycygpOwotICAgIENTU1Byb3BlcnR5U291cmNlRGF0YSog
bmV4dERhdGEgPSAmKHByb3BlcnR5RGF0YS5hdCgwKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEqIGN1cnJl
bnREYXRhID0gbmV4dERhdGE7Ci0gICAgICAgIG5leHREYXRhID0gaSA8IHNpemUgLSAxID8gJihw
cm9wZXJ0eURhdGEuYXQoaSArIDEpKSA6IDA7Ci0KLSAgICAgICAgaWYgKGN1cnJlbnREYXRhLT5w
YXJzZWRPaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoY3VycmVudERhdGEt
PnJhbmdlLmVuZCA+IDAgJiYgY2hhcmFjdGVyc1tzdHlsZVN0YXJ0ICsgY3VycmVudERhdGEtPnJh
bmdlLmVuZCAtIDFdID09ICc7JykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHVu
c2lnbmVkIHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0OwotICAgICAgICBpZiAoIW5leHREYXRhKQot
ICAgICAgICAgICAgcHJvcGVydHlFbmRJblN0eWxlU2hlZXQgPSBydWxlRGF0YS0+c3R5bGVTb3Vy
Y2VEYXRhLT5zdHlsZUJvZHlSYW5nZS5lbmQgLSAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCA9IHN0eWxlU3RhcnQgKyBuZXh0RGF0YS0+cmFuZ2Uu
c3RhcnQgLSAxOwotCi0gICAgICAgIHdoaWxlIChpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW3Byb3Bl
cnR5RW5kSW5TdHlsZVNoZWV0XSkpCi0gICAgICAgICAgICAtLXByb3BlcnR5RW5kSW5TdHlsZVNo
ZWV0OwotCi0gICAgICAgIC8vIHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0IHBvaW50cyBhdCB0aGUg
bGFzdCBwcm9wZXJ0eSB0ZXh0IGNoYXJhY3Rlci4KLSAgICAgICAgdW5zaWduZWQgbmV3UHJvcGVy
dHlFbmQgPSBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCAtIHN0eWxlU3RhcnQgKyAxOyAvLyBFeGNs
dXNpdmUgb2YgdGhlIGxhc3QgcHJvcGVydHkgdGV4dCBjaGFyYWN0ZXIuCi0gICAgICAgIGlmIChj
dXJyZW50RGF0YS0+cmFuZ2UuZW5kICE9IG5ld1Byb3BlcnR5RW5kKSB7Ci0gICAgICAgICAgICBj
dXJyZW50RGF0YS0+cmFuZ2UuZW5kID0gbmV3UHJvcGVydHlFbmQ7Ci0gICAgICAgICAgICB1bnNp
Z25lZCB2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0ID0gc3R5bGVTdGFydCArIGN1cnJlbnREYXRhLT5y
YW5nZS5zdGFydCArIGN1cnJlbnREYXRhLT5uYW1lLmxlbmd0aCgpOwotICAgICAgICAgICAgd2hp
bGUgKHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgPCBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCAmJiBj
aGFyYWN0ZXJzW3ZhbHVlU3RhcnRJblN0eWxlU2hlZXRdICE9ICc6JykKLSAgICAgICAgICAgICAg
ICArK3ZhbHVlU3RhcnRJblN0eWxlU2hlZXQ7Ci0gICAgICAgICAgICBpZiAodmFsdWVTdGFydElu
U3R5bGVTaGVldCA8IHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0KQotICAgICAgICAgICAgICAgICsr
dmFsdWVTdGFydEluU3R5bGVTaGVldDsgLy8gU2hpZnQgcGFzdCB0aGUgJzonLgotICAgICAgICAg
ICAgd2hpbGUgKHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgPCBwcm9wZXJ0eUVuZEluU3R5bGVTaGVl
dCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW3ZhbHVlU3RhcnRJblN0eWxlU2hlZXRdKSkKLSAg
ICAgICAgICAgICAgICArK3ZhbHVlU3RhcnRJblN0eWxlU2hlZXQ7Ci0gICAgICAgICAgICAvLyBO
ZWVkIHRvIGV4Y2x1ZGUgdGhlIHRyYWlsaW5nICc7JyBmcm9tIHRoZSBwcm9wZXJ0eSB2YWx1ZS4K
LSAgICAgICAgICAgIGN1cnJlbnREYXRhLT52YWx1ZSA9IHN0eWxlU2hlZXRUZXh0LnN1YnN0cmlu
Zyh2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0LCBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCAtIHZhbHVl
U3RhcnRJblN0eWxlU2hlZXQgKyAoY2hhcmFjdGVyc1twcm9wZXJ0eUVuZEluU3R5bGVTaGVldF0g
PT0gJzsnID8gMCA6IDEpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogRG9jdW1lbnQqIEluc3Bl
Y3RvclN0eWxlU2hlZXQ6Om93bmVyRG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3Bh
Z2VTdHlsZVNoZWV0LT5kb2N1bWVudCgpOwpAQCAtODI0LDEyICs4MDksMTAgQEAgUmVmUHRyPENT
U1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlU291cmNlRGF0YUZvcihD
U1NTdHlsZURlY2xhcmEKIAogdW5zaWduZWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUluZGV4
QnlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBwYWdlU3R5bGUpIGNvbnN0CiB7CisgICAgZW5z
dXJlRmxhdFJ1bGVzKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDAsIHNpemUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBJbnNwZWN0b3JDU1NBZ2VudDo6YXND
U1NTdHlsZVJ1bGUobV9wYWdlU3R5bGVTaGVldC0+aXRlbShpKSk7Ci0gICAgICAgIGlmICghcnVs
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAocnVsZS0+c3R5bGUoKSA9PSBw
YWdlU3R5bGUpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG1fZmxhdFJ1bGVzLnNp
emUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAobV9mbGF0UnVsZXMuYXQoaSktPnN0
eWxlKCkgPT0gcGFnZVN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogCiAgICAgICAg
ICsraW5kZXg7CkBAIC04NjEsNiArODQ0LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpl
bnN1cmVUZXh0KCkgY29uc3QKICAgICBib29sIHN1Y2Nlc3MgPSBvcmlnaW5hbFN0eWxlU2hlZXRU
ZXh0KCZ0ZXh0KTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgbV9wYXJzZWRTdHlsZVNoZWV0
LT5zZXRUZXh0KHRleHQpOworICAgIC8vIE5vIG5lZWQgdG8gY2xlYXIgbV9mbGF0UnVsZXMgaGVy
ZSAtIGl0J3MgZW1wdHkuCiAKICAgICByZXR1cm4gc3VjY2VzczsKIH0KQEAgLTg3MywxNyArODU3
LDE3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAgICAg
aWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG5ld1N0eWxlU2hlZXQgPSBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUocGFnZVN0eWxlU2hlZXQoKSA/IHBhZ2VTdHlsZVNoZWV0KCktPmRvY3VtZW50
KCkgOiAwKTsKKyAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbmV3U3R5bGVTaGVldCA9IENTU1N0
eWxlU2hlZXQ6OmNyZWF0ZSgpOwogICAgIENTU1BhcnNlciBwOwogICAgIFN0eWxlUnVsZVJhbmdl
TWFwIHJ1bGVSYW5nZU1hcDsKICAgICBwLnBhcnNlU2hlZXQobmV3U3R5bGVTaGVldC5nZXQoKSwg
bV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIDAsICZydWxlUmFuZ2VNYXApOwogICAgIE93blB0
cjxQYXJzZWRTdHlsZVNoZWV0OjpTb3VyY2VEYXRhPiByYW5nZXNWZWN0b3IobmV3IFBhcnNlZFN0
eWxlU2hlZXQ6OlNvdXJjZURhdGEoKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5n
dGggPSBuZXdTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IENTU1N0eWxlUnVsZSogcnVsZSA9IEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShu
ZXdTdHlsZVNoZWV0LT5pdGVtKGkpKTsKLSAgICAgICAgaWYgKCFydWxlKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIFN0eWxlUnVsZVJhbmdlTWFwOjppdGVyYXRvciBpdCA9IHJ1bGVS
YW5nZU1hcC5maW5kKHJ1bGUpOworICAgIFZlY3RvcjxDU1NTdHlsZVJ1bGUqPiBydWxlczsKKyAg
ICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVMaXN0ID0gYXNDU1NSdWxlTGlzdChuZXdTdHlsZVNo
ZWV0LmdldCgpKTsKKyAgICBjb2xsZWN0RmxhdFJ1bGVzKHJ1bGVMaXN0LCAmcnVsZXMpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlcy5zaXplKCk7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgU3R5bGVSdWxlUmFuZ2VNYXA6Oml0ZXJhdG9yIGl0ID0gcnVsZVJhbmdlTWFw
LmZpbmQocnVsZXMuYXQoaSkpOwogICAgICAgICBpZiAoaXQgIT0gcnVsZVJhbmdlTWFwLmVuZCgp
KSB7CiAgICAgICAgICAgICBmaXhVbnBhcnNlZFByb3BlcnR5UmFuZ2VzKGl0LT5zZWNvbmQuZ2V0
KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpKTsKICAgICAgICAgICAgIHJhbmdlc1ZlY3Rv
ci0+YXBwZW5kKGl0LT5zZWNvbmQpOwpAQCAtODk0LDYgKzg3OCwxMyBAQCBib29sIEluc3BlY3Rv
clN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgIHJldHVybiBtX3BhcnNlZFN0eWxl
U2hlZXQtPmhhc1NvdXJjZURhdGEoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpl
bnN1cmVGbGF0UnVsZXMoKSBjb25zdAoreworICAgIC8vIFdlIGFyZSBmaW5lIHdpdGggcmVkb2lu
ZyB0aGlzIGZvciBlbXB0eSBzdHlsZXNoZWV0cyBhcyB0aGlzIHdpbGwgcnVuIGZhc3QuCisgICAg
aWYgKG1fZmxhdFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgY29sbGVjdEZsYXRSdWxlcyhhc0NT
U1J1bGVMaXN0KHBhZ2VTdHlsZVNoZWV0KCkpLCAmbV9mbGF0UnVsZXMpOworfQorCiBib29sIElu
c3BlY3RvclN0eWxlU2hlZXQ6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICghcGFnZVN0eWxlU2hlZXQoKSkKQEAg
LTkzOSwxOCArOTMwLDYgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzdHlsZVNoZWV0VGV4
dFdpdGhDaGFuZ2VkU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpmaW5kUGFnZVJ1bGVX
aXRoU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCi17Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgc2l6ZSA9IG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IEluc3BlY3RvckNTU0FnZW50Ojphc0NT
U1N0eWxlUnVsZShtX3BhZ2VTdHlsZVNoZWV0LT5pdGVtKGkpKTsKLSAgICAgICAgaWYgKCFydWxl
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChydWxlLT5zdHlsZSgpID09IHN0
eWxlKQotICAgICAgICAgICAgcmV0dXJuIHJ1bGU7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQot
CiBJbnNwZWN0b3JDU1NJZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlSWQoQ1NTU3R5bGVSdWxl
KiBydWxlKSBjb25zdAogewogICAgIHJldHVybiBydWxlT3JTdHlsZUlkKHJ1bGUtPnN0eWxlKCkp
OwpAQCAtOTYyLDEyICs5NDEsOSBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJldmFsaWRh
dGVTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBwYWdlU3R5bGUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1faXNSZXZhbGlkYXRpbmcgPSB0cnVlOwotICAgIENTU1N0eWxlU2hlZXQqIHBhcnNl
ZFNoZWV0ID0gbV9wYXJzZWRTdHlsZVNoZWV0LT5jc3NTdHlsZVNoZWV0KCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHBhcnNlZFNoZWV0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBTdHlsZUJhc2UqIHN0eWxlQmFzZSA9IHBhcnNlZFNoZWV0LT5pdGVtKGkp
OwotICAgICAgICBDU1NTdHlsZVJ1bGUqIHBhcnNlZFJ1bGUgPSBJbnNwZWN0b3JDU1NBZ2VudDo6
YXNDU1NTdHlsZVJ1bGUoc3R5bGVCYXNlKTsKLSAgICAgICAgaWYgKCFwYXJzZWRSdWxlKQotICAg
ICAgICAgICAgY29udGludWU7CisgICAgZW5zdXJlRmxhdFJ1bGVzKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgc2l6ZSA9IG1fZmxhdFJ1bGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICBDU1NTdHlsZVJ1bGUqIHBhcnNlZFJ1bGUgPSBtX2ZsYXRSdWxlcy5hdChpKTsKICAg
ICAgICAgaWYgKHBhcnNlZFJ1bGUtPnN0eWxlKCkgPT0gcGFnZVN0eWxlKSB7CiAgICAgICAgICAg
ICBpZiAocGFyc2VkUnVsZS0+c3R5bGUoKS0+Y3NzVGV4dCgpICE9IHBhZ2VTdHlsZS0+Y3NzVGV4
dCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGRpc2FibGVkIHByb3BlcnRpZXMg
Zm9yIHRoZSBpbnZhbGlkIHN0eWxlIGhlcmUuCkBAIC0xMDIwLDE0ICs5OTYsNzcgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1
bGVMaXN0KENTU1J1bGVMaXMKICAgICBpZiAoIXJ1bGVMaXN0KQogICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlTGlz
dC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxl
ID0gSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKHJ1bGVMaXN0LT5pdGVtKGkpKTsK
LSAgICAgICAgaWYgKCFydWxlKQorICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcmVmUnVsZUxpc3Qg
PSBydWxlTGlzdDsKKyAgICBWZWN0b3I8Q1NTU3R5bGVSdWxlKj4gcnVsZXM7CisgICAgY29sbGVj
dEZsYXRSdWxlcyhyZWZSdWxlTGlzdCwgJnJ1bGVzKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIHNpemUgPSBydWxlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3VsdC0+
cHVzaE9iamVjdChidWlsZE9iamVjdEZvclJ1bGUocnVsZXMuYXQoaSkpKTsKKworICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOworfQorCit2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmZpeFVu
cGFyc2VkUHJvcGVydHlSYW5nZXMoQ1NTUnVsZVNvdXJjZURhdGEqIHJ1bGVEYXRhLCBjb25zdCBT
dHJpbmcmIHN0eWxlU2hlZXRUZXh0KQoreworICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJjZURh
dGE+JiBwcm9wZXJ0eURhdGEgPSBydWxlRGF0YS0+c3R5bGVTb3VyY2VEYXRhLT5wcm9wZXJ0eURh
dGE7CisgICAgdW5zaWduZWQgc2l6ZSA9IHByb3BlcnR5RGF0YS5zaXplKCk7CisgICAgaWYgKCFz
aXplKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBzdHlsZVN0YXJ0ID0gcnVsZURh
dGEtPnN0eWxlU291cmNlRGF0YS0+c3R5bGVCb2R5UmFuZ2Uuc3RhcnQ7CisgICAgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMgPSBzdHlsZVNoZWV0VGV4dC5jaGFyYWN0ZXJzKCk7CisgICAgQ1NTUHJv
cGVydHlTb3VyY2VEYXRhKiBuZXh0RGF0YSA9ICYocHJvcGVydHlEYXRhLmF0KDApKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIENTU1Byb3BlcnR5
U291cmNlRGF0YSogY3VycmVudERhdGEgPSBuZXh0RGF0YTsKKyAgICAgICAgbmV4dERhdGEgPSBp
IDwgc2l6ZSAtIDEgPyAmKHByb3BlcnR5RGF0YS5hdChpICsgMSkpIDogMDsKKworICAgICAgICBp
ZiAoY3VycmVudERhdGEtPnBhcnNlZE9rKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmIChjdXJyZW50RGF0YS0+cmFuZ2UuZW5kID4gMCAmJiBjaGFyYWN0ZXJzW3N0eWxlU3RhcnQg
KyBjdXJyZW50RGF0YS0+cmFuZ2UuZW5kIC0gMV0gPT0gJzsnKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgdW5zaWduZWQgcHJvcGVydHlFbmRJblN0eWxlU2hlZXQ7CisgICAgICAg
IGlmICghbmV4dERhdGEpCisgICAgICAgICAgICBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCA9IHJ1
bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEtPnN0eWxlQm9keVJhbmdlLmVuZCAtIDE7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0ID0gc3R5bGVTdGFydCAr
IG5leHREYXRhLT5yYW5nZS5zdGFydCAtIDE7CisKKyAgICAgICAgd2hpbGUgKGlzSFRNTFNwYWNl
KGNoYXJhY3RlcnNbcHJvcGVydHlFbmRJblN0eWxlU2hlZXRdKSkKKyAgICAgICAgICAgIC0tcHJv
cGVydHlFbmRJblN0eWxlU2hlZXQ7CiAKLSAgICAgICAgcmVzdWx0LT5wdXNoT2JqZWN0KGJ1aWxk
T2JqZWN0Rm9yUnVsZShydWxlKSk7CisgICAgICAgIC8vIHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0
IHBvaW50cyBhdCB0aGUgbGFzdCBwcm9wZXJ0eSB0ZXh0IGNoYXJhY3Rlci4KKyAgICAgICAgdW5z
aWduZWQgbmV3UHJvcGVydHlFbmQgPSBwcm9wZXJ0eUVuZEluU3R5bGVTaGVldCAtIHN0eWxlU3Rh
cnQgKyAxOyAvLyBFeGNsdXNpdmUgb2YgdGhlIGxhc3QgcHJvcGVydHkgdGV4dCBjaGFyYWN0ZXIu
CisgICAgICAgIGlmIChjdXJyZW50RGF0YS0+cmFuZ2UuZW5kICE9IG5ld1Byb3BlcnR5RW5kKSB7
CisgICAgICAgICAgICBjdXJyZW50RGF0YS0+cmFuZ2UuZW5kID0gbmV3UHJvcGVydHlFbmQ7Cisg
ICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0ID0gc3R5bGVTdGFydCAr
IGN1cnJlbnREYXRhLT5yYW5nZS5zdGFydCArIGN1cnJlbnREYXRhLT5uYW1lLmxlbmd0aCgpOwor
ICAgICAgICAgICAgd2hpbGUgKHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgPCBwcm9wZXJ0eUVuZElu
U3R5bGVTaGVldCAmJiBjaGFyYWN0ZXJzW3ZhbHVlU3RhcnRJblN0eWxlU2hlZXRdICE9ICc6JykK
KyAgICAgICAgICAgICAgICArK3ZhbHVlU3RhcnRJblN0eWxlU2hlZXQ7CisgICAgICAgICAgICBp
ZiAodmFsdWVTdGFydEluU3R5bGVTaGVldCA8IHByb3BlcnR5RW5kSW5TdHlsZVNoZWV0KQorICAg
ICAgICAgICAgICAgICsrdmFsdWVTdGFydEluU3R5bGVTaGVldDsgLy8gU2hpZnQgcGFzdCB0aGUg
JzonLgorICAgICAgICAgICAgd2hpbGUgKHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgPCBwcm9wZXJ0
eUVuZEluU3R5bGVTaGVldCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW3ZhbHVlU3RhcnRJblN0
eWxlU2hlZXRdKSkKKyAgICAgICAgICAgICAgICArK3ZhbHVlU3RhcnRJblN0eWxlU2hlZXQ7Cisg
ICAgICAgICAgICAvLyBOZWVkIHRvIGV4Y2x1ZGUgdGhlIHRyYWlsaW5nICc7JyBmcm9tIHRoZSBw
cm9wZXJ0eSB2YWx1ZS4KKyAgICAgICAgICAgIGN1cnJlbnREYXRhLT52YWx1ZSA9IHN0eWxlU2hl
ZXRUZXh0LnN1YnN0cmluZyh2YWx1ZVN0YXJ0SW5TdHlsZVNoZWV0LCBwcm9wZXJ0eUVuZEluU3R5
bGVTaGVldCAtIHZhbHVlU3RhcnRJblN0eWxlU2hlZXQgKyAoY2hhcmFjdGVyc1twcm9wZXJ0eUVu
ZEluU3R5bGVTaGVldF0gPT0gJzsnID8gMCA6IDEpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpjb2xsZWN0RmxhdFJ1bGVzKFBhc3NSZWZQdHI8Q1NT
UnVsZUxpc3Q+IHJ1bGVMaXN0LCBWZWN0b3I8Q1NTU3R5bGVSdWxlKj4qIHJlc3VsdCkKK3sKKyAg
ICBpZiAoIXJ1bGVMaXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBzaXplID0gcnVsZUxpc3QtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
IENTU1J1bGUqIHJ1bGUgPSBydWxlTGlzdC0+aXRlbShpKTsKKyAgICAgICAgQ1NTU3R5bGVSdWxl
KiBzdHlsZVJ1bGUgPSBJbnNwZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUocnVsZSk7Cisg
ICAgICAgIGlmIChzdHlsZVJ1bGUpCisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZChzdHlsZVJ1
bGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gY2hp
bGRSdWxlTGlzdCA9IGFzQ1NTUnVsZUxpc3QocnVsZSk7CisgICAgICAgICAgICBpZiAoY2hpbGRS
dWxlTGlzdCkKKyAgICAgICAgICAgICAgICBjb2xsZWN0RmxhdFJ1bGVzKGNoaWxkUnVsZUxpc3Qs
IHJlc3VsdCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CiB9CiAKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IDJhMTRi
YjkuLmEwNjIyZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAg
LTE1OCw2ICsxNTgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pZDsgfQogICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0KCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlU3R5bGVTaGVldDsgfQorICAgIHZvaWQgcmVwYXJzZVN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogICAg
IGJvb2wgc2V0UnVsZVNlbGVjdG9yKGNvbnN0IEluc3BlY3RvckNTU0lkJiwgY29uc3QgU3RyaW5n
JiBzZWxlY3Rvcik7CiAgICAgQ1NTU3R5bGVSdWxlKiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3IpOwpAQCAtMTczLDcgKzE3NCw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBib29s
IGNhbkJpbmQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbiAhPSAidXNlckFnZW50IiAmJiBtX29y
aWdpbiAhPSAidXNlciI7IH0KICAgICBJbnNwZWN0b3JDU1NJZCBydWxlT3JTdHlsZUlkKENTU1N0
eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdDsKLSAgICB2b2lkIGZpeFVucGFyc2VkUHJvcGVy
dHlSYW5nZXMoQ1NTUnVsZVNvdXJjZURhdGEqIHJ1bGVEYXRhLCBjb25zdCBTdHJpbmcmIHN0eWxl
U2hlZXRUZXh0KTsKICAgICB2aXJ0dWFsIGJvb2wgdGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7
CiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZSkgY29uc3Q7CkBAIC0xODcsMTAgKzE4NywxMiBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29u
c3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZml4VW5wYXJzZWRQcm9w
ZXJ0eVJhbmdlcyhDU1NSdWxlU291cmNlRGF0YSogcnVsZURhdGEsIGNvbnN0IFN0cmluZyYgc3R5
bGVTaGVldFRleHQpOworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RGbGF0UnVsZXMoUGFzc1JlZlB0
cjxDU1NSdWxlTGlzdD4sIFZlY3RvcjxDU1NTdHlsZVJ1bGUqPiogcmVzdWx0KTsKICAgICBib29s
IGVuc3VyZVRleHQoKSBjb25zdDsKICAgICBib29sIGVuc3VyZVNvdXJjZURhdGEoKTsKKyAgICB2
b2lkIGVuc3VyZUZsYXRSdWxlcygpIGNvbnN0OwogICAgIGJvb2wgc3R5bGVTaGVldFRleHRXaXRo
Q2hhbmdlZFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmIG5ld1N0eWxl
VGV4dCwgU3RyaW5nKiByZXN1bHQpOwotICAgIENTU1N0eWxlUnVsZSogZmluZFBhZ2VSdWxlV2l0
aFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICBJbnNwZWN0b3JDU1NJZCBydWxlSWQo
Q1NTU3R5bGVSdWxlKiBydWxlKSBjb25zdDsKICAgICBJbnNwZWN0b3JDU1NJZCBzdHlsZUlkKENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCB7IHJldHVybiBydWxlT3JTdHlsZUlkKHN0
eWxlKTsgfQogICAgIHZvaWQgcmV2YWxpZGF0ZVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKTsK
QEAgLTE5OSw3ICsyMDEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5saW5lU3R5bGVTaGVldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOwogCi0KICAgICBTdHJpbmcgbV9p
ZDsKICAgICBDU1NTdHlsZVNoZWV0KiBtX3BhZ2VTdHlsZVNoZWV0OwogICAgIFN0cmluZyBtX29y
aWdpbjsKQEAgLTIwNyw2ICsyMDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JldmFsaWRh
dGluZzsKICAgICBQYXJzZWRTdHlsZVNoZWV0KiBtX3BhcnNlZFN0eWxlU2hlZXQ7CiAgICAgSW5z
cGVjdG9yU3R5bGVNYXAgbV9pbnNwZWN0b3JTdHlsZXM7CisgICAgbXV0YWJsZSBWZWN0b3I8Q1NT
U3R5bGVSdWxlKj4gbV9mbGF0UnVsZXM7CiAKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5
bGU7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>