<?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>83446</bug_id>
          
          <creation_ts>2012-04-08 18:25:24 -0700</creation_ts>
          <short_desc>Broken handling of pseudo-elements in selectors API</short_desc>
          <delta_ts>2012-05-03 07:44:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Boris Zbarsky">bzbarsky</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antaryami.pandia</cc>
    
    <cc>arpitabahuguna</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>vijayan.bits</cc>
    
    <cc>vivekgalatage</cc>
    
    <cc>webkit.bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>598092</commentid>
    <comment_count>0</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2012-04-08 18:25:24 -0700</bug_when>
    <thetext>The attached testcase should say &quot;PASS&quot;.  In WebKit it says &quot;FAIL&quot;.

Specifically, there are no elements in the document which match the given selector, but the WebKit implementation of Selectors API seems to ignore the pseudo-element altogether and return a match set containing the root &lt;html&gt; element.

Note that the selectors API has an explicit informative note about this, in addition to the normative text that says this selector should lead to an empty list:

  Authors are advised that while the use of pseudo-elements in selectors is permitted, they will
  not match any elements in the document, and thus would not result in any elements being returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598093</commentid>
    <comment_count>1</comment_count>
      <attachid>136168</attachid>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2012-04-08 18:30:49 -0700</bug_when>
    <thetext>Created attachment 136168
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611375</commentid>
    <comment_count>2</comment_count>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-04-27 04:26:16 -0700</bug_when>
    <thetext>The issue:
The SelectorChecker::checkSelector() method is common for both setting and retrieving the rules. For differentiating between the same m_isCollectingRulesOnly (member of SelectorChecker) is used. This boolean is set when querying for the rules i.e. whenever APIs such as getMatchedCSSRules() or querySelectorAll() are called. Thus in the checkOneSelector() function we are able to skip the code that tries to set flags etc. at the time of setting the renderStyle for renderers.

Now, when querying for pseudo-element selectors via the querySelectorAll() API, checkOneSelector() method returns a true irrespective of whether the element really has the specified selector applied on it or not.
While handling the pseudo-element in checkOneSelector() we do an initial check [if (!context.elementStyle &amp;&amp; !m_isCollectingRulesOnly)] but since we set m_isCollectingRuleOnly to true (SelectorQuery constructor) we actually fall-through thereby returning a true.
The check for !m_isCollectingRulesOnly is required for the case when the call comes from CSSStyleSelector::pseudoStyleRulesForElement() [the getMatchedCSSRules() API], in which case we don&apos;t want it to return false immediately.

The possible approaches:
1. Instead of maintaining the m_isCollectingRulesOnly flag we can rather have an enumeration that associates the checkSelector() call with its originating context. For instance, instead of setting m_isCollectingRulesOnly whenever a query rules call is made (i.e. from either SelectorQuery or CSSStyleSelector::pseudoStyleRulesForElement()), we can instead set the corresponding enum based on which we can either skip checking for pseudo-elements (querySelector) and return a false from checkOneSelector() method or continue (CSSStyleSelector::pseudoStyleRulesForElement() - getMatchedCSSRules()).

2. In the templated SelectorDataList::execute() method itself (called from SelectorDataList::queryAll()/queryFirst() alone) we can skip making the selectorChecker.checkSelector() call altogether if the selector queried for is a pseudo-element selector.

3. Overloading the SelectorChecker::checkSelector() method and passing an extra boolean parameter (default - false) which is set only when called from the SelectorDataList::execute() method.

Would really appreciate if someone could review the aforementioned scenarios and recommend the best approach for fixing this issue.
In my opinion, having an enum that associates the checkSelector() call with its originating context would be more appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614048</commentid>
    <comment_count>3</comment_count>
      <attachid>139758</attachid>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-02 00:17:38 -0700</bug_when>
    <thetext>Created attachment 139758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614049</commentid>
    <comment_count>4</comment_count>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-02 00:18:39 -0700</bug_when>
    <thetext>Proposed patch uploaded with the first approach mentioned in the previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614164</commentid>
    <comment_count>5</comment_count>
      <attachid>139786</attachid>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-02 04:04:18 -0700</bug_when>
    <thetext>Created attachment 139786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614167</commentid>
    <comment_count>6</comment_count>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-02 04:07:28 -0700</bug_when>
    <thetext>Added another patch with slight modifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614173</commentid>
    <comment_count>7</comment_count>
      <attachid>139786</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-02 04:17:30 -0700</bug_when>
    <thetext>Comment on attachment 139786
Patch

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

