<?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>15847</bug_id>
          
          <creation_ts>2007-11-05 10:56:48 -0800</creation_ts>
          <short_desc>Some editing cleanup</short_desc>
          <delta_ts>2007-11-06 08:45:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60315</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-05 10:56:48 -0800</bug_when>
    <thetext>Some minor modifications I wanted to make while studying editing code. Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60318</commentid>
    <comment_count>1</comment_count>
      <attachid>17048</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-05 11:10:55 -0800</bug_when>
    <thetext>Created attachment 17048
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60379</commentid>
    <comment_count>2</comment_count>
      <attachid>17057</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-06 01:12:47 -0800</bug_when>
    <thetext>Created attachment 17057
updated patch

Removed a change to m_starting/endingSelection - I realized that m_starting/endingRootEditableElement depended on it. The constructor still looks wrong, but I don&apos;t understand the concepts well enough to suggest a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60385</commentid>
    <comment_count>3</comment_count>
      <attachid>17058</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-06 01:35:12 -0800</bug_when>
    <thetext>Created attachment 17058
updated patch

Hmm, on the other hand, m_starting/engingRootEditableElement gets immediately overwritten, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60402</commentid>
    <comment_count>4</comment_count>
      <attachid>17058</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-06 07:38:05 -0800</bug_when>
    <thetext>Comment on attachment 17058
updated patch

+        return (NSString *)plainText(makeRange(startVisiblePosition, endVisiblePosition).get());

Why is that typecast needed?

r=me

Another kind of editing cleanup we need is to move as much as possible of the Mac-specific editing code in WebHTMLView into Editor and make it platform-independent. There&apos;s some truly-platform-specific code there, but there&apos;s more code that is there simply for historic reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60407</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-06 08:12:02 -0800</bug_when>
    <thetext>&gt; +        return (NSString *)plainText(makeRange(startVisiblePosition,
&gt; endVisiblePosition).get());
&gt; 
&gt; Why is that typecast needed?

I thought it was needed because the function returned an id - but looks like Objective-C++ somehow guesses that a conversion to NSString * is implied here!

Committed revision 27477.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60412</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-06 08:45:25 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I thought it was needed because the function returned an id - but looks like
&gt; Objective-C++ somehow guesses that a conversion to NSString * is implied here!

Bizarre!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17048</attachid>
            <date>2007-11-05 11:10:55 -0800</date>
            <delta_ts>2007-11-06 01:12:47 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>15847r1_patch.txt</filename>
            <type>text/plain</type>
            <size>13304</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQ0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMDctMTEtMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODQ3CisgICAgICAgIFNv
