<?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>96076</bug_id>
          
          <creation_ts>2012-09-07 00:22:54 -0700</creation_ts>
          <short_desc>AX: ARIA spin button should support range value attributes</short_desc>
          <delta_ts>2012-09-07 10:07:15 -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>
          
          <blocked>96032</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>abarth</cc>
    
    <cc>aboxhall</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yosin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>714205</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-07 00:22:54 -0700</bug_when>
    <thetext>According to the ARIA spec, an ARIA spin button should use aria-valuenow, etc. for its value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714224</commentid>
    <comment_count>1</comment_count>
      <attachid>162693</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-07 00:45:11 -0700</bug_when>
    <thetext>Created attachment 162693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714234</commentid>
    <comment_count>2</comment_count>
      <attachid>162693</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-07 00:48:55 -0700</bug_when>
    <thetext>Comment on attachment 162693
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1410
&gt; +    if (isInputTag)

is this part of the same bug?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3155
&gt; +    if (m_ariaRole != UnknownRole)

is this part of the same bug?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3394
&gt; +    case ScrollBarRole:

should you have removed scrollbar role?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:305
&gt; +    bool isAriaRange() const;

should be isARIARange()

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:2002
&gt; +        if (m_object-&gt;isProgressIndicator() || m_object-&gt;isSlider() || m_object-&gt;isScrollbar() || m_object-&gt;isSpinButton())

Looks like we should probably have a supportsRangeValue() method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714253</commentid>
    <comment_count>3</comment_count>
      <attachid>162698</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-07 01:11:09 -0700</bug_when>
    <thetext>Created attachment 162698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714254</commentid>
    <comment_count>4</comment_count>
      <attachid>162693</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-07 01:11:43 -0700</bug_when>
    <thetext>Comment on attachment 162693
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1410
&gt;&gt; +    if (isInputTag)
&gt; 
&gt; is this part of the same bug?

I can move this to a separate bug.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3155
&gt;&gt; +    if (m_ariaRole != UnknownRole)
&gt; 
&gt; is this part of the same bug?

Yes. Without this, a spin button&apos;s inner text becomes its title, but I think it generalizes to any ARIA role other than the ones that already explicitly get their title from inner text (like button).

This is covered by the test, as well.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3394
&gt;&gt; +    case ScrollBarRole:
&gt; 
&gt; should you have removed scrollbar role?

I wasn&apos;t sure. I&apos;ll leave it out.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:305
&gt;&gt; +    bool isAriaRange() const;
&gt; 
&gt; should be isARIARange()

Done.

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:2002
&gt;&gt; +        if (m_object-&gt;isProgressIndicator() || m_object-&gt;isSlider() || m_object-&gt;isScrollbar() || m_object-&gt;isSpinButton())
&gt; 
&gt; Looks like we should probably have a supportsRangeValue() method

Good idea, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714258</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 01:14:59 -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>714261</commentid>
    <comment_count>6</comment_count>
      <attachid>162698</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-07 01:16:39 -0700</bug_when>
    <thetext>Comment on attachment 162698
Patch

OK for Chromium WebKit API change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714290</commentid>
    <comment_count>7</comment_count>
      <attachid>162698</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-07 01:49:13 -0700</bug_when>
    <thetext>Comment on attachment 162698
Patch

Attachment 162698 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13785354</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714298</commentid>
    <comment_count>8</comment_count>
      <attachid>162712</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-07 01:53:05 -0700</bug_when>
    <thetext>Created attachment 162712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714586</commentid>
    <comment_count>9</comment_count>
      <attachid>162712</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-07 09:15:46 -0700</bug_when>
    <thetext>Comment on attachment 162712
Patch

looks good. thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714649</commentid>
    <comment_count>10</comment_count>
      <attachid>162712</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 10:07:03 -0700</bug_when>
    <thetext>Comment on attachment 162712
Patch

Clearing flags on attachment: 162712

Committed r127882: &lt;http://trac.webkit.org/changeset/127882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714652</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 10:07:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162693</attachid>
            <date>2012-09-07 00:45:11 -0700</date>
            <delta_ts>2012-09-07 01:11:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96076-20120907004516.patch</filename>
            <type>text/plain</type>
            <size>14268</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTA3ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBBUklBIHNwaW4g