&gt; Source/WebCore/css/SelectorChecker.cpp:776
&gt; +                if (SettingRules == m_selectorCheckerMode) {

Putting the constant first looks strange.

&gt; Source/WebCore/css/SelectorChecker.h:101
&gt; +    void setCollectingRulesOnly(bool b) { b ? m_selectorCheckerMode = CollectingRules : m_selectorCheckerMode = SettingRules; }
&gt; +    void setQueryingRulesOnly() { m_selectorCheckerMode = QueryingRules; }

Abuse of ternary operator. You should just replace these boolean setters with one that takes the mode enum.

&gt; Source/WebCore/css/SelectorChecker.h:139
&gt; +    enum SelectorCheckerMode { SettingRules = 0, CollectingRules, QueryingRules };

The name SettingRules makes no sense. We are never setting any rules. ResolvingStyle perhaps.

SelectorChecker::SelectorCheckerMode is redundant. This should be just Mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615164</commentid>
    <comment_count>8</comment_count>
      <attachid>139984</attachid>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-03 04:36:48 -0700</bug_when>
    <thetext>Created attachment 139984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615165</commentid>
    <comment_count>9</comment_count>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-03 04:52:40 -0700</bug_when>
    <thetext>Thank-you for the review Antti. Have uploaded another patch incorporating the review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615166</commentid>
    <comment_count>10</comment_count>
      <attachid>139984</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-03 04:58:28 -0700</bug_when>
    <thetext>Comment on attachment 139984
Patch

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

r-, I &apos;d still like to see another version with style fixes.

&gt; Source/WebCore/css/SelectorChecker.cpp:529
&gt; +        if ((context.elementStyle || m_selectorCheckerMode != ResolvingStyleRules) &amp;&amp; dynamicPseudo != NOPSEUDO &amp;&amp; dynamicPseudo != SELECTION

I think you should explicitly test against the modes that you want the behavior in instead of using !=

&gt; Source/WebCore/css/SelectorChecker.h:55
&gt; +    enum Mode { ResolvingStyleRules = 0, CollectingRules, QueryingRules };

I  think my proposal ResolvingStyle was better. We don&apos;t really resolve style rules, we resolve (element) style.

&gt; Source/WebCore/css/SelectorChecker.h:101
&gt; +    Mode selectorCheckerMode() const { return m_selectorCheckerMode; }
&gt; +    void setSelectorCheckerMode(Mode mode) { m_selectorCheckerMode = mode; }

SelectorChecker::selectorCheckerMode and SelectorChecker::m_selectorCheckerMode are similarly redundant. -&gt; mode(), m_mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615188</commentid>
    <comment_count>11</comment_count>
      <attachid>139989</attachid>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-03 05:34:25 -0700</bug_when>
    <thetext>Created attachment 139989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615192</commentid>
    <comment_count>12</comment_count>
      <attachid>139989</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-03 05:37:09 -0700</bug_when>
    <thetext>Comment on attachment 139989
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615243</commentid>
    <comment_count>13</comment_count>
      <attachid>139989</attachid>
    <who name="Arpita Bahuguna">arpitabahuguna</who>
    <bug_when>2012-05-03 06:50:59 -0700</bug_when>
    <thetext>Comment on attachment 139989
Patch

Thanks for the review Antti.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615271</commentid>
    <comment_count>14</comment_count>
      <attachid>139989</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-03 07:44:29 -0700</bug_when>
    <thetext>Comment on attachment 139989
Patch

Clearing flags on attachment: 139989

Committed r115971: &lt;http://trac.webkit.org/changeset/115971&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615272</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-03 07:44:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>136168</attachid>
            <date>2012-04-08 18:30:49 -0700</date>
            <delta_ts>2012-04-08 18:30:49 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>145</size>
            <attacher name="Boris Zbarsky">bzbarsky</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzY3JpcHQ+CiAgdmFyIHBhc3MgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCJodG1sOjpiZWZvcmUiKS5sZW5ndGggPT0gMDsKICBkb2N1bWVudC53cml0ZShwYXNz
ID8gIlBBU1MiIDogIkZBSUwiKTsKPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139758</attachid>
            <date>2012-05-02 00:17:38 -0700</date>
            <delta_ts>2012-05-02 04:04:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83446-20120502124851.patch</filename>
            <type>text/plain</type>
            <size>16140</size>
            <attacher name="Arpita Bahuguna">arpitabahuguna</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTc5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA1LTAyICBBcnBpdGEg
QmFodWd1bmEgIDxhcnBpdGFiYWh1Z3VuYUBnbWFpbC5jb20+CisKKyAgICAgICAgQnJva2VuIGhh
bmRsaW5nIG9mIHBzZXVkby1lbGVtZW50cyBpbiBzZWxlY3RvcnMgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQ0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL1dpbmRvdy9x
dWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIGNz
cy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICBTZXR0aW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciB0aGUgZW51bSBtZW1iZXIgbV9zZWxlY3RvckNoZWNrZXJNb2RlIHRvIFNldHRpbmdSdWxlcy4K
KworICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAg
ICAgICAgSW5zdGVhZCBvZiB2ZXJpZnlpbmcgYWdhaW5zdCB0aGUgYm9vbCBtX2lzQ29sbGVjdGlu
Z1J1bGVzT25seSwgd2Ugbm93IGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICAgICAgIG1fc2VsZWN0
b3JDaGVja2VyTW9kZSBpcyBzZXQgdG8gU2V0dGluZ1J1bGVzLgorCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICBJbnN0ZWFkIG9m
IHZlcmlmeWluZyBhZ2FpbnN0IHRoZSBib29sIG1faXNDb2xsZWN0aW5nUnVsZXNPbmx5LCB3ZSBu
b3cgY2hlY2sgd2hldGhlciBvciBub3QKKyAgICAgICAgbV9zZWxlY3RvckNoZWNrZXJNb2RlIGlz
IHNldCB0byBTZXR0aW5nUnVsZXMuIEFsc28sIGZvciB0aGUgcHNldWRvLWVsZW1lbnRzIGNhc2UK
KyAgICAgICAgd2UgY2hlY2sgaWYgaXRzIHZhbHVlIGlzIHNldCB0byBRdWVyeWluZ1J1bGVzIGlu
IHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGZhbHNlLgorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjppc0NvbGxlY3RpbmdS
dWxlc09ubHkpOgorICAgICAgICBSZXR1cm5zIHRydWUgaWYgbV9zZWxlY3RvckNoZWNrZXJNb2Rl
IGlzIHNldCB0byBDb2xsZWN0aW5nUnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6c2V0Q29sbGVjdGluZ1J1bGVzT25seSk6CisgICAgICAgIFRoaXMgbWV0aG9kIHNl
dHMgKHRvIENvbGxlY3RpbmdSdWxlcykgb3IgcmVzZXRzICh0byBTZXR0aW5nUnVsZXMpIHRoZSB2
YWx1ZSBvZiBtX3NlbGVjdG9yQ2hlY2tlck1vZGUuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6c2V0UXVlcnlpbmdSdWxlc09ubHkpOgorICAgICAgICBUaGlzIG1ldGhvZCBz
ZXRzIG1fc2VsZWN0b3JDaGVja2VyTW9kZSB0byBRdWVyeWluZ1J1bGVzLiBRdWVyeWluZ1J1bGVz
IG1vZGUgaXMgc2V0IHdoZW4gU2VsZWN0b3JRdWVyeQorICAgICAgICBpcyBpbnN0YW50aWF0ZWQu
CisKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgU2V0cyB0aGUgU2VsZWN0b3JD
aGVja2VyJ3MgbV9zZWxlY3RvckNoZWNrZXJNb2RlIHRvIFF1ZXJ5aW5nUnVsZXMuCisKIDIwMTIt
MDUtMDEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtW
OF0gQWRkIGFuIElzb2xhdGUgcGFyYW1ldGVyIHRvIHNldEpTV3JhcHBlckZvclhYWCgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMTE1Nzk5KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIoRG9jdW1l
bgogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fc3RyaWN0UGFyc2luZyhzdHJp
Y3RQYXJzaW5nKQogICAgICwgbV9kb2N1bWVudElzSFRNTChkb2N1bWVudC0+aXNIVE1MRG9jdW1l
bnQoKSkKLSAgICAsIG1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KGZhbHNlKQorICAgICwgbV9zZWxl
Y3RvckNoZWNrZXJNb2RlKFNldHRpbmdSdWxlcykKICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VV
RE8pCiAgICAgLCBtX2hhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyhmYWxzZSkKIHsKQEAgLTQ5Miw3
ICs0OTIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDCiAgICAg
ICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBkeW5hbWljUHNldWRvKTsKIAog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgotICAgICAgICBpZiAoIW1faXND
b2xsZWN0aW5nUnVsZXNPbmx5ICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7
CisgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxlY3RvckNoZWNrZXJNb2RlICYmIGNv
bnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBh
cmVudFN0eWxlIDogY29udGV4dC5lbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7
CiAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCiAgICAgICAgICAgICAgICAgcGFyZW50U3R5
bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKQEAgLTUwNiw3
ICs1MDYsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDCiAgICAg
ICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBkeW5hbWljUHNldWRvKTsKIAog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6Ci0gICAgICAgIGlmICghbV9p
c0NvbGxlY3RpbmdSdWxlc09ubHkgJiYgY29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkp
IHsKKyAgICAgICAgaWYgKFNldHRpbmdSdWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUgJiYg
Y29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50
UGFyZW50U3R5bGUgOiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUo
KTsKICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICBwYXJlbnRT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAt
NTI2LDcgKzUyNiw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckMK
ICAgICAgICAgLy8gYSBzZWxlY3RvciBpcyBpbnZhbGlkIGlmIHNvbWV0aGluZyBmb2xsb3dzIGEg
cHNldWRvLWVsZW1lbnQKICAgICAgICAgLy8gV2UgbWFrZSBhbiBleGNlcHRpb24gZm9yIHNjcm9s
bGJhciBwc2V1ZG8gZWxlbWVudHMgYW5kIGFsbG93IGEgc2V0IG9mIHBzZXVkbyBjbGFzc2VzIChi
dXQgbm90aGluZyBlbHNlKQogICAgICAgICAvLyB0byBmb2xsb3cgdGhlIHBzZXVkbyBlbGVtZW50
cy4KLSAgICAgICAgaWYgKChjb250ZXh0LmVsZW1lbnRTdHlsZSB8fCBtX2lzQ29sbGVjdGluZ1J1
bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRvICE9
IFNFTEVDVElPTgorICAgICAgICBpZiAoKGNvbnRleHQuZWxlbWVudFN0eWxlIHx8IENvbGxlY3Rp
bmdSdWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUpICYmIGR5bmFtaWNQc2V1ZG8gIT0gTk9Q
U0VVRE8gJiYgZHluYW1pY1BzZXVkbyAhPSBTRUxFQ1RJT04KICAgICAgICAgICAgICAmJiAhKChS
ZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1
ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIpICYmIG5l
eHRDb250ZXh0LnNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykp
CiAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgIG5l
eHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOwpAQCAtNzczLDcgKzc3Myw3IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAg
aWYgKFNldHRpbmdSdWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEVtcHR5U3RhdGUocmVzdWx0KTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSAmJiAoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+dXNlc1NpYmxpbmdSdWxlcygpIHx8IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkt
PnVuaXF1ZSgpKSkKQEAgLTc4Nyw3ICs3ODcsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3RvcihjCiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoIW1f
aXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKFNldHRpbmdSdWxl
cyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
U3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVu
dFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVs
ZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtODA5LDcgKzgwOSw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0b3JDaGVja2VyTW9kZSkgewog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVs
ZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50
Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5
bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZl
Y3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAtODIxLDcgKzgyMSw3IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgIC8vIGxhc3Qt
Y2hpbGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAg
ICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgp
KSB7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0Zpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwot
ICAgICAgICAgICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0b3JDaGVja2VyTW9kZSkgewogICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVu
dFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVs
ZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+
cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQpAQCAt
ODM1LDcgKzgzNSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMK
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdE9mVHlwZToKICAgICAgICAgICAg
IC8vIGxhc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBsYXN0IGVsZW1lbnQgb2YgaXRzIHR5cGUKICAg
ICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkg
eworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxlY3RvckNoZWNrZXJN
b2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNv
bnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRF
bGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5
bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKQEAgLTg1NSw3ICs4NTUsNyBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAgICAgICAgICAgICAgICAgYm9v
bCBmaXJzdENoaWxkID0gIWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKICAgICAg
ICAgICAgICAgICBib29sIG9ubHlDaGlsZCA9IGZpcnN0Q2hpbGQgJiYgcGFyZW50RWxlbWVudC0+
aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmICFlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxp
bmcoKTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0b3JDaGVja2VyTW9k
ZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRl
eHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJT
dHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBj
b250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50
RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0
eWxlKSB7CkBAIC04NzMsNyArODczLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoYwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Pbmx5T2ZUeXBlOgog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VsZWN0b3IgaXMgdmVyeSBzbG93LgogICAgICAg
ICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKFNldHRpbmdSdWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAgICAgICAgICAgICAgICAgICAgIGNv
dW50Kys7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29s
bGVjdGluZ1J1bGVzT25seSkgeworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0g
bV9zZWxlY3RvckNoZWNrZXJNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxl
KiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHls
ZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50
UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoY2hpbGRTdHlsZSkKQEAgLTkzMiw3ICs5MzIsNyBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAgICAgICAgICAgICAgICAgICAgIGlmIChzaWJs
aW5nLT5oYXNUYWdOYW1lKHR5cGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1
bGVzT25seSkgeworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxlY3Rv
ckNoZWNrZXJNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUg
OiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
cGFyZW50U3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAtOTQ2LDcgKzk0Niw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAg
IGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1l
bnQoKSkgewotICAgICAgICAgICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0b3JDaGVja2VyTW9k
ZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxl
bWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxl
KQogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CkBAIC05NjQsNyArOTY0LDcgQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAgICAgICAgaWYgKCFzZWxl
Y3Rvci0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlm
IChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAgICAgICAg
ICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxlY3RvckNoZWNrZXJNb2RlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVu
dFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKQEAgLTExNjksNyArMTE2OSw3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQp
IHsKLSAgICAgICAgaWYgKCFjb250ZXh0LmVsZW1lbnRTdHlsZSAmJiAhbV9pc0NvbGxlY3RpbmdS
dWxlc09ubHkpCisgICAgICAgIGlmICghY29udGV4dC5lbGVtZW50U3R5bGUgJiYgUXVlcnlpbmdS
dWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgaWYgKHNlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9FbGVtZW50KCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJKHJldmlzaW9uIDExNTc5OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsOCArOTYsOSBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudDsgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaWN0UGFyc2luZzsgfQogCi0gICAgYm9vbCBpc0NvbGxlY3RpbmdSdWxlc09ubHko
KSBjb25zdCB7IHJldHVybiBtX2lzQ29sbGVjdGluZ1J1bGVzT25seTsgfQotICAgIHZvaWQgc2V0
Q29sbGVjdGluZ1J1bGVzT25seShib29sIGIpIHsgbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkgPSBi
OyB9CisgICAgYm9vbCBpc0NvbGxlY3RpbmdSdWxlc09ubHkoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdG9yQ2hlY2tlck1vZGUgPT0gQ29sbGVjdGluZ1J1bGVzOyB9CisgICAgdm9pZCBzZXRDb2xs
ZWN0aW5nUnVsZXNPbmx5KGJvb2wgYikgeyBiID8gbV9zZWxlY3RvckNoZWNrZXJNb2RlID0gQ29s
bGVjdGluZ1J1bGVzIDogbV9zZWxlY3RvckNoZWNrZXJNb2RlID0gU2V0dGluZ1J1bGVzOyB9Cisg
ICAgdm9pZCBzZXRRdWVyeWluZ1J1bGVzT25seSgpIHsgbV9zZWxlY3RvckNoZWNrZXJNb2RlID0g
UXVlcnlpbmdSdWxlczsgfQogCiAgICAgUHNldWRvSWQgcHNldWRvU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3BzZXVkb1N0eWxlOyB9CiAgICAgdm9pZCBzZXRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBw
c2V1ZG9JZCkgeyBtX3BzZXVkb1N0eWxlID0gcHNldWRvSWQ7IH0KQEAgLTEzNSw3ICsxMzYsOCBA
QCBwcml2YXRlOgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIGJvb2wgbV9zdHJpY3RQ
YXJzaW5nOwogICAgIGJvb2wgbV9kb2N1bWVudElzSFRNTDsKLSAgICBib29sIG1faXNDb2xsZWN0
aW5nUnVsZXNPbmx5OworICAgIGVudW0gU2VsZWN0b3JDaGVja2VyTW9kZSB7IFNldHRpbmdSdWxl
cyA9IDAsIENvbGxlY3RpbmdSdWxlcywgUXVlcnlpbmdSdWxlcyB9OworICAgIFNlbGVjdG9yQ2hl
Y2tlck1vZGUgbV9zZWxlY3RvckNoZWNrZXJNb2RlOwogICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5
bGU7CiAgICAgbXV0YWJsZSBib29sIG1faGFzVW5rbm93blBzZXVkb0VsZW1lbnRzOwogICAgIG11
dGFibGUgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZp
c2l0ZWRTdGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAJKHJldmlz
aW9uIDExNTc5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIFNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVl
cnkoTm9kZSogcm9vdE4KICAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVu
dCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQogICAgICwgbV9zZWxl
Y3RvcnMoc2VsZWN0b3JMaXN0KQogewotICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldENvbGxlY3Rp
bmdSdWxlc09ubHkodHJ1ZSk7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0UXVlcnlpbmdSdWxl
c09ubHkoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlB
bGwoKSBjb25zdApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1Nzk5KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUtMDIgIEFycGl0
YSBCYWh1Z3VuYSAgPGFycGl0YWJhaHVndW5hQGdtYWlsLmNvbT4KKworICAgICAgICBCcm9rZW4g
aGFuZGxpbmcgb2YgcHNldWRvLWVsZW1lbnRzIGluIHNlbGVjdG9ycyBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvcXVl
cnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVtZW50cy1hY3R1YWwudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvcXVlcnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVt
ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgTmV3IGxheW91dCB0ZXN0Y2FzZSBhZGRlZCBmb3Ig
dmVyaWZ5aW5nIHRoYXQgdGhlIHF1ZXJ5U2VsZWN0b3JBbGwoKSBBUEkgcmV0dXJucyB6ZXJvCisg
ICAgICAgIHdoZW4gcXVlcnlpbmcgZm9yIHBzZXVkby1lbGVtZW50cyBzZWxlY3RvcnM7IGFzIHBl
ciB0aGUgc3BlY2lmaWNhdGlvbi4KKwogMjAxMi0wNS0wMSAgQW5kcmV3IFNjaGVya3VzICA8c2No
ZXJrdXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQWRqdXN0IGJhc2VsaW5l
IGxvY2F0aW9uIGZvciBtZWRpYS9tZWRpYS1jYW4tcGxheS10eXBlLXdlYm0uaHRtbC4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRv
LWVsZW1lbnRzLWFjdHVhbC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1wc2V1ZG8tZWxlbWVudHMtYWN0dWFsLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9y
QWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLWFjdHVhbC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTMgQEAKK1RoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHF1ZXJ5U2VsZWN0b3JBbGwoKSBB
UEkgZG9lcyBub3QgcmV0dXJuIGFueSBtYXRjaGVkIGVsZW1lbnRzIHdoZW4gcXVlcnlpbmcgZm9y
IHBzZXVkby1lbGVtZW50IHNlbGVjdG9ycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZGl2OjphZnRlciIpLmxlbmd0aCBp
cyAwCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImh0bWw6OmJlZm9yZSIpLmxlbmd0
aCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
K1Rlc3QgZm9yIEJ1Z3ppbGxhIEJ1ZyA4MzQ0NjogQnJva2VuIGhhbmRsaW5nIGZvciBwc2V1ZG8t
ZWxlbWVudHMgaW4gU2VsZWN0b3JzIEFQSS4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvcXVlcnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVtZW50cy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9yQWxsLXdp
dGgtcHNldWRvLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvcXVlcnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVtZW50cy5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+VGVzdCBmb3IgQnVnemlsbGEgQnVnIDgzNDQ2IC0gQnJva2VuIGhhbmRsaW5n
IGZvciBwc2V1ZG8tZWxlbWVudHMgaW4gU2VsZWN0b3JzIEFQSSA8L3RpdGxlPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gdGVzdCgpIHsKK2Rlc2NyaXB0aW9uKCJUaGUgdGVzdCB2ZXJpZmllcyB0aGF0
IHRoZSBxdWVyeVNlbGVjdG9yQWxsKCkgQVBJIGRvZXMgbm90IHJldHVybiBhbnkgbWF0Y2hlZCBl
bGVtZW50cyB3aGVuIHF1ZXJ5aW5nIGZvciBwc2V1ZG8tZWxlbWVudCBzZWxlY3RvcnMuIik7CisK
K3Nob3VsZEJlKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXY6OmFmdGVyIikubGVuZ3Ro
JywgJzAnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJodG1sOjpiZWZv
cmUiKS5sZW5ndGgnLCAnMCcpOworCitpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworfQorPC9zY3Jp
cHQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitkaXY6YWZ0ZXIgeworICAgIGNvbnRlbnQ6
IiI7Cit9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keSBvbkxvYWQ9InRlc3QoKSI+Cis8cD5U
ZXN0IGZvciBCdWd6aWxsYSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODM0NDYiPkJ1ZyA4MzQ0NjwvYT46IEJyb2tlbiBoYW5kbGluZyBmb3IgcHNldWRv
LWVsZW1lbnRzIGluIFNlbGVjdG9ycyBBUEkuPC9wPgorPGRpdj4gPC9kaXY+CisKKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139786</attachid>
            <date>2012-05-02 04:04:18 -0700</date>
            <delta_ts>2012-05-03 04:36:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83446-20120502163532.patch</filename>
            <type>text/plain</type>
            <size>16202</size>
            <attacher name="Arpita Bahuguna">arpitabahuguna</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTgxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA1LTAyICBBcnBpdGEg
QmFodWd1bmEgIDxhcnBpdGFiYWh1Z3VuYUBnbWFpbC5jb20+CisKKyAgICAgICAgQnJva2VuIGhh
bmRsaW5nIG9mIHBzZXVkby1lbGVtZW50cyBpbiBzZWxlY3RvcnMgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQ0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL1dpbmRvdy9x
dWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIGNz
cy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICBTZXR0aW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciB0aGUgZW51bSBtZW1iZXIgbV9zZWxlY3RvckNoZWNrZXJNb2RlIHRvIFNldHRpbmdSdWxlcy4K
KworICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAg
ICAgICAgSW5zdGVhZCBvZiB2ZXJpZnlpbmcgYWdhaW5zdCB0aGUgYm9vbCBtX2lzQ29sbGVjdGlu
Z1J1bGVzT25seSwgd2Ugbm93IGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICAgICAgIG1fc2VsZWN0
b3JDaGVja2VyTW9kZSBpcyBzZXQgdG8gU2V0dGluZ1J1bGVzLgorCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICBJbnN0ZWFkIG9m
IHZlcmlmeWluZyBhZ2FpbnN0IHRoZSBib29sIG1faXNDb2xsZWN0aW5nUnVsZXNPbmx5LCB3ZSBu
b3cgY2hlY2sgd2hldGhlciBvciBub3QKKyAgICAgICAgbV9zZWxlY3RvckNoZWNrZXJNb2RlIGlz
IHNldCB0byBTZXR0aW5nUnVsZXMuIEFsc28sIGZvciB0aGUgcHNldWRvLWVsZW1lbnRzIGNhc2UK
KyAgICAgICAgd2UgY2hlY2sgaWYgaXRzIHZhbHVlIGlzIHNldCB0byBRdWVyeWluZ1J1bGVzIGlu
IHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGZhbHNlLgorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjppc0NvbGxlY3RpbmdS
dWxlc09ubHkpOgorICAgICAgICBSZXR1cm5zIHRydWUgaWYgbV9zZWxlY3RvckNoZWNrZXJNb2Rl
IGlzIHNldCB0byBDb2xsZWN0aW5nUnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6c2V0Q29sbGVjdGluZ1J1bGVzT25seSk6CisgICAgICAgIFRoaXMgbWV0aG9kIHNl
dHMgKHRvIENvbGxlY3RpbmdSdWxlcykgb3IgcmVzZXRzICh0byBTZXR0aW5nUnVsZXMpIHRoZSB2
YWx1ZSBvZiBtX3NlbGVjdG9yQ2hlY2tlck1vZGUuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6c2V0UXVlcnlpbmdSdWxlc09ubHkpOgorICAgICAgICBUaGlzIG1ldGhvZCBz
ZXRzIG1fc2VsZWN0b3JDaGVja2VyTW9kZSB0byBRdWVyeWluZ1J1bGVzLiBRdWVyeWluZ1J1bGVz
IG1vZGUgaXMgc2V0IHdoZW4gU2VsZWN0b3JRdWVyeQorICAgICAgICBpcyBpbnN0YW50aWF0ZWQu
CisKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgU2V0cyB0aGUgU2VsZWN0b3JD
aGVja2VyJ3MgbV9zZWxlY3RvckNoZWNrZXJNb2RlIHRvIFF1ZXJ5aW5nUnVsZXMuCisKIDIwMTIt
MDUtMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogZXhjZXB0aW9uIGluIGNvbnNvbGUgd2hlbiB0aGVyZSBhcmUgd2F0Y2gg
ZXhwcmVzc2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShy
ZXZpc2lvbiAxMTU4MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yQ2hlY2tlcihEb2N1bWVuCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9z
dHJpY3RQYXJzaW5nKHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2RvY3VtZW50SXNIVE1MKGRvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpKQotICAgICwgbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkoZmFs
c2UpCisgICAgLCBtX3NlbGVjdG9yQ2hlY2tlck1vZGUoU2V0dGluZ1J1bGVzKQogICAgICwgbV9w
c2V1ZG9TdHlsZShOT1BTRVVETykKICAgICAsIG1faGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKGZh
bHNlKQogewpAQCAtNDkyLDcgKzQ5Miw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRj
aCBTZWxlY3RvckMKICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5
bmFtaWNQc2V1ZG8pOwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6Ci0g
ICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkgJiYgY29udGV4dC5lbGVtZW50LT5w
YXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKFNldHRpbmdSdWxlcyA9PSBtX3NlbGVjdG9y
Q2hlY2tlck1vZGUgJiYgY29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8g
Y29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudE5vZGUo
KS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAg
ICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRS
dWxlcygpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRj
aCBTZWxlY3RvckMKICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5
bmFtaWNQc2V1ZG8pOwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoK
LSAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSAmJiBjb250ZXh0LmVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0
b3JDaGVja2VyTW9kZSAmJiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGNvbnRleHQuZWxlbWVudC0+cGFyZW50Tm9k
ZSgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQogICAgICAg
ICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7CkBAIC01MjYsNyArNTI2LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ck1hdGNoIFNlbGVjdG9yQwogICAgICAgICAvLyBhIHNlbGVjdG9yIGlzIGludmFsaWQgaWYgc29t
ZXRoaW5nIGZvbGxvd3MgYSBwc2V1ZG8tZWxlbWVudAogICAgICAgICAvLyBXZSBtYWtlIGFuIGV4
Y2VwdGlvbiBmb3Igc2Nyb2xsYmFyIHBzZXVkbyBlbGVtZW50cyBhbmQgYWxsb3cgYSBzZXQgb2Yg
cHNldWRvIGNsYXNzZXMgKGJ1dCBub3RoaW5nIGVsc2UpCiAgICAgICAgIC8vIHRvIGZvbGxvdyB0
aGUgcHNldWRvIGVsZW1lbnRzLgotICAgICAgICBpZiAoKGNvbnRleHQuZWxlbWVudFN0eWxlIHx8
IG1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSAmJiBkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYm
IGR5bmFtaWNQc2V1ZG8gIT0gU0VMRUNUSU9OCisgICAgICAgIGlmICgoY29udGV4dC5lbGVtZW50
U3R5bGUgfHwgU2V0dGluZ1J1bGVzICE9IG1fc2VsZWN0b3JDaGVja2VyTW9kZSkgJiYgZHluYW1p
Y1BzZXVkbyAhPSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRvICE9IFNFTEVDVElPTgogICAgICAg
ICAgICAgICYmICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkg
fHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0g
UkVTSVpFUikgJiYgbmV4dENvbnRleHQuc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzKSkKICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVs
eTsKICAgICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CkBAIC03NzMsNyAr
NzczLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0b3JDaGVja2VyTW9kZSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5lbGVtZW50U3R5bGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHlsZS0+c2V0RW1wdHlTdGF0ZShyZXN1
bHQpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50LT5yZW5kZXJTdHlsZSgp
ICYmIChlbGVtZW50LT5kb2N1bWVudCgpLT51c2VzU2libGluZ1J1bGVzKCkgfHwgZWxlbWVudC0+
cmVuZGVyU3R5bGUoKS0+dW5pcXVlKCkpKQpAQCAtNzg3LDcgKzc4Nyw3IEBAIGJvb2wgU2VsZWN0
b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgICAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghZWxlbWVudC0+cHJldmlvdXNFbGVtZW50
U2libGluZygpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0b3JDaGVja2VyTW9kZSkgewogICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8g
Y29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHls
ZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5y
ZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC04
MDksNyArODA5LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVz
T25seSkgeworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxlY3RvckNo
ZWNrZXJNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBl
bGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5z
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CkBAIC04MjEsNyAr
ODIxLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAg
ICAgICAgLy8gbGFzdC1jaGlsZCBtYXRjaGVzIHRoZSBsYXN0IGNoaWxkIHRoYXQgaXMgYW4gZWxl
bWVudAogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVs
ZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiAhZWxlbWVudC0+bmV4dEVsZW1l
bnRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25s
eSkgeworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxlY3RvckNoZWNr
ZXJNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0g
Y29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJl
bmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBw
YXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFy
ZW50U3R5bGUpCkBAIC04MzUsNyArODM1LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IoYwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYXN0T2ZUeXBl
OgogICAgICAgICAgICAgLy8gbGFzdC1vZi10eXBlIG1hdGNoZXMgdGhlIGxhc3QgZWxlbWVudCBv
ZiBpdHMgdHlwZQogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1faXNDb2xsZWN0
aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKFNldHRpbmdSdWxlcyA9PSBtX3Nl
bGVjdG9yQ2hlY2tlck1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5z
ZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAtODU1LDcg
Kzg1NSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAg
ICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2li
bGluZygpOwogICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBw
YXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5l
eHRFbGVtZW50U2libGluZygpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGlu
Z1J1bGVzT25seSkgeworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxl
Y3RvckNoZWNrZXJNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGls
ZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVs
ZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50
U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAocGFyZW50U3R5bGUpIHsKQEAgLTg3Myw3ICs4NzMsNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b09ubHlPZlR5cGU6CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWxlY3RvciBpcyB2ZXJ5
IHNsb3cuCiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdS
dWxlc09ubHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0
b3JDaGVja2VyTW9kZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhcmVudFN0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAtOTA5LDcgKzkw
OSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAg
ICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKFNl
dHRpbmdSdWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlKQpAQCAtOTMyLDcgKzkzMiw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICArK2NvdW50OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIW1f
aXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKFNldHRpbmdSdWxl
cyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1l
bnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVu
dFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CkBA
IC05NDYsNyArOTQ2LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3Io
YwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGlu
Z1J1bGVzT25seSkgeworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5nUnVsZXMgPT0gbV9zZWxl
Y3RvckNoZWNrZXJNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5
bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50U3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKQEAgLTk2NCw3ICs5
NjQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAgICAgICAg
ICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRF
bGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5
KSB7CisgICAgICAgICAgICAgICAgaWYgKFNldHRpbmdSdWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tl
ck1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
Y29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVu
dEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRT
dHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAtMTE2OSw3ICsxMTY5LDcgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudCkgewotICAgICAgICBpZiAoIWNvbnRleHQuZWxlbWVudFN0eWxlICYmICFt
X2lzQ29sbGVjdGluZ1J1bGVzT25seSkKKyAgICAgICAgaWYgKCghY29udGV4dC5lbGVtZW50U3R5
bGUgJiYgU2V0dGluZ1J1bGVzID09IG1fc2VsZWN0b3JDaGVja2VyTW9kZSkgfHwgUXVlcnlpbmdS
dWxlcyA9PSBtX3NlbGVjdG9yQ2hlY2tlck1vZGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgaWYgKHNlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9FbGVtZW50KCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJKHJldmlzaW9uIDExNTgxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsOCArOTYsOSBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudDsgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaWN0UGFyc2luZzsgfQogCi0gICAgYm9vbCBpc0NvbGxlY3RpbmdSdWxlc09ubHko
KSBjb25zdCB7IHJldHVybiBtX2lzQ29sbGVjdGluZ1J1bGVzT25seTsgfQotICAgIHZvaWQgc2V0
Q29sbGVjdGluZ1J1bGVzT25seShib29sIGIpIHsgbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkgPSBi
OyB9CisgICAgYm9vbCBpc0NvbGxlY3RpbmdSdWxlc09ubHkoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdG9yQ2hlY2tlck1vZGUgPT0gQ29sbGVjdGluZ1J1bGVzOyB9CisgICAgdm9pZCBzZXRDb2xs
ZWN0aW5nUnVsZXNPbmx5KGJvb2wgYikgeyBiID8gbV9zZWxlY3RvckNoZWNrZXJNb2RlID0gQ29s
bGVjdGluZ1J1bGVzIDogbV9zZWxlY3RvckNoZWNrZXJNb2RlID0gU2V0dGluZ1J1bGVzOyB9Cisg
ICAgdm9pZCBzZXRRdWVyeWluZ1J1bGVzT25seSgpIHsgbV9zZWxlY3RvckNoZWNrZXJNb2RlID0g
UXVlcnlpbmdSdWxlczsgfQogCiAgICAgUHNldWRvSWQgcHNldWRvU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3BzZXVkb1N0eWxlOyB9CiAgICAgdm9pZCBzZXRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBw
c2V1ZG9JZCkgeyBtX3BzZXVkb1N0eWxlID0gcHNldWRvSWQ7IH0KQEAgLTEzNSw3ICsxMzYsOCBA
QCBwcml2YXRlOgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIGJvb2wgbV9zdHJpY3RQ
YXJzaW5nOwogICAgIGJvb2wgbV9kb2N1bWVudElzSFRNTDsKLSAgICBib29sIG1faXNDb2xsZWN0
aW5nUnVsZXNPbmx5OworICAgIGVudW0gU2VsZWN0b3JDaGVja2VyTW9kZSB7IFNldHRpbmdSdWxl
cyA9IDAsIENvbGxlY3RpbmdSdWxlcywgUXVlcnlpbmdSdWxlcyB9OworICAgIFNlbGVjdG9yQ2hl
Y2tlck1vZGUgbV9zZWxlY3RvckNoZWNrZXJNb2RlOwogICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5
bGU7CiAgICAgbXV0YWJsZSBib29sIG1faGFzVW5rbm93blBzZXVkb0VsZW1lbnRzOwogICAgIG11
dGFibGUgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZp
c2l0ZWRTdGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAJKHJldmlz
aW9uIDExNTgxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIFNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVl
cnkoTm9kZSogcm9vdE4KICAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVu
dCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQogICAgICwgbV9zZWxl
Y3RvcnMoc2VsZWN0b3JMaXN0KQogewotICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldENvbGxlY3Rp
bmdSdWxlc09ubHkodHJ1ZSk7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0UXVlcnlpbmdSdWxl
c09ubHkoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlB
bGwoKSBjb25zdApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1ODExKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUtMDIgIEFycGl0
YSBCYWh1Z3VuYSAgPGFycGl0YWJhaHVndW5hQGdtYWlsLmNvbT4KKworICAgICAgICBCcm9rZW4g
aGFuZGxpbmcgb2YgcHNldWRvLWVsZW1lbnRzIGluIHNlbGVjdG9ycyBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvcXVl
cnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVtZW50cy1hY3R1YWwudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvcXVlcnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVt
ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgTmV3IGxheW91dCB0ZXN0Y2FzZSBhZGRlZCBmb3Ig
dmVyaWZ5aW5nIHRoYXQgdGhlIHF1ZXJ5U2VsZWN0b3JBbGwoKSBBUEkgcmV0dXJucyB6ZXJvCisg
ICAgICAgIHdoZW4gcXVlcnlpbmcgZm9yIHBzZXVkby1lbGVtZW50cyBzZWxlY3RvcnM7IGFzIHBl
ciB0aGUgc3BlY2lmaWNhdGlvbi4gCisKIDIwMTItMDUtMDIgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2luZyB3
ZWJraXRHZXRVc2VyTWVkaWEgdG8gdGFrZSBhbiBvYmplY3QgaW5zdGVhZCBvZiBhIHN0cmluZwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1w
c2V1ZG8tZWxlbWVudHMtYWN0dWFsLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvcXVlcnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVtZW50cy1hY3R1YWwu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3F1ZXJ5U2Vs
ZWN0b3JBbGwtd2l0aC1wc2V1ZG8tZWxlbWVudHMtYWN0dWFsLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgcXVlcnlTZWxlY3RvckFs
bCgpIEFQSSBkb2VzIG5vdCByZXR1cm4gYW55IG1hdGNoZWQgZWxlbWVudHMgd2hlbiBxdWVyeWlu
ZyBmb3IgcHNldWRvLWVsZW1lbnQgc2VsZWN0b3JzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXY6OmFmdGVyIikubGVu
Z3RoIGlzIDAKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaHRtbDo6YmVmb3JlIiku
bGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorVGVzdCBmb3IgQnVnemlsbGEgQnVnIDgzNDQ2OiBCcm9rZW4gaGFuZGxpbmcgZm9yIHBz
ZXVkby1lbGVtZW50cyBpbiBTZWxlY3RvcnMgQVBJLgorCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3F1ZXJ5U2VsZWN0b3JB
bGwtd2l0aC1wc2V1ZG8tZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBCdWd6aWxsYSBCdWcgODM0NDYgLSBCcm9rZW4gaGFu
ZGxpbmcgZm9yIHBzZXVkby1lbGVtZW50cyBpbiBTZWxlY3RvcnMgQVBJIDwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkgeworZGVzY3JpcHRpb24oIlRoZSB0ZXN0IHZlcmlmaWVz
IHRoYXQgdGhlIHF1ZXJ5U2VsZWN0b3JBbGwoKSBBUEkgZG9lcyBub3QgcmV0dXJuIGFueSBtYXRj
aGVkIGVsZW1lbnRzIHdoZW4gcXVlcnlpbmcgZm9yIHBzZXVkby1lbGVtZW50IHNlbGVjdG9ycy4i
KTsKKworc2hvdWxkQmUoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdjo6YWZ0ZXIiKS5s
ZW5ndGgnLCAnMCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImh0bWw6
OmJlZm9yZSIpLmxlbmd0aCcsICcwJyk7CisKK2lzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9Cis8
L3NjcmlwdD4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2RpdjphZnRlciB7CisgICAgY29u
dGVudDoiIjsKK30KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0idGVzdCgpIj4K
KzxwPlRlc3QgZm9yIEJ1Z3ppbGxhIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MzQ0NiI+QnVnIDgzNDQ2PC9hPjogQnJva2VuIGhhbmRsaW5nIGZvciBw
c2V1ZG8tZWxlbWVudHMgaW4gU2VsZWN0b3JzIEFQSS48L3A+Cis8ZGl2PiA8L2Rpdj4KKworPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139984</attachid>
            <date>2012-05-03 04:36:48 -0700</date>
            <delta_ts>2012-05-03 05:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83446-20120503170802.patch</filename>
            <type>text/plain</type>
            <size>19066</size>
            <attacher name="Arpita Bahuguna">arpitabahuguna</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA1LTAzICBBcnBpdGEg
QmFodWd1bmEgIDxhcnBpdGFiYWh1Z3VuYUBnbWFpbC5jb20+CisKKyAgICAgICAgQnJva2VuIGhh
bmRsaW5nIG9mIHBzZXVkby1lbGVtZW50cyBpbiBzZWxlY3RvcnMgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQ0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL1dpbmRvdy9x
dWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIGNz
cy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICBTZXR0aW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciB0aGUgZW51bSBtZW1iZXIgbV9zZWxlY3RvckNoZWNrZXJNb2RlIHRvIFJlc29sdmluZ1N0eWxl
UnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rv
cik6CisgICAgICAgIEluc3RlYWQgb2YgdmVyaWZ5aW5nIGFnYWluc3QgdGhlIGJvb2wgbV9pc0Nv
bGxlY3RpbmdSdWxlc09ubHksIHdlIG5vdyBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAgICAgICBt
X3NlbGVjdG9yQ2hlY2tlck1vZGUgaXMgc2V0IHRvIFJlc29sdmluZ1N0eWxlUnVsZXMuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAg
ICAgIEluc3RlYWQgb2YgdmVyaWZ5aW5nIGFnYWluc3QgdGhlIGJvb2wgbV9pc0NvbGxlY3RpbmdS
dWxlc09ubHksIHdlIG5vdyBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAgICAgICBtX3NlbGVjdG9y
Q2hlY2tlck1vZGUgaXMgc2V0IHRvIFJlc29sdmluZ1N0eWxlUnVsZXMuIEFsc28sIGZvciB0aGUg
cHNldWRvLWVsZW1lbnRzIGNhc2UKKyAgICAgICAgd2UgY2hlY2sgaWYgaXRzIHZhbHVlIGlzIHNl
dCB0byBRdWVyeWluZ1J1bGVzIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGZhbHNlLiAKKworICAg
ICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6c2VsZWN0b3JDaGVja2VyTW9kZSk6CisgICAgICAgIFJldHVybnMgdGhlIG1vZGUg
KG1fc2VsZWN0b3JDaGVja2VyTW9kZSkgdmFsdWUuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6c2V0U2VsZWN0b3JDaGVja2VyTW9kZSk6CisgICAgICAgIFNldHMgdGhlIG1v
ZGUgKG1fc2VsZWN0b3JDaGVja2VyTW9kZSkgdG8gdGhlIHBhc3NlZCBlbnVtIHZhbHVlLgorCisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgIFJl
dHJpZXZlcyBTZWxlY3RvckNoZWNrZXIncyBNb2RlIHZhbHVlLgorCisgICAgICAgICogZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6U2VsZWN0
b3JRdWVyeSk6CisgICAgICAgIFNldHMgU2VsZWN0b3JDaGVja2VyJ3MgTW9kZSB0byBRdWVyeWlu
Z1J1bGVzLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlbGVjdG9yUXVlcnk6OkNvbnRlbnRTZWxlY3Rv
clF1ZXJ5KToKKyAgICAgICAgU2V0cyBTZWxlY3RvckNoZWNrZXIncyBNb2RlIHRvIENvbGxlY3Rp
bmdSdWxlcy4KKwogMjAxMi0wNS0wMyAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdt
YWlsLmNvbT4KIAogICAgICAgICBMaW5rZXIgd2FybmluZ3MgZHVlIHRvIGR1cGxpY2F0ZSBzeW1i
b2xzIGZvciBTaW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwIG9uIFdpbmRvd3MKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiAxMTU5NTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcihEb2N1bWVuCiAgICAg
OiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9zdHJpY3RQYXJzaW5nKHN0cmljdFBhcnNp
bmcpCiAgICAgLCBtX2RvY3VtZW50SXNIVE1MKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQot
ICAgICwgbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkoZmFsc2UpCisgICAgLCBtX3NlbGVjdG9yQ2hl
Y2tlck1vZGUoUmVzb2x2aW5nU3R5bGVSdWxlcykKICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VV
RE8pCiAgICAgLCBtX2hhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyhmYWxzZSkKIHsKQEAgLTQ5Miw3
ICs0OTIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDCiAgICAg
ICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBkeW5hbWljUHNldWRvKTsKIAog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgotICAgICAgICBpZiAoIW1faXND
b2xsZWN0aW5nUnVsZXNPbmx5ICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7
CisgICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlck1vZGUgPT0gUmVzb2x2aW5nU3R5bGVSdWxl
cyAmJiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVs
ZW1lbnRQYXJlbnRTdHlsZSA6IGNvbnRleHQuZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJT
dHlsZSgpOwogICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQogICAgICAgICAgICAgICAgIHBh
cmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CkBA
IC01MDYsNyArNTA2LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
QwogICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgZHluYW1pY1BzZXVk
byk7CiAKICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgotICAgICAgICBp
ZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5ICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpKSB7CisgICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlck1vZGUgPT0gUmVzb2x2aW5n
U3R5bGVSdWxlcyAmJiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGNvbnRleHQuZWxlbWVudC0+cGFyZW50Tm9kZSgp
LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQogICAgICAgICAg
ICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKCk7CkBAIC01MjYsNyArNTI2LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1h
dGNoIFNlbGVjdG9yQwogICAgICAgICAvLyBhIHNlbGVjdG9yIGlzIGludmFsaWQgaWYgc29tZXRo
aW5nIGZvbGxvd3MgYSBwc2V1ZG8tZWxlbWVudAogICAgICAgICAvLyBXZSBtYWtlIGFuIGV4Y2Vw
dGlvbiBmb3Igc2Nyb2xsYmFyIHBzZXVkbyBlbGVtZW50cyBhbmQgYWxsb3cgYSBzZXQgb2YgcHNl
dWRvIGNsYXNzZXMgKGJ1dCBub3RoaW5nIGVsc2UpCiAgICAgICAgIC8vIHRvIGZvbGxvdyB0aGUg
cHNldWRvIGVsZW1lbnRzLgotICAgICAgICBpZiAoKGNvbnRleHQuZWxlbWVudFN0eWxlIHx8IG1f
aXNDb2xsZWN0aW5nUnVsZXNPbmx5KSAmJiBkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIGR5
bmFtaWNQc2V1ZG8gIT0gU0VMRUNUSU9OCisgICAgICAgIGlmICgoY29udGV4dC5lbGVtZW50U3R5
bGUgfHwgbV9zZWxlY3RvckNoZWNrZXJNb2RlICE9IFJlc29sdmluZ1N0eWxlUnVsZXMpICYmIGR5
bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgZHluYW1pY1BzZXVkbyAhPSBTRUxFQ1RJT04KICAg
ICAgICAgICAgICAmJiAhKChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2
ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNldWRv
ID09IFJFU0laRVIpICYmIG5leHRDb250ZXh0LnNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBs
ZXRlbHk7CiAgICAgICAgIG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOwpAQCAtNzcz
LDcgKzc3Myw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7
CisgICAgICAgICAgICAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyTW9kZSA9PSBSZXNvbHZpbmdT
dHlsZVJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHls
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRFbXB0
eVN0YXRlKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQtPnJl
bmRlclN0eWxlKCkgJiYgKGVsZW1lbnQtPmRvY3VtZW50KCktPnVzZXNTaWJsaW5nUnVsZXMoKSB8
fCBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT51bmlxdWUoKSkpCkBAIC03ODcsNyArNzg3LDcgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAgICAg
ICAgICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlck1vZGUgPT0gUmVzb2x2aW5nU3R5bGVSdWxl
cykgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRl
eHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJT
dHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBj
b250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVu
dC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
cGFyZW50U3R5bGUpCkBAIC04MDksNyArODA5LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IoYwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFt
X2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAgICAgICAgICAgICAgIGlmIChtX3NlbGVjdG9y
Q2hlY2tlck1vZGUgPT0gUmVzb2x2aW5nU3R5bGVSdWxlcykgewogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHls
ZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcygpOwpAQCAtODIxLDcgKzgyMSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgIC8vIGxhc3QtY2hpbGQgbWF0Y2hlcyB0aGUg
bGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBw
YXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAg
ICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVu
KCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAgIGlm
ICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zZWxl
Y3RvckNoZWNrZXJNb2RlID09IFJlc29sdmluZ1N0eWxlUnVsZXMpIHsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKQEAgLTgzNSw3ICs4MzUs
NyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBsYXN0LW9m
LXR5cGUgbWF0Y2hlcyB0aGUgbGFzdCBlbGVtZW50IG9mIGl0cyB0eXBlCiAgICAgICAgICAgICBp
ZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewot
ICAgICAgICAgICAgICAgIGlmICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXJNb2RlID09IFJlc29sdmluZ1N0eWxlUnVsZXMp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAtODU1LDcgKzg1NSw3IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgICAgICBib29sIGZp
cnN0Q2hpbGQgPSAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwogICAgICAgICAg
ICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0Zp
bmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygp
OwogCi0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAg
ICAgICAgICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlck1vZGUgPT0gUmVzb2x2aW5nU3R5bGVS
dWxlcykgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNv
bnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFy
ZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVu
dFN0eWxlKSB7CkBAIC04NzMsNyArODczLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IoYwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Pbmx5T2ZUeXBl
OgogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VsZWN0b3IgaXMgdmVyeSBzbG93LgogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7
CisgICAgICAgICAgICAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyTW9kZSA9PSBSZXNvbHZpbmdT
dHlsZVJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBw
YXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFy
ZW50U3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CkBAIC05MDksNyArOTA5LDcg
QEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAgICAgICAg
ICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlm
ICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zZWxl
Y3RvckNoZWNrZXJNb2RlID09IFJlc29sdmluZ1N0eWxlUnVsZXMpIHsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlKQpAQCAtOTMyLDcgKzkzMiw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICArK2NvdW50OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
IW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fc2VsZWN0
b3JDaGVja2VyTW9kZSA9PSBSZXNvbHZpbmdTdHlsZVJ1bGVzKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29u
dGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOwpAQCAtOTQ2LDcgKzk0Niw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKGMKICAgICAgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVu
dCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGlmICghbV9p
c0NvbGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNo
ZWNrZXJNb2RlID09IFJlc29sdmluZ1N0eWxlUnVsZXMpIHsKICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0
LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cygpOwpAQCAtOTY0LDcgKzk2NCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKGMKICAgICAgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGlmICghbV9pc0Nv
bGxlY3RpbmdSdWxlc09ubHkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNr
ZXJNb2RlID09IFJlc29sdmluZ1N0eWxlUnVsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVs
ZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
OwpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IoYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChzZWxlY3Rvci0+
bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkgewotICAgICAgICBpZiAoIWNv
bnRleHQuZWxlbWVudFN0eWxlICYmICFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkKKyAgICAgICAg
aWYgKCghY29udGV4dC5lbGVtZW50U3R5bGUgJiYgbV9zZWxlY3RvckNoZWNrZXJNb2RlID09IFJl
c29sdmluZ1N0eWxlUnVsZXMpIHx8IG1fc2VsZWN0b3JDaGVja2VyTW9kZSA9PSBRdWVyeWluZ1J1
bGVzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChzZWxlY3Rvci0+
aXNVbmtub3duUHNldWRvRWxlbWVudCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCShyZXZpc2lvbiAxMTU5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiAg
ICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxlY3RvckZhaWxzTG9j
YWxseSwgU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzLCBTZWxlY3RvckZhaWxzQ29tcGxldGVseSB9
OwogICAgIGVudW0gVmlzaXRlZE1hdGNoVHlwZSB7IFZpc2l0ZWRNYXRjaERpc2FibGVkLCBWaXNp
dGVkTWF0Y2hFbmFibGVkIH07CisgICAgZW51bSBNb2RlIHsgUmVzb2x2aW5nU3R5bGVSdWxlcyA9
IDAsIENvbGxlY3RpbmdSdWxlcywgUXVlcnlpbmdSdWxlcyB9OwogCiAgICAgc3RydWN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0IHsKICAgICAgICAgLy8gSW5pdGlhbCBzZWxlY3RvciBjb25zdHJ1
Y3RvcgpAQCAtOTYsOCArOTcsOCBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQogCi0gICAgYm9vbCBpc0NvbGxlY3RpbmdS
dWxlc09ubHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29sbGVjdGluZ1J1bGVzT25seTsgfQotICAg
IHZvaWQgc2V0Q29sbGVjdGluZ1J1bGVzT25seShib29sIGIpIHsgbV9pc0NvbGxlY3RpbmdSdWxl
c09ubHkgPSBiOyB9CisgICAgTW9kZSBzZWxlY3RvckNoZWNrZXJNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3RvckNoZWNrZXJNb2RlOyB9CisgICAgdm9pZCBzZXRTZWxlY3RvckNoZWNrZXJN
b2RlKE1vZGUgbW9kZSkgeyBtX3NlbGVjdG9yQ2hlY2tlck1vZGUgPSBtb2RlOyB9CiAKICAgICBQ
c2V1ZG9JZCBwc2V1ZG9TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHNldWRvU3R5bGU7IH0KICAg
ICB2b2lkIHNldFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkb0lkKSB7IG1fcHNldWRvU3R5bGUg
PSBwc2V1ZG9JZDsgfQpAQCAtMTM1LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQq
IG1fZG9jdW1lbnQ7CiAgICAgYm9vbCBtX3N0cmljdFBhcnNpbmc7CiAgICAgYm9vbCBtX2RvY3Vt
ZW50SXNIVE1MOwotICAgIGJvb2wgbV9pc0NvbGxlY3RpbmdSdWxlc09ubHk7CisgICAgTW9kZSBt
X3NlbGVjdG9yQ2hlY2tlck1vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1ZG9TdHlsZTsKICAgICBt
dXRhYmxlIGJvb2wgbV9oYXNVbmtub3duUHNldWRvRWxlbWVudHM7CiAgICAgbXV0YWJsZSBIYXNo
U2V0PExpbmtIYXNoLCBMaW5rSGFzaEhhc2g+IG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMTE1OTU3
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpzb3J0QW5kVHJhbnNmZXJN
YXRjaAogCiAgICAgc29ydE1hdGNoZWRSdWxlcygpOwogCi0gICAgaWYgKG1fY2hlY2tlci5pc0Nv
bGxlY3RpbmdSdWxlc09ubHkoKSkgeworICAgIGlmIChtX2NoZWNrZXIuc2VsZWN0b3JDaGVja2Vy
TW9kZSgpID09IFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKSB7CiAgICAgICAgIGlm
ICghbV9ydWxlTGlzdCkKICAgICAgICAgICAgIG1fcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hdGNoZWRS
dWxlcy5zaXplKCk7ICsraSkKQEAgLTEwNDUsNyArMTA0NSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIG1hdGNoaW5n
IG5vcm1hbCBydWxlcywgc2V0IGEgcHNldWRvIGJpdCBpZgogICAgICAgICAgICAgLy8gd2UgcmVh
bGx5IGp1c3QgbWF0Y2hlZCBhIHBzZXVkby1lbGVtZW50LgogICAgICAgICAgICAgaWYgKG1fZHlu
YW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBtX2NoZWNrZXIucHNldWRvU3R5bGUoKSA9PSBOT1BT
RVVETykgewotICAgICAgICAgICAgICAgIGlmIChtX2NoZWNrZXIuaXNDb2xsZWN0aW5nUnVsZXNP
bmx5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jaGVja2VyLnNlbGVjdG9yQ2hlY2tlck1v
ZGUoKSA9PSBTZWxlY3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlcykgewogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIGZh
bHNlKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMjE3NSw3ICsyMTc1LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZl
cjo6cAogICAgIGlmICghZSB8fCAhZS0+ZG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVk
KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9jaGVja2VyLnNldENvbGxlY3RpbmdSdWxl
c09ubHkodHJ1ZSk7CisgICAgbV9jaGVja2VyLnNldFNlbGVjdG9yQ2hlY2tlck1vZGUoU2VsZWN0
b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpOwogCiAgICAgaW5pdEVsZW1lbnQoZSk7CiAgICAg
aW5pdEZvclN0eWxlUmVzb2x2ZShlLCAwLCBwc2V1ZG9JZCk7CkBAIC0yMTk5LDcgKzIxOTksNyBA
QCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwCiAgICAgICAgIG1fc2Ft
ZU9yaWdpbk9ubHkgPSBmYWxzZTsKICAgICB9CiAKLSAgICBtX2NoZWNrZXIuc2V0Q29sbGVjdGlu
Z1J1bGVzT25seShmYWxzZSk7CisgICAgbV9jaGVja2VyLnNldFNlbGVjdG9yQ2hlY2tlck1vZGUo
U2VsZWN0b3JDaGVja2VyOjpSZXNvbHZpbmdTdHlsZVJ1bGVzKTsKIAogICAgIHJldHVybiBtX3J1
bGVMaXN0LnJlbGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5j
cHAJKHJldmlzaW9uIDExNTk1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIFNlbGVjdG9yUXVlcnk6OlNl
bGVjdG9yUXVlcnkoTm9kZSogcm9vdE4KICAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2Rl
LT5kb2N1bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQogICAg
ICwgbV9zZWxlY3RvcnMoc2VsZWN0b3JMaXN0KQogewotICAgIG1fc2VsZWN0b3JDaGVja2VyLnNl
dENvbGxlY3RpbmdSdWxlc09ubHkodHJ1ZSk7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0U2Vs
ZWN0b3JDaGVja2VyTW9kZShTZWxlY3RvckNoZWNrZXI6OlF1ZXJ5aW5nUnVsZXMpOwogfQogCiBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbCgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVl
cnkuY3BwCShyZXZpc2lvbiAxMTU5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50U2VsZWN0b3JRdWVyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
Q29udGVudFNlbGVjdG9yUXVlcnk6OkNvbnRlbnRTZWxlY3RvclF1ZQogICAgIDogbV9pbnNlcnRp
b25Qb2ludChpbnNlcnRpb25Qb2ludCkKICAgICAsIG1fc2VsZWN0b3JDaGVja2VyKGluc2VydGlv
blBvaW50LT5kb2N1bWVudCgpLCAhaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50KCktPmluUXVpcmtz
TW9kZSgpKQogewotICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldENvbGxlY3RpbmdSdWxlc09ubHko
dHJ1ZSk7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0U2VsZWN0b3JDaGVja2VyTW9kZShTZWxl
Y3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlcyk7CiAKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQt
PnNlbGVjdCgpLmlzTnVsbCgpIHx8IGluc2VydGlvblBvaW50LT5zZWxlY3QoKS5pc0VtcHR5KCkp
IHsKICAgICAgICAgbV9pc1ZhbGlkU2VsZWN0b3IgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTE1OTU5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDUtMDMgIEFycGl0YSBCYWh1Z3VuYSAgPGFycGl0YWJhaHVndW5hQGdt
YWlsLmNvbT4KKworICAgICAgICBCcm9rZW4gaGFuZGxpbmcgb2YgcHNldWRvLWVsZW1lbnRzIGlu
IHNlbGVjdG9ycyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvcXVlcnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVt
ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9xdWVy
eVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICBO
ZXcgbGF5b3V0IHRlc3RjYXNlIGFkZGVkIGZvciB2ZXJpZnlpbmcgdGhhdCB0aGUgcXVlcnlTZWxl
Y3RvckFsbCgpIEFQSSByZXR1cm5zIHplcm8KKyAgICAgICAgd2hlbiBxdWVyeWluZyBmb3IgcHNl
dWRvLWVsZW1lbnRzIHNlbGVjdG9yczsgYXMgcGVyIHRoZSBzcGVjaWZpY2F0aW9uLgorCiAyMDEy
LTA1LTAzICBVZGF5IEtpcmFuICA8dWRheWtpcmFuQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBD
U1MgY2xpcDogYXV0byBjbGlwcyB0byBib3ggYm9yZGVycyBpbnN0ZWFkIG9mIHJlbW92aW5nIGNs
aXBwaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcXVlcnlTZWxlY3RvckFs
bC13aXRoLXBzZXVkby1lbGVtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1wc2V1ZG8tZWxlbWVu
dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1wc2V1ZG8tZWxlbWVudHMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBx
dWVyeVNlbGVjdG9yQWxsKCkgQVBJIGRvZXMgbm90IHJldHVybiBhbnkgbWF0Y2hlZCBlbGVtZW50
cyB3aGVuIHF1ZXJ5aW5nIGZvciBwc2V1ZG8tZWxlbWVudCBzZWxlY3RvcnMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRp
djo6YWZ0ZXIiKS5sZW5ndGggaXMgMAorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJo
dG1sOjpiZWZvcmUiKS5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCitUZXN0IGZvciBCdWd6aWxsYSBCdWcgODM0NDY6IEJyb2tlbiBo
YW5kbGluZyBmb3IgcHNldWRvLWVsZW1lbnRzIGluIFNlbGVjdG9ycyBBUEkuCisKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1wc2V1ZG8t
ZWxlbWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
cXVlcnlTZWxlY3RvckFsbC13aXRoLXBzZXVkby1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1wc2V1
ZG8tZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIEJ1Z3ppbGxhIEJ1ZyA4MzQ0
NiAtIEJyb2tlbiBoYW5kbGluZyBmb3IgcHNldWRvLWVsZW1lbnRzIGluIFNlbGVjdG9ycyBBUEkg
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKSB7CitkZXNjcmlwdGlvbigiVGhl
IHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgcXVlcnlTZWxlY3RvckFsbCgpIEFQSSBkb2VzIG5vdCBy
ZXR1cm4gYW55IG1hdGNoZWQgZWxlbWVudHMgd2hlbiBxdWVyeWluZyBmb3IgcHNldWRvLWVsZW1l
bnQgc2VsZWN0b3JzLiIpOworCitzaG91bGRCZSgnZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgi
ZGl2OjphZnRlciIpLmxlbmd0aCcsICcwJyk7CitzaG91bGRCZSgnZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgiaHRtbDo6YmVmb3JlIikubGVuZ3RoJywgJzAnKTsKKworaXNTdWNjZXNzZnVsbHlQ
YXJzZWQoKTsKK30KKzwvc2NyaXB0PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorZGl2OmFm
dGVyIHsKKyAgICBjb250ZW50OiIiOworfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHkgb25M
b2FkPSJ0ZXN0KCkiPgorPHA+VGVzdCBmb3IgQnVnemlsbGEgPGEgaHJlZj0iaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDQ2Ij5CdWcgODM0NDY8L2E+OiBCcm9rZW4g
aGFuZGxpbmcgZm9yIHBzZXVkby1lbGVtZW50cyBpbiBTZWxlY3RvcnMgQVBJLjwvcD4KKzxkaXY+
IDwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139989</attachid>
            <date>2012-05-03 05:34:25 -0700</date>
            <delta_ts>2012-05-03 07:44:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83446-20120503180539.patch</filename>
            <type>text/plain</type>
            <size>18458</size>
            <attacher name="Arpita Bahuguna">arpitabahuguna</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA1LTAzICBBcnBpdGEg
QmFodWd1bmEgIDxhcnBpdGFiYWh1Z3VuYUBnbWFpbC5jb20+CisKKyAgICAgICAgQnJva2VuIGhh
bmRsaW5nIG9mIHBzZXVkby1lbGVtZW50cyBpbiBzZWxlY3RvcnMgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQ0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL1dpbmRvdy9x
dWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIGNz
cy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICBTZXR0aW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciB0aGUgZW51bSBtZW1iZXIgbV9tb2RlIHRvIFJlc29sdmluZ1N0eWxlLgorCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICBJbnN0ZWFk
IG9mIHZlcmlmeWluZyBhZ2FpbnN0IHRoZSBib29sIG1faXNDb2xsZWN0aW5nUnVsZXNPbmx5LCB3
ZSBub3cgY2hlY2sgd2hldGhlciBvciBub3QKKyAgICAgICAgbV9tb2RlIGlzIHNldCB0byBSZXNv
bHZpbmdTdHlsZS4KKworICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKToKKyAgICAgICAgSW5zdGVhZCBvZiB2ZXJpZnlpbmcgYWdhaW5zdCB0aGUgYm9v
bCBtX2lzQ29sbGVjdGluZ1J1bGVzT25seSwgd2Ugbm93IGNoZWNrIHdoZXRoZXIgb3Igbm90Cisg
ICAgICAgIG1fbW9kZSBpcyBzZXQgdG8gUmVzb2x2aW5nU3R5bGUuIEFsc28sIGZvciB0aGUgcHNl
dWRvLWVsZW1lbnRzIGNhc2Ugd2UgY2hlY2sgaWYgaXRzCisgICAgICAgIHZhbHVlIGlzIHNldCB0
byBRdWVyeWluZ1J1bGVzIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGZhbHNlLgorCisgICAgICAg
ICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjptb2RlKToKKyAgICAgICAgUmV0dXJucyB0aGUgbW9kZSAobV9tb2RlKSB2YWx1ZS4KKwor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpzZXRNb2RlKToKKyAgICAgICAgU2V0
cyB0aGUgbW9kZSAobV9tb2RlKSB0byB0aGUgcGFzc2VkIGVudW0gdmFsdWUuCisKKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
Ojpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgUmV0cmlldmVz
IFNlbGVjdG9yQ2hlY2tlcidzIG1vZGUgdmFsdWUuCisKKyAgICAgICAgKiBkb20vU2VsZWN0b3JR
dWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5
KToKKyAgICAgICAgU2V0cyBTZWxlY3RvckNoZWNrZXIncyBtb2RlIHRvIFF1ZXJ5aW5nUnVsZXMu
CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkp
OgorICAgICAgICBTZXRzIFNlbGVjdG9yQ2hlY2tlcidzIG1vZGUgdG8gQ29sbGVjdGluZ1J1bGVz
LgorCiAyMDEyLTA1LTAzICAnUGF2ZWwgRmVsZG1hbicgIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTm90IHJldmlld2VkOiBuZXZlciBzdXJyb3VuZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OiB3aXRoIEVOQUJMRUQoSU5TUEVDVE9SKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAJKHJldmlzaW9uIDExNTk2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBA
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW4KICAgICA6IG1fZG9jdW1l
bnQoZG9jdW1lbnQpCiAgICAgLCBtX3N0cmljdFBhcnNpbmcoc3RyaWN0UGFyc2luZykKICAgICAs
IG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCi0gICAgLCBtX2lz
Q29sbGVjdGluZ1J1bGVzT25seShmYWxzZSkKKyAgICAsIG1fbW9kZShSZXNvbHZpbmdTdHlsZSkK
ICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VVRE8pCiAgICAgLCBtX2hhc1Vua25vd25Qc2V1ZG9F
bGVtZW50cyhmYWxzZSkKIHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNl
bGVjdG9yTWF0Y2ggU2VsZWN0b3JDCiAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRD
b250ZXh0LCBkeW5hbWljUHNldWRvKTsKIAogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFk
amFjZW50OgotICAgICAgICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5ICYmIGNvbnRleHQu
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2
aW5nU3R5bGUgJiYgY29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAg
ICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29u
dGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudE5vZGUoKS0+
cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAg
ICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxl
cygpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBT
ZWxlY3RvckMKICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5bmFt
aWNQc2V1ZG8pOwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKLSAg
ICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSAmJiBjb250ZXh0LmVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlICYm
IGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVu
dFBhcmVudFN0eWxlIDogY29udGV4dC5lbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCiAgICAgICAgICAgICAgICAgcGFyZW50
U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKQEAg
LTUyNiw3ICs1MjYsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JD
CiAgICAgICAgIC8vIGEgc2VsZWN0b3IgaXMgaW52YWxpZCBpZiBzb21ldGhpbmcgZm9sbG93cyBh
IHBzZXVkby1lbGVtZW50CiAgICAgICAgIC8vIFdlIG1ha2UgYW4gZXhjZXB0aW9uIGZvciBzY3Jv
bGxiYXIgcHNldWRvIGVsZW1lbnRzIGFuZCBhbGxvdyBhIHNldCBvZiBwc2V1ZG8gY2xhc3NlcyAo
YnV0IG5vdGhpbmcgZWxzZSkKICAgICAgICAgLy8gdG8gZm9sbG93IHRoZSBwc2V1ZG8gZWxlbWVu
dHMuCi0gICAgICAgIGlmICgoY29udGV4dC5lbGVtZW50U3R5bGUgfHwgbV9pc0NvbGxlY3RpbmdS
dWxlc09ubHkpICYmIGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgZHluYW1pY1BzZXVkbyAh
PSBTRUxFQ1RJT04KKyAgICAgICAgaWYgKChjb250ZXh0LmVsZW1lbnRTdHlsZSB8fCBtX21vZGUg
PT0gQ29sbGVjdGluZ1J1bGVzIHx8IG1fbW9kZSA9PSBRdWVyeWluZ1J1bGVzKSAmJiBkeW5hbWlj
UHNldWRvICE9IE5PUFNFVURPICYmIGR5bmFtaWNQc2V1ZG8gIT0gU0VMRUNUSU9OCiAgICAgICAg
ICAgICAgJiYgISgoUmVuZGVyU2Nyb2xsYmFyOjpzY3JvbGxiYXJGb3JTdHlsZVJlc29sdmUoKSB8
fCBkeW5hbWljUHNldWRvID09IFNDUk9MTEJBUl9DT1JORVIgfHwgZHluYW1pY1BzZXVkbyA9PSBS
RVNJWkVSKSAmJiBuZXh0Q29udGV4dC5zZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3MpKQogICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5
OwogICAgICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1ZTsKQEAgLTc3Myw3ICs3
NzMsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAg
ICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEVtcHR5U3RhdGUocmVzdWx0KTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSAmJiAoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+dXNlc1NpYmxpbmdSdWxlcygpIHx8IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkt
PnVuaXF1ZSgpKSkKQEAgLTc4Nyw3ICs3ODcsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3RvcihjCiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoIW1f
aXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBS
ZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRT
dHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVt
ZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0
eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC04MDksNyArODA5LDcgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAgICAgICAgICAgICAgIGlm
IChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1l
bnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKQEAgLTgyMSw3ICs4MjEsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3RvcihjCiAgICAgICAgICAgICAvLyBsYXN0LWNoaWxkIG1hdGNoZXMgdGhlIGxhc3QgY2hp
bGQgdGhhdCBpcyBhbiBlbGVtZW50CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGJvb2wg
cmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmICFl
bGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1faXND
b2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNv
bHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhcmVudFN0eWxlKQpAQCAtODM1LDcgKzgzNSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdE9m
VHlwZToKICAgICAgICAgICAgIC8vIGxhc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBsYXN0IGVsZW1l
bnQgb2YgaXRzIHR5cGUKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29s
bGVjdGluZ1J1bGVzT25seSkgeworICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2
aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
ID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBh
cmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJl
bnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwpAQCAtODU1LDcgKzg1NSw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAgICAgICAgICAg
ICBib29sIGZpcnN0Q2hpbGQgPSAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwog
ICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVt
ZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50
U2libGluZygpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25s
eSkgeworICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1l
bnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5l
bGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQt
PnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgewpA
QCAtODczLDcgKzg3Myw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seU9mVHlwZToKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNlbGVjdG9yIGlzIHZlcnkgc2xvdy4KICAgICAgICAgICAgIGlm
IChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMoKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3RvcihjCiAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgewor
ICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHls
ZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlKQpAQCAtOTMyLDcg
KzkzMiw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGMKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICArK2NvdW50OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAoIW1faXNDb2xsZWN0aW5nUnVsZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKG1f
bW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBh
cmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudFN0eWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5
bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKQEAgLTk0
Niw3ICs5NDYsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihjCiAg
ICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1faXNDb2xsZWN0aW5nUnVs
ZXNPbmx5KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkg
ewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0
LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVu
dC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CkBAIC05NjQsNyArOTY0LDcgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoYwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rv
ci0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChF
bGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkgeworICAgICAgICAgICAg
ICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0
LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cygpOwpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChzZWxlY3Rv
ci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkgewotICAgICAgICBpZiAo
IWNvbnRleHQuZWxlbWVudFN0eWxlICYmICFtX2lzQ29sbGVjdGluZ1J1bGVzT25seSkKKyAgICAg
ICAgaWYgKCghY29udGV4dC5lbGVtZW50U3R5bGUgJiYgbV9tb2RlID09IFJlc29sdmluZ1N0eWxl
KSB8fCBtX21vZGUgPT0gUXVlcnlpbmdSdWxlcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBpZiAoc2VsZWN0b3ItPmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkocmV2aXNpb24gMTE1OTYyKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0b3JNYXRjaCB7IFNlbGVjdG9y
TWF0Y2hlcywgU2VsZWN0b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncywg
U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKICAgICBlbnVtIFZpc2l0ZWRNYXRjaFR5cGUgeyBW
aXNpdGVkTWF0Y2hEaXNhYmxlZCwgVmlzaXRlZE1hdGNoRW5hYmxlZCB9OworICAgIGVudW0gTW9k
ZSB7IFJlc29sdmluZ1N0eWxlID0gMCwgQ29sbGVjdGluZ1J1bGVzLCBRdWVyeWluZ1J1bGVzIH07
CiAKICAgICBzdHJ1Y3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgewogICAgICAgICAvLyBJbml0
aWFsIHNlbGVjdG9yIGNvbnN0cnVjdG9yCkBAIC05Niw4ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAgICAgYm9v
bCBzdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9CiAKLSAg
ICBib29sIGlzQ29sbGVjdGluZ1J1bGVzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsZWN0
aW5nUnVsZXNPbmx5OyB9Ci0gICAgdm9pZCBzZXRDb2xsZWN0aW5nUnVsZXNPbmx5KGJvb2wgYikg
eyBtX2lzQ29sbGVjdGluZ1J1bGVzT25seSA9IGI7IH0KKyAgICBNb2RlIG1vZGUoKSBjb25zdCB7
IHJldHVybiBtX21vZGU7IH0KKyAgICB2b2lkIHNldE1vZGUoTW9kZSBtb2RlKSB7IG1fbW9kZSA9
IG1vZGU7IH0KIAogICAgIFBzZXVkb0lkIHBzZXVkb1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9w
c2V1ZG9TdHlsZTsgfQogICAgIHZvaWQgc2V0UHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvSWQp
IHsgbV9wc2V1ZG9TdHlsZSA9IHBzZXVkb0lkOyB9CkBAIC0xMzUsNyArMTM2LDcgQEAgcHJpdmF0
ZToKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBib29sIG1fc3RyaWN0UGFyc2luZzsK
ICAgICBib29sIG1fZG9jdW1lbnRJc0hUTUw7Ci0gICAgYm9vbCBtX2lzQ29sbGVjdGluZ1J1bGVz
T25seTsKKyAgICBNb2RlIG1fbW9kZTsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxlOwogICAg
IG11dGFibGUgYm9vbCBtX2hhc1Vua25vd25Qc2V1ZG9FbGVtZW50czsKICAgICBtdXRhYmxlIEhh
c2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3Rh
dGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxMTU5
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3MSw3ICs4NzEsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnNvcnRBbmRUcmFuc2Zl
ck1hdGNoCiAKICAgICBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAKLSAgICBpZiAobV9jaGVja2VyLmlz
Q29sbGVjdGluZ1J1bGVzT25seSgpKSB7CisgICAgaWYgKG1fY2hlY2tlci5tb2RlKCkgPT0gU2Vs
ZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpIHsKICAgICAgICAgaWYgKCFtX3J1bGVMaXN0
KQogICAgICAgICAgICAgbV9ydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF0Y2hlZFJ1bGVzLnNpemUoKTsg
KytpKQpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlcwogICAgICAgICAgICAgLy8gSWYgd2UncmUgbWF0Y2hpbmcgbm9ybWFsIHJ1bGVz
LCBzZXQgYSBwc2V1ZG8gYml0IGlmCiAgICAgICAgICAgICAvLyB3ZSByZWFsbHkganVzdCBtYXRj
aGVkIGEgcHNldWRvLWVsZW1lbnQuCiAgICAgICAgICAgICBpZiAobV9keW5hbWljUHNldWRvICE9
IE5PUFNFVURPICYmIG1fY2hlY2tlci5wc2V1ZG9TdHlsZSgpID09IE5PUFNFVURPKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fY2hlY2tlci5pc0NvbGxlY3RpbmdSdWxlc09ubHkoKSkgeworICAg
ICAgICAgICAgICAgIGlmIChtX2NoZWNrZXIubW9kZSgpID09IFNlbGVjdG9yQ2hlY2tlcjo6Q29s
bGVjdGluZ1J1bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICB9CkBAIC0yMTc1LDcgKzIxNzUsNyBAQCBQYXNzUmVm
UHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwCiAgICAgaWYgKCFlIHx8ICFlLT5kb2N1
bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBtX2NoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVzT25seSh0cnVlKTsKKyAgICBtX2NoZWNrZXIu
c2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlcyk7CiAKICAgICBpbml0RWxl
bWVudChlKTsKICAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKGUsIDAsIHBzZXVkb0lkKTsKQEAgLTIx
OTksNyArMjE5OSw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnAK
ICAgICAgICAgbV9zYW1lT3JpZ2luT25seSA9IGZhbHNlOwogICAgIH0KIAotICAgIG1fY2hlY2tl
ci5zZXRDb2xsZWN0aW5nUnVsZXNPbmx5KGZhbHNlKTsKKyAgICBtX2NoZWNrZXIuc2V0TW9kZShT
ZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlKTsKIAogICAgIHJldHVybiBtX3J1bGVMaXN0
LnJlbGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAJKHJl
dmlzaW9uIDExNTk2MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIFNlbGVjdG9yUXVlcnk6OlNlbGVjdG9y
UXVlcnkoTm9kZSogcm9vdE4KICAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1
bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQogICAgICwgbV9z
ZWxlY3RvcnMoc2VsZWN0b3JMaXN0KQogewotICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldENvbGxl
Y3RpbmdSdWxlc09ubHkodHJ1ZSk7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShTZWxl
Y3RvckNoZWNrZXI6OlF1ZXJ5aW5nUnVsZXMpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBT
ZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCShyZXZpc2lvbiAxMTU5
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgQ29udGVudFNlbGVjdG9yUXVlcnk6
OkNvbnRlbnRTZWxlY3RvclF1ZQogICAgIDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2lu
dCkKICAgICAsIG1fc2VsZWN0b3JDaGVja2VyKGluc2VydGlvblBvaW50LT5kb2N1bWVudCgpLCAh
aW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQogewotICAgIG1fc2Vs
ZWN0b3JDaGVja2VyLnNldENvbGxlY3RpbmdSdWxlc09ubHkodHJ1ZSk7CisgICAgbV9zZWxlY3Rv
ckNoZWNrZXIuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlcyk7CiAKICAg
ICBpZiAoaW5zZXJ0aW9uUG9pbnQtPnNlbGVjdCgpLmlzTnVsbCgpIHx8IGluc2VydGlvblBvaW50
LT5zZWxlY3QoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9pc1ZhbGlkU2VsZWN0b3IgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTE1OTYzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUtMDMgIEFycGl0YSBCYWh1Z3Vu
YSAgPGFycGl0YWJhaHVndW5hQGdtYWlsLmNvbT4KKworICAgICAgICBCcm9rZW4gaGFuZGxpbmcg
b2YgcHNldWRvLWVsZW1lbnRzIGluIHNlbGVjdG9ycyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvcXVlcnlTZWxlY3Rv
ckFsbC13aXRoLXBzZXVkby1lbGVtZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0
bWw6IEFkZGVkLgorICAgICAgICBOZXcgbGF5b3V0IHRlc3RjYXNlIGFkZGVkIGZvciB2ZXJpZnlp
bmcgdGhhdCB0aGUgcXVlcnlTZWxlY3RvckFsbCgpIEFQSSByZXR1cm5zIHplcm8KKyAgICAgICAg
d2hlbiBxdWVyeWluZyBmb3IgcHNldWRvLWVsZW1lbnRzIHNlbGVjdG9yczsgYXMgcGVyIHRoZSBz
cGVjaWZpY2F0aW9uLgorCiAyMDEyLTA0LTMwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1pZ3JhdGUgYnJlYWtwb2ludCBt
YW5hZ2VyIHRvIGxpdmUgbG9jYXRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1wc2V1ZG8tZWxlbWVudHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9yQWxs
LXdpdGgtcHNldWRvLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1l
bnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGhlIHRlc3Qg
dmVyaWZpZXMgdGhhdCB0aGUgcXVlcnlTZWxlY3RvckFsbCgpIEFQSSBkb2VzIG5vdCByZXR1cm4g
YW55IG1hdGNoZWQgZWxlbWVudHMgd2hlbiBxdWVyeWluZyBmb3IgcHNldWRvLWVsZW1lbnQgc2Vs
ZWN0b3JzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCJkaXY6OmFmdGVyIikubGVuZ3RoIGlzIDAKK1BBU1MgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgiaHRtbDo6YmVmb3JlIikubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVGVzdCBmb3IgQnVnemlsbGEg
QnVnIDgzNDQ2OiBCcm9rZW4gaGFuZGxpbmcgZm9yIHBzZXVkby1lbGVtZW50cyBpbiBTZWxlY3Rv
cnMgQVBJLgorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNlbGVj
dG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3F1ZXJ5U2VsZWN0b3JBbGwtd2l0aC1wc2V1ZG8tZWxlbWVudHMu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9xdWVyeVNl
bGVjdG9yQWxsLXdpdGgtcHNldWRvLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZv
ciBCdWd6aWxsYSBCdWcgODM0NDYgLSBCcm9rZW4gaGFuZGxpbmcgZm9yIHBzZXVkby1lbGVtZW50
cyBpbiBTZWxlY3RvcnMgQVBJIDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkg
eworZGVzY3JpcHRpb24oIlRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHF1ZXJ5U2VsZWN0b3JB
bGwoKSBBUEkgZG9lcyBub3QgcmV0dXJuIGFueSBtYXRjaGVkIGVsZW1lbnRzIHdoZW4gcXVlcnlp
bmcgZm9yIHBzZXVkby1lbGVtZW50IHNlbGVjdG9ycy4iKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdjo6YWZ0ZXIiKS5sZW5ndGgnLCAnMCcpOworc2hvdWxkQmUo
J2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImh0bWw6OmJlZm9yZSIpLmxlbmd0aCcsICcwJyk7
CisKK2lzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9Cis8L3NjcmlwdD4KKworPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KK2RpdjphZnRlciB7CisgICAgY29udGVudDoiIjsKK30KKzwvc3R5bGU+CisK
KzwvaGVhZD4KKzxib2R5IG9uTG9hZD0idGVzdCgpIj4KKzxwPlRlc3QgZm9yIEJ1Z3ppbGxhIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQ0NiI+QnVn
IDgzNDQ2PC9hPjogQnJva2VuIGhhbmRsaW5nIGZvciBwc2V1ZG8tZWxlbWVudHMgaW4gU2VsZWN0
b3JzIEFQSS48L3A+Cis8ZGl2PiA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>