<?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>41081</bug_id>
          
          <creation_ts>2010-06-23 10:58:26 -0700</creation_ts>
          <short_desc>Add a NodeList-derivated wrapper class for a ListHashSet</short_desc>
          <delta_ts>2010-07-29 08:13:11 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>40197</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>darin</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>klobag</cc>
    
    <cc>koivisto</cc>
    
    <cc>manyoso</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241938</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-23 10:58:26 -0700</bug_when>
    <thetext>This is a preparation work for bug 40197, which is about extending the current hit testing system to also support rectangular hit area, instead of only points. As discussed by hyatt in https://bugs.webkit.org/show_bug.cgi?id=40197#c19 , a ListHashSet structure is to be used to store the hit-tested nodes. In order to expose this rect-based hit test functionality to the DOM, a nodesFromRect method will be added to Document class, and it will return a NodeList wrapping this ListHashSet.

This bug intends to provide this wrapper class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241949</commentid>
    <comment_count>1</comment_count>
      <attachid>59533</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-23 11:13:53 -0700</bug_when>
    <thetext>Created attachment 59533
patch v1

I have not added LayoutTests for this new NodeList at the moment, because it is only going to be used by patch to be submitted in bug 40197 - RefPrt&lt;NodeList&gt; Document::nodesFromRect const will use it/expose it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241952</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-23 11:16:30 -0700</bug_when>
    <thetext>Attachment 59533 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/dom/StaticHashSetNodeList.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/dom/StaticHashSetNodeList.cpp:46:  Semicolon defining empty statement for this loop. Use { } instead.  [whitespace/semicolon] [5]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241961</commentid>
    <comment_count>3</comment_count>
      <attachid>59539</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-23 11:23:46 -0700</bug_when>
    <thetext>Created attachment 59539
patch v1.1 - fixed style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242276</commentid>
    <comment_count>4</comment_count>
      <attachid>59608</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-23 20:43:16 -0700</bug_when>
    <thetext>Created attachment 59608
(commit r61818, r=dhyatt) patch v1.2

Removed an unnecessery FIXME in the code (due to accidental copy &amp; paste) pointed out by dhyatt on IRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242627</commentid>
    <comment_count>5</comment_count>
      <attachid>59608</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-06-24 12:46:20 -0700</bug_when>
    <thetext>Comment on attachment 59608
(commit r61818, r=dhyatt) patch v1.2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242818</commentid>
    <comment_count>6</comment_count>
      <attachid>59608</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-24 21:42:22 -0700</bug_when>
    <thetext>Comment on attachment 59608
(commit r61818, r=dhyatt) patch v1.2

Clearing flags on attachment: 59608

Committed r61818: &lt;http://trac.webkit.org/changeset/61818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243139</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-25 12:39:11 -0700</bug_when>
    <thetext>Why a ListHashSet and not a Vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243140</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-25 12:39:31 -0700</bug_when>
    <thetext>Once the hit test is done, it would be best to copy the contents of the ListHashSet into a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243162</commentid>
    <comment_count>9</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-25 13:13:31 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Once the hit test is done, it would be best to copy the contents of the ListHashSet into a Vector.

We were using Vector in previous versions of the rect-based HitTest patch, but it was suggested to use ListHashSet. see:

https://bugs.webkit.org/show_bug.cgi?id=40197#c11
https://bugs.webkit.org/show_bug.cgi?id=40197#c15
https://bugs.webkit.org/show_bug.cgi?id=40197#c21

I understand your concern, though. It is probably because every NodeList::item(int n) operation has to iterate over the ListHashSet, which is O(n). With a Vector it&apos;d be O(1) , since we can just do Vector::at(int n). Is that the case, Darin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243171</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-25 13:29:11 -0700</bug_when>
    <thetext>It’s fine to use ListHashSet to build up the list; a good efficient way to check for duplicates and membership while creating it. Once the list is created, though, moving to a Vector makes sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243172</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-25 13:29:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I understand your concern, though. It is probably because every NodeList::item(int n) operation has to iterate over the ListHashSet, which is O(n). With a Vector it&apos;d be O(1) , since we can just do Vector::at(int n). Is that the case, Darin?

That’s one of my concerns. The other is that a ListHashSet uses a lot of extra memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246736</commentid>
    <comment_count>12</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-07-05 12:01:36 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; I understand your concern, though. It is probably because every NodeList::item(int n) operation has to iterate over the ListHashSet, which is O(n). With a Vector it&apos;d be O(1) , since we can just do Vector::at(int n). Is that the case, Darin?
&gt; 
&gt; That’s one of my concerns. The other is that a ListHashSet uses a lot of extra memory.

Darin, I am really open to make it as you suggested: copy the listhashset over a vector after hittest is ready, and expose it as a StaticNodeList instead of as the added StaticHashSetNodeList. In this case, we can also discuss and decide if we need this StaticHashSetListNode at all, or just remove it.

If we decide to keep it, I will templatize StaticListNode to either work with a Vector or a ListHashSet, as talked to Dyatt on irc, merging StaticHashSetListNode into StaticListNode anyways.