bWUgZWRpdGluZyBjbGVhbnVwCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwbGFpblRleHQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAg
IE1hZGUgV2ViQ29yZTo6cGxhaW5UZXh0KCkgcmV0dXJuIFN0cmluZyBpbnN0ZWFkIG9mIERlcHJl
Y2F0ZWRTdHJpbmcuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVjdC5tbToK
KyAgICAgICAgKC1bV2ViQ29yZUFYT2JqZWN0IHRleHRVbmRlckVsZW1lbnRdKToKKyAgICAgICAg
KC1bV2ViQ29yZUFYT2JqZWN0IHZhbHVlXSk6CisgICAgICAgICgtW1dlYkNvcmVBWE9iamVjdCBk
b0FYQm91bmRzRm9yVGV4dE1hcmtlclJhbmdlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVhPYmpl
Y3QgZG9BWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyOl0pOgorICAgICAg
ICAoLVtXZWJDb3JlQVhPYmplY3QgZG9BWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyOl0pOgorICAgICAgICBVcGRhdGVkIGZvciB0aGUgYWJvdmUgY2hhbmdlLiBU
aGVyZSBpcyBubyBuZWVkIHRvIGV4cGxpY2l0bHkgY29udmVydCB0byBOU1N0cmluZyBub3cuCisK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRDb21tYW5kOjpFZGl0Q29tbWFuZCk6IG1fc3RhcnRpbmdTZWxlY3Rpb24gYW5kIG1fZW5kaW5n
U2VsZWN0aW9uIGFyZSBhY3R1YWxseQorICAgICAgICBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3Rv
ciBib2R5LCBzbyB0aGUgd29yayBkb25lIGluIGluaXRpYWxpemVyIGxpc3Qgd2FzIHdhc3RlZC4K
KworICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmQ6OmFwcGx5KTogTW92ZWQgc29tZSBzdGFy
cy4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjp1bmFwcGx5KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6cmVhcHBseSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdENvbW1hbmQ6OnNldFN0YXJ0aW5nU2VsZWN0aW9uKTogVGhlIGxvb3AgZXhpdCBj
b25kaXRpb24gd2FzIGV2YWx1YXRlZCB0d2ljZSwKKyAgICAgICAgcmVtb3ZlZCBvbmUgb2YgdGhl
IGNoZWNrcy4KKworICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjp0b1N0cmluZyk6IHBsYWluVGV4
dCgpIHJlc3VsdCB0eXBlIG5vdyBtYXRjaGVzIHdoYXQgd2UgbmVlZCBoZXJlLgorCisgICAgICAg
ICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmg6CisgICAgICAgICogcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLm1tOgorICAgICAgICBSZW1vdmVkIHVudXNlZCAtW1dlYkNvcmVGcmFt
ZUJyaWRnZSBkZWxldGVLZXlQcmVzc2VkV2l0aFNtYXJ0RGVsZXRlOmdyYW51bGFyaXR5Ol0gYW5k
CisgICAgICAgIC1bV2ViQ29yZUZyYW1lQnJpZGdlIGZvcndhcmREZWxldGVLZXlQcmVzc2VkV2l0
aFNtYXJ0RGVsZXRlOmdyYW51bGFyaXR5Ol0uCisKIDIwMDctMTEtMDUgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbQpJbmRleDogV2Vi
Q29yZS9icmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JyaWRnZS9tYWMvV2ViQ29yZUFYT2JqZWN0Lm1tCShyZXZpc2lvbiAyNzQyNCkKKysrIFdlYkNv
cmUvYnJpZGdlL21hYy9XZWJDb3JlQVhPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3
ICs1NzEsNyBAQCBzdGF0aWMgaW50IGhlYWRpbmdMZXZlbChSZW5kZXJPYmplY3QqIHJlCiAgICAg
ICAgICAgICAvLyBjYXRjaCBzdGFsZSBXZWJDb3JlQVhPYmplY3QgKHNlZSA8cmRhcjovL3Byb2Js
ZW0vMzk2MDE5Nj4pCiAgICAgICAgICAgICBpZiAocC0+ZG9jdW1lbnQoKSAhPSBkKQogICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdl
T2ZDb250ZW50cyhlKS5nZXQoKSkuZ2V0TlNTdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBw
bGFpblRleHQocmFuZ2VPZkNvbnRlbnRzKGUpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNjA0LDcgKzYwNCw3IEBAIHN0YXRpYyBpbnQgaGVhZGluZ0xldmVsKFJlbmRlck9iamVjdCog
cmUKICAgICAgICAgaWYgKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpIHx8IGVuZFZpc2li
bGVQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIHBsYWluVGV4dChtYWtlUmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRp
b24sIGVuZFZpc2libGVQb3NpdGlvbikuZ2V0KCkpLmdldE5TU3RyaW5nKCk7CisgICAgICAgIHJl
dHVybiAoTlNTdHJpbmcgKilwbGFpblRleHQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9u
LCBlbmRWaXNpYmxlUG9zaXRpb24pLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKFtzZWxm
IGlzQXR0YWNobWVudF0pIHsKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHN0YXRpYyBOU1N0cmluZyAq
bnNTdHJpbmdGb3JSZXBsYWNlZE5vZGUKICAgICBpZiAocmVjdDEuYm90dG9tKCkgIT0gcmVjdDIu
Ym90dG9tKCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBkYXRhUmFuZ2UgPSBtYWtlUmFuZ2Uo
c3RhcnRWaXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbik7CiAgICAgICAgIEludFJl
Y3QgYm91bmRpbmdCb3ggPSBkYXRhUmFuZ2UtPmJvdW5kaW5nQm94KCk7Ci0gICAgICAgIERlcHJl
Y2F0ZWRTdHJpbmcgcmFuZ2VTdHJpbmcgPSBwbGFpblRleHQoZGF0YVJhbmdlLmdldCgpKTsKKyAg
ICAgICAgU3RyaW5nIHJhbmdlU3RyaW5nID0gcGxhaW5UZXh0KGRhdGFSYW5nZS5nZXQoKSk7CiAg
ICAgICAgIGlmIChyYW5nZVN0cmluZy5sZW5ndGgoKSA+IDEgJiYgIWJvdW5kaW5nQm94LmlzRW1w
dHkoKSkgCiAgICAgICAgICAgICBvdXJyZWN0ID0gYm91bmRpbmdCb3g7CiAgICAgfQpAQCAtMjAx
NCw3ICsyMDE0LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB1cGRhdGVBWExpbmVTdGFydAog
ICAgIC8vIGFuIGVtcHR5IGxpbmUgaXMgY29uc2lkZXJlZCBhIHNlbnRlbmNlLiBJZiBpdCdzIHNr
aXBwZWQsIHRoZW4gdGhlIHNlbnRlbmNlIHBhcnNlciB3aWxsIG5vdAogICAgIC8vIHNlZSB0aGlz
IGVtcHR5IGxpbmUuICBJbnN0ZWFkLCByZXR1cm4gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgZW1w
dHkgbGluZS4gCiAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uOwotICAgIERlcHJlY2F0
ZWRTdHJpbmcgbGluZVN0cmluZyA9IHBsYWluVGV4dChtYWtlUmFuZ2Uoc3RhcnRPZkxpbmUodmlz
aWJsZVBvcyksIGVuZE9mTGluZSh2aXNpYmxlUG9zKSkuZ2V0KCkpOworICAgIFN0cmluZyBsaW5l
U3RyaW5nID0gcGxhaW5UZXh0KG1ha2VSYW5nZShzdGFydE9mTGluZSh2aXNpYmxlUG9zKSwgZW5k
T2ZMaW5lKHZpc2libGVQb3MpKS5nZXQoKSk7CiAgICAgaWYgKGxpbmVTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRWaXNpYmxlUG9zOwogICAgIGVsc2UKQEAgLTIw
MzgsNyArMjAzOCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdXBkYXRlQVhMaW5lU3RhcnQK
ICAgICAKICAgICAvLyB0cmVhdCBlbXB0eSBsaW5lIGFzIGEgc2VwYXJhdGUgc2VudGVuY2UuICAK
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbjsKLSAgICBEZXByZWNhdGVkU3RyaW5n
IGxpbmVTdHJpbmcgPSBwbGFpblRleHQobWFrZVJhbmdlKHN0YXJ0T2ZMaW5lKHByZXZpb3VzVmlz
aWJsZVBvcyksIGVuZE9mTGluZShwcmV2aW91c1Zpc2libGVQb3MpKS5nZXQoKSk7CisgICAgU3Ry
aW5nIGxpbmVTdHJpbmcgPSBwbGFpblRleHQobWFrZVJhbmdlKHN0YXJ0T2ZMaW5lKHByZXZpb3Vz
VmlzaWJsZVBvcyksIGVuZE9mTGluZShwcmV2aW91c1Zpc2libGVQb3MpKS5nZXQoKSk7CiAgICAg
aWYgKGxpbmVTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICBzdGFydFBvc2l0aW9uID0gcHJldmlv
dXNWaXNpYmxlUG9zOwogICAgIGVsc2UKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkocmV2
aXNpb24gMjc0MjQpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsOCArNDUsNiBAQCB1c2luZyBuYW1l
c3BhY2UgRXZlbnROYW1lczsKIAogRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBk
b2N1bWVudCkgCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9zdGFydGluZ1Nl
bGVjdGlvbihkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5zZWxlY3Rp
b24oKSkKLSAgICAsIG1fZW5kaW5nU2VsZWN0aW9uKG1fc3RhcnRpbmdTZWxlY3Rpb24pCiAgICAg
LCBtX3N0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudChtX3N0YXJ0aW5nU2VsZWN0aW9uLnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKSkKICAgICAsIG1fZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudChtX3N0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCkKICAgICAsIG1fcGFyZW50KDApCkBAIC04Niw3ICs4
NCw3IEBAIHZvaWQgRWRpdENvbW1hbmQ6OmFwcGx5KCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgKmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBEZWxldGVCdXR0b25Db250
cm9sbGVyKiBkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVC
dXR0b25Db250cm9sbGVyKCk7CiAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgp
OwogICAgIGRvQXBwbHkoKTsKICAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsK
QEAgLTExMiw3ICsxMTAsNyBAQCB2b2lkIEVkaXRDb21tYW5kOjp1bmFwcGx5KCkKICAKICAgICBG
cmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOwogICAgIAotICAgIERlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIgKmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBEZWxldGVCdXR0b25Db250cm9sbGVyKiBkZWxl
dGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9s
bGVyKCk7CiAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgpOwogICAgIGRvVW5h
cHBseSgpOwogICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmVuYWJsZSgpOwpAQCAtMTMwLDcg
KzEyOCw3IEBAIHZvaWQgRWRpdENvbW1hbmQ6OnJlYXBwbHkoKQogIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CiAKLSAgICBEZWxldGVCdXR0b25Db250cm9sbGVyICpk
ZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250
cm9sbGVyKCk7CisgICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uQ29udHJv
bGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpOwogICAgIGRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKICAgICBkb1JlYXBwbHkoKTsKICAgICBk
ZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKQEAgLTE1NCw3ICsxNTIsNyBAQCBFZGl0
QWN0aW9uIEVkaXRDb21tYW5kOjplZGl0aW5nQWN0aW9uKCkgCiB2b2lkIEVkaXRDb21tYW5kOjpz
ZXRTdGFydGluZ1NlbGVjdGlvbihjb25zdCBTZWxlY3Rpb24mIHMpCiB7CiAgICAgRWxlbWVudCog
cm9vdCA9IHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIGZvciAoRWRpdENvbW1hbmQqIGNt
ZCA9IHRoaXM7IGNtZDsgY21kID0gY21kLT5tX3BhcmVudCkgeworICAgIGZvciAoRWRpdENvbW1h
bmQqIGNtZCA9IHRoaXM7IDsgY21kID0gY21kLT5tX3BhcmVudCkgewogICAgICAgICBjbWQtPm1f
c3RhcnRpbmdTZWxlY3Rpb24gPSBzOwogICAgICAgICBjbWQtPm1fc3RhcnRpbmdSb290RWRpdGFi
bGVFbGVtZW50ID0gcm9vdDsKICAgICAgICAgaWYgKCFjbWQtPm1fcGFyZW50IHx8IGNtZC0+bV9w
YXJlbnQtPmlzRmlyc3RDb21tYW5kKGNtZCkpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNzQyNCkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxl
Y3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcxLDcgKzc3MSw3IEBAIGlu
dCBTZWxlY3Rpb25Db250cm9sbGVyOjpmb2N1c09mZnNldCgpIGMKIAogU3RyaW5nIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nKHBsYWlu
VGV4dChtX3NlbC50b1JhbmdlKCkuZ2V0KCkpKTsKKyAgICByZXR1cm4gcGxhaW5UZXh0KG1fc2Vs
LnRvUmFuZ2UoKS5nZXQoKSk7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OmdldFJhbmdlQXQoaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyNzQyNCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE4LDEzICsxMzE4
LDEzIEBAIGV4aXQ6CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRGVwcmVjYXRlZFN0cmluZyBw
bGFpblRleHQoY29uc3QgUmFuZ2UqIHIpCitTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiBy
KQogewogICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICBVQ2hhciogYnVmID0gcGxhaW5UZXh0VG9N
YWxsb2NBbGxvY2F0ZWRCdWZmZXIociwgbGVuZ3RoKTsKICAgICBpZiAoIWJ1ZikKLSAgICAgICAg
cmV0dXJuIERlcHJlY2F0ZWRTdHJpbmcoIiIpOwotICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVzdWx0
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGVwcmVjYXRlZENoYXIqPihidWYpLCBsZW5ndGgpOwor
ICAgICAgICByZXR1cm4gIiI7CisgICAgU3RyaW5nIHJlc3VsdChidWYsIGxlbmd0aCk7CiAgICAg
ZnJlZShidWYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oCShyZXZpc2lvbiAyNzQyNCkKKysrIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0NvbGxhcHNpYmxl
V2hpdGVzcGFjZShVQ2hhCiAgICAgfQogfQogCi1EZXByZWNhdGVkU3RyaW5nIHBsYWluVGV4dChj
b25zdCBSYW5nZSopOworU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSopOwogVUNoYXIqIHBs
YWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyKGNvbnN0IFJhbmdlKiwgdW5zaWduZWQmIGJ1
ZmZlckxlbmd0aCk7CiBQYXNzUmVmUHRyPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdl
KiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3J3YXJkLCBib29sIGNhc2VTZW5zaXRpdmUpOwogCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHJldmlzaW9uIDI3NDI0KQor
KysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjEyLDkgKzIxMiw2IEBAIGVudW0gV2ViU2Nyb2xsR3JhbnVsYXJpdHkgewogLSAoQk9PTClp
c0RyYWdDYXJldFJpY2hseUVkaXRhYmxlOwogLSAoRE9NUmFuZ2UgKiljaGFyYWN0ZXJSYW5nZUF0
UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7CiAKLS0gKHZvaWQpZGVsZXRlS2V5UHJlc3NlZFdpdGhTbWFy
dERlbGV0ZTooQk9PTClzbWFydERlbGV0ZSBncmFudWxhcml0eTooV2ViQ29yZTo6VGV4dEdyYW51
bGFyaXR5KWdyYW51bGFyaXR5OwotLSAodm9pZClmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZFdpdGhT
bWFydERlbGV0ZTooQk9PTClzbWFydERlbGV0ZSBncmFudWxhcml0eTooV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5KWdyYW51bGFyaXR5OwotCiAtIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopdHlw
aW5nU3R5bGU7CiAtICh2b2lkKXNldFR5cGluZ1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9u
ICopc3R5bGUgd2l0aFVuZG9BY3Rpb246KFdlYkNvcmU6OkVkaXRBY3Rpb24pdW5kb0FjdGlvbjsK
IC0gKE5TQ2VsbFN0YXRlVmFsdWUpc2VsZWN0aW9uSGFzU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilzdHlsZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1t
CShyZXZpc2lvbiAyNzQyNCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU1LDI0ICsxMTU1LDYgQEAgc3RhdGljIEhUTUxGb3Jt
RWxlbWVudCAqZm9ybUVsZW1lbnRGcm9tRAogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKHZvaWQp
ZGVsZXRlS2V5UHJlc3NlZFdpdGhTbWFydERlbGV0ZTooQk9PTClzbWFydERlbGV0ZSBncmFudWxh
cml0eTooVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5Ci17Ci0gICAgaWYgKCFtX2ZyYW1lIHx8
ICFtX2ZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgVHlwaW5n
Q29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBzbWFydERlbGV0
ZSwgZ3JhbnVsYXJpdHkpOwotICAgIG1fZnJhbWUtPnJldmVhbFNlbGVjdGlvbihSZW5kZXJMYXll
cjo6Z0FsaWduVG9FZGdlSWZOZWVkZWQpOwotfQotCi0tICh2b2lkKWZvcndhcmREZWxldGVLZXlQ
cmVzc2VkV2l0aFNtYXJ0RGVsZXRlOihCT09MKXNtYXJ0RGVsZXRlIGdyYW51bGFyaXR5OihUZXh0
R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKLXsKLSAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUt
PmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBUeXBpbmdDb21tYW5kOjpm
b3J3YXJkRGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBzbWFydERlbGV0ZSwg
Z3JhbnVsYXJpdHkpOwotICAgIG1fZnJhbWUtPnJldmVhbFNlbGVjdGlvbihSZW5kZXJMYXllcjo6
Z0FsaWduVG9FZGdlSWZOZWVkZWQpOwotfQotCiAtIChET01DU1NTdHlsZURlY2xhcmF0aW9uICop
dHlwaW5nU3R5bGUKIHsKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnR5cGluZ1N0eWxl
KCkpCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NDQwKQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDA3LTExLTA1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NworICAgICAgICBT
b21lIGVkaXRpbmcgY2xlYW51cAorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5
LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgZGVsZXRlVG9FbmRPZkxpbmU6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRlbGV0
ZVRvRW5kT2ZQYXJhZ3JhcGg6XSk6CisgICAgICAgIFdlYkNvcmUgaGFkIGEgZHVwbGljYXRlIG9m
IHRoZSBzYW1lIGxvZ2ljIGFscmVhZHkuIFdlIGFyZSBwYXNzaW5nIGEgYm91bmRhcnkgdmFsdWUg
dG8KKyAgICAgICAgYSBmdW5jdGlvbiB0aGF0IGV4cGVjdHMgZ3JhbnVsYXJpdHksIHRoaXMgbWF5
IG5lZWQgdG8gYmUgc3RyYWlnaHRlbmVkIG91dCBpbiB0aGUgZnV0dXJlLgorCiAyMDA3LTExLTAz
ICBEYXZpZCBELiBLaWx6ZXIgIDxkZGtpbHplckB3ZWJraXQub3JnPgogCiAgICAgICAgIFNvcnQg
ZmlsZXMoLi4uKTsgc2VjdGlvbnMgb2YgWGNvZGUgcHJvamVjdCBmaWxlcy4KSW5kZXg6IFdlYktp
dC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAyNzQyNCkKKysrIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MzgzLDExICs0MzgzLDggQEAgTlNTdHJva2VDb2xv
ckF0dHJpYnV0ZU5hbWUgICAgICAgIC8qIE5TQwogICAgIC8vIFRvIG1hdGNoIE5TVGV4dFZpZXcs
IHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAg
ICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggKGxp
a2UgZGVsZXRlVG9FbmRPZlBhcmFncmFwaCBkb2VzIGJlbG93KS4KICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBpZiAoY29yZUZyYW1lKSB7Ci0gICAgICAg
IGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKSkKLSAgICAgICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKLSAg
ICB9Ci0gICAgCisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5l
Qm91bmRhcnksIHRydWUsIGZhbHNlKTsKIH0KIAogLSAodm9pZClkZWxldGVUb0JlZ2lubmluZ09m
UGFyYWdyYXBoOihpZClzZW5kZXIKQEAgLTQ0MDQsMTIgKzQ0MDEsOSBAQCBOU1N0cm9rZUNvbG9y
QXR0cmlidXRlTmFtZSAgICAgICAgLyogTlNDCiAgICAgQ09NTUFORF9QUk9MT0dVRQogCiAgICAg
Ly8gRGVzcGl0ZSB0aGUgbmFtZSBvZiB0aGUgbWV0aG9kLCB0aGlzIHNob3VsZCBkZWxldGUgdGhl
IG5ld2xpbmUgaWYgdGhlIGNhcmV0IGlzIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGguCi0gICAg
Ly8gSWYgZGVsZXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoIGZhaWxzLCB3ZSBkZWxl
dGUgb25lIGNoYXJhY3RlciBmb3J3YXJkLCB3aGljaCB3aWxsIGRlbGV0ZSB0aGUgbmV3bGluZS4K
ICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBpZiAoY29y
ZUZyYW1lKSB7Ci0gICAgICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSwgZmFsc2UpKQotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgdHJ1ZSwgZmFsc2UpOwotICAgIH0KKyAgICBpZiAoY29yZUZyYW1lKQorICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiB9CiAKIC0gKHZv
aWQpY29tcGxldGU6KGlkKXNlbmRlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17057</attachid>
            <date>2007-11-06 01:12:47 -0800</date>
            <delta_ts>2007-11-06 01:35:12 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>15847r2_patch.txt</filename>
            <type>text/plain</type>
            <size>12658</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQ0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDctMTEtMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODQ3CisgICAgICAgIFNv