YnV0dG9uIHNob3VsZCBzdXBwb3J0IHJhbmdlIHZhbHVlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDc2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhbiBBUklBIHNwaW4gYnV0
dG9uIHN1cHBvcnQgQVJJQSByYW5nZSBhdHRyaWJ1dGVzIGxpa2UKKyAgICAgICAgYXJpYS12YWx1
ZW5vdywgYXJpYS12YWx1ZW1pbiwgZXRjLiAtIGp1c3QgbGlrZSBzbGlkZXIsIHByb2dyZXNzYmFy
LAorICAgICAgICBhbmQgc2Nyb2xsYmFyLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkv
c3BpbmJ1dHRvbi12YWx1ZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
U3BpbkJ1dHRvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FyaWFSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZUZvclJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWluVmFsdWVGb3JS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJp
bmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0dl
bmVyaWNGb2N1c2FibGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbik6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEy
LTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEJ1aWxkIGZpeCBmb3IgV2luQ0UgYWZ0ZXIgcjEyNzgwMS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAx
Mjc2OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDcgKzM2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBTcGluQnV0dG9uUm9sZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBUZXh0QXJlYVJvbGUgfHwgcm9sZVZhbHVlKCkgPT0gVGV4
dEZpZWxkUm9sZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMjc2OTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU2LDggKzExNTYsNyBAQCBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0eVJlCiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojp2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICAvLyBPbmx5IHNsaWRlcnMg
YW5kIHByb2dyZXNzIGJhcnMgc3VwcG9ydCB2YWx1ZSBkZXNjcmlwdGlvbnMgY3VycmVudGx5Lgot
ICAgIGlmICghaXNQcm9ncmVzc0luZGljYXRvcigpICYmICFpc1NsaWRlcigpKQorICAgIGlmICgh
aXNBcmlhUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIAogICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoYXJpYV92YWx1ZXRleHRBdHRyKS5zdHJpbmcoKTsKQEAgLTExNjcsMTAg
KzExNjYsMTggQEAgZmxvYXQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RlcFZhbAogewog
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLnRvRmxvYXQoKTsKIH0KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FyaWFSYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYXJpYVJvbGUgPT0gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlCisgICAgICAgIHx8IG1fYXJp
YVJvbGUgPT0gU2xpZGVyUm9sZQorICAgICAgICB8fCBtX2FyaWFSb2xlID09IFNjcm9sbEJhclJv
bGUKKyAgICAgICAgfHwgbV9hcmlhUm9sZSA9PSBTcGluQnV0dG9uUm9sZTsKK30KICAgICAKIGZs
b2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewot
ICAgIGlmICghaXNQcm9ncmVzc0luZGljYXRvcigpICYmICFpc1NsaWRlcigpICYmICFpc1Njcm9s
bGJhcigpKQorICAgIGlmICghaXNBcmlhUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAK
ICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVub3dBdHRyKS50b0Zsb2F0KCk7CkBA
IC0xMTc4LDcgKzExODUsNyBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1
ZUZvCiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2Uo
KSBjb25zdAogewotICAgIGlmICghaXNQcm9ncmVzc0luZGljYXRvcigpICYmICFpc1NsaWRlcigp
KQorICAgIGlmICghaXNBcmlhUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICBy
ZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVtYXhBdHRyKS50b0Zsb2F0KCk7CkBAIC0xMTg2
LDcgKzExOTMsNyBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXhWYWx1CiAK
IGZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UoKSBjb25z
dAogewotICAgIGlmICghaXNQcm9ncmVzc0luZGljYXRvcigpICYmICFpc1NsaWRlcigpKQorICAg
IGlmICghaXNBcmlhUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4g
Z2V0QXR0cmlidXRlKGFyaWFfdmFsdWVtaW5BdHRyKS50b0Zsb2F0KCk7CkBAIC0xMzk4LDcgKzE0
MDUsMTEgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxlKAogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKyAgIAorICAgIC8vIEFueSBvdGhl
ciBpbnB1dCBjb250cm9sIHNob3VsZCBub3QgcmV0dXJuIGFueSB0ZXh0IGZyb20gaXRzIHNoYWRv
dyBET00gYXMgdGhlIHRpdGxlLgorICAgIGlmIChpc0lucHV0VGFnKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgCiAgICAgaWYgKGlzSGVhZGluZygpIHx8IGlzTGluaygpKQogICAgICAgICBy
ZXR1cm4gdGV4dFVuZGVyRWxlbWVudCgpOwogCkBAIC0zMTQwLDYgKzMxNTEsMTAgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0dlbmVyaQogICAgIGlmIChpc0NvbnRyb2woKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gSWYgaXQgaGFzIGFuIGFyaWEgcm9sZSwg
aXQncyBub3QgZ2VuZXJpYy4KKyAgICBpZiAobV9hcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gSWYgdGhlIGNvbnRlbnQgZWRpdGFibGUgYXR0
cmlidXRlIGlzIHNldCBvbiB0aGlzIGVsZW1lbnQsIHRoYXQncyB0aGUgcmVhc29uCiAgICAgLy8g
aXQncyBmb2N1c2FibGUsIGFuZCBleGlzdGluZyBsb2dpYyBzaG91bGQgaGFuZGxlIHRoaXMgY2Fz
ZSBhbHJlYWR5IC0gc28gaXQncyBub3QgYQogICAgIC8vIGdlbmVyaWMgZm9jdXNhYmxlIGVsZW1l
bnQuCkBAIC0zMzc2LDYgKzMzOTEsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFyaWFSb2xlCiAgICAgY2FzZSBTbGlkZXJSb2xlOgogICAgIGNhc2UgSW1hZ2VSb2xlOgogICAg
IGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgorICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKKyAg
ICBjYXNlIFNwaW5CdXR0b25Sb2xlOgogICAgIC8vIGNhc2UgU2VwYXJhdG9yUm9sZToKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZp
c2lvbiAxMjc2OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUpIGNvbnN0OwogICAgIC8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIGl0J3MgZm9j
dXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50IGVkaXRhYmxlIGFuZCBpdCdzIG5vdCBhIGNvbnRy
b2wgb3IgQVJJQSBjb250cm9sLgogICAgIGJvb2wgaXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCgp
IGNvbnN0OworICAgIGJvb2wgaXNBcmlhUmFuZ2UoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkVGV4
dEZpZWxkQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZEltYWdlTWFwQ2hpbGRyZW4oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiAxMjc2OTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk5OSw3ICsxOTk5LDcgQEAgLSAoaWQpYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgICAgICAgICAgaWYgKFtbW3NlbGYgYXR0
YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdKSAKICAgICAgICAgICAgICAgICByZXR1cm4g
W1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX29iamVj
dC0+aXNQcm9ncmVzc0luZGljYXRvcigpIHx8IG1fb2JqZWN0LT5pc1NsaWRlcigpIHx8IG1fb2Jq
ZWN0LT5pc1Njcm9sbGJhcigpKQorICAgICAgICBpZiAobV9vYmplY3QtPmlzUHJvZ3Jlc3NJbmRp
Y2F0b3IoKSB8fCBtX29iamVjdC0+aXNTbGlkZXIoKSB8fCBtX29iamVjdC0+aXNTY3JvbGxiYXIo
KSB8fCBtX29iamVjdC0+aXNTcGluQnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+dmFsdWVGb3JSYW5nZSgpXTsKICAgICAgICAg
aWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTbGlkZXJUaHVtYlJvbGUpCiAgICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+cGFyZW50T2JqZWN0
KCktPnZhbHVlRm9yUmFuZ2UoKV07CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc2OTYpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0wNyAgRG9taW5pYyBNYXp6
b25pIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIE5ldyB0aW1lIGlucHV0IG5lZWRz
IGFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk2MDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHZhbHVlRGVzY3JpcHRpb24gZm9yIHRlc3RpbmcuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRDaHJvbWl1bS5jcHA6CisgICAgICAgIChnZXRWYWx1ZURlc2NyaXB0aW9uKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbkdldHRlckNh
bGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCk6CisKIDIwMTItMDktMDUgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBkZXBlbmRlbmN5IG9uIHdlYmtpdF91c2VyX2Fn
ZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21p
dW0uY3BwCShyZXZpc2lvbiAxMjc2OTYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1MSw2ICsyNTEsMTIgQEAgc3RyaW5nIGdldE9yaWVudGF0aW9uKGNvbnN0IFdl
YkFjY2Vzc2liaQogICAgIHJldHVybiAiQVhPcmllbnRhdGlvbjogQVhIb3Jpem9udGFsT3JpZW50
YXRpb24iOwogfQogCitzdHJpbmcgZ2V0VmFsdWVEZXNjcmlwdGlvbihjb25zdCBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvYmplY3QpCit7CisgICAgc3RyaW5nIHZhbHVlRGVzY3JpcHRpb24gPSBv
YmplY3QudmFsdWVEZXNjcmlwdGlvbigpLnV0ZjgoKTsKKyAgICByZXR1cm4gdmFsdWVEZXNjcmlw
dGlvbi5pbnNlcnQoMCwgIkFYVmFsdWVEZXNjcmlwdGlvbjogIik7Cit9CisKIHN0cmluZyBnZXRB
dHRyaWJ1dGVzKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKIHsKICAgICAv
LyBGSVhNRTogQ29uY2F0ZW5hdGUgYWxsIGF0dHJpYnV0ZXMgb2YgdGhlIEFjY2Vzc2liaWxpdHlP
YmplY3QuCkBAIC0zMDMsNiArMzA5LDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNz
aWJpbGl0eVVJRQogICAgIGJpbmRQcm9wZXJ0eSgiaW50VmFsdWUiLCAmQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW50VmFsdWVHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJtaW5W
YWx1ZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZUdldHRlckNhbGxiYWNrKTsK
ICAgICBiaW5kUHJvcGVydHkoIm1heFZhbHVlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1h
eFZhbHVlR2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQcm9wZXJ0eSgidmFsdWVEZXNjcmlwdGlv
biIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uR2V0dGVyQ2FsbGJh
Y2spOwogICAgIGJpbmRQcm9wZXJ0eSgiY2hpbGRyZW5Db3VudCIsICZBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjaGlsZHJlbkNvdW50R2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgi
aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2Vy
dGlvblBvaW50TGluZU51bWJlckdldHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoInNl
bGVjdGVkVGV4dFJhbmdlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJh
bmdlR2V0dGVyQ2FsbGJhY2spOwpAQCAtNDUyLDYgKzQ1OSwxMSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om1heFZhbHVlR2V0CiAgICAgcmVzdWx0LT5zZXQoYWNjZXNzaWJpbGl0eU9i
amVjdCgpLm1heFZhbHVlRm9yUmFuZ2UoKSk7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dmFsdWVEZXNjcmlwdGlvbkdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQtPnNldChnZXRWYWx1ZURlc2NyaXB0aW9uKGFjY2Vzc2liaWxpdHlPYmpl
Y3QoKSkpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnRH
ZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgaW50IGNvdW50ID0gMTsg
Ly8gUm9vdCBvYmplY3QgYWx3YXlzIGhhcyBvbmx5IG9uZSBjaGlsZCwgdGhlIFdlYlZpZXcuCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgJKHJl
dmlzaW9uIDEyNzY5NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludFZhbHVlR2V0dGVyQ2FsbGJhY2soQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgbWluVmFsdWVHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7
CiAgICAgdm9pZCBtYXhWYWx1ZUdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKKyAgICB2b2lk
IHZhbHVlRGVzY3JpcHRpb25HZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBj
aGlsZHJlbkNvdW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaW5zZXJ0
aW9uUG9pbnRMaW5lTnVtYmVyR2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQg
c2VsZWN0ZWRUZXh0UmFuZ2VHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMjc4MzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0wNyAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlA
Z29vZ2xlLmNvbT4KKworICAgICAgICBBWDogQVJJQSBzcGluIGJ1dHRvbiBzaG91bGQgc3VwcG9y
dCByYW5nZSB2YWx1ZSBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NjA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3QgdGhhdCBhbiBBUklBIHNwaW4gYnV0dG9uIGV4cG9zZXMgQVJJ
QSByYW5nZSBhdHRyaWJ1dGVzIGxpa2UKKyAgICAgICAgYXJpYS12YWx1ZW5vdywgYXJpYS12YWx1
ZW1pbiwgZXRjLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9zcGluYnV0dG9uLXZhbHVlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9zcGluYnV0dG9uLXZh
bHVlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTA2ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZWJhc2VsaW5lcyBkdWUgdG8gcjEyNzgzMS4KSW5kZXg6
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3BpbmJ1dHRvbi12YWx1ZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zcGluYnV0dG9uLXZhbHVl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
c3BpbmJ1dHRvbi12YWx1ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYg
QEAKKworNDIKK1RoaXMgdGVzdHMgdGhhdCBhIHNwaW4gYnV0dG9uIHN1cHBvcnRzIHJhbmdlIHZh
bHVlIGF0dHJpYnV0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGVu
ZHNXaXRoKGF4U3Bpbi5pbnRWYWx1ZSwgJzUnKSBpcyB0cnVlCitQQVNTIGVuZHNXaXRoKGF4U3Bp
bi5taW5WYWx1ZSwgJzEnKSBpcyB0cnVlCitQQVNTIGVuZHNXaXRoKGF4U3Bpbi5tYXhWYWx1ZSwg
JzknKSBpcyB0cnVlCitQQVNTIGVuZHNXaXRoKGF4U3Bpbi52YWx1ZURlc2NyaXB0aW9uLCAnNSBv
ZiA5JykgaXMgdHJ1ZQorUEFTUyBheFNwaW4udGl0bGUgaXMgYXhVbnRpdGxlZC50aXRsZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5
IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3BpbmJ1dHRvbi12YWx1ZS1l
eHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zcGluYnV0dG9uLXZhbHVlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zcGluYnV0dG9uLXZhbHVlLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3NwaW5idXR0b24tdmFs
dWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKworPGJ1dHRvbiBpZD0idW50aXRsZWQiPjwvYnV0dG9uPgorCis8
ZGl2IGlkPSJzcGluIgorICAgICB0YWJpbmRleD0iMCIKKyAgICAgcm9sZT0ic3BpbmJ1dHRvbiIK
KyAgICAgYXJpYS12YWx1ZXRleHQ9IjUgb2YgOSIKKyAgICAgYXJpYS12YWx1ZW1pbj0iMSIKKyAg
ICAgYXJpYS12YWx1ZW1heD0iOSIKKyAgICAgYXJpYS12YWx1ZW5vdz0iNSI+NDI8L2Rpdj4KKwor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhhdCBhIHNwaW4gYnV0dG9uIHN1cHBvcnRzIHJhbmdlIHZhbHVlIGF0dHJpYnV0ZXMuIikK
KworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9u
IGVuZHNXaXRoKHN0ciwgc3VmZml4KSB7CisgICAgICAgIHN0ciA9ICcnICsgc3RyOworICAgICAg
ICByZXR1cm4gc3RyLnN1YnN0cihzdHIubGVuZ3RoIC0gc3VmZml4Lmxlbmd0aCkgPT0gc3VmZml4
OworICAgIH0KKworICAgIHZhciB1bnRpdGxlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1
bnRpdGxlZCcpOworICAgIHVudGl0bGVkLmZvY3VzKCk7CisgICAgd2luZG93LmF4VW50aXRsZWQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgIHZhciBzcGlu
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW4nKTsKKyAgICBzcGluLmZvY3VzKCk7Cisg
ICAgd2luZG93LmF4U3BpbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
OworCisgICAgLy8gVGVzdCByYW5nZSB2YWx1ZSBhdHRyaWJ1dGVzLgorICAgIHNob3VsZEJlKCJl
bmRzV2l0aChheFNwaW4uaW50VmFsdWUsICc1JykiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJl
bmRzV2l0aChheFNwaW4ubWluVmFsdWUsICcxJykiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJl
bmRzV2l0aChheFNwaW4ubWF4VmFsdWUsICc5JykiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJl
bmRzV2l0aChheFNwaW4udmFsdWVEZXNjcmlwdGlvbiwgJzUgb2YgOScpIiwgInRydWUiKTsKKwor
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgdGl0bGUgZG9lc24ndCBjb21lIGZyb20gdGhlIGlubmVyIHRl
eHQuIEl0IHNob3VsZCBqdXN0IGJlIGVtcHR5IGlmCisgICAgLy8gbm90IG90aGVyd2lzZSBzcGVj
aWZpZWQuCisgICAgc2hvdWxkQmUoImF4U3Bpbi50aXRsZSIsICJheFVudGl0bGVkLnRpdGxlIik7
Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3BpbmJ1dHRvbi12YWx1ZS5odG1sCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162698</attachid>
            <date>2012-09-07 01:11:09 -0700</date>
            <delta_ts>2012-09-07 01:53:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96076-20120907011113.patch</filename>
            <type>text/plain</type>
            <size>17087</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTA3ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBBUklBIHNwaW4g