I will try to get the core patch (in bug 40197) in a better shape first, then get back to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257685</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-07-29 08:13:11 -0700</bug_when>
    <thetext>Revision r61818 cherry-picked into qtwebkit-2.1 with commit 8a8a28d007539792bf63f36817cfc3abdf994555</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59533</attachid>
            <date>2010-06-23 11:13:53 -0700</date>
            <delta_ts>2010-06-23 11:23:46 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>0001-2010-06-22-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>14955</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA1ZWM1ODUwNDZmMTNhN2QxMjQ4MjUyZTQ4Y2JmNmExMTY0MzhkYTgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWVnbyBHb256YWxleiA8ZGllZ29oY2dAd2Via2l0LW1hYy5s
b2NhbD4KRGF0ZTogV2VkLCAyMyBKdW4gMjAxMCAxMDowNDozMyAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIDIwMTAtMDYtMjIgQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBBZGQgYSBOb2RlTGlzdC1k
ZXJpdmF0ZWQgd3JhcHBlciBjbGFzcyBmb3IgYSBMaXN0SGFzaFNldC4KICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEwODEKCiAgICAgICAgU3RhdGljSGFz
aFNldExpc3Qgd2lsbCB3b3JrIGFzIGEgd3JhcHBlciB0byBMaXN0SGFzaFNldCBvYmplY3RzIHRo
YXQgYXJlCiAgICAgICAgYWltZWQgdG8gYmUgZXhwb3NlZCB0byB0aGUgRE9NLgoKICAgICAgICBB
cyBhIHVzZSBjYXNlLCB0aGUgcmVjdCBiYXNlZCBIaXRUZXN0IChidWcgNDAxOTcpIHdpbGwgc3Rv
cmUgdGhlIHJldHJpZXZlZCBub2RlcwogICAgICAgIGluIGEgTGlzdEhhc2hTZXQuIEl0IGlzIGdv
aW5nIHRvIGJlIGV4cG9zZWQgdG8gdGhlIERPTSB0aHJvdWdoIGFyZSBub2Rlc0Zyb21SZWN0CiAg
ICAgICAgb2YgRG9jdW1lbnQgcmV0dXJuaW5nIGEgTm9kZUxpc3QgKGkuZS4gU3RhdGlzSGFzaFNl
dExpc3QpIHdyYXBwaW5nIGEgTGlzdEhhc2hTZXQuCgogICAgICAgIE5vIG5ldyB0ZXN0cy4KLS0t
CiBXZWJDb3JlL0FuZHJvaWQubWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArKysrKysrCiBXZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9XZWJD
b3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICAgIHwgICAgOCArKysKIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgICAgOCArKysKIFdlYkNvcmUvZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgICAgIHwgICA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oICAgICAgIHwgICA3MCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKSwg
MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2RvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9kb20vU3RhdGljSGFz
aFNldE5vZGVMaXN0LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJDb3Jl
L0FuZHJvaWQubWsKaW5kZXggMWJhOTlhMC4uNTY2YTY5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9B
bmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtMTYyLDYgKzE2Miw3IEBAIExP
Q0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRvbS9TZWxlY3RFbGVtZW50
LmNwcCBcCiAJZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwKIAlkb20vU3BhY2VTcGxpdFN0cmlu
Zy5jcHAgXAorCWRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKIAlkb20vU3RhdGljTm9k
ZUxpc3QuY3BwIFwKIAlkb20vU3R5bGVFbGVtZW50LmNwcCBcCiAJZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE0NWNlNzcuLmFkOTM2MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE4LDYgKzgxOCw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAKICAgICBk
b20vU2VsZWN0b3JOb2RlTGlzdC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKyAg
ICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5j
cHAKICAgICBkb20vU3R5bGVFbGVtZW50LmNwcAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
NjRkOGUzLi5iNmEwNjU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTIyIEFudG9uaW8gR29tZXMg
PHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIE5vZGVMaXN0LWRlcml2YXRlZCB3cmFwcGVyIGNsYXNzIGZv
ciBhIExpc3RIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDEwODEKKworICAgICAgICBTdGF0aWNIYXNoU2V0TGlzdCB3aWxsIHdvcmsgYXMg
YSB3cmFwcGVyIHRvIExpc3RIYXNoU2V0IG9iamVjdHMgdGhhdCBhcmUKKyAgICAgICAgYWltZWQg
dG8gYmUgZXhwb3NlZCB0byB0aGUgRE9NLgorCisgICAgICAgIEFzIGEgdXNlIGNhc2UsIHRoZSBy
ZWN0IGJhc2VkIEhpdFRlc3QgKGJ1ZyA0MDE5Nykgd2lsbCBzdG9yZSB0aGUgcmV0cmlldmVkIG5v
ZGVzCisgICAgICAgIGluIGEgTGlzdEhhc2hTZXQuIEl0IGlzIGdvaW5nIHRvIGJlIGV4cG9zZWQg
dG8gdGhlIERPTSB0aHJvdWdoIGFyZSBub2Rlc0Zyb21SZWN0CisgICAgICAgIG9mIERvY3VtZW50
IHJldHVybmluZyBhIE5vZGVMaXN0IChpLmUuIFN0YXRpc0hhc2hTZXRMaXN0KSB3cmFwcGluZyBh
IExpc3RIYXNoU2V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwogMjAxMC0wNi0yMyAgTWlr
aGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlNDhiMDM3Li40NzkyZmYxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTg4NCw2ICs4ODQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1NlbGVj
dG9yTm9kZUxpc3QuaCBcCiAJV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXAogCVdl
YkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCisJV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCBcCisJV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXAog
CVdlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9kb20vU3RhdGljTm9k
ZUxpc3QuaCBcCiAJV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5ODZmN2EzLi45
MmUwZDgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTUwMCw2ICs1MDAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm90YXRp
b24uY3BwIFwKICAgICBkb20vT3B0aW9uR3JvdXBFbGVtZW50LmNwcCBcCiAgICAgZG9tL09wdGlv
bkVsZW1lbnQuY3BwIFwKKyAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCiAgICAg
ZG9tL092ZXJmbG93RXZlbnQuY3BwIFwKICAgICBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAg
XAogICAgIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBcCkBAIC0xMjQzLDYgKzEyNDQsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBkb20vTm90YXRpb24uaCBcCiAgICAgZG9tL09wdGlvbkVsZW1lbnQuaCBc
CiAgICAgZG9tL09wdGlvbkdyb3VwRWxlbWVudC5oIFwKKyAgICBkb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggXAogICAgIGRvbS9PdmVyZmxvd0V2ZW50LmggXAogICAgIGRvbS9QYWdlVHJhbnNp
dGlvbkV2ZW50LmggXAogICAgIGRvbS9Qb3NpdGlvbi5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IGI0MGZhMWMuLmE5MmY1ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzAxODUsNiArMzAxODUsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY0hhc2hTZXRM
aXN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxTdGF0aWNIYXNoU2V0TGlzdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY05vZGVMaXN0LmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDBkMDk0NzguLjgyYTgyYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDA4LDYgKzEwMDgsOCBAQAogCQk0RjE1MzRFMDExQjUzMzAy
MDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0
aW5nQmVoYXZpb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5
QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CiAJCTRGMzI4
OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAv
KiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0RjhDMTdDMjExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGOEMxN0MwMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICov
OyB9OworCQk0RjhDMTdDMzExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjhDMTdD
MTExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCTRG
RDhEMEYyMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYwMTE5QzcxOEIwMDJGQTgy
NSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLzsgfTsKIAkJNEZEOEQwRjMxMTlDNzE4QjAwMkZBODI1
IC8qIFNjcmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggKi87
IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC02NjU3LDYgKzY2NTksOCBAQAogCQk0RjE1MzRERjExQjUzMzAyMDAy
MUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RjhDMTdDMDExRDI0
NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGOEMxN0MxMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlj
SGFzaFNldE5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGRDhEMEYw
MTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjE3LDYgKzE2NjIxLDggQEAKIAkJRjUyM0Qz
MjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNEY4QzE3QzAxMUQyNDY2QjAwQ0UyMTcwIC8qIFN0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgKi8sCisJCQkJNEY4QzE3QzExMUQyNDY2QjAwQ0UyMTcwIC8qIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdC5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0
ci5jcHAgKi8sCkBAIC0xOTUyNiw2ICsxOTUzMiw3IEBACiAJCQkJOTcxOUFGMDAxMUQwOUYyQzAw
RDQ1ODMxIC8qIEhUTUxJbnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg1MzEyM0Qx
MUQwNDcxQjAwRDREMDc3IC8qIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFNkE3ODExMUQxNjYxQjAwMzExRjRBIC8qIEhUTUxQYXJzZXJTY2hlZHVs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGOEMxN0MzMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE4NDUsNiArMjE4NTIsNyBA
QAogCQkJCTFBRDhGODFDMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjUyNUE5NjYxMUNBMjM0MDAwM0EyM0E4IC8qIEpTU1FMRXhj
ZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RTZBNzgyMTFEMTY2MUIwMDMxMUY0QSAv
KiBIVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRGOEMxN0MyMTFE
MjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGIvV2Vi
Q29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5mNmE5ZDU1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3Jn
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCIK
KworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25l
ZCBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bm9kZXMuc2l6ZSgpOworfQorCitOb2RlKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Oml0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgKHVuc2lnbmVkKSBtX25vZGVz
LnNpemUoKSkgeworICAgICAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX25vZGVzLmJlZ2luKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgY291bnQg
PSAwOyBjb3VudCA8IGluZGV4OyArK2l0LCArK2NvdW50KSA7CisgICAgICAgIHJldHVybiAoKml0
KS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogU3RhdGljSGFzaFNl
dE5vZGVMaXN0OjppdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNv
bnN0Cit7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9ub2Rlcy5iZWdpbigpOworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX25vZGVzLmVuZCgpOworICAgIGZvciAoIDsgaXQgIT0gZW5kIDsg
KytpdCkgeworICAgICAgICBOb2RlKiBub2RlID0gKCppdCkuZ2V0KCk7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSB1c2luZyBnZXRJZEF0dHJpYnV0ZSBpbnN0ZWFk
IG9mIGlkRm9yU3R5bGVSZXNvbHV0aW9uLgorICAgICAgICBpZiAobm9kZS0+aGFzSUQoKSAmJiBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmdldElkQXR0cmlidXRlKCkgPT0gZWxlbWVudElk
KQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1N0YXRpY0hh
c2hTZXROb2RlTGlzdC5oIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M3ODJhZAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQW50b25pbyBHb21lcyA8dG9u
aWtpdG9vQHdlYmtpdC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3RfaAorI2RlZmlu
ZSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3RfaAorCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
Tm9kZTsKKworICAgIGNsYXNzIFN0YXRpY0hhc2hTZXROb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlz
dCB7CisgICAgcHVibGljOgorICAgICAgICAvLyBBZG9wdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBu
b2RlcyBMaXN0SGFzaFNldC4KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGljSGFzaFNl
dE5vZGVMaXN0PiBhZG9wdChjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdChjb25zdF9jYXN0PExpc3RIYXNo
U2V0PFJlZlB0cjxOb2RlPiA+Jj4obm9kZXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gYWRvcHQoTGlzdEhhc2hTZXQ8UmVm
UHRyPE5vZGU+ID4mIG5vZGVzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0YXRpY0hhc2hTZXROb2RlTGlzdChub2RlcykpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBOb2Rl
KiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVt
V2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5v
ZGVzKQorICAgICAgICB7CisgICAgICAgICAgICBtX25vZGVzLnN3YXAobm9kZXMpOworICAgICAg
ICB9CisKKyAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKKyAgICB9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3RfaAotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59539</attachid>
            <date>2010-06-23 11:23:46 -0700</date>
            <delta_ts>2010-06-23 20:43:16 -0700</delta_ts>
            <desc>patch v1.1 - fixed style issues</desc>
            <filename>0001-2010-06-22-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>14869</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBkZjQzYzY5NWE2NDk3YWJiNmMyN2YxY2Y1M2VkZjJmMGZkNzZhNWQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWVnbyBHb256YWxleiA8ZGllZ29oY2dAd2Via2l0LW1hYy5s
