<?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>97246</bug_id>
          
          <creation_ts>2012-09-20 12:04:25 -0700</creation_ts>
          <short_desc>AX: Chromium doesn&apos;t pass accessibility text range and line number tests</short_desc>
          <delta_ts>2012-09-25 10:46:46 -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>Accessibility</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="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>abarth</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>724737</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-20 12:04:25 -0700</bug_when>
    <thetext>These four tests are skipped by chromium currently, we should finish the implementation and make these tests pass:

BUGCR10322 SKIP : accessibility/textarea-insertion-point-line-number.html = TEXT
BUGCR10322 SKIP : accessibility/textarea-line-for-index.html = TEXT
BUGCR10322 SKIP : accessibility/textarea-selected-text-range.html = TEXT
BUGCR10322 SKIP : accessibility/textbox-role-reports-selection.html = TEXT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724823</commentid>
    <comment_count>1</comment_count>
      <attachid>164974</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-20 13:42:26 -0700</bug_when>
    <thetext>Created attachment 164974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725572</commentid>
    <comment_count>2</comment_count>
      <attachid>165146</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 09:33:46 -0700</bug_when>
    <thetext>Created attachment 165146
Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725573</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 09:36:53 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725704</commentid>
    <comment_count>4</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 12:26:24 -0700</bug_when>
    <thetext>Chris, this should be ready for review when you have a chance - thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725719</commentid>
    <comment_count>5</comment_count>
      <attachid>165146</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-21 12:41:44 -0700</bug_when>
    <thetext>Comment on attachment 165146
Rebase

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Adds a method to get all line breaks at once, so retrieving all
&gt; +        line breaks isn&apos;t an O(n^2) operation for Chromium.

Is it O(N^2) for other platforms? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725724</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 12:53:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 165146 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165146&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Adds a method to get all line breaks at once, so retrieving all
&gt; &gt; +        line breaks isn&apos;t an O(n^2) operation for Chromium.
&gt; 
&gt; Is it O(N^2) for other platforms? :)

Good question.

Short answer: no, this optimization is only needed for Chromium.

Longer answer:

In the Mac port of WebKit, with VoiceOver, the line break functions are called as needed when a user is interacting with something like a textarea. Each call to get the line number is O(N) in the number of lines, but there are only a constant number of such calls per character typed. The GTK port is the same.

In Chromium, we cache the information about the line breaks in the browser process so that screen reader queries about line breaks can be satisfied from the cache without waiting on an IPC to the renderer - so we have to pay the penalty of computing all of the line breaks each time the textbox is modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727714</commentid>
    <comment_count>7</comment_count>
      <attachid>165146</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-25 09:28:49 -0700</bug_when>
    <thetext>Comment on attachment 165146
Rebase

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

mostly minor nits. i think this looks ok once those are addressed

&gt; Source/WebCore/accessibility/AccessibilityObject.h:637
&gt; +    virtual void allLineBreaks(Vector&lt;int&gt;&amp;) const { }

i think &quot;all&quot; is implicit in the name. Just naming it &quot;lineBreaks&quot; feels like it&apos;s enough

&gt; Source/WebKit/chromium/src/WebAccessibilityObject.cpp:770
&gt; +    for (size_t i = 0; i&lt; lineBreaksVector.size(); i++)

i would move .size() call out of for loop so it doesn&apos;t have to be called each iteration

&gt; Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:647
&gt; +    while (line &lt; static_cast&lt;int&gt;(lineBreaks.size()) &amp;&amp; lineBreaks[line] &lt;= index)

move .size() call out of loop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727762</commentid>
    <comment_count>8</comment_count>
      <attachid>165637</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-25 10:16:35 -0700</bug_when>
    <thetext>Created attachment 165637
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727783</commentid>
    <comment_count>9</comment_count>
      <attachid>165637</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 10:46:42 -0700</bug_when>
    <thetext>Comment on attachment 165637
Patch for landing

Clearing flags on attachment: 165637

Committed r129527: &lt;http://trac.webkit.org/changeset/129527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727784</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 10:46:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164974</attachid>
            <date>2012-09-20 13:42:26 -0700</date>
            <delta_ts>2012-09-21 09:33:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97246-20120920134151.patch</filename>
            <type>text/plain</type>
            <size>16516</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM4NGRkZGVkNWIzMDg4