YnV0dG9uIHNob3VsZCBzdXBwb3J0IHJhbmdlIHZhbHVlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDc2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhbiBBUklBIHNwaW4gYnV0
dG9uIHN1cHBvcnQgQVJJQSByYW5nZSBhdHRyaWJ1dGVzIGxpa2UKKyAgICAgICAgYXJpYS12YWx1
ZW5vdywgYXJpYS12YWx1ZW1pbiwgZXRjLiAtIGp1c3QgbGlrZSBzbGlkZXIsIHByb2dyZXNzYmFy
LAorICAgICAgICBhbmQgc2Nyb2xsYmFyLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkv
c3BpbmJ1dHRvbi12YWx1ZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
U3BpbkJ1dHRvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FyaWFSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZUZvclJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWluVmFsdWVGb3JS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJp
bmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0dl
bmVyaWNGb2N1c2FibGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbik6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEy
LTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEJ1aWxkIGZpeCBmb3IgV2luQ0UgYWZ0ZXIgcjEyNzgwMS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNp
b24gMTI3Njk2KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw2ICsxNTU2LDE0IEBAIEFjY2Vzc2li
aWxpdHlTb3J0RGlyZWN0aW9uIEFjY2Vzc2liaWxpdHkKICAgICAKICAgICByZXR1cm4gU29ydERp
cmVjdGlvbk5vbmU7CiB9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNSYW5n
ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNQcm9ncmVzc0luZGljYXRvcigpCisgICAg
ICAgIHx8IGlzU2xpZGVyKCkKKyAgICAgICAgfHwgaXNTY3JvbGxiYXIoKQorICAgICAgICB8fCBp
c1NwaW5CdXR0b24oKTsKK30KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9y
dHNBUklBRXhwYW5kZWQoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEyNzY5NikKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjYsNyArMzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNN
ZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNwaW5CdXR0
b25Sb2xlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IFRleHRBcmVhUm9sZSB8fCByb2xlVmFsdWUoKSA9PSBUZXh0RmllbGRSb2xl
OyB9CkBAIC00NjEsNiArNDYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBRXhw
YW5kZWQoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0
aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBj
b25zdDsKICAgICAKICAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMjc2OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTU2LDggKzExNTYsNyBAQCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0
eVJlCiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZURlc2NyaXB0aW9u
KCkgY29uc3QKIHsKLSAgICAvLyBPbmx5IHNsaWRlcnMgYW5kIHByb2dyZXNzIGJhcnMgc3VwcG9y
dCB2YWx1ZSBkZXNjcmlwdGlvbnMgY3VycmVudGx5LgotICAgIGlmICghaXNQcm9ncmVzc0luZGlj
YXRvcigpICYmICFpc1NsaWRlcigpKQorICAgIGlmICghaXNBUklBUmFuZ2UoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJpYV92YWx1
ZXRleHRBdHRyKS5zdHJpbmcoKTsKQEAgLTExNjcsMTAgKzExNjYsMTggQEAgZmxvYXQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c3RlcFZhbAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUo
c3RlcEF0dHIpLnRvRmxvYXQoKTsKIH0KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc0FSSUFSYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXJpYVJvbGUgPT0gUHJvZ3Jl
c3NJbmRpY2F0b3JSb2xlCisgICAgICAgIHx8IG1fYXJpYVJvbGUgPT0gU2xpZGVyUm9sZQorICAg
ICAgICB8fCBtX2FyaWFSb2xlID09IFNjcm9sbEJhclJvbGUKKyAgICAgICAgfHwgbV9hcmlhUm9s
ZSA9PSBTcGluQnV0dG9uUm9sZTsKK30KICAgICAKIGZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmICghaXNQcm9ncmVzc0luZGlj
YXRvcigpICYmICFpc1NsaWRlcigpICYmICFpc1Njcm9sbGJhcigpKQorICAgIGlmICghaXNBUklB
UmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KGFyaWFfdmFsdWVub3dBdHRyKS50b0Zsb2F0KCk7CkBAIC0xMTc4LDcgKzExODUsNyBAQCBmbG9h
dCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZUZvCiAKIGZsb2F0IEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmICghaXNQ
cm9ncmVzc0luZGljYXRvcigpICYmICFpc1NsaWRlcigpKQorICAgIGlmICghaXNBUklBUmFuZ2Uo
KSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFf
dmFsdWVtYXhBdHRyKS50b0Zsb2F0KCk7CkBAIC0xMTg2LDcgKzExOTMsNyBAQCBmbG9hdCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXhWYWx1CiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmICghaXNQcm9ncmVz
c0luZGljYXRvcigpICYmICFpc1NsaWRlcigpKQorICAgIGlmICghaXNBUklBUmFuZ2UoKSkKICAg
ICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVt
aW5BdHRyKS50b0Zsb2F0KCk7CkBAIC0xMzk4LDcgKzE0MDUsNyBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dGl0bGUoCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIAorICAgCiAgICAgaWYgKGlzSGVhZGluZygpIHx8IGlzTGluaygpKQogICAgICAg
ICByZXR1cm4gdGV4dFVuZGVyRWxlbWVudCgpOwogCkBAIC0zMTQwLDYgKzMxNDcsMTAgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0dlbmVyaQogICAgIGlmIChpc0NvbnRyb2wo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gSWYgaXQgaGFzIGFuIGFyaWEgcm9s
ZSwgaXQncyBub3QgZ2VuZXJpYy4KKyAgICBpZiAobV9hcmlhUm9sZSAhPSBVbmtub3duUm9sZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gSWYgdGhlIGNvbnRlbnQgZWRpdGFibGUg
YXR0cmlidXRlIGlzIHNldCBvbiB0aGlzIGVsZW1lbnQsIHRoYXQncyB0aGUgcmVhc29uCiAgICAg
Ly8gaXQncyBmb2N1c2FibGUsIGFuZCBleGlzdGluZyBsb2dpYyBzaG91bGQgaGFuZGxlIHRoaXMg
Y2FzZSBhbHJlYWR5IC0gc28gaXQncyBub3QgYQogICAgIC8vIGdlbmVyaWMgZm9jdXNhYmxlIGVs
ZW1lbnQuCkBAIC0zMzc2LDYgKzMzODcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFyaWFSb2xlCiAgICAgY2FzZSBTbGlkZXJSb2xlOgogICAgIGNhc2UgSW1hZ2VSb2xlOgog
ICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgorICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6
CiAgICAgLy8gY2FzZSBTZXBhcmF0b3JSb2xlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBk
ZWZhdWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEyNzY5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDIsNiArMzAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRGVzY2Vu
ZGFudE9mRWxlbWVudFR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgY29uc3Q7CiAg
ICAgLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgaXQncyBmb2N1c2FibGUgYnV0IGl0J3Mgbm90IGNv
bnRlbnQgZWRpdGFibGUgYW5kIGl0J3Mgbm90IGEgY29udHJvbCBvciBBUklBIGNvbnRyb2wuCiAg
ICAgYm9vbCBpc0dlbmVyaWNGb2N1c2FibGVFbGVtZW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0FS
SUFSYW5nZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwogICAg
IHZvaWQgYWRkSW1hZ2VNYXBDaGlsZHJlbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIubW0JKHJldmlzaW9uIDEyNzY5NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTk5LDcgKzE5OTksNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
KE5TU3RyCiAgICAgICAgICAgICBpZiAoW1tbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0
dHJpYnV0ZV0pIAogICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXdd
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0
ZV07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1Byb2dyZXNzSW5kaWNhdG9y
KCkgfHwgbV9vYmplY3QtPmlzU2xpZGVyKCkgfHwgbV9vYmplY3QtPmlzU2Nyb2xsYmFyKCkpCisg
ICAgICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNSYW5nZVZhbHVlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+dmFsdWVGb3JSYW5nZSgp
XTsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTbGlkZXJUaHVtYlJvbGUp
CiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+
cGFyZW50T2JqZWN0KCktPnZhbHVlRm9yUmFuZ2UoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gMTI3ODM5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0wNyAgRG9taW5p
YyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBWDogQVJJQSBzcGlu
IGJ1dHRvbiBzaG91bGQgc3VwcG9ydCByYW5nZSB2YWx1ZSBhdHRyaWJ1dGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjA3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBzdXBwb3J0c1Jhbmdl
VmFsdWUgdG8gc2ltcGxpZnkgQ2hyb21pdW0gbG9naWMgZm9yIHdoZW4gdG8KKyAgICAgICAgZXh0
cmFjdCBhIHZhbHVlIGZyb20gYSByYW5nZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAg
ICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUmFuZ2VWYWx1ZSk6CisgICAgICAgIChXZWJL
aXQpOgorCiAyMDEyLTA5LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3ODIyLgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuaAkocmV2aXNpb24gMTI3Njk2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiAr
MTQ5LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dCB0aXRsZVVJRWxlbWVudCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIHVybCgp
IGNvbnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgpIGNv
bnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKICAgICBX
RUJLSVRfRVhQT1JUIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxMjc2OTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDYgKzYxMCwxNCBA
QCBXZWJVUkwgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsKCkgY29uCiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+dXJsKCk7CiB9CiAKK1dlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
dXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdAoreworICAgIGlmIChpc0RldGFjaGVkKCkpCisgICAg
ICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRz
UmFuZ2VWYWx1ZSgpOworfQorCiBXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6dmFs
dWVEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKGlzRGV0YWNoZWQoKSkKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
NzY5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDEyLTA5LTA3ICBEb21pbmljIE1henpvbmkgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgTmV3IHRpbWUgaW5wdXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdmFsdWVEZXNj
cmlwdGlvbiBmb3IgdGVzdGluZy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcDoKKyAgICAgICAg
KGdldFZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp2YWx1ZURlc2NyaXB0aW9uR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmg6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKwogMjAxMi0wOS0wNSAgVG9ueSBD
aGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGRl
cGVuZGVuY3kgb24gd2Via2l0X3VzZXJfYWdlbnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEyNzY5NikKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDYgKzI1MSwxMiBAQCBzdHJp
bmcgZ2V0T3JpZW50YXRpb24oY29uc3QgV2ViQWNjZXNzaWJpCiAgICAgcmV0dXJuICJBWE9yaWVu
dGF0aW9uOiBBWEhvcml6b250YWxPcmllbnRhdGlvbiI7CiB9CiAKK3N0cmluZyBnZXRWYWx1ZURl
c2NyaXB0aW9uKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKK3sKKyAgICBz
dHJpbmcgdmFsdWVEZXNjcmlwdGlvbiA9IG9iamVjdC52YWx1ZURlc2NyaXB0aW9uKCkudXRmOCgp
OworICAgIHJldHVybiB2YWx1ZURlc2NyaXB0aW9uLmluc2VydCgwLCAiQVhWYWx1ZURlc2NyaXB0
aW9uOiAiKTsKK30KKwogc3RyaW5nIGdldEF0dHJpYnV0ZXMoY29uc3QgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0KQogewogICAgIC8vIEZJWE1FOiBDb25jYXRlbmF0ZSBhbGwgYXR0cmli
dXRlcyBvZiB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdC4KQEAgLTMwMyw2ICszMDksNyBAQCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFCiAgICAgYmluZFByb3BlcnR5KCJp
bnRWYWx1ZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZUdldHRlckNhbGxiYWNr
KTsKICAgICBiaW5kUHJvcGVydHkoIm1pblZhbHVlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1pblZhbHVlR2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgibWF4VmFsdWUiLCAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWVHZXR0ZXJDYWxsYmFjayk7CisgICAgYmlu
ZFByb3BlcnR5KCJ2YWx1ZURlc2NyaXB0aW9uIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZh
bHVlRGVzY3JpcHRpb25HZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJjaGlsZHJl
bkNvdW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnRHZXR0ZXJDYWxs
YmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpbnNlcnRpb25Qb2ludExpbmVOdW1iZXIiLCAmQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyR2V0dGVyQ2FsbGJh
Y2spOwogICAgIGJpbmRQcm9wZXJ0eSgic2VsZWN0ZWRUZXh0UmFuZ2UiLCAmQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2VHZXR0ZXJDYWxsYmFjayk7CkBAIC00NTIsNiAr
NDU5LDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWVHZXQKICAgICBy
ZXN1bHQtPnNldChhY2Nlc3NpYmlsaXR5T2JqZWN0KCkubWF4VmFsdWVGb3JSYW5nZSgpKTsKIH0K
IAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uR2V0dGVyQ2Fs
bGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KGdldFZhbHVlRGVz
Y3JpcHRpb24oYWNjZXNzaWJpbGl0eU9iamVjdCgpKSk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqIHJlc3Vs
dCkKIHsKICAgICBpbnQgY291bnQgPSAxOyAvLyBSb290IG9iamVjdCBhbHdheXMgaGFzIG9ubHkg
b25lIGNoaWxkLCB0aGUgV2ViVmlldy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50Q2hyb21pdW0uaAkocmV2aXNpb24gMTI3Njk2KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21p
dW0uaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
aW50VmFsdWVHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBtaW5WYWx1ZUdl
dHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIG1heFZhbHVlR2V0dGVyQ2FsbGJh
Y2soQ3BwVmFyaWFudCopOworICAgIHZvaWQgdmFsdWVEZXNjcmlwdGlvbkdldHRlckNhbGxiYWNr
KENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGNoaWxkcmVuQ291bnRHZXR0ZXJDYWxsYmFjayhDcHBW
YXJpYW50Kik7CiAgICAgdm9pZCBpbnNlcnRpb25Qb2ludExpbmVOdW1iZXJHZXR0ZXJDYWxsYmFj
ayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZWxlY3RlZFRleHRSYW5nZUdldHRlckNhbGxiYWNr
KENwcFZhcmlhbnQqKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzgzNikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTA3ICBE
b21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBBUklB
IHNwaW4gYnV0dG9uIHNob3VsZCBzdXBwb3J0IHJhbmdlIHZhbHVlIGF0dHJpYnV0ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDc2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IGFuIEFS
SUEgc3BpbiBidXR0b24gZXhwb3NlcyBBUklBIHJhbmdlIGF0dHJpYnV0ZXMgbGlrZQorICAgICAg
ICBhcmlhLXZhbHVlbm93LCBhcmlhLXZhbHVlbWluLCBldGMuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L3NwaW5idXR0b24tdmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L3NwaW5idXR0b24tdmFsdWUuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMDYg
IEFubmEgQ2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlYmFzZWxp
bmVzIGR1ZSB0byByMTI3ODMxLgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zcGlu
YnV0dG9uLXZhbHVlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3NwaW5idXR0b24tdmFsdWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zcGluYnV0dG9uLXZhbHVlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorCis0MgorVGhpcyB0ZXN0cyB0aGF0IGEgc3Bp
biBidXR0b24gc3VwcG9ydHMgcmFuZ2UgdmFsdWUgYXR0cmlidXRlcy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZW5kc1dpdGgoYXhTcGluLmludFZhbHVlLCAnNScpIGlz
IHRydWUKK1BBU1MgZW5kc1dpdGgoYXhTcGluLm1pblZhbHVlLCAnMScpIGlzIHRydWUKK1BBU1Mg
ZW5kc1dpdGgoYXhTcGluLm1heFZhbHVlLCAnOScpIGlzIHRydWUKK1BBU1MgZW5kc1dpdGgoYXhT
cGluLnZhbHVlRGVzY3JpcHRpb24sICc1IG9mIDknKSBpcyB0cnVlCitQQVNTIGF4U3Bpbi50aXRs
ZSBpcyBheFVudGl0bGVkLnRpdGxlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9zcGluYnV0dG9uLXZhbHVlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Nw
aW5idXR0b24tdmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3NwaW5idXR0b24tdmFsdWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvc3BpbmJ1dHRvbi12YWx1ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUxIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8YnV0dG9uIGlk
PSJ1bnRpdGxlZCI+PC9idXR0b24+CisKKzxkaXYgaWQ9InNwaW4iCisgICAgIHRhYmluZGV4PSIw
IgorICAgICByb2xlPSJzcGluYnV0dG9uIgorICAgICBhcmlhLXZhbHVldGV4dD0iNSBvZiA5Igor
ICAgICBhcmlhLXZhbHVlbWluPSIxIgorICAgICBhcmlhLXZhbHVlbWF4PSI5IgorICAgICBhcmlh
LXZhbHVlbm93PSI1Ij40MjwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgc3BpbiBidXR0b24gc3VwcG9ydHMg
cmFuZ2UgdmFsdWUgYXR0cmlidXRlcy4iKQorCitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzdWZmaXgpIHsKKyAgICAg
ICAgc3RyID0gJycgKyBzdHI7CisgICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0ci5sZW5ndGgg
LSBzdWZmaXgubGVuZ3RoKSA9PSBzdWZmaXg7CisgICAgfQorCisgICAgdmFyIHVudGl0bGVkID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VudGl0bGVkJyk7CisgICAgdW50aXRsZWQuZm9jdXMo
KTsKKyAgICB3aW5kb3cuYXhVbnRpdGxlZCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OworCisgICAgdmFyIHNwaW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Bp
bicpOworICAgIHNwaW4uZm9jdXMoKTsKKyAgICB3aW5kb3cuYXhTcGluID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAvLyBUZXN0IHJhbmdlIHZhbHVlIGF0
dHJpYnV0ZXMuCisgICAgc2hvdWxkQmUoImVuZHNXaXRoKGF4U3Bpbi5pbnRWYWx1ZSwgJzUnKSIs
ICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImVuZHNXaXRoKGF4U3Bpbi5taW5WYWx1ZSwgJzEnKSIs
ICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImVuZHNXaXRoKGF4U3Bpbi5tYXhWYWx1ZSwgJzknKSIs
ICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImVuZHNXaXRoKGF4U3Bpbi52YWx1ZURlc2NyaXB0aW9u
LCAnNSBvZiA5JykiLCAidHJ1ZSIpOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSB0aXRsZSBkb2Vz
bid0IGNvbWUgZnJvbSB0aGUgaW5uZXIgdGV4dC4gSXQgc2hvdWxkIGp1c3QgYmUgZW1wdHkgaWYK
KyAgICAvLyBub3Qgb3RoZXJ3aXNlIHNwZWNpZmllZC4KKyAgICBzaG91bGRCZSgiYXhTcGluLnRp
dGxlIiwgImF4VW50aXRsZWQudGl0bGUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9zcGluYnV0dG9uLXZhbHVlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQog
ICArIHRleHQvaHRtbApBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162712</attachid>
            <date>2012-09-07 01:53:05 -0700</date>
            <delta_ts>2012-09-07 10:07:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96076-20120907015309.patch</filename>
            <type>text/plain</type>
            <size>17076</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTA3ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBBUklBIHNwaW4g