b2NhbD4KRGF0ZTogV2VkLCAyMyBKdW4gMjAxMCAxMDowNDozMyAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIDIwMTAtMDYtMjIgQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBBZGQgYSBOb2RlTGlzdC1k
ZXJpdmF0ZWQgd3JhcHBlciBjbGFzcyBmb3IgYSBMaXN0SGFzaFNldC4KICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEwODEKCiAgICAgICAgU3RhdGljSGFz
aFNldExpc3Qgd2lsbCB3b3JrIGFzIGEgd3JhcHBlciB0byBMaXN0SGFzaFNldCBvYmplY3RzIHRo
YXQgYXJlCiAgICAgICAgYWltZWQgdG8gYmUgZXhwb3NlZCB0byB0aGUgRE9NLgoKICAgICAgICBB
cyBhIHVzZSBjYXNlLCB0aGUgcmVjdCBiYXNlZCBIaXRUZXN0IChidWcgNDAxOTcpIHdpbGwgc3Rv
cmUgdGhlIHJldHJpZXZlZCBub2RlcwogICAgICAgIGluIGEgTGlzdEhhc2hTZXQuIEl0IGlzIGdv
aW5nIHRvIGJlIGV4cG9zZWQgdG8gdGhlIERPTSB0aHJvdWdoIGFyZSBub2Rlc0Zyb21SZWN0CiAg
ICAgICAgb2YgRG9jdW1lbnQgcmV0dXJuaW5nIGEgTm9kZUxpc3QgKGkuZS4gU3RhdGlzSGFzaFNl
dExpc3QpIHdyYXBwaW5nIGEgTGlzdEhhc2hTZXQuCgogICAgICAgIE5vIG5ldyB0ZXN0cy4KLS0t
CiBXZWJDb3JlL0FuZHJvaWQubWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArKysrKysrCiBXZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9XZWJD
b3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICAgIHwgICAgOCArKysKIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgICAgOCArKysKIFdlYkNvcmUvZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgICAgIHwgICA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oICAgICAgIHwgICA3MCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKSwg
MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2RvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9kb20vU3RhdGljSGFz
aFNldE5vZGVMaXN0LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJDb3Jl
L0FuZHJvaWQubWsKaW5kZXggMWJhOTlhMC4uNTY2YTY5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9B
bmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtMTYyLDYgKzE2Miw3IEBAIExP
Q0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRvbS9TZWxlY3RFbGVtZW50
LmNwcCBcCiAJZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwKIAlkb20vU3BhY2VTcGxpdFN0cmlu
Zy5jcHAgXAorCWRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKIAlkb20vU3RhdGljTm9k
ZUxpc3QuY3BwIFwKIAlkb20vU3R5bGVFbGVtZW50LmNwcCBcCiAJZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE0NWNlNzcuLmFkOTM2MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE4LDYgKzgxOCw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAKICAgICBk
b20vU2VsZWN0b3JOb2RlTGlzdC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKyAg
ICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5j
cHAKICAgICBkb20vU3R5bGVFbGVtZW50LmNwcAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
NjRkOGUzLi5iNmEwNjU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTIyIEFudG9uaW8gR29tZXMg
PHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIE5vZGVMaXN0LWRlcml2YXRlZCB3cmFwcGVyIGNsYXNzIGZv
ciBhIExpc3RIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDEwODEKKworICAgICAgICBTdGF0aWNIYXNoU2V0TGlzdCB3aWxsIHdvcmsgYXMg
YSB3cmFwcGVyIHRvIExpc3RIYXNoU2V0IG9iamVjdHMgdGhhdCBhcmUKKyAgICAgICAgYWltZWQg
dG8gYmUgZXhwb3NlZCB0byB0aGUgRE9NLgorCisgICAgICAgIEFzIGEgdXNlIGNhc2UsIHRoZSBy
ZWN0IGJhc2VkIEhpdFRlc3QgKGJ1ZyA0MDE5Nykgd2lsbCBzdG9yZSB0aGUgcmV0cmlldmVkIG5v
ZGVzCisgICAgICAgIGluIGEgTGlzdEhhc2hTZXQuIEl0IGlzIGdvaW5nIHRvIGJlIGV4cG9zZWQg
dG8gdGhlIERPTSB0aHJvdWdoIGFyZSBub2Rlc0Zyb21SZWN0CisgICAgICAgIG9mIERvY3VtZW50
IHJldHVybmluZyBhIE5vZGVMaXN0IChpLmUuIFN0YXRpc0hhc2hTZXRMaXN0KSB3cmFwcGluZyBh
IExpc3RIYXNoU2V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwogMjAxMC0wNi0yMyAgTWlr
aGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlNDhiMDM3Li40NzkyZmYxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTg4NCw2ICs4ODQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1NlbGVj
dG9yTm9kZUxpc3QuaCBcCiAJV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXAogCVdl
YkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCisJV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCBcCisJV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXAog
CVdlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9kb20vU3RhdGljTm9k
ZUxpc3QuaCBcCiAJV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5ODZmN2EzLi45
MmUwZDgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTUwMCw2ICs1MDAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm90YXRp
b24uY3BwIFwKICAgICBkb20vT3B0aW9uR3JvdXBFbGVtZW50LmNwcCBcCiAgICAgZG9tL09wdGlv
bkVsZW1lbnQuY3BwIFwKKyAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCiAgICAg
ZG9tL092ZXJmbG93RXZlbnQuY3BwIFwKICAgICBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAg
XAogICAgIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBcCkBAIC0xMjQzLDYgKzEyNDQsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBkb20vTm90YXRpb24uaCBcCiAgICAgZG9tL09wdGlvbkVsZW1lbnQuaCBc
CiAgICAgZG9tL09wdGlvbkdyb3VwRWxlbWVudC5oIFwKKyAgICBkb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggXAogICAgIGRvbS9PdmVyZmxvd0V2ZW50LmggXAogICAgIGRvbS9QYWdlVHJhbnNp
dGlvbkV2ZW50LmggXAogICAgIGRvbS9Qb3NpdGlvbi5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IGI0MGZhMWMuLmE5MmY1ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzAxODUsNiArMzAxODUsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY0hhc2hTZXRM
aXN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxTdGF0aWNIYXNoU2V0TGlzdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY05vZGVMaXN0LmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDBkMDk0NzguLjgyYTgyYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDA4LDYgKzEwMDgsOCBAQAogCQk0RjE1MzRFMDExQjUzMzAy
MDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0
aW5nQmVoYXZpb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5
QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CiAJCTRGMzI4
OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAv
KiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0RjhDMTdDMjExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGOEMxN0MwMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICov
OyB9OworCQk0RjhDMTdDMzExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjhDMTdD
MTExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCTRG
RDhEMEYyMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYwMTE5QzcxOEIwMDJGQTgy
NSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLzsgfTsKIAkJNEZEOEQwRjMxMTlDNzE4QjAwMkZBODI1
IC8qIFNjcmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggKi87
IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC02NjU3LDYgKzY2NTksOCBAQAogCQk0RjE1MzRERjExQjUzMzAyMDAy
MUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RjhDMTdDMDExRDI0
NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGOEMxN0MxMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlj
SGFzaFNldE5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGRDhEMEYw
MTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjE3LDYgKzE2NjIxLDggQEAKIAkJRjUyM0Qz
MjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNEY4QzE3QzAxMUQyNDY2QjAwQ0UyMTcwIC8qIFN0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgKi8sCisJCQkJNEY4QzE3QzExMUQyNDY2QjAwQ0UyMTcwIC8qIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdC5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0
ci5jcHAgKi8sCkBAIC0xOTUyNiw2ICsxOTUzMiw3IEBACiAJCQkJOTcxOUFGMDAxMUQwOUYyQzAw
RDQ1ODMxIC8qIEhUTUxJbnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg1MzEyM0Qx
MUQwNDcxQjAwRDREMDc3IC8qIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFNkE3ODExMUQxNjYxQjAwMzExRjRBIC8qIEhUTUxQYXJzZXJTY2hlZHVs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGOEMxN0MzMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE4NDUsNiArMjE4NTIsNyBA
QAogCQkJCTFBRDhGODFDMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjUyNUE5NjYxMUNBMjM0MDAwM0EyM0E4IC8qIEpTU1FMRXhj
ZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RTZBNzgyMTFEMTY2MUIwMDMxMUY0QSAv
KiBIVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRGOEMxN0MyMTFE
MjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGIvV2Vi
Q29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40MjhlZmRlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3Jn
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCIK
KworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25l
ZCBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bm9kZXMuc2l6ZSgpOworfQorCitOb2RlKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Oml0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgKHVuc2lnbmVkKSBtX25vZGVz
LnNpemUoKSkgeworICAgICAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX25vZGVzLmJlZ2luKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgY291bnQg
PSAwOyBjb3VudCA8IGluZGV4OyArK2l0LCArK2NvdW50KSB7IH0KKyAgICAgICAgcmV0dXJuICgq
aXQpLmdldCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitOb2RlKiBTdGF0aWNIYXNo
U2V0Tm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkg
Y29uc3QKK3sKKyAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX25vZGVzLmJlZ2luKCk7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IG1fbm9kZXMuZW5kKCk7CisgICAgZm9yICggOyBpdCAhPSBlbmQg
OyArK2l0KSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSAoKml0KS5nZXQoKTsKKyAgICAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHVzaW5nIGdldElkQXR0cmlidXRlIGluc3Rl
YWQgb2YgaWRGb3JTdHlsZVJlc29sdXRpb24uCisgICAgICAgIGlmIChub2RlLT5oYXNJRCgpICYm
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0SWRBdHRyaWJ1dGUoKSA9PSBlbGVtZW50
SWQpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU3RhdGlj
SGFzaFNldE5vZGVMaXN0LmggYi9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTU0NDkzCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBbnRvbmlvIEdvbWVzIDx0
b25pa2l0b29Ad2Via2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCisjZGVm
aW5lIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCisKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5v
ZGU7CisKK2NsYXNzIFN0YXRpY0hhc2hTZXROb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7Citw
dWJsaWM6CisgICAgLy8gQWRvcHRzIHRoZSBjb250ZW50cyBvZiB0aGUgbm9kZXMgTGlzdEhhc2hT
ZXQuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChj
b25zdCBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHQoY29uc3RfY2FzdDxMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiY+KG5vZGVz
KSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0
PiBhZG9wdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY0hhc2hTZXROb2RlTGlzdChub2RlcykpOworICAg
IH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgdmlydHVhbCBO
b2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1X
aXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQorICAg
IHsKKyAgICAgICAgbV9ub2Rlcy5zd2FwKG5vZGVzKTsKKyAgICB9CisKKyAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8Tm9kZT4gPiBtX25vZGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKLS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59608</attachid>
            <date>2010-06-23 20:43:16 -0700</date>
            <delta_ts>2010-06-24 21:42:22 -0700</delta_ts>
            <desc>(commit r61818, r=dhyatt) patch v1.2</desc>
            <filename>0001-2010-06-22-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>14772</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA1MDA2YzIwYzgyNzcyOGQyNmM2ODc3MTBhZjQ2YWFlN2RmNWM5NTU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWVnbyBHb256YWxleiA8ZGllZ29oY2dAd2Via2l0LW1hYy5s
