<?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>91293</bug_id>
          
          <creation_ts>2012-07-13 15:44:44 -0700</creation_ts>
          <short_desc>Position grid items by row/column index</short_desc>
          <delta_ts>2012-07-16 12:10:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>669515</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-13 15:44:44 -0700</bug_when>
    <thetext>Position grid items by row/column index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669539</commentid>
    <comment_count>1</comment_count>
      <attachid>152363</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-13 16:06:47 -0700</bug_when>
    <thetext>Created attachment 152363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669542</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-13 16:07:52 -0700</bug_when>
    <thetext>First patch for grid layout!  It&apos;s very basic and only handles fixed size tracks and doesn&apos;t resize grid items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669557</commentid>
    <comment_count>3</comment_count>
      <attachid>152363</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-13 16:25:09 -0700</bug_when>
    <thetext>Comment on attachment 152363
Patch

Attachment 152363 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13235287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669592</commentid>
    <comment_count>4</comment_count>
      <attachid>152363</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-13 16:46:54 -0700</bug_when>
    <thetext>Comment on attachment 152363
Patch

Attachment 152363 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13237291</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669602</commentid>
    <comment_count>5</comment_count>
      <attachid>152377</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-13 16:57:02 -0700</bug_when>
    <thetext>Created attachment 152377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669679</commentid>
    <comment_count>6</comment_count>
      <attachid>152377</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-13 19:17:24 -0700</bug_when>
    <thetext>Comment on attachment 152377
Patch

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

Looks great! Just a bunch of request for FIXMEs. :)

&gt; Source/WebCore/rendering/RenderGrid.cpp:43
&gt; +    LayoutUnit m_usedBreadth;

I&apos;m not a huge fan of usedBreadth for this. How about just m_size? Then you&apos;d have computeSizeOfGridTracks, which seems very natural to me.

Ugh, I see now that this is matching the terminology in the spec. I suppose that makes sense and will make development/maintenance easier. Can you add a comment to that effect in the ChangeLog?

&gt; Source/WebCore/rendering/RenderGrid.cpp:57
&gt; +void RenderGrid::layoutBlock(bool relayoutChildren, LayoutUnit)

Lol. This looks familiar. At some point we should step back and see if RenderFlexibleBox and RenderGrid could share more of this code with RenderBlock. There&apos;s just too much boilerplate. Add a FIXME?

&gt; Source/WebCore/rendering/RenderGrid.cpp:81
&gt; +    // For overflow:scroll blocks, ensure we have both scrollbars in place always.

Meh to this useless comment.

&gt; Source/WebCore/rendering/RenderGrid.cpp:148
&gt; +

Extra line break.

&gt; Source/WebCore/rendering/RenderGrid.cpp:151
&gt; +    // FIXME: Handle border &amp; padding on the grid element.

Duplicated comment with line 146.

&gt; Source/WebCore/rendering/RenderGrid.cpp:159
&gt; +    Length column = child-&gt;style()-&gt;gridItemColumn();
&gt; +    Length row = child-&gt;style()-&gt;gridItemRow();

Length doesn&apos;t seem like the right type for these. From the spec: [[&lt;integer&gt;|&lt;string&gt;|start][&lt;integer&gt;|&lt;string&gt;|end]?]|auto.

Not sure what the type should be, but it&apos;s certainly not Length. We might need to define a new type. Add a FIXME?

&gt; Source/WebCore/rendering/RenderGrid.cpp:161
&gt; +    if (!column.isPositive() || !row.isPositive())

The spec doesn&apos;t seem to cover what to do with non-positive values, but specifies the type as integer...so non-positive is allowed. Not sure if there&apos;s a use-case. Either way, we should bring it up with the CSSWG. If non-positive isn&apos;t allowed, we should be clamping these to 1 in the CSSParser, right? For now, can you add a FIXME?

&gt; Source/WebCore/rendering/RenderGrid.cpp:169
&gt; +    size_t columnTrack = static_cast&lt;size_t&gt;(column.getFloatValue()) - 1;
&gt; +    size_t rowTrack = static_cast&lt;size_t&gt;(row.getFloatValue()) - 1;

These should just use intValue() and ints instead of size_t&apos;s, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670515</commentid>
    <comment_count>7</comment_count>
      <attachid>152574</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-16 11:37:03 -0700</bug_when>
    <thetext>Created attachment 152574
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670518</commentid>
    <comment_count>8</comment_count>
      <attachid>152377</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-16 11:41:18 -0700</bug_when>
    <thetext>Comment on attachment 152377
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:151
&gt;&gt; +    // FIXME: Handle border &amp; padding on the grid element.
&gt; 
&gt; Duplicated comment with line 146.

We have to handle it in both places and I didn&apos;t want to forget.

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:159
&gt;&gt; +    Length row = child-&gt;style()-&gt;gridItemRow();
&gt; 
&gt; Length doesn&apos;t seem like the right type for these. From the spec: [[&lt;integer&gt;|&lt;string&gt;|start][&lt;integer&gt;|&lt;string&gt;|end]?]|auto.
&gt; 
&gt; Not sure what the type should be, but it&apos;s certainly not Length. We might need to define a new type. Add a FIXME?