NjgzZjE0MjEwYTcyNzQzNzE5ODU2NTdlZi4uMjI0NzkxMjA1NmJhMWU5MjE0ZGJmOGZhZGIwMzRi
NzI4ZmZjY2MxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTIwICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1
bSBkb2Vzbid0IHBhc3MgYWNjZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0
ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcy
NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRz
IGEgbWV0aG9kIHRvIGdldCBhbGwgbGluZSBicmVha3MgYXQgb25jZSwgc28gcmV0cmlldmluZyBh
bGwKKyAgICAgICAgbGluZSBicmVha3MgaXNuJ3QgYW4gTyhuXjIpIG9wZXJhdGlvbiBmb3IgQ2hy
b21pdW0uCisKKyAgICAgICAgRW5hYmxlcyBmb3VyIGV4aXN0aW5nIHRlc3RzIHRvIHBhc3Mgb24g
Q2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlv
bi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkv
dGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3Np
YmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFsbExpbmVCcmVha3MpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbGxMaW5lQnJlYWtzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisKIDIwMTItMDktMTggIEJvIExp
dSAgPGJvbGl1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZlcnQgMTI4NzgwLCAxMjg2NzYs
IDEyODY0NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0ZWI0YTJjMmJmNDBjMGIzOTBl
ZDMxMzIxYzBjMmQyMWJkNjliNzM0Li4wYmQ4NWJmYjJhMjI4NTI5MmFhNzQ4MTVhM2EzZDMzNDQ5
ZTM1NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTA5LTIwICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAg
IEFYOiBDaHJvbWl1bSBkb2Vzbid0IHBhc3MgYWNjZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBs
aW5lIG51bWJlciB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTcyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgaW1wcm92ZWQgaW1wbGVtZW50YXRpb24gb2YgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bGluZUJyZWFrcworICAgICAgICBhbmQgaW1wbGVtZW50IG1ldGhvZHMgdG8gZ2V0
IHRoZSBsaW5lIG51bWJlciBvZiB0aGUgc2VsZWN0aW9uIGFuZAorICAgICAgICB0byBzZXQgdGhl
IHRleHQgcmFuZ2UuCisKKyAgICAgICAgRW5hYmxlcyBmb3VyIGV4aXN0aW5nIHRlc3RzIHRvIHBh
c3Mgb24gQ2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWlu
c2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmls
aXR5L3RleHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2li
aWxpdHkvdGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1sCisgICAgICAgICAgICAgICBh
Y2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVjdGlvbi5odG1sCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCk6CisgICAgICAgICogc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25FbmRM
aW5lTnVtYmVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUJyZWFrcyk6CisKIDIwMTIt
MDktMTggIElhaW4gTWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CiAKICAgICAgICAgW0Nocm9t
aXVtXSBNZXJnZSBtb3ZlU2VsZWN0aW9uU3RhcnQsIG1vdmVTZWxlY3Rpb25FbmQsIGFuZCBtb3Zl
Q2FyZXQgaW50byBzZWxlY3RSYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA1NjRkZDMzYjNhM2M4MzRjYzkwMDFjZTQ2
N2U0MTE3NzZmZGQ2YjY5Li5kN2NkZjI3NTlhYzQxMGEzYzA3NTkyMDY1YjRmODU1YTFjNDI0Zjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaApAQCAtNjM0LDYgKzYzNCw3IEBAIHB1YmxpYzoKICAgICBQbGFpblRleHRSYW5nZSBw
bGFpblRleHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJikgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBhbGxMaW5lQnJl
YWtzKFZlY3RvcjxpbnQ+JikgY29uc3QgeyB9CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBk
b0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgp
OyB9CiAgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4
KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCA3MDRjYjRiOTJjNzM4YzQ2MzFhMjY3YzlmNDc5NDk5MWU5NWY1MjkwLi4w
MTljMGM2ZTk1MjY1NTQ1OGM0ODAyYjQ2M2U2MDliMDRhOTY4YjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKQEAgLTIwMjEsNiArMjAyMSwyMSBAQCBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICByZXR1
cm4gLTE7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWxsTGluZUJyZWFr
cyhWZWN0b3I8aW50PiYgbGluZUJyZWFrcykgY29uc3QKK3sKKyAgICBpZiAoIWlzVGV4dENvbnRy
b2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Mg
PSB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCgwKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRW
aXNpYmxlUG9zID0gdmlzaWJsZVBvczsKKyAgICB2aXNpYmxlUG9zID0gbmV4dExpbmVQb3NpdGlv
bih2aXNpYmxlUG9zLCAwKTsKKyAgICB3aGlsZSAoIXZpc2libGVQb3MuaXNOdWxsKCkgJiYgdmlz
aWJsZVBvcyAhPSBzYXZlZFZpc2libGVQb3MpIHsKKyAgICAgICAgbGluZUJyZWFrcy5hcHBlbmQo
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcykpOworICAgICAgICBzYXZlZFZpc2li
bGVQb3MgPSB2aXNpYmxlUG9zOworICAgICAgICB2aXNpYmxlUG9zID0gbmV4dExpbmVQb3NpdGlv
bih2aXNpYmxlUG9zLCAwKTsKKyAgICB9Cit9CisKIC8vIEdpdmVuIGEgbGluZSBudW1iZXIsIHRo
ZSByYW5nZSBvZiBjaGFyYWN0ZXJzIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFj
Y2Vzc2liaWxpdHkKIC8vIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBsaW5lIG51bWJlci4KIFBs
YWluVGV4dFJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhSYW5nZUZvckxpbmUo
dW5zaWduZWQgbGluZU51bWJlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMDIyZDYwYjQ1
ZWFkYWEyNzNlY2Q1NTczY2IyMmVjNWZjMWU5NGZkMS4uMTg1MzU3Y2I0OTgzMzk2ZTMyZTJjYmYz
OGY2YWY2MmM5YTlkNDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTE5OCw2ICsxOTgsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5k
ZXgoaW50KSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBhbGxMaW5l
QnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Q7CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBk
b0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdDsKICAgICB2aXJ0dWFsIFBsYWluVGV4dFJh
bmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaApp
bmRleCAzYTMyYTk1ZWVmYmRmYjljMTBhZTM5MjhlZTY5NDIyNTQxYTE3NzA4Li5jNDA0ZDNhZWVj
NzQwMDg1NGFmMzJmNGUyMDk3MmQzMGFhZmU3NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xNDAsMTEg
KzE0MCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgaGllcmFyY2hpY2FsTGV2
ZWwoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgaGl0
VGVzdChjb25zdCBXZWJQb2ludCYpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGtleWJvYXJkU2hvcnRjdXQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgcGVyZm9y
bURlZmF1bHRBY3Rpb24oKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzZWxlY3Rpb25F
bmRMaW5lTnVtYmVyKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzZWxlY3Rp
b25TdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGb2N1c2VkKGJvb2wp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnRMaW5lTnVt
YmVyKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3RyaW5nVmFsdWUoKSBj
b25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIFdF
QktJVF9FWFBPUlQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCB0aXRsZVVJRWxlbWVudCgpIGNvbnN0
OwpAQCAtMTYzLDYgKzE2MywxMSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgbGlu
ZUJyZWFrcyhXZWJWZWN0b3I8aW50PiYpIGNvbnN0OwogCisgICAgLy8gQWN0aW9ucworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIGNvbnN0OworICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBwZXJmb3JtRGVmYXVsdEFjdGlvbigpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShpbnQgc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rp
b25FbmQpIGNvbnN0OworCiAgICAgLy8gRm9yIGEgdGFibGUKICAgICBXRUJLSVRfRVhQT1JUIHVu
c2lnbmVkIGNvbHVtbkNvdW50KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBy
b3dDb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBmNTU5NzE1ZDliMDA5MGE5YjcwNjUzNjU3
NjA2ZDNkZjBhMTE0MzBiLi42MmNkZWU5ZTk5NzgyMzczYjM4MzQwNGY3ZDFhY2JkOWVmMWNjMmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtNTgwLDEyICs1ODAsNDQgQEAgdW5zaWduZWQgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUt
PnNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7CiB9CiAKK3Vuc2lnbmVkIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNlbGVjdGlvbkVuZExpbmVOdW1iZXIoKSBjb25zdAoreworICAgIGlmIChpc0Rl
dGFjaGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uID0gbV9wcml2YXRlLT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChzZWxlY3Rpb25FbmQoKSk7
CisgICAgaW50IGxpbmVOdW1iZXIgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3NpdGlv
bik7CisgICAgaWYgKGxpbmVOdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbGluZU51bWJlcjsKK30KKwordW5zaWduZWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Vs
ZWN0aW9uU3RhcnRMaW5lTnVtYmVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNEZXRhY2hlZCgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IG1fcHJp
dmF0ZS0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoc2VsZWN0aW9uU3RhcnQoKSk7CisgICAgaW50
IGxpbmVOdW1iZXIgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3NpdGlvbik7CisgICAg
aWYgKGxpbmVOdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGluZU51
bWJlcjsKK30KKwogdm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wg
b24pIGNvbnN0CiB7CiAgICAgaWYgKCFpc0RldGFjaGVkKCkpCiAgICAgICAgIG1fcHJpdmF0ZS0+
c2V0Rm9jdXNlZChvbik7CiB9CiAKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0U2Vs
ZWN0ZWRUZXh0UmFuZ2UoaW50IHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uRW5kKSBjb25z
dAoreworICAgIGlmIChpc0RldGFjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJp
dmF0ZS0+c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoUGxhaW5UZXh0UmFuZ2Uoc2VsZWN0aW9uU3RhcnQs
IHNlbGVjdGlvbkVuZCAtIHNlbGVjdGlvblN0YXJ0KSk7Cit9CisKIFdlYlN0cmluZyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRGV0YWNo
ZWQoKSkKQEAgLTczMSwyMSArNzYzLDE0IEBAIGJvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
bGluZUJyZWFrcyhXZWJWZWN0b3I8aW50PiYgcmVzdWx0KSBjb25zdAogICAgIGlmIChpc0RldGFj
aGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCB0ZXh0TGVuZ3RoID0gbV9w
cml2YXRlLT50ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCF0ZXh0TGVuZ3RoKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgVmVjdG9yPGludD4gbGluZUJyZWFrc1ZlY3RvcjsKKyAgICBtX3ByaXZh
dGUtPmFsbExpbmVCcmVha3MobGluZUJyZWFrc1ZlY3Rvcik7CiAKLSAgICBWaXNpYmxlUG9zaXRp
b24gcG9zID0gbV9wcml2YXRlLT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh0ZXh0TGVuZ3RoKTsK
LSAgICBpbnQgbGluZUJyZWFrQ291bnQgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3Mp
OwotICAgIGlmIChsaW5lQnJlYWtDb3VudCA8PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgV2ViVmVjdG9yPGludD4gbGluZUJyZWFrc1dlYlZlY3RvcihsaW5lQnJlYWtzVmVjdG9yLnNp
emUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGk8IGxpbmVCcmVha3NWZWN0b3Iuc2l6ZSgp
OyBpKyspCisgICAgICAgIGxpbmVCcmVha3NXZWJWZWN0b3JbaV0gPSBsaW5lQnJlYWtzVmVjdG9y
W2ldOworICAgIHJlc3VsdC5zd2FwKGxpbmVCcmVha3NXZWJWZWN0b3IpOwogCi0gICAgV2ViVmVj
dG9yPGludD4gbGluZUJyZWFrcyhzdGF0aWNfY2FzdDxzaXplX3Q+KGxpbmVCcmVha0NvdW50KSk7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5lQnJlYWtDb3VudDsgaSsrKSB7Ci0gICAgICAg
IFBsYWluVGV4dFJhbmdlIHJhbmdlID0gbV9wcml2YXRlLT5kb0FYUmFuZ2VGb3JMaW5lKGkpOwot
ICAgICAgICBsaW5lQnJlYWtzW2ldID0gcmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGg7Ci0gICAg
fQotICAgIHJlc3VsdC5zd2FwKGxpbmVCcmVha3MpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGUwMTQx
Y2EzNmNjZTU0YTVhYTliODJlZDA1NDE2NGE5YjQ4MDc0My4uNTZkNDI2NGE4Y2IyYjFkNGRmNDJk
YzI2ODAxNzdmZDFiNTEwNWQ2OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTIwICBEb21pbmljIE1henpv
bmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1bSBkb2Vzbid0
IHBhc3MgYWNjZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyNDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgY2hy
b21pdW0gaW1wbGVtZW50YXRpb24gb2Ygc29tZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50CisgICAg
ICAgIG1ldGhvZHMgbmVlZGVkIGJ5IGFjY2Vzc2liaWxpdHkgdGVzdHMuCisKKyAgICAgICAgRW5h
YmxlcyBmb3VyIGV4aXN0aW5nIHRlc3RzIHRvIHBhc3Mgb24gQ2hyb21pdW06CisgICAgICAgIFRl
c3RzOiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5o
dG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWxpbmUtZm9yLWluZGV4
Lmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtc2VsZWN0ZWQtdGV4
dC1yYW5nZS5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1y
ZXBvcnRzLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHA6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXJHZXR0ZXJD
YWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRS
YW5nZUdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmVGb3JJbmRleENhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
dFNlbGVjdGVkVGV4dFJhbmdlQ2FsbGJhY2spOgorCiAyMDEyLTA5LTE4ICBTemlsYXJkIExlZGFu
ICA8c3psZWRhbkBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgRVdTIHNob3VsZG4ndCBzbGVl
cCBpZiB0aGVyZSBhcmUgbmV3IHBhdGNoZXMgaW4gaXRzIHF1ZXVlCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRDaHJvbWl1bS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKaW5kZXggMDgwMDIwOTRjYmYzODM0
Zjk2MWY1OTcyNjhiOWY0MTA0OWUyNjg4NS4uYmJkMjM1Mzc4ZTQ2NzFlMTQwYWJjYTFkNzdmYmU2
MWJlOGRkZWRmNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENo
cm9taXVtLmNwcApAQCAtNDk0LDE5ICs0OTQsMjMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjaGlsZHJlbkNvdW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQogCiB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlckdldHRl
ckNhbGxiYWNrKENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICBXZWJWZWN0b3I8aW50PiBsaW5l
QnJlYWtzOwotICAgIGFjY2Vzc2liaWxpdHlPYmplY3QoKS5saW5lQnJlYWtzKGxpbmVCcmVha3Mp
OwotICAgIGludCBjdXJzb3IgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2VsZWN0aW9uRW5kKCk7
Ci0gICAgaW50IGxpbmUgPSAwOwotICAgIHdoaWxlIChsaW5lIDwgc3RhdGljX2Nhc3Q8aW50Pihs
aW5lQnJlYWtzLnNpemUoKSkgJiYgbGluZUJyZWFrc1tsaW5lXSA8PSBjdXJzb3IpCi0gICAgICAg
IGxpbmUrKzsKLSAgICByZXN1bHQtPnNldChsaW5lKTsKKyAgICBpZiAoIWFjY2Vzc2liaWxpdHlP
YmplY3QoKS5pc0ZvY3VzZWQoKSkgeworICAgICAgICByZXN1bHQtPnNldCgtMSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbGluZU51bWJlciA9IGFjY2Vzc2liaWxpdHlPYmpl
Y3QoKS5zZWxlY3Rpb25FbmRMaW5lTnVtYmVyKCk7CisgICAgcmVzdWx0LT5zZXQobGluZU51bWJl
cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2VH
ZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgotICAgIHJlc3VsdC0+c2V0KHN0ZDo6c3RyaW5nKCkpOworICAgIHVuc2lnbmVk
IHNlbGVjdGlvblN0YXJ0ID0gYWNjZXNzaWJpbGl0eU9iamVjdCgpLnNlbGVjdGlvblN0YXJ0KCk7
CisgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kID0gYWNjZXNzaWJpbGl0eU9iamVjdCgpLnNlbGVj
dGlvbkVuZCgpOworICAgIGNoYXIgYnVmZmVyWzEwMF07CisgICAgc25wcmludGYoYnVmZmVyLCBz
aXplb2YoYnVmZmVyKSwgInslZCwgJWR9Iiwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCAt
IHNlbGVjdGlvblN0YXJ0KTsKKworICAgIHJlc3VsdC0+c2V0KHN0ZDo6c3RyaW5nKGJ1ZmZlcikp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZEdldHRlckNhbGxi
YWNrKENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTYyMiw5ICs2MjYsMjEgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0cml6ZWRBdHRyaWJ1dGVOYW1lc0NhbGxiYWNrKGNvbnN0
IENwcEFyZ3VtZW4KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXhDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVG
b3JJbmRleENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKCFhcmd1bWVu
dHMuc2l6ZSgpIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSkgeworICAgICAgICByZXN1bHQt
PnNldE51bGwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBpbmRleCA9IGFy
Z3VtZW50c1swXS50b0ludDMyKCk7CisKKyAgICBXZWJWZWN0b3I8aW50PiBsaW5lQnJlYWtzOwor
ICAgIGFjY2Vzc2liaWxpdHlPYmplY3QoKS5saW5lQnJlYWtzKGxpbmVCcmVha3MpOworICAgIGlu
dCBsaW5lID0gMDsKKyAgICB3aGlsZSAobGluZSA8IHN0YXRpY19jYXN0PGludD4obGluZUJyZWFr
cy5zaXplKCkpICYmIGxpbmVCcmVha3NbbGluZV0gPD0gaW5kZXgpCisgICAgICAgIGxpbmUrKzsK
KyAgICByZXN1bHQtPnNldChsaW5lKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpib3VuZHNGb3JSYW5nZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqIHJlc3VsdCkKQEAgLTcxMyw5ICs3MjksMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0aXRsZVVJRWxlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFYK
ICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZXRTZWxlY3RlZFRleHRSYW5nZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqIHJlc3VsdCkKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0
ZWRUZXh0UmFuZ2VDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgIT0gMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50
c1sxXS5pc051bWJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgc2VsZWN0aW9uU3Rh
cnQgPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOworICAgIGludCBzZWxlY3Rpb25FbmQgPSBzZWxl
Y3Rpb25TdGFydCArIGFyZ3VtZW50c1sxXS50b0ludDMyKCk7CisgICAgYWNjZXNzaWJpbGl0eU9i
amVjdCgpLnNldFNlbGVjdGVkVGV4dFJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZVZhbHVlQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFl
YWU4Yzg0YmUxNDZmZTEwMjUyYWE0ZTJmNjdjNDJhZGYwOWE4NGUuLjRhZTI3YWE1YmMyZTVjNDYx
ZjQyYjM4MzE5YzFkNzViZjEzZGMwZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOS0y
MCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBWDog
Q2hyb21pdW0gZG9lc24ndCBwYXNzIGFjY2Vzc2liaWxpdHkgdGV4dCByYW5nZSBhbmQgbGluZSBu
dW1iZXIgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRW5hYmxlcyBmb3VyIHRlc3RzIG9uIGNocm9taXVtOgorICAgICAgICBUZXN0czogYWNjZXNz
aWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbAorICAgICAg
ICAgICAgICAgYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1saW5lLWZvci1pbmRleC5odG1sCisgICAg
ICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLXNlbGVjdGVkLXRleHQtcmFuZ2UuaHRt
bAorICAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1zZWxl
Y3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAxMi0wOS0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAog
ICAgICAgICBMYXlvdXQgVGVzdCBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWNoYW5n
ZS1leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLXdoaWxlLWxvYWRpbmcuc3ZnIGlzIGZhaWxpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGQ3NGUzMzNkZTUxMGIyNjk0NDcxMjg1MWQ0MThhYWI3OGZmZTVkMzUuLjA0NTM2MDVlNmU2YWVj
ZTA4NjI0MmM4NDQzM2YxMDhjNDE5MzFhYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM3OSwxMCArMTM3OSw2IEBAIEJVR0NSMTAz
MjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvdGFibGUtb25lLWNlbGwuaHRtbCA9IFRFWFQKIEJVR0NS
MTAzMjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvdGFibGUtc2VjdGlvbnMuaHRtbCA9IFRFWFQKIEJV
R0NSMTAzMjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUuaHRtbCA9
IFRFWFQKIEJVR0NSMTAzMjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1ydWxlcy5o
dG1sID0gVEVYVAotQlVHQ1IxMDMyMiBTS0lQIDogYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNl
cnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbCA9IFRFWFQKLUJVR0NSMTAzMjIgU0tJUCA6IGFj
Y2Vzc2liaWxpdHkvdGV4dGFyZWEtbGluZS1mb3ItaW5kZXguaHRtbCA9IFRFWFQKLUJVR0NSMTAz
MjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1s
ID0gVEVYVAotQlVHQ1IxMDMyMiBTS0lQIDogYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVw
b3J0cy1zZWxlY3Rpb24uaHRtbCA9IFRFWFQKIEJVR0NSMTAzMjIgU0tJUCA6IGFjY2Vzc2liaWxp
dHkvdGgtYXMtdGl0bGUtdWkuaHRtbCA9IFRFWFQKIEJVR0NSMTAzMjIgU0tJUCA6IGFjY2Vzc2li
aWxpdHkvdHJhbnNmb3JtZWQtZWxlbWVudC5odG1sID0gVEVYVAogQlVHQ1IxMDMyMiBTS0lQIDog
YWNjZXNzaWJpbGl0eS92aXNpYmxlLWVsZW1lbnRzLmh0bWwgPSBURVhUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165146</attachid>
            <date>2012-09-21 09:33:46 -0700</date>
            <delta_ts>2012-09-25 10:16:31 -0700</delta_ts>
            <desc>Rebase</desc>
            <filename>bug-97246-20120921093310.patch</filename>
            <type>text/plain</type>
            <size>16479</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJhZDQ3NDYwNjlmMWUx