b2NhbD4KRGF0ZTogV2VkLCAyMyBKdW4gMjAxMCAxMDowNDozMyAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIDIwMTAtMDYtMjIgQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBBZGQgYSBOb2RlTGlzdC1k
ZXJpdmF0ZWQgd3JhcHBlciBjbGFzcyBmb3IgYSBMaXN0SGFzaFNldC4KICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEwODEKCiAgICAgICAgU3RhdGljSGFz
aFNldExpc3Qgd2lsbCB3b3JrIGFzIGEgd3JhcHBlciB0byBMaXN0SGFzaFNldCBvYmplY3RzIHRo
YXQgYXJlCiAgICAgICAgYWltZWQgdG8gYmUgZXhwb3NlZCB0byB0aGUgRE9NLgoKICAgICAgICBB
cyBhIHVzZSBjYXNlLCB0aGUgcmVjdCBiYXNlZCBIaXRUZXN0IChidWcgNDAxOTcpIHdpbGwgc3Rv
cmUgdGhlIHJldHJpZXZlZCBub2RlcwogICAgICAgIGluIGEgTGlzdEhhc2hTZXQuIEl0IGlzIGdv
aW5nIHRvIGJlIGV4cG9zZWQgdG8gdGhlIERPTSB0aHJvdWdoIGFyZSBub2Rlc0Zyb21SZWN0CiAg
ICAgICAgb2YgRG9jdW1lbnQgcmV0dXJuaW5nIGEgTm9kZUxpc3QgKGkuZS4gU3RhdGlzSGFzaFNl
dExpc3QpIHdyYXBwaW5nIGEgTGlzdEhhc2hTZXQuCgogICAgICAgIE5vIG5ldyB0ZXN0cy4KLS0t
CiBXZWJDb3JlL0FuZHJvaWQubWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArKysrKysrCiBXZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9XZWJD
b3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICAgIHwgICAgOCArKysKIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgICAgOCArKysKIFdlYkNvcmUvZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgICAgIHwgICA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oICAgICAgIHwgICA3MCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAxNzQgaW5zZXJ0aW9ucygrKSwg
MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2RvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9kb20vU3RhdGljSGFz
aFNldE5vZGVMaXN0LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJDb3Jl
L0FuZHJvaWQubWsKaW5kZXggMWJhOTlhMC4uNTY2YTY5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9B
bmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtMTYyLDYgKzE2Miw3IEBAIExP
Q0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRvbS9TZWxlY3RFbGVtZW50
LmNwcCBcCiAJZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwKIAlkb20vU3BhY2VTcGxpdFN0cmlu
Zy5jcHAgXAorCWRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKIAlkb20vU3RhdGljTm9k
ZUxpc3QuY3BwIFwKIAlkb20vU3R5bGVFbGVtZW50LmNwcCBcCiAJZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE0NWNlNzcuLmFkOTM2MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE4LDYgKzgxOCw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAKICAgICBk
b20vU2VsZWN0b3JOb2RlTGlzdC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKyAg
ICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5j
cHAKICAgICBkb20vU3R5bGVFbGVtZW50LmNwcAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
NjRkOGUzLi5iNmEwNjU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTIyIEFudG9uaW8gR29tZXMg
PHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIE5vZGVMaXN0LWRlcml2YXRlZCB3cmFwcGVyIGNsYXNzIGZv
ciBhIExpc3RIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDEwODEKKworICAgICAgICBTdGF0aWNIYXNoU2V0TGlzdCB3aWxsIHdvcmsgYXMg
YSB3cmFwcGVyIHRvIExpc3RIYXNoU2V0IG9iamVjdHMgdGhhdCBhcmUKKyAgICAgICAgYWltZWQg
dG8gYmUgZXhwb3NlZCB0byB0aGUgRE9NLgorCisgICAgICAgIEFzIGEgdXNlIGNhc2UsIHRoZSBy
ZWN0IGJhc2VkIEhpdFRlc3QgKGJ1ZyA0MDE5Nykgd2lsbCBzdG9yZSB0aGUgcmV0cmlldmVkIG5v
ZGVzCisgICAgICAgIGluIGEgTGlzdEhhc2hTZXQuIEl0IGlzIGdvaW5nIHRvIGJlIGV4cG9zZWQg
dG8gdGhlIERPTSB0aHJvdWdoIGFyZSBub2Rlc0Zyb21SZWN0CisgICAgICAgIG9mIERvY3VtZW50
IHJldHVybmluZyBhIE5vZGVMaXN0IChpLmUuIFN0YXRpc0hhc2hTZXRMaXN0KSB3cmFwcGluZyBh
IExpc3RIYXNoU2V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwogMjAxMC0wNi0yMyAgTWlr
aGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlNDhiMDM3Li40NzkyZmYxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTg4NCw2ICs4ODQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1NlbGVj
dG9yTm9kZUxpc3QuaCBcCiAJV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXAogCVdl
YkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCisJV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCBcCisJV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXAog
CVdlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9kb20vU3RhdGljTm9k
ZUxpc3QuaCBcCiAJV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5ODZmN2EzLi45
MmUwZDgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTUwMCw2ICs1MDAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm90YXRp
b24uY3BwIFwKICAgICBkb20vT3B0aW9uR3JvdXBFbGVtZW50LmNwcCBcCiAgICAgZG9tL09wdGlv
bkVsZW1lbnQuY3BwIFwKKyAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCiAgICAg
ZG9tL092ZXJmbG93RXZlbnQuY3BwIFwKICAgICBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAg
XAogICAgIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBcCkBAIC0xMjQzLDYgKzEyNDQsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBkb20vTm90YXRpb24uaCBcCiAgICAgZG9tL09wdGlvbkVsZW1lbnQuaCBc
CiAgICAgZG9tL09wdGlvbkdyb3VwRWxlbWVudC5oIFwKKyAgICBkb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggXAogICAgIGRvbS9PdmVyZmxvd0V2ZW50LmggXAogICAgIGRvbS9QYWdlVHJhbnNp
dGlvbkV2ZW50LmggXAogICAgIGRvbS9Qb3NpdGlvbi5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IGI0MGZhMWMuLmE5MmY1ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzAxODUsNiArMzAxODUsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY0hhc2hTZXRM
aXN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxTdGF0aWNIYXNoU2V0TGlzdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0YXRpY05vZGVMaXN0LmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDBkMDk0NzguLjgyYTgyYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDA4LDYgKzEwMDgsOCBAQAogCQk0RjE1MzRFMDExQjUzMzAy
MDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0
aW5nQmVoYXZpb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5
QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CiAJCTRGMzI4
OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAv
KiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0RjhDMTdDMjExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGOEMxN0MwMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICov
OyB9OworCQk0RjhDMTdDMzExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjhDMTdD
MTExRDI0NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCTRG
RDhEMEYyMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYwMTE5QzcxOEIwMDJGQTgy
NSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLzsgfTsKIAkJNEZEOEQwRjMxMTlDNzE4QjAwMkZBODI1
IC8qIFNjcmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggKi87
IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC02NjU3LDYgKzY2NTksOCBAQAogCQk0RjE1MzRERjExQjUzMzAyMDAy
MUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RjhDMTdDMDExRDI0
NjZCMDBDRTIxNzAgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGOEMxN0MxMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlj
SGFzaFNldE5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGRDhEMEYw
MTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjE3LDYgKzE2NjIxLDggQEAKIAkJRjUyM0Qz
MjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNEY4QzE3QzAxMUQyNDY2QjAwQ0UyMTcwIC8qIFN0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgKi8sCisJCQkJNEY4QzE3QzExMUQyNDY2QjAwQ0UyMTcwIC8qIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdC5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0
ci5jcHAgKi8sCkBAIC0xOTUyNiw2ICsxOTUzMiw3IEBACiAJCQkJOTcxOUFGMDAxMUQwOUYyQzAw
RDQ1ODMxIC8qIEhUTUxJbnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg1MzEyM0Qx
MUQwNDcxQjAwRDREMDc3IC8qIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFNkE3ODExMUQxNjYxQjAwMzExRjRBIC8qIEhUTUxQYXJzZXJTY2hlZHVs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGOEMxN0MzMTFEMjQ2NkIwMENFMjE3MCAvKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE4NDUsNiArMjE4NTIsNyBA
QAogCQkJCTFBRDhGODFDMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjUyNUE5NjYxMUNBMjM0MDAwM0EyM0E4IC8qIEpTU1FMRXhj
ZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RTZBNzgyMTFEMTY2MUIwMDMxMUY0QSAv
KiBIVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRGOEMxN0MyMTFE
MjQ2NkIwMENFMjE3MCAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGIvV2Vi
Q29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kNjQxY2I1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3Jn
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCIK
KworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25l
ZCBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bm9kZXMuc2l6ZSgpOworfQorCitOb2RlKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Oml0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgKHVuc2lnbmVkKSBtX25vZGVz
LnNpemUoKSkgeworICAgICAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX25vZGVzLmJlZ2luKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgY291bnQg
PSAwOyBjb3VudCA8IGluZGV4OyArK2l0LCArK2NvdW50KSB7IH0KKyAgICAgICAgcmV0dXJuICgq
aXQpLmdldCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitOb2RlKiBTdGF0aWNIYXNo
U2V0Tm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkg
Y29uc3QKK3sKKyAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX25vZGVzLmJlZ2luKCk7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IG1fbm9kZXMuZW5kKCk7CisgICAgZm9yICggOyBpdCAhPSBlbmQg
OyArK2l0KSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSAoKml0KS5nZXQoKTsKKyAgICAgICAgaWYg
KG5vZGUtPmhhc0lEKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5nZXRJZEF0dHJp
YnV0ZSgpID09IGVsZW1lbnRJZCkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBiL1dlYkNvcmUvZG9tL1N0YXRpY0hh
c2hTZXROb2RlTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NTQ0
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
aApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RhdGljSGFzaFNl
dE5vZGVMaXN0X2gKKyNkZWZpbmUgU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKKworI2luY2x1ZGUg
Ik5vZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTm9kZTsKKworY2xhc3MgU3RhdGljSGFzaFNldE5vZGVMaXN0IDogcHVi
bGljIE5vZGVMaXN0IHsKK3B1YmxpYzoKKyAgICAvLyBBZG9wdHMgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBub2RlcyBMaXN0SGFzaFNldC4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q+IGFkb3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdChjb25zdF9jYXN0PExpc3RIYXNoU2V0PFJlZlB0
cjxOb2RlPiA+Jj4obm9kZXMpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0
aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2Rl
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljSGFzaFNldE5vZGVM
aXN0KG5vZGVzKSk7CisgICAgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIHZp
cnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiYgbm9kZXMpCisgICAgeworICAgICAgICBtX25vZGVzLnN3YXAobm9kZXMpOworICAgIH0K
KworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTdGF0aWNIYXNoU2V0Tm9kZUxpc3RfaAotLSAK
MS43LjAuNAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>