<?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>67175</bug_id>
          
          <creation_ts>2011-08-29 18:48:43 -0700</creation_ts>
          <short_desc>Get rid of toInputElement()</short_desc>
          <delta_ts>2011-10-25 11:34:13 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67262</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>458641</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 18:48:43 -0700</bug_when>
    <thetext>Yet another left over from WML :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459036</commentid>
    <comment_count>1</comment_count>
      <attachid>105656</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 11:22:34 -0700</bug_when>
    <thetext>Created attachment 105656
work in progress

It&apos;s clear to me that we need some sort of a helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459052</commentid>
    <comment_count>2</comment_count>
      <attachid>105656</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-30 11:48:50 -0700</bug_when>
    <thetext>Comment on attachment 105656
work in progress

Attachment 105656 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9566459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459056</commentid>
    <comment_count>3</comment_count>
      <attachid>105656</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-30 11:52:11 -0700</bug_when>
    <thetext>Comment on attachment 105656
work in progress

Attachment 105656 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9564521</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459069</commentid>
    <comment_count>4</comment_count>
      <attachid>105656</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 12:07:12 -0700</bug_when>
    <thetext>Comment on attachment 105656
work in progress

Attachment 105656 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9567495</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459115</commentid>
    <comment_count>5</comment_count>
      <attachid>105677</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 13:03:19 -0700</bug_when>
    <thetext>Created attachment 105677
work in progress 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459202</commentid>
    <comment_count>6</comment_count>
      <attachid>105698</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 14:30:11 -0700</bug_when>
    <thetext>Created attachment 105698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459228</commentid>
    <comment_count>7</comment_count>
      <attachid>105698</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-30 14:45:10 -0700</bug_when>
    <thetext>Comment on attachment 105698
Patch

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

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:137
&gt; +    if (toHTMLInputElement(host)-&gt;maxResults() &lt; 0)
&gt; +        return decorationId;
&gt; +    if (toHTMLInputElement(host)-&gt;maxResults() &gt; 0)
&gt; +        return resultsId;

Seems a little weak to call maxResults twice here. But maybe it’s just an inlined accessor and so no additional performance cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459292</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 16:03:46 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 105698 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105698&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:137
&gt; &gt; +    if (toHTMLInputElement(host)-&gt;maxResults() &lt; 0)
&gt; &gt; +        return decorationId;
&gt; &gt; +    if (toHTMLInputElement(host)-&gt;maxResults() &gt; 0)
&gt; &gt; +        return resultsId;
&gt; 
&gt; Seems a little weak to call maxResults twice here. But maybe it’s just an inlined accessor and so no additional performance cost.

Huh, I didn&apos;t realize that.  Will fix before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459314</commentid>
    <comment_count>9</comment_count>
      <attachid>105698</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 16:28:00 -0700</bug_when>
    <thetext>Comment on attachment 105698
Patch

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

&gt; Source/WebCore/html/HTMLInputElement.h:362
&gt; +    return static_cast&lt;const HTMLInputElement*&gt;(node);