OTg4ZTI5ZjEwMGY1YjU3ZTJkYzNmNjg2My4uNTVjN2Q3MjkwNDlkNTdmNjMxYTQyNzRiNWViYTU1
NmU0MGZjNWQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTIwICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1
bSBkb2Vzbid0IHBhc3MgYWNjZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0
ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcy
NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRz
IGEgbWV0aG9kIHRvIGdldCBhbGwgbGluZSBicmVha3MgYXQgb25jZSwgc28gcmV0cmlldmluZyBh
bGwKKyAgICAgICAgbGluZSBicmVha3MgaXNuJ3QgYW4gTyhuXjIpIG9wZXJhdGlvbiBmb3IgQ2hy
b21pdW0uCisKKyAgICAgICAgRW5hYmxlcyBmb3VyIGV4aXN0aW5nIHRlc3RzIHRvIHBhc3Mgb24g
Q2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlv
bi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkv
dGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3Np
YmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFsbExpbmVCcmVha3MpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbGxMaW5lQnJlYWtzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisKIDIwMTItMDktMjEgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgZnVu
Y3Rpb25zIG9mIExvY2FsaXplZERhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
Y2JkYjZlMDdlYTg3YTdkM2E0NTZkZjBkM2U2YjI1YTgzNmY3ZjcxLi4yNDAzMmI2ZjgxMWJmYjBj
ZmQyZjNkOWMzMWVjYzdjNWEyMmNlNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDEyLTA5LTIwICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29n
bGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1bSBkb2Vzbid0IHBhc3MgYWNjZXNzaWJpbGl0
eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaW1wcm92ZWQgaW1wbGVtZW50YXRpb24gb2Yg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGluZUJyZWFrcworICAgICAgICBhbmQgaW1wbGVt
ZW50IG1ldGhvZHMgdG8gZ2V0IHRoZSBsaW5lIG51bWJlciBvZiB0aGUgc2VsZWN0aW9uIGFuZAor
ICAgICAgICB0byBzZXQgdGhlIHRleHQgcmFuZ2UuCisKKyAgICAgICAgRW5hYmxlcyBmb3VyIGV4
aXN0aW5nIHRlc3RzIHRvIHBhc3Mgb24gQ2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3Np
YmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAg
ICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAg
ICAgICAgICAgIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1s
CisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVj
dGlvbi5odG1sCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oOgor
ICAgICAgICAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgICogc3JjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZWxlY3Rpb25FbmRMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblN0YXJ0TGluZU51bWJl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVk
VGV4dFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlu
ZUJyZWFrcyk6CisKIDIwMTItMDktMjEgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIGludG8gRGF0ZVRpbWVDaG9v
c2VyUGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAppbmRleCA1NjRkZDMzYjNhM2M4MzRjYzkwMDFjZTQ2N2U0MTE3NzZm
ZGQ2YjY5Li5kN2NkZjI3NTlhYzQxMGEzYzA3NTkyMDY1YjRmODU1YTFjNDI0ZjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApA
QCAtNjM0LDYgKzYzNCw3IEBAIHB1YmxpYzoKICAgICBQbGFpblRleHRSYW5nZSBwbGFpblRleHRS
YW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikg
Y29uc3Q7CiAgICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29u
c3QgeyByZXR1cm4gLTE7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBhbGxMaW5lQnJlYWtzKFZlY3Rv
cjxpbnQ+JikgY29uc3QgeyB9CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VG
b3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CiAgICAg
UGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKICAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVk
KSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApp
bmRleCA3MDRjYjRiOTJjNzM4YzQ2MzFhMjY3YzlmNDc5NDk5MWU5NWY1MjkwLi4wMTljMGM2ZTk1
MjY1NTQ1OGM0ODAyYjQ2M2U2MDliMDRhOTY4YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAg
LTIwMjEsNiArMjAyMSwyMSBAQCBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXgo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICByZXR1cm4gLTE7CiB9
CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWxsTGluZUJyZWFrcyhWZWN0b3I8
aW50PiYgbGluZUJyZWFrcykgY29uc3QKK3sKKyAgICBpZiAoIWlzVGV4dENvbnRyb2woKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxl
UG9zaXRpb25Gb3JJbmRleCgwKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRWaXNpYmxlUG9z
ID0gdmlzaWJsZVBvczsKKyAgICB2aXNpYmxlUG9zID0gbmV4dExpbmVQb3NpdGlvbih2aXNpYmxl
UG9zLCAwKTsKKyAgICB3aGlsZSAoIXZpc2libGVQb3MuaXNOdWxsKCkgJiYgdmlzaWJsZVBvcyAh
PSBzYXZlZFZpc2libGVQb3MpIHsKKyAgICAgICAgbGluZUJyZWFrcy5hcHBlbmQoaW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcykpOworICAgICAgICBzYXZlZFZpc2libGVQb3MgPSB2
aXNpYmxlUG9zOworICAgICAgICB2aXNpYmxlUG9zID0gbmV4dExpbmVQb3NpdGlvbih2aXNpYmxl
UG9zLCAwKTsKKyAgICB9Cit9CisKIC8vIEdpdmVuIGEgbGluZSBudW1iZXIsIHRoZSByYW5nZSBv
ZiBjaGFyYWN0ZXJzIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY2Vzc2liaWxp
dHkKIC8vIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBsaW5lIG51bWJlci4KIFBsYWluVGV4dFJh
bmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQg
bGluZU51bWJlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMDIyZDYwYjQ1ZWFkYWEyNzNl
Y2Q1NTczY2IyMmVjNWZjMWU5NGZkMS4uMTg1MzU3Y2I0OTgzMzk2ZTMyZTJjYmYzOGY2YWY2MmM5
YTlkNDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTE5OCw2ICsxOTgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBj
b25zdDsKICAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBhbGxMaW5lQnJlYWtzKFZl
Y3RvcjxpbnQ+JikgY29uc3Q7CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VG
b3JMaW5lKHVuc2lnbmVkKSBjb25zdDsKICAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhS
YW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAzYTMy
YTk1ZWVmYmRmYjljMTBhZTM5MjhlZTY5NDIyNTQxYTE3NzA4Li5jNDA0ZDNhZWVjNzQwMDg1NGFm
MzJmNGUyMDk3MmQzMGFhZmU3NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xNDAsMTEgKzE0MCwxMSBA
QCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25z
dDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgaGl0VGVzdChjb25z
dCBXZWJQb2ludCYpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGtleWJvYXJk
U2hvcnRjdXQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgcGVyZm9ybURlZmF1bHRB
Y3Rpb24oKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkFjY2Vzc2liaWxpdHlSb2xlIHJv
bGVWYWx1ZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2VsZWN0aW9uRW5k
KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzZWxlY3Rpb25FbmRMaW5lTnVt
YmVyKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIGNvbnN0Owor
ICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKCkgY29u
c3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKICAg
ICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBP
UlQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCB0aXRsZVVJRWxlbWVudCgpIGNvbnN0OwpAQCAtMTYz
LDYgKzE2MywxMSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgbGluZUJyZWFrcyhX
ZWJWZWN0b3I8aW50PiYpIGNvbnN0OwogCisgICAgLy8gQWN0aW9ucworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBw
ZXJmb3JtRGVmYXVsdEFjdGlvbigpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRT
ZWxlY3RlZFRleHRSYW5nZShpbnQgc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25FbmQpIGNv
bnN0OworCiAgICAgLy8gRm9yIGEgdGFibGUKICAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVkIGNv
bHVtbkNvdW50KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCByb3dDb3VudCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAppbmRleCBmNTU5NzE1ZDliMDA5MGE5YjcwNjUzNjU3NjA2ZDNkZjBh
MTE0MzBiLi42MmNkZWU5ZTk5NzgyMzczYjM4MzQwNGY3ZDFhY2JkOWVmMWNjMmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcApAQCAtNTgwLDEyICs1ODAsNDQgQEAgdW5zaWduZWQgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dDo6c2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPnNlbGVjdGVk
VGV4dFJhbmdlKCkuc3RhcnQ7CiB9CiAKK3Vuc2lnbmVkIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNlbGVjdGlvbkVuZExpbmVOdW1iZXIoKSBjb25zdAoreworICAgIGlmIChpc0RldGFjaGVkKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gbV9w
cml2YXRlLT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChzZWxlY3Rpb25FbmQoKSk7CisgICAgaW50
IGxpbmVOdW1iZXIgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3NpdGlvbik7CisgICAg
aWYgKGxpbmVOdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGluZU51
bWJlcjsKK30KKwordW5zaWduZWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uU3Rh
cnRMaW5lTnVtYmVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNEZXRhY2hlZCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IG1fcHJpdmF0ZS0+dmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgoc2VsZWN0aW9uU3RhcnQoKSk7CisgICAgaW50IGxpbmVOdW1i
ZXIgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3NpdGlvbik7CisgICAgaWYgKGxpbmVO
dW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGluZU51bWJlcjsKK30K
Kwogdm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wgb24pIGNvbnN0
CiB7CiAgICAgaWYgKCFpc0RldGFjaGVkKCkpCiAgICAgICAgIG1fcHJpdmF0ZS0+c2V0Rm9jdXNl
ZChvbik7CiB9CiAKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0
UmFuZ2UoaW50IHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uRW5kKSBjb25zdAoreworICAg
IGlmIChpc0RldGFjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJpdmF0ZS0+c2V0
U2VsZWN0ZWRUZXh0UmFuZ2UoUGxhaW5UZXh0UmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlv
bkVuZCAtIHNlbGVjdGlvblN0YXJ0KSk7Cit9CisKIFdlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRGV0YWNoZWQoKSkKQEAg
LTczMSwyMSArNzYzLDE0IEBAIGJvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUJyZWFr
cyhXZWJWZWN0b3I8aW50PiYgcmVzdWx0KSBjb25zdAogICAgIGlmIChpc0RldGFjaGVkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCB0ZXh0TGVuZ3RoID0gbV9wcml2YXRlLT50
ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCF0ZXh0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgVmVjdG9yPGludD4gbGluZUJyZWFrc1ZlY3RvcjsKKyAgICBtX3ByaXZhdGUtPmFsbExp
bmVCcmVha3MobGluZUJyZWFrc1ZlY3Rvcik7CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0g
bV9wcml2YXRlLT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh0ZXh0TGVuZ3RoKTsKLSAgICBpbnQg
bGluZUJyZWFrQ291bnQgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3MpOwotICAgIGlm
IChsaW5lQnJlYWtDb3VudCA8PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgV2ViVmVj
dG9yPGludD4gbGluZUJyZWFrc1dlYlZlY3RvcihsaW5lQnJlYWtzVmVjdG9yLnNpemUoKSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGk8IGxpbmVCcmVha3NWZWN0b3Iuc2l6ZSgpOyBpKyspCisg
ICAgICAgIGxpbmVCcmVha3NXZWJWZWN0b3JbaV0gPSBsaW5lQnJlYWtzVmVjdG9yW2ldOworICAg
IHJlc3VsdC5zd2FwKGxpbmVCcmVha3NXZWJWZWN0b3IpOwogCi0gICAgV2ViVmVjdG9yPGludD4g
bGluZUJyZWFrcyhzdGF0aWNfY2FzdDxzaXplX3Q+KGxpbmVCcmVha0NvdW50KSk7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsaW5lQnJlYWtDb3VudDsgaSsrKSB7Ci0gICAgICAgIFBsYWluVGV4
dFJhbmdlIHJhbmdlID0gbV9wcml2YXRlLT5kb0FYUmFuZ2VGb3JMaW5lKGkpOwotICAgICAgICBs
aW5lQnJlYWtzW2ldID0gcmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGg7Ci0gICAgfQotICAgIHJl
c3VsdC5zd2FwKGxpbmVCcmVha3MpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzc2YTE3NzFlMDk4MjJi
YTg0YWIyZGI2MjZkNDgwNmExOWVlOTIyZC4uNGY5ZGI5MDZiNTlhMmI1NzcxZTIxNmFjYmE5OGI2
MDhlNTVmNGEyMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTIwICBEb21pbmljIE1henpvbmkgIDxkbWF6
em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1bSBkb2Vzbid0IHBhc3MgYWNj
ZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyNDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgY2hyb21pdW0gaW1w
bGVtZW50YXRpb24gb2Ygc29tZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50CisgICAgICAgIG1ldGhv
ZHMgbmVlZGVkIGJ5IGFjY2Vzc2liaWxpdHkgdGVzdHMuCisKKyAgICAgICAgRW5hYmxlcyBmb3Vy
IGV4aXN0aW5nIHRlc3RzIHRvIHBhc3Mgb24gQ2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nl
c3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAg
ICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAg
ICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5o
dG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNl
bGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHA6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXJHZXR0ZXJDYWxsYmFjayk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZUdldHRl
ckNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRl
eENhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVk
VGV4dFJhbmdlQ2FsbGJhY2spOgorCiAyMDEyLTA5LTIxICBTaW1vbiBIYXVzbWFubiAgPHNpbW9u
LmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEJhaWwgb3V0IHdoZW4gdHJ5aW5n
IHRvIGJ1aWxkIFdlYktpdCB3aXRoIFF0ICE9IDUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVt
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudENocm9taXVtLmNwcAppbmRleCBjMDI3OGNkNTc2MDFjYzFhZjcxYmZiY2Rl
ZGVkZDBmMmRjNDRlZmUyLi5hYWI2NWEyZTBhNjZlY2JlODdjYjM0ZWM4MTcxMjRlNDdlMzhlYTdi
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3Bw
CkBAIC00OTUsMTkgKzQ5NSwyMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxk
cmVuQ291bnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiAKIHZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyR2V0dGVyQ2FsbGJhY2so
Q3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIFdlYlZlY3RvcjxpbnQ+IGxpbmVCcmVha3M7Ci0g
ICAgYWNjZXNzaWJpbGl0eU9iamVjdCgpLmxpbmVCcmVha3MobGluZUJyZWFrcyk7Ci0gICAgaW50
IGN1cnNvciA9IGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zZWxlY3Rpb25FbmQoKTsKLSAgICBpbnQg
bGluZSA9IDA7Ci0gICAgd2hpbGUgKGxpbmUgPCBzdGF0aWNfY2FzdDxpbnQ+KGxpbmVCcmVha3Mu
c2l6ZSgpKSAmJiBsaW5lQnJlYWtzW2xpbmVdIDw9IGN1cnNvcikKLSAgICAgICAgbGluZSsrOwot
ICAgIHJlc3VsdC0+c2V0KGxpbmUpOworICAgIGlmICghYWNjZXNzaWJpbGl0eU9iamVjdCgpLmlz
Rm9jdXNlZCgpKSB7CisgICAgICAgIHJlc3VsdC0+c2V0KC0xKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGludCBsaW5lTnVtYmVyID0gYWNjZXNzaWJpbGl0eU9iamVjdCgpLnNlbGVj
dGlvbkVuZExpbmVOdW1iZXIoKTsKKyAgICByZXN1bHQtPnNldChsaW5lTnVtYmVyKTsKIH0KIAog
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZUdldHRlckNhbGxi
YWNrKENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Ci0gICAgcmVzdWx0LT5zZXQoc3RkOjpzdHJpbmcoKSk7CisgICAgdW5zaWduZWQgc2VsZWN0aW9u
U3RhcnQgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2VsZWN0aW9uU3RhcnQoKTsKKyAgICB1bnNp
Z25lZCBzZWxlY3Rpb25FbmQgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2VsZWN0aW9uRW5kKCk7
CisgICAgY2hhciBidWZmZXJbMTAwXTsKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZm
ZXIpLCAieyVkLCAlZH0iLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kIC0gc2VsZWN0aW9u
U3RhcnQpOworCisgICAgcmVzdWx0LT5zZXQoc3RkOjpzdHJpbmcoYnVmZmVyKSk7CiB9CiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkR2V0dGVyQ2FsbGJhY2soQ3BwVmFy
aWFudCogcmVzdWx0KQpAQCAtNjI4LDkgKzYzMiwyMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnBhcmFtZXRyaXplZEF0dHJpYnV0ZU5hbWVzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1l
bgogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmVGb3JJbmRleENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqIHJlc3VsdCkKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4Q2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKIHsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoIWFyZ3VtZW50cy5zaXplKCkg
fHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpKSB7CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGluZGV4ID0gYXJndW1lbnRzWzBd
LnRvSW50MzIoKTsKKworICAgIFdlYlZlY3RvcjxpbnQ+IGxpbmVCcmVha3M7CisgICAgYWNjZXNz
aWJpbGl0eU9iamVjdCgpLmxpbmVCcmVha3MobGluZUJyZWFrcyk7CisgICAgaW50IGxpbmUgPSAw
OworICAgIHdoaWxlIChsaW5lIDwgc3RhdGljX2Nhc3Q8aW50PihsaW5lQnJlYWtzLnNpemUoKSkg
JiYgbGluZUJyZWFrc1tsaW5lXSA8PSBpbmRleCkKKyAgICAgICAgbGluZSsrOworICAgIHJlc3Vs
dC0+c2V0KGxpbmUpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0Zv
clJhbmdlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0
KQpAQCAtNzE5LDkgKzczNSwxNSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxl
VUlFbGVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVgogICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVj
dGVkVGV4dFJhbmdlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCog
cmVzdWx0KQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5n
ZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCZhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUo
KSAhPSAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVt
YmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBzZWxlY3Rpb25TdGFydCA9IGFyZ3Vt
ZW50c1swXS50b0ludDMyKCk7CisgICAgaW50IHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvblN0YXJ0
ICsgYXJndW1lbnRzWzFdLnRvSW50MzIoKTsKKyAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2V0
U2VsZWN0ZWRUZXh0UmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiB9CiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlVmFsdWVDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzNkNWViNGVhYjE4
YzVkZDYwMzQ5MTZhMTA5YjA5MjgxZWIxMzU2NC4uMGYyYTAzNGNkYWEwZDI4OWM4ZmRjYmRmNTJh
ZmEwMzdjZjNiYThmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTIwICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1bSBk
b2Vzbid0IHBhc3MgYWNjZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0ZXN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyNDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGVz
IGZvdXIgdGVzdHMgb24gY2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAgICAgICAgICBh
Y2Nlc3NpYmlsaXR5L3RleHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAgICAgICAgICAg
IGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1sCisgICAgICAg
ICAgICAgICBhY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVjdGlvbi5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEy
LTA5LTIxICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29t
PgogCiAgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gcHJpbnQgZnJhbWUgbG9hZCBk
ZWxlZ2F0ZSBpbmZvcm1hdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggYzU5YTFkMTRlYjBiZjc1NjM3NTVjM2RmNDA1ZTNkMTg1ZmQx
OTRjYS4uZDU5ODkzN2ZlMmI5NDc0M2Y3ZmIxZmM5YWRjNTUwYzZiNTIzZmZhZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzg1LDEw
ICsxMzg1LDYgQEAgY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdGFibGUtb25lLWNlbGwu
aHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdGFibGUtc2VjdGlv
bnMuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0
aC1hcmlhLXJvbGUuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkv
dGFibGUtd2l0aC1ydWxlcy5odG1sIFsgU2tpcCBdCi1jcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJp
bGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbCBbIFNraXAgXQot
Y3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtbGluZS1mb3ItaW5kZXguaHRt
bCBbIFNraXAgXQotY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtc2VsZWN0
ZWQtdGV4dC1yYW5nZS5odG1sIFsgU2tpcCBdCi1jcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0
eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQogY3JidWcuY29t
LzEwMzIyIGFjY2Vzc2liaWxpdHkvdGgtYXMtdGl0bGUtdWkuaHRtbCBbIFNraXAgXQogY3JidWcu
Y29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdHJhbnNmb3JtZWQtZWxlbWVudC5odG1sIFsgU2tpcCBd
CiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS92aXNpYmxlLWVsZW1lbnRzLmh0bWwgWyBT
a2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165637</attachid>
            <date>2012-09-25 10:16:35 -0700</date>
            <delta_ts>2012-09-25 10:46:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97246-20120925101554.patch</filename>
            <type>text/plain</type>
            <size>16546</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBiODBkNDBiMDJjNjFj
ZGFlYTFhZDNjYjdiN2JiNzhmYTVmMzJkMy4uMzRiZmU3OTgwNzE1MWMxMDI4YzNkNzc3NGVlMzQx
Nzc0MmYyMzFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTIwICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1
bSBkb2Vzbid0IHBhc3MgYWNjZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0
ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcy
NDYKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBBZGRz
IGEgbWV0aG9kIHRvIGdldCBhbGwgbGluZSBicmVha3MgYXQgb25jZSwgc28gcmV0cmlldmluZyBh
bGwKKyAgICAgICAgbGluZSBicmVha3MgaXNuJ3QgYW4gTyhuXjIpIG9wZXJhdGlvbiBmb3IgQ2hy
b21pdW0uCisKKyAgICAgICAgRW5hYmxlcyBmb3VyIGV4aXN0aW5nIHRlc3RzIHRvIHBhc3Mgb24g
Q2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlv
bi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkv
dGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3Np
YmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVha3MpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpsaW5lQnJlYWtzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisKIDIwMTItMDktMjEgIEtlbm5ldGggUnVz
c2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFtWOF0gQXJyYXlCdWZmZXIgY29kZSBz
aG91bGQgbm90IHBhc3MgYSBuZWdhdGl2ZSBsZW5ndGggdG8gU2V0SW5kZXhlZFByb3BlcnRpZXNU
b0V4dGVybmFsQXJyYXlEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjhlNzI2
ODRmNGI1OTNmYTZjZGZkMDFhYmIxOWU5ZTY4ZGM4MTBlNC4uNjgyOGJhMjE5MTBhZjgxOGIwYTI3
ZDNiZWYwMzYwODRjZTA5MTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAxMi0wOS0yMCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNv
bT4KKworICAgICAgICBBWDogQ2hyb21pdW0gZG9lc24ndCBwYXNzIGFjY2Vzc2liaWxpdHkgdGV4
dCByYW5nZSBhbmQgbGluZSBudW1iZXIgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RmxlaXphY2guCisKKyAgICAgICAgVXNlIGltcHJvdmVkIGltcGxlbWVudGF0aW9uIG9mIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmVCcmVha3MKKyAgICAgICAgYW5kIGltcGxlbWVudCBt
ZXRob2RzIHRvIGdldCB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHNlbGVjdGlvbiBhbmQKKyAgICAg
ICAgdG8gc2V0IHRoZSB0ZXh0IHJhbmdlLgorCisgICAgICAgIEVuYWJsZXMgZm91ciBleGlzdGlu
ZyB0ZXN0cyB0byBwYXNzIG9uIENocm9taXVtOgorICAgICAgICBUZXN0czogYWNjZXNzaWJpbGl0
eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbAorICAgICAgICAgICAg
ICAgYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1saW5lLWZvci1pbmRleC5odG1sCisgICAgICAgICAg
ICAgICBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLXNlbGVjdGVkLXRleHQtcmFuZ2UuaHRtbAorICAg
ICAgICAgICAgICAgYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1zZWxlY3Rpb24u
aHRtbAorCisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKFdlYkFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
c2VsZWN0aW9uRW5kTGluZU51bWJlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25TdGFydExpbmVOdW1iZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHRS
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVh
a3MpOgorCiAyMDEyLTA5LTI0ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA1NjRkZDMzYjNhM2M4MzRj
YzkwMDFjZTQ2N2U0MTE3NzZmZGQ2YjY5Li5iZTYyMTE2ODEzOTAwN2IwNzlkYjM0YjQxMWU3YzVm
ODAzNDU0NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaApAQCAtNjM0LDYgKzYzNCw3IEBAIHB1YmxpYzoKICAgICBQbGFpblRl
eHRSYW5nZSBwbGFpblRleHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2li
bGVQb3NpdGlvblJhbmdlJikgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBs
aW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3QgeyB9CiAgICAgdmlydHVhbCBQbGFpblRleHRS
YW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRS
YW5nZSgpOyB9CiAgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZv
ckluZGV4KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAppbmRleCA3MDRjYjRiOTJjNzM4YzQ2MzFhMjY3YzlmNDc5NDk5MWU5NWY1
MjkwLi41MzVkZTU3NTM3N2JiZDljOGRmNTQ0NzIyZmFiYjdhNzI3ZDk3OTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKQEAgLTIwMjEsNiArMjAyMSwyMSBAQCBpbnQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAg
ICByZXR1cm4gLTE7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGluZUJy
ZWFrcyhWZWN0b3I8aW50PiYgbGluZUJyZWFrcykgY29uc3QKK3sKKyAgICBpZiAoIWlzVGV4dENv
bnRyb2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCgwKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc2F2
ZWRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsKKyAgICB2aXNpYmxlUG9zID0gbmV4dExpbmVQb3Np
dGlvbih2aXNpYmxlUG9zLCAwKTsKKyAgICB3aGlsZSAoIXZpc2libGVQb3MuaXNOdWxsKCkgJiYg
dmlzaWJsZVBvcyAhPSBzYXZlZFZpc2libGVQb3MpIHsKKyAgICAgICAgbGluZUJyZWFrcy5hcHBl
bmQoaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcykpOworICAgICAgICBzYXZlZFZp
c2libGVQb3MgPSB2aXNpYmxlUG9zOworICAgICAgICB2aXNpYmxlUG9zID0gbmV4dExpbmVQb3Np
dGlvbih2aXNpYmxlUG9zLCAwKTsKKyAgICB9Cit9CisKIC8vIEdpdmVuIGEgbGluZSBudW1iZXIs
IHRoZSByYW5nZSBvZiBjaGFyYWN0ZXJzIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlz
IGFjY2Vzc2liaWxpdHkKIC8vIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBsaW5lIG51bWJlci4K
IFBsYWluVGV4dFJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhSYW5nZUZvckxp
bmUodW5zaWduZWQgbGluZU51bWJlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMDIyZDYw
YjQ1ZWFkYWEyNzNlY2Q1NTczY2IyMmVjNWZjMWU5NGZkMS4uNTM5YjVlMjczYzkyMmIyMjNlYzc1
Y2I5NDhiMDRjMDZjZjk5MmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTE5OCw2ICsxOTgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgoaW50KSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBsaW5l
QnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Q7CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBk
b0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdDsKICAgICB2aXJ0dWFsIFBsYWluVGV4dFJh
bmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaApp
bmRleCAzYTMyYTk1ZWVmYmRmYjljMTBhZTM5MjhlZTY5NDIyNTQxYTE3NzA4Li5jNDA0ZDNhZWVj
NzQwMDg1NGFmMzJmNGUyMDk3MmQzMGFhZmU3NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xNDAsMTEg
KzE0MCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgaGllcmFyY2hpY2FsTGV2
ZWwoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgaGl0
VGVzdChjb25zdCBXZWJQb2ludCYpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGtleWJvYXJkU2hvcnRjdXQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgcGVyZm9y
bURlZmF1bHRBY3Rpb24oKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzZWxlY3Rpb25F
bmRMaW5lTnVtYmVyKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzZWxlY3Rp
b25TdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGb2N1c2VkKGJvb2wp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnRMaW5lTnVt
YmVyKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3RyaW5nVmFsdWUoKSBj
b25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIFdF
QktJVF9FWFBPUlQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCB0aXRsZVVJRWxlbWVudCgpIGNvbnN0
OwpAQCAtMTYzLDYgKzE2MywxMSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgbGlu
ZUJyZWFrcyhXZWJWZWN0b3I8aW50PiYpIGNvbnN0OwogCisgICAgLy8gQWN0aW9ucworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIGNvbnN0OworICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBwZXJmb3JtRGVmYXVsdEFjdGlvbigpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShpbnQgc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rp
b25FbmQpIGNvbnN0OworCiAgICAgLy8gRm9yIGEgdGFibGUKICAgICBXRUJLSVRfRVhQT1JUIHVu
c2lnbmVkIGNvbHVtbkNvdW50KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBy
b3dDb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBmNTU5NzE1ZDliMDA5MGE5YjcwNjUzNjU3
NjA2ZDNkZjBhMTE0MzBiLi5hM2RkODI0Y2MzMTNhYzk5NzA0M2FlOGVjNjYxZGZiMjAyNzJjOTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtNTgwLDEyICs1ODAsNDQgQEAgdW5zaWduZWQgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUt
PnNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7CiB9CiAKK3Vuc2lnbmVkIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNlbGVjdGlvbkVuZExpbmVOdW1iZXIoKSBjb25zdAoreworICAgIGlmIChpc0Rl
dGFjaGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uID0gbV9wcml2YXRlLT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChzZWxlY3Rpb25FbmQoKSk7
CisgICAgaW50IGxpbmVOdW1iZXIgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3NpdGlv
bik7CisgICAgaWYgKGxpbmVOdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbGluZU51bWJlcjsKK30KKwordW5zaWduZWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Vs
ZWN0aW9uU3RhcnRMaW5lTnVtYmVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNEZXRhY2hlZCgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IG1fcHJp
dmF0ZS0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoc2VsZWN0aW9uU3RhcnQoKSk7CisgICAgaW50
IGxpbmVOdW1iZXIgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3NpdGlvbik7CisgICAg
aWYgKGxpbmVOdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGluZU51
bWJlcjsKK30KKwogdm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wg
b24pIGNvbnN0CiB7CiAgICAgaWYgKCFpc0RldGFjaGVkKCkpCiAgICAgICAgIG1fcHJpdmF0ZS0+
c2V0Rm9jdXNlZChvbik7CiB9CiAKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0U2Vs
ZWN0ZWRUZXh0UmFuZ2UoaW50IHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uRW5kKSBjb25z
dAoreworICAgIGlmIChpc0RldGFjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJp
dmF0ZS0+c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoUGxhaW5UZXh0UmFuZ2Uoc2VsZWN0aW9uU3RhcnQs
IHNlbGVjdGlvbkVuZCAtIHNlbGVjdGlvblN0YXJ0KSk7Cit9CisKIFdlYlN0cmluZyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRGV0YWNo
ZWQoKSkKQEAgLTczMSwyMSArNzYzLDE1IEBAIGJvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
bGluZUJyZWFrcyhXZWJWZWN0b3I8aW50PiYgcmVzdWx0KSBjb25zdAogICAgIGlmIChpc0RldGFj
aGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCB0ZXh0TGVuZ3RoID0gbV9w
cml2YXRlLT50ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCF0ZXh0TGVuZ3RoKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgVmVjdG9yPGludD4gbGluZUJyZWFrc1ZlY3RvcjsKKyAgICBtX3ByaXZh
dGUtPmxpbmVCcmVha3MobGluZUJyZWFrc1ZlY3Rvcik7CiAKLSAgICBWaXNpYmxlUG9zaXRpb24g
cG9zID0gbV9wcml2YXRlLT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh0ZXh0TGVuZ3RoKTsKLSAg
ICBpbnQgbGluZUJyZWFrQ291bnQgPSBtX3ByaXZhdGUtPmxpbmVGb3JQb3NpdGlvbihwb3MpOwot
ICAgIGlmIChsaW5lQnJlYWtDb3VudCA8PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
c2l6ZV90IHZlY3RvclNpemUgPSBsaW5lQnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBXZWJWZWN0
b3I8aW50PiBsaW5lQnJlYWtzV2ViVmVjdG9yKHZlY3RvclNpemUpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpPCB2ZWN0b3JTaXplOyBpKyspCisgICAgICAgIGxpbmVCcmVha3NXZWJWZWN0b3Jb
aV0gPSBsaW5lQnJlYWtzVmVjdG9yW2ldOworICAgIHJlc3VsdC5zd2FwKGxpbmVCcmVha3NXZWJW
ZWN0b3IpOwogCi0gICAgV2ViVmVjdG9yPGludD4gbGluZUJyZWFrcyhzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxpbmVCcmVha0NvdW50KSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5lQnJlYWtD
b3VudDsgaSsrKSB7Ci0gICAgICAgIFBsYWluVGV4dFJhbmdlIHJhbmdlID0gbV9wcml2YXRlLT5k
b0FYUmFuZ2VGb3JMaW5lKGkpOwotICAgICAgICBsaW5lQnJlYWtzW2ldID0gcmFuZ2Uuc3RhcnQg
KyByYW5nZS5sZW5ndGg7Ci0gICAgfQotICAgIHJlc3VsdC5zd2FwKGxpbmVCcmVha3MpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNzMyODY4ZTJiMzA5MDdiN2QxYmE4YzcwNTljNDk5OWNkMmNlOTljNi4u
OTI4MjdjNzc1MzlmOTgwOTJhY2M0OGRlMTE4YmZhZmIzZTRhMTUyZCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEy
LTA5LTIwICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAg
IEFYOiBDaHJvbWl1bSBkb2Vzbid0IHBhc3MgYWNjZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBs
aW5lIG51bWJlciB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTcyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKwor
ICAgICAgICBQcm92aWRlIGEgY2hyb21pdW0gaW1wbGVtZW50YXRpb24gb2Ygc29tZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50CisgICAgICAgIG1ldGhvZHMgbmVlZGVkIGJ5IGFjY2Vzc2liaWxpdHkg
dGVzdHMuCisKKyAgICAgICAgRW5hYmxlcyBmb3VyIGV4aXN0aW5nIHRlc3RzIHRvIHBhc3Mgb24g
Q2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlv
bi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkv
dGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3Np
YmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRD
aHJvbWl1bS5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Q
b2ludExpbmVOdW1iZXJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZUdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleENhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlQ2FsbGJhY2spOgorCiAyMDEy
LTA5LTI0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI5MzQzLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Q2hyb21pdW0uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwCmluZGV4IGMwMjc4Y2Q1NzYwMWNjMWFm
NzFiZmJjZGVkZWRkMGYyZGM0NGVmZTIuLjdiMzczYzUxYTQwYjllODQxMTk4YjEzMjk4NjQ0MWE4
NDFhMzUxMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJv
bWl1bS5jcHAKQEAgLTQ5NSwxOSArNDk1LDIzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2hpbGRyZW5Db3VudEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqIHJlc3VsdCkKIAogdm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXJHZXR0ZXJD
YWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgV2ViVmVjdG9yPGludD4gbGluZUJy
ZWFrczsKLSAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkubGluZUJyZWFrcyhsaW5lQnJlYWtzKTsK
LSAgICBpbnQgY3Vyc29yID0gYWNjZXNzaWJpbGl0eU9iamVjdCgpLnNlbGVjdGlvbkVuZCgpOwot
ICAgIGludCBsaW5lID0gMDsKLSAgICB3aGlsZSAobGluZSA8IHN0YXRpY19jYXN0PGludD4obGlu
ZUJyZWFrcy5zaXplKCkpICYmIGxpbmVCcmVha3NbbGluZV0gPD0gY3Vyc29yKQotICAgICAgICBs
aW5lKys7Ci0gICAgcmVzdWx0LT5zZXQobGluZSk7CisgICAgaWYgKCFhY2Nlc3NpYmlsaXR5T2Jq
ZWN0KCkuaXNGb2N1c2VkKCkpIHsKKyAgICAgICAgcmVzdWx0LT5zZXQoLTEpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaW50IGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0
KCkuc2VsZWN0aW9uRW5kTGluZU51bWJlcigpOworICAgIHJlc3VsdC0+c2V0KGxpbmVOdW1iZXIp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlR2V0
dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcy4KLSAgICByZXN1bHQtPnNldChzdGQ6OnN0cmluZygpKTsKKyAgICB1bnNpZ25lZCBz
ZWxlY3Rpb25TdGFydCA9IGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zZWxlY3Rpb25TdGFydCgpOwor
ICAgIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCA9IGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zZWxlY3Rp
b25FbmQoKTsKKyAgICBjaGFyIGJ1ZmZlclsxMDBdOworICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6
ZW9mKGJ1ZmZlciksICJ7JWQsICVkfSIsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQgLSBz
ZWxlY3Rpb25TdGFydCk7CisKKyAgICByZXN1bHQtPnNldChzdGQ6OnN0cmluZyhidWZmZXIpKTsK
IH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWRHZXR0ZXJDYWxsYmFj
ayhDcHBWYXJpYW50KiByZXN1bHQpCkBAIC02MjgsOSArNjMyLDIyIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyYW1ldHJpemVkQXR0cmlidXRlTmFtZXNDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZUZvckluZGV4Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCogcmVzdWx0KQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9y
SW5kZXhDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmICghYXJndW1lbnRz
LnNpemUoKSB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgaW5kZXggPSBhcmd1
bWVudHNbMF0udG9JbnQzMigpOworCisgICAgV2ViVmVjdG9yPGludD4gbGluZUJyZWFrczsKKyAg
ICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkubGluZUJyZWFrcyhsaW5lQnJlYWtzKTsKKyAgICBpbnQg
bGluZSA9IDA7CisgICAgaW50IHZlY3RvclNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KGxpbmVCcmVh
a3Muc2l6ZSgpKTsKKyAgICB3aGlsZSAobGluZSA8IHZlY3RvclNpemUgJiYgbGluZUJyZWFrc1ts
aW5lXSA8PSBpbmRleCkKKyAgICAgICAgbGluZSsrOworICAgIHJlc3VsdC0+c2V0KGxpbmUpOwog
fQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlQ2FsbGJhY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtNzE5LDkgKzcz
NiwxNSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50Q2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVgogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwog
fQogCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlQ2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQordm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZUNhbGxiYWNrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCZhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBy
ZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAyIHx8ICFhcmd1
bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGludCBzZWxlY3Rpb25TdGFydCA9IGFyZ3VtZW50c1swXS50b0ludDMy
KCk7CisgICAgaW50IHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvblN0YXJ0ICsgYXJndW1lbnRzWzFd
LnRvSW50MzIoKTsKKyAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2V0U2VsZWN0ZWRUZXh0UmFu
Z2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlVmFsdWVDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzExNjBlNGVlZDk2MWM4NjM5NTcyODNmY2E0
OTBlYmY5NGY3YjQxNC4uNDg1NTY5MjhjODgwOTBkZTM1MmI4MThiNDRhOTJiMjdkM2M1NTYwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTIwICBEb21pbmljIE1henpvbmkgIDxkbWF6
em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBDaHJvbWl1bSBkb2Vzbid0IHBhc3MgYWNj
ZXNzaWJpbGl0eSB0ZXh0IHJhbmdlIGFuZCBsaW5lIG51bWJlciB0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyNDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBFbmFibGVzIGZvdXIgdGVzdHMgb24g
Y2hyb21pdW06CisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlv
bi1wb2ludC1saW5lLW51bWJlci5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWxpbmUtZm9yLWluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkv
dGV4dGFyZWEtc2VsZWN0ZWQtdGV4dC1yYW5nZS5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3Np
YmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA5LTI0ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gTWFyayBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2luYWN0aXZlLWRvY3VtZW50LXdpdGgtZW1wdHktc2VjdXJpdHkt
b3JpZ2luLmh0bWwgd2hpbGUgR2VvZmYgR2FyZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk0OTczMDVlYjUzYWEzMDkyZGEzNTlmZjM1
YzFkMWUwY2UyZjE1ZTcuLjk0YWQ2MDcxODMwY2U5NWJmOGE5YWM4YjhmYjJkMTNmNWFhNTBkNjEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTM4NCwxMCArMTM4NCw2IEBAIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3RhYmxl
LW9uZS1jZWxsLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3Rh
YmxlLXNlY3Rpb25zLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5
L3RhYmxlLXdpdGgtYXJpYS1yb2xlLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nl
c3NpYmlsaXR5L3RhYmxlLXdpdGgtcnVsZXMuaHRtbCBbIFNraXAgXQotY3JidWcuY29tLzEwMzIy
IGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwg
WyBTa2lwIF0KLWNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWxpbmUtZm9y
LWluZGV4Lmh0bWwgWyBTa2lwIF0KLWNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3RleHRh
cmVhLXNlbGVjdGVkLXRleHQtcmFuZ2UuaHRtbCBbIFNraXAgXQotY3JidWcuY29tLzEwMzIyIGFj
Y2Vzc2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0K
IGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxlLXVpLmh0bWwgWyBTa2lw
IF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3RyYW5zZm9ybWVkLWVsZW1lbnQuaHRt
bCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdmlzaWJsZS1lbGVtZW50
cy5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>