bWUgZWRpdGluZyBjbGVhbnVwCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwbGFpblRleHQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAg
IE1hZGUgV2ViQ29yZTo6cGxhaW5UZXh0KCkgcmV0dXJuIFN0cmluZyBpbnN0ZWFkIG9mIERlcHJl
Y2F0ZWRTdHJpbmcuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVjdC5tbToK
KyAgICAgICAgKC1bV2ViQ29yZUFYT2JqZWN0IHRleHRVbmRlckVsZW1lbnRdKToKKyAgICAgICAg
KC1bV2ViQ29yZUFYT2JqZWN0IHZhbHVlXSk6CisgICAgICAgICgtW1dlYkNvcmVBWE9iamVjdCBk
b0FYQm91bmRzRm9yVGV4dE1hcmtlclJhbmdlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVhPYmpl
Y3QgZG9BWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyOl0pOgorICAgICAg
ICAoLVtXZWJDb3JlQVhPYmplY3QgZG9BWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyOl0pOgorICAgICAgICBVcGRhdGVkIGZvciB0aGUgYWJvdmUgY2hhbmdlLiBU
aGVyZSBpcyBubyBuZWVkIHRvIGV4cGxpY2l0bHkgY29udmVydCB0byBOU1N0cmluZyBub3cuCisK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjphcHBseSk6IE1vdmVkIHNvbWUgc3RhcnMu
CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6dW5hcHBseSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdENvbW1hbmQ6OnJlYXBwbHkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRDb21tYW5kOjpzZXRTdGFydGluZ1NlbGVjdGlvbik6IFRoZSBsb29wIGV4aXQgY29u
ZGl0aW9uIHdhcyBldmFsdWF0ZWQgdHdpY2UsCisgICAgICAgIHJlbW92ZWQgb25lIG9mIHRoZSBj
aGVja3MuCisKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6dG9TdHJpbmcpOiBwbGFpblRleHQo
KSByZXN1bHQgdHlwZSBub3cgbWF0Y2hlcyB3aGF0IHdlIG5lZWQgaGVyZS4KKworICAgICAgICAq
IHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNv
cmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgLVtXZWJDb3JlRnJhbWVC
cmlkZ2UgZGVsZXRlS2V5UHJlc3NlZFdpdGhTbWFydERlbGV0ZTpncmFudWxhcml0eTpdIGFuZAor
ICAgICAgICAtW1dlYkNvcmVGcmFtZUJyaWRnZSBmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZFdpdGhT
bWFydERlbGV0ZTpncmFudWxhcml0eTpdLgorCiAyMDA3LTExLTA1ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0KSW5kZXg6IFdlYkNv
cmUvYnJpZGdlL21hYy9XZWJDb3JlQVhPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
cmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVjdC5tbQkocmV2aXNpb24gMjc0MjQpCisrKyBXZWJDb3Jl
L2JyaWRnZS9tYWMvV2ViQ29yZUFYT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNyAr
NTcxLDcgQEAgc3RhdGljIGludCBoZWFkaW5nTGV2ZWwoUmVuZGVyT2JqZWN0KiByZQogICAgICAg
ICAgICAgLy8gY2F0Y2ggc3RhbGUgV2ViQ29yZUFYT2JqZWN0IChzZWUgPHJkYXI6Ly9wcm9ibGVt
LzM5NjAxOTY+KQogICAgICAgICAgICAgaWYgKHAtPmRvY3VtZW50KCkgIT0gZCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZU9m
Q29udGVudHMoZSkuZ2V0KCkpLmdldE5TU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gcGxh
aW5UZXh0KHJhbmdlT2ZDb250ZW50cyhlKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTYwNCw3ICs2MDQsNyBAQCBzdGF0aWMgaW50IGhlYWRpbmdMZXZlbChSZW5kZXJPYmplY3QqIHJl
CiAgICAgICAgIGlmIChzdGFydFZpc2libGVQb3NpdGlvbi5pc051bGwoKSB8fCBlbmRWaXNpYmxl
UG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAg
Ci0gICAgICAgIHJldHVybiBwbGFpblRleHQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9u
LCBlbmRWaXNpYmxlUG9zaXRpb24pLmdldCgpKS5nZXROU1N0cmluZygpOworICAgICAgICByZXR1
cm4gKE5TU3RyaW5nICopcGxhaW5UZXh0KG1ha2VSYW5nZShzdGFydFZpc2libGVQb3NpdGlvbiwg
ZW5kVmlzaWJsZVBvc2l0aW9uKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmIChbc2VsZiBp
c0F0dGFjaG1lbnRdKSB7CkBAIC0xNDQ5LDcgKzE0NDksNyBAQCBzdGF0aWMgTlNTdHJpbmcgKm5z
U3RyaW5nRm9yUmVwbGFjZWROb2RlCiAgICAgaWYgKHJlY3QxLmJvdHRvbSgpICE9IHJlY3QyLmJv
dHRvbSgpKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gZGF0YVJhbmdlID0gbWFrZVJhbmdlKHN0
YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9zaXRpb24pOwogICAgICAgICBJbnRSZWN0
IGJvdW5kaW5nQm94ID0gZGF0YVJhbmdlLT5ib3VuZGluZ0JveCgpOwotICAgICAgICBEZXByZWNh
dGVkU3RyaW5nIHJhbmdlU3RyaW5nID0gcGxhaW5UZXh0KGRhdGFSYW5nZS5nZXQoKSk7CisgICAg
ICAgIFN0cmluZyByYW5nZVN0cmluZyA9IHBsYWluVGV4dChkYXRhUmFuZ2UuZ2V0KCkpOwogICAg
ICAgICBpZiAocmFuZ2VTdHJpbmcubGVuZ3RoKCkgPiAxICYmICFib3VuZGluZ0JveC5pc0VtcHR5
KCkpIAogICAgICAgICAgICAgb3VycmVjdCA9IGJvdW5kaW5nQm94OwogICAgIH0KQEAgLTIwMTQs
NyArMjAxNCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdXBkYXRlQVhMaW5lU3RhcnQKICAg
ICAvLyBhbiBlbXB0eSBsaW5lIGlzIGNvbnNpZGVyZWQgYSBzZW50ZW5jZS4gSWYgaXQncyBza2lw
cGVkLCB0aGVuIHRoZSBzZW50ZW5jZSBwYXJzZXIgd2lsbCBub3QKICAgICAvLyBzZWUgdGhpcyBl
bXB0eSBsaW5lLiAgSW5zdGVhZCwgcmV0dXJuIHRoZSBlbmQgcG9zaXRpb24gb2YgdGhlIGVtcHR5
IGxpbmUuIAogICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbjsKLSAgICBEZXByZWNhdGVk
U3RyaW5nIGxpbmVTdHJpbmcgPSBwbGFpblRleHQobWFrZVJhbmdlKHN0YXJ0T2ZMaW5lKHZpc2li
bGVQb3MpLCBlbmRPZkxpbmUodmlzaWJsZVBvcykpLmdldCgpKTsKKyAgICBTdHJpbmcgbGluZVN0
cmluZyA9IHBsYWluVGV4dChtYWtlUmFuZ2Uoc3RhcnRPZkxpbmUodmlzaWJsZVBvcyksIGVuZE9m
TGluZSh2aXNpYmxlUG9zKSkuZ2V0KCkpOwogICAgIGlmIChsaW5lU3RyaW5nLmlzRW1wdHkoKSkK
ICAgICAgICAgZW5kUG9zaXRpb24gPSBuZXh0VmlzaWJsZVBvczsKICAgICBlbHNlCkBAIC0yMDM4
LDcgKzIwMzgsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHVwZGF0ZUFYTGluZVN0YXJ0CiAg
ICAgCiAgICAgLy8gdHJlYXQgZW1wdHkgbGluZSBhcyBhIHNlcGFyYXRlIHNlbnRlbmNlLiAgCiAg
ICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb247Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBs
aW5lU3RyaW5nID0gcGxhaW5UZXh0KG1ha2VSYW5nZShzdGFydE9mTGluZShwcmV2aW91c1Zpc2li
bGVQb3MpLCBlbmRPZkxpbmUocHJldmlvdXNWaXNpYmxlUG9zKSkuZ2V0KCkpOworICAgIFN0cmlu
ZyBsaW5lU3RyaW5nID0gcGxhaW5UZXh0KG1ha2VSYW5nZShzdGFydE9mTGluZShwcmV2aW91c1Zp
c2libGVQb3MpLCBlbmRPZkxpbmUocHJldmlvdXNWaXNpYmxlUG9zKSkuZ2V0KCkpOwogICAgIGlm
IChsaW5lU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHByZXZpb3Vz
VmlzaWJsZVBvczsKICAgICBlbHNlCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlz
aW9uIDI3NDI0KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2LDcgKzg0LDcgQEAgdm9pZCBFZGl0Q29t
bWFuZDo6YXBwbHkoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgRGVsZXRlQnV0dG9uQ29udHJv
bGxlciAqZGVsZXRlQnV0dG9uQ29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0
dG9uQ29udHJvbGxlcigpOworICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGRlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsK
ICAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5kaXNhYmxlKCk7CiAgICAgZG9BcHBseSgpOwog
ICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmVuYWJsZSgpOwpAQCAtMTEyLDcgKzExMCw3IEBA
IHZvaWQgRWRpdENvbW1hbmQ6OnVuYXBwbHkoKQogIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9j
dW1lbnQtPmZyYW1lKCk7CiAgICAgCi0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciAqZGVsZXRl
QnV0dG9uQ29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxl
cigpOworICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIg
PSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKICAgICBkZWxldGVC
dXR0b25Db250cm9sbGVyLT5kaXNhYmxlKCk7CiAgICAgZG9VbmFwcGx5KCk7CiAgICAgZGVsZXRl
QnV0dG9uQ29udHJvbGxlci0+ZW5hYmxlKCk7CkBAIC0xMzAsNyArMTI4LDcgQEAgdm9pZCBFZGl0
Q29tbWFuZDo6cmVhcHBseSgpCiAgCiAgICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJh
bWUoKTsKIAotICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgKmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBEZWxl
dGVCdXR0b25Db250cm9sbGVyKiBkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRv
cigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCk7CiAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxl
ci0+ZGlzYWJsZSgpOwogICAgIGRvUmVhcHBseSgpOwogICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXItPmVuYWJsZSgpOwpAQCAtMTU0LDcgKzE1Miw3IEBAIEVkaXRBY3Rpb24gRWRpdENvbW1hbmQ6
OmVkaXRpbmdBY3Rpb24oKSAKIHZvaWQgRWRpdENvbW1hbmQ6OnNldFN0YXJ0aW5nU2VsZWN0aW9u
KGNvbnN0IFNlbGVjdGlvbiYgcykKIHsKICAgICBFbGVtZW50KiByb290ID0gcy5yb290RWRpdGFi
bGVFbGVtZW50KCk7Ci0gICAgZm9yIChFZGl0Q29tbWFuZCogY21kID0gdGhpczsgY21kOyBjbWQg
PSBjbWQtPm1fcGFyZW50KSB7CisgICAgZm9yIChFZGl0Q29tbWFuZCogY21kID0gdGhpczsgOyBj
bWQgPSBjbWQtPm1fcGFyZW50KSB7CiAgICAgICAgIGNtZC0+bV9zdGFydGluZ1NlbGVjdGlvbiA9
IHM7CiAgICAgICAgIGNtZC0+bV9zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQgPSByb290Owog
ICAgICAgICBpZiAoIWNtZC0+bV9wYXJlbnQgfHwgY21kLT5tX3BhcmVudC0+aXNGaXJzdENvbW1h
bmQoY21kKSkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI3NDI0KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NzEsNyArNzcxLDcgQEAgaW50IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OmZvY3VzT2Zmc2V0KCkgYwogCiBTdHJpbmcgU2VsZWN0aW9uQ29udHJvbGxlcjo6dG9TdHJp
bmcoKSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmcocGxhaW5UZXh0KG1fc2VsLnRvUmFuZ2Uo
KS5nZXQoKSkpOworICAgIHJldHVybiBwbGFpblRleHQobV9zZWwudG9SYW5nZSgpLmdldCgpKTsK
IH0KIAogUGFzc1JlZlB0cjxSYW5nZT4gU2VsZWN0aW9uQ29udHJvbGxlcjo6Z2V0UmFuZ2VBdChp
bnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApJbmRleDogV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAJKHJldmlzaW9uIDI3NDI0KQorKysgV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMTgsMTMgKzEzMTgsMTMgQEAgZXhpdDoKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1EZXByZWNhdGVkU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5n
ZSogcikKK1N0cmluZyBwbGFpblRleHQoY29uc3QgUmFuZ2UqIHIpCiB7CiAgICAgdW5zaWduZWQg
bGVuZ3RoOwogICAgIFVDaGFyKiBidWYgPSBwbGFpblRleHRUb01hbGxvY0FsbG9jYXRlZEJ1ZmZl
cihyLCBsZW5ndGgpOwogICAgIGlmICghYnVmKQotICAgICAgICByZXR1cm4gRGVwcmVjYXRlZFN0
cmluZygiIik7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyByZXN1bHQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBEZXByZWNhdGVkQ2hhcio+KGJ1ZiksIGxlbmd0aCk7CisgICAgICAgIHJldHVybiAiIjsK
KyAgICBTdHJpbmcgcmVzdWx0KGJ1ZiwgbGVuZ3RoKTsKICAgICBmcmVlKGJ1Zik7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9uIDI3NDI0
KQorKysgV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIGlubGluZSBib29sIGlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKFVDaGEKICAg
ICB9CiB9CiAKLURlcHJlY2F0ZWRTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKik7CitTdHJp
bmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKik7CiBVQ2hhciogcGxhaW5UZXh0VG9NYWxsb2NBbGxv
Y2F0ZWRCdWZmZXIoY29uc3QgUmFuZ2UqLCB1bnNpZ25lZCYgYnVmZmVyTGVuZ3RoKTsKIFBhc3NS
ZWZQdHI8UmFuZ2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFuZ2UqLCBjb25zdCBTdHJpbmcmLCBi
b29sIGZvcndhcmQsIGJvb2wgY2FzZVNlbnNpdGl2ZSk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9t
YWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9X
ZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24gMjc0MjQpCisrKyBXZWJDb3JlL3BhZ2UvbWFj
L1dlYkNvcmVGcmFtZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsOSArMjEyLDYgQEAg
ZW51bSBXZWJTY3JvbGxHcmFudWxhcml0eSB7CiAtIChCT09MKWlzRHJhZ0NhcmV0UmljaGx5RWRp
dGFibGU7CiAtIChET01SYW5nZSAqKWNoYXJhY3RlclJhbmdlQXRQb2ludDooTlNQb2ludClwb2lu
dDsKIAotLSAodm9pZClkZWxldGVLZXlQcmVzc2VkV2l0aFNtYXJ0RGVsZXRlOihCT09MKXNtYXJ0
RGVsZXRlIGdyYW51bGFyaXR5OihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHk7
Ci0tICh2b2lkKWZvcndhcmREZWxldGVLZXlQcmVzc2VkV2l0aFNtYXJ0RGVsZXRlOihCT09MKXNt
YXJ0RGVsZXRlIGdyYW51bGFyaXR5OihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJp
dHk7Ci0KIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKil0eXBpbmdTdHlsZTsKIC0gKHZvaWQp
c2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0Fj
dGlvbjooV2ViQ29yZTo6RWRpdEFjdGlvbil1bmRvQWN0aW9uOwogLSAoTlNDZWxsU3RhdGVWYWx1
ZSlzZWxlY3Rpb25IYXNTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlOwpJbmRl
eDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDI3NDI0KQor
KysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTExNTUsMjQgKzExNTUsNiBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50ICpmb3JtRWxlbWVu
dEZyb21ECiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAodm9pZClkZWxldGVLZXlQcmVzc2VkV2l0
aFNtYXJ0RGVsZXRlOihCT09MKXNtYXJ0RGVsZXRlIGdyYW51bGFyaXR5OihUZXh0R3JhbnVsYXJp
dHkpZ3JhbnVsYXJpdHkKLXsKLSAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmRvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQ
cmVzc2VkKG1fZnJhbWUtPmRvY3VtZW50KCksIHNtYXJ0RGVsZXRlLCBncmFudWxhcml0eSk7Ci0g
ICAgbV9mcmFtZS0+cmV2ZWFsU2VsZWN0aW9uKFJlbmRlckxheWVyOjpnQWxpZ25Ub0VkZ2VJZk5l
ZWRlZCk7Ci19Ci0KLS0gKHZvaWQpZm9yd2FyZERlbGV0ZUtleVByZXNzZWRXaXRoU21hcnREZWxl
dGU6KEJPT0wpc21hcnREZWxldGUgZ3JhbnVsYXJpdHk6KFRleHRHcmFudWxhcml0eSlncmFudWxh
cml0eQotewotICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVz
c2VkKG1fZnJhbWUtPmRvY3VtZW50KCksIHNtYXJ0RGVsZXRlLCBncmFudWxhcml0eSk7Ci0gICAg
bV9mcmFtZS0+cmV2ZWFsU2VsZWN0aW9uKFJlbmRlckxheWVyOjpnQWxpZ25Ub0VkZ2VJZk5lZWRl
ZCk7Ci19Ci0KIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKil0eXBpbmdTdHlsZQogewogICAg
IGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+dHlwaW5nU3R5bGUoKSkKSW5kZXg6IFdlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc0NDAp
CisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MDctMTEtMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODQ3CisgICAgICAgIFNvbWUgZWRpdGluZyBjbGVhbnVw
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBkZWxldGVUb0VuZE9m
TGluZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZGVsZXRlVG9FbmRPZlBhcmFncmFwaDpd
KToKKyAgICAgICAgV2ViQ29yZSBoYWQgYSBkdXBsaWNhdGUgb2YgdGhlIHNhbWUgbG9naWMgYWxy
ZWFkeS4gV2UgYXJlIHBhc3NpbmcgYSBib3VuZGFyeSB2YWx1ZSB0bworICAgICAgICBhIGZ1bmN0
aW9uIHRoYXQgZXhwZWN0cyBncmFudWxhcml0eSwgdGhpcyBtYXkgbmVlZCB0byBiZSBzdHJhaWdo
dGVuZWQgb3V0IGluIHRoZSBmdXR1cmUuCisKIDIwMDctMTEtMDMgIERhdmlkIEQuIEtpbHplciAg
PGRka2lsemVyQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU29ydCBmaWxlcyguLi4pOyBzZWN0aW9u
cyBvZiBYY29kZSBwcm9qZWN0IGZpbGVzLgpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlz
aW9uIDI3NDI0KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQzODMsMTEgKzQzODMsOCBAQCBOU1N0cm9rZUNvbG9yQXR0cmlidXRlTmFtZSAgICAg
ICAgLyogTlNDCiAgICAgLy8gVG8gbWF0Y2ggTlNUZXh0VmlldywgdGhpcyBjb21tYW5kIHNob3Vs
ZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlm
IHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAobGlrZSBkZWxldGVUb0VuZE9mUGFy
YWdyYXBoIGRvZXMgYmVsb3cpLgogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9m
cmFtZV0pOwotICAgIGlmIChjb3JlRnJhbWUpIHsKLSAgICAgICAgaWYgKCFjb3JlRnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQs
IExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpKQotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwotICAgIH0KLSAgICAKKyAgICBpZiAo
Y29yZUZyYW1lKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFs
c2UpOwogfQogCiAtICh2b2lkKWRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6KGlkKXNlbmRl
cgpAQCAtNDQwNCwxMiArNDQwMSw5IEBAIE5TU3Ryb2tlQ29sb3JBdHRyaWJ1dGVOYW1lICAgICAg
ICAvKiBOU0MKICAgICBDT01NQU5EX1BST0xPR1VFCiAKICAgICAvLyBEZXNwaXRlIHRoZSBuYW1l
IG9mIHRoZSBtZXRob2QsIHRoaXMgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBpZiB0aGUgY2Fy
ZXQgaXMgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KLSAgICAvLyBJZiBkZWxldGlvbiB0byB0
aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGggZmFpbHMsIHdlIGRlbGV0ZSBvbmUgY2hhcmFjdGVyIGZv
cndhcmQsIHdoaWNoIHdpbGwgZGVsZXRlIHRoZSBuZXdsaW5lLgogICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIGlmIChjb3JlRnJhbWUpIHsKLSAgICAgICAg
aWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSkpCi0gICAg
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7
Ci0gICAgfQorICAgIGlmIChjb3JlRnJhbWUpCisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgUGFyYWdy
YXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKIH0KIAogLSAodm9pZCljb21wbGV0ZTooaWQpc2Vu
ZGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17058</attachid>
            <date>2007-11-06 01:35:12 -0800</date>
            <delta_ts>2007-11-06 07:38:05 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>15847r3_patch.txt</filename>
            <type>text/plain</type>
            <size>13336</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQ2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMDctMTEtMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODQ3CisgICAgICAgIFNv