Oops, I somehow have const here :(  Will fix also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459316</commentid>
    <comment_count>10</comment_count>
      <attachid>105698</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 16:30:09 -0700</bug_when>
    <thetext>Comment on attachment 105698
Patch

Attachment 105698 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9565603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459384</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 18:19:21 -0700</bug_when>
    <thetext>Committed r94142: &lt;http://trac.webkit.org/changeset/94142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459428</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 21:46:31 -0700</bug_when>
    <thetext>HTMLIsIndexElement inherits from HTMLInputElement.  Given that, I&apos;m not sure if this refactoring is a good idea. For one, hasTagName is much slower, but also explicitly checking for the tag name might be more error-prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459429</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 21:47:09 -0700</bug_when>
    <thetext>The patch was reverted in http://trac.webkit.org/changeset/94149.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459547</commentid>
    <comment_count>14</comment_count>
      <attachid>105698</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-08-31 04:11:02 -0700</bug_when>
    <thetext>Comment on attachment 105698
Patch

Attachment 105698 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9566719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459690</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-31 10:12:11 -0700</bug_when>
    <thetext>Sorry for leading you astray, Ryosuke. I still don&apos;t like the virtual function so much, but we can probably live with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460152</commentid>
    <comment_count>16</comment_count>
      <attachid>105698</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 18:54:18 -0700</bug_when>
    <thetext>Comment on attachment 105698
Patch

Attachment 105698 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9580034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460184</commentid>
    <comment_count>17</comment_count>
      <attachid>105698</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 20:05:11 -0700</bug_when>
    <thetext>Comment on attachment 105698
Patch

Attachment 105698 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9578194</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105656</attachid>
            <date>2011-08-30 11:22:34 -0700</date>
            <delta_ts>2011-08-30 13:03:19 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip67175</filename>
            <type>text/plain</type>
            <size>19300</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFbGVtZW50LmNw
cAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsOCArMTczLDggQEAKIAogV2ViSW5w
dXRFbGVtZW50KiB0b1dlYklucHV0RWxlbWVudChXZWJFbGVtZW50KiB3ZWJFbGVtZW50KQogewot
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHdlYkVsZW1lbnQtPnVud3JhcDxF
bGVtZW50PigpLT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQorICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSB3ZWJFbGVtZW50LT51bndyYXA8RWxlbWVudD4oKTsKKyAgICBp
ZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJJbnB1dEVsZW1lbnQqPih3ZWJFbGVtZW50KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAJKHJldmlzaW9u
IDk0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgaWYgKGl0ID09IG1fbmFtZVRvQ2hl
Y2tlZFJhZGlvQnV0dG9uTWFwLT5lbmQoKSB8fCBpdC0+c2Vjb25kICE9IGVsZW1lbnQpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBl
bGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKICAgICBBU1NF
UlRfVU5VU0VEKGlucHV0RWxlbWVudCwgaW5wdXRFbGVtZW50KTsKICAgICBBU1NFUlQoaW5wdXRF
bGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2VkKCkpOwogICAgIEFTU0VSVChlbGVtZW50LT5pc1Jh
ZGlvQnV0dG9uKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMyw4ICs1MzMsNiBAQAog
CiAgICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKSB7IHJldHVybiB0aGlzOyB9CiAKLSAgICB2aXJ0
dWFsIEhUTUxJbnB1dEVsZW1lbnQqIHRvSW5wdXRFbGVtZW50KCk7Ci0KICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3NywxNSArNTc3LDYgQEAKICAgICBzZXRQYXJl
bnQoaG9zdCk7CiB9CiAKLUhUTUxJbnB1dEVsZW1lbnQqIE5vZGU6OnRvSW5wdXRFbGVtZW50KCkK
LXsKLSAgICAvLyBJZiBvbmUgb2YgdGhlIGJlbG93IEFTU0VSVHMgdHJpZ2dlciwgeW91IGFyZSBj
YWxsaW5nIHRoaXMgZnVuY3Rpb24KLSAgICAvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGZyb20g
YSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIG9mIHRoaXMgb2JqZWN0LgotICAgIC8vIERvbid0
IGRvIHRoaXMhCi0gICAgQVNTRVJUKCEoaXNIVE1MRWxlbWVudCgpICYmIGhhc1RhZ05hbWUoaW5w
dXRUYWcpKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHNob3J0IE5vZGU6OnRhYkluZGV4KCkgY29u
c3QKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IHJhcmVEYXRhKCktPnRhYkluZGV4KCkg
OiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDk0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1NCwxNCArMjU0LDIxIEBACiBzdGF0aWMgSFRNTElucHV0RWxlbWVudCog
YXNGaWxlSW5wdXQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CisgICAgCisgICAg
aWYgKCFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQorICAgICAgICByZXR1
cm4gMDsKIAotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5w
dXRFbGVtZW50KCk7CisgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGJ1
dHRvbiBpbnNpZGUgb2YgdGhlIGEgZmlsZSBpbnB1dCwgbW92ZSB1cCB0byB0aGUgZmlsZSBpbnB1
dC4KLSAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkg
JiYgaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIGlu
cHV0RWxlbWVudCA9IGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPnNoYWRvd0hvc3QoKS0+dG9J
bnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1RleHRCdXR0b24oKSAmJiBp
bnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBub2Rl
ID0gaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+c2hhZG93SG9zdCgpOworICAgICAgICBpZiAo
IW5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihub2RlKTsKKyAgICB9CiAKLSAgICByZXR1cm4gaW5wdXRFbGVtZW50ICYmIGlucHV0
RWxlbWVudC0+aXNGaWxlVXBsb2FkKCkgPyBpbnB1dEVsZW1lbnQgOiAwOworICAgIHJldHVybiBp
bnB1dEVsZW1lbnQtPmlzRmlsZVVwbG9hZCgpID8gaW5wdXRFbGVtZW50IDogMDsKIH0KIAogLy8g
VGhpcyBjYW4gcmV0dXJuIG51bGwgaWYgYW4gZW1wdHkgZG9jdW1lbnQgaXMgbG9hZGVkLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCShy
ZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3ICszMTAsNyBAQAogICAgIC8vIHRyZWF0
bWVudCwgbW92ZSB0aGVtIHRvIHNwZWNpYWwgZnVuY3Rpb25zLgogICAgIGlmICh0eXBlID09IFNs
aWRlclZlcnRpY2FsIHx8IHR5cGUgPT0gU2xpZGVySG9yaXpvbnRhbCkgewogICAgICAgICBSZW5k
ZXJTbGlkZXIqIHJlbmRlclNsaWRlciA9IHRvUmVuZGVyU2xpZGVyKG9iamVjdCk7Ci0gICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gcmVuZGVyU2xpZGVyLT5ub2RlKCktPnRvSW5wdXRF
bGVtZW50KCk7CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gcmVuZGVyU2xpZGVy
LT5ub2RlKCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpID8gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KHJlbmRlclNsaWRlci0+bm9kZSgpKSA6IDA7CiAgICAgICAgIEVkamVfTWVzc2FnZV9G
bG9hdF9TZXQqIG1zZzsKICAgICAgICAgZG91YmxlIHZhbHVlUmFuZ2UgPSBpbnB1dC0+bWF4aW11
bSgpIC0gaW5wdXQtPm1pbmltdW0oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NCwxNiArNDk0LDEyIEBACiBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwotICAgIGlmICghbV9yZW5kZXJlci0+bm9kZSgpIHx8
ICFtX3JlbmRlcmVyLT5ub2RlKCktPmlzSFRNTEVsZW1lbnQoKSkKKyAgICBpZiAoIW1fcmVuZGVy
ZXItPm5vZGUoKSB8fCAhbV9yZW5kZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVu
a25vd25Sb2xlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQgPSBtX3JlbmRlcmVyLT5ub2RlKCktPnRvSW5wdXRFbGVtZW50KCk7Ci0g
ICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biBpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4obV9yZW5kZXJlci0+bm9kZSgpKS0+aXNQYXNzd29yZEZpZWxk
KCk7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRmlsZVVwbG9h
ZEJ1dHRvbigpIGNvbnN0CkBAIC01ODksMzYgKzU4NSwzMCBAQAogYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogewogICAgIEFTU0VSVChtX3Jl
bmRlcmVyKTsKLSAgICBpZiAoIW1fcmVuZGVyZXItPm5vZGUoKSkKKyAgICBpZiAoIW1fcmVuZGVy
ZXItPm5vZGUoKSB8fCAhbV9yZW5kZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50ID0gbV9yZW5kZXJlci0+bm9kZSgpLT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5w
dXRFbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaW5wdXRFbGVt
ZW50LT5pc0luZGV0ZXJtaW5hdGUoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KG1fcmVuZGVyZXItPm5vZGUoKSktPmlzSW5kZXRlcm1pbmF0ZSgpOwogfQogCiBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTmF0aXZlQ2hlY2tib3hPclJhZGlvKCkg
Y29uc3QKIHsKLSAgICBOb2RlKiBlbGVtZW50Tm9kZSA9IG5vZGUoKTsKLSAgICBpZiAoZWxlbWVu
dE5vZGUpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBlbGVtZW50Tm9kZS0+
dG9JbnB1dEVsZW1lbnQoKTsKLSAgICAgICAgaWYgKGlucHV0KQotICAgICAgICAgICAgcmV0dXJu
IGlucHV0LT5pc0NoZWNrYm94KCkgfHwgaW5wdXQtPmlzUmFkaW9CdXR0b24oKTsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKKyAgICBpZiAo
IW1fcmVuZGVyZXItPm5vZGUoKSB8fCAhbV9yZW5kZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obV9yZW5kZXJlci0+bm9kZSgp
KTsKKyAgICByZXR1cm4gaW5wdXQtPmlzQ2hlY2tib3goKSB8fCBpbnB1dC0+aXNSYWRpb0J1dHRv
bigpOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0NoZWNrZWQo
KSBjb25zdAogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKLSAgICBpZiAoIW1fcmVuZGVyZXIt
Pm5vZGUoKSkKKyAgICBpZiAoIW1fcmVuZGVyZXItPm5vZGUoKSB8fCAhbV9yZW5kZXJlci0+bm9k
ZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gRmlyc3QgdGVzdCBmb3IgbmF0aXZlIGNoZWNrZWRuZXNzIHNlbWFudGljcwotICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG1fcmVuZGVyZXItPm5vZGUoKS0+dG9JbnB1dEVs
ZW1lbnQoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4obV9yZW5kZXJlci0+bm9kZSgpKTsKICAgICBpZiAoaW5wdXRF
bGVtZW50KQogICAgICAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2Vk
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTUsMTEgKzYxNSw4IEBACiAg
ICAgaWYgKCFkb21Ob2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKGRvbU5vZGUt
PmlzSFRNTEVsZW1lbnQoKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQgPSBkb21Ob2RlLT50b0lucHV0RWxlbWVudCgpOwotICAgICAgICBpZiAoaW5wdXRFbGVtZW50
ICYmIGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChkb21Ob2RlLT5pc0hUTUxFbGVtZW50KCkgJiYgZG9tTm9kZS0+aGFz
VGFnTmFtZShpbnB1dFRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGRvbU5v
ZGUpLT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIGxv
Y2F0ZSB0aGUgcmVuZGVyZXIsIHdoaWNoIG11c3QgZXhpc3QgZm9yIGEgdmlzaWJsZSBkb20gbm9k
ZQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBkb21Ob2RlLT5yZW5kZXJlcigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTMyMjMsNyArMzIyMyw2IEBACiBfX1pOM1dU
RjlIYXNoVGFibGVJUE5TXzE2QXRvbWljU3RyaW5nSW1wbEVTMl9OU18xN0lkZW50aXR5RXh0cmFj
dG9ySVMyX0VFTlNfN1B0ckhhc2hJUzJfRUVOU18xMEhhc2hUcmFpdHNJUzJfRUVTOF9FNGZpbmRJ
UzJfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMyX1MyX1M2X0VFRUVOU18xN0hhc2hUYWJs
ZUl0ZXJhdG9ySVMyX1MyX1M0X1M2X1M4X1M4X0VFUktUXwogX19aTjdXZWJDb3JlMTFDU1NTZWxl
Y3Rvcjhwc2V1ZG9JZEVOUzBfMTBQc2V1ZG9UeXBlRQogX19aTks3V2ViQ29yZTIySFRNTEZvcm1D
b250cm9sRWxlbWVudDIwaXNGb3JtQ29udHJvbEVsZW1lbnRFdgotX19aTjdXZWJDb3JlMTZIVE1M
SW5wdXRFbGVtZW50MTR0b0lucHV0RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMjJIVE1MRm9ybUNv
bnRyb2xFbGVtZW50MjBpc0VuYWJsZWRGb3JtQ29udHJvbEV2CiBfX1pOSzdXZWJDb3JlMjJIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OGRpc2FibGVkRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE1cmFyZURh
dGFGb2N1c2VkRXYKQEAgLTQyNDIsNyArNDI0MSw2IEBACiBfX1pOM1dURjlIYXNoVGFibGVJTlNf
NlN0cmluZ0VTdDRwYWlySVMxX043V2ViQ29yZTE3QWNjZXNzaWJpbGl0eVJvbGVFRU5TXzE4UGFp
ckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfMTVDYXNlRm9sZGluZ0hhc2hFTlNfMTRQYWlySGFzaFRy
YWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOU0FfSVM0X0VFRUVTQl9FM2FkZElTMV9TNF9OU18x
N0hhc2hNYXBUcmFuc2xhdG9ySVM1X1NEX1M4X0VFRUVTMl9JTlNfMTdIYXNoVGFibGVJdGVyYXRv
cklTMV9TNV9TN19TOF9TRF9TQl9FRWJFUktUX1JLVDBfCiBfX1pOM1dURjlIYXNoVGFibGVJTlNf
NlN0cmluZ0VTdDRwYWlySVMxX043V2ViQ29yZTE3QWNjZXNzaWJpbGl0eVJvbGVFRU5TXzE4UGFp
ckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfMTVDYXNlRm9sZGluZ0hhc2hFTlNfMTRQYWlySGFzaFRy
YWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOU0FfSVM0X0VFRUVTQl9FNmxvb2t1cElTMV9OU18y
MklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzFfUzVfUzhfRUVFRVBTNV9SS1RfCiBfX1pOM1dURjlI
YXNoVGFibGVJTlNfNlN0cmluZ0VTdDRwYWlySVMxX043V2ViQ29yZTE3QWNjZXNzaWJpbGl0eVJv
bGVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfMTVDYXNlRm9sZGluZ0hhc2hFTlNf
MTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOU0FfSVM0X0VFRUVTQl9FNnJl
aGFzaEVpCi1fX1pON1dlYkNvcmU0Tm9kZTE0dG9JbnB1dEVsZW1lbnRFdgogX19aTks3V2ViQ29y
ZTEzUm9vdElubGluZUJveDE5bGluZUJyZWFrQmlkaVN0YXR1c0V2CiBfX1pOSzdXZWJDb3JlMTNJ
bmxpbmVGbG93Qm94MTNsYXN0TGVhZkNoaWxkRXYKIF9fWk5LN1dlYkNvcmU5SW5saW5lQm94Nmlz
TGVhZkV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNp
b24gOTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNiBAQAogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih3ZWJraXRzcGVlY2hjaGFuZ2UpOwogCi0gICAgdmlydHVhbCBIVE1MSW5wdXRF
bGVtZW50KiB0b0lucHV0RWxlbWVudCgpIHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRBdXRvY29tcGxldGUoKSBjb25zdDsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0
YXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI4LDE2ICsxMjgsMTQgQEAKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgcmVzdWx0c0RlY29yYXRpb25JZCwgKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29y
YXRpb24iKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRlY29yYXRp
b25JZCwgKCItd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIikpOwogICAgIE5vZGUqIGhvc3QgPSBz
aGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAgICBpZiAoIWhvc3QpCisgICAgaWYgKCFob3N0IHx8ICFo
b3N0LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHNJZDsKLSAg
ICBpZiAoSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBob3N0LT50b0lucHV0RWxlbWVudCgpKSB7
Ci0gICAgICAgIGlmIChpbnB1dC0+bWF4UmVzdWx0cygpIDwgMCkKLSAgICAgICAgICAgIHJldHVy
biBkZWNvcmF0aW9uSWQ7Ci0gICAgICAgIGlmIChpbnB1dC0+bWF4UmVzdWx0cygpID4gMCkKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHRzSWQ7Ci0gICAgICAgIHJldHVybiByZXN1bHRzRGVjb3Jh
dGlvbklkOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0c0lkOworCisgICAgaWYgKHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihob3N0KS0+bWF4UmVzdWx0cygpIDwgMCkKKyAgICAgICAg
cmV0dXJuIGRlY29yYXRpb25JZDsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KGhvc3QpLT5tYXhSZXN1bHRzKCkgPiAwKQorICAgICAgICByZXR1cm4gcmVzdWx0c0lkOwor
ICAgIHJldHVybiByZXN1bHRzRGVjb3JhdGlvbklkOwogfQogCiB2b2lkIFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmgiCkBAIC02Niw3ICs2NywxMSBAQAogU2xpZGVyVGh1bWJFbGVtZW50KiBz
bGlkZXJUaHVtYkVsZW1lbnRPZihOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAg
ICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lucHV0RWxlbWVudCgpLT5zaGFkb3dSb290
KCk7CisgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgU2hhZG93Um9vdCogc2hhZG93ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5v
ZGUpLT5zaGFkb3dSb290KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CiAgICAgTm9kZSogdGh1bWIg
PSBzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCk7CiAgICAg
QVNTRVJUKHRodW1iKTsKQEAgLTEwMyw3ICsxMDgsOCBAQAogewogICAgIC8vIERvIG5vdCBjYXN0
IG5vZGUoKSB0byBTbGlkZXJUaHVtYkVsZW1lbnQuIFRoaXMgcmVuZGVyZXIgaXMgdXNlZCBmb3IK
ICAgICAvLyBUcmFja0xpbWl0RWxlbWVudCB0b28uCi0gICAgSFRNTElucHV0RWxlbWVudCogaW5w
dXQgPSBub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpLT50b0lucHV0RWxlbWVudCgpOworICAg
IEFTU0VSVChub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW5wdXRUYWcpKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBi
b29sIGlzVmVydGljYWwgPSBzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0
aWNhbFBhcnQgfHwgc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1
bWJQYXJ0OwogCiAgICAgZG91YmxlIGZyYWN0aW9uID0gc2xpZGVyUG9zaXRpb24oaW5wdXQpICog
MTAwOwpAQCAtMTMyLDcgKzEzOCw4IEBACiAKIHZvaWQgUmVuZGVyU2xpZGVyQ29udGFpbmVyOjps
YXlvdXQoKQogewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gbm9kZSgpLT5zaGFkb3dB
bmNlc3Rvck5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBBU1NFUlQobm9kZSgpLT5zaGFk
b3dBbmNlc3Rvck5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSk7CisgICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
bm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gaGFz
VmVydGljYWxBcHBlYXJhbmNlKGlucHV0KTsKICAgICBzdHlsZSgpLT5zZXRCb3hPcmllbnQoaXNW
ZXJ0aWNhbCA/IFZFUlRJQ0FMIDogSE9SSVpPTlRBTCk7CiAgICAgLy8gU2V0cyB0aGUgY29uY3Jl
dGUgaGVpZ2h0IGlmIHRoZSBoZWlnaHQgb2YgdGhlIDxpbnB1dD4gaXMgbm90IGZpeGVkIG9yIGEK
QEAgLTMxMyw3ICszMjAsOCBAQAogewogICAgIC8vIE9ubHkgSFRNTElucHV0RWxlbWVudCBjcmVh
dGVzIFNsaWRlclRodW1iRWxlbWVudCBpbnN0YW5jZXMgYXMgaXRzIHNoYWRvdyBub2Rlcy4KICAg
ICAvLyBTbywgc2hhZG93QW5jZXN0b3JOb2RlKCkgbXVzdCBiZSBhbiBIVE1MSW5wdXRFbGVtZW50
LgotICAgIHJldHVybiBzaGFkb3dBbmNlc3Rvck5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAg
ICBBU1NFUlQoc2hhZG93QW5jZXN0b3JOb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1
dFRhZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93
QW5jZXN0b3JOb2RlKCkpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNsaWRlclRodW1iRWxl
bWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtMzUxLDcgKzM1OSw4IEBACiBUcmFja0xp
bWl0ZXJFbGVtZW50KiB0cmFja0xpbWl0ZXJFbGVtZW50T2YoTm9kZSogbm9kZSkKIHsKICAgICBB
U1NFUlQobm9kZSk7Ci0gICAgU2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+dG9JbnB1dEVsZW1l
bnQoKS0+c2hhZG93Um9vdCgpOworICAgIEFTU0VSVChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW5wdXRUYWcpKTsKKyAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4obm9kZSktPnNoYWRvd1Jvb3QoKTsKICAgICBBU1NFUlQoc2hhZG93KTsK
ICAgICBOb2RlKiBsaW1pdGVyID0gc2hhZG93LT5maXJzdENoaWxkKCktPmxhc3RDaGlsZCgpOwog
ICAgIEFTU0VSVChsaW1pdGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiA5NDA0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBACiAgICAgLCBtX3NlYXJjaFBv
cHVwKDApCiB7CiAgICAgQVNTRVJUKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSk7Ci0gICAgQVNTRVJU
KG5vZGUtPnRvSW5wdXRFbGVtZW50KCkpOworICAgIEFTU0VSVChub2RlLT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSk7CiB9CiAKIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZSgpCkBAIC03ODgsNyArNzg4LDcgQEAKIAogSFRNTElucHV0RWxlbWVu
dCogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjppbnB1dEVsZW1lbnQoKSBjb25zdAogewot
ICAgIHJldHVybiBub2RlKCktPnRvSW5wdXRFbGVtZW50KCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM4
LDI2ICs3MzgsMTggQEAKIAogYm9vbCBSZW5kZXJUaGVtZTo6aXNDaGVja2VkKGNvbnN0IFJlbmRl
ck9iamVjdCogbykgY29uc3QKIHsKLSAgICBpZiAoIW8tPm5vZGUoKSkKKyAgICBpZiAoIW8tPm5v
ZGUoKSB8fCAhby0+bm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gby0+bm9kZSgp
LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2Vk
KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihvLT5ub2RlKCkp
LT5zaG91bGRBcHBlYXJDaGVja2VkKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzSW5kZXRl
cm1pbmF0ZShjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAgaWYgKCFvLT5ub2Rl
KCkpCisgICAgaWYgKCFvLT5ub2RlKCkgfHwgIW8tPm5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRh
ZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IG8tPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxl
bWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGlucHV0RWxlbWVudC0+
aXNJbmRldGVybWluYXRlKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihvLT5ub2RlKCkpLT5pc0luZGV0ZXJtaW5hdGUoKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVt
ZTo6aXNFbmFibGVkKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDgs
MTMgKzk0OCwxNSBAQAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKKworICAg
IEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQobV9lbGVtZW50KTsKKyAgICBpZiAoIWVsZW1l
bnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpIHx8ICFtX2VsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRU
YWcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgSFRNTElucHV0RWxlbWVudCog
dGhpc0lucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgSFRNTElu
cHV0RWxlbWVudCogb3RoZXJJbnB1dEVsZW1lbnQgPSBtX2VsZW1lbnQtPnRvSW5wdXRFbGVtZW50
KCk7CisgICAgSFRNTElucHV0RWxlbWVudCogdGhpc0lucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBvdGhl
cklucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihtX2VsZW1lbnQp
OwogICAgIAotICAgIGlmICghdGhpc0lucHV0RWxlbWVudCB8fCAhb3RoZXJJbnB1dEVsZW1lbnQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKICAgICBpZiAodGhpc0lucHV0RWxlbWVudC0+
aXNBdXRvZmlsbGVkKCkgIT0gb3RoZXJJbnB1dEVsZW1lbnQtPmlzQXV0b2ZpbGxlZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHRoaXNJbnB1dEVsZW1lbnQtPnNob3VsZEFwcGVh
ckNoZWNrZWQoKSAhPSBvdGhlcklucHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpKQpA
QCAtMjc0NiwxMCArMjc0OCw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQXV0b2ZpbGw6IHsKLSAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRy
b2xFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9s
RWxlbWVudCgpIHx8ICFlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaWYgKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCA9IGUtPnRvSW5wdXRFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBp
bnB1dEVsZW1lbnQtPmlzQXV0b2ZpbGxlZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZSktPmlzQXV0b2ZpbGxlZCgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvTGluazoKQEAgLTI4MzYsMjAgKzI4MzcsMjAgQEAKICAgICAgICAgICAgICAgICBl
LT5kb2N1bWVudCgpLT5zZXRDb250YWluc1ZhbGlkaXR5U3R5bGVSdWxlcygpOwogICAgICAgICAg
ICAgICAgIHJldHVybiAoZS0+d2lsbFZhbGlkYXRlKCkgJiYgIWUtPmlzVmFsaWRGb3JtQ29udHJv
bEVsZW1lbnQoKSkgfHwgZS0+aGFzVW5hY2NlcHRhYmxlVmFsdWUoKTsKICAgICAgICAgICAgIH0g
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZDogewotICAgICAgICAgICAgICAgIGlmICgh
ZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWUg
fHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgfHwgIWUtPmhhc1RhZ05hbWUoaW5wdXRUYWcp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAvLyBFdmVuIHRo
b3VnaCBXaW5JRSBhbGxvd3MgY2hlY2tlZCBhbmQgaW5kZXRlcm1pbmF0ZSB0byBjby1leGlzdCwg
dGhlIENTUyBzZWxlY3RvciBzcGVjIHNheXMgdGhhdAogICAgICAgICAgICAgICAgIC8vIHlvdSBj
YW4ndCBiZSBib3RoIGNoZWNrZWQgYW5kIGluZGV0ZXJtaW5hdGUuICBXZSB3aWxsIGJlaGF2ZSBs
aWtlIFdpbklFIGJlaGluZCB0aGUgc2NlbmVzIGFuZCBqdXN0CiAgICAgICAgICAgICAgICAgLy8g
b2JleSB0aGUgQ1NTIHNwZWMgaGVyZSBpbiB0aGUgdGVzdCBmb3IgbWF0Y2hpbmcgdGhlIHBzZXVk
by4KLSAgICAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlLT50
b0lucHV0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5w
dXRFbGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2VkKCkgJiYgIWlucHV0RWxlbWVudC0+aXNJbmRl
dGVybWluYXRlKCkpCisgICAgICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGUpOworICAgICAgICAgICAgICAg
IGlmIChpbnB1dEVsZW1lbnQtPnNob3VsZEFwcGVhckNoZWNrZWQoKSAmJiAhaW5wdXRFbGVtZW50
LT5pc0luZGV0ZXJtaW5hdGUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9JbmRldGVybWluYXRlOiB7CiAgICAgICAgICAgICAgICAgaWYgKCFl
IHx8ICFlLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAKKwogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCiAgICAgICAg
ICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUocHJvZ3Jlc3NUYWcpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEhUTUxQcm9ncmVzc0VsZW1lbnQqIHByb2dyZXNzID0gc3RhdGljX2Nhc3Q8SFRNTFBy
b2dyZXNzRWxlbWVudCo+KGUpOwpAQCAtMjg1OCw5ICsyODU5LDggQEAKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZS0+dG9J
bnB1dEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0
RWxlbWVudC0+aXNJbmRldGVybWluYXRlKCkpCisKKyAgICAgICAgICAgICAgICBpZiAoZS0+aGFz
VGFnTmFtZShpbnB1dFRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGUpLT5p
c0luZGV0ZXJtaW5hdGUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="101884"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105677</attachid>
            <date>2011-08-30 13:03:19 -0700</date>
            <delta_ts>2011-08-30 14:30:05 -0700</delta_ts>
            <desc>work in progress 2</desc>
            <filename>wip67175b</filename>
            <type>text/plain</type>
            <size>21269</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFbGVtZW50LmNw
cAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsOCArMTczLDggQEAKIAogV2ViSW5w
dXRFbGVtZW50KiB0b1dlYklucHV0RWxlbWVudChXZWJFbGVtZW50KiB3ZWJFbGVtZW50KQogewot
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHdlYkVsZW1lbnQtPnVud3JhcDxF
bGVtZW50PigpLT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQorICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSB3ZWJFbGVtZW50LT51bndyYXA8RWxlbWVudD4oKTsKKyAgICBp
ZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYklucHV0RWxlbWVudCo+KHdlYkVs
ZW1lbnQpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysg
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlv
blBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQuaCIKQEAgLTIzMiwxMyArMjMzLDEwIEBACiB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRvZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVt
ZW50LCBib29sIGlzQXV0b2ZpbGxlZCkKIHsKICAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVt
ZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7Ci0gICAgaWYgKCF3ZWJFbGVtZW50KQorICAgIGlmICgh
d2ViRWxlbWVudCB8fCAhd2ViRWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFn
KSkKICAgICAgICAgcmV0dXJuOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9
IHdlYkVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0g
ICAgICAgIHJldHVybjsKIAotICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2ZpbGxlZChpc0F1dG9m
aWxsZWQpOworICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPih3ZWJFbGVtZW50KS0+
c2V0QXV0b2ZpbGxlZChpc0F1dG9maWxsZWQpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChRV2ViRnJhbWUqIGZyYW1lLCBi
b29sIGVuYWJsZWQpCkBAIC0yNTgsMTMgKzI1NiwxMCBAQAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBRU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0g
ZWxlbWVudC5tX2VsZW1lbnQ7Ci0gICAgaWYgKCF3ZWJFbGVtZW50KQorICAgIGlmICghd2ViRWxl
bWVudCB8fCAhd2ViRWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHdlYkVs
ZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAg
IHJldHVybjsKIAotICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2VyKHZhbHVlKTsKKyAg
ICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4od2ViRWxlbWVudCktPnNldFZhbHVlRm9y
VXNlcih2YWx1ZSk7CiB9CiAKIC8vIFBhdXNlIGEgZ2l2ZW4gQ1NTIGFuaW1hdGlvbiBvciB0cmFu
c2l0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNwZWNpZmljIHRpbWUuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCShyZXZpc2lvbiA5NDA0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNyArNzcsNyBAQAogICAgIGlmIChpdCA9PSBtX25hbWVUb0NoZWNrZWRSYWRp
b0J1dHRvbk1hcC0+ZW5kKCkgfHwgaXQtPnNlY29uZCAhPSBlbGVtZW50KQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+
dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7CiAgICAgQVNTRVJUX1VOVVNF
RChpbnB1dEVsZW1lbnQsIGlucHV0RWxlbWVudCk7CiAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+
c2hvdWxkQXBwZWFyQ2hlY2tlZCgpKTsKICAgICBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRv
bigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzMsOCArNTMzLDYgQEAKIAogICAgIHZp
cnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gdGhpczsgfQogCi0gICAgdmlydHVhbCBIVE1M
SW5wdXRFbGVtZW50KiB0b0lucHV0RWxlbWVudCgpOwotCiAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NzcsMTUgKzU3Nyw2IEBACiAgICAgc2V0UGFyZW50KGhvc3Qp
OwogfQogCi1IVE1MSW5wdXRFbGVtZW50KiBOb2RlOjp0b0lucHV0RWxlbWVudCgpCi17Ci0gICAg
Ly8gSWYgb25lIG9mIHRoZSBiZWxvdyBBU1NFUlRzIHRyaWdnZXIsIHlvdSBhcmUgY2FsbGluZyB0
aGlzIGZ1bmN0aW9uCi0gICAgLy8gZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBmcm9tIGEgY29uc3Ry
dWN0b3Igb3IgZGVzdHJ1Y3RvciBvZiB0aGlzIG9iamVjdC4KLSAgICAvLyBEb24ndCBkbyB0aGlz
IQotICAgIEFTU0VSVCghKGlzSFRNTEVsZW1lbnQoKSAmJiBoYXNUYWdOYW1lKGlucHV0VGFnKSkp
OwotICAgIHJldHVybiAwOwotfQotCiBzaG9ydCBOb2RlOjp0YWJJbmRleCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT50YWJJbmRleCgpIDogMDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5NDA0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTQsMTQgKzI1NCwyMSBAQAogc3RhdGljIEhUTUxJbnB1dEVsZW1lbnQqIGFzRmlsZUlu
cHV0KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIAorICAgIGlmICghbm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkKKyAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBub2RlLT50b0lucHV0RWxlbWVu
dCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihub2RlKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBidXR0b24gaW5z
aWRlIG9mIHRoZSBhIGZpbGUgaW5wdXQsIG1vdmUgdXAgdG8gdGhlIGZpbGUgaW5wdXQuCi0gICAg
aWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzVGV4dEJ1dHRvbigpICYmIGlucHV0
RWxlbWVudC0+dHJlZVNjb3BlKCktPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBpbnB1dEVsZW1l
bnQgPSBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5zaGFkb3dIb3N0KCktPnRvSW5wdXRFbGVt
ZW50KCk7CisgICAgaWYgKGlucHV0RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRFbGVt
ZW50LT50cmVlU2NvcGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgbm9kZSA9IGlucHV0
RWxlbWVudC0+dHJlZVNjb3BlKCktPnNoYWRvd0hvc3QoKTsKKyAgICAgICAgaWYgKCFub2RlLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
bm9kZSk7CisgICAgfQogCi0gICAgcmV0dXJuIGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQt
PmlzRmlsZVVwbG9hZCgpID8gaW5wdXRFbGVtZW50IDogMDsKKyAgICByZXR1cm4gaW5wdXRFbGVt
ZW50LT5pc0ZpbGVVcGxvYWQoKSA/IGlucHV0RWxlbWVudCA6IDA7CiB9CiAKIC8vIFRoaXMgY2Fu
IHJldHVybiBudWxsIGlmIGFuIGVtcHR5IGRvY3VtZW50IGlzIGxvYWRlZC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAkocmV2aXNpb24g
OTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgpAQCAtMzEwLDcgKzMx
MSw3IEBACiAgICAgLy8gdHJlYXRtZW50LCBtb3ZlIHRoZW0gdG8gc3BlY2lhbCBmdW5jdGlvbnMu
CiAgICAgaWYgKHR5cGUgPT0gU2xpZGVyVmVydGljYWwgfHwgdHlwZSA9PSBTbGlkZXJIb3Jpem9u
dGFsKSB7CiAgICAgICAgIFJlbmRlclNsaWRlciogcmVuZGVyU2xpZGVyID0gdG9SZW5kZXJTbGlk
ZXIob2JqZWN0KTsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSByZW5kZXJTbGlk
ZXItPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICAgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSByZW5kZXJTbGlkZXItPm5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0
VGFnKSA/IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihyZW5kZXJTbGlkZXItPm5vZGUo
KSkgOiAwOwogICAgICAgICBFZGplX01lc3NhZ2VfRmxvYXRfU2V0KiBtc2c7CiAgICAgICAgIGRv
dWJsZSB2YWx1ZVJhbmdlID0gaW5wdXQtPm1heGltdW0oKSAtIGlucHV0LT5taW5pbXVtKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OTQsMTYgKzQ5NCwxMiBAQAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc1Bhc3N3b3JkRmllbGQoKSBjb25zdAogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsK
LSAgICBpZiAoIW1fcmVuZGVyZXItPm5vZGUoKSB8fCAhbV9yZW5kZXJlci0+bm9kZSgpLT5pc0hU
TUxFbGVtZW50KCkpCisgICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1fcmVuZGVyZXIt
Pm5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gbV9yZW5kZXJl
ci0+bm9kZSgpLT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3Jk
RmllbGQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1fcmVu
ZGVyZXItPm5vZGUoKSktPmlzUGFzc3dvcmRGaWVsZCgpOwogfQogICAgIAogYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdApAQCAtNTg5LDM2
ICs1ODUsMzAgQEAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNJbmRldGVybWlu
YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZW5kZXJlcik7Ci0gICAgaWYgKCFtX3JlbmRl
cmVyLT5ub2RlKCkpCisgICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1fcmVuZGVyZXIt
Pm5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG1fcmVuZGVyZXItPm5vZGUoKS0+
dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNJbmRldGVybWluYXRlKCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihtX3JlbmRlcmVyLT5ub2Rl
KCkpLT5pc0luZGV0ZXJtaW5hdGUoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc05hdGl2ZUNoZWNrYm94T3JSYWRpbygpIGNvbnN0CiB7Ci0gICAgTm9kZSogZWxlbWVu
dE5vZGUgPSBub2RlKCk7Ci0gICAgaWYgKGVsZW1lbnROb2RlKSB7Ci0gICAgICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0ID0gZWxlbWVudE5vZGUtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgICAg
IGlmIChpbnB1dCkKLSAgICAgICAgICAgIHJldHVybiBpbnB1dC0+aXNDaGVja2JveCgpIHx8IGlu
cHV0LT5pc1JhZGlvQnV0dG9uKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBBU1NFUlQobV9yZW5kZXJlcik7CisgICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1f
cmVuZGVyZXItPm5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElu
cHV0RWxlbWVudCo+KG1fcmVuZGVyZXItPm5vZGUoKSk7CisgICAgcmV0dXJuIGlucHV0LT5pc0No
ZWNrYm94KCkgfHwgaW5wdXQtPmlzUmFkaW9CdXR0b24oKTsKIH0KICAgICAKIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNDaGVja2VkKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9y
ZW5kZXJlcik7Ci0gICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkpCisgICAgaWYgKCFtX3JlbmRl
cmVyLT5ub2RlKCkgfHwgIW1fcmVuZGVyZXItPm5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZpcnN0IHRlc3QgZm9yIG5hdGl2ZSBj
aGVja2VkbmVzcyBzZW1hbnRpY3MKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQg
PSBtX3JlbmRlcmVyLT5ub2RlKCktPnRvSW5wdXRFbGVtZW50KCk7CisgICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1fcmVu
ZGVyZXItPm5vZGUoKSk7CiAgICAgaWYgKGlucHV0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGlu
cHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDk0MDQ4KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjE1LDExICs2MTUsOCBAQAogICAgIGlmICghZG9tTm9kZSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIGlmIChkb21Ob2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKLSAgICAg
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZG9tTm9kZS0+dG9JbnB1dEVsZW1l
bnQoKTsKLSAgICAgICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzUGFzc3dv
cmRGaWVsZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZG9tTm9kZS0+
aXNIVE1MRWxlbWVudCgpICYmIGRvbU5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpICYmIHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihkb21Ob2RlKS0+aXNQYXNzd29yZEZpZWxkKCkpCisg
ICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBsb2NhdGUgdGhlIHJlbmRlcmVyLCB3aGljaCBt
dXN0IGV4aXN0IGZvciBhIHZpc2libGUgZG9tIG5vZGUKICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gZG9tTm9kZS0+cmVuZGVyZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNp
b24gOTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjIzLDcgKzMyMjMsNiBAQAogX19aTjNXVEY5SGFzaFRhYmxlSVBOU18xNkF0b21pY1N0
cmluZ0ltcGxFUzJfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTMl9FRU5TXzdQdHJIYXNoSVMyX0VF
TlNfMTBIYXNoVHJhaXRzSVMyX0VFUzhfRTRmaW5kSVMyX05TXzIySWRlbnRpdHlIYXNoVHJhbnNs
YXRvcklTMl9TMl9TNl9FRUVFTlNfMTdIYXNoVGFibGVJdGVyYXRvcklTMl9TMl9TNF9TNl9TOF9T
OF9FRVJLVF8KIF9fWk43V2ViQ29yZTExQ1NTU2VsZWN0b3I4cHNldWRvSWRFTlMwXzEwUHNldWRv
VHlwZUUKIF9fWk5LN1dlYkNvcmUyMkhUTUxGb3JtQ29udHJvbEVsZW1lbnQyMGlzRm9ybUNvbnRy
b2xFbGVtZW50RXYKLV9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE0dG9JbnB1dEVsZW1l
bnRFdgogX19aTks3V2ViQ29yZTIySFRNTEZvcm1Db250cm9sRWxlbWVudDIwaXNFbmFibGVkRm9y
bUNvbnRyb2xFdgogX19aTks3V2ViQ29yZTIySFRNTEZvcm1Db250cm9sRWxlbWVudDhkaXNhYmxl
ZEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxNXJhcmVEYXRhRm9jdXNlZEV2CkBAIC00MjQyLDcgKzQy
NDEsNiBAQAogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9ON1dlYkNv
cmUxN0FjY2Vzc2liaWxpdHlSb2xlRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNV9FRU5TXzE1
Q2FzZUZvbGRpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMxX0VF
TlNBX0lTNF9FRUVFU0JfRTNhZGRJUzFfUzRfTlNfMTdIYXNoTWFwVHJhbnNsYXRvcklTNV9TRF9T
OF9FRUVFUzJfSU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJUzFfUzVfUzdfUzhfU0RfU0JfRUViRVJL
VF9SS1QwXwogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9ON1dlYkNv
cmUxN0FjY2Vzc2liaWxpdHlSb2xlRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNV9FRU5TXzE1
Q2FzZUZvbGRpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMxX0VF
TlNBX0lTNF9FRUVFU0JfRTZsb29rdXBJUzFfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMx
X1M1X1M4X0VFRUVQUzVfUktUXwogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFp
cklTMV9ON1dlYkNvcmUxN0FjY2Vzc2liaWxpdHlSb2xlRUVOU18xOFBhaXJGaXJzdEV4dHJhY3Rv
cklTNV9FRU5TXzE1Q2FzZUZvbGRpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNo
VHJhaXRzSVMxX0VFTlNBX0lTNF9FRUVFU0JfRTZyZWhhc2hFaQotX19aTjdXZWJDb3JlNE5vZGUx
NHRvSW5wdXRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxM1Jvb3RJbmxpbmVCb3gxOWxpbmVCcmVh
a0JpZGlTdGF0dXNFdgogX19aTks3V2ViQ29yZTEzSW5saW5lRmxvd0JveDEzbGFzdExlYWZDaGls
ZEV2CiBfX1pOSzdXZWJDb3JlOUlubGluZUJveDZpc0xlYWZFdgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDYg
QEAKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0c3BlZWNoY2hh
bmdlKTsKIAotICAgIHZpcnR1YWwgSFRNTElucHV0RWxlbWVudCogdG9JbnB1dEVsZW1lbnQoKSB7
IHJldHVybiB0aGlzOyB9Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkg
Y29uc3Q7CiAKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShy
ZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCwxNiArMTI4LDE0IEBACiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlc3VsdHNEZWNvcmF0aW9uSWQs
ICgiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIikpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkZWNvcmF0aW9uSWQsICgiLXdlYmtpdC1zZWFyY2gtZGVj
b3JhdGlvbiIpKTsKICAgICBOb2RlKiBob3N0ID0gc2hhZG93QW5jZXN0b3JOb2RlKCk7Ci0gICAg
aWYgKCFob3N0KQorICAgIGlmICghaG9zdCB8fCAhaG9zdC0+aGFzVGFnTmFtZShpbnB1dFRhZykp
CiAgICAgICAgIHJldHVybiByZXN1bHRzSWQ7Ci0gICAgaWYgKEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gaG9zdC0+dG9JbnB1dEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoaW5wdXQtPm1heFJl
c3VsdHMoKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gZGVjb3JhdGlvbklkOwotICAgICAgICBp
ZiAoaW5wdXQtPm1heFJlc3VsdHMoKSA+IDApCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0c0lk
OwotICAgICAgICByZXR1cm4gcmVzdWx0c0RlY29yYXRpb25JZDsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlc3VsdHNJZDsKKworICAgIGlmIChzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaG9z
dCktPm1heFJlc3VsdHMoKSA8IDApCisgICAgICAgIHJldHVybiBkZWNvcmF0aW9uSWQ7CisgICAg
aWYgKHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihob3N0KS0+bWF4UmVzdWx0cygpID4g
MCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdHNJZDsKKyAgICByZXR1cm4gcmVzdWx0c0RlY29yYXRp
b25JZDsKIH0KIAogdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgpAQCAtNjYsNyAr
NjcsMTEgQEAKIFNsaWRlclRodW1iRWxlbWVudCogc2xpZGVyVGh1bWJFbGVtZW50T2YoTm9kZSog
bm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgU2hhZG93Um9vdCogc2hhZG93ID0gbm9k
ZS0+dG9JbnB1dEVsZW1lbnQoKS0+c2hhZG93Um9vdCgpOworICAgIGlmICghbm9kZS0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKS0+c2hhZG93Um9vdCgpOwogICAgIEFT
U0VSVChzaGFkb3cpOwogICAgIE5vZGUqIHRodW1iID0gc2hhZG93LT5maXJzdENoaWxkKCktPmZp
cnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpOwogICAgIEFTU0VSVCh0aHVtYik7CkBAIC0xMDMsNyAr
MTA4LDggQEAKIHsKICAgICAvLyBEbyBub3QgY2FzdCBub2RlKCkgdG8gU2xpZGVyVGh1bWJFbGVt
ZW50LiBUaGlzIHJlbmRlcmVyIGlzIHVzZWQgZm9yCiAgICAgLy8gVHJhY2tMaW1pdEVsZW1lbnQg
dG9vLgotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gbm9kZSgpLT5zaGFkb3dBbmNlc3Rv
ck5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBBU1NFUlQobm9kZSgpLT5zaGFkb3dBbmNl
c3Rvck5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSk7CisgICAgSFRNTElu
cHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgp
LT5zaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gc3R5bGUoKS0+
YXBwZWFyYW5jZSgpID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0IHx8IHN0eWxlKCktPmFwcGVh
cmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydDsKIAogICAgIGRvdWJsZSBmcmFj
dGlvbiA9IHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMDsKQEAgLTEzMiw3ICsxMzgsOCBAQAog
CiB2b2lkIFJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkKIHsKLSAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCktPnRvSW5wdXRFbGVt
ZW50KCk7CisgICAgQVNTRVJUKG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCktPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppbnB1dFRhZykpOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2Rl
KCkpOwogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGhhc1ZlcnRpY2FsQXBwZWFyYW5jZShpbnB1dCk7
CiAgICAgc3R5bGUoKS0+c2V0Qm94T3JpZW50KGlzVmVydGljYWwgPyBWRVJUSUNBTCA6IEhPUkla
T05UQUwpOwogICAgIC8vIFNldHMgdGhlIGNvbmNyZXRlIGhlaWdodCBpZiB0aGUgaGVpZ2h0IG9m
IHRoZSA8aW5wdXQ+IGlzIG5vdCBmaXhlZCBvciBhCkBAIC0zMTMsNyArMzIwLDggQEAKIHsKICAg
ICAvLyBPbmx5IEhUTUxJbnB1dEVsZW1lbnQgY3JlYXRlcyBTbGlkZXJUaHVtYkVsZW1lbnQgaW5z
dGFuY2VzIGFzIGl0cyBzaGFkb3cgbm9kZXMuCiAgICAgLy8gU28sIHNoYWRvd0FuY2VzdG9yTm9k
ZSgpIG11c3QgYmUgYW4gSFRNTElucHV0RWxlbWVudC4KLSAgICByZXR1cm4gc2hhZG93QW5jZXN0
b3JOb2RlKCktPnRvSW5wdXRFbGVtZW50KCk7CisgICAgQVNTRVJUKHNoYWRvd0FuY2VzdG9yTm9k
ZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29u
c3QKQEAgLTM1MSw3ICszNTksOCBAQAogVHJhY2tMaW1pdGVyRWxlbWVudCogdHJhY2tMaW1pdGVy
RWxlbWVudE9mKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwotICAgIFNoYWRvd1Jv
b3QqIHNoYWRvdyA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCktPnNoYWRvd1Jvb3QoKTsKKyAgICBB
U1NFUlQobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSk7CisgICAgU2hhZG93
Um9vdCogc2hhZG93ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpLT5zaGFk
b3dSb290KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CiAgICAgTm9kZSogbGltaXRlciA9IHNoYWRv
dy0+Zmlyc3RDaGlsZCgpLT5sYXN0Q2hpbGQoKTsKICAgICBBU1NFUlQobGltaXRlcik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsNyArNzUsNyBAQAogICAgICwgbV9zZWFyY2hQb3B1cCgwKQogewogICAgIEFTU0VSVChub2Rl
LT5pc0hUTUxFbGVtZW50KCkpOwotICAgIEFTU0VSVChub2RlLT50b0lucHV0RWxlbWVudCgpKTsK
KyAgICBBU1NFUlQobm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpOwogfQogCiBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKQpAQCAtNzg4
LDcgKzc4OCw3IEBACiAKIEhUTUxJbnB1dEVsZW1lbnQqIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6aW5wdXRFbGVtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbm9kZSgpLT50b0lucHV0
RWxlbWVudCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9k
ZSgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczOCwyNiArNzM4LDE4IEBACiAKIGJvb2wgUmVu
ZGVyVGhlbWU6OmlzQ2hlY2tlZChjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAg
aWYgKCFvLT5ub2RlKCkpCisgICAgaWYgKCFvLT5ub2RlKCkgfHwgIW8tPm5vZGUoKS0+aGFzVGFn
TmFtZShpbnB1dFRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IG8tPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBp
ZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGlu
cHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oby0+bm9kZSgpKS0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpOwog
fQogCiBib29sIFJlbmRlclRoZW1lOjppc0luZGV0ZXJtaW5hdGUoY29uc3QgUmVuZGVyT2JqZWN0
KiBvKSBjb25zdAogewotICAgIGlmICghby0+bm9kZSgpKQorICAgIGlmICghby0+bm9kZSgpIHx8
ICFvLT5ub2RlKCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBvLT5ub2RlKCktPnRvSW5w
dXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzSW5kZXRlcm1pbmF0ZSgpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oby0+bm9kZSgpKS0+aXNJbmRldGVy
bWluYXRlKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzRW5hYmxlZChjb25zdCBSZW5kZXJP
YmplY3QqIG8pIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ4LDEzICs5NDgsMTUgQEAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNT
RVJUKG1fZWxlbWVudCk7CisgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSB8
fCAhbV9lbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIEhUTUxJbnB1dEVsZW1lbnQqIHRoaXNJbnB1dEVsZW1lbnQgPSBlbGVtZW50
LT50b0lucHV0RWxlbWVudCgpOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIG90aGVySW5wdXRFbGVt
ZW50ID0gbV9lbGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQq
IHRoaXNJbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVu
dCk7CisgICAgSFRNTElucHV0RWxlbWVudCogb3RoZXJJbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4obV9lbGVtZW50KTsKICAgICAKLSAgICBpZiAoIXRoaXNJbnB1
dEVsZW1lbnQgfHwgIW90aGVySW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCiAgICAgaWYgKHRoaXNJbnB1dEVsZW1lbnQtPmlzQXV0b2ZpbGxlZCgpICE9IG90aGVySW5w
dXRFbGVtZW50LT5pc0F1dG9maWxsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICh0aGlzSW5wdXRFbGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2VkKCkgIT0gb3RoZXJJbnB1dEVs
ZW1lbnQtPnNob3VsZEFwcGVhckNoZWNrZWQoKSkKQEAgLTI3NDYsMTAgKzI3NDgsOSBAQAogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0F1dG9maWxsOiB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAg
ICAgIGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCAhZS0+aGFzVGFnTmFt
ZShpbnB1dFRhZykpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGlmIChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlLT50b0lucHV0RWxlbWVudCgp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5pc0F1dG9maWxsZWQo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KGUpLT5pc0F1dG9maWxsZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CkBAIC0yODM2LDIw
ICsyODM3LDIwIEBACiAgICAgICAgICAgICAgICAgZS0+ZG9jdW1lbnQoKS0+c2V0Q29udGFpbnNW
YWxpZGl0eVN0eWxlUnVsZXMoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gKGUtPndpbGxWYWxp
ZGF0ZSgpICYmICFlLT5pc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkpIHx8IGUtPmhhc1VuYWNj
ZXB0YWJsZVZhbHVlKCk7CiAgICAgICAgICAgICB9IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0No
ZWNrZWQ6IHsKLSAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkpCisgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9sRWxlbWVu
dCgpIHx8ICFlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggV2luSUUgYWxsb3dzIGNoZWNrZWQg
YW5kIGluZGV0ZXJtaW5hdGUgdG8gY28tZXhpc3QsIHRoZSBDU1Mgc2VsZWN0b3Igc3BlYyBzYXlz
IHRoYXQKICAgICAgICAgICAgICAgICAvLyB5b3UgY2FuJ3QgYmUgYm90aCBjaGVja2VkIGFuZCBp
bmRldGVybWluYXRlLiAgV2Ugd2lsbCBiZWhhdmUgbGlrZSBXaW5JRSBiZWhpbmQgdGhlIHNjZW5l
cyBhbmQganVzdAogICAgICAgICAgICAgICAgIC8vIG9iZXkgdGhlIENTUyBzcGVjIGhlcmUgaW4g
dGhlIHRlc3QgZm9yIG1hdGNoaW5nIHRoZSBwc2V1ZG8uCi0gICAgICAgICAgICAgICAgSFRNTElu
cHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hl
Y2tlZCgpICYmICFpbnB1dEVsZW1lbnQtPmlzSW5kZXRlcm1pbmF0ZSgpKQorICAgICAgICAgICAg
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5wdXRFbGVtZW50LT5zaG91bGRB
cHBlYXJDaGVja2VkKCkgJiYgIWlucHV0RWxlbWVudC0+aXNJbmRldGVybWluYXRlKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSW5kZXRlcm1p
bmF0ZTogewogICAgICAgICAgICAgICAgIGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCisKICNp
ZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQogICAgICAgICAgICAgICAgIGlmIChlLT5oYXNUYWdOYW1l
KHByb2dyZXNzVGFnKSkgewogICAgICAgICAgICAgICAgICAgICBIVE1MUHJvZ3Jlc3NFbGVtZW50
KiBwcm9ncmVzcyA9IHN0YXRpY19jYXN0PEhUTUxQcm9ncmVzc0VsZW1lbnQqPihlKTsKQEAgLTI4
NTgsOSArMjg1OSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICNlbmRpZgotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGUtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzSW5kZXRlcm1pbmF0ZSgp
KQorCisgICAgICAgICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpICYmIHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlKS0+aXNJbmRldGVybWluYXRlKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105698</attachid>
            <date>2011-08-30 14:30:11 -0700</date>
            <delta_ts>2011-10-25 11:33:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67175-20110830143010.patch</filename>
            <type>text/plain</type>
            <size>34186</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MTAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDgtMzAgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiB0b0lucHV0RWxl
bWVudCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzE3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdv
dCByaWQgb2YgTm9kZTo6dG9JbnB1dEVsZW1lbnQgYW5kIEhUTUxJbnB1dEVsZW1lbnQ6OnRvSW5w
dXRFbGVtZW50IGFuZCByZXBsYWNlZCB0aGVtIGJ5CisgICAgICAgIGEgZ2xvYmFsIHRvSFRNTElu
cHV0RWxlbWVudC4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNQYXNzd29yZEZpZWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc05hdGl2ZUNoZWNrYm94
T3JSYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
c0NoZWNrZWQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoQ29udHJvbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eSk6CisgICAgICAgICogZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNoZWNrZWRSYWRpb0J1dHRvbnM6OnJlbW92ZUJ1dHRvbik6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6aXNJblBh
c3N3b3JkRmllbGQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6dG9IVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2xpZGVyVGh1bWJFbGVt
ZW50T2YpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyVGh1bWI6OmxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6Omhvc3RJbnB1dCk6CisgICAgICAgIChXZWJD
b3JlOjp0cmFja0xpbWl0ZXJFbGVtZW50T2YpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6cmVw
ZWF0aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNGaWxlSW5w
dXQpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjppbnB1
dEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aXNDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjppc0luZGV0ZXJtaW5hdGUpOgorCiAyMDExLTA4LTMwICBEYXdpdCBBbGVtYXll
aHUgIDxhZGF3aXRAa2RlLm9yZz4KIAogICAgICAgICBbUXRdIFJlcGxhY2UgUUxpYnJhcnkoImxp
Ymd0ay14MTEtMi4wLnNvLjAiKSB3aXRoIFFMaWJyYXJ5KCJsaWJndGsteDExLTIuMCIsIDApCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUub3JkZXIJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMzIyMyw3ICszMjIzLDYgQEAgX19aTjNX
VEY5SGFzaFRhYmxlSVBOU18xNkF0b21pY1N0cmluZ0ltcAogX19aTjNXVEY5SGFzaFRhYmxlSVBO
U18xNkF0b21pY1N0cmluZ0ltcGxFUzJfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTMl9FRU5TXzdQ
dHJIYXNoSVMyX0VFTlNfMTBIYXNoVHJhaXRzSVMyX0VFUzhfRTRmaW5kSVMyX05TXzIySWRlbnRp
dHlIYXNoVHJhbnNsYXRvcklTMl9TMl9TNl9FRUVFTlNfMTdIYXNoVGFibGVJdGVyYXRvcklTMl9T
Ml9TNF9TNl9TOF9TOF9FRVJLVF8KIF9fWk43V2ViQ29yZTExQ1NTU2VsZWN0b3I4cHNldWRvSWRF
TlMwXzEwUHNldWRvVHlwZUUKIF9fWk5LN1dlYkNvcmUyMkhUTUxGb3JtQ29udHJvbEVsZW1lbnQy
MGlzRm9ybUNvbnRyb2xFbGVtZW50RXYKLV9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE0
dG9JbnB1dEVsZW1lbnRFdgogX19aTks3V2ViQ29yZTIySFRNTEZvcm1Db250cm9sRWxlbWVudDIw
aXNFbmFibGVkRm9ybUNvbnRyb2xFdgogX19aTks3V2ViQ29yZTIySFRNTEZvcm1Db250cm9sRWxl
bWVudDhkaXNhYmxlZEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxNXJhcmVEYXRhRm9jdXNlZEV2CkBA
IC00MjQyLDcgKzQyNDEsNiBAQCBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VTdDRwYWly
SVMxCiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VTdDRwYWlySVMxX043V2ViQ29yZTE3
QWNjZXNzaWJpbGl0eVJvbGVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfMTVDYXNl
Rm9sZGluZ0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOU0Ff
SVM0X0VFRUVTQl9FM2FkZElTMV9TNF9OU18xN0hhc2hNYXBUcmFuc2xhdG9ySVM1X1NEX1M4X0VF
RUVTMl9JTlNfMTdIYXNoVGFibGVJdGVyYXRvcklTMV9TNV9TN19TOF9TRF9TQl9FRWJFUktUX1JL
VDBfCiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VTdDRwYWlySVMxX043V2ViQ29yZTE3
QWNjZXNzaWJpbGl0eVJvbGVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfMTVDYXNl
Rm9sZGluZ0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOU0Ff
SVM0X0VFRUVTQl9FNmxvb2t1cElTMV9OU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzFfUzVf
UzhfRUVFRVBTNV9SS1RfCiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VTdDRwYWlySVMx
X043V2ViQ29yZTE3QWNjZXNzaWJpbGl0eVJvbGVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1
X0VFTlNfMTVDYXNlRm9sZGluZ0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFp
dHNJUzFfRUVOU0FfSVM0X0VFRUVTQl9FNnJlaGFzaEVpCi1fX1pON1dlYkNvcmU0Tm9kZTE0dG9J
bnB1dEVsZW1lbnRFdgogX19aTks3V2ViQ29yZTEzUm9vdElubGluZUJveDE5bGluZUJyZWFrQmlk
aVN0YXR1c0V2CiBfX1pOSzdXZWJDb3JlMTNJbmxpbmVGbG93Qm94MTNsYXN0TGVhZkNoaWxkRXYK
IF9fWk5LN1dlYkNvcmU5SW5saW5lQm94NmlzTGVhZkV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjE1LDExICs2MTUsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJE
YXRhRm9yVmlzCiAgICAgaWYgKCFkb21Ob2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
aWYgKGRvbU5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQgPSBkb21Ob2RlLT50b0lucHV0RWxlbWVudCgpOwotICAgICAgICBpZiAo
aW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkb21Ob2RlLT5pc0hUTUxFbGVtZW50KCkgJiYg
ZG9tTm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykgJiYgdG9IVE1MSW5wdXRFbGVtZW50KGRvbU5v
ZGUpLT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIGxv
Y2F0ZSB0aGUgcmVuZGVyZXIsIHdoaWNoIG11c3QgZXhpc3QgZm9yIGEgdmlzaWJsZSBkb20gbm9k
ZQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBkb21Ob2RlLT5yZW5kZXJlcigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5NCwxNiArNDk0LDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNBdHRhY2gKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNQYXNzd29yZEZpZWxk
KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZW5kZXJlcik7Ci0gICAgaWYgKCFtX3JlbmRlcmVy
LT5ub2RlKCkgfHwgIW1fcmVuZGVyZXItPm5vZGUoKS0+aXNIVE1MRWxlbWVudCgpKQorICAgIGlm
ICghbV9yZW5kZXJlci0+bm9kZSgpIHx8ICFtX3JlbmRlcmVyLT5ub2RlKCktPmhhc1RhZ05hbWUo
aW5wdXRUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGFyaWFSb2xlQXR0cmli
dXRlKCkgIT0gVW5rbm93blJvbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG1fcmVuZGVyZXItPm5vZGUoKS0+dG9JbnB1dEVs
ZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCk7CisgICAgcmV0dXJu
IHRvSFRNTElucHV0RWxlbWVudChtX3JlbmRlcmVyLT5ub2RlKCkpLT5pc1Bhc3N3b3JkRmllbGQo
KTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2Fk
QnV0dG9uKCkgY29uc3QKQEAgLTU4OSwyNiArNTg1LDIwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNQcmVzc2UKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNJ
bmRldGVybWluYXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZW5kZXJlcik7Ci0gICAgaWYg
KCFtX3JlbmRlcmVyLT5ub2RlKCkpCisgICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1f
cmVuZGVyZXItPm5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG1fcmVuZGVyZXIt
Pm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNJbmRldGVybWlu
YXRlKCk7CisgICAgcmV0dXJuIHRvSFRNTElucHV0RWxlbWVudChtX3JlbmRlcmVyLT5ub2RlKCkp
LT5pc0luZGV0ZXJtaW5hdGUoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc05hdGl2ZUNoZWNrYm94T3JSYWRpbygpIGNvbnN0CiB7Ci0gICAgTm9kZSogZWxlbWVudE5v
ZGUgPSBub2RlKCk7Ci0gICAgaWYgKGVsZW1lbnROb2RlKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0ID0gZWxlbWVudE5vZGUtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgICAgIGlm
IChpbnB1dCkKLSAgICAgICAgICAgIHJldHVybiBpbnB1dC0+aXNDaGVja2JveCgpIHx8IGlucHV0
LT5pc1JhZGlvQnV0dG9uKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICBB
U1NFUlQobV9yZW5kZXJlcik7CisgICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1fcmVu
ZGVyZXItPm5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KG1f
cmVuZGVyZXItPm5vZGUoKSk7CisgICAgcmV0dXJuIGlucHV0LT5pc0NoZWNrYm94KCkgfHwgaW5w
dXQtPmlzUmFkaW9CdXR0b24oKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNDaGVja2VkKCkgY29uc3QKQEAgLTYxOCw5ICs2MDgsOCBAQCBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzQ2hlY2tlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEZpcnN0IHRlc3QgZm9yIG5hdGl2ZSBjaGVja2VkbmVzcyBzZW1hbnRpY3MKLSAgICBIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBtX3JlbmRlcmVyLT5ub2RlKCktPnRvSW5wdXRF
bGVtZW50KCk7Ci0gICAgaWYgKGlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGlucHV0RWxl
bWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpOworICAgIGlmIChtX3JlbmRlcmVyLT5ub2RlKCkt
Pmhhc1RhZ05hbWUoaW5wdXRUYWcpKQorICAgICAgICByZXR1cm4gdG9IVE1MSW5wdXRFbGVtZW50
KG1fcmVuZGVyZXItPm5vZGUoKSktPnNob3VsZEFwcGVhckNoZWNrZWQoKTsKIAogICAgIC8vIEVs
c2UsIGlmIHRoaXMgaXMgYW4gQVJJQSBjaGVja2JveCBvciByYWRpbywgcmVzcGVjdCB0aGUgYXJp
YS1jaGVja2VkIGF0dHJpYnV0ZQogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlID0gYXJp
YVJvbGVBdHRyaWJ1dGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDgsMTMgKzk0OCwxNSBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICNlbmRpZgotICAgIAotICAgIEhUTUxJbnB1dEVsZW1lbnQqIHRoaXNJbnB1dEVsZW1lbnQg
PSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIG90aGVy
SW5wdXRFbGVtZW50ID0gbV9lbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIAotICAgIGlm
ICghdGhpc0lucHV0RWxlbWVudCB8fCAhb3RoZXJJbnB1dEVsZW1lbnQpCisKKyAgICBBU1NFUlQo
ZWxlbWVudCk7CisgICAgQVNTRVJUKG1fZWxlbWVudCk7CisgICAgaWYgKCFlbGVtZW50LT5oYXNU
YWdOYW1lKGlucHV0VGFnKSB8fCAhbV9lbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAorICAgIEhUTUxJbnB1dEVsZW1lbnQqIHRoaXNJbnB1
dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCk7CisgICAgSFRNTElucHV0RWxl
bWVudCogb3RoZXJJbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KTsK
KyAgICAKICAgICBpZiAodGhpc0lucHV0RWxlbWVudC0+aXNBdXRvZmlsbGVkKCkgIT0gb3RoZXJJ
bnB1dEVsZW1lbnQtPmlzQXV0b2ZpbGxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKHRoaXNJbnB1dEVsZW1lbnQtPnNob3VsZEFwcGVhckNoZWNrZWQoKSAhPSBvdGhlcklucHV0
RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpKQpAQCAtMTg4Miw3ICsxODg0LDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZQogICAgIGlmIChlICYmIGUtPmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgc3R5bGUtPmZvbnRTaXplKCkgPj0gMTEpIHsKICAgICAg
ICAgLy8gRG9uJ3QgYXBwbHkgaW50cmluc2ljIG1hcmdpbnMgdG8gaW1hZ2UgYnV0dG9ucy4gIFRo
ZSBkZXNpZ25lciBrbm93cyBob3cgYmlnIHRoZSBpbWFnZXMgYXJlLAogICAgICAgICAvLyBzbyB3
ZSBoYXZlIHRvIHRyZWF0IGFsbCBpbWFnZSBidXR0b25zIGFzIHRob3VnaCB0aGV5IHdlcmUgZXhw
bGljaXRseSBzaXplZC4KLSAgICAgICAgaWYgKCFlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSB8fCAh
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGUpLT5pc0ltYWdlQnV0dG9uKCkpCisgICAg
ICAgIGlmICghZS0+aGFzVGFnTmFtZShpbnB1dFRhZykgfHwgIXRvSFRNTElucHV0RWxlbWVudChl
KS0+aXNJbWFnZUJ1dHRvbigpKQogICAgICAgICAgICAgYWRkSW50cmluc2ljTWFyZ2lucyhzdHls
ZSk7CiAgICAgfQogCkBAIC0yNzQ2LDEwICsyNzQ4LDkgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0F1dG9maWxsOiB7Ci0gICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9s
RWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVs
ZW1lbnQoKSB8fCAhZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGlmIChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQgPSBlLT50b0lucHV0RWxlbWVudCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5w
dXRFbGVtZW50LT5pc0F1dG9maWxsZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9IVE1M
SW5wdXRFbGVtZW50KGUpLT5pc0F1dG9maWxsZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6
CkBAIC0yODM2LDIwICsyODM3LDIwIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JD
aGVja2VyOjoKICAgICAgICAgICAgICAgICBlLT5kb2N1bWVudCgpLT5zZXRDb250YWluc1ZhbGlk
aXR5U3R5bGVSdWxlcygpOwogICAgICAgICAgICAgICAgIHJldHVybiAoZS0+d2lsbFZhbGlkYXRl
KCkgJiYgIWUtPmlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSkgfHwgZS0+aGFzVW5hY2NlcHRh
YmxlVmFsdWUoKTsKICAgICAgICAgICAgIH0gY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tl
ZDogewotICAgICAgICAgICAgICAgIGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVsZW1lbnQo
KSkKKyAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkg
fHwgIWUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAvLyBFdmVuIHRob3VnaCBXaW5JRSBhbGxvd3MgY2hlY2tlZCBhbmQg
aW5kZXRlcm1pbmF0ZSB0byBjby1leGlzdCwgdGhlIENTUyBzZWxlY3RvciBzcGVjIHNheXMgdGhh
dAogICAgICAgICAgICAgICAgIC8vIHlvdSBjYW4ndCBiZSBib3RoIGNoZWNrZWQgYW5kIGluZGV0
ZXJtaW5hdGUuICBXZSB3aWxsIGJlaGF2ZSBsaWtlIFdpbklFIGJlaGluZCB0aGUgc2NlbmVzIGFu
ZCBqdXN0CiAgICAgICAgICAgICAgICAgLy8gb2JleSB0aGUgQ1NTIHNwZWMgaGVyZSBpbiB0aGUg
dGVzdCBmb3IgbWF0Y2hpbmcgdGhlIHBzZXVkby4KLSAgICAgICAgICAgICAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlLT50b0lucHV0RWxlbWVudCgpOwotICAgICAgICAgICAg
ICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2Vk
KCkgJiYgIWlucHV0RWxlbWVudC0+aXNJbmRldGVybWluYXRlKCkpCisgICAgICAgICAgICAgICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50KGUpOwor
ICAgICAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQtPnNob3VsZEFwcGVhckNoZWNrZWQoKSAm
JiAhaW5wdXRFbGVtZW50LT5pc0luZGV0ZXJtaW5hdGUoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9JbmRldGVybWluYXRlOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKKwogI2lmIEVOQUJMRShQUk9HUkVT
U19UQUcpCiAgICAgICAgICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUocHJvZ3Jlc3NUYWcpKSB7
CiAgICAgICAgICAgICAgICAgICAgIEhUTUxQcm9ncmVzc0VsZW1lbnQqIHByb2dyZXNzID0gc3Rh
dGljX2Nhc3Q8SFRNTFByb2dyZXNzRWxlbWVudCo+KGUpOwpAQCAtMjg1OCw5ICsyODU5LDggQEAg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlLT50b0lu
cHV0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRF
bGVtZW50LT5pc0luZGV0ZXJtaW5hdGUoKSkKKworICAgICAgICAgICAgICAgIGlmIChlLT5oYXNU
YWdOYW1lKGlucHV0VGFnKSAmJiB0b0hUTUxJbnB1dEVsZW1lbnQoZSktPmlzSW5kZXRlcm1pbmF0
ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ4MzMsNyArNDgzMyw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRG
b3JtYXQ6CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBtX2VsZW1lbnQtPmhhc1RhZ05h
bWUoV2ViQ29yZTo6aW5wdXRUYWcpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWFzayA9IHByaW1p
dGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KG1fZWxlbWVudCktPnNldFdhcElucHV0Rm9ybWF0KG1hc2spOworICAg
ICAgICAgICAgdG9IVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCktPnNldFdhcElucHV0Rm9ybWF0
KG1hc2spOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAgdm9pZCBDaGVja2VkUmFkaW9CdXR0b25zOjphZGRCdXR0b24oSFRNTAog
ICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRF
bGVtZW50Kj4oZWxlbWVudCk7CisgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0g
dG9IVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpOwogCiAgICAgLy8gV2Ugb25seSB0cmFjayBjaGVj
a2VkIGJ1dHRvbnMuCiAgICAgaWYgKCFpbnB1dEVsZW1lbnQtPmNoZWNrZWQoKSkKQEAgLTc3LDcg
Kzc3LDcgQEAgdm9pZCBDaGVja2VkUmFkaW9CdXR0b25zOjpyZW1vdmVCdXR0b24oSAogICAgIGlm
IChpdCA9PSBtX25hbWVUb0NoZWNrZWRSYWRpb0J1dHRvbk1hcC0+ZW5kKCkgfHwgaXQtPnNlY29u
ZCAhPSBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChpbnB1dEVsZW1lbnQsIGlucHV0RWxlbWVudCk7CiAgICAgQVNTRVJU
KGlucHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpKTsKICAgICBBU1NFUlQoZWxlbWVu
dC0+aXNSYWRpb0J1dHRvbigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDk0MDQ4
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nzcs
MTUgKzU3Nyw2IEBAIHZvaWQgTm9kZTo6c2V0U2hhZG93SG9zdChFbGVtZW50KiBob3N0KQogICAg
IHNldFBhcmVudChob3N0KTsKIH0KIAotSFRNTElucHV0RWxlbWVudCogTm9kZTo6dG9JbnB1dEVs
ZW1lbnQoKQotewotICAgIC8vIElmIG9uZSBvZiB0aGUgYmVsb3cgQVNTRVJUcyB0cmlnZ2VyLCB5
b3UgYXJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbgotICAgIC8vIGRpcmVjdGx5IG9yIGluZGlyZWN0
bHkgZnJvbSBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3Igb2YgdGhpcyBvYmplY3QuCi0gICAg
Ly8gRG9uJ3QgZG8gdGhpcyEKLSAgICBBU1NFUlQoIShpc0hUTUxFbGVtZW50KCkgJiYgaGFzVGFn
TmFtZShpbnB1dFRhZykpKTsKLSAgICByZXR1cm4gMDsKLX0KLQogc2hvcnQgTm9kZTo6dGFiSW5k
ZXgoKSBjb25zdAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+dGFi
SW5kZXgoKSA6IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMzLDggKzUzMyw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gdGhpczsgfQogCi0g
ICAgdmlydHVhbCBIVE1MSW5wdXRFbGVtZW50KiB0b0lucHV0RWxlbWVudCgpOwotCiAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZp
c2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTIyLDcgKzE1MjIsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9u
OjpzZXRTZWxlY3RlZFJhbmdlKFJhCiBib29sIEZyYW1lU2VsZWN0aW9uOjppc0luUGFzc3dvcmRG
aWVsZCgpIGNvbnN0CiB7CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRDb250
cm9sID0gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKHN0YXJ0KCkpOwotICAgIHJldHVybiB0ZXh0
Q29udHJvbCAmJiB0ZXh0Q29udHJvbC0+aGFzVGFnTmFtZShpbnB1dFRhZykgJiYgc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KHRleHRDb250cm9sKS0+aXNQYXNzd29yZEZpZWxkKCk7Cisg
ICAgcmV0dXJuIHRleHRDb250cm9sICYmIHRleHRDb250cm9sLT5oYXNUYWdOYW1lKGlucHV0VGFn
KSAmJiB0b0hUTUxJbnB1dEVsZW1lbnQodGV4dENvbnRyb2wpLT5pc1Bhc3N3b3JkRmllbGQoKTsK
IH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCShyZXZpc2lvbiA5NDA0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWZuZGVmIEhUTUxJbnB1dEVsZW1lbnRfaAogI2RlZmlu
ZSBIVE1MSW5wdXRFbGVtZW50X2gKIAorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQyLDggKzQzLDYgQEAgcHVibGljOgogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih3ZWJraXRzcGVlY2hjaGFuZ2UpOwogCi0gICAgdmlydHVhbCBIVE1MSW5wdXRFbGVtZW50
KiB0b0lucHV0RWxlbWVudCgpIHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRBdXRvY29tcGxldGUoKSBjb25zdDsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCkBA
IC0zNTcsNiArMzU2LDEyIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPElucHV0VHlwZT4gbV9pbnB1
dFR5cGU7CiB9OwogCitpbmxpbmUgSFRNTElucHV0RWxlbWVudCogdG9IVE1MSW5wdXRFbGVtZW50
KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjppbnB1dFRhZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MSW5w
dXRFbGVtZW50Kj4obm9kZSk7Cit9CisKIH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guaCIKQEAgLTY2LDcgKzY3LDggQEAgaW5saW5lIHN0YXRpYyBib29sIGhhc1ZlcnRp
Y2FsQXBwZWFyYW5jZQogU2xpZGVyVGh1bWJFbGVtZW50KiBzbGlkZXJUaHVtYkVsZW1lbnRPZihO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cg
PSBub2RlLT50b0lucHV0RWxlbWVudCgpLT5zaGFkb3dSb290KCk7CisgICAgQVNTRVJUKG5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpOworICAgIFNoYWRvd1Jvb3QqIHNoYWRv
dyA9IHRvSFRNTElucHV0RWxlbWVudChub2RlKS0+c2hhZG93Um9vdCgpOwogICAgIEFTU0VSVChz
aGFkb3cpOwogICAgIE5vZGUqIHRodW1iID0gc2hhZG93LT5maXJzdENoaWxkKCktPmZpcnN0Q2hp
bGQoKS0+Zmlyc3RDaGlsZCgpOwogICAgIEFTU0VSVCh0aHVtYik7CkBAIC0xMDMsNyArMTA1LDgg
QEAgdm9pZCBSZW5kZXJTbGlkZXJUaHVtYjo6bGF5b3V0KCkKIHsKICAgICAvLyBEbyBub3QgY2Fz
dCBub2RlKCkgdG8gU2xpZGVyVGh1bWJFbGVtZW50LiBUaGlzIHJlbmRlcmVyIGlzIHVzZWQgZm9y
CiAgICAgLy8gVHJhY2tMaW1pdEVsZW1lbnQgdG9vLgotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gbm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAg
ICBBU1NFUlQobm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmlucHV0VGFnKSk7CisgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSB0b0hUTUxJbnB1
dEVsZW1lbnQobm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgYm9vbCBpc1ZlcnRp
Y2FsID0gc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0IHx8
IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydDsKIAog
ICAgIGRvdWJsZSBmcmFjdGlvbiA9IHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMDsKQEAgLTEz
Miw3ICsxMzUsOCBAQCBwcml2YXRlOgogCiB2b2lkIFJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5
b3V0KCkKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5j
ZXN0b3JOb2RlKCktPnRvSW5wdXRFbGVtZW50KCk7CisgICAgQVNTRVJUKG5vZGUoKS0+c2hhZG93
QW5jZXN0b3JOb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpOworICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KG5vZGUoKS0+c2hhZG93
QW5jZXN0b3JOb2RlKCkpOwogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGhhc1ZlcnRpY2FsQXBwZWFy
YW5jZShpbnB1dCk7CiAgICAgc3R5bGUoKS0+c2V0Qm94T3JpZW50KGlzVmVydGljYWwgPyBWRVJU
SUNBTCA6IEhPUklaT05UQUwpOwogICAgIC8vIFNldHMgdGhlIGNvbmNyZXRlIGhlaWdodCBpZiB0
aGUgaGVpZ2h0IG9mIHRoZSA8aW5wdXQ+IGlzIG5vdCBmaXhlZCBvciBhCkBAIC0zMTMsNyArMzE3
LDggQEAgSFRNTElucHV0RWxlbWVudCogU2xpZGVyVGh1bWJFbGVtZW50OjpobwogewogICAgIC8v
IE9ubHkgSFRNTElucHV0RWxlbWVudCBjcmVhdGVzIFNsaWRlclRodW1iRWxlbWVudCBpbnN0YW5j
ZXMgYXMgaXRzIHNoYWRvdyBub2Rlcy4KICAgICAvLyBTbywgc2hhZG93QW5jZXN0b3JOb2RlKCkg
bXVzdCBiZSBhbiBIVE1MSW5wdXRFbGVtZW50LgotICAgIHJldHVybiBzaGFkb3dBbmNlc3Rvck5v
ZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBBU1NFUlQoc2hhZG93QW5jZXN0b3JOb2RlKCkt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpOworICAgIHJldHVybiB0b0hUTUxJbnB1
dEVsZW1lbnQoc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFNsaWRlclRodW1iRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtMzUxLDcgKzM1
Niw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVHJhY2tMaW1pdGVyRWxlbWVudDoKIFRyYWNrTGlt
aXRlckVsZW1lbnQqIHRyYWNrTGltaXRlckVsZW1lbnRPZihOb2RlKiBub2RlKQogewogICAgIEFT
U0VSVChub2RlKTsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lucHV0RWxlbWVu
dCgpLT5zaGFkb3dSb290KCk7CisgICAgQVNTRVJUKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjppbnB1dFRhZykpOworICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IHRvSFRNTElucHV0RWxlbWVu
dChub2RlKS0+c2hhZG93Um9vdCgpOwogICAgIEFTU0VSVChzaGFkb3cpOwogICAgIE5vZGUqIGxp
bWl0ZXIgPSBzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+bGFzdENoaWxkKCk7CiAgICAgQVNTRVJUKGxp
bWl0ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOCwyMiArMTI4LDIwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU2VhcmNoRmll
bGRSZXN1bHRzQnUKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVzdWx0
c0RlY29yYXRpb25JZCwgKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iKSk7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRlY29yYXRpb25JZCwgKCItd2Vi
a2l0LXNlYXJjaC1kZWNvcmF0aW9uIikpOwogICAgIE5vZGUqIGhvc3QgPSBzaGFkb3dBbmNlc3Rv
ck5vZGUoKTsKLSAgICBpZiAoIWhvc3QpCisgICAgaWYgKCFob3N0IHx8ICFob3N0LT5oYXNUYWdO
YW1lKGlucHV0VGFnKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHNJZDsKLSAgICBpZiAoSFRNTElu
cHV0RWxlbWVudCogaW5wdXQgPSBob3N0LT50b0lucHV0RWxlbWVudCgpKSB7Ci0gICAgICAgIGlm
IChpbnB1dC0+bWF4UmVzdWx0cygpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBkZWNvcmF0aW9u
SWQ7Ci0gICAgICAgIGlmIChpbnB1dC0+bWF4UmVzdWx0cygpID4gMCkKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHRzSWQ7Ci0gICAgICAgIHJldHVybiByZXN1bHRzRGVjb3JhdGlvbklkOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0c0lkOworCisgICAgaWYgKHRvSFRNTElucHV0RWxlbWVudCho
b3N0KS0+bWF4UmVzdWx0cygpIDwgMCkKKyAgICAgICAgcmV0dXJuIGRlY29yYXRpb25JZDsKKyAg
ICBpZiAodG9IVE1MSW5wdXRFbGVtZW50KGhvc3QpLT5tYXhSZXN1bHRzKCkgPiAwKQorICAgICAg
ICByZXR1cm4gcmVzdWx0c0lkOworICAgIHJldHVybiByZXN1bHRzRGVjb3JhdGlvbklkOwogfQog
CiB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQogewogICAgIC8vIE9uIG1vdXNlZG93biwgYnJpbmcgdXAgYSBtZW51
LCBpZiBuZWVkZWQKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CisgICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoc2hhZG93QW5jZXN0b3JOb2RlKCkpOwog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBl
dmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+
YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAgICAg
ICAgaW5wdXQtPnNlbGVjdCgpOwpAQCAtMTkxLDcgKzE4OSw3IEBAIHZvaWQgU2VhcmNoRmllbGRD
YW5jZWxCdXR0b25FbGVtZW50OjpkZXQKIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICAvLyBJZiB0aGUg
ZWxlbWVudCBpcyB2aXNpYmxlLCBvbiBtb3VzZXVwLCBjbGVhciB0aGUgdmFsdWUsIGFuZCBzZXQg
c2VsZWN0aW9uCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0KHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSkpOworICAgIFJlZlB0cjxI
VE1MSW5wdXRFbGVtZW50PiBpbnB1dCh0b0hUTUxJbnB1dEVsZW1lbnQoc2hhZG93QW5jZXN0b3JO
b2RlKCkpKTsKICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlG
b3JtQ29udHJvbCgpKSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAg
ICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CkBA
IC0yNzEsNyArMjY5LDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IGlucHV0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUo
KSkpOworICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCh0b0hUTUxJbnB1dEVsZW1l
bnQoc2hhZG93QW5jZXN0b3JOb2RlKCkpKTsKICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwg
aW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRl
ZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihldmVudCk7CkBAIC0zNDIsNyArMzQwLDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVu
dDo6c3RvcFJlcGVhdGluZ1RpbQogCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpyZXBlYXRpbmdU
aW1lckZpcmVkKFRpbWVyPFNwaW5CdXR0b25FbGVtZW50PiopCiB7Ci0gICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0
b3JOb2RlKCkpOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVt
ZW50KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwg
aW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8g
T24gTWFjIE9TLCBOU1N0ZXBwZXIgdXBkYXRlcyB0aGUgdmFsdWUgZm9yIHRoZSBidXR0b24gdW5k
ZXIgdGhlIG1vdXNlCkBAIC00MDEsNyArMzk5LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGVmYQogICAgIC8vIFRoZSBjYWxsIHRvIGZvY3VzKCkgYmVsb3cgZGlzcGF0
Y2hlcyBhIGZvY3VzIGV2ZW50LCBhbmQgYW4gZXZlbnQgaGFuZGxlciBpbiB0aGUgcGFnZSBtaWdo
dAogICAgIC8vIHJlbW92ZSB0aGUgaW5wdXQgZWxlbWVudCBmcm9tIERPTS4gVG8gbWFrZSBzdXJl
IGl0IHJlbWFpbnMgdmFsaWQgdW50aWwgd2UgZmluaXNoIG91ciB3b3JrCiAgICAgLy8gaGVyZSwg
d2UgdGFrZSBhIHRlbXBvcmFyeSByZWZlcmVuY2UuCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1l
bnQ+IGlucHV0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5v
ZGUoKSkpOworICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCh0b0hUTUxJbnB1dEVs
ZW1lbnQoc2hhZG93QW5jZXN0b3JOb2RlKCkpKTsKIAogICAgIGlmIChpbnB1dC0+ZGlzYWJsZWQo
KSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkpIHsKICAgICAgICAgaWYgKCFldmVu
dC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQ4Niw3ICs0ODQsNyBAQCB2b2lkIElucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50OjpzZXRSCiAgICAgLy8gVGhlIGNhbGwgdG8gc2V0VmFsdWUoKSBi
ZWxvdyBkaXNwYXRjaGVzIGFuIGV2ZW50LCBhbmQgYW4gZXZlbnQgaGFuZGxlciBpbiB0aGUgcGFn
ZSBtaWdodAogICAgIC8vIHJlbW92ZSB0aGUgaW5wdXQgZWxlbWVudCBmcm9tIERPTS4gVG8gbWFr
ZSBzdXJlIGl0IHJlbWFpbnMgdmFsaWQgdW50aWwgd2UgZmluaXNoIG91ciB3b3JrCiAgICAgLy8g
aGVyZSwgd2UgdGFrZSBhIHRlbXBvcmFyeSByZWZlcmVuY2UuCi0gICAgUmVmUHRyPEhUTUxJbnB1
dEVsZW1lbnQ+IGlucHV0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNl
c3Rvck5vZGUoKSkpOworICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCh0b0hUTUxJ
bnB1dEVsZW1lbnQoc2hhZG93QW5jZXN0b3JOb2RlKCkpKTsKICAgICBpZiAoaW5wdXQtPmRpc2Fi
bGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5
NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTQsMTQgKzI1NCwyMSBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVy
OjpkcmFnRW50ZXJlCiBzdGF0aWMgSFRNTElucHV0RWxlbWVudCogYXNGaWxlSW5wdXQoTm9kZSog
bm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CisgICAgCisgICAgaWYgKCFub2RlLT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQorICAgICAgICByZXR1cm4gMDsKIAotICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7CisgICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50KG5vZGUp
OwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGJ1dHRvbiBpbnNpZGUgb2YgdGhlIGEgZmlsZSBpbnB1
dCwgbW92ZSB1cCB0byB0aGUgZmlsZSBpbnB1dC4KLSAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlu
cHV0RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+
aXNTaGFkb3dSb290KCkpCi0gICAgICAgIGlucHV0RWxlbWVudCA9IGlucHV0RWxlbWVudC0+dHJl
ZVNjb3BlKCktPnNoYWRvd0hvc3QoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoaW5wdXRF
bGVtZW50LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5pc1No
YWRvd1Jvb3QoKSkgeworICAgICAgICBub2RlID0gaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+
c2hhZG93SG9zdCgpOworICAgICAgICBpZiAoIW5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpp
bnB1dFRhZykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaW5wdXRFbGVtZW50ID0g
dG9IVE1MSW5wdXRFbGVtZW50KG5vZGUpOworICAgIH0KIAotICAgIHJldHVybiBpbnB1dEVsZW1l
bnQgJiYgaW5wdXRFbGVtZW50LT5pc0ZpbGVVcGxvYWQoKSA/IGlucHV0RWxlbWVudCA6IDA7Cisg
ICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNGaWxlVXBsb2FkKCkgPyBpbnB1dEVsZW1lbnQgOiAw
OwogfQogCiAvLyBUaGlzIGNhbiByZXR1cm4gbnVsbCBpZiBhbiBlbXB0eSBkb2N1bWVudCBpcyBs
b2FkZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5jcHAJKHJldmlzaW9uIDk0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1JlbmRlclRoZW1lRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWludElu
Zm8uaCIKQEAgLTMxMCw3ICszMTEsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRoZW1l
UGFydChSZW5kCiAgICAgLy8gdHJlYXRtZW50LCBtb3ZlIHRoZW0gdG8gc3BlY2lhbCBmdW5jdGlv
bnMuCiAgICAgaWYgKHR5cGUgPT0gU2xpZGVyVmVydGljYWwgfHwgdHlwZSA9PSBTbGlkZXJIb3Jp
em9udGFsKSB7CiAgICAgICAgIFJlbmRlclNsaWRlciogcmVuZGVyU2xpZGVyID0gdG9SZW5kZXJT
bGlkZXIob2JqZWN0KTsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSByZW5kZXJT
bGlkZXItPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICAgICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXQgPSByZW5kZXJTbGlkZXItPm5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omlu
cHV0VGFnKSA/IHRvSFRNTElucHV0RWxlbWVudChyZW5kZXJTbGlkZXItPm5vZGUoKSkgOiAwOwog
ICAgICAgICBFZGplX01lc3NhZ2VfRmxvYXRfU2V0KiBtc2c7CiAgICAgICAgIGRvdWJsZSB2YWx1
ZVJhbmdlID0gaW5wdXQtPm1heGltdW0oKSAtIGlucHV0LT5taW5pbXVtKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dEMKICAgICAs
IG1fc2VhcmNoUG9wdXAoMCkKIHsKICAgICBBU1NFUlQobm9kZS0+aXNIVE1MRWxlbWVudCgpKTsK
LSAgICBBU1NFUlQobm9kZS0+dG9JbnB1dEVsZW1lbnQoKSk7CisgICAgQVNTRVJUKG5vZGUtPmhh
c1RhZ05hbWUoaW5wdXRUYWcpKTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCkKQEAgLTc4OCw3ICs3ODgsNyBAQCBQYXNzUmVm
UHRyPFNjcm9sbGJhcj4gUmVuZGVyVGV4dENvbnRyb2xTCiAKIEhUTUxJbnB1dEVsZW1lbnQqIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6aW5wdXRFbGVtZW50KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbm9kZSgpLT50b0lucHV0RWxlbWVudCgpOworICAgIHJldHVybiB0b0hUTUxJbnB1dEVs
ZW1lbnQobm9kZSgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczOCwyNiArNzM4LDE4IEBAIGJv
b2wgUmVuZGVyVGhlbWU6OmlzQWN0aXZlKGNvbnN0IFJlbmRlck8KIAogYm9vbCBSZW5kZXJUaGVt
ZTo6aXNDaGVja2VkKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKIHsKLSAgICBpZiAoIW8t
Pm5vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gby0+bm9kZSgpLT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5w
dXRFbGVtZW50KQorICAgIGlmICghby0+bm9kZSgpIHx8ICFvLT5ub2RlKCktPmhhc1RhZ05hbWUo
aW5wdXRUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gaW5wdXRFbGVt
ZW50LT5zaG91bGRBcHBlYXJDaGVja2VkKCk7CisgICAgcmV0dXJuIHRvSFRNTElucHV0RWxlbWVu
dChvLT5ub2RlKCkpLT5zaG91bGRBcHBlYXJDaGVja2VkKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhl
bWU6OmlzSW5kZXRlcm1pbmF0ZShjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAg
aWYgKCFvLT5ub2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IG8tPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBp
ZiAoIWlucHV0RWxlbWVudCkKKyAgICBpZiAoIW8tPm5vZGUoKSB8fCAhby0+bm9kZSgpLT5oYXNU
YWdOYW1lKGlucHV0VGFnKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGlu
cHV0RWxlbWVudC0+aXNJbmRldGVybWluYXRlKCk7CisgICAgcmV0dXJuIHRvSFRNTElucHV0RWxl
bWVudChvLT5ub2RlKCkpLT5pc0luZGV0ZXJtaW5hdGUoKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVt
ZTo6aXNFbmFibGVkKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDEwMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMzAg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiB0
b0lucHV0RWxlbWVudCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NzE3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3JjL1dlYklucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vi
SW5wdXRFbGVtZW50KToKKwogMjAxMS0wOC0zMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQWRkIG51bGwgY2hlY2tzIGZvciBkb2N1bWVudCgp
LT5sb2FkZXIoKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5NDA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw4ICsxNzMsOCBA
QCBXZWJJbnB1dEVsZW1lbnQ6Om9wZXJhdG9yIFBhc3NSZWZQdHI8SFRNCiAKIFdlYklucHV0RWxl
bWVudCogdG9XZWJJbnB1dEVsZW1lbnQoV2ViRWxlbWVudCogd2ViRWxlbWVudCkKIHsKLSAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB3ZWJFbGVtZW50LT51bndyYXA8RWxlbWVu
dD4oKS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKKyAgICBFbGVt
ZW50KiBlbGVtZW50ID0gd2ViRWxlbWVudC0+dW53cmFwPEVsZW1lbnQ+KCk7CisgICAgaWYgKCFl
bGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJJbnB1dEVsZW1lbnQqPih3ZWJFbGVtZW50
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR0NDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
LmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgpAQCAt
NzU1LDI5ICs3NTYsMjMgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEF1dG9m
aQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlm
ICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1l
bnQpCisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
aW5wdXRUYWcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9m
aWxsZWQoYXV0b2ZpbGxlZCk7CisgICAgdG9IVE1MSW5wdXRFbGVtZW50KGlucHV0RWxlbWVudCkt
PnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
bm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGNvbnRleHQpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9K
UyhleGVjLCBub2RlT2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVs
ZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVs
ZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKHZhbHVlKTsKICAgICBHT3duUHRyPGdjaGFyPiB2YWx1ZUJ1ZmZlcihzdGF0aWNfY2FzdDxn
Y2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmlu
Zyh2YWx1ZSwgdmFsdWVCdWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwotICAgIGlucHV0RWxlbWVu
dC0+c2V0VmFsdWVGb3JVc2VyKFN0cmluZzo6ZnJvbVVURjgodmFsdWVCdWZmZXIuZ2V0KCkpKTsK
KyAgICB0b0hUTUxJbnB1dEVsZW1lbnQoaW5wdXRFbGVtZW50KS0+c2V0VmFsdWVGb3JVc2VyKFN0
cmluZzo6ZnJvbVVURjgodmFsdWVCdWZmZXIuZ2V0KCkpKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnJlY3RhbmdsZUZvclNlbGVjdGlvbihXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCogcmVjdGFuZ2xlKQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDk0MTAyKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wOC0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBHZXQgcmlkIG9mIHRvSW5wdXRFbGVtZW50KCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MTc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0QXV0b2ZpbGxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0VmFsdWVGb3JVc2VyKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQpOgorCiAyMDExLTA4LTMwICBL
YXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFRo
ZSB1bnVzZWQgU2Nyb2xsVmlldyogYXJndW1lbnQgY2FuIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBm
cm9tCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2aXNpb24gOTQwNDgpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9z
aXRpb24uaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdC5oIgpAQCAtMjMyLDEzICsyMzMsMTAgQEAgYm9vbCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6aGFzRG9jdW1lbgogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
c2V0QXV0b2ZpbGxlZChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxs
ZWQpCiB7CiAgICAgV2ViQ29yZTo6RWxlbWVudCogd2ViRWxlbWVudCA9IGVsZW1lbnQubV9lbGVt
ZW50OwotICAgIGlmICghd2ViRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHdlYkVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0g
ICAgaWYgKCFpbnB1dEVsZW1lbnQpCisgICAgaWYgKCF3ZWJFbGVtZW50IHx8ICF3ZWJFbGVtZW50
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoaXNBdXRvZmlsbGVkKTsKKyAgICB0b0hUTUxJ
bnB1dEVsZW1lbnQod2ViRWxlbWVudCktPnNldEF1dG9maWxsZWQoaXNBdXRvZmlsbGVkKTsKIH0K
IAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWQoUVdlYkZyYW1lKiBmcmFtZSwgYm9vbCBlbmFibGVkKQpAQCAtMjU4LDEzICsyNTYsMTAg
QEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0SmF2YVNjcgogdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJF
bGVtZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7Ci0gICAgaWYgKCF3ZWJFbGVtZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gd2ViRWxlbWVu
dC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKKyAgICBpZiAoIXdl
YkVsZW1lbnQgfHwgIXdlYkVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2VyKHZh
bHVlKTsKKyAgICB0b0hUTUxJbnB1dEVsZW1lbnQod2ViRWxlbWVudCktPnNldFZhbHVlRm9yVXNl
cih2YWx1ZSk7CiB9CiAKIC8vIFBhdXNlIGEgZ2l2ZW4gQ1NTIGFuaW1hdGlvbiBvciB0cmFuc2l0
aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNwZWNpZmljIHRpbWUuCkBAIC02NDEsNyArNjM2
LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZWxlbWVudERvZQogICAgIGlmICgh
Y29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oY29yZU5vZGUpOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCA9IHRvSFRNTElucHV0RWxlbWVudChjb3JlTm9kZSk7CiAKICAgICByZXR1cm4gaW5wdXRF
bGVtZW50LT5pc1RleHRGaWVsZCgpICYmICFpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgp
ICYmIGlucHV0RWxlbWVudC0+c2hvdWxkQXV0b2NvbXBsZXRlKCk7CiB9Cg==
</data>
<flag name="review"
          id="101930"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="101953"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>