Right, it shouldn&apos;t be a Length, but that&apos;s what we&apos;re currently using to hold auto or integer.  We can fix this in a follow up (once we can parse more than just auto and ints.

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:169
&gt;&gt; +    size_t rowTrack = static_cast&lt;size_t&gt;(row.getFloatValue()) - 1;
&gt; 
&gt; These should just use intValue() and ints instead of size_t&apos;s, no?

Switched to intValue, but still using size_t because {column,row}Tracks.size() returns a size_t.  These should both be unsigned since we checked isPositive above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670545</commentid>
    <comment_count>9</comment_count>
      <attachid>152574</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-16 12:10:10 -0700</bug_when>
    <thetext>Comment on attachment 152574
Patch for landing

Clearing flags on attachment: 152574

Committed r122747: &lt;http://trac.webkit.org/changeset/122747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670546</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-16 12:10:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152363</attachid>
            <date>2012-07-13 16:06:47 -0700</date>
            <delta_ts>2012-07-13 16:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91293-20120713160706.patch</filename>
            <type>text/plain</type>
            <size>16640</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlZTcxZGZjNDgyNGZm
YTk2MWUwMzc3OTkyODkwMTUyMTNmZGE4Mi4uMzNmNDg1MzZlNmI5YjJiYWU4OGNkOTcyYjQyMDlk
ZDliZDgwMTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTEzICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gZ3JpZCBpdGVt
cyBieSByb3cvY29sdW1uIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTI5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERvIHNvbWUgaW5pdGlhbCBncmlkIHBvc2l0aW9uaW5nLiBPbmx5IGhhbmRs
ZSB0aGUgc2ltcGxlIGNhc2Ugd2hlcmUgdHJhY2tzIGFyZQorICAgICAgICBmaXhlZCB2YWx1ZXMg
YW5kIGRvbid0IHByb3Blcmx5IHNpemUgdGhlIGdyaWQgaXRlbXMuIFRoaXMgZ2l2ZXMgdXMgc29t
ZXRoaW5nIHRvCisgICAgICAgIHdvcmsgd2l0aCBhbmQgc3RhcnRzIGltcGxlbWVudGluZyB0aGUg
IkdyaWQgVHJhY2sgU2l6aW5nIEFsZ29yaXRobSI6CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3Jn
L2Nzc3dnL2NzczMtZ3JpZC1sYXlvdXQvI2dyaWQtdHJhY2stc2l6aW5nLWFsZ29yaXRobTAKKwor
ICAgICAgICBUZXN0OiBmYXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5LWluZGV4Lmh0
bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFJlbmRl
ckdyaWQ6OkdyaWRUcmFjayk6IERhdGEgc3RydWN0dXJlIGZvciBob2xkaW5nIHRoZSB0cmFjayBz
aXplLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2spOiBQdWxsIGlu
IHNvbWUgYm9pbGVyIHBsYXRlIGNvZGUgYW5kIHB1dCB0aGUKKyAgICAgICAgZ3JpZCBzcGVjaWZp
YyBjb2RlIGluIGxheW91dEdyaWRJdGVtcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOiBJbXBsZW1lbnQgcGFydCBvZiB0aGUg
Z3JpZCB0cmFjayBzaXppbmcgYWxnb3JpdGhtLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6bGF5b3V0R3JpZEl0ZW1zKTogQ29tcHV0ZSB0aGUgc2l6ZSBvZiBncmlkIHRyYWNrcywgbGF5
b3V0IGFuZCBwb3NpdGlvbiBjaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbik6IE1hcCB0cmFjayBzaXplcyB0byB0aGUgYWN0dWFs
IHBvc2l0aW9uIG9mIHRoZSBjaGlsZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBKdXN0IHJldHVybiBh
IGNvcHkgb2YgTGVuZ3RoIHJhdGhlciB0aGFuIGEgcmVmZXJlbmNlIHRvIExlbmd0aC4gVGhpcyBz
ZWVtcworICAgICAgICBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBnZXR0ZXJzIHRoYXQgcmV0
dXJuIGEgTGVuZ3RoLgorCiAyMDEyLTA3LTEzICBWaW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1v
dG9yb2xhLmNvbT4KIAogICAgICAgICBSZXN0cnVjdHVyZSBWOFV0aWxpdGllczo6ZXh0cmFjdFRy
YW5zZmVyYWJsZXMoKSB3aXRoIGhlbHAgb2YgdG9WOFNlcXVlbmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA4ODNlMTcxMGIwMTAyYjk2YmU4ZGUyNDkyNWFh
YWJjNzgzODkzYWQ3Li42M2JjMTRjZDA5MmE3NDk2YzEwYTE1MDhlMWIyYjUyOWYyZThiYTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yNCwxMSArMjQsMjQg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJSZW5kZXJHcmlkLmgi
CiAKKyNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBSZW5kZXJHcmlkOjpHcmlkVHJhY2sgeworcHVibGljOgorICAgIEdyaWRUcmFjaygpCisgICAg
ICAgIDogbV91c2VkQnJlYWR0aCgwKQorICAgIHsKKyAgICB9CisKKyAgICBMYXlvdXRVbml0IG1f
dXNlZEJyZWFkdGg7Cit9OworCiBSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKE5vZGUqIG5vZGUpCiAg
ICAgOiBSZW5kZXJCbG9jayhub2RlKQogewpAQCAtNDAsMTAgKzUzLDEyOCBAQCBSZW5kZXJHcmlk
Ojp+UmVuZGVyR3JpZCgpCiB7CiB9CiAKLXZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KQordm9pZCBS
ZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQp
Cit7CisgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOworCisgICAgaWYgKCFyZWxheW91dENoaWxk
cmVuICYmIHNpbXBsaWZpZWRMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0
UmVwYWludGVyIHJlcGFpbnRlcigqdGhpcywgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkp
OworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIGxv
Y2F0aW9uT2Zmc2V0KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHls
ZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKworICAgIGlmIChpblJlbmRlckZs
b3dUaHJlYWQoKSkgeworICAgICAgICAvLyBSZWdpb25zIGNoYW5naW5nIHdpZHRocyBjYW4gZm9y
Y2UgdXMgdG8gcmVsYXlvdXQgb3VyIGNoaWxkcmVuLgorICAgICAgICBpZiAobG9naWNhbFdpZHRo
Q2hhbmdlZEluUmVnaW9ucygpKQorICAgICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7
CisgICAgfQorICAgIGNvbXB1dGVJbml0aWFsUmVnaW9uUmFuZ2VGb3JCbG9jaygpOworCisgICAg
TGF5b3V0U2l6ZSBwcmV2aW91c1NpemUgPSBzaXplKCk7CisKKyAgICBzZXRMb2dpY2FsSGVpZ2h0
KDApOworICAgIGNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKKworICAgIG1fb3ZlcmZsb3cuY2xlYXIo
KTsKKworICAgIC8vIEZvciBvdmVyZmxvdzpzY3JvbGwgYmxvY2tzLCBlbnN1cmUgd2UgaGF2ZSBi
b3RoIHNjcm9sbGJhcnMgaW4gcGxhY2UgYWx3YXlzLgorICAgIGlmIChzY3JvbGxzT3ZlcmZsb3co
KSkgeworICAgICAgICBpZiAoc3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT1NDUk9MTCkKKyAgICAg
ICAgICAgIGxheWVyKCktPnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIodHJ1ZSk7CisgICAgICAg
IGlmIChzdHlsZSgpLT5vdmVyZmxvd1koKSA9PSBPU0NST0xMKQorICAgICAgICAgICAgbGF5ZXIo
KS0+c2V0SGFzVmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7CisgICAgfQorCisgICAgbGF5b3V0R3Jp
ZEl0ZW1zKCk7CisKKyAgICBMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRWRnZSA9IGNsaWVudExv
Z2ljYWxCb3R0b20oKTsKKyAgICBjb21wdXRlTG9naWNhbEhlaWdodCgpOworCisgICAgaWYgKHNp
emUoKSAhPSBwcmV2aW91c1NpemUpCisgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwor
CisgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3Qo
KSk7CisKKyAgICBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jaygpOworCisgICAgY29tcHV0ZU92
ZXJmbG93KG9sZENsaWVudEFmdGVyRWRnZSk7CisgICAgc3RhdGVQdXNoZXIucG9wKCk7CisKKyAg
ICB1cGRhdGVMYXllclRyYW5zZm9ybSgpOworCisgICAgLy8gVXBkYXRlIG91ciBzY3JvbGwgaW5m
b3JtYXRpb24gaWYgd2UncmUgb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuIG5vdyB0aGF0IHdl
IGtub3cgaWYKKyAgICAvLyB3ZSBvdmVyZmxvdyBvciBub3QuCisgICAgaWYgKGhhc092ZXJmbG93
Q2xpcCgpKQorICAgICAgICBsYXllcigpLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsK
KworICAgIHJlcGFpbnRlci5yZXBhaW50QWZ0ZXJMYXlvdXQoKTsKKworICAgIHNldE5lZWRzTGF5
b3V0KGZhbHNlKTsKK30KKwordm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRoT2ZH
cmlkVHJhY2tzKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFj
az4mIHRyYWNrcykKK3sKKyAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgdHJhY2tTdHlsZXMgPSAo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKSA6IHN0eWxl
KCktPmdyaWRSb3dzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja1N0eWxlcy5z
aXplKCk7ICsraSkgeworICAgICAgICBHcmlkVHJhY2sgdHJhY2s7CisgICAgICAgIGlmICh0cmFj
a1N0eWxlc1tpXS5pc0ZpeGVkKCkpCisgICAgICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRoID0g
dHJhY2tTdHlsZXNbaV0uZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgICAgIHRyYWNrcy5hcHBlbmQodHJhY2spOworICAg
IH0KK30KKwordm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMoKQoreworICAgIFZlY3Rv
cjxHcmlkVHJhY2s+IGNvbHVtblRyYWNrcywgcm93VHJhY2tzOworICAgIGNvbXB1dGVkVXNlZEJy
ZWFkdGhPZkdyaWRUcmFja3MoRm9yQ29sdW1ucywgY29sdW1uVHJhY2tzKTsKKyAgICAvLyBGSVhN
RTogVGhlIGxvZ2ljYWwgd2lkdGggb2YgR3JpZCBDb2x1bW5zIGZyb20gdGhlIHByaW9yIHN0ZXAg
aXMgdXNlZCBpbgorICAgIC8vIHRoZSBmb3JtYXR0aW5nIG9mIEdyaWQgaXRlbXMgaW4gY29udGVu
dC1zaXplZCBHcmlkIFJvd3MgdG8gZGV0ZXJtaW5lCisgICAgLy8gdGhlaXIgcmVxdWlyZWQgaGVp
Z2h0LiBXZSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gcGFzcyBjb2x1bW5zIHRocm91Z2guCisgICAg
Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhGb3JSb3dzLCByb3dUcmFja3MpOworCisg
ICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAgICBMYXlvdXRQb2ludCBjaGlsZFBv
c2l0aW9uID0gZmluZENoaWxkTG9naWNhbFBvc2l0aW9uKGNoaWxkLCBjb2x1bW5UcmFja3MsIHJv
d1RyYWNrcyk7CisgICAgICAgIC8vIEZJWE1FOiBHcmlkIGl0ZW1zIHNob3VsZCBzdHJldGNoIHRv
IGZpbGwgdGhlaXIgY2VsbHMuIE9uY2Ugd2UKKyAgICAgICAgLy8gaW1wbGVtZW50IGdyaWQte2Nv
bHVtbixyb3d9LWFsaWduLCB3ZSBjYW4gYWxzbyBzaHJpbmsgdG8gZml0LiBGb3IKKyAgICAgICAg
Ly8gbm93LCBqdXN0IHNpemUgYXMgaWYgd2Ugd2VyZSBhIHJlZ3VsYXIgY2hpbGQuCisgICAgICAg
IGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworCisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgYm9y
ZGVyICYgcGFkZGluZyBvbiB0aGUgZ3JpZCBlbGVtZW50LgorICAgICAgICBjaGlsZC0+c2V0TG9n
aWNhbExvY2F0aW9uKGNoaWxkUG9zaXRpb24pOworCisgICAgfQorCisgICAgLy8gRklYTUU6IEhh
bmRsZSBib3JkZXIgJiBwYWRkaW5nIG9uIHRoZSBncmlkIGVsZW1lbnQuCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByb3dUcmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHNldExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodCgpICsgcm93VHJhY2tzW2ldLm1fdXNlZEJyZWFkdGgpOworfQor
CitMYXlvdXRQb2ludCBSZW5kZXJHcmlkOjpmaW5kQ2hpbGRMb2dpY2FsUG9zaXRpb24oUmVuZGVy
Qm94KiBjaGlsZCwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgY29uc3Qg
VmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcykKIHsKLSAgICAvLyBGb3Igbm93IGp1c3QgY2Fs
bCB0aGUgYmFzZSBjbGFzcy4KLSAgICBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2socmVsYXlvdXRD
aGlsZHJlbiwgcGFnZUxvZ2ljYWxIZWlnaHQpOworICAgIExlbmd0aCBjb2x1bW4gPSBjaGlsZC0+
c3R5bGUoKS0+Z3JpZEl0ZW1Db2x1bW4oKTsKKyAgICBMZW5ndGggcm93ID0gY2hpbGQtPnN0eWxl
KCktPmdyaWRJdGVtUm93KCk7CisKKyAgICBpZiAoIWNvbHVtbi5pc1Bvc2l0aXZlKCkgfHwgIXJv
dy5pc1Bvc2l0aXZlKCkpCisgICAgICAgIHJldHVybiBMYXlvdXRQb2ludCgpOworCisgICAgLy8g
RklYTUU6IEhhbmRsZSBvdGhlciB2YWx1ZXMgZm9yIGdyaWQte3Jvdyxjb2x1bW59IGxpa2UgcmFu
Z2VzIG9yIGxpbmUgbmFtZXMuCisgICAgaWYgKCFjb2x1bW4uaXNGaXhlZCgpIHx8ICFyb3cuaXNG
aXhlZCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsKKworICAgIHNpemVfdCBjb2x1
bW5UcmFjayA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29sdW1uLmdldEZsb2F0VmFsdWUoKSkgLSAx
OworICAgIHNpemVfdCByb3dUcmFjayA9IHN0YXRpY19jYXN0PHNpemVfdD4ocm93LmdldEZsb2F0
VmFsdWUoKSkgLSAxOworCisgICAgTGF5b3V0UG9pbnQgb2Zmc2V0OworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY29sdW1uVHJhY2sgJiYgaSA8IChjb2x1bW5UcmFja3Muc2l6ZSgpKTsgKytp
KQorICAgICAgICBvZmZzZXQuc2V0WChvZmZzZXQueCgpICsgY29sdW1uVHJhY2tzW2ldLm1fdXNl
ZEJyZWFkdGgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm93VHJhY2sgJiYgaSA8IChy
b3dUcmFja3Muc2l6ZSgpKTsgKytpKQorICAgICAgICBvZmZzZXQuc2V0WShvZmZzZXQueSgpICsg
cm93VHJhY2tzW2ldLm1fdXNlZEJyZWFkdGgpOworCisgICAgLy8gRklYTUU6IEhhbmRsZSBtYXJn
aW5zIG9uIHRoZSBncmlkIGl0ZW0uCisgICAgcmV0dXJuIG9mZnNldDsKIH0KIAogY29uc3QgY2hh
ciogUmVuZGVyR3JpZDo6cmVuZGVyTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaAppbmRleCAyODQ5OGZlNDMyZDY0NzFkZTQxNGFlOTkyMTVkYzU5MzU4MGExNDUz
Li44MjliZjg4NjI0NDJiZTllYTEzZjQxNmM4ZGMxYWEyN2JjYmM5MTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTQwLDYgKzQwLDE0IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXZv
aWRzRmxvYXRzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgor
ICAgIGNsYXNzIEdyaWRUcmFjazsKKyAgICBlbnVtIFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsgRm9y
Q29sdW1ucywgRm9yUm93cyB9OworICAgIHZvaWQgY29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRy
YWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mKTsKKyAgICB2b2lk
IGxheW91dEdyaWRJdGVtcygpOworCisgICAgTGF5b3V0UG9pbnQgZmluZENoaWxkTG9naWNhbFBv
c2l0aW9uKFJlbmRlckJveCosIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3Ms
IGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiByb3dUcmFja3MpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAppbmRleCBjZjRmN2JhOTgxODE2MjkzZDBmNzQxYWE5NGFiNzMwZGM3MTRhMjg1Li45MmExNWFh
ZWE3YzNmZTFlYTRlODQzOTc5NWJkZjFkMGM4Yjg5NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtODMwLDggKzgzMCw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgZ3JpZENvbHVtbnMoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5zOyB9CiAgICAgY29uc3Qg
VmVjdG9yPExlbmd0aD4mIGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93czsgfQogCi0gICAgY29uc3QgTGVuZ3RoJiBncmlkSXRl
bUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVt
LT5tX2dyaWRDb2x1bW47IH0KLSAgICBjb25zdCBMZW5ndGgmIGdyaWRJdGVtUm93KCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0tPm1fZ3JpZFJvdzsgfQor
ICAgIExlbmd0aCBncmlkSXRlbUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRDb2x1bW47IH0KKyAgICBMZW5ndGggZ3JpZEl0ZW1S
b3coKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9n
cmlkUm93OyB9CiAKICAgICBjb25zdCBTaGFkb3dEYXRhKiBib3hTaGFkb3coKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3cuZ2V0KCk7IH0KICAgICB2b2lk
IGdldEJveFNoYWRvd0V4dGVudChMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBM
YXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0IHsgZ2V0U2hhZG93RXh0
ZW50KGJveFNoYWRvdygpLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOyB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODI4
ZGUyZDM3YjVlMDUxNmQ3ZDQ3MjUzZWVlYmQwOGI1MmU2M2QwNS4uNmQ4OWZhYTM4NzczODFmY2Vh
NTE2MDEwYTBhZDJlNDBmYjQxNjYyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTEz
ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gZ3Jp
ZCBpdGVtcyBieSByb3cvY29sdW1uIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTI5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgZm9yIGdyaWQgbGF5b3V0IGluIGVhY2ggd3Jp
dGluZyBtb2RlIGRpcmVjdGlvbi4gIFRoZSBoZWlnaHQgaW4gdmVydGljYWwgd3JpdGluZyBtb2Rl
IGlzIGluY29ycmVjdCBmb3Igbm93LgorCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
Y29udGFpbmluZy1ibG9jay1ncmlkcy1leHBlY3RlZC5odG1sOiBTY29wZSA8cD4gYXJvdW5kIHRl
eHQgb25seS4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9jb250YWluaW5nLWJsb2Nr
LWdyaWRzLmh0bWw6IEZpeCBtaXNzaW5nIGNsb3NpbmcgPC9kaXY+LgorICAgICAgICAqIGZhc3Qv
Y3NzLWdyaWQtbGF5b3V0L3BsYWNlLWNlbGwtYnktaW5kZXgtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5LWluZGV4Lmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA3LTEzICBWaW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xh
LmNvbT4KIAogICAgICAgICBSZXN0cnVjdHVyZSBWOFV0aWxpdGllczo6ZXh0cmFjdFRyYW5zZmVy
YWJsZXMoKSB3aXRoIGhlbHAgb2YgdG9WOFNlcXVlbmNlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2NvbnRhaW5pbmctYmxvY2stZ3JpZHMtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2NvbnRhaW5pbmctYmxvY2st
Z3JpZHMtZXhwZWN0ZWQuaHRtbAppbmRleCA1NzNmMmI1YWQ0ZjhiMjk1OTI1Njg2YmU1ODFiZjk1
ZWE2ODE1Y2VhLi5hOTc4MTJhMGRiMDZkY2EyZDU5MjdmMTU4YmZjZWRkNTczYmZiODI5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9jb250YWluaW5nLWJsb2Nr
LWdyaWRzLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvY29udGFpbmluZy1ibG9jay1ncmlkcy1leHBlY3RlZC5odG1sCkBAIC02LDggKzYsNyBAQAog
ICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwPkdyaWRzIGNhbiBhY3QgYXMgY29udGFp
bmluZyBibG9ja3MgZm9yIHBvc2l0aW9uZWQgY29udGVudC4KKzxwPkdyaWRzIGNhbiBhY3QgYXMg
Y29udGFpbmluZyBibG9ja3MgZm9yIHBvc2l0aW9uZWQgY29udGVudC48L3A+CiA8ZGl2IHN0eWxl
PSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+
PC9kaXY+Ci08L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1ncmlkLWxheW91dC9jb250YWluaW5nLWJsb2NrLWdyaWRzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9jb250YWluaW5nLWJsb2NrLWdyaWRzLmh0bWwKaW5k
ZXggYTZhZTc3MWEzODVlNWI2N2YyNzMwNTA5MDhhZGU4ZGIxMjUyMmY0Yy4uOGJiNGI4YWJkZjc5
Y2E1M2I4MmE3NGIzMTUxZjU4NTM2N2JjNTJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ3JpZC1sYXlvdXQvY29udGFpbmluZy1ibG9jay1ncmlkcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2NvbnRhaW5pbmctYmxvY2stZ3JpZHMuaHRtbApA
QCAtMTIsOSArMTIsOCBAQAogICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwPkdyaWRz
IGNhbiBhY3QgYXMgY29udGFpbmluZyBibG9ja3MgZm9yIHBvc2l0aW9uZWQgY29udGVudC4KLTxk
aXYgY2xhc3M9InJlbGF0aXZlLXBvc2l0aW9uZWQtZ3JpZCIgc3R5bGU9ImRpc3BsYXk6IC13ZWJr
aXQtZ3JpZCI+PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IGxlZnQ6IDA7IHRv
cDogMCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWxhdGl2ZS1wb3NpdGlvbmVkLWlubGluZS1ncmlk
IiBzdHlsZT0iZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZ3JpZCI+PGRpdiBzdHlsZT0iYmFja2dy
b3VuZC1jb2xvcjpncmVlbjsgbGVmdDogMDsgdG9wOiAwIj48L2Rpdj4KLTwvcD4KKzxwPkdyaWRz
IGNhbiBhY3QgYXMgY29udGFpbmluZyBibG9ja3MgZm9yIHBvc2l0aW9uZWQgY29udGVudC48L3A+
Cis8ZGl2IGNsYXNzPSJyZWxhdGl2ZS1wb3NpdGlvbmVkLWdyaWQiIHN0eWxlPSJkaXNwbGF5OiAt
d2Via2l0LWdyaWQiPjxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBsZWZ0OiAw
OyB0b3A6IDAiPjwvZGl2PjwvZGl2PgorPGRpdiBjbGFzcz0icmVsYXRpdmUtcG9zaXRpb25lZC1p
bmxpbmUtZ3JpZCIgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWdyaWQiPjxkaXYgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6Z3JlZW47IGxlZnQ6IDA7IHRvcDogMCI+PC9kaXY+PC9kaXY+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlk
LWxheW91dC9wbGFjZS1jZWxsLWJ5LWluZGV4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdyaWQtbGF5b3V0L3BsYWNlLWNlbGwtYnktaW5kZXgtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQyY2VjYzhiMTk3NDc2NzY2YjRjMzllMzViYzI4MzUzZThlNWQwZTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5
LWluZGV4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHNvbWUgc2ltcGxlIGdy
aWQgbGF5b3V0cyBieSBwb3NpdGlvbmluZyBncmlkIGl0ZW1zIGJ5IGluZGV4LgorCitQQVNTCitQ
QVNTCitGQUlMOgorRXhwZWN0ZWQgMTEwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMTUuIAorCis8ZGl2
IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOyBt
YXJnaW4tYm90dG9tOiA2MHB4OyIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PSIxMTAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtb2Zmc2V0LXg9IjQwIiBkYXRh
LW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLW9mZnNldC14PSI0MCIg
ZGF0YS1vZmZzZXQteT0iNTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImMiIGRhdGEtb2Zmc2V0LXg9
IjIwIiBkYXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkIiBkYXRhLW9mZnNl
dC14PSIyMCIgZGF0YS1vZmZzZXQteT0iNTAiPjwvZGl2PgorPC9kaXY+CitGQUlMOgorRXhwZWN0
ZWQgMTEwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMTUuIAorCis8ZGl2IGNsYXNzPSJncmlkIiBzdHls
ZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyBtYXJnaW4tYm90dG9tOiA2MHB4
OyIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiPgor
ICAgIDxkaXYgaWQ9ImEiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjAiPjwvZGl2
PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJjIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZzZXQteT0i
MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iZCIgZGF0YS1vZmZzZXQteD0iMjAiIGRhdGEtb2Zmc2V0
LXk9IjUwIj48L2Rpdj4KKzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvcGxhY2UtY2VsbC1ieS1pbmRleC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtZ3JpZC1sYXlvdXQvcGxhY2UtY2VsbC1ieS1pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3Yjk3
OGNhZjE4ZGVjNTVjZTU5YzM5MzA1NWFmNjRmNmZhYWIwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5LWluZGV4Lmh0bWwK
QEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0Q1NTR3JpZExheW91dEVuYWJsZWQiLCAxKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKK30KKzwvc2NyaXB0PgorPHN0eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13ZWJr
aXQtZ3JpZDsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogNTBweCA2MHB4OworICAgIC13ZWJr
aXQtZ3JpZC1yb3dzOiAyMHB4IDMwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsKKyAg
ICBtYXgtd2lkdGg6IDExMHB4OworfQorCisjYSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1
ZTsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDE7
CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxNXB4OworfQorI2IgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDI7CisgICAgLXdl
YmtpdC1ncmlkLXJvdzogMTsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDE1cHg7Cit9
CisjYyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIC13ZWJraXQtZ3JpZC1jb2x1
bW46IDE7CisgICAgLXdlYmtpdC1ncmlkLXJvdzogMjsKKyAgICB3aWR0aDogMTBweDsKKyAgICBo
ZWlnaHQ6IDE1cHg7Cit9CisjZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOworICAg
IC13ZWJraXQtZ3JpZC1jb2x1bW46IDI7CisgICAgLXdlYmtpdC1ncmlkLXJvdzogMjsKKyAgICB3
aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDE1cHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9jaGVjay1sYXlvdXQuanMiPjwvc2NyaXB0PgorPGJvZHkgb25sb2Fk
PSJjaGVja0xheW91dCgnLmdyaWQnKSI+CisKKzxwPlRlc3Qgc29tZSBzaW1wbGUgZ3JpZCBsYXlv
dXRzIGJ5IHBvc2l0aW9uaW5nIGdyaWQgaXRlbXMgYnkgaW5kZXguPC9wPgorCis8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iZ3JpZCIgZGF0YS1leHBlY3RlZC13
aWR0aD0iMTEwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAiPgorICAgIDxkaXYgaWQ9ImEiIGRh
dGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIi
IGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJjIiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIyMCI+PC9kaXY+CisgICAgPGRp
diBpZD0iZCIgZGF0YS1vZmZzZXQteD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjIwIj48L2Rpdj4KKzwv
ZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+Cis8ZGl2IGNs
YXNzPSJncmlkIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjExMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIj4KKyAgICA8
ZGl2IGlkPSJhIiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIzNSI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iYiIgZGF0YS1vZmZzZXQteD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjM1Ij48L2Rp
dj4KKyAgICA8ZGl2IGlkPSJjIiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIxNSI+
PC9kaXY+CisgICAgPGRpdiBpZD0iZCIgZGF0YS1vZmZzZXQteD0iNTAiIGRhdGEtb2Zmc2V0LXk9
IjE1Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZSI+Cis8IS0tIEZJWE1FOiBUaGUgaGVpZ2h0IG9mIHRoZSBncmlkIGlzIHdyb25nIGJlY2F1
c2Ugd2UgbmVlZCB0byBpbXBsZW1lbnQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKS4g
LS0+Cis8ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRp
Y2FsLXJsOyBtYXJnaW4tYm90dG9tOiA2MHB4OyIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtb2Zmc2V0LXg9
IjQwIiBkYXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLW9mZnNl
dC14PSI0MCIgZGF0YS1vZmZzZXQteT0iNTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImMiIGRhdGEt
b2Zmc2V0LXg9IjIwIiBkYXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkIiBk
YXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZzZXQteT0iNTAiPjwvZGl2PgorPC9kaXY+Cis8L2Rp
dj4KKworPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKzwhLS0gRklYTUU6IFRoZSBo
ZWlnaHQgb2YgdGhlIGdyaWQgaXMgd3JvbmcgYmVjYXVzZSB3ZSBuZWVkIHRvIGltcGxlbWVudCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpLiAtLT4KKzxkaXYgY2xhc3M9ImdyaWQiIHN0
eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7IG1hcmdpbi1ib3R0b206IDYw
cHg7IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjExMCI+
CisgICAgPGRpdiBpZD0iYSIgZGF0YS1vZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iMCI+PC9k
aXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1vZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iNTAi
PjwvZGl2PgorICAgIDxkaXYgaWQ9ImMiIGRhdGEtb2Zmc2V0LXg9IjIwIiBkYXRhLW9mZnNldC15
PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZz
ZXQteT0iNTAiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152377</attachid>
            <date>2012-07-13 16:57:02 -0700</date>
            <delta_ts>2012-07-16 11:41:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91293-20120713165721.patch</filename>
            <type>text/plain</type>
            <size>16623</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA5NTRkZWJlMmRkYzM2
ZmY0OGQwNmVhMDM0ZTU2MDNiODc2ZWI2Mi4uZThlMjY3ZDFlODRlY2U5OWQ3MjJmY2JiMGIyYzdi
ZDI3ZGI3YjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTEzICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gZ3JpZCBpdGVt
cyBieSByb3cvY29sdW1uIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTI5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERvIHNvbWUgaW5pdGlhbCBncmlkIHBvc2l0aW9uaW5nLiBPbmx5IGhhbmRs
ZSB0aGUgc2ltcGxlIGNhc2Ugd2hlcmUgdHJhY2tzIGFyZQorICAgICAgICBmaXhlZCB2YWx1ZXMg
YW5kIGRvbid0IHByb3Blcmx5IHNpemUgdGhlIGdyaWQgaXRlbXMuIFRoaXMgZ2l2ZXMgdXMgc29t
ZXRoaW5nIHRvCisgICAgICAgIHdvcmsgd2l0aCBhbmQgc3RhcnRzIGltcGxlbWVudGluZyB0aGUg
IkdyaWQgVHJhY2sgU2l6aW5nIEFsZ29yaXRobSI6CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3Jn
L2Nzc3dnL2NzczMtZ3JpZC1sYXlvdXQvI2dyaWQtdHJhY2stc2l6aW5nLWFsZ29yaXRobTAKKwor
ICAgICAgICBUZXN0OiBmYXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5LWluZGV4Lmh0
bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFJlbmRl
ckdyaWQ6OkdyaWRUcmFjayk6IERhdGEgc3RydWN0dXJlIGZvciBob2xkaW5nIHRoZSB0cmFjayBz
aXplLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2spOiBQdWxsIGlu
IHNvbWUgYm9pbGVyIHBsYXRlIGNvZGUgYW5kIHB1dCB0aGUKKyAgICAgICAgZ3JpZCBzcGVjaWZp
YyBjb2RlIGluIGxheW91dEdyaWRJdGVtcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOiBJbXBsZW1lbnQgcGFydCBvZiB0aGUg
Z3JpZCB0cmFjayBzaXppbmcgYWxnb3JpdGhtLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6bGF5b3V0R3JpZEl0ZW1zKTogQ29tcHV0ZSB0aGUgc2l6ZSBvZiBncmlkIHRyYWNrcywgbGF5
b3V0IGFuZCBwb3NpdGlvbiBjaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbik6IE1hcCB0cmFjayBzaXplcyB0byB0aGUgYWN0dWFs
IHBvc2l0aW9uIG9mIHRoZSBjaGlsZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBKdXN0IHJldHVybiBh
IGNvcHkgb2YgTGVuZ3RoIHJhdGhlciB0aGFuIGEgcmVmZXJlbmNlIHRvIExlbmd0aC4gVGhpcyBz
ZWVtcworICAgICAgICBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBnZXR0ZXJzIHRoYXQgcmV0
dXJuIGEgTGVuZ3RoLgorCiAyMDEyLTA3LTEzICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNv
bT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEy
NzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA4ODNlMTcxMGIw
MTAyYjk2YmU4ZGUyNDkyNWFhYWJjNzgzODkzYWQ3Li45OTUwMzhiY2QzYzc4YTdiOTNjY2VlZmE0
YTFhOWZmZTdjYmE3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
CkBAIC0yNCwxMSArMjQsMjUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNs
dWRlICJSZW5kZXJHcmlkLmgiCiAKKyNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckdy
aWQ6OkdyaWRUcmFjayB7CitwdWJsaWM6CisgICAgR3JpZFRyYWNrKCkKKyAgICAgICAgOiBtX3Vz
ZWRCcmVhZHRoKDApCisgICAgeworICAgIH0KKworICAgIExheW91dFVuaXQgbV91c2VkQnJlYWR0
aDsKK307CisKIFJlbmRlckdyaWQ6OlJlbmRlckdyaWQoTm9kZSogbm9kZSkKICAgICA6IFJlbmRl
ckJsb2NrKG5vZGUpCiB7CkBAIC00MCwxMCArNTQsMTI4IEBAIFJlbmRlckdyaWQ6On5SZW5kZXJH
cmlkKCkKIHsKIH0KIAotdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0
Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQpCit2b2lkIFJlbmRlckdyaWQ6
OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKK3sKKyAgICBB
U1NFUlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4gJiYgc2lt
cGxpZmllZExheW91dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRSZXBhaW50ZXIg
cmVwYWludGVyKCp0aGlzLCBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSk7CisgICAgTGF5
b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgbG9jYXRpb25PZmZz
ZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOworCisgICAgaWYgKGluUmVuZGVyRmxvd1RocmVhZCgp
KSB7CisgICAgICAgIC8vIFJlZ2lvbnMgY2hhbmdpbmcgd2lkdGhzIGNhbiBmb3JjZSB1cyB0byBy
ZWxheW91dCBvdXIgY2hpbGRyZW4uCisgICAgICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5S
ZWdpb25zKCkpCisgICAgICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICB9Cisg
ICAgY29tcHV0ZUluaXRpYWxSZWdpb25SYW5nZUZvckJsb2NrKCk7CisKKyAgICBMYXlvdXRTaXpl
IHByZXZpb3VzU2l6ZSA9IHNpemUoKTsKKworICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CisgICAg
Y29tcHV0ZUxvZ2ljYWxXaWR0aCgpOworCisgICAgbV9vdmVyZmxvdy5jbGVhcigpOworCisgICAg
Ly8gRm9yIG92ZXJmbG93OnNjcm9sbCBibG9ja3MsIGVuc3VyZSB3ZSBoYXZlIGJvdGggc2Nyb2xs
YmFycyBpbiBwbGFjZSBhbHdheXMuCisgICAgaWYgKHNjcm9sbHNPdmVyZmxvdygpKSB7CisgICAg
ICAgIGlmIChzdHlsZSgpLT5vdmVyZmxvd1goKSA9PSBPU0NST0xMKQorICAgICAgICAgICAgbGF5
ZXIoKS0+c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcih0cnVlKTsKKyAgICAgICAgaWYgKHN0eWxl
KCktPm92ZXJmbG93WSgpID09IE9TQ1JPTEwpCisgICAgICAgICAgICBsYXllcigpLT5zZXRIYXNW
ZXJ0aWNhbFNjcm9sbGJhcih0cnVlKTsKKyAgICB9CisKKyAgICBsYXlvdXRHcmlkSXRlbXMoKTsK
KworICAgIExheW91dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFZGdlID0gY2xpZW50TG9naWNhbEJvdHRv
bSgpOworICAgIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CisKKyAgICBpZiAoc2l6ZSgpICE9IHBy
ZXZpb3VzU2l6ZSkKKyAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CisKKyAgICBsYXlv
dXRQb3NpdGlvbmVkT2JqZWN0cyhyZWxheW91dENoaWxkcmVuIHx8IGlzUm9vdCgpKTsKKworICAg
IGNvbXB1dGVSZWdpb25SYW5nZUZvckJsb2NrKCk7CisKKyAgICBjb21wdXRlT3ZlcmZsb3cob2xk
Q2xpZW50QWZ0ZXJFZGdlKTsKKyAgICBzdGF0ZVB1c2hlci5wb3AoKTsKKworICAgIHVwZGF0ZUxh
eWVyVHJhbnNmb3JtKCk7CisKKyAgICAvLyBVcGRhdGUgb3VyIHNjcm9sbCBpbmZvcm1hdGlvbiBp
ZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgor
ICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KKyAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCisg
ICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOworCisgICAgcmVw
YWludGVyLnJlcGFpbnRBZnRlckxheW91dCgpOworCisgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2Up
OworfQorCit2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3Mo
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tz
KQoreworICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFja1N0eWxlcyA9IChkaXJlY3Rpb24g
PT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1ucygpIDogc3R5bGUoKS0+Z3JpZFJv
d3MoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrU3R5bGVzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIEdyaWRUcmFjayB0cmFjazsKKyAgICAgICAgaWYgKHRyYWNrU3R5bGVzW2ld
LmlzRml4ZWQoKSkKKyAgICAgICAgICAgIHRyYWNrLm1fdXNlZEJyZWFkdGggPSB0cmFja1N0eWxl
c1tpXS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisKKyAgICAgICAgdHJhY2tzLmFwcGVuZCh0cmFjayk7CisgICAgfQorfQorCit2
b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCit7CisgICAgVmVjdG9yPEdyaWRUcmFj
az4gY29sdW1uVHJhY2tzLCByb3dUcmFja3M7CisgICAgY29tcHV0ZWRVc2VkQnJlYWR0aE9mR3Jp
ZFRyYWNrcyhGb3JDb2x1bW5zLCBjb2x1bW5UcmFja3MpOworICAgIC8vIEZJWE1FOiBUaGUgbG9n
aWNhbCB3aWR0aCBvZiBHcmlkIENvbHVtbnMgZnJvbSB0aGUgcHJpb3Igc3RlcCBpcyB1c2VkIGlu
CisgICAgLy8gdGhlIGZvcm1hdHRpbmcgb2YgR3JpZCBpdGVtcyBpbiBjb250ZW50LXNpemVkIEdy
aWQgUm93cyB0byBkZXRlcm1pbmUKKyAgICAvLyB0aGVpciByZXF1aXJlZCBoZWlnaHQuIFdlIHdp
bGwgcHJvYmFibHkgbmVlZCB0byBwYXNzIGNvbHVtbnMgdGhyb3VnaC4KKyAgICBjb21wdXRlZFVz
ZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvclJvd3MsIHJvd1RyYWNrcyk7CisKKyAgICBmb3IgKFJl
bmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZ0JveCgpKSB7CisgICAgICAgIExheW91dFBvaW50IGNoaWxkUG9zaXRpb24gPSBm
aW5kQ2hpbGRMb2dpY2FsUG9zaXRpb24oY2hpbGQsIGNvbHVtblRyYWNrcywgcm93VHJhY2tzKTsK
KyAgICAgICAgLy8gRklYTUU6IEdyaWQgaXRlbXMgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGVp
ciBjZWxscy4gT25jZSB3ZQorICAgICAgICAvLyBpbXBsZW1lbnQgZ3JpZC17Y29sdW1uLHJvd30t
YWxpZ24sIHdlIGNhbiBhbHNvIHNocmluayB0byBmaXQuIEZvcgorICAgICAgICAvLyBub3csIGp1
c3Qgc2l6ZSBhcyBpZiB3ZSB3ZXJlIGEgcmVndWxhciBjaGlsZC4KKyAgICAgICAgY2hpbGQtPmxh
eW91dElmTmVlZGVkKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBib3JkZXIgJiBwYWRk
aW5nIG9uIHRoZSBncmlkIGVsZW1lbnQuCisgICAgICAgIGNoaWxkLT5zZXRMb2dpY2FsTG9jYXRp
b24oY2hpbGRQb3NpdGlvbik7CisKKyAgICB9CisKKyAgICAvLyBGSVhNRTogSGFuZGxlIGJvcmRl
ciAmIHBhZGRpbmcgb24gdGhlIGdyaWQgZWxlbWVudC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJvd1RyYWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgc2V0TG9naWNhbEhlaWdodChsb2dp
Y2FsSGVpZ2h0KCkgKyByb3dUcmFja3NbaV0ubV91c2VkQnJlYWR0aCk7Cit9CisKK0xheW91dFBv
aW50IFJlbmRlckdyaWQ6OmZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbihSZW5kZXJCb3gqIGNoaWxk
LCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBjb25zdCBWZWN0b3I8R3Jp
ZFRyYWNrPiYgcm93VHJhY2tzKQogewotICAgIC8vIEZvciBub3cganVzdCBjYWxsIHRoZSBiYXNl
IGNsYXNzLgotICAgIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhyZWxheW91dENoaWxkcmVuLCBw
YWdlTG9naWNhbEhlaWdodCk7CisgICAgTGVuZ3RoIGNvbHVtbiA9IGNoaWxkLT5zdHlsZSgpLT5n
cmlkSXRlbUNvbHVtbigpOworICAgIExlbmd0aCByb3cgPSBjaGlsZC0+c3R5bGUoKS0+Z3JpZEl0
ZW1Sb3coKTsKKworICAgIGlmICghY29sdW1uLmlzUG9zaXRpdmUoKSB8fCAhcm93LmlzUG9zaXRp
dmUoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFBvaW50KCk7CisKKyAgICAvLyBGSVhNRTogSGFu
ZGxlIG90aGVyIHZhbHVlcyBmb3IgZ3JpZC17cm93LGNvbHVtbn0gbGlrZSByYW5nZXMgb3IgbGlu
ZSBuYW1lcy4KKyAgICBpZiAoIWNvbHVtbi5pc0ZpeGVkKCkgfHwgIXJvdy5pc0ZpeGVkKCkpCisg
ICAgICAgIHJldHVybiBMYXlvdXRQb2ludCgpOworCisgICAgc2l6ZV90IGNvbHVtblRyYWNrID0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2x1bW4uZ2V0RmxvYXRWYWx1ZSgpKSAtIDE7CisgICAgc2l6
ZV90IHJvd1RyYWNrID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihyb3cuZ2V0RmxvYXRWYWx1ZSgpKSAt
IDE7CisKKyAgICBMYXlvdXRQb2ludCBvZmZzZXQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb2x1bW5UcmFjayAmJiBpIDwgKGNvbHVtblRyYWNrcy5zaXplKCkpOyArK2kpCisgICAgICAg
IG9mZnNldC5zZXRYKG9mZnNldC54KCkgKyBjb2x1bW5UcmFja3NbaV0ubV91c2VkQnJlYWR0aCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb3dUcmFjayAmJiBpIDwgKHJvd1RyYWNrcy5z
aXplKCkpOyArK2kpCisgICAgICAgIG9mZnNldC5zZXRZKG9mZnNldC55KCkgKyByb3dUcmFja3Nb
aV0ubV91c2VkQnJlYWR0aCk7CisKKyAgICAvLyBGSVhNRTogSGFuZGxlIG1hcmdpbnMgb24gdGhl
IGdyaWQgaXRlbS4KKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBjb25zdCBjaGFyKiBSZW5kZXJH
cmlkOjpyZW5kZXJOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CmluZGV4IDI4NDk4ZmU0MzJkNjQ3MWRlNDE0YWU5OTIxNWRjNTkzNTgwYTE0NTMuLjgyOWJmODg2
MjQ0MmJlOWVhMTNmNDE2YzhkYzFhYTI3YmNiYzkxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaApAQCAtNDAsNiArNDAsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2lj
YWxIZWlnaHQgPSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgY2xhc3Mg
R3JpZFRyYWNrOworICAgIGVudW0gVHJhY2tTaXppbmdEaXJlY3Rpb24geyBGb3JDb2x1bW5zLCBG
b3JSb3dzIH07CisgICAgdm9pZCBjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKFRyYWNr
U2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYpOworICAgIHZvaWQgbGF5b3V0R3Jp
ZEl0ZW1zKCk7CisKKyAgICBMYXlvdXRQb2ludCBmaW5kQ2hpbGRMb2dpY2FsUG9zaXRpb24oUmVu
ZGVyQm94KiwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgY29uc3QgVmVj
dG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGNm
NGY3YmE5ODE4MTYyOTNkMGY3NDFhYTk0YWI3MzBkYzcxNGEyODUuLjkyYTE1YWFlYTdjM2ZlMWVh
NGU4NDM5Nzk1YmRmMWQwYzhiODk2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCkBAIC04MzAsOCArODMwLDggQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxMZW5ndGg+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZENvbHVtbnM7IH0KICAgICBjb25zdCBWZWN0b3I8TGVu
Z3RoPiYgZ3JpZFJvd3MoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLT5tX2dyaWRSb3dzOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGdyaWRJdGVtQ29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0tPm1fZ3JpZENv
bHVtbjsgfQotICAgIGNvbnN0IExlbmd0aCYgZ3JpZEl0ZW1Sb3coKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkUm93OyB9CisgICAgTGVuZ3Ro
IGdyaWRJdGVtQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZEl0ZW0tPm1fZ3JpZENvbHVtbjsgfQorICAgIExlbmd0aCBncmlkSXRlbVJvdygpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3c7IH0K
IAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2JveFNoYWRvdy5nZXQoKTsgfQogICAgIHZvaWQgZ2V0Qm94U2hh
ZG93RXh0ZW50KExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQm
IGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QgeyBnZXRTaGFkb3dFeHRlbnQoYm94U2hh
ZG93KCksIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMGRiNjQ1NTIzNmYy
YTZlMTU4ZTYyMmUwNTMwOTBhYzNkODkzYWUxLi5kYzZlMDk4ZTNkNTJhZTUyMjA5MTBiNzU5NjM0
MWQ5MDg1MWM4Y2YyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDctMTMgIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBncmlkIGl0ZW1zIGJ5
IHJvdy9jb2x1bW4gaW5kZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgdGVzdCBmb3IgZ3JpZCBsYXlvdXQgaW4gZWFjaCB3cml0aW5nIG1vZGUg
ZGlyZWN0aW9uLiAgVGhlIGhlaWdodCBpbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUgaXMgaW5jb3Jy
ZWN0IGZvciBub3cuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9jb250YWluaW5n
LWJsb2NrLWdyaWRzLWV4cGVjdGVkLmh0bWw6IFNjb3BlIDxwPiBhcm91bmQgdGV4dCBvbmx5Lgor
ICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2NvbnRhaW5pbmctYmxvY2stZ3JpZHMuaHRt
bDogRml4IG1pc3NpbmcgY2xvc2luZyA8L2Rpdj4uCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1s
YXlvdXQvcGxhY2UtY2VsbC1ieS1pbmRleC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzLWdyaWQtbGF5b3V0L3BsYWNlLWNlbGwtYnktaW5kZXguaHRtbDogQWRkZWQuCisK
IDIwMTItMDctMTMgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51
eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gVW5za2lwIGZhc3QvY3NzL2ZvbnQtZmFjZS1k
b3dubG9hZC1lcnJvci5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlk
LWxheW91dC9jb250YWluaW5nLWJsb2NrLWdyaWRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9jb250YWluaW5nLWJsb2NrLWdyaWRzLWV4cGVjdGVkLmh0
bWwKaW5kZXggNTczZjJiNWFkNGY4YjI5NTkyNTY4NmJlNTgxYmY5NWVhNjgxNWNlYS4uYTk3ODEy
YTBkYjA2ZGNhMmQ1OTI3ZjE1OGJmY2VkZDU3M2JmYjgyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvY29udGFpbmluZy1ibG9jay1ncmlkcy1leHBlY3RlZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2NvbnRhaW5pbmctYmxv
Y2stZ3JpZHMtZXhwZWN0ZWQuaHRtbApAQCAtNiw4ICs2LDcgQEAKICAgICA8L3N0eWxlPgogPC9o
ZWFkPgogPGJvZHk+Ci08cD5HcmlkcyBjYW4gYWN0IGFzIGNvbnRhaW5pbmcgYmxvY2tzIGZvciBw
b3NpdGlvbmVkIGNvbnRlbnQuCis8cD5HcmlkcyBjYW4gYWN0IGFzIGNvbnRhaW5pbmcgYmxvY2tz
IGZvciBwb3NpdGlvbmVkIGNvbnRlbnQuPC9wPgogPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgotPC9wPgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvY29udGFpbmluZy1ibG9jay1ncmlkcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3Jp
ZC1sYXlvdXQvY29udGFpbmluZy1ibG9jay1ncmlkcy5odG1sCmluZGV4IGE2YWU3NzFhMzg1ZTVi
NjdmMjczMDUwOTA4YWRlOGRiMTI1MjJmNGMuLjhiYjRiOGFiZGY3OWNhNTNiODJhNzRiMzE1MWY1
ODUzNjdiYzUyYmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2NvbnRhaW5pbmctYmxvY2stZ3JpZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
cmlkLWxheW91dC9jb250YWluaW5nLWJsb2NrLWdyaWRzLmh0bWwKQEAgLTEyLDkgKzEyLDggQEAK
ICAgICA8L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+Ci08cD5HcmlkcyBjYW4gYWN0IGFzIGNvbnRh
aW5pbmcgYmxvY2tzIGZvciBwb3NpdGlvbmVkIGNvbnRlbnQuCi08ZGl2IGNsYXNzPSJyZWxhdGl2
ZS1wb3NpdGlvbmVkLWdyaWQiIHN0eWxlPSJkaXNwbGF5OiAtd2Via2l0LWdyaWQiPjxkaXYgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBsZWZ0OiAwOyB0b3A6IDAiPjwvZGl2PgotPGRp
diBjbGFzcz0icmVsYXRpdmUtcG9zaXRpb25lZC1pbmxpbmUtZ3JpZCIgc3R5bGU9ImRpc3BsYXk6
IC13ZWJraXQtaW5saW5lLWdyaWQiPjxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Z3JlZW47
IGxlZnQ6IDA7IHRvcDogMCI+PC9kaXY+Ci08L3A+Cis8cD5HcmlkcyBjYW4gYWN0IGFzIGNvbnRh
aW5pbmcgYmxvY2tzIGZvciBwb3NpdGlvbmVkIGNvbnRlbnQuPC9wPgorPGRpdiBjbGFzcz0icmVs
YXRpdmUtcG9zaXRpb25lZC1ncmlkIiBzdHlsZT0iZGlzcGxheTogLXdlYmtpdC1ncmlkIj48ZGl2
IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgbGVmdDogMDsgdG9wOiAwIj48L2Rpdj48
L2Rpdj4KKzxkaXYgY2xhc3M9InJlbGF0aXZlLXBvc2l0aW9uZWQtaW5saW5lLWdyaWQiIHN0eWxl
PSJkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ncmlkIj48ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNv
bG9yOmdyZWVuOyBsZWZ0OiAwOyB0b3A6IDAiPjwvZGl2PjwvZGl2PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGxhY2UtY2Vs
bC1ieS1pbmRleC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9wbGFjZS1jZWxsLWJ5LWluZGV4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmNlY2M4YjE5
NzQ3Njc2NmI0YzM5ZTM1YmMyODM1M2U4ZTVkMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGxhY2UtY2VsbC1ieS1pbmRleC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdCBzb21lIHNpbXBsZSBncmlkIGxheW91dHMgYnkgcG9z
aXRpb25pbmcgZ3JpZCBpdGVtcyBieSBpbmRleC4KKworUEFTUworUEFTUworRkFJTDoKK0V4cGVj
dGVkIDExMCBmb3IgaGVpZ2h0LCBidXQgZ290IDE1LiAKKworPGRpdiBjbGFzcz0iZ3JpZCIgc3R5
bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgbWFyZ2luLWJvdHRvbTogNjBw
eDsiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTEwIj4K
KyAgICA8ZGl2IGlkPSJhIiBkYXRhLW9mZnNldC14PSI0MCIgZGF0YS1vZmZzZXQteT0iMCI+PC9k
aXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1vZmZzZXQteD0iNDAiIGRhdGEtb2Zmc2V0LXk9IjUw
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZzZXQt
eT0iMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iZCIgZGF0YS1vZmZzZXQteD0iMjAiIGRhdGEtb2Zm
c2V0LXk9IjUwIj48L2Rpdj4KKzwvZGl2PgorRkFJTDoKK0V4cGVjdGVkIDExMCBmb3IgaGVpZ2h0
LCBidXQgZ290IDE1LiAKKworPGRpdiBjbGFzcz0iZ3JpZCIgc3R5bGU9Ii13ZWJraXQtd3JpdGlu
Zy1tb2RlOiB2ZXJ0aWNhbC1scjsgbWFyZ2luLWJvdHRvbTogNjBweDsiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjUwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTEwIj4KKyAgICA8ZGl2IGlkPSJhIiBk
YXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJi
IiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSI1MCI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iYyIgZGF0YS1vZmZzZXQteD0iMjAiIGRhdGEtb2Zmc2V0LXk9IjAiPjwvZGl2PgorICAgIDxk
aXYgaWQ9ImQiIGRhdGEtb2Zmc2V0LXg9IjIwIiBkYXRhLW9mZnNldC15PSI1MCI+PC9kaXY+Cis8
L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3BsYWNl
LWNlbGwtYnktaW5kZXguaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Bs
YWNlLWNlbGwtYnktaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I5NzhjYWYxOGRlYzU1Y2U1OWMz
OTMwNTVhZjY0ZjZmYWFiMGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtZ3JpZC1sYXlvdXQvcGxhY2UtY2VsbC1ieS1pbmRleC5odG1sCkBAIC0wLDAgKzEsOTEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0dyaWRMYXlv
dXRFbmFibGVkIiwgMSk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9Cis8L3Njcmlw
dD4KKzxzdHlsZT4KKy5ncmlkIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CisgICAgLXdl
YmtpdC1ncmlkLWNvbHVtbnM6IDUwcHggNjBweDsKKyAgICAtd2Via2l0LWdyaWQtcm93czogMjBw
eCAzMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7CisgICAgbWF4LXdpZHRoOiAxMTBw
eDsKK30KKworI2EgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgLXdlYmtpdC1n
cmlkLWNvbHVtbjogMTsKKyAgICAtd2Via2l0LWdyaWQtcm93OiAxOworICAgIHdpZHRoOiAxMHB4
OworICAgIGhlaWdodDogMTVweDsKK30KKyNiIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uOiAyOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDE7
CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxNXB4OworfQorI2MgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJlZDsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uOiAxOworICAgIC13ZWJr
aXQtZ3JpZC1yb3c6IDI7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxNXB4OworfQor
I2QgeworICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsKKyAgICAtd2Via2l0LWdyaWQtY29s
dW1uOiAyOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDI7CisgICAgd2lkdGg6IDEwcHg7CisgICAg
aGVpZ2h0OiAxNXB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
Y2hlY2stbGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5n
cmlkJykiPgorCis8cD5UZXN0IHNvbWUgc2ltcGxlIGdyaWQgbGF5b3V0cyBieSBwb3NpdGlvbmlu
ZyBncmlkIGl0ZW1zIGJ5IGluZGV4LjwvcD4KKworPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlIj4KKzxkaXYgY2xhc3M9ImdyaWQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjExMCIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjUwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLW9mZnNldC14PSIwIiBk
YXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLW9mZnNldC14PSI1
MCIgZGF0YS1vZmZzZXQteT0iMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYyIgZGF0YS1vZmZzZXQt
eD0iMCIgZGF0YS1vZmZzZXQteT0iMjAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImQiIGRhdGEtb2Zm
c2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSIyMCI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCis8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iZ3JpZCIgc3R5bGU9
Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0IiBkYXRhLWV4cGVjdGVkLXdpZHRo
PSIxMTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI1MCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1v
ZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iMzUiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRh
dGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSIzNSI+PC9kaXY+CisgICAgPGRpdiBpZD0i
YyIgZGF0YS1vZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iMTUiPjwvZGl2PgorICAgIDxkaXYg
aWQ9ImQiIGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSIxNSI+PC9kaXY+Cis8L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgorPCEtLSBGSVhN
RTogVGhlIGhlaWdodCBvZiB0aGUgZ3JpZCBpcyB3cm9uZyBiZWNhdXNlIHdlIG5lZWQgdG8gaW1w
bGVtZW50IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkuIC0tPgorPGRpdiBjbGFzcz0i
Z3JpZCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgbWFyZ2luLWJv
dHRvbTogNjBweDsiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0iMTEwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLW9mZnNldC14PSI0MCIgZGF0YS1vZmZzZXQt
eT0iMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1vZmZzZXQteD0iNDAiIGRhdGEtb2Zm
c2V0LXk9IjUwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0
YS1vZmZzZXQteT0iMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iZCIgZGF0YS1vZmZzZXQteD0iMjAi
IGRhdGEtb2Zmc2V0LXk9IjUwIj48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZSI+Cis8IS0tIEZJWE1FOiBUaGUgaGVpZ2h0IG9mIHRoZSBncmlk
IGlzIHdyb25nIGJlY2F1c2Ugd2UgbmVlZCB0byBpbXBsZW1lbnQgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKS4gLS0+Cis8ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdlYmtpdC13cml0
aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyBtYXJnaW4tYm90dG9tOiA2MHB4OyIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiPgorICAgIDxkaXYgaWQ9ImEi
IGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjAiPjwvZGl2PgorICAgIDxkaXYgaWQ9
ImIiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIj48L2Rpdj4KKyAgICA8ZGl2
IGlkPSJjIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZzZXQteT0iMCI+PC9kaXY+CisgICAg
PGRpdiBpZD0iZCIgZGF0YS1vZmZzZXQteD0iMjAiIGRhdGEtb2Zmc2V0LXk9IjUwIj48L2Rpdj4K
KzwvZGl2PgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152574</attachid>
            <date>2012-07-16 11:37:03 -0700</date>
            <delta_ts>2012-07-16 12:10:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-91293-20120716113724.patch</filename>
            <type>text/plain</type>
            <size>16844</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUyYmNhMTI1Yzk4MTI3
N2EyMTk4YTY1MDhlYzBiMzBmYTNhOGE0Ny4uMjY0MDA0MzM5ZmQxZDliZDU5NjY4MmRhM2NhN2Mw
YjU0MjM4ZjJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA3LTE2ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gZ3JpZCBpdGVt
cyBieSByb3cvY29sdW1uIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTI5MworCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisK
KyAgICAgICAgRG8gc29tZSBpbml0aWFsIGdyaWQgcG9zaXRpb25pbmcuIE9ubHkgaGFuZGxlIHRo
ZSBzaW1wbGUgY2FzZSB3aGVyZSB0cmFja3MgYXJlCisgICAgICAgIGZpeGVkIHZhbHVlcyBhbmQg
ZG9uJ3QgcHJvcGVybHkgc2l6ZSB0aGUgZ3JpZCBpdGVtcy4gVGhpcyBnaXZlcyB1cyBzb21ldGhp
bmcgdG8KKyAgICAgICAgd29yayB3aXRoIGFuZCBzdGFydHMgaW1wbGVtZW50aW5nIHRoZSAiR3Jp
ZCBUcmFjayBTaXppbmcgQWxnb3JpdGhtIjoKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nz
d2cvY3NzMy1ncmlkLWxheW91dC8jZ3JpZC10cmFjay1zaXppbmctYWxnb3JpdGhtMAorCisgICAg
ICAgIFRlc3Q6IGZhc3QvY3NzLWdyaWQtbGF5b3V0L3BsYWNlLWNlbGwtYnktaW5kZXguaHRtbAor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoUmVuZGVyR3Jp
ZDo6R3JpZFRyYWNrKTogRGF0YSBzdHJ1Y3R1cmUgZm9yIGhvbGRpbmcgdGhlIHRyYWNrIHNpemUu
IFVzZWRCcmVhZHRoIG1hdGNoZXMgdGhlIHRlcm1pbm9sb2d5CisgICAgICAgIHVzZWQgaW4gdGhl
IHNwZWMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayk6IFB1bGwg
aW4gc29tZSBib2lsZXIgcGxhdGUgY29kZSBhbmQgcHV0IHRoZQorICAgICAgICBncmlkIHNwZWNp
ZmljIGNvZGUgaW4gbGF5b3V0R3JpZEl0ZW1zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6IEltcGxlbWVudCBwYXJ0IG9mIHRo
ZSBncmlkIHRyYWNrIHNpemluZyBhbGdvcml0aG0uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpsYXlvdXRHcmlkSXRlbXMpOiBDb21wdXRlIHRoZSBzaXplIG9mIGdyaWQgdHJhY2tzLCBs
YXlvdXQgYW5kIHBvc2l0aW9uIGNoaWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6ZmluZENoaWxkTG9naWNhbFBvc2l0aW9uKTogTWFwIHRyYWNrIHNpemVzIHRvIHRoZSBhY3R1
YWwgcG9zaXRpb24gb2YgdGhlIGNoaWxkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6IEp1c3QgcmV0dXJu
IGEgY29weSBvZiBMZW5ndGggcmF0aGVyIHRoYW4gYSByZWZlcmVuY2UgdG8gTGVuZ3RoLiBUaGlz
IHNlZW1zCisgICAgICAgIG1vcmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGdldHRlcnMgdGhhdCBy
ZXR1cm4gYSBMZW5ndGguCisKIDIwMTItMDctMTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG5hdGl2ZSBtZW1vcnk6IGZp
eCBpbnN0cnVtZW50YXRpb24gZm9yIHN0cmluZyBtZW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggODgzZTE3MTBiMDEwMmI5NmJlOGRlMjQ5MjVhYWFiYzc4
Mzg5M2FkNy4uYjRkMmEwYzA4YjRmNjA3MmVjNjA1ZGE2YzQ3MjQyYmU4YmRmYTJlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMjQsMTEgKzI0LDI1IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiUmVuZGVyR3JpZC5oIgogCisj
aW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJHcmlkOjpHcmlkVHJhY2sgeworcHVibGlj
OgorICAgIEdyaWRUcmFjaygpCisgICAgICAgIDogbV91c2VkQnJlYWR0aCgwKQorICAgIHsKKyAg
ICB9CisKKyAgICBMYXlvdXRVbml0IG1fdXNlZEJyZWFkdGg7Cit9OworCiBSZW5kZXJHcmlkOjpS
ZW5kZXJHcmlkKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQogewpAQCAtNDAs
MTAgKzU0LDEyOSBAQCBSZW5kZXJHcmlkOjp+UmVuZGVyR3JpZCgpCiB7CiB9CiAKLXZvaWQgUmVu
ZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0KQordm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiB7Ci0gICAgLy8gRm9yIG5vdyBqdXN0IGNhbGwgdGhl
IGJhc2UgY2xhc3MuCi0gICAgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKHJlbGF5b3V0Q2hpbGRy
ZW4sIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKKyAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CisKKyAg
ICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4gJiYgc2ltcGxpZmllZExheW91dCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGSVhNRTogTXVjaCBvZiB0aGlzIG1ldGhvZCBpcyBib2lsZXIgcGxh
dGUgdGhhdCBtYXRjaGVzIFJlbmRlckJveDo6bGF5b3V0QmxvY2sgYW5kIFJlbmRlcipGbGV4aWJs
ZUJveDo6bGF5b3V0QmxvY2suCisgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byByZWZhY3RvciBz
b21lIG9mIHRoZSBkdXBsaWNhdGUgY29kZS4KKyAgICBMYXlvdXRSZXBhaW50ZXIgcmVwYWludGVy
KCp0aGlzLCBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSk7CisgICAgTGF5b3V0U3RhdGVN
YWludGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFz
VHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpOworCisgICAgaWYgKGluUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAg
ICAgIC8vIFJlZ2lvbnMgY2hhbmdpbmcgd2lkdGhzIGNhbiBmb3JjZSB1cyB0byByZWxheW91dCBv
dXIgY2hpbGRyZW4uCisgICAgICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKCkp
CisgICAgICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICB9CisgICAgY29tcHV0
ZUluaXRpYWxSZWdpb25SYW5nZUZvckJsb2NrKCk7CisKKyAgICBMYXlvdXRTaXplIHByZXZpb3Vz
U2l6ZSA9IHNpemUoKTsKKworICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CisgICAgY29tcHV0ZUxv
Z2ljYWxXaWR0aCgpOworCisgICAgbV9vdmVyZmxvdy5jbGVhcigpOworCisgICAgaWYgKHNjcm9s
bHNPdmVyZmxvdygpKSB7CisgICAgICAgIGlmIChzdHlsZSgpLT5vdmVyZmxvd1goKSA9PSBPU0NS
T0xMKQorICAgICAgICAgICAgbGF5ZXIoKS0+c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcih0cnVl
KTsKKyAgICAgICAgaWYgKHN0eWxlKCktPm92ZXJmbG93WSgpID09IE9TQ1JPTEwpCisgICAgICAg
ICAgICBsYXllcigpLT5zZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcih0cnVlKTsKKyAgICB9CisKKyAg
ICBsYXlvdXRHcmlkSXRlbXMoKTsKKworICAgIExheW91dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFZGdl
ID0gY2xpZW50TG9naWNhbEJvdHRvbSgpOworICAgIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CisK
KyAgICBpZiAoc2l6ZSgpICE9IHByZXZpb3VzU2l6ZSkKKyAgICAgICAgcmVsYXlvdXRDaGlsZHJl
biA9IHRydWU7CisKKyAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhyZWxheW91dENoaWxkcmVu
IHx8IGlzUm9vdCgpKTsKKworICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJsb2NrKCk7CisKKyAg
ICBjb21wdXRlT3ZlcmZsb3cob2xkQ2xpZW50QWZ0ZXJFZGdlKTsKKyAgICBzdGF0ZVB1c2hlci5w
b3AoKTsKKworICAgIHVwZGF0ZUxheWVyVHJhbnNmb3JtKCk7CisKKyAgICAvLyBVcGRhdGUgb3Vy
IHNjcm9sbCBpbmZvcm1hdGlvbiBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4g
bm93IHRoYXQgd2Uga25vdyBpZgorICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KKyAgICBpZiAo
aGFzT3ZlcmZsb3dDbGlwKCkpCisgICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRl
ckxheW91dCgpOworCisgICAgcmVwYWludGVyLnJlcGFpbnRBZnRlckxheW91dCgpOworCisgICAg
c2V0TmVlZHNMYXlvdXQoZmFsc2UpOworfQorCit2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVkVXNl
ZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBWZWN0
b3I8R3JpZFRyYWNrPiYgdHJhY2tzKQoreworICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFj
a1N0eWxlcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1u
cygpIDogc3R5bGUoKS0+Z3JpZFJvd3MoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRy
YWNrU3R5bGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEdyaWRUcmFjayB0cmFjazsKKyAgICAg
ICAgaWYgKHRyYWNrU3R5bGVzW2ldLmlzRml4ZWQoKSkKKyAgICAgICAgICAgIHRyYWNrLm1fdXNl
ZEJyZWFkdGggPSB0cmFja1N0eWxlc1tpXS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisKKyAgICAgICAgdHJhY2tzLmFwcGVuZCh0
cmFjayk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCit7
CisgICAgVmVjdG9yPEdyaWRUcmFjaz4gY29sdW1uVHJhY2tzLCByb3dUcmFja3M7CisgICAgY29t
cHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhGb3JDb2x1bW5zLCBjb2x1bW5UcmFja3MpOwor
ICAgIC8vIEZJWE1FOiBUaGUgbG9naWNhbCB3aWR0aCBvZiBHcmlkIENvbHVtbnMgZnJvbSB0aGUg
cHJpb3Igc3RlcCBpcyB1c2VkIGluCisgICAgLy8gdGhlIGZvcm1hdHRpbmcgb2YgR3JpZCBpdGVt
cyBpbiBjb250ZW50LXNpemVkIEdyaWQgUm93cyB0byBkZXRlcm1pbmUKKyAgICAvLyB0aGVpciBy
ZXF1aXJlZCBoZWlnaHQuIFdlIHdpbGwgcHJvYmFibHkgbmVlZCB0byBwYXNzIGNvbHVtbnMgdGhy
b3VnaC4KKyAgICBjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvclJvd3MsIHJvd1Ry
YWNrcyk7CisKKyAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7CisgICAgICAgIExheW91dFBv
aW50IGNoaWxkUG9zaXRpb24gPSBmaW5kQ2hpbGRMb2dpY2FsUG9zaXRpb24oY2hpbGQsIGNvbHVt
blRyYWNrcywgcm93VHJhY2tzKTsKKyAgICAgICAgLy8gRklYTUU6IEdyaWQgaXRlbXMgc2hvdWxk
IHN0cmV0Y2ggdG8gZmlsbCB0aGVpciBjZWxscy4gT25jZSB3ZQorICAgICAgICAvLyBpbXBsZW1l
bnQgZ3JpZC17Y29sdW1uLHJvd30tYWxpZ24sIHdlIGNhbiBhbHNvIHNocmluayB0byBmaXQuIEZv
cgorICAgICAgICAvLyBub3csIGp1c3Qgc2l6ZSBhcyBpZiB3ZSB3ZXJlIGEgcmVndWxhciBjaGls
ZC4KKyAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CisKKyAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBib3JkZXIgJiBwYWRkaW5nIG9uIHRoZSBncmlkIGVsZW1lbnQuCisgICAgICAgIGNo
aWxkLT5zZXRMb2dpY2FsTG9jYXRpb24oY2hpbGRQb3NpdGlvbik7CisgICAgfQorCisgICAgLy8g
RklYTUU6IEhhbmRsZSBib3JkZXIgJiBwYWRkaW5nIG9uIHRoZSBncmlkIGVsZW1lbnQuCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCByb3dUcmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHNl
dExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpICsgcm93VHJhY2tzW2ldLm1fdXNlZEJyZWFk
dGgpOworfQorCitMYXlvdXRQb2ludCBSZW5kZXJHcmlkOjpmaW5kQ2hpbGRMb2dpY2FsUG9zaXRp
b24oUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNr
cywgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcykKK3sKKyAgICBMZW5ndGggY29s
dW1uID0gY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1uKCk7CisgICAgTGVuZ3RoIHJvdyA9
IGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbVJvdygpOworCisgICAgLy8gRklYTUU6IFdoYXQgZG9l
cyBhIG5vbi1wb3NpdGl2ZSBpbnRlZ2VyIG1lYW4gZm9yIGEgY29sdW1uL3Jvdz8KKyAgICBpZiAo
IWNvbHVtbi5pc1Bvc2l0aXZlKCkgfHwgIXJvdy5pc1Bvc2l0aXZlKCkpCisgICAgICAgIHJldHVy
biBMYXlvdXRQb2ludCgpOworCisgICAgLy8gRklYTUU6IEhhbmRsZSBvdGhlciB2YWx1ZXMgZm9y
IGdyaWQte3Jvdyxjb2x1bW59IGxpa2UgcmFuZ2VzIG9yIGxpbmUgbmFtZXMuCisgICAgaWYgKCFj
b2x1bW4uaXNGaXhlZCgpIHx8ICFyb3cuaXNGaXhlZCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0
UG9pbnQoKTsKKworICAgIHNpemVfdCBjb2x1bW5UcmFjayA9IHN0YXRpY19jYXN0PHNpemVfdD4o
Y29sdW1uLmludFZhbHVlKCkpIC0gMTsKKyAgICBzaXplX3Qgcm93VHJhY2sgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHJvdy5pbnRWYWx1ZSgpKSAtIDE7CisKKyAgICBMYXlvdXRQb2ludCBvZmZzZXQ7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2x1bW5UcmFjayAmJiBpIDwgY29sdW1uVHJh
Y2tzLnNpemUoKTsgKytpKQorICAgICAgICBvZmZzZXQuc2V0WChvZmZzZXQueCgpICsgY29sdW1u
VHJhY2tzW2ldLm1fdXNlZEJyZWFkdGgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm93
VHJhY2sgJiYgaSA8IHJvd1RyYWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgb2Zmc2V0LnNldFko
b2Zmc2V0LnkoKSArIHJvd1RyYWNrc1tpXS5tX3VzZWRCcmVhZHRoKTsKKworICAgIC8vIEZJWE1F
OiBIYW5kbGUgbWFyZ2lucyBvbiB0aGUgZ3JpZCBpdGVtLgorICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKIGNvbnN0IGNoYXIqIFJlbmRlckdyaWQ6OnJlbmRlck5hbWUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjg0OThmZTQzMmQ2NDcxZGU0MTRhZTk5MjE1
ZGM1OTM1ODBhMTQ1My4uODI5YmY4ODYyNDQyYmU5ZWExM2Y0MTZjOGRjMWFhMjdiY2JjOTE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC00MCw2ICs0MCwxNCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
KworcHJpdmF0ZToKKyAgICBjbGFzcyBHcmlkVHJhY2s7CisgICAgZW51bSBUcmFja1NpemluZ0Rp
cmVjdGlvbiB7IEZvckNvbHVtbnMsIEZvclJvd3MgfTsKKyAgICB2b2lkIGNvbXB1dGVkVXNlZEJy
ZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+
Jik7CisgICAgdm9pZCBsYXlvdXRHcmlkSXRlbXMoKTsKKworICAgIExheW91dFBvaW50IGZpbmRD
aGlsZExvZ2ljYWxQb3NpdGlvbihSZW5kZXJCb3gqLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYg
Y29sdW1uVHJhY2tzLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tzKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKaW5kZXggYTk4NGZmNmMwODg5MDc2NDlmZDI5YzcxMDEyNDE1MTIwMzc2
NmFhYS4uOGViNDlmN2Q4MGY3Yjk0MjA5Zjc1ZGU5MDZmM2IzYzEwNGI3YzAxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTgxNCw4ICs4MTQs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIGdyaWRDb2x1bW5zKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQ29sdW1uczsg
fQogICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KIAotICAgIGNvbnN0IExl
bmd0aCYgZ3JpZEl0ZW1Db2x1bW4oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBncmlkSXRl
bVJvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5t
X2dyaWRSb3c7IH0KKyAgICBMZW5ndGggZ3JpZEl0ZW1Db2x1bW4oKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uOyB9CisgICAgTGVu
Z3RoIGdyaWRJdGVtUm93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZEl0ZW0tPm1fZ3JpZFJvdzsgfQogCiAgICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94U2hhZG93LmdldCgp
OyB9CiAgICAgdm9pZCBnZXRCb3hTaGFkb3dFeHRlbnQoTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRV
bml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdCB7
IGdldFNoYWRvd0V4dGVudChib3hTaGFkb3coKSwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsg
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDFiYjNkMzZmODAyODA0NjQwMGMyMjNlNmI3MWIxYzI3MTQyMzg5MTEuLjFkZjhj
NGY0YTBlZjg4NGZhZTExYjU3YWRjMjEyZjdjZjhlZGI0OGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0wNy0xNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFBvc2l0aW9uIGdyaWQgaXRlbXMgYnkgcm93L2NvbHVtbiBpbmRleAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyOTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIEFkZCBhIHRlc3QgZm9yIGdyaWQgbGF5b3V0IGlu
IGVhY2ggd3JpdGluZyBtb2RlIGRpcmVjdGlvbi4gIFRoZSBoZWlnaHQgaW4gdmVydGljYWwgd3Jp
dGluZyBtb2RlIGlzIGluY29ycmVjdCBmb3Igbm93LgorCisgICAgICAgICogZmFzdC9jc3MtZ3Jp
ZC1sYXlvdXQvY29udGFpbmluZy1ibG9jay1ncmlkcy1leHBlY3RlZC5odG1sOiBTY29wZSA8cD4g
YXJvdW5kIHRleHQgb25seS4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9jb250YWlu
aW5nLWJsb2NrLWdyaWRzLmh0bWw6IEZpeCBtaXNzaW5nIGNsb3NpbmcgPC9kaXY+LgorICAgICAg
ICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L3BsYWNlLWNlbGwtYnktaW5kZXgtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5LWlu
ZGV4Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTE2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAganF1ZXJ5L21hbmlwdWxhdGlvbi5odG1sIHRpbWVzIG91dCBpbiBy
ZWxlYXNlIHRvby4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2NvbnRhaW5pbmctYmxvY2stZ3JpZHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L2NvbnRhaW5pbmctYmxvY2stZ3JpZHMtZXhwZWN0ZWQuaHRtbAppbmRl
eCA1NzNmMmI1YWQ0ZjhiMjk1OTI1Njg2YmU1ODFiZjk1ZWE2ODE1Y2VhLi5hOTc4MTJhMGRiMDZk
Y2EyZDU5MjdmMTU4YmZjZWRkNTczYmZiODI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1ncmlkLWxheW91dC9jb250YWluaW5nLWJsb2NrLWdyaWRzLWV4cGVjdGVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvY29udGFpbmluZy1ibG9jay1ncmlk
cy1leHBlY3RlZC5odG1sCkBAIC02LDggKzYsNyBAQAogICAgIDwvc3R5bGU+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxwPkdyaWRzIGNhbiBhY3QgYXMgY29udGFpbmluZyBibG9ja3MgZm9yIHBvc2l0aW9u
ZWQgY29udGVudC4KKzxwPkdyaWRzIGNhbiBhY3QgYXMgY29udGFpbmluZyBibG9ja3MgZm9yIHBv
c2l0aW9uZWQgY29udGVudC48L3A+CiA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDog
MjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+Ci08L3A+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9jb250
YWluaW5nLWJsb2NrLWdyaWRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9jb250YWluaW5nLWJsb2NrLWdyaWRzLmh0bWwKaW5kZXggYTZhZTc3MWEzODVlNWI2N2YyNzMw
NTA5MDhhZGU4ZGIxMjUyMmY0Yy4uOGJiNGI4YWJkZjc5Y2E1M2I4MmE3NGIzMTUxZjU4NTM2N2Jj
NTJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvY29udGFp
bmluZy1ibG9jay1ncmlkcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5
b3V0L2NvbnRhaW5pbmctYmxvY2stZ3JpZHMuaHRtbApAQCAtMTIsOSArMTIsOCBAQAogICAgIDwv
c3R5bGU+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwPkdyaWRzIGNhbiBhY3QgYXMgY29udGFpbmluZyBi
bG9ja3MgZm9yIHBvc2l0aW9uZWQgY29udGVudC4KLTxkaXYgY2xhc3M9InJlbGF0aXZlLXBvc2l0
aW9uZWQtZ3JpZCIgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtZ3JpZCI+PGRpdiBzdHlsZT0iYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47IGxlZnQ6IDA7IHRvcDogMCI+PC9kaXY+Ci08ZGl2IGNsYXNz
PSJyZWxhdGl2ZS1wb3NpdGlvbmVkLWlubGluZS1ncmlkIiBzdHlsZT0iZGlzcGxheTogLXdlYmtp
dC1pbmxpbmUtZ3JpZCI+PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpncmVlbjsgbGVmdDog
MDsgdG9wOiAwIj48L2Rpdj4KLTwvcD4KKzxwPkdyaWRzIGNhbiBhY3QgYXMgY29udGFpbmluZyBi
bG9ja3MgZm9yIHBvc2l0aW9uZWQgY29udGVudC48L3A+Cis8ZGl2IGNsYXNzPSJyZWxhdGl2ZS1w
b3NpdGlvbmVkLWdyaWQiIHN0eWxlPSJkaXNwbGF5OiAtd2Via2l0LWdyaWQiPjxkaXYgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBsZWZ0OiAwOyB0b3A6IDAiPjwvZGl2PjwvZGl2Pgor
PGRpdiBjbGFzcz0icmVsYXRpdmUtcG9zaXRpb25lZC1pbmxpbmUtZ3JpZCIgc3R5bGU9ImRpc3Bs
YXk6IC13ZWJraXQtaW5saW5lLWdyaWQiPjxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Z3Jl
ZW47IGxlZnQ6IDA7IHRvcDogMCI+PC9kaXY+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5LWlu
ZGV4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3BsYWNl
LWNlbGwtYnktaW5kZXgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyY2VjYzhiMTk3NDc2NzY2
YjRjMzllMzViYzI4MzUzZThlNWQwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1ncmlkLWxheW91dC9wbGFjZS1jZWxsLWJ5LWluZGV4LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIyIEBACitUZXN0IHNvbWUgc2ltcGxlIGdyaWQgbGF5b3V0cyBieSBwb3NpdGlvbmlu
ZyBncmlkIGl0ZW1zIGJ5IGluZGV4LgorCitQQVNTCitQQVNTCitGQUlMOgorRXhwZWN0ZWQgMTEw
IGZvciBoZWlnaHQsIGJ1dCBnb3QgMTUuIAorCis8ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdl
YmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOyBtYXJnaW4tYm90dG9tOiA2MHB4OyIgZGF0
YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiPgorICAgIDxk
aXYgaWQ9ImEiIGRhdGEtb2Zmc2V0LXg9IjQwIiBkYXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJiIiBkYXRhLW9mZnNldC14PSI0MCIgZGF0YS1vZmZzZXQteT0iNTAiPjwvZGl2
PgorICAgIDxkaXYgaWQ9ImMiIGRhdGEtb2Zmc2V0LXg9IjIwIiBkYXRhLW9mZnNldC15PSIwIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJkIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZzZXQteT0i
NTAiPjwvZGl2PgorPC9kaXY+CitGQUlMOgorRXhwZWN0ZWQgMTEwIGZvciBoZWlnaHQsIGJ1dCBn
b3QgMTUuIAorCis8ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6
IHZlcnRpY2FsLWxyOyBtYXJnaW4tYm90dG9tOiA2MHB4OyIgZGF0YS1leHBlY3RlZC13aWR0aD0i
NTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtb2Zm
c2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEt
b2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjIiBk
YXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZzZXQteT0iMCI+PC9kaXY+CisgICAgPGRpdiBpZD0i
ZCIgZGF0YS1vZmZzZXQteD0iMjAiIGRhdGEtb2Zmc2V0LXk9IjUwIj48L2Rpdj4KKzwvZGl2Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGxhY2UtY2VsbC1i
eS1pbmRleC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGxhY2UtY2Vs
bC1ieS1pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3Yjk3OGNhZjE4ZGVjNTVjZTU5YzM5MzA1NWFm
NjRmNmZhYWIwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlk
LWxheW91dC9wbGFjZS1jZWxsLWJ5LWluZGV4Lmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91dEVuYWJs
ZWQiLCAxKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKzwvc2NyaXB0PgorPHN0
eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICAtd2Via2l0LWdy
aWQtY29sdW1uczogNTBweCA2MHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAyMHB4IDMwcHg7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsKKyAgICBtYXgtd2lkdGg6IDExMHB4OworfQor
CisjYSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAtd2Via2l0LWdyaWQtY29s
dW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDE7CisgICAgd2lkdGg6IDEwcHg7CisgICAg
aGVpZ2h0OiAxNXB4OworfQorI2IgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAg
IC13ZWJraXQtZ3JpZC1jb2x1bW46IDI7CisgICAgLXdlYmtpdC1ncmlkLXJvdzogMTsKKyAgICB3
aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDE1cHg7Cit9CisjYyB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmVkOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDE7CisgICAgLXdlYmtpdC1ncmlk
LXJvdzogMjsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDE1cHg7Cit9CisjZCB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDI7
CisgICAgLXdlYmtpdC1ncmlkLXJvdzogMjsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6
IDE1cHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9jaGVjay1s
YXlvdXQuanMiPjwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJjaGVja0xheW91dCgnLmdyaWQnKSI+
CisKKzxwPlRlc3Qgc29tZSBzaW1wbGUgZ3JpZCBsYXlvdXRzIGJ5IHBvc2l0aW9uaW5nIGdyaWQg
aXRlbXMgYnkgaW5kZXguPC9wPgorCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgor
PGRpdiBjbGFzcz0iZ3JpZCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTEwIiBkYXRhLWV4cGVjdGVk
LWhlaWdodD0iNTAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zm
c2V0LXk9IjAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRh
LW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjIiBkYXRhLW9mZnNldC14PSIwIiBk
YXRhLW9mZnNldC15PSIyMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iZCIgZGF0YS1vZmZzZXQteD0i
NTAiIGRhdGEtb2Zmc2V0LXk9IjIwIj48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdlYmtp
dC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjExMCIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLW9mZnNldC14
PSIwIiBkYXRhLW9mZnNldC15PSIzNSI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1vZmZz
ZXQteD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjM1Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjIiBkYXRh
LW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIxNSI+PC9kaXY+CisgICAgPGRpdiBpZD0iZCIg
ZGF0YS1vZmZzZXQteD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjE1Ij48L2Rpdj4KKzwvZGl2PgorPC9k
aXY+CisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+Cis8IS0tIEZJWE1FOiBUaGUg
aGVpZ2h0IG9mIHRoZSBncmlkIGlzIHdyb25nIGJlY2F1c2Ugd2UgbmVlZCB0byBpbXBsZW1lbnQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKS4gLS0+Cis8ZGl2IGNsYXNzPSJncmlkIiBz
dHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOyBtYXJnaW4tYm90dG9tOiA2
MHB4OyIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAi
PgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtb2Zmc2V0LXg9IjQwIiBkYXRhLW9mZnNldC15PSIwIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLW9mZnNldC14PSI0MCIgZGF0YS1vZmZzZXQteT0i
NTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImMiIGRhdGEtb2Zmc2V0LXg9IjIwIiBkYXRhLW9mZnNl
dC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0YS1v
ZmZzZXQteT0iNTAiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlIj4KKzwhLS0gRklYTUU6IFRoZSBoZWlnaHQgb2YgdGhlIGdyaWQgaXMgd3Jv
bmcgYmVjYXVzZSB3ZSBuZWVkIHRvIGltcGxlbWVudCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpLiAtLT4KKzxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9k
ZTogdmVydGljYWwtbHI7IG1hcmdpbi1ib3R0b206IDYwcHg7IiBkYXRhLWV4cGVjdGVkLXdpZHRo
PSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjExMCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1v
ZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0
YS1vZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iNTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImMi
IGRhdGEtb2Zmc2V0LXg9IjIwIiBkYXRhLW9mZnNldC15PSIwIj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJkIiBkYXRhLW9mZnNldC14PSIyMCIgZGF0YS1vZmZzZXQteT0iNTAiPjwvZGl2PgorPC9kaXY+
Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>