bWUgZWRpdGluZyBjbGVhbnVwCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwbGFpblRleHQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAg
IE1hZGUgV2ViQ29yZTo6cGxhaW5UZXh0KCkgcmV0dXJuIFN0cmluZyBpbnN0ZWFkIG9mIERlcHJl
Y2F0ZWRTdHJpbmcuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVjdC5tbToK
KyAgICAgICAgKC1bV2ViQ29yZUFYT2JqZWN0IHRleHRVbmRlckVsZW1lbnRdKToKKyAgICAgICAg
KC1bV2ViQ29yZUFYT2JqZWN0IHZhbHVlXSk6CisgICAgICAgICgtW1dlYkNvcmVBWE9iamVjdCBk
b0FYQm91bmRzRm9yVGV4dE1hcmtlclJhbmdlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVhPYmpl
Y3QgZG9BWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyOl0pOgorICAgICAg
ICAoLVtXZWJDb3JlQVhPYmplY3QgZG9BWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyOl0pOgorICAgICAgICBVcGRhdGVkIGZvciB0aGUgYWJvdmUgY2hhbmdlLiBU
aGVyZSBpcyBubyBuZWVkIHRvIGV4cGxpY2l0bHkgY29udmVydCB0byBOU1N0cmluZyBub3cuCisK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRDb21tYW5kOjpFZGl0Q29tbWFuZCk6IG1fc3RhcnRpbmdTZWxlY3Rpb24gYW5kIG1fZW5kaW5n
U2VsZWN0aW9uIGFyZSBhY3R1YWxseQorICAgICAgICBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3Rv
ciBib2R5LCBzbyB0aGUgd29yayBkb25lIGluIGluaXRpYWxpemVyIGxpc3Qgd2FzIHdhc3RlZC4K
KworICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmQ6OmFwcGx5KTogTW92ZWQgc29tZSBzdGFy
cy4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjp1bmFwcGx5KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6cmVhcHBseSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdENvbW1hbmQ6OnNldFN0YXJ0aW5nU2VsZWN0aW9uKTogVGhlIGxvb3AgZXhpdCBj
b25kaXRpb24gd2FzIGV2YWx1YXRlZCB0d2ljZSwKKyAgICAgICAgcmVtb3ZlZCBvbmUgb2YgdGhl
IGNoZWNrcy4KKworICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjp0b1N0cmluZyk6IHBsYWluVGV4
dCgpIHJlc3VsdCB0eXBlIG5vdyBtYXRjaGVzIHdoYXQgd2UgbmVlZCBoZXJlLgorCisgICAgICAg
ICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmg6CisgICAgICAgICogcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLm1tOgorICAgICAgICBSZW1vdmVkIHVudXNlZCAtW1dlYkNvcmVGcmFt
ZUJyaWRnZSBkZWxldGVLZXlQcmVzc2VkV2l0aFNtYXJ0RGVsZXRlOmdyYW51bGFyaXR5Ol0gYW5k
CisgICAgICAgIC1bV2ViQ29yZUZyYW1lQnJpZGdlIGZvcndhcmREZWxldGVLZXlQcmVzc2VkV2l0
aFNtYXJ0RGVsZXRlOmdyYW51bGFyaXR5Ol0uCisKIDIwMDctMTEtMDUgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCA8cmRhcjovLzU1NjM1NzI+IFNWRyBpbWFn
ZSBzdXBwb3J0IGlzIHR1cm5lZCBvZmYKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3Jl
QVhPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVBWE9i
amVjdC5tbQkocmV2aXNpb24gMjc0NjQpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUFY
T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNyArNTcxLDcgQEAgc3RhdGljIGludCBo
ZWFkaW5nTGV2ZWwoUmVuZGVyT2JqZWN0KiByZQogICAgICAgICAgICAgLy8gY2F0Y2ggc3RhbGUg
V2ViQ29yZUFYT2JqZWN0IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzM5NjAxOTY+KQogICAgICAgICAg
ICAgaWYgKHAtPmRvY3VtZW50KCkgIT0gZCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwot
ICAgICAgICAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZU9mQ29udGVudHMoZSkuZ2V0KCkpLmdl
dE5TU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlT2ZDb250ZW50
cyhlKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTYwNCw3ICs2MDQsNyBAQCBzdGF0
aWMgaW50IGhlYWRpbmdMZXZlbChSZW5kZXJPYmplY3QqIHJlCiAgICAgICAgIGlmIChzdGFydFZp
c2libGVQb3NpdGlvbi5pc051bGwoKSB8fCBlbmRWaXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgCi0gICAgICAgIHJldHVybiBwbGFp
blRleHQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9zaXRpb24p
LmdldCgpKS5nZXROU1N0cmluZygpOworICAgICAgICByZXR1cm4gKE5TU3RyaW5nICopcGxhaW5U
ZXh0KG1ha2VSYW5nZShzdGFydFZpc2libGVQb3NpdGlvbiwgZW5kVmlzaWJsZVBvc2l0aW9uKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmIChbc2VsZiBpc0F0dGFjaG1lbnRdKSB7CkBAIC0x
NDQ5LDcgKzE0NDksNyBAQCBzdGF0aWMgTlNTdHJpbmcgKm5zU3RyaW5nRm9yUmVwbGFjZWROb2Rl
CiAgICAgaWYgKHJlY3QxLmJvdHRvbSgpICE9IHJlY3QyLmJvdHRvbSgpKSB7CiAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gZGF0YVJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBl
bmRWaXNpYmxlUG9zaXRpb24pOwogICAgICAgICBJbnRSZWN0IGJvdW5kaW5nQm94ID0gZGF0YVJh
bmdlLT5ib3VuZGluZ0JveCgpOwotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHJhbmdlU3RyaW5n
ID0gcGxhaW5UZXh0KGRhdGFSYW5nZS5nZXQoKSk7CisgICAgICAgIFN0cmluZyByYW5nZVN0cmlu
ZyA9IHBsYWluVGV4dChkYXRhUmFuZ2UuZ2V0KCkpOwogICAgICAgICBpZiAocmFuZ2VTdHJpbmcu
bGVuZ3RoKCkgPiAxICYmICFib3VuZGluZ0JveC5pc0VtcHR5KCkpIAogICAgICAgICAgICAgb3Vy
cmVjdCA9IGJvdW5kaW5nQm94OwogICAgIH0KQEAgLTIwMTQsNyArMjAxNCw3IEBAIHN0YXRpYyBW
aXNpYmxlUG9zaXRpb24gdXBkYXRlQVhMaW5lU3RhcnQKICAgICAvLyBhbiBlbXB0eSBsaW5lIGlz
IGNvbnNpZGVyZWQgYSBzZW50ZW5jZS4gSWYgaXQncyBza2lwcGVkLCB0aGVuIHRoZSBzZW50ZW5j
ZSBwYXJzZXIgd2lsbCBub3QKICAgICAvLyBzZWUgdGhpcyBlbXB0eSBsaW5lLiAgSW5zdGVhZCwg
cmV0dXJuIHRoZSBlbmQgcG9zaXRpb24gb2YgdGhlIGVtcHR5IGxpbmUuIAogICAgIFZpc2libGVQ
b3NpdGlvbiBlbmRQb3NpdGlvbjsKLSAgICBEZXByZWNhdGVkU3RyaW5nIGxpbmVTdHJpbmcgPSBw
bGFpblRleHQobWFrZVJhbmdlKHN0YXJ0T2ZMaW5lKHZpc2libGVQb3MpLCBlbmRPZkxpbmUodmlz
aWJsZVBvcykpLmdldCgpKTsKKyAgICBTdHJpbmcgbGluZVN0cmluZyA9IHBsYWluVGV4dChtYWtl
UmFuZ2Uoc3RhcnRPZkxpbmUodmlzaWJsZVBvcyksIGVuZE9mTGluZSh2aXNpYmxlUG9zKSkuZ2V0
KCkpOwogICAgIGlmIChsaW5lU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgZW5kUG9zaXRpb24g
PSBuZXh0VmlzaWJsZVBvczsKICAgICBlbHNlCkBAIC0yMDM4LDcgKzIwMzgsNyBAQCBzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIHVwZGF0ZUFYTGluZVN0YXJ0CiAgICAgCiAgICAgLy8gdHJlYXQgZW1w
dHkgbGluZSBhcyBhIHNlcGFyYXRlIHNlbnRlbmNlLiAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0
YXJ0UG9zaXRpb247Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBsaW5lU3RyaW5nID0gcGxhaW5UZXh0
KG1ha2VSYW5nZShzdGFydE9mTGluZShwcmV2aW91c1Zpc2libGVQb3MpLCBlbmRPZkxpbmUocHJl
dmlvdXNWaXNpYmxlUG9zKSkuZ2V0KCkpOworICAgIFN0cmluZyBsaW5lU3RyaW5nID0gcGxhaW5U
ZXh0KG1ha2VSYW5nZShzdGFydE9mTGluZShwcmV2aW91c1Zpc2libGVQb3MpLCBlbmRPZkxpbmUo
cHJldmlvdXNWaXNpYmxlUG9zKSkuZ2V0KCkpOwogICAgIGlmIChsaW5lU3RyaW5nLmlzRW1wdHko
KSkKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHByZXZpb3VzVmlzaWJsZVBvczsKICAgICBlbHNl
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDI3NDY0KQorKysgV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBw
bGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ1LDEwICs0NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogCiBF
ZGl0Q29tbWFuZDo6RWRpdENvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50KSAKICAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3N0YXJ0aW5nU2VsZWN0aW9uKGRvY3VtZW50LT5mcmFt
ZSgpLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNlbGVjdGlvbigpKQotICAgICwgbV9lbmRpbmdT
ZWxlY3Rpb24obV9zdGFydGluZ1NlbGVjdGlvbikKLSAgICAsIG1fc3RhcnRpbmdSb290RWRpdGFi
bGVFbGVtZW50KG1fc3RhcnRpbmdTZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpKQotICAg
ICwgbV9lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KG1fc3RhcnRpbmdSb290RWRpdGFibGVFbGVt
ZW50KQogICAgICwgbV9wYXJlbnQoMCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CkBAIC04
Niw3ICs4Miw3IEBAIHZvaWQgRWRpdENvbW1hbmQ6OmFwcGx5KCkKICAgICAgICAgfQogICAgIH0K
IAotICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgKmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgPSBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBEZWxldGVCdXR0
b25Db250cm9sbGVyKiBkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVCdXR0b25Db250cm9sbGVyKCk7CiAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlz
YWJsZSgpOwogICAgIGRvQXBwbHkoKTsKICAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFi
bGUoKTsKQEAgLTExMiw3ICsxMDgsNyBAQCB2b2lkIEVkaXRDb21tYW5kOjp1bmFwcGx5KCkKICAK
ICAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOwogICAgIAotICAgIERlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIgKmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBEZWxldGVCdXR0b25Db250cm9sbGVy
KiBkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25D
b250cm9sbGVyKCk7CiAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgpOwogICAg
IGRvVW5hcHBseSgpOwogICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmVuYWJsZSgpOwpAQCAt
MTMwLDcgKzEyNiw3IEBAIHZvaWQgRWRpdENvbW1hbmQ6OnJlYXBwbHkoKQogIAogICAgIEZyYW1l
KiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CiAKLSAgICBEZWxldGVCdXR0b25Db250cm9s
bGVyICpkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0
b25Db250cm9sbGVyKCk7CisgICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9u
Q29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpOwog
ICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKICAgICBkb1JlYXBwbHkoKTsK
ICAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKQEAgLTE1NCw3ICsxNTAsNyBA
QCBFZGl0QWN0aW9uIEVkaXRDb21tYW5kOjplZGl0aW5nQWN0aW9uKCkgCiB2b2lkIEVkaXRDb21t
YW5kOjpzZXRTdGFydGluZ1NlbGVjdGlvbihjb25zdCBTZWxlY3Rpb24mIHMpCiB7CiAgICAgRWxl
bWVudCogcm9vdCA9IHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIGZvciAoRWRpdENvbW1h
bmQqIGNtZCA9IHRoaXM7IGNtZDsgY21kID0gY21kLT5tX3BhcmVudCkgeworICAgIGZvciAoRWRp
dENvbW1hbmQqIGNtZCA9IHRoaXM7IDsgY21kID0gY21kLT5tX3BhcmVudCkgewogICAgICAgICBj
bWQtPm1fc3RhcnRpbmdTZWxlY3Rpb24gPSBzOwogICAgICAgICBjbWQtPm1fc3RhcnRpbmdSb290
RWRpdGFibGVFbGVtZW50ID0gcm9vdDsKICAgICAgICAgaWYgKCFjbWQtPm1fcGFyZW50IHx8IGNt
ZC0+bV9wYXJlbnQtPmlzRmlyc3RDb21tYW5kKGNtZCkpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNzQ2NCkKKysrIFdlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcxLDcgKzc3MSw3
IEBAIGludCBTZWxlY3Rpb25Db250cm9sbGVyOjpmb2N1c09mZnNldCgpIGMKIAogU3RyaW5nIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5n
KHBsYWluVGV4dChtX3NlbC50b1JhbmdlKCkuZ2V0KCkpKTsKKyAgICByZXR1cm4gcGxhaW5UZXh0
KG1fc2VsLnRvUmFuZ2UoKS5nZXQoKSk7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OmdldFJhbmdlQXQoaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyNzQ2NCkKKysrIFdl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE4LDEz
ICsxMzE4LDEzIEBAIGV4aXQ6CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRGVwcmVjYXRlZFN0
cmluZyBwbGFpblRleHQoY29uc3QgUmFuZ2UqIHIpCitTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJh
bmdlKiByKQogewogICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICBVQ2hhciogYnVmID0gcGxhaW5U
ZXh0VG9NYWxsb2NBbGxvY2F0ZWRCdWZmZXIociwgbGVuZ3RoKTsKICAgICBpZiAoIWJ1ZikKLSAg
ICAgICAgcmV0dXJuIERlcHJlY2F0ZWRTdHJpbmcoIiIpOwotICAgIERlcHJlY2F0ZWRTdHJpbmcg
cmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGVwcmVjYXRlZENoYXIqPihidWYpLCBsZW5n
dGgpOworICAgICAgICByZXR1cm4gIiI7CisgICAgU3RyaW5nIHJlc3VsdChidWYsIGxlbmd0aCk7
CiAgICAgZnJlZShidWYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oCShyZXZpc2lvbiAyNzQ2NCkKKysrIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0NvbGxh
cHNpYmxlV2hpdGVzcGFjZShVQ2hhCiAgICAgfQogfQogCi1EZXByZWNhdGVkU3RyaW5nIHBsYWlu
VGV4dChjb25zdCBSYW5nZSopOworU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSopOwogVUNo
YXIqIHBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyKGNvbnN0IFJhbmdlKiwgdW5zaWdu
ZWQmIGJ1ZmZlckxlbmd0aCk7CiBQYXNzUmVmUHRyPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0
IFJhbmdlKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3J3YXJkLCBib29sIGNhc2VTZW5zaXRpdmUp
OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHJldmlzaW9uIDI3
NDY0KQorKysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjEyLDkgKzIxMiw2IEBAIGVudW0gV2ViU2Nyb2xsR3JhbnVsYXJpdHkgewogLSAo
Qk9PTClpc0RyYWdDYXJldFJpY2hseUVkaXRhYmxlOwogLSAoRE9NUmFuZ2UgKiljaGFyYWN0ZXJS
YW5nZUF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7CiAKLS0gKHZvaWQpZGVsZXRlS2V5UHJlc3NlZFdp
dGhTbWFydERlbGV0ZTooQk9PTClzbWFydERlbGV0ZSBncmFudWxhcml0eTooV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5OwotLSAodm9pZClmb3J3YXJkRGVsZXRlS2V5UHJlc3Nl
ZFdpdGhTbWFydERlbGV0ZTooQk9PTClzbWFydERlbGV0ZSBncmFudWxhcml0eTooV2ViQ29yZTo6
VGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5OwotCiAtIChET01DU1NTdHlsZURlY2xhcmF0aW9u
ICopdHlwaW5nU3R5bGU7CiAtICh2b2lkKXNldFR5cGluZ1N0eWxlOihET01DU1NTdHlsZURlY2xh
cmF0aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246KFdlYkNvcmU6OkVkaXRBY3Rpb24pdW5kb0Fj
dGlvbjsKIC0gKE5TQ2VsbFN0YXRlVmFsdWUpc2VsZWN0aW9uSGFzU3R5bGU6KERPTUNTU1N0eWxl
RGVjbGFyYXRpb24gKilzdHlsZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1l
QnJpZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJp
ZGdlLm1tCShyZXZpc2lvbiAyNzQ2NCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1l
QnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU1LDI0ICsxMTU1LDYgQEAgc3RhdGljIEhU
TUxGb3JtRWxlbWVudCAqZm9ybUVsZW1lbnRGcm9tRAogICAgIHJldHVybiBuaWw7CiB9CiAKLS0g
KHZvaWQpZGVsZXRlS2V5UHJlc3NlZFdpdGhTbWFydERlbGV0ZTooQk9PTClzbWFydERlbGV0ZSBn
cmFudWxhcml0eTooVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5Ci17Ci0gICAgaWYgKCFtX2Zy
YW1lIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBzbWFy
dERlbGV0ZSwgZ3JhbnVsYXJpdHkpOwotICAgIG1fZnJhbWUtPnJldmVhbFNlbGVjdGlvbihSZW5k
ZXJMYXllcjo6Z0FsaWduVG9FZGdlSWZOZWVkZWQpOwotfQotCi0tICh2b2lkKWZvcndhcmREZWxl
dGVLZXlQcmVzc2VkV2l0aFNtYXJ0RGVsZXRlOihCT09MKXNtYXJ0RGVsZXRlIGdyYW51bGFyaXR5
OihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKLXsKLSAgICBpZiAoIW1fZnJhbWUgfHwgIW1f
ZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBUeXBpbmdDb21t
YW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBzbWFydERl
bGV0ZSwgZ3JhbnVsYXJpdHkpOwotICAgIG1fZnJhbWUtPnJldmVhbFNlbGVjdGlvbihSZW5kZXJM
YXllcjo6Z0FsaWduVG9FZGdlSWZOZWVkZWQpOwotfQotCiAtIChET01DU1NTdHlsZURlY2xhcmF0
aW9uICopdHlwaW5nU3R5bGUKIHsKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnR5cGlu
Z1N0eWxlKCkpCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NDY0KQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDA3LTExLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NworICAg
ICAgICBTb21lIGVkaXRpbmcgY2xlYW51cAorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgZGVsZXRlVG9FbmRPZkxpbmU6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IGRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGg6XSk6CisgICAgICAgIFdlYkNvcmUgaGFkIGEgZHVwbGlj
YXRlIG9mIHRoZSBzYW1lIGxvZ2ljIGFscmVhZHkuIFdlIGFyZSBwYXNzaW5nIGEgYm91bmRhcnkg
dmFsdWUgdG8KKyAgICAgICAgYSBmdW5jdGlvbiB0aGF0IGV4cGVjdHMgZ3JhbnVsYXJpdHksIHRo
aXMgbWF5IG5lZWQgdG8gYmUgc3RyYWlnaHRlbmVkIG91dCBpbiB0aGUgZnV0dXJlLgorCiAyMDA3
LTExLTA1ICBKb2huIFN1bGxpdmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgogCiAgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDI3
NDY0KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQzODMsMTEgKzQzODMsOCBAQCBOU1N0cm9rZUNvbG9yQXR0cmlidXRlTmFtZSAgICAgICAgLyog
TlNDCiAgICAgLy8gVG8gbWF0Y2ggTlNUZXh0VmlldywgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxl
dGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBh
cmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAobGlrZSBkZWxldGVUb0VuZE9mUGFyYWdyYXBo
IGRvZXMgYmVsb3cpLgogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0p
OwotICAgIGlmIChjb3JlRnJhbWUpIHsKLSAgICAgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVC
b3VuZGFyeSwgdHJ1ZSwgZmFsc2UpKQotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwotICAgIH0KLSAgICAKKyAgICBpZiAoY29yZUZy
YW1lKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwog
fQogCiAtICh2b2lkKWRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6KGlkKXNlbmRlcgpAQCAt
NDQwNCwxMiArNDQwMSw5IEBAIE5TU3Ryb2tlQ29sb3JBdHRyaWJ1dGVOYW1lICAgICAgICAvKiBO
U0MKICAgICBDT01NQU5EX1BST0xPR1VFCiAKICAgICAvLyBEZXNwaXRlIHRoZSBuYW1lIG9mIHRo
ZSBtZXRob2QsIHRoaXMgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBpZiB0aGUgY2FyZXQgaXMg
YXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KLSAgICAvLyBJZiBkZWxldGlvbiB0byB0aGUgZW5k
IG9mIHRoZSBwYXJhZ3JhcGggZmFpbHMsIHdlIGRlbGV0ZSBvbmUgY2hhcmFjdGVyIGZvcndhcmQs
IHdoaWNoIHdpbGwgZGVsZXRlIHRoZSBuZXdsaW5lLgogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIGlmIChjb3JlRnJhbWUpIHsKLSAgICAgICAgaWYgKCFj
b3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSkpCi0gICAgICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7Ci0gICAg
fQorICAgIGlmIChjb3JlRnJhbWUpCisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgUGFyYWdyYXBoQm91
bmRhcnksIHRydWUsIGZhbHNlKTsKIH0KIAogLSAodm9pZCljb21wbGV0ZTooaWQpc2VuZGVyCg==
</data>
<flag name="review"
          id="7256"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>