YnV0dG9uIHNob3VsZCBzdXBwb3J0IHJhbmdlIHZhbHVlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDc2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhbiBBUklBIHNwaW4gYnV0
dG9uIHN1cHBvcnQgQVJJQSByYW5nZSBhdHRyaWJ1dGVzIGxpa2UKKyAgICAgICAgYXJpYS12YWx1
ZW5vdywgYXJpYS12YWx1ZW1pbiwgZXRjLiAtIGp1c3QgbGlrZSBzbGlkZXIsIHByb2dyZXNzYmFy
LAorICAgICAgICBhbmQgc2Nyb2xsYmFyLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkv
c3BpbmJ1dHRvbi12YWx1ZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
U3BpbkJ1dHRvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FyaWFSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZUZvclJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWluVmFsdWVGb3JS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJp
bmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0dl
bmVyaWNGb2N1c2FibGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbik6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEy
LTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEJ1aWxkIGZpeCBmb3IgV2luQ0UgYWZ0ZXIgcjEyNzgwMS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNp
b24gMTI3Njk2KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw2ICsxNTU2LDE0IEBAIEFjY2Vzc2li
aWxpdHlTb3J0RGlyZWN0aW9uIEFjY2Vzc2liaWxpdHkKICAgICAKICAgICByZXR1cm4gU29ydERp
cmVjdGlvbk5vbmU7CiB9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNSYW5n
ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNQcm9ncmVzc0luZGljYXRvcigpCisgICAg
ICAgIHx8IGlzU2xpZGVyKCkKKyAgICAgICAgfHwgaXNTY3JvbGxiYXIoKQorICAgICAgICB8fCBp
c1NwaW5CdXR0b24oKTsKK30KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9y
dHNBUklBRXhwYW5kZWQoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEyNzY5NikKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjYsNyArMzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNN
ZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNwaW5CdXR0
b25Sb2xlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IFRleHRBcmVhUm9sZSB8fCByb2xlVmFsdWUoKSA9PSBUZXh0RmllbGRSb2xl
OyB9CkBAIC00NjEsNiArNDYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBRXhw
YW5kZWQoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0
aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBj
b25zdDsKICAgICAKICAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMjc2OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTU2LDggKzExNTYsNyBAQCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0
eVJlCiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZURlc2NyaXB0aW9u
KCkgY29uc3QKIHsKLSAgICAvLyBPbmx5IHNsaWRlcnMgYW5kIHByb2dyZXNzIGJhcnMgc3VwcG9y
dCB2YWx1ZSBkZXNjcmlwdGlvbnMgY3VycmVudGx5LgotICAgIGlmICghaXNQcm9ncmVzc0luZGlj
YXRvcigpICYmICFpc1NsaWRlcigpKQorICAgIGlmICghaXNBUklBUmFuZ2UoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJpYV92YWx1
ZXRleHRBdHRyKS5zdHJpbmcoKTsKQEAgLTExNjcsMTAgKzExNjYsMTggQEAgZmxvYXQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c3RlcFZhbAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUo
c3RlcEF0dHIpLnRvRmxvYXQoKTsKIH0KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc0FSSUFSYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXJpYVJvbGUgPT0gUHJvZ3Jl
c3NJbmRpY2F0b3JSb2xlCisgICAgICAgIHx8IG1fYXJpYVJvbGUgPT0gU2xpZGVyUm9sZQorICAg
ICAgICB8fCBtX2FyaWFSb2xlID09IFNjcm9sbEJhclJvbGUKKyAgICAgICAgfHwgbV9hcmlhUm9s
ZSA9PSBTcGluQnV0dG9uUm9sZTsKK30KICAgICAKIGZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmICghaXNQcm9ncmVzc0luZGlj
YXRvcigpICYmICFpc1NsaWRlcigpICYmICFpc1Njcm9sbGJhcigpKQorICAgIGlmICghaXNBUklB
UmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KGFyaWFfdmFsdWVub3dBdHRyKS50b0Zsb2F0KCk7CkBAIC0xMTc4LDcgKzExODUsNyBAQCBmbG9h
dCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZUZvCiAKIGZsb2F0IEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmICghaXNQ
cm9ncmVzc0luZGljYXRvcigpICYmICFpc1NsaWRlcigpKQorICAgIGlmICghaXNBUklBUmFuZ2Uo
KSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFf
dmFsdWVtYXhBdHRyKS50b0Zsb2F0KCk7CkBAIC0xMTg2LDcgKzExOTMsNyBAQCBmbG9hdCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXhWYWx1CiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmICghaXNQcm9ncmVz
c0luZGljYXRvcigpICYmICFpc1NsaWRlcigpKQorICAgIGlmICghaXNBUklBUmFuZ2UoKSkKICAg
ICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVt
aW5BdHRyKS50b0Zsb2F0KCk7CkBAIC0xMzk4LDcgKzE0MDUsNyBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dGl0bGUoCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIAorICAgCiAgICAgaWYgKGlzSGVhZGluZygpIHx8IGlzTGluaygpKQogICAgICAg
ICByZXR1cm4gdGV4dFVuZGVyRWxlbWVudCgpOwogCkBAIC0zMTQwLDYgKzMxNDcsMTAgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0dlbmVyaQogICAgIGlmIChpc0NvbnRyb2wo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gSWYgaXQgaGFzIGFuIGFyaWEgcm9s
ZSwgaXQncyBub3QgZ2VuZXJpYy4KKyAgICBpZiAobV9hcmlhUm9sZSAhPSBVbmtub3duUm9sZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gSWYgdGhlIGNvbnRlbnQgZWRpdGFibGUg
YXR0cmlidXRlIGlzIHNldCBvbiB0aGlzIGVsZW1lbnQsIHRoYXQncyB0aGUgcmVhc29uCiAgICAg
Ly8gaXQncyBmb2N1c2FibGUsIGFuZCBleGlzdGluZyBsb2dpYyBzaG91bGQgaGFuZGxlIHRoaXMg
Y2FzZSBhbHJlYWR5IC0gc28gaXQncyBub3QgYQogICAgIC8vIGdlbmVyaWMgZm9jdXNhYmxlIGVs
ZW1lbnQuCkBAIC0zMzc2LDYgKzMzODcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFyaWFSb2xlCiAgICAgY2FzZSBTbGlkZXJSb2xlOgogICAgIGNhc2UgSW1hZ2VSb2xlOgog
ICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgorICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6
CiAgICAgLy8gY2FzZSBTZXBhcmF0b3JSb2xlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBk
ZWZhdWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEyNzY5NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDIsNiArMzAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRGVzY2Vu
ZGFudE9mRWxlbWVudFR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgY29uc3Q7CiAg
ICAgLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgaXQncyBmb2N1c2FibGUgYnV0IGl0J3Mgbm90IGNv
bnRlbnQgZWRpdGFibGUgYW5kIGl0J3Mgbm90IGEgY29udHJvbCBvciBBUklBIGNvbnRyb2wuCiAg
ICAgYm9vbCBpc0dlbmVyaWNGb2N1c2FibGVFbGVtZW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0FS
SUFSYW5nZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwogICAg
IHZvaWQgYWRkSW1hZ2VNYXBDaGlsZHJlbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIubW0JKHJldmlzaW9uIDEyNzY5NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTk5LDcgKzE5OTksNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
KE5TU3RyCiAgICAgICAgICAgICBpZiAoW1tbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0
dHJpYnV0ZV0pIAogICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXdd
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0
ZV07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1Byb2dyZXNzSW5kaWNhdG9y
KCkgfHwgbV9vYmplY3QtPmlzU2xpZGVyKCkgfHwgbV9vYmplY3QtPmlzU2Nyb2xsYmFyKCkpCisg
ICAgICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNSYW5nZVZhbHVlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+dmFsdWVGb3JSYW5nZSgp
XTsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTbGlkZXJUaHVtYlJvbGUp
CiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+
cGFyZW50T2JqZWN0KCktPnZhbHVlRm9yUmFuZ2UoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gMTI3ODM5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0wNyAgRG9taW5p
YyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBWDogQVJJQSBzcGlu
IGJ1dHRvbiBzaG91bGQgc3VwcG9ydCByYW5nZSB2YWx1ZSBhdHRyaWJ1dGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjA3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBzdXBwb3J0c1Jhbmdl
VmFsdWUgdG8gc2ltcGxpZnkgQ2hyb21pdW0gbG9naWMgZm9yIHdoZW4gdG8KKyAgICAgICAgZXh0
cmFjdCBhIHZhbHVlIGZyb20gYSByYW5nZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAg
ICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUmFuZ2VWYWx1ZSk6CisgICAgICAgIChXZWJL
aXQpOgorCiAyMDEyLTA5LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3ODIyLgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuaAkocmV2aXNpb24gMTI3Njk2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiAr
MTQ5LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dCB0aXRsZVVJRWxlbWVudCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIHVybCgp
IGNvbnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgpIGNv
bnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKICAgICBX
RUJLSVRfRVhQT1JUIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxMjc2OTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDYgKzYxMCwxNCBA
QCBXZWJVUkwgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsKCkgY29uCiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+dXJsKCk7CiB9CiAKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9y
dHNSYW5nZVZhbHVlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNEZXRhY2hlZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c1JhbmdlVmFsdWUo
KTsKK30KKwogV2ViU3RyaW5nIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZhbHVlRGVzY3JpcHRp
b24oKSBjb25zdAogewogICAgIGlmIChpc0RldGFjaGVkKCkpCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc2OTYpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0w
NyAgRG9taW5pYyBNYXp6b25pIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIE5ldyB0
aW1lIGlucHV0IG5lZWRzIGFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHZhbHVlRGVzY3JpcHRpb24gZm9y
IHRlc3RpbmcuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHA6CisgICAgICAgIChnZXRWYWx1ZURl
c2NyaXB0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNj
cmlwdGlvbkdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisKIDIwMTItMDktMDUgIFRvbnkgQ2hhbmcgIDx0b255
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBkZXBlbmRlbmN5IG9u
IHdlYmtpdF91c2VyX2FnZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMjc2OTYpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw2ICsyNTEsMTIgQEAgc3RyaW5nIGdldE9yaWVu
dGF0aW9uKGNvbnN0IFdlYkFjY2Vzc2liaQogICAgIHJldHVybiAiQVhPcmllbnRhdGlvbjogQVhI
b3Jpem9udGFsT3JpZW50YXRpb24iOwogfQogCitzdHJpbmcgZ2V0VmFsdWVEZXNjcmlwdGlvbihj
b25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit7CisgICAgc3RyaW5nIHZhbHVl
RGVzY3JpcHRpb24gPSBvYmplY3QudmFsdWVEZXNjcmlwdGlvbigpLnV0ZjgoKTsKKyAgICByZXR1
cm4gdmFsdWVEZXNjcmlwdGlvbi5pbnNlcnQoMCwgIkFYVmFsdWVEZXNjcmlwdGlvbjogIik7Cit9
CisKIHN0cmluZyBnZXRBdHRyaWJ1dGVzKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkKIHsKICAgICAvLyBGSVhNRTogQ29uY2F0ZW5hdGUgYWxsIGF0dHJpYnV0ZXMgb2YgdGhl
IEFjY2Vzc2liaWxpdHlPYmplY3QuCkBAIC0zMDMsNiArMzA5LDcgQEAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRQcm9wZXJ0eSgiaW50VmFsdWUiLCAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWVHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmlu
ZFByb3BlcnR5KCJtaW5WYWx1ZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZUdl
dHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoIm1heFZhbHVlIiwgJkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om1heFZhbHVlR2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQcm9wZXJ0eSgi
dmFsdWVEZXNjcmlwdGlvbiIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0
aW9uR2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgiY2hpbGRyZW5Db3VudCIsICZB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50R2V0dGVyQ2FsbGJhY2spOwogICAg
IGJpbmRQcm9wZXJ0eSgiaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyIiwgJkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlckdldHRlckNhbGxiYWNrKTsKICAgICBi
aW5kUHJvcGVydHkoInNlbGVjdGVkVGV4dFJhbmdlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdGVkVGV4dFJhbmdlR2V0dGVyQ2FsbGJhY2spOwpAQCAtNDUyLDYgKzQ1OSwxMSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlR2V0CiAgICAgcmVzdWx0LT5zZXQo
YWNjZXNzaWJpbGl0eU9iamVjdCgpLm1heFZhbHVlRm9yUmFuZ2UoKSk7CiB9CiAKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbkdldHRlckNhbGxiYWNrKENwcFZh
cmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldChnZXRWYWx1ZURlc2NyaXB0aW9uKGFj
Y2Vzc2liaWxpdHlPYmplY3QoKSkpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNoaWxkcmVuQ291bnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAg
aW50IGNvdW50ID0gMTsgLy8gUm9vdCBvYmplY3QgYWx3YXlzIGhhcyBvbmx5IG9uZSBjaGlsZCwg
dGhlIFdlYlZpZXcuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dENocm9taXVtLmgJKHJldmlzaW9uIDEyNzY5NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludFZhbHVlR2V0
dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgbWluVmFsdWVHZXR0ZXJDYWxsYmFj
ayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBtYXhWYWx1ZUdldHRlckNhbGxiYWNrKENwcFZhcmlh
bnQqKTsKKyAgICB2b2lkIHZhbHVlRGVzY3JpcHRpb25HZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50
Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNvdW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwog
ICAgIHZvaWQgaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyR2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgc2VsZWN0ZWRUZXh0UmFuZ2VHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50
Kik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc4MzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0wNyAgRG9taW5pYyBNYXp6
b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBWDogQVJJQSBzcGluIGJ1dHRv
biBzaG91bGQgc3VwcG9ydCByYW5nZSB2YWx1ZSBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjA3NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdGhhdCBhbiBBUklBIHNwaW4gYnV0
dG9uIGV4cG9zZXMgQVJJQSByYW5nZSBhdHRyaWJ1dGVzIGxpa2UKKyAgICAgICAgYXJpYS12YWx1
ZW5vdywgYXJpYS12YWx1ZW1pbiwgZXRjLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9zcGlu
YnV0dG9uLXZhbHVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9zcGluYnV0dG9uLXZhbHVlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTA2ICBBbm5hIENhdmVu
ZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWJhc2VsaW5lcyBkdWUgdG8g
cjEyNzgzMS4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3BpbmJ1dHRvbi12YWx1
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9z
cGluYnV0dG9uLXZhbHVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvc3BpbmJ1dHRvbi12YWx1ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTYgQEAKKworNDIKK1RoaXMgdGVzdHMgdGhhdCBhIHNwaW4gYnV0dG9uIHN1
cHBvcnRzIHJhbmdlIHZhbHVlIGF0dHJpYnV0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGVuZHNXaXRoKGF4U3Bpbi5pbnRWYWx1ZSwgJzUnKSBpcyB0cnVlCitQQVNT
IGVuZHNXaXRoKGF4U3Bpbi5taW5WYWx1ZSwgJzEnKSBpcyB0cnVlCitQQVNTIGVuZHNXaXRoKGF4
U3Bpbi5tYXhWYWx1ZSwgJzknKSBpcyB0cnVlCitQQVNTIGVuZHNXaXRoKGF4U3Bpbi52YWx1ZURl
c2NyaXB0aW9uLCAnNSBvZiA5JykgaXMgdHJ1ZQorUEFTUyBheFNwaW4udGl0bGUgaXMgYXhVbnRp
dGxlZC50aXRsZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3Bp
bmJ1dHRvbi12YWx1ZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zcGluYnV0dG9uLXZh
bHVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zcGluYnV0
dG9uLXZhbHVlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3NwaW5idXR0b24tdmFsdWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPGJ1dHRvbiBpZD0idW50aXRsZWQi
PjwvYnV0dG9uPgorCis8ZGl2IGlkPSJzcGluIgorICAgICB0YWJpbmRleD0iMCIKKyAgICAgcm9s
ZT0ic3BpbmJ1dHRvbiIKKyAgICAgYXJpYS12YWx1ZXRleHQ9IjUgb2YgOSIKKyAgICAgYXJpYS12
YWx1ZW1pbj0iMSIKKyAgICAgYXJpYS12YWx1ZW1heD0iOSIKKyAgICAgYXJpYS12YWx1ZW5vdz0i
NSI+NDI8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIHNwaW4gYnV0dG9uIHN1cHBvcnRzIHJhbmdlIHZhbHVl
IGF0dHJpYnV0ZXMuIikKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KworICAgIGZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc3VmZml4KSB7CisgICAgICAgIHN0ciA9ICcn
ICsgc3RyOworICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdHIubGVuZ3RoIC0gc3VmZml4Lmxl
bmd0aCkgPT0gc3VmZml4OworICAgIH0KKworICAgIHZhciB1bnRpdGxlZCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd1bnRpdGxlZCcpOworICAgIHVudGl0bGVkLmZvY3VzKCk7CisgICAgd2lu
ZG93LmF4VW50aXRsZWQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KworICAgIHZhciBzcGluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW4nKTsKKyAgICBz
cGluLmZvY3VzKCk7CisgICAgd2luZG93LmF4U3BpbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OworCisgICAgLy8gVGVzdCByYW5nZSB2YWx1ZSBhdHRyaWJ1dGVzLgor
ICAgIHNob3VsZEJlKCJlbmRzV2l0aChheFNwaW4uaW50VmFsdWUsICc1JykiLCAidHJ1ZSIpOwor
ICAgIHNob3VsZEJlKCJlbmRzV2l0aChheFNwaW4ubWluVmFsdWUsICcxJykiLCAidHJ1ZSIpOwor
ICAgIHNob3VsZEJlKCJlbmRzV2l0aChheFNwaW4ubWF4VmFsdWUsICc5JykiLCAidHJ1ZSIpOwor
ICAgIHNob3VsZEJlKCJlbmRzV2l0aChheFNwaW4udmFsdWVEZXNjcmlwdGlvbiwgJzUgb2YgOScp
IiwgInRydWUiKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgdGl0bGUgZG9lc24ndCBjb21lIGZy
b20gdGhlIGlubmVyIHRleHQuIEl0IHNob3VsZCBqdXN0IGJlIGVtcHR5IGlmCisgICAgLy8gbm90
IG90aGVyd2lzZSBzcGVjaWZpZWQuCisgICAgc2hvdWxkQmUoImF4U3Bpbi50aXRsZSIsICJheFVu
dGl0bGVkLnRpdGxlIik7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3BpbmJ1dHRv
bi12YWx1ZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0
bWwKQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>