<?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>74831</bug_id>
          
          <creation_ts>2011-12-18 18:41:58 -0800</creation_ts>
          <short_desc>More PlatformEvent cleanup</short_desc>
          <delta_ts>2011-12-19 20:08:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>523620</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-18 18:41:58 -0800</bug_when>
    <thetext>More PlatformEvent cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523626</commentid>
    <comment_count>1</comment_count>
      <attachid>119798</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-18 18:44:33 -0800</bug_when>
    <thetext>Created attachment 119798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523633</commentid>
    <comment_count>2</comment_count>
      <attachid>119798</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-18 18:54:59 -0800</bug_when>
    <thetext>Comment on attachment 119798
Patch

Attachment 119798 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10935369</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523644</commentid>
    <comment_count>3</comment_count>
      <attachid>119798</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-18 19:07:33 -0800</bug_when>
    <thetext>Comment on attachment 119798
Patch

Attachment 119798 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10935373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523700</commentid>
    <comment_count>4</comment_count>
      <attachid>119798</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-18 21:17:15 -0800</bug_when>
    <thetext>Comment on attachment 119798
Patch

Attachment 119798 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10935401</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524274</commentid>
    <comment_count>5</comment_count>
      <attachid>119945</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-19 16:30:40 -0800</bug_when>
    <thetext>Created attachment 119945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524276</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 16:32:34 -0800</bug_when>
    <thetext>Attachment 119945 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit/win/WebView.cpp:1468:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524300</commentid>
    <comment_count>7</comment_count>
      <attachid>119945</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-19 16:53:08 -0800</bug_when>
    <thetext>Comment on attachment 119945
Patch

Attachment 119945 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10927119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524324</commentid>
    <comment_count>8</comment_count>
      <attachid>119958</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-19 17:21:24 -0800</bug_when>
    <thetext>Created attachment 119958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524329</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 17:24:14 -0800</bug_when>
    <thetext>Attachment 119958 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit/win/WebView.cpp:1468:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524348</commentid>
    <comment_count>10</comment_count>
      <attachid>119958</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-19 18:10:26 -0800</bug_when>
    <thetext>Comment on attachment 119958
Patch

Attachment 119958 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10966116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524380</commentid>
    <comment_count>11</comment_count>
      <attachid>119958</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-19 19:17:15 -0800</bug_when>
    <thetext>Comment on attachment 119958
Patch

Attachment 119958 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10967247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524398</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-19 20:08:30 -0800</bug_when>
    <thetext>Committed r103297: &lt;http://trac.webkit.org/changeset/103297&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119798</attachid>
            <date>2011-12-18 18:44:33 -0800</date>
            <delta_ts>2011-12-19 16:30:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74831-20111218184418.patch</filename>
            <type>text/plain</type>
            <size>20606</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDExLTEyLTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9yZSBQbGF0Zm9ybUV2ZW50IGNsZWFu
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTW91
c2VFdmVudDo6cG9zaXRpb24pOgorICAgICAgICBSZW5hbWUgcG9zIC0+IHBvc2l0aW9uKCkuIFJl
bW92ZSB4KCkgYW5kIHkoKSBhY2Nlc3NvcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudDo6Z2xvYmFsUG9zaXRpb24pOgorICAgICAgICBBZGRlZC4gUmVwbGFjZXMgZ2xv
YmFsWCgpIGFuZCBnbG9iYWxZKCkgYWNjZXNzb3JzLgorCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1vdXNlRXZlbnQ6Om1vdmVtZW50RGVsdGEpOgorICAgICAgICBBZGRlZC4gUmVwbGFjZXMg
bW92ZW1lbnRYKCkgYW5kIG1vdmVtZW50WSgpIGFjY2Vzc29ycy4KKworICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50Ojpwb3NpdGlvbik6CisgICAgICAgIFJlbmFtZWQgcG9zIC0+IHBvc2l0aW9uKCkuCisK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6Z2xvYmFsUG9zaXRpb24pOgor
ICAgICAgICBSZW5hbWVkIGdsb2JhbFBvcyAtPiBnbG9iYWxQb3NpdGlvbigpLgorCisgICAgICAg
ICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3IpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRT
aW5nbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3Rh
cnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWNr
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cHJlcGFyZU1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VNb3ZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1vdXNlRG93bik6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OmhpdFRlc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVzaXplKToKKyAgICAgICAg
VXBkYXRlIHRvIHVzZSBuZXcgbmFtZXMsIGFjY2VzcyBzdHlsZS4KKwogMjAxMS0xMi0xOCAgQmVu
amFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgOCBiaXRzIHN0cmluZ3MgdG8gRG9jdW1lbnQ6OmlzVmFsaWROYW1lKCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDEwMzE5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsOSBAQCBQ
YXNzUmVmUHRyPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0CiAgICAgYm9vbCBpc0NhbmNl
bGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50OwogCiAgICAg
cmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGlzQ2FuY2VsYWJsZSwg
dmlldywKLSAgICAgICAgZGV0YWlsLCBldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwg
ZXZlbnQueCgpLCBldmVudC55KCksCisgICAgICAgIGRldGFpbCwgZXZlbnQuZ2xvYmFsUG9zaXRp
b24oKS54KCksIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigpLngo
KSwgZXZlbnQucG9zaXRpb24oKS55KCksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAg
ICAgZXZlbnQubW92ZW1lbnRYKCksIGV2ZW50Lm1vdmVtZW50WSgpLAorICAgICAgICBldmVudC5t
b3ZlbWVudERlbHRhKCkueCgpLCBldmVudC5tb3ZlbWVudERlbHRhKCkueSgpLAogI2VuZGlmCiAg
ICAgICAgIGV2ZW50LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCks
IGV2ZW50Lm1ldGFLZXkoKSwgZXZlbnQuYnV0dG9uKCksCiAgICAgICAgIHJlbGF0ZWRUYXJnZXQs
IDAsIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDEw
MzE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpXaGVlbEV2
ZW50RGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0RXZlbnQoV2hlZWxFdmVudDo6Y3JlYXRl
KEZsb2F0UG9pbnQoZXZlbnQud2hlZWxUaWNrc1goKSwgZXZlbnQud2hlZWxUaWNrc1koKSksIEZs
b2F0UG9pbnQoZXZlbnQuZGVsdGFYKCksIGV2ZW50LmRlbHRhWSgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3JhbnVsYXJpdHkoZXZlbnQpLCB2aWV3LCBldmVudC5nbG9iYWxQ
b3MoKSwgZXZlbnQucG9zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW51
bGFyaXR5KGV2ZW50KSwgdmlldywgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgZXZlbnQucG9zaXRp
b24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3RybEtleSgpLCBl
dmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtleSgpLCBldmVudC5k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoKSkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTAzMTk4KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxOSw3ICs3MTks
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyCiAgICAgS1VSTCBs
aW5rVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBLVVJMIGltYWdl
VVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKLSAgICBJbnRQb2ludCBt
b3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVu
dC5wb3MoKSk7CisgICAgSW50UG9pbnQgbW91c2VEcmFnZ2VkUG9pbnQgPSBzcmMtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKICAgICBtX2RyYWdnaW5n
SW1hZ2VVUkwgPSBLVVJMKCk7CiAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3JjT3A7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMDMxOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwMiw3ICs0MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
CiAgICAgLy8gRG9uJ3QgcmVzdGFydCB0aGUgc2VsZWN0aW9uIHdoZW4gdGhlIG1vdXNlIGlzIHBy
ZXNzZWQgb24gYW4KICAgICAvLyBleGlzdGluZyBzZWxlY3Rpb24gc28gd2UgY2FuIGFsbG93IGZv
ciB0ZXh0IGRyYWdnaW5nLgogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3
KCkpIHsKLSAgICAgICAgTGF5b3V0UG9pbnQgdlBvaW50ID0gdmlldy0+d2luZG93VG9Db250ZW50
cyhldmVudC5ldmVudCgpLnBvcygpKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgdlBvaW50ID0gdmll
dy0+d2luZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpOwogICAgICAgICBp
ZiAoIWV4dGVuZFNlbGVjdGlvbiAmJiBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModlBv
aW50KSkgewogICAgICAgICAgICAgbV9tb3VzZURvd25XYXNTaW5nbGVDbGlja0luU2VsZWN0aW9u
ID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgY2FuY2VsRmFrZU1v
dXNlTW92ZUV2ZW50KCk7CiAKICAgICBpZiAoU2Nyb2xsVmlldyogc2Nyb2xsVmlldyA9IG1fZnJh
bWUtPnZpZXcoKSkgewotICAgICAgICBpZiAoc2Nyb2xsVmlldy0+aXNQb2ludEluU2Nyb2xsYmFy
Q29ybmVyKGV2ZW50LmV2ZW50KCkucG9zKCkpKQorICAgICAgICBpZiAoc2Nyb2xsVmlldy0+aXNQ
b2ludEluU2Nyb2xsYmFyQ29ybmVyKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00OTEsNyArNDkxLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgICAgICAmJiBzdGF0aWNfY2FzdDxT
VkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT56b29tQW5kUGFuRW5hYmxlZCgpKSB7
CiAgICAgICAgIGlmIChldmVudC5ldmVudCgpLnNoaWZ0S2V5KCkgJiYgc2luZ2xlQ2xpY2spIHsK
ICAgICAgICAgICAgIG1fc3ZnUGFuID0gdHJ1ZTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFNW
R0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnN0YXJ0UGFuKG1fZnJhbWUtPnZpZXco
KS0+d2luZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvcygpKSk7CisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbiht
X2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigp
KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTUwNiw3
ICs1MDYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAKICAg
ICBtX21vdXNlUHJlc3NOb2RlID0gaW5uZXJOb2RlOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
Ci0gICAgbV9kcmFnU3RhcnRQb3MgPSBldmVudC5ldmVudCgpLnBvcygpOworICAgIG1fZHJhZ1N0
YXJ0UG9zID0gZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpOwogI2VuZGlmCiAKICAgICBib29sIHN3
YWxsb3dFdmVudCA9IGZhbHNlOwpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpldmVudE1heVN0YXJ0RHJhZyhjb24KIAogICAgIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxs
b3dlZCgpOwogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5KTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2
ZW50LnBvcygpKSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250
ZW50cyhldmVudC5wb3NpdGlvbigpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkt
PmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBEcmFnU3RhdGUgc3RhdGU7
CiAgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigp
LT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgcmVzdWx0LnBvaW50
KCksIHN0YXRlKTsKQEAgLTc2NSw3ICs3NjUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlCiAgICAgLy8gZWRpdGluZywgcGxhY2UgdGhlIGNhcmV0LgogICAgIGlm
IChtX21vdXNlRG93bldhc1NpbmdsZUNsaWNrSW5TZWxlY3Rpb24gJiYgbV9zZWxlY3Rpb25Jbml0
aWF0aW9uU3RhdGUgIT0gRXh0ZW5kZWRTZWxlY3Rpb24KICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQotICAgICAgICAgICAgJiYgbV9kcmFnU3RhcnRQb3MgPT0gZXZlbnQuZXZlbnQoKS5wb3MoKQor
ICAgICAgICAgICAgJiYgbV9kcmFnU3RhcnRQb3MgPT0gZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigp
CiAjZW5kaWYKICAgICAgICAgICAgICYmIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc1JhbmdlKCkK
ICAgICAgICAgICAgICYmIGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gUmlnaHRCdXR0b24pIHsK
QEAgLTEyNjEsNyArMTI2MSw3IEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0
Q3Vyc28KICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyTGF5
ZXIqIGxheWVyID0gcmVuZGVyZXItPmVuY2xvc2luZ0xheWVyKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKQotICAgICAgICAgICAgICAg
ICAgICBpblJlc2l6ZXIgPSBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJvbCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
aW5SZXNpemVyID0gbGF5ZXItPmlzUG9pbnRJblJlc2l6ZUNvbnRyb2wodmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBpZiAoKGVkaXRhYmxlIHx8IChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNU
ZXh0KCkgJiYgbm9kZS0+Y2FuU3RhcnRTZWxlY3Rpb24oKSkpICYmICFpblJlc2l6ZXIgJiYgIXNj
cm9sbGJhcikKQEAgLTEzODMsNyArMTM4Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVByZXNzRXZlbnQKICAgICBjYW5jZWxGYWtlTW91c2VNb3ZlRXZlbnQoKTsKICAgICBtX21v
dXNlUHJlc3NlZCA9IHRydWU7CiAgICAgbV9jYXB0dXJlc0RyYWdnaW5nID0gdHJ1ZTsKLSAgICBt
X2N1cnJlbnRNb3VzZVBvc2l0aW9uID0gbW91c2VFdmVudC5wb3MoKTsKKyAgICBtX2N1cnJlbnRN
b3VzZVBvc2l0aW9uID0gbW91c2VFdmVudC5wb3NpdGlvbigpOwogICAgIG1fbW91c2VEb3duVGlt
ZXN0YW1wID0gbW91c2VFdmVudC50aW1lc3RhbXAoKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7CkBAIC0xMzkxLDcgKzEzOTEs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgbV9tb3Vz
ZURvd25NYXlTdGFydFNlbGVjdCA9IGZhbHNlOwogICAgIG1fbW91c2VEb3duTWF5U3RhcnRBdXRv
c2Nyb2xsID0gZmFsc2U7CiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXco
KSkKLSAgICAgICAgbV9tb3VzZURvd25Qb3MgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1vdXNl
RXZlbnQucG9zKCkpOworICAgICAgICBtX21vdXNlRG93blBvcyA9IHZpZXctPndpbmRvd1RvQ29u
dGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKTsKICAgICBlbHNlIHsKICAgICAgICAgaW52YWxp
ZGF0ZUNsaWNrKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0MDEsNyArMTQwMSw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwogICAgIC8vIFNhdmUgdGhlIGRv
Y3VtZW50IHBvaW50IHdlIGdlbmVyYXRlIGluIGNhc2UgdGhlIHdpbmRvdyBjb29yZGluYXRlIGlz
IGludmFsaWRhdGVkIGJ5IHdoYXQgaGFwcGVucyAKICAgICAvLyB3aGVuIHdlIGRpc3BhdGNoIHRo
ZSBldmVudC4KLSAgICBJbnRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldp
bmRvd1BvaW50KG1fZnJhbWUsIG1vdXNlRXZlbnQucG9zKCkpOworICAgIEludFBvaW50IGRvY3Vt
ZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgbW91c2VFdmVu
dC5wb3NpdGlvbigpKTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9p
bnQsIG1vdXNlRXZlbnQpOwogCiAgICAgaWYgKCF0YXJnZXROb2RlKG1ldikpIHsKQEAgLTE0NDgs
NyArMTQ0OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKIAog
ICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyID0gbV9jbGlja05vZGUtPnJlbmRlcmVyKCkgPyBtX2NsaWNrTm9kZS0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKSA6IDA7Ci0gICAgICAgIEludFBvaW50IHAgPSB2
aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1vdXNlRXZlbnQucG9zKCkpOworICAgICAgICBJbnRQb2lu
dCBwID0gdmlldy0+d2luZG93VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAg
ICAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPmlzUG9pbnRJblJlc2l6ZUNvbnRyb2wocCkpIHsKICAg
ICAgICAgICAgIGxheWVyLT5zZXRJblJlc2l6ZU1vZGUodHJ1ZSk7CiAgICAgICAgICAgICBtX3Jl
c2l6ZUxheWVyID0gbGF5ZXI7CkBAIC0xNDkyLDcgKzE0OTIsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgICAgIH0KIAogICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7Ci0gICAgICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0g
dmlldyA/IHZpZXctPnNjcm9sbGJhckF0UG9pbnQobW91c2VFdmVudC5wb3MoKSkgOiAwOworICAg
ICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9IHZpZXcgPyB2aWV3LT5zY3JvbGxiYXJBdFBvaW50
KG1vdXNlRXZlbnQucG9zaXRpb24oKSkgOiAwOwogICAgICAgICBpZiAoIXNjcm9sbGJhcikKICAg
ICAgICAgICAgIHNjcm9sbGJhciA9IG1ldi5zY3JvbGxiYXIoKTsKIApAQCAtMTUxNiw3ICsxNTE2
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpYwogCiAgICAgLy8g
V2UgZ2V0IHRoaXMgaW5zdGVhZCBvZiBhIHNlY29uZCBtb3VzZS11cCAKICAgICBtX21vdXNlUHJl
c3NlZCA9IGZhbHNlOwotICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBv
cygpOworICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7
CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwog
ICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgbW91c2VFdmVudCk7CkBAIC0xNTk0LDcgKzE1OTQsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwotICAgIG1fY3Vy
cmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvcygpOworICAgIG1fY3VycmVudE1vdXNl
UG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7CiAKICAgICBpZiAobV9ob3ZlclRpbWVy
LmlzQWN0aXZlKCkpCiAgICAgICAgIG1faG92ZXJUaW1lci5zdG9wKCk7CkBAIC0xNjM1LDcgKzE2
MzUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoCiAgICAgICAg
IG1fcmVzaXplTGF5ZXItPnJlc2l6ZShtb3VzZUV2ZW50LCBtX29mZnNldEZyb21SZXNpemVDb3Ju
ZXIpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+
dmlldygpKQotICAgICAgICAgICAgc2Nyb2xsYmFyID0gdmlldy0+c2Nyb2xsYmFyQXRQb2ludCht
b3VzZUV2ZW50LnBvcygpKTsKKyAgICAgICAgICAgIHNjcm9sbGJhciA9IHZpZXctPnNjcm9sbGJh
ckF0UG9pbnQobW91c2VFdmVudC5wb3NpdGlvbigpKTsKIAogICAgICAgICBpZiAoIXNjcm9sbGJh
cikKICAgICAgICAgICAgIHNjcm9sbGJhciA9IG1ldi5zY3JvbGxiYXIoKTsKQEAgLTE3MDQsNyAr
MTcwNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmUKICNlbmRp
ZgogCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKLSAgICBtX2N1cnJlbnRNb3VzZVBvc2l0
aW9uID0gbW91c2VFdmVudC5wb3MoKTsKKyAgICBtX2N1cnJlbnRNb3VzZVBvc2l0aW9uID0gbW91
c2VFdmVudC5wb3NpdGlvbigpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAobV9zdmdQYW4p
IHsKQEAgLTE3NjAsOSArMTc2MCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdF
dmVudChjb24KICAgICB2aWV3LT5yZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7CiAgICAgUmVm
UHRyPE1vdXNlRXZlbnQ+IG1lID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwKICAgICAg
ICAgdHJ1ZSwgdHJ1ZSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKLSAgICAg
ICAgMCwgZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCksIGV2ZW50LngoKSwgZXZlbnQu
eSgpLAorICAgICAgICAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLngoKSwgZXZlbnQuZ2xvYmFs
UG9zaXRpb24oKS55KCksIGV2ZW50LnBvc2l0aW9uKCkueCgpLCBldmVudC5wb3NpdGlvbigpLnko
KSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgICAgICBldmVudC5tb3ZlbWVudFgoKSwg
ZXZlbnQubW92ZW1lbnRZKCksCisgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2
ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCiAjZW5kaWYKICAgICAgICAgZXZlbnQuY3RybEtleSgp
LCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtleSgpLAogICAg
ICAgICAwLCAwLCBjbGlwYm9hcmQpOwpAQCAtMTkzOSw3ICsxOTM5LDcgQEAgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyBFdmVudEhhbmRsZQogICAgIEFTU0VSVChtX2ZyYW1lKTsKICAgICBB
U1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgCi0gICAgcmV0dXJuIG1fZnJhbWUtPmRv
Y3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnRGb3JXaW5k
b3dQb2ludChtX2ZyYW1lLCBtZXYucG9zKCkpLCBtZXYpOworICAgIHJldHVybiBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50Rm9yV2lu
ZG93UG9pbnQobV9mcmFtZSwgbWV2LnBvc2l0aW9uKCkpLCBtZXYpOwogfQogCiAjaWYgRU5BQkxF
KFNWRykKQEAgLTIwNzgsNyArMjA3OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1v
dXNlRXZlbnQoY28KIAogICAgICAgICAvLyBJZiBjbGlja2luZyBvbiBhIGZyYW1lIHNjcm9sbGJh
ciwgZG8gbm90IG1lc3MgdXAgd2l0aCBjb250ZW50IGZvY3VzLgogICAgICAgICBpZiAoRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKSB7Ci0gICAgICAgICAgICBpZiAodmlldy0+c2Ny
b2xsYmFyQXRQb2ludChtb3VzZUV2ZW50LnBvcygpKSkKKyAgICAgICAgICAgIGlmICh2aWV3LT5z
Y3JvbGxiYXJBdFBvaW50KG1vdXNlRXZlbnQucG9zaXRpb24oKSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTIxNDYsNyArMjE0Niw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnMKICAgICBpZiAoIXZpZXcpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7Ci0gICAgTGF5
b3V0UG9pbnQgdlBvaW50ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhlLnBvcygpKTsKKyAgICBM
YXlvdXRQb2ludCB2UG9pbnQgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGUucG9zaXRpb24oKSk7
CiAKICAgICBOb2RlKiBub2RlOwogICAgIGJvb2wgaXNPdmVyV2lkZ2V0OwpAQCAtMjI4Myw3ICsy
MjgzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgYm9vbCBzd2FsbG93RXZlbnQ7Ci0gICAgTGF5b3V0
UG9pbnQgdmlld3BvcnRQb3MgPSB2LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKKyAg
ICBMYXlvdXRQb2ludCB2aWV3cG9ydFBvcyA9IHYtPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9z
aXRpb24oKSk7CiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlKTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFy
ZU1vdXNlRXZlbnQocmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIApAQCAtMjg2OSw3ICsy
ODY5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91cwogICAgICAg
ICB2aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKICAgICB9CiAKLSAgICBpZiAoIWRy
YWdIeXN0ZXJlc2lzRXhjZWVkZWQoZXZlbnQuZXZlbnQoKS5wb3MoKSkpIAorICAgIGlmICghZHJh
Z0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKSAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRoZSBoeXN0ZXJlc2lz
IHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBhcyBhIGNsaWNrCkBA
IC0zMjE0LDcgKzMyMTQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChj
b25zCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvaW50cy5zaXplKCk7ICsraSkgewog
ICAgICAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50ID0gcG9pbnRzW2ldOwogICAg
ICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHBvaW50U3RhdGUgPSBwb2ludC5zdGF0ZSgp
OwotICAgICAgICBMYXlvdXRQb2ludCBwYWdlUG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93
UG9pbnQobV9mcmFtZSwgcG9pbnQucG9zKCkpOworICAgICAgICBMYXlvdXRQb2ludCBwYWdlUG9p
bnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgcG9pbnQucG9zaXRpb24o
KSk7CiAKICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBl
ID0gSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seTsKICAg
ICAgICAgLy8gVGhlIEhpdFRlc3RSZXF1ZXN0IHR5cGVzIHVzZWQgZm9yIG1vdXNlIGV2ZW50cyBt
YXAgcXVpdGUgYWRlcXVhdGVseQpAQCAtMzI1Myw3ICszMjUzLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29ucwogCiAgICAgICAgIGlmIChtX2ZyYW1lICE9IGRvYy0+
ZnJhbWUoKSkgewogICAgICAgICAgICAgLy8gcGFnZVBvaW50IHNob3VsZCBhbHdheXMgYmUgcmVs
YXRpdmUgdG8gdGhlIHRhcmdldCBlbGVtZW50cyBjb250YWluaW5nIGZyYW1lLgotICAgICAgICAg
ICAgcGFnZVBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KGRvYy0+ZnJhbWUoKSwg
cG9pbnQucG9zKCkpOworICAgICAgICAgICAgcGFnZVBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldp
bmRvd1BvaW50KGRvYy0+ZnJhbWUoKSwgcG9pbnQucG9zaXRpb24oKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBt
X2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAkocmV2aXNpb24gMTAzMTk4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDE0ICs5NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIGNvbnN0IEludFBvaW50JiBwb3MoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9u
OyB9Ci0gICAgICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi54KCk7IH0KLSAg
ICAgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLnkoKTsgfQotICAgICAgICBp
bnQgZ2xvYmFsWCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb24ueCgpOyB9Ci0gICAg
ICAgIGludCBnbG9iYWxZKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbi55KCk7IH0K
KyAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQorICAgICAgICBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAg
ICAgICAgaW50IG1vdmVtZW50WCgpIGNvbnN0IHsgcmV0dXJuIG1fbW92ZW1lbnREZWx0YS54KCk7
IH0KLSAgICAgICAgaW50IG1vdmVtZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fbW92ZW1lbnREZWx0
YS55KCk7IH0KKyAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEoKSBjb25zdCB7
IHJldHVybiBtX21vdmVtZW50RGVsdGE7IH0KICNlbmRpZgogCiAgICAgICAgIE1vdXNlQnV0dG9u
IGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkocmV2aXNpb24gMTAzMTk4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMyw4ICsxMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBy
ZXR1cm4gY29weTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IEludFBvaW50JiBwb3MoKSBj
b25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9IC8vIFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVz
LgotICAgICAgICBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCisgICAgICAgIGNvbnN0IElu
dFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZv
cm1XaW5kb3cgY29vcmRpbmF0ZXMuCisgICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0gLy8gU2NyZWVuIGNvb3Jk
aW5hdGVzLgogCiAgICAgICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFY
OyB9CiAgICAgICAgIGZsb2F0IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAJKHJldmlzaW9uIDEwMzE5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzNywxNCArMzM3LDE0IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKGNvbnN0IFBs
YXRmb3IKICAgICAgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxUb09mZnNldFdp
dGhvdXRBbmltYXRpb24obV9vcmllbnRhdGlvbiwgbV9kcmFnT3JpZ2luKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIG1vdmVUaHVtYihtX29yaWVudGF0aW9uID09IEhvcml6b250YWxT
Y3JvbGxiYXIgPyAKLSAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coZXZ0LnBvcygpKS54KCkgOgotICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9t
Q29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkpLnkoKSwgdGhlbWUoKS0+c2hvdWxkRHJhZ0RvY3Vt
ZW50SW5zdGVhZE9mVGh1bWIodGhpcywgZXZ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgY29u
dmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOgorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSku
eSgpLCB0aGVtZSgpLT5zaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYih0aGlzLCBldnQp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAobV9w
cmVzc2VkUGFydCAhPSBOb1BhcnQpCi0gICAgICAgIG1fcHJlc3NlZFBvcyA9IChvcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
ZXZ0LnBvcygpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvcygpKS55
KCkpOworICAgICAgICBtX3ByZXNzZWRQb3MgPSAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS54
KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSk7CiAK
ICAgICBTY3JvbGxiYXJQYXJ0IHBhcnQgPSB0aGVtZSgpLT5oaXRUZXN0KHRoaXMsIGV2dCk7CiAg
ICAgaWYgKHBhcnQgIT0gbV9ob3ZlcmVkUGFydCkgewpAQCAtNDEwLDcgKzQxMCw3IEBAIGJvb2wg
U2Nyb2xsYmFyOjptb3VzZURvd24oY29uc3QgUGxhdGZvcm0KICAgICAgICAgcmV0dXJuIHRydWU7
IC8vIEZJWE1FOiBIYW5kbGVkIGFzIGNvbnRleHQgbWVudSBieSBRdCByaWdodCBub3cuICBTaG91
bGQganVzdCBhdm9pZCBldmVuIGNhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSByaWdodCBjbGljayB0
aG91Z2guCiAKICAgICBzZXRQcmVzc2VkUGFydCh0aGVtZSgpLT5oaXRUZXN0KHRoaXMsIGV2dCkp
OwotICAgIGludCBwcmVzc2VkUG9zID0gKG9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkpLngoKSA6IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkpLnkoKSk7CisgICAgaW50IHByZXNzZWRQ
b3MgPSAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21D
b250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSk7CiAgICAgCiAgICAgaWYgKChtX3ByZXNzZWRQ
YXJ0ID09IEJhY2tUcmFja1BhcnQgfHwgbV9wcmVzc2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0
KSAmJiB0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHRoaXMsIGV2dCkpIHsKICAgICAgICAg
c2V0SG92ZXJlZFBhcnQoVGh1bWJQYXJ0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9uIDEwMzE5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OmgKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCi0gICAgSW50UG9pbnQgbW91c2VQb3NpdGlvbiA9IHNjcm9sbGJh
ci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSk7CisgICAgSW50UG9pbnQg
bW91c2VQb3NpdGlvbiA9IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2
dC5wb3NpdGlvbigpKTsKICAgICBtb3VzZVBvc2l0aW9uLm1vdmUoc2Nyb2xsYmFyLT54KCksIHNj
cm9sbGJhci0+eSgpKTsKICAgICAKICAgICBpZiAoIXNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuY29u
dGFpbnMobW91c2VQb3NpdGlvbikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAJKHJldmlzaW9uIDEwMzE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OTEsNyArMTY5MSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnJlc2l6ZShjb25zdCBQbGF0Zm9ybU0KIAogICAgIGZsb2F0IHpvb21G
YWN0b3IgPSByZW5kZXJlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwogCi0gICAgTGF5b3V0
U2l6ZSBuZXdPZmZzZXQgPSBvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGRvY3VtZW50LT52aWV3KCkt
PndpbmRvd1RvQ29udGVudHMoZXZ0LnBvcygpKSk7CisgICAgTGF5b3V0U2l6ZSBuZXdPZmZzZXQg
PSBvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGRvY3VtZW50LT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoZXZ0LnBvc2l0aW9uKCkpKTsKICAgICBuZXdPZmZzZXQuc2V0V2lkdGgobmV3T2Zmc2V0Lndp
ZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0KG5ld09mZnNldC5o
ZWlnaHQoKSAvIHpvb21GYWN0b3IpOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119945</attachid>
            <date>2011-12-19 16:30:40 -0800</date>
            <delta_ts>2011-12-19 17:21:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74831-20111219163021.patch</filename>
            <type>text/plain</type>
            <size>41070</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDExLTEyLTE5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9yZSBQbGF0Zm9ybUV2ZW50IGNsZWFu
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTW91
c2VFdmVudDo6cG9zaXRpb24pOgorICAgICAgICBSZW5hbWUgcG9zIC0+IHBvc2l0aW9uKCkuIFJl
bW92ZSB4KCkgYW5kIHkoKSBhY2Nlc3NvcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudDo6Z2xvYmFsUG9zaXRpb24pOgorICAgICAgICBBZGRlZC4gUmVwbGFjZXMgZ2xv
YmFsWCgpIGFuZCBnbG9iYWxZKCkgYWNjZXNzb3JzLgorCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1vdXNlRXZlbnQ6Om1vdmVtZW50RGVsdGEpOgorICAgICAgICBBZGRlZC4gUmVwbGFjZXMg
bW92ZW1lbnRYKCkgYW5kIG1vdmVtZW50WSgpIGFjY2Vzc29ycy4KKworICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50Ojpwb3NpdGlvbik6CisgICAgICAgIFJlbmFtZWQgcG9zIC0+IHBvc2l0aW9uKCkuCisK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6Z2xvYmFsUG9zaXRpb24pOgor
ICAgICAgICBSZW5hbWVkIGdsb2JhbFBvcyAtPiBnbG9iYWxQb3NpdGlvbigpLgorCisgICAgICAg
ICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3IpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRT
aW5nbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3Rh
cnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWNr
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cHJlcGFyZU1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9F
dmVudEhhbmRsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZU1vdmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VEb3duKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0UmVsYXRpdmVN
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFJlbGF0aXZlV2hlZWxFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VEb3duRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJh
Z09yaWdpbik6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2Nyb2xsYmFyUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250ZXh0TWVudSk6CisgICAgICAgICogcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVF0OjpoaXRUZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNr
VG9EcmFnT3JpZ2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc2l6ZSk6CisgICAgICAgIFVwZGF0ZSB0byB1
c2UgbmV3IG5hbWVzLCBhY2Nlc3Mgc3R5bGUuCisKIDIwMTEtMTItMTkgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBTZW5kIGdlc3R1cmUgZXZlbnRzIHRo
cm91Z2ggdGhlIGV2ZW50IGRpc3BhdGNoZXIgYW5kIHNjcm9sbGluZyBjb29yZGluYXRvcgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw5
IEBAIFBhc3NSZWZQdHI8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXQKICAgICBib29sIGlz
Q2FuY2VsYWJsZSA9IGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CiAK
ICAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgaXNDYW5jZWxh
YmxlLCB2aWV3LAotICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFgoKSwgZXZlbnQuZ2xvYmFs
WSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwKKyAgICAgICAgZGV0YWlsLCBldmVudC5nbG9iYWxQ
b3NpdGlvbigpLngoKSwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCksIGV2ZW50LnBvc2l0aW9u
KCkueCgpLCBldmVudC5wb3NpdGlvbigpLnkoKSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQot
ICAgICAgICBldmVudC5tb3ZlbWVudFgoKSwgZXZlbnQubW92ZW1lbnRZKCksCisgICAgICAgIGV2
ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCiAjZW5k
aWYKICAgICAgICAgZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRL
ZXkoKSwgZXZlbnQubWV0YUtleSgpLCBldmVudC5idXR0b24oKSwKICAgICAgICAgcmVsYXRlZFRh
cmdldCwgMCwgZmFsc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkocmV2aXNp
b24gMTAzMjc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6Oldo
ZWVsRXZlbnREaQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRFdmVudChXaGVlbEV2ZW50Ojpj
cmVhdGUoRmxvYXRQb2ludChldmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRpY2tzWSgp
KSwgRmxvYXRQb2ludChldmVudC5kZWx0YVgoKSwgZXZlbnQuZGVsdGFZKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBncmFudWxhcml0eShldmVudCksIHZpZXcsIGV2ZW50Lmds
b2JhbFBvcygpLCBldmVudC5wb3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3JhbnVsYXJpdHkoZXZlbnQpLCB2aWV3LCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5w
b3NpdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jdHJsS2V5
KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCksIGV2
ZW50LmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSgpKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE5LDcg
KzcxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3IKICAgICBL
VVJMIGxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgIEtVUkwg
aW1hZ2VVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKIAotICAgIEludFBv
aW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJh
Z0V2ZW50LnBvcygpKTsKKyAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlvbigpKTsKIAogICAgIG1fZHJh
Z2dpbmdJbWFnZVVSTCA9IEtVUkwoKTsKICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNP
cDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDEwMzI3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAyLDcgKzQwMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNz
RXZlbnQKICAgICAvLyBEb24ndCByZXN0YXJ0IHRoZSBzZWxlY3Rpb24gd2hlbiB0aGUgbW91c2Ug
aXMgcHJlc3NlZCBvbiBhbgogICAgIC8vIGV4aXN0aW5nIHNlbGVjdGlvbiBzbyB3ZSBjYW4gYWxs
b3cgZm9yIHRleHQgZHJhZ2dpbmcuCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUt
PnZpZXcoKSkgewotICAgICAgICBMYXlvdXRQb2ludCB2UG9pbnQgPSB2aWV3LT53aW5kb3dUb0Nv
bnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zKCkpOworICAgICAgICBMYXlvdXRQb2ludCB2UG9pbnQg
PSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSk7CiAgICAg
ICAgIGlmICghZXh0ZW5kU2VsZWN0aW9uICYmIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5jb250YWlu
cyh2UG9pbnQpKSB7CiAgICAgICAgICAgICBtX21vdXNlRG93bldhc1NpbmdsZUNsaWNrSW5TZWxl
Y3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY0LDcgKzQ2NCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICBjYW5jZWxG
YWtlTW91c2VNb3ZlRXZlbnQoKTsKIAogICAgIGlmIChTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0g
bV9mcmFtZS0+dmlldygpKSB7Ci0gICAgICAgIGlmIChzY3JvbGxWaWV3LT5pc1BvaW50SW5TY3Jv
bGxiYXJDb3JuZXIoZXZlbnQuZXZlbnQoKS5wb3MoKSkpCisgICAgICAgIGlmIChzY3JvbGxWaWV3
LT5pc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQ5MSw3ICs0OTEsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgICAgICYmIHN0YXRpY19j
YXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnpvb21BbmRQYW5FbmFibGVk
KCkpIHsKICAgICAgICAgaWYgKGV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKSAmJiBzaW5nbGVDbGlj
aykgewogICAgICAgICAgICAgbV9zdmdQYW4gPSB0cnVlOwotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+c3RhcnRQYW4obV9mcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zKCkpKTsKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnN0YXJ0
UGFuKG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvc2l0
aW9uKCkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NTA2LDcgKzUwNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQK
IAogICAgIG1fbW91c2VQcmVzc05vZGUgPSBpbm5lck5vZGU7CiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSAgICBtX2RyYWdTdGFydFBvcyA9IGV2ZW50LmV2ZW50KCkucG9zKCk7CisgICAgbV9k
cmFnU3RhcnRQb3MgPSBldmVudC5ldmVudCgpLnBvc2l0aW9uKCk7CiAjZW5kaWYKIAogICAgIGJv
b2wgc3dhbGxvd0V2ZW50ID0gZmFsc2U7CkBAIC02MjYsNyArNjI2LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbgogCiAgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlv
bnNBbGxvd2VkKCk7CiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVu
dHMoZXZlbnQucG9zKCkpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIERyYWdTdGF0ZSBz
dGF0ZTsKICAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9s
bGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCByZXN1bHQu
cG9pbnQoKSwgc3RhdGUpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVJlbGVhc2VFdmUKICAgICAvLyBlZGl0aW5nLCBwbGFjZSB0aGUgY2FyZXQuCiAg
ICAgaWYgKG1fbW91c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVjdGlvbiAmJiBtX3NlbGVjdGlv
bkluaXRpYXRpb25TdGF0ZSAhPSBFeHRlbmRlZFNlbGVjdGlvbgogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0gICAgICAgICAgICAmJiBtX2RyYWdTdGFydFBvcyA9PSBldmVudC5ldmVudCgpLnBv
cygpCisgICAgICAgICAgICAmJiBtX2RyYWdTdGFydFBvcyA9PSBldmVudC5ldmVudCgpLnBvc2l0
aW9uKCkKICNlbmRpZgogICAgICAgICAgICAgJiYgbV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFu
Z2UoKQogICAgICAgICAgICAgJiYgZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBSaWdodEJ1dHRv
bikgewpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgT3B0aW9uYWxDdXJzb3IgRXZlbnRIYW5kbGVyOjpz
ZWxlY3RDdXJzbwogICAgICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgIGlmIChSZW5k
ZXJMYXllciogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGluUmVzaXplciA9IGxheWVyLT5pc1BvaW50SW5SZXNpemVDb250cm9sKHZpZXct
PndpbmRvd1RvQ29udGVudHMoZXZlbnQuZXZlbnQoKS5wb3MoKSkpOworICAgICAgICAgICAgICAg
ICAgICBpblJlc2l6ZXIgPSBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJvbCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGlmICgoZWRpdGFibGUgfHwgKHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5pc1RleHQoKSAmJiBub2RlLT5jYW5TdGFydFNlbGVjdGlvbigpKSkgJiYgIWluUmVzaXplciAm
JiAhc2Nyb2xsYmFyKQpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudAogICAgIGNhbmNlbEZha2VNb3VzZU1vdmVFdmVudCgpOwogICAg
IG1fbW91c2VQcmVzc2VkID0gdHJ1ZTsKICAgICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSB0cnVlOwot
ICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvcygpOworICAgIG1fY3Vy
cmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7CiAgICAgbV9tb3VzZURv
d25UaW1lc3RhbXAgPSBtb3VzZUV2ZW50LnRpbWVzdGFtcCgpOwogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKQEAgLTEzOTEsNyAr
MTM5MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICBt
X21vdXNlRG93bk1heVN0YXJ0U2VsZWN0ID0gZmFsc2U7CiAgICAgbV9tb3VzZURvd25NYXlTdGFy
dEF1dG9zY3JvbGwgPSBmYWxzZTsKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+
dmlldygpKQotICAgICAgICBtX21vdXNlRG93blBvcyA9IHZpZXctPndpbmRvd1RvQ29udGVudHMo
bW91c2VFdmVudC5wb3MoKSk7CisgICAgICAgIG1fbW91c2VEb3duUG9zID0gdmlldy0+d2luZG93
VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIGVsc2UgewogICAgICAgICBp
bnZhbGlkYXRlQ2xpY2soKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQwMSw3ICsxNDAx
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgLy8gU2F2ZSB0
aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5h
dGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBwZW5zIAogICAgIC8vIHdoZW4gd2UgZGlzcGF0
Y2ggdGhlIGV2ZW50LgotICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50
Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgbW91c2VFdmVudC5wb3MoKSk7CisgICAgSW50UG9pbnQg
ZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtb3Vz
ZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1l
bnRQb2ludCwgbW91c2VFdmVudCk7CiAKICAgICBpZiAoIXRhcmdldE5vZGUobWV2KSkgewpAQCAt
MTQ0OCw3ICsxNDQ4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dAogCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewogICAgICAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSBtX2NsaWNrTm9kZS0+cmVuZGVyZXIoKSA/IG1fY2xpY2tO
b2RlLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpIDogMDsKLSAgICAgICAgSW50UG9pbnQg
cCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMobW91c2VFdmVudC5wb3MoKSk7CisgICAgICAgIElu
dFBvaW50IHAgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1vdXNlRXZlbnQucG9zaXRpb24oKSk7
CiAgICAgICAgIGlmIChsYXllciAmJiBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJvbChwKSkg
ewogICAgICAgICAgICAgbGF5ZXItPnNldEluUmVzaXplTW9kZSh0cnVlKTsKICAgICAgICAgICAg
IG1fcmVzaXplTGF5ZXIgPSBsYXllcjsKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICAgICAgfQogCiAgICAgICAgIEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKLSAgICAgICAgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIgPSB2aWV3ID8gdmlldy0+c2Nyb2xsYmFyQXRQb2ludChtb3VzZUV2ZW50LnBvcygpKSA6IDA7
CisgICAgICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gdmlldyA/IHZpZXctPnNjcm9sbGJhckF0
UG9pbnQobW91c2VFdmVudC5wb3NpdGlvbigpKSA6IDA7CiAgICAgICAgIGlmICghc2Nyb2xsYmFy
KQogICAgICAgICAgICAgc2Nyb2xsYmFyID0gbWV2LnNjcm9sbGJhcigpOwogCkBAIC0xNTE2LDcg
KzE1MTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVDbGljCiAKICAg
ICAvLyBXZSBnZXQgdGhpcyBpbnN0ZWFkIG9mIGEgc2Vjb25kIG1vdXNlLXVwIAogICAgIG1fbW91
c2VQcmVzc2VkID0gZmFsc2U7Ci0gICAgbV9jdXJyZW50TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZl
bnQucG9zKCk7CisgICAgbV9jdXJyZW50TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZlbnQucG9zaXRp
b24oKTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2
ZSk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VF
dmVudChyZXF1ZXN0LCBtb3VzZUV2ZW50KTsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7Ci0gICAg
bV9jdXJyZW50TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZlbnQucG9zKCk7CisgICAgbV9jdXJyZW50
TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZlbnQucG9zaXRpb24oKTsKIAogICAgIGlmIChtX2hvdmVy
VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9ob3ZlclRpbWVyLnN0b3AoKTsKQEAgLTE2MzUs
NyArMTYzNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAg
ICAgICAgbV9yZXNpemVMYXllci0+cmVzaXplKG1vdXNlRXZlbnQsIG1fb2Zmc2V0RnJvbVJlc2l6
ZUNvcm5lcik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2Zy
YW1lLT52aWV3KCkpCi0gICAgICAgICAgICBzY3JvbGxiYXIgPSB2aWV3LT5zY3JvbGxiYXJBdFBv
aW50KG1vdXNlRXZlbnQucG9zKCkpOworICAgICAgICAgICAgc2Nyb2xsYmFyID0gdmlldy0+c2Ny
b2xsYmFyQXRQb2ludChtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogCiAgICAgICAgIGlmICghc2Ny
b2xsYmFyKQogICAgICAgICAgICAgc2Nyb2xsYmFyID0gbWV2LnNjcm9sbGJhcigpOwpAQCAtMTcw
NCw3ICsxNzA0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZQog
I2VuZGlmCiAKICAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNlOwotICAgIG1fY3VycmVudE1vdXNl
UG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvcygpOworICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24g
PSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX3N2
Z1BhbikgewpAQCAtMTc2MCw5ICsxNzYwLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNo
RHJhZ0V2ZW50KGNvbgogICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKICAg
ICBSZWZQdHI8TW91c2VFdmVudD4gbWUgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLAog
ICAgICAgICB0cnVlLCB0cnVlLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLAot
ICAgICAgICAwLCBldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwgZXZlbnQueCgpLCBl
dmVudC55KCksCisgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5n
bG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9u
KCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgICAgIGV2ZW50Lm1vdmVtZW50
WCgpLCBldmVudC5tb3ZlbWVudFkoKSwKKyAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgpLngo
KSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKICNlbmRpZgogICAgICAgICBldmVudC5jdHJs
S2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCks
CiAgICAgICAgIDAsIDAsIGNsaXBib2FyZCk7CkBAIC0xOTM5LDcgKzE5MzksNyBAQCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzIEV2ZW50SGFuZGxlCiAgICAgQVNTRVJUKG1fZnJhbWUpOwog
ICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICAKLSAgICByZXR1cm4gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludEZv
cldpbmRvd1BvaW50KG1fZnJhbWUsIG1ldi5wb3MoKSksIG1ldik7CisgICAgcmV0dXJuIG1fZnJh
bWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnRG
b3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtZXYucG9zaXRpb24oKSksIG1ldik7CiB9CiAKICNpZiBF
TkFCTEUoU1ZHKQpAQCAtMjA3OCw3ICsyMDc4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3Bh
dGNoTW91c2VFdmVudChjbwogCiAgICAgICAgIC8vIElmIGNsaWNraW5nIG9uIGEgZnJhbWUgc2Ny
b2xsYmFyLCBkbyBub3QgbWVzcyB1cCB3aXRoIGNvbnRlbnQgZm9jdXMuCiAgICAgICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgICAgIGlmICh2aWV3
LT5zY3JvbGxiYXJBdFBvaW50KG1vdXNlRXZlbnQucG9zKCkpKQorICAgICAgICAgICAgaWYgKHZp
ZXctPnNjcm9sbGJhckF0UG9pbnQobW91c2VFdmVudC5wb3NpdGlvbigpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29ucwogICAgIGlmICghdmlldykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKLSAg
ICBMYXlvdXRQb2ludCB2UG9pbnQgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGUucG9zKCkpOwor
ICAgIExheW91dFBvaW50IHZQb2ludCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMoZS5wb3NpdGlv
bigpKTsKIAogICAgIE5vZGUqIG5vZGU7CiAgICAgYm9vbCBpc092ZXJXaWRnZXQ7CkBAIC0yMjgz
LDcgKzIyODMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBib29sIHN3YWxsb3dFdmVudDsKLSAgICBM
YXlvdXRQb2ludCB2aWV3cG9ydFBvcyA9IHYtPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zKCkp
OworICAgIExheW91dFBvaW50IHZpZXdwb3J0UG9zID0gdi0+d2luZG93VG9Db250ZW50cyhldmVu
dC5wb3NpdGlvbigpKTsKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gZG9jLT5w
cmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCB2aWV3cG9ydFBvcywgZXZlbnQpOwogCkBAIC0yODY5
LDcgKzI4NjksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzCiAg
ICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAgIGlm
ICghZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvcygpKSkgCisgICAgaWYg
KCFkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3Rl
cmVzaXMgcG9pbnQsIHdlIGRvbid0IHdhbnQgdG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xp
Y2sKQEAgLTMyMTQsNyArMzIxNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2
ZW50KGNvbnMKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQgPSBwb2ludHNbaV07
CiAgICAgICAgIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgcG9pbnRTdGF0ZSA9IHBvaW50LnN0
YXRlKCk7Ci0gICAgICAgIExheW91dFBvaW50IHBhZ2VQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JX
aW5kb3dQb2ludChtX2ZyYW1lLCBwb2ludC5wb3MoKSk7CisgICAgICAgIExheW91dFBvaW50IHBh
Z2VQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBwb2ludC5wb3Np
dGlvbigpKTsKIAogICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhp
dFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
OwogICAgICAgICAvLyBUaGUgSGl0VGVzdFJlcXVlc3QgdHlwZXMgdXNlZCBmb3IgbW91c2UgZXZl
bnRzIG1hcCBxdWl0ZSBhZGVxdWF0ZWx5CkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zCiAKICAgICAgICAgaWYgKG1fZnJhbWUgIT0g
ZG9jLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAvLyBwYWdlUG9pbnQgc2hvdWxkIGFsd2F5cyBi
ZSByZWxhdGl2ZSB0byB0aGUgdGFyZ2V0IGVsZW1lbnRzIGNvbnRhaW5pbmcgZnJhbWUuCi0gICAg
ICAgICAgICBwYWdlUG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQoZG9jLT5mcmFt
ZSgpLCBwb2ludC5wb3MoKSk7CisgICAgICAgICAgICBwYWdlUG9pbnQgPSBkb2N1bWVudFBvaW50
Rm9yV2luZG93UG9pbnQoZG9jLT5mcmFtZSgpLCBwb2ludC5wb3NpdGlvbigpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3Io
KSAqIG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCShyZXZpc2lv
biAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvCiAgICAgLy8gZ3JleWVkIG91dCBldmVuIHRob3Vn
aCB3ZSdyZSBjbGlja2luZyBvbiB0aGUgc2VsZWN0aW9uLiAgVGhpcyBsb29rcwogICAgIC8vIHJl
YWxseSBzdHJhbmdlIChoYXZpbmcgdGhlIHdob2xlIGZyYW1lIGJlIGdyZXllZCBvdXQpLCBzbyB3
ZSBkZXNlbGVjdCB0aGUKICAgICAvLyBzZWxlY3Rpb24uCi0gICAgSW50UG9pbnQgcCA9IG1fZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtZXYuZXZlbnQoKS5wb3MoKSk7CisgICAgSW50
UG9pbnQgcCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtZXYuZXZlbnQoKS5w
b3NpdGlvbigpKTsKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKHApKSB7
CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKAogICAgICAgICAgICAgdGFyZ2V0
Tm9kZShtZXYpLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KG1ldi5sb2NhbFBvaW50KCkp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5o
CShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTQgKzk0LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgSW50UG9pbnQm
IHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICAgICAgaW50IHgoKSBjb25z
dCB7IHJldHVybiBtX3Bvc2l0aW9uLngoKTsgfQotICAgICAgICBpbnQgeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24ueSgpOyB9Ci0gICAgICAgIGludCBnbG9iYWxYKCkgY29uc3QgeyByZXR1
cm4gbV9nbG9iYWxQb3NpdGlvbi54KCk7IH0KLSAgICAgICAgaW50IGdsb2JhbFkoKSBjb25zdCB7
IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uLnkoKTsgfQorICAgICAgICBjb25zdCBJbnRQb2ludCYg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgICAgIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247
IH0KICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgICAgICBpbnQgbW92ZW1lbnRYKCkgY29u
c3QgeyByZXR1cm4gbV9tb3ZlbWVudERlbHRhLngoKTsgfQotICAgICAgICBpbnQgbW92ZW1lbnRZ
KCkgY29uc3QgeyByZXR1cm4gbV9tb3ZlbWVudERlbHRhLnkoKTsgfQorICAgICAgICBjb25zdCBJ
bnRQb2ludCYgbW92ZW1lbnREZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbW92ZW1lbnREZWx0YTsg
fQogI2VuZGlmCiAKICAgICAgICAgTW91c2VCdXR0b24gYnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
bV9idXR0b247IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxF
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDggKzEzMyw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBjb3B5OwogICAgICAgICB9CiAK
LSAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247
IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCi0gICAgICAgIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3MoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9IC8vIFNjcmVl
biBjb29yZGluYXRlcy4KKyAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbjsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KKyAg
ICAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCiAKICAgICAgICAgZmxvYXQg
ZGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVg7IH0KICAgICAgICAgZmxvYXQgZGVsdGFZ
KCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDE0ICszMzcsMTQgQEAgYm9v
bCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcgogICAgICAgICAgICAgICAgIG1f
c2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihtX29yaWVudGF0
aW9uLCBtX2RyYWdPcmlnaW4pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZVRo
dW1iKG1fb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAotICAgICAgICAgICAg
ICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkpLngoKSA6Ci0g
ICAgICAgICAgICAgICAgICAgICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3Mo
KSkueSgpLCB0aGVtZSgpLT5zaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYih0aGlzLCBl
dnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
ZXZ0LnBvc2l0aW9uKCkpLngoKSA6CisgICAgICAgICAgICAgICAgICAgICAgY29udmVydEZyb21D
b250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS55KCksIHRoZW1lKCktPnNob3VsZERyYWdE
b2N1bWVudEluc3RlYWRPZlRodW1iKHRoaXMsIGV2dCkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChtX3ByZXNzZWRQYXJ0ICE9IE5vUGFydCkKLSAg
ICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkpLngoKSA6IGNvbnZlcnRG
cm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkpLnkoKSk7CisgICAgICAgIG1fcHJlc3NlZFBv
cyA9IChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1dpbmRvdyhldnQucG9zaXRpb24oKSkueSgpKTsKIAogICAgIFNjcm9sbGJhclBhcnQgcGFydCA9
IHRoZW1lKCktPmhpdFRlc3QodGhpcywgZXZ0KTsKICAgICBpZiAocGFydCAhPSBtX2hvdmVyZWRQ
YXJ0KSB7CkBAIC00MTAsNyArNDEwLDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlRG93bihjb25z
dCBQbGF0Zm9ybQogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRklYTUU6IEhhbmRsZWQgYXMgY29u
dGV4dCBtZW51IGJ5IFF0IHJpZ2h0IG5vdy4gIFNob3VsZCBqdXN0IGF2b2lkIGV2ZW4gY2FsbGlu
ZyB0aGlzIG1ldGhvZCBvbiBhIHJpZ2h0IGNsaWNrIHRob3VnaC4KIAogICAgIHNldFByZXNzZWRQ
YXJ0KHRoZW1lKCktPmhpdFRlc3QodGhpcywgZXZ0KSk7Ci0gICAgaW50IHByZXNzZWRQb3MgPSAo
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWlu
aW5nV2luZG93KGV2dC5wb3MoKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2
dC5wb3MoKSkueSgpKTsKKyAgICBpbnQgcHJlc3NlZFBvcyA9IChvcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0
aW9uKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSku
eSgpKTsKICAgICAKICAgICBpZiAoKG1fcHJlc3NlZFBhcnQgPT0gQmFja1RyYWNrUGFydCB8fCBt
X3ByZXNzZWRQYXJ0ID09IEZvcndhcmRUcmFja1BhcnQpICYmIHRoZW1lKCktPnNob3VsZENlbnRl
ck9uVGh1bWIodGhpcywgZXZ0KSkgewogICAgICAgICBzZXRIb3ZlcmVkUGFydChUaHVtYlBhcnQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmNwcAkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyAr
MTIyLDcgQEAgU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aAogICAgIGlm
ICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBJ
bnRQb2ludCBtb3VzZVBvc2l0aW9uID0gc2Nyb2xsYmFyLT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coZXZ0LnBvcygpKTsKKyAgICBJbnRQb2ludCBtb3VzZVBvc2l0aW9uID0gc2Nyb2xsYmFy
LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpOwogICAgIG1vdXNl
UG9zaXRpb24ubW92ZShzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkpOwogICAgIAogICAg
IGlmICghc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5jb250YWlucyhtb3VzZVBvc2l0aW9uKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRh
aW5lci5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTEgKzY4LDEx
IEBAIHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY29uc3RydWN0UmVsYXQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lbGVzc1Njcm9s
bFZpZXcqIHBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZyYW1lbGVzc1Njcm9sbFZpZXcqIGNoaWxkKQogewotICAgIEludFBvaW50
IHBvcyA9IHBhcmVudC0+Y29udmVydFNlbGZUb0NoaWxkKGNoaWxkLCBlLnBvcygpKTsKKyAgICBJ
bnRQb2ludCBwb3MgPSBwYXJlbnQtPmNvbnZlcnRTZWxmVG9DaGlsZChjaGlsZCwgZS5wb3NpdGlv
bigpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaG9ycmlibGUgaGFjayBzaW5jZSBQbGF0
Zm9ybU1vdXNlRXZlbnQgaGFzIG5vIHNldHRlcnMgZm9yIHgveS4KICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgcmVsYXRpdmVFdmVudCA9IGU7Ci0gICAgSW50UG9pbnQmIHJlbGF0aXZlUG9zID0gY29u
c3RfY2FzdDxJbnRQb2ludCY+KHJlbGF0aXZlRXZlbnQucG9zKCkpOworICAgIEludFBvaW50JiBy
ZWxhdGl2ZVBvcyA9IGNvbnN0X2Nhc3Q8SW50UG9pbnQmPihyZWxhdGl2ZUV2ZW50LnBvc2l0aW9u
KCkpOwogICAgIHJlbGF0aXZlUG9zLnNldFgocG9zLngoKSk7CiAgICAgcmVsYXRpdmVQb3Muc2V0
WShwb3MueSgpKTsKICAgICByZXR1cm4gcmVsYXRpdmVFdmVudDsKQEAgLTgyLDExICs4MiwxMSBA
QCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNvbnN0cnVjdFJlbGF0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWxlc3NTY3JvbGxW
aWV3KiBwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGcmFtZWxlc3NTY3JvbGxWaWV3KiBjaGlsZCkKIHsKLSAgICBJbnRQb2ludCBw
b3MgPSBwYXJlbnQtPmNvbnZlcnRTZWxmVG9DaGlsZChjaGlsZCwgZS5wb3MoKSk7CisgICAgSW50
UG9pbnQgcG9zID0gcGFyZW50LT5jb252ZXJ0U2VsZlRvQ2hpbGQoY2hpbGQsIGUucG9zaXRpb24o
KSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhvcnJpYmxlIGhhY2sgc2luY2UgUGxhdGZv
cm1XaGVlbEV2ZW50IGhhcyBubyBzZXR0ZXJzIGZvciB4L3kuCiAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50IHJlbGF0aXZlRXZlbnQgPSBlOwotICAgIEludFBvaW50JiByZWxhdGl2ZVBvcyA9IGNvbnN0
X2Nhc3Q8SW50UG9pbnQmPihyZWxhdGl2ZUV2ZW50LnBvcygpKTsKKyAgICBJbnRQb2ludCYgcmVs
YXRpdmVQb3MgPSBjb25zdF9jYXN0PEludFBvaW50Jj4ocmVsYXRpdmVFdmVudC5wb3NpdGlvbigp
KTsKICAgICByZWxhdGl2ZVBvcy5zZXRYKHBvcy54KCkpOwogICAgIHJlbGF0aXZlUG9zLnNldFko
cG9zLnkoKSk7CiAgICAgcmV0dXJuIHJlbGF0aXZlRXZlbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAJKHJldmlzaW9uIDEw
MzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDE0ICs4MywxNCBAQCBQb3B1cExpc3RCb3g6OlBvcHVw
TGlzdEJveChQb3B1cE1lbnVDbGllCiAKIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZURv
d25FdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIFNjcm9sbGJh
ciogc2Nyb2xsYmFyID0gc2Nyb2xsYmFyQXRQb2ludChldmVudC5wb3MoKSk7CisgICAgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIgPSBzY3JvbGxiYXJBdFBvaW50KGV2ZW50LnBvc2l0aW9uKCkpOwogICAg
IGlmIChzY3JvbGxiYXIpIHsKICAgICAgICAgbV9jYXB0dXJpbmdTY3JvbGxiYXIgPSBzY3JvbGxi
YXI7CiAgICAgICAgIG1fY2FwdHVyaW5nU2Nyb2xsYmFyLT5tb3VzZURvd24oZXZlbnQpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIWlzUG9pbnRJbkJvdW5kcyhldmVu
dC5wb3MoKSkpCisgICAgaWYgKCFpc1BvaW50SW5Cb3VuZHMoZXZlbnQucG9zaXRpb24oKSkpCiAg
ICAgICAgIGFiYW5kb24oKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTAzLDcgKzEwMyw3IEBA
IGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSBzY3JvbGxiYXJBdFBv
aW50KGV2ZW50LnBvcygpKTsKKyAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9IHNjcm9sbGJhckF0
UG9pbnQoZXZlbnQucG9zaXRpb24oKSk7CiAgICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91
c2UgIT0gc2Nyb2xsYmFyKSB7CiAgICAgICAgIC8vIFNlbmQgbW91c2UgZXhpdGVkIHRvIHRoZSBv
bGQgc2Nyb2xsYmFyLgogICAgICAgICBpZiAobV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSkKQEAg
LTExNiwxMCArMTE2LDEwIEBAIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZU1vdmVFdmVu
dCgKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFpc1BvaW50SW5Cb3Vu
ZHMoZXZlbnQucG9zKCkpKQorICAgIGlmICghaXNQb2ludEluQm91bmRzKGV2ZW50LnBvc2l0aW9u
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzZWxlY3RJbmRleChwb2ludFRvUm93
SW5kZXgoZXZlbnQucG9zKCkpKTsKKyAgICBzZWxlY3RJbmRleChwb2ludFRvUm93SW5kZXgoZXZl
bnQucG9zaXRpb24oKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzEsMTIgKzEzMSwx
MiBAQCBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghaXNQb2ludEluQm91bmRzKGV2ZW50LnBvcygp
KSkKKyAgICBpZiAoIWlzUG9pbnRJbkJvdW5kcyhldmVudC5wb3NpdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBOZWVkIHRvIGNoZWNrIGJlZm9yZSBjYWxsaW5nIGFjY2Vw
dEluZGV4KCksIGJlY2F1c2UgbV9wb3B1cENsaWVudCBtaWdodCBiZSByZW1vdmVkIGluIGFjY2Vw
dEluZGV4KCkgY2FsbGluZyBiZWNhdXNlIG9mIGV2ZW50IGhhbmRsZXIuCiAgICAgYm9vbCBpc1Nl
bGVjdFBvcHVwID0gbV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkubWVudVR5cGUoKSA9PSBQb3B1
cE1lbnVTdHlsZTo6U2VsZWN0UG9wdXA7Ci0gICAgaWYgKGFjY2VwdEluZGV4KHBvaW50VG9Sb3dJ
bmRleChldmVudC5wb3MoKSkpICYmIG1fZm9jdXNlZE5vZGUgJiYgaXNTZWxlY3RQb3B1cCkgewor
ICAgIGlmIChhY2NlcHRJbmRleChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9zaXRpb24oKSkpICYm
IG1fZm9jdXNlZE5vZGUgJiYgaXNTZWxlY3RQb3B1cCkgewogICAgICAgICBtX2ZvY3VzZWROb2Rl
LT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpOwog
ICAgICAgICBtX2ZvY3VzZWROb2RlLT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50KTsKIApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgUG9wdXBMaXN0Qm94
OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmUKIAogYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIWlzUG9p
bnRJbkJvdW5kcyhldmVudC5wb3MoKSkpIHsKKyAgICBpZiAoIWlzUG9pbnRJbkJvdW5kcyhldmVu
dC5wb3NpdGlvbigpKSkgewogICAgICAgICBhYmFuZG9uKCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiAxMDMy
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNuCiAgICAgcmVjdC5pbmZsYXRlWSgoaG9yeiA/
IGtPZmZTaWRlTXVsdGlwbGllciA6IGtPZmZFbmRNdWx0aXBsaWVyKSAqIHRoaWNrbmVzcyk7CiAK
ICAgICAvLyBDb252ZXJ0IHRoZSBldmVudCB0byBsb2NhbCBjb29yZGluYXRlcy4KLSAgICBJbnRQ
b2ludCBtb3VzZVBvc2l0aW9uID0gc2Nyb2xsYmFyLT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3coZXZ0LnBvcygpKTsKKyAgICBJbnRQb2ludCBtb3VzZVBvc2l0aW9uID0gc2Nyb2xsYmFyLT5j
b252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpOwogICAgIG1vdXNlUG9z
aXRpb24ubW92ZShzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkpOwogCiAgICAgLy8gV2Ug
c2hvdWxkIHNuYXAgaWZmIHRoZSBldmVudCBpcyBvdXRzaWRlIG91ciBjYWxjdWxhdGVkIHJlY3Qu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyUXQuY3BwCShyZXZp
c2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBTY3JvbGxiYXI6OmNvbnRl
eHRNZW51KGNvbnN0IFBsYXRmbwogICAgICAgICAvLyB0aHVtYiB0byB0aGUgbmV3IHBvc2l0aW9u
CiAgICAgICAgIGludCBwb3NpdGlvbiA9IHRoZW1lKCktPnRyYWNrUG9zaXRpb24odGhpcykgKyB0
aGVtZSgpLT50aHVtYlBvc2l0aW9uKHRoaXMpICsgdGhlbWUoKS0+dGh1bWJMZW5ndGgodGhpcykg
LyAyOwogICAgICAgICBzZXRQcmVzc2VkUG9zKHBvc2l0aW9uKTsgCi0gICAgICAgIGNvbnN0IFFQ
b2ludCBwb3MgPSBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZlbnQucG9zKCkpOworICAg
ICAgICBjb25zdCBRUG9pbnQgcG9zID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2ZW50
LnBvc2l0aW9uKCkpOwogICAgICAgICBtb3ZlVGh1bWIoaG9yaXpvbnRhbCA/IHBvcy54KCkgOiBw
b3MueSgpKTsKICAgICB9IGVsc2UgaWYgKGFjdGlvblNlbGVjdGVkID09IGFjdFNjcm9sbFRvcCkK
ICAgICAgICAgc2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsKGhvcml6b250YWwgPyBTY3JvbGxMZWZ0
IDogU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChT
Y3JvbGxiYXIqIAogU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBR
U3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7Ci0g
ICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250YWluaW5nV2lu
ZG93KGV2dC5wb3MoKSk7CisgICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9sbGJhci0+Y29udmVy
dEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKTsKICAgICBvcHQtPnJlY3QubW92
ZVRvKFFQb2ludCgwLCAwKSk7CiAgICAgUVN0eWxlOjpTdWJDb250cm9sIHNjID0gc3R5bGUoKS0+
aGl0VGVzdENvbXBsZXhDb250cm9sKFFTdHlsZTo6Q0NfU2Nyb2xsQmFyLCBvcHQsIHBvcywgMCk7
CiAgICAgcmV0dXJuIHNjcm9sbGJhclBhcnQoc2MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCShyZXZpc2lvbiAxMDMyNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6
c2hvdWxkU25hcEJhY2tUbwogICAgIHJlY3QuaW5mbGF0ZVkoKGhvcnogPyBrT2ZmU2lkZU11bHRp
cGxpZXIgOiBrT2ZmRW5kTXVsdGlwbGllcikgKiB0aGlja25lc3MpOwogCiAgICAgLy8gQ29udmVy
dCB0aGUgZXZlbnQgdG8gbG9jYWwgY29vcmRpbmF0ZXMuCi0gICAgSW50UG9pbnQgbW91c2VQb3Np
dGlvbiA9IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSk7
CisgICAgSW50UG9pbnQgbW91c2VQb3NpdGlvbiA9IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250
YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKTsKICAgICBtb3VzZVBvc2l0aW9uLm1vdmUoc2Ny
b2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBzbmFwIGlm
ZiB0aGUgZXZlbnQgaXMgb3V0c2lkZSBvdXIgY2FsY3VsYXRlZCByZWN0LgpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjkzLDcgKzE2OTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZv
cm1NCiAKICAgICBmbG9hdCB6b29tRmFjdG9yID0gcmVuZGVyZXItPnN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKTsKIAotICAgIExheW91dFNpemUgbmV3T2Zmc2V0ID0gb2Zmc2V0RnJvbVJlc2l6ZUNv
cm5lcihkb2N1bWVudC0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2dC5wb3MoKSkpOworICAg
IExheW91dFNpemUgbmV3T2Zmc2V0ID0gb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihkb2N1bWVudC0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2dC5wb3NpdGlvbigpKSk7CiAgICAgbmV3T2Zmc2V0
LnNldFdpZHRoKG5ld09mZnNldC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAgICAgbmV3T2Zmc2V0
LnNldEhlaWdodChuZXdPZmZzZXQuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTE5ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9yZSBQbGF0Zm9ybUV2ZW50IGNsZWFudXAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUNvbnRleHRNZW51
RXZlbnQpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyBuYW1lcywgYWNjZXNzIHN0eWxlLgor
CiAyMDExLTEyLTE5ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gUVdlYkRvd25sb2FkSXRlbXMgYXJlIGxl
YWtpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgc3Rh
dGljIGJvb2wgaXNDb250ZXh0Q2xpY2soY29uc3QgUGxhdGZvcgogCiBzdGF0aWMgYm9vbCBoYW5k
bGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3Vz
ZUV2ZW50LCBQYWdlKiBwYWdlKQogewotICAgIEludFBvaW50IHBvaW50ID0gcGFnZS0+bWFpbkZy
YW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwbGF0Zm9ybU1vdXNlRXZlbnQucG9zKCkp
OworICAgIEludFBvaW50IHBvaW50ID0gcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhwbGF0Zm9ybU1vdXNlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMy
NzgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDExLTEyLTE5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW9yZSBQbGF0Zm9ybUV2ZW50IGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bW91c2VDb250ZXh0TWVudSk6CisgICAgICAgIFVw
ZGF0ZSB0byB1c2UgbmV3IG5hbWVzLCBhY2Nlc3Mgc3R5bGUuCisKIDIwMTEtMTItMTkgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBt
b3JlIHVzaW5nIHN0YXRlbWVudHMgdG8gKHJlKWZpeCBDaHJvbWl1bSBidWlsZGVycy4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEw
MzI3OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlQ29u
dGV4dE1lbnUoY29uc3QKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyIHBtZShtYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7CiAKICAgICAvLyBGaW5kIHRoZSByaWdodCB0
YXJnZXQgZnJhbWUuIFNlZSBpc3N1ZSAxMTg2OTAwLgotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gaGl0VGVzdFJlc3VsdEZvcldpbmRvd1BvcyhwbWUucG9zKCkpOworICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEZvcldpbmRvd1BvcyhwbWUucG9zaXRpb24oKSk7CiAg
ICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgIGlmIChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCkpCiAgICAgICAgIHRhcmdldEZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5k
b2N1bWVudCgpLT5mcmFtZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjc4
KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMTItMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBNb3JlIFBsYXRmb3JtRXZlbnQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2hpdF90ZXN0X3Jlc3VsdCk6CisgICAgICAgIFVwZGF0ZSB0
byB1c2UgbmV3IG5hbWVzLCBhY2Nlc3Mgc3R5bGUuCisKIDIwMTEtMTItMTYgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVuYW1lIHJlZ2lzdGVyQ29tbWFuZEZv
cihVbmRvfFJlZG8pIHRvIHJlZ2lzdGVyKFVuZG98UmVkbylTdGVwCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Zvcndh
cmRfCiAgICAgbWFpbkZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwog
ICAgIGlmIChwYWdlLT5mcmFtZUNvdW50KCkpIHsKICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVx
dWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKLSAgICAgICAgSW50UG9pbnQgcG9pbnQgPSBt
YWluRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7CisgICAgICAg
IEludFBvaW50IHBvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZl
bnQucG9zaXRpb24oKSk7CiAgICAgICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2
ID0gbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2lu
dCwgZXZlbnQpOwogCiAgICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IEV2ZW50SGFuZGxlcjo6
c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CkBAIC00Nzg1LDcgKzQ3ODUsNyBAQCBXZWJL
aXRIaXRUZXN0UmVzdWx0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0CiAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1vdXNlRXZlbnQgPSBQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpOwogICAgIEZyYW1lKiBm
cmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUp
OwotICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9p
bnQoZnJhbWUsIG1vdXNlRXZlbnQucG9zKCkpOworICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQg
PSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQoZnJhbWUsIG1vdXNlRXZlbnQucG9zaXRpb24o
KSk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVu
dCk7CiAKICAgICByZXR1cm4ga2l0KG1ldi5oaXRUZXN0UmVzdWx0KCkpOwpJbmRleDogU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMTkgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3JlIFBsYXRmb3JtRXZlbnQgY2xlYW51cAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c3dhbGxvd0NvbnRleHRNZW51RXZlbnQpOgorICAg
ICAgICBVcGRhdGUgdG8gdXNlIG5ldyBuYW1lcywgYWNjZXNzIHN0eWxlLgorCiAyMDExLTEyLTE5
ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFoZkAweDkwLmRrPgogCiAgICAgICAgIFtRdF0gQ2xlYW51
cCBRVE1fTkFNRVNQQUNFIHVzYWdlIGluIERldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdApJbmRl
eDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjczLDcgKzMy
NzMsNyBAQCBib29sIFFXZWJQYWdlOjpzd2FsbG93Q29udGV4dE1lbnVFdmVudChRCiAgICAgaWYg
KCFSZW5kZXJUaGVtZVF0Ojp1c2VNb2JpbGVUaGVtZSgpKSB7CiAgICAgICAgIGlmIChRV2ViRnJh
bWUqIHdlYkZyYW1lID0gZnJhbWVBdChldmVudC0+cG9zKCkpKSB7CiAgICAgICAgICAgICBGcmFt
ZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHdlYkZyYW1lKTsKLSAgICAgICAgICAg
IGlmIChTY3JvbGxiYXIqIHNjcm9sbGJhciA9IGZyYW1lLT52aWV3KCktPnNjcm9sbGJhckF0UG9p
bnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCAxKS5wb3MoKSkpCisgICAgICAgICAgICBpZiAo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSBmcmFtZS0+dmlldygpLT5zY3JvbGxiYXJBdFBvaW50KFBs
YXRmb3JtTW91c2VFdmVudChldmVudCwgMSkucG9zaXRpb24oKSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHNjcm9sbGJhci0+Y29udGV4dE1lbnUoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCAx
KSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMy
NzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisg
ICAgICAgIE1vcmUgUGxhdGZvcm1FdmVudCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgVXBkYXRlIHRvIHVzZSBuZXcgbmFtZXMsIGFj
Y2VzcyBzdHlsZS4KKwogMjAxMS0xMi0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZW5hbWUgcmVnaXN0ZXJDb21tYW5kRm9yKFVuZG98UmVkbykgdG8gcmVn
aXN0ZXIoVW5kb3xSZWRvKVN0ZXAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAx
MDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ2NSw4ICsxNDY1LDggQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KFVJTlQg
bWVzcwogCiAgICAgc2V0TW91c2VBY3RpdmF0ZWQoZmFsc2UpOwogCi0gICAgYm9vbCBpbnNpZGVU
aHJlc2hvbGQgPSBhYnMoZ2xvYmFsUHJldlBvaW50LngoKSAtIG1vdXNlRXZlbnQucG9zKCkueCgp
KSA8IDo6R2V0U3lzdGVtTWV0cmljcyhTTV9DWERPVUJMRUNMSykgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFicyhnbG9iYWxQcmV2UG9pbnQueSgpIC0gbW91c2VFdmVudC5wb3MoKS55
KCkpIDwgOjpHZXRTeXN0ZW1NZXRyaWNzKFNNX0NZRE9VQkxFQ0xLKTsKKyAgICBib29sIGluc2lk
ZVRocmVzaG9sZCA9IGFicyhnbG9iYWxQcmV2UG9pbnQueCgpIC0gbW91c2VFdmVudC5wb3NpdGlv
bigpLngoKSkgPCA6OkdldFN5c3RlbU1ldHJpY3MoU01fQ1hET1VCTEVDTEspICYmCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhYnMoZ2xvYmFsUHJldlBvaW50LnkoKSAtIG1vdXNlRXZlbnQu
cG9zaXRpb24oKS55KCkpIDwgOjpHZXRTeXN0ZW1NZXRyaWNzKFNNX0NZRE9VQkxFQ0xLKTsKICAg
ICBMT05HIG1lc3NhZ2VUaW1lID0gOjpHZXRNZXNzYWdlVGltZSgpOwogCiAgICAgYm9vbCBoYW5k
bGVkID0gZmFsc2U7CkBAIC0xNDg5LDcgKzE0ODksNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZU1v
dXNlRXZlbnQoVUlOVCBtZXNzCiAgICAgICAgICAgICBnbG9iYWxDbGlja0NvdW50ID0gMTsKICAg
ICAgICAgZ2xvYmFsUHJldk1vdXNlRG93blRpbWUgPSBtZXNzYWdlVGltZTsKICAgICAgICAgZ2xv
YmFsUHJldkJ1dHRvbiA9IG1vdXNlRXZlbnQuYnV0dG9uKCk7Ci0gICAgICAgIGdsb2JhbFByZXZQ
b2ludCA9IG1vdXNlRXZlbnQucG9zKCk7CisgICAgICAgIGdsb2JhbFByZXZQb2ludCA9IG1vdXNl
RXZlbnQucG9zaXRpb24oKTsKICAgICAgICAgCiAgICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tD
b3VudChnbG9iYWxDbGlja0NvdW50KTsKICAgICAgICAgaGFuZGxlZCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VFdmVudCk7
CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoVUlO
VCBtZXNzCiAgICAgfSBlbHNlIGlmIChtZXNzYWdlID09IFdNX0xCVVRUT05VUCB8fCBtZXNzYWdl
ID09IFdNX01CVVRUT05VUCB8fCBtZXNzYWdlID09IFdNX1JCVVRUT05VUCkgewogICAgICAgICAv
LyBSZWNvcmQgdGhlIGdsb2JhbCBwb3NpdGlvbiBhbmQgdGhlIGJ1dHRvbiBvZiB0aGUgdXAuCiAg
ICAgICAgIGdsb2JhbFByZXZCdXR0b24gPSBtb3VzZUV2ZW50LmJ1dHRvbigpOwotICAgICAgICBn
bG9iYWxQcmV2UG9pbnQgPSBtb3VzZUV2ZW50LnBvcygpOworICAgICAgICBnbG9iYWxQcmV2UG9p
bnQgPSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7CiAgICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tD
b3VudChnbG9iYWxDbGlja0NvdW50KTsKICAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgICAg
ICA6OlJlbGVhc2VDYXB0dXJlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTAzMjc4KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1vcmUgUGxhdGZvcm1FdmVudCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgVXBkYXRlIHRvIHVzZSBuZXcgbmFt
ZXMsIGFjY2VzcyBzdHlsZS4KKwogMjAxMS0xMi0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW5hbWUgcmVnaXN0ZXJDb21tYW5kRm9yKFVuZG98UmVkbykg
dG8gcmVnaXN0ZXIoVW5kb3xSZWRvKVN0ZXAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAko
cmV2aXNpb24gMTAzMjc4KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg4LDggKzI4OCw4IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlTW91c2VF
dmVudChIV05EIGhXbmQKICAgICAvLyBvZiB0aGUgZXZlbnQgdG8gYmUgYXQgKE1JTlNIT1JULCBN
SU5TSE9SVCkuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQoaFduZCwgbWVzc2Fn
ZSwgd1BhcmFtLCBsUGFyYW0pOwogCi0gICAgYm9vbCBpbnNpZGVUaHJlc2hvbGQgPSBhYnMoZ2xv
YmFsUHJldlBvaW50LngoKSAtIG1vdXNlRXZlbnQucG9zKCkueCgpKSA8IDo6R2V0U3lzdGVtTWV0
cmljcyhTTV9DWERPVUJMRUNMSykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGFicyhn
bG9iYWxQcmV2UG9pbnQueSgpIC0gbW91c2VFdmVudC5wb3MoKS55KCkpIDwgOjpHZXRTeXN0ZW1N
ZXRyaWNzKFNNX0NZRE9VQkxFQ0xLKTsKKyAgICBib29sIGluc2lkZVRocmVzaG9sZCA9IGFicyhn
bG9iYWxQcmV2UG9pbnQueCgpIC0gbW91c2VFdmVudC5wb3NpdGlvbigpLngoKSkgPCA6OkdldFN5
c3RlbU1ldHJpY3MoU01fQ1hET1VCTEVDTEspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBhYnMoZ2xvYmFsUHJldlBvaW50LnkoKSAtIG1vdXNlRXZlbnQucG9zaXRpb24oKS55KCkpIDwg
OjpHZXRTeXN0ZW1NZXRyaWNzKFNNX0NZRE9VQkxFQ0xLKTsKICAgICBMT05HIG1lc3NhZ2VUaW1l
ID0gMDsKIAogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJv
b2wgV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChIV05EIGhXbmQKICAgICAgICAgICAgIGdsb2Jh
bENsaWNrQ291bnQgPSAxOwogICAgICAgICBnbG9iYWxQcmV2TW91c2VEb3duVGltZSA9IG1lc3Nh
Z2VUaW1lOwogICAgICAgICBnbG9iYWxQcmV2QnV0dG9uID0gbW91c2VFdmVudC5idXR0b24oKTsK
LSAgICAgICAgZ2xvYmFsUHJldlBvaW50ID0gbW91c2VFdmVudC5wb3MoKTsKKyAgICAgICAgZ2xv
YmFsUHJldlBvaW50ID0gbW91c2VFdmVudC5wb3NpdGlvbigpOwogCiAgICAgICAgIG1vdXNlRXZl
bnQuc2V0Q2xpY2tDb3VudChnbG9iYWxDbGlja0NvdW50KTsKICAgICAgICAgaGFuZGxlZCA9IG1f
cGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQo
bW91c2VFdmVudCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVNb3Vz
ZUV2ZW50KEhXTkQgaFduZAogICAgIH0gZWxzZSBpZiAobWVzc2FnZSA9PSBXTV9MQlVUVE9OVVAg
fHwgbWVzc2FnZSA9PSBXTV9NQlVUVE9OVVAgfHwgbWVzc2FnZSA9PSBXTV9SQlVUVE9OVVApIHsK
ICAgICAgICAgLy8gUmVjb3JkIHRoZSBnbG9iYWwgcG9zaXRpb24gYW5kIHRoZSBidXR0b24gb2Yg
dGhlIHVwLgogICAgICAgICBnbG9iYWxQcmV2QnV0dG9uID0gbW91c2VFdmVudC5idXR0b24oKTsK
LSAgICAgICAgZ2xvYmFsUHJldlBvaW50ID0gbW91c2VFdmVudC5wb3MoKTsKKyAgICAgICAgZ2xv
YmFsUHJldlBvaW50ID0gbW91c2VFdmVudC5wb3NpdGlvbigpOwogICAgICAgICBtb3VzZUV2ZW50
LnNldENsaWNrQ291bnQoZ2xvYmFsQ2xpY2tDb3VudCk7CiAgICAgICAgIG1fcGFnZS0+bWFpbkZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50
KTsKICAgICAgICAgUmVsZWFzZUNhcHR1cmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119958</attachid>
            <date>2011-12-19 17:21:24 -0800</date>
            <delta_ts>2011-12-19 20:07:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74831-20111219172105.patch</filename>
            <type>text/plain</type>
            <size>40014</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDExLTEyLTE5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9yZSBQbGF0Zm9ybUV2ZW50IGNsZWFu
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTW91
c2VFdmVudDo6cG9zaXRpb24pOgorICAgICAgICBSZW5hbWUgcG9zIC0+IHBvc2l0aW9uKCkuIFJl
bW92ZSB4KCkgYW5kIHkoKSBhY2Nlc3NvcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudDo6Z2xvYmFsUG9zaXRpb24pOgorICAgICAgICBBZGRlZC4gUmVwbGFjZXMgZ2xv
YmFsWCgpIGFuZCBnbG9iYWxZKCkgYWNjZXNzb3JzLgorCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1vdXNlRXZlbnQ6Om1vdmVtZW50RGVsdGEpOgorICAgICAgICBBZGRlZC4gUmVwbGFjZXMg
bW92ZW1lbnRYKCkgYW5kIG1vdmVtZW50WSgpIGFjY2Vzc29ycy4KKworICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50Ojpwb3NpdGlvbik6CisgICAgICAgIFJlbmFtZWQgcG9zIC0+IHBvc2l0aW9uKCkuCisK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6Z2xvYmFsUG9zaXRpb24pOgor
ICAgICAgICBSZW5hbWVkIGdsb2JhbFBvcyAtPiBnbG9iYWxQb3NpdGlvbigpLgorCisgICAgICAg
ICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3IpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRT
aW5nbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3Rh
cnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWNr
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cHJlcGFyZU1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9F
dmVudEhhbmRsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZU1vdmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VEb3duKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0UmVsYXRpdmVN
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFJlbGF0aXZlV2hlZWxFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VEb3duRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJh
Z09yaWdpbik6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2Nyb2xsYmFyUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250ZXh0TWVudSk6CisgICAgICAgICogcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVF0OjpoaXRUZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNr
VG9EcmFnT3JpZ2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc2l6ZSk6CisgICAgICAgIFVwZGF0ZSB0byB1
c2UgbmV3IG5hbWVzLCBhY2Nlc3Mgc3R5bGUuCisKIDIwMTEtMTItMTkgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBTZW5kIGdlc3R1cmUgZXZlbnRzIHRo
cm91Z2ggdGhlIGV2ZW50IGRpc3BhdGNoZXIgYW5kIHNjcm9sbGluZyBjb29yZGluYXRvcgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw5
IEBAIFBhc3NSZWZQdHI8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXQKICAgICBib29sIGlz
Q2FuY2VsYWJsZSA9IGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CiAK
ICAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgaXNDYW5jZWxh
YmxlLCB2aWV3LAotICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFgoKSwgZXZlbnQuZ2xvYmFs
WSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwKKyAgICAgICAgZGV0YWlsLCBldmVudC5nbG9iYWxQ
b3NpdGlvbigpLngoKSwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCksIGV2ZW50LnBvc2l0aW9u
KCkueCgpLCBldmVudC5wb3NpdGlvbigpLnkoKSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQot
ICAgICAgICBldmVudC5tb3ZlbWVudFgoKSwgZXZlbnQubW92ZW1lbnRZKCksCisgICAgICAgIGV2
ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCiAjZW5k
aWYKICAgICAgICAgZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRL
ZXkoKSwgZXZlbnQubWV0YUtleSgpLCBldmVudC5idXR0b24oKSwKICAgICAgICAgcmVsYXRlZFRh
cmdldCwgMCwgZmFsc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkocmV2aXNp
b24gMTAzMjc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6Oldo
ZWVsRXZlbnREaQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRFdmVudChXaGVlbEV2ZW50Ojpj
cmVhdGUoRmxvYXRQb2ludChldmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRpY2tzWSgp
KSwgRmxvYXRQb2ludChldmVudC5kZWx0YVgoKSwgZXZlbnQuZGVsdGFZKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBncmFudWxhcml0eShldmVudCksIHZpZXcsIGV2ZW50Lmds
b2JhbFBvcygpLCBldmVudC5wb3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3JhbnVsYXJpdHkoZXZlbnQpLCB2aWV3LCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5w
b3NpdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jdHJsS2V5
KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCksIGV2
ZW50LmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSgpKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE5LDcg
KzcxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3IKICAgICBL
VVJMIGxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgIEtVUkwg
aW1hZ2VVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKIAotICAgIEludFBv
aW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJh
Z0V2ZW50LnBvcygpKTsKKyAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy0+dmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlvbigpKTsKIAogICAgIG1fZHJh
Z2dpbmdJbWFnZVVSTCA9IEtVUkwoKTsKICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNP
cDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDEwMzI3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAyLDcgKzQwMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNz
RXZlbnQKICAgICAvLyBEb24ndCByZXN0YXJ0IHRoZSBzZWxlY3Rpb24gd2hlbiB0aGUgbW91c2Ug
aXMgcHJlc3NlZCBvbiBhbgogICAgIC8vIGV4aXN0aW5nIHNlbGVjdGlvbiBzbyB3ZSBjYW4gYWxs
b3cgZm9yIHRleHQgZHJhZ2dpbmcuCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUt
PnZpZXcoKSkgewotICAgICAgICBMYXlvdXRQb2ludCB2UG9pbnQgPSB2aWV3LT53aW5kb3dUb0Nv
bnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zKCkpOworICAgICAgICBMYXlvdXRQb2ludCB2UG9pbnQg
PSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSk7CiAgICAg
ICAgIGlmICghZXh0ZW5kU2VsZWN0aW9uICYmIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5jb250YWlu
cyh2UG9pbnQpKSB7CiAgICAgICAgICAgICBtX21vdXNlRG93bldhc1NpbmdsZUNsaWNrSW5TZWxl
Y3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY0LDcgKzQ2NCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICBjYW5jZWxG
YWtlTW91c2VNb3ZlRXZlbnQoKTsKIAogICAgIGlmIChTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0g
bV9mcmFtZS0+dmlldygpKSB7Ci0gICAgICAgIGlmIChzY3JvbGxWaWV3LT5pc1BvaW50SW5TY3Jv
bGxiYXJDb3JuZXIoZXZlbnQuZXZlbnQoKS5wb3MoKSkpCisgICAgICAgIGlmIChzY3JvbGxWaWV3
LT5pc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQ5MSw3ICs0OTEsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgICAgICYmIHN0YXRpY19j
YXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnpvb21BbmRQYW5FbmFibGVk
KCkpIHsKICAgICAgICAgaWYgKGV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKSAmJiBzaW5nbGVDbGlj
aykgewogICAgICAgICAgICAgbV9zdmdQYW4gPSB0cnVlOwotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+c3RhcnRQYW4obV9mcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zKCkpKTsKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnN0YXJ0
UGFuKG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvc2l0
aW9uKCkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NTA2LDcgKzUwNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQK
IAogICAgIG1fbW91c2VQcmVzc05vZGUgPSBpbm5lck5vZGU7CiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSAgICBtX2RyYWdTdGFydFBvcyA9IGV2ZW50LmV2ZW50KCkucG9zKCk7CisgICAgbV9k
cmFnU3RhcnRQb3MgPSBldmVudC5ldmVudCgpLnBvc2l0aW9uKCk7CiAjZW5kaWYKIAogICAgIGJv
b2wgc3dhbGxvd0V2ZW50ID0gZmFsc2U7CkBAIC02MjYsNyArNjI2LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbgogCiAgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlv
bnNBbGxvd2VkKCk7CiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVu
dHMoZXZlbnQucG9zKCkpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIERyYWdTdGF0ZSBz
dGF0ZTsKICAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9s
bGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCByZXN1bHQu
cG9pbnQoKSwgc3RhdGUpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVJlbGVhc2VFdmUKICAgICAvLyBlZGl0aW5nLCBwbGFjZSB0aGUgY2FyZXQuCiAg
ICAgaWYgKG1fbW91c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVjdGlvbiAmJiBtX3NlbGVjdGlv
bkluaXRpYXRpb25TdGF0ZSAhPSBFeHRlbmRlZFNlbGVjdGlvbgogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0gICAgICAgICAgICAmJiBtX2RyYWdTdGFydFBvcyA9PSBldmVudC5ldmVudCgpLnBv
cygpCisgICAgICAgICAgICAmJiBtX2RyYWdTdGFydFBvcyA9PSBldmVudC5ldmVudCgpLnBvc2l0
aW9uKCkKICNlbmRpZgogICAgICAgICAgICAgJiYgbV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFu
Z2UoKQogICAgICAgICAgICAgJiYgZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBSaWdodEJ1dHRv
bikgewpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgT3B0aW9uYWxDdXJzb3IgRXZlbnRIYW5kbGVyOjpz
ZWxlY3RDdXJzbwogICAgICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgIGlmIChSZW5k
ZXJMYXllciogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGluUmVzaXplciA9IGxheWVyLT5pc1BvaW50SW5SZXNpemVDb250cm9sKHZpZXct
PndpbmRvd1RvQ29udGVudHMoZXZlbnQuZXZlbnQoKS5wb3MoKSkpOworICAgICAgICAgICAgICAg
ICAgICBpblJlc2l6ZXIgPSBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJvbCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGlmICgoZWRpdGFibGUgfHwgKHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5pc1RleHQoKSAmJiBub2RlLT5jYW5TdGFydFNlbGVjdGlvbigpKSkgJiYgIWluUmVzaXplciAm
JiAhc2Nyb2xsYmFyKQpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudAogICAgIGNhbmNlbEZha2VNb3VzZU1vdmVFdmVudCgpOwogICAg
IG1fbW91c2VQcmVzc2VkID0gdHJ1ZTsKICAgICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSB0cnVlOwot
ICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvcygpOworICAgIG1fY3Vy
cmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7CiAgICAgbV9tb3VzZURv
d25UaW1lc3RhbXAgPSBtb3VzZUV2ZW50LnRpbWVzdGFtcCgpOwogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKQEAgLTEzOTEsNyAr
MTM5MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICBt
X21vdXNlRG93bk1heVN0YXJ0U2VsZWN0ID0gZmFsc2U7CiAgICAgbV9tb3VzZURvd25NYXlTdGFy
dEF1dG9zY3JvbGwgPSBmYWxzZTsKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+
dmlldygpKQotICAgICAgICBtX21vdXNlRG93blBvcyA9IHZpZXctPndpbmRvd1RvQ29udGVudHMo
bW91c2VFdmVudC5wb3MoKSk7CisgICAgICAgIG1fbW91c2VEb3duUG9zID0gdmlldy0+d2luZG93
VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIGVsc2UgewogICAgICAgICBp
bnZhbGlkYXRlQ2xpY2soKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQwMSw3ICsxNDAx
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgLy8gU2F2ZSB0
aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5h
dGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBwZW5zIAogICAgIC8vIHdoZW4gd2UgZGlzcGF0
Y2ggdGhlIGV2ZW50LgotICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50
Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgbW91c2VFdmVudC5wb3MoKSk7CisgICAgSW50UG9pbnQg
ZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtb3Vz
ZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1l
bnRQb2ludCwgbW91c2VFdmVudCk7CiAKICAgICBpZiAoIXRhcmdldE5vZGUobWV2KSkgewpAQCAt
MTQ0OCw3ICsxNDQ4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dAogCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewogICAgICAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSBtX2NsaWNrTm9kZS0+cmVuZGVyZXIoKSA/IG1fY2xpY2tO
b2RlLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpIDogMDsKLSAgICAgICAgSW50UG9pbnQg
cCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMobW91c2VFdmVudC5wb3MoKSk7CisgICAgICAgIElu
dFBvaW50IHAgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1vdXNlRXZlbnQucG9zaXRpb24oKSk7
CiAgICAgICAgIGlmIChsYXllciAmJiBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJvbChwKSkg
ewogICAgICAgICAgICAgbGF5ZXItPnNldEluUmVzaXplTW9kZSh0cnVlKTsKICAgICAgICAgICAg
IG1fcmVzaXplTGF5ZXIgPSBsYXllcjsKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICAgICAgfQogCiAgICAgICAgIEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKLSAgICAgICAgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIgPSB2aWV3ID8gdmlldy0+c2Nyb2xsYmFyQXRQb2ludChtb3VzZUV2ZW50LnBvcygpKSA6IDA7
CisgICAgICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gdmlldyA/IHZpZXctPnNjcm9sbGJhckF0
UG9pbnQobW91c2VFdmVudC5wb3NpdGlvbigpKSA6IDA7CiAgICAgICAgIGlmICghc2Nyb2xsYmFy
KQogICAgICAgICAgICAgc2Nyb2xsYmFyID0gbWV2LnNjcm9sbGJhcigpOwogCkBAIC0xNTE2LDcg
KzE1MTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVDbGljCiAKICAg
ICAvLyBXZSBnZXQgdGhpcyBpbnN0ZWFkIG9mIGEgc2Vjb25kIG1vdXNlLXVwIAogICAgIG1fbW91
c2VQcmVzc2VkID0gZmFsc2U7Ci0gICAgbV9jdXJyZW50TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZl
bnQucG9zKCk7CisgICAgbV9jdXJyZW50TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZlbnQucG9zaXRp
b24oKTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2
ZSk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VF
dmVudChyZXF1ZXN0LCBtb3VzZUV2ZW50KTsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7Ci0gICAg
bV9jdXJyZW50TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZlbnQucG9zKCk7CisgICAgbV9jdXJyZW50
TW91c2VQb3NpdGlvbiA9IG1vdXNlRXZlbnQucG9zaXRpb24oKTsKIAogICAgIGlmIChtX2hvdmVy
VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9ob3ZlclRpbWVyLnN0b3AoKTsKQEAgLTE2MzUs
NyArMTYzNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAg
ICAgICAgbV9yZXNpemVMYXllci0+cmVzaXplKG1vdXNlRXZlbnQsIG1fb2Zmc2V0RnJvbVJlc2l6
ZUNvcm5lcik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2Zy
YW1lLT52aWV3KCkpCi0gICAgICAgICAgICBzY3JvbGxiYXIgPSB2aWV3LT5zY3JvbGxiYXJBdFBv
aW50KG1vdXNlRXZlbnQucG9zKCkpOworICAgICAgICAgICAgc2Nyb2xsYmFyID0gdmlldy0+c2Ny
b2xsYmFyQXRQb2ludChtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogCiAgICAgICAgIGlmICghc2Ny
b2xsYmFyKQogICAgICAgICAgICAgc2Nyb2xsYmFyID0gbWV2LnNjcm9sbGJhcigpOwpAQCAtMTcw
NCw3ICsxNzA0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZQog
I2VuZGlmCiAKICAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNlOwotICAgIG1fY3VycmVudE1vdXNl
UG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvcygpOworICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24g
PSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX3N2
Z1BhbikgewpAQCAtMTc2MCw5ICsxNzYwLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNo
RHJhZ0V2ZW50KGNvbgogICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKICAg
ICBSZWZQdHI8TW91c2VFdmVudD4gbWUgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLAog
ICAgICAgICB0cnVlLCB0cnVlLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLAot
ICAgICAgICAwLCBldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwgZXZlbnQueCgpLCBl
dmVudC55KCksCisgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5n
bG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9u
KCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgICAgIGV2ZW50Lm1vdmVtZW50
WCgpLCBldmVudC5tb3ZlbWVudFkoKSwKKyAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgpLngo
KSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKICNlbmRpZgogICAgICAgICBldmVudC5jdHJs
S2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCks
CiAgICAgICAgIDAsIDAsIGNsaXBib2FyZCk7CkBAIC0xOTM5LDcgKzE5MzksNyBAQCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzIEV2ZW50SGFuZGxlCiAgICAgQVNTRVJUKG1fZnJhbWUpOwog
ICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICAKLSAgICByZXR1cm4gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludEZv
cldpbmRvd1BvaW50KG1fZnJhbWUsIG1ldi5wb3MoKSksIG1ldik7CisgICAgcmV0dXJuIG1fZnJh
bWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnRG
b3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtZXYucG9zaXRpb24oKSksIG1ldik7CiB9CiAKICNpZiBF
TkFCTEUoU1ZHKQpAQCAtMjA3OCw3ICsyMDc4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3Bh
dGNoTW91c2VFdmVudChjbwogCiAgICAgICAgIC8vIElmIGNsaWNraW5nIG9uIGEgZnJhbWUgc2Ny
b2xsYmFyLCBkbyBub3QgbWVzcyB1cCB3aXRoIGNvbnRlbnQgZm9jdXMuCiAgICAgICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgICAgIGlmICh2aWV3
LT5zY3JvbGxiYXJBdFBvaW50KG1vdXNlRXZlbnQucG9zKCkpKQorICAgICAgICAgICAgaWYgKHZp
ZXctPnNjcm9sbGJhckF0UG9pbnQobW91c2VFdmVudC5wb3NpdGlvbigpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29ucwogICAgIGlmICghdmlldykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKLSAg
ICBMYXlvdXRQb2ludCB2UG9pbnQgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGUucG9zKCkpOwor
ICAgIExheW91dFBvaW50IHZQb2ludCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMoZS5wb3NpdGlv
bigpKTsKIAogICAgIE5vZGUqIG5vZGU7CiAgICAgYm9vbCBpc092ZXJXaWRnZXQ7CkBAIC0yMjgz
LDcgKzIyODMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBib29sIHN3YWxsb3dFdmVudDsKLSAgICBM
YXlvdXRQb2ludCB2aWV3cG9ydFBvcyA9IHYtPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zKCkp
OworICAgIExheW91dFBvaW50IHZpZXdwb3J0UG9zID0gdi0+d2luZG93VG9Db250ZW50cyhldmVu
dC5wb3NpdGlvbigpKTsKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gZG9jLT5w
cmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCB2aWV3cG9ydFBvcywgZXZlbnQpOwogCkBAIC0yODY5
LDcgKzI4NjksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzCiAg
ICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAgIGlm
ICghZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvcygpKSkgCisgICAgaWYg
KCFkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3Rl
cmVzaXMgcG9pbnQsIHdlIGRvbid0IHdhbnQgdG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xp
Y2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRI
YW5kbGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvCiAg
ICAgLy8gZ3JleWVkIG91dCBldmVuIHRob3VnaCB3ZSdyZSBjbGlja2luZyBvbiB0aGUgc2VsZWN0
aW9uLiAgVGhpcyBsb29rcwogICAgIC8vIHJlYWxseSBzdHJhbmdlIChoYXZpbmcgdGhlIHdob2xl
IGZyYW1lIGJlIGdyZXllZCBvdXQpLCBzbyB3ZSBkZXNlbGVjdCB0aGUKICAgICAvLyBzZWxlY3Rp
b24uCi0gICAgSW50UG9pbnQgcCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyht
ZXYuZXZlbnQoKS5wb3MoKSk7CisgICAgSW50UG9pbnQgcCA9IG1fZnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhtZXYuZXZlbnQoKS5wb3NpdGlvbigpKTsKICAgICBpZiAobV9mcmFtZS0+
c2VsZWN0aW9uKCktPmNvbnRhaW5zKHApKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zKAogICAgICAgICAgICAgdGFyZ2V0Tm9kZShtZXYpLT5yZW5kZXJlcigpLT5wb3NpdGlv
bkZvclBvaW50KG1ldi5sb2NhbFBvaW50KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
OTQsMTQgKzk0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRp
b247IH0KLSAgICAgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLngoKTsgfQot
ICAgICAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ueSgpOyB9Ci0gICAgICAg
IGludCBnbG9iYWxYKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbi54KCk7IH0KLSAg
ICAgICAgaW50IGdsb2JhbFkoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uLnkoKTsg
fQorICAgICAgICBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bv
c2l0aW9uOyB9CisgICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQot
ICAgICAgICBpbnQgbW92ZW1lbnRYKCkgY29uc3QgeyByZXR1cm4gbV9tb3ZlbWVudERlbHRhLngo
KTsgfQotICAgICAgICBpbnQgbW92ZW1lbnRZKCkgY29uc3QgeyByZXR1cm4gbV9tb3ZlbWVudERl
bHRhLnkoKTsgfQorICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW92ZW1lbnREZWx0YTsgfQogI2VuZGlmCiAKICAgICAgICAgTW91c2VCdXR0
b24gYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b247IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCShyZXZpc2lvbiAxMDMyNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTMzLDggKzEzMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IHJldHVybiBjb3B5OwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvcygp
IGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0
ZXMuCi0gICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3MoKSBjb25zdCB7IHJldHVybiBt
X2dsb2JhbFBvc2l0aW9uOyB9IC8vIFNjcmVlbiBjb29yZGluYXRlcy4KKyAgICAgICAgY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfSAvLyBQbGF0
Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KKyAgICAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4gY29v
cmRpbmF0ZXMuCiAKICAgICAgICAgZmxvYXQgZGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0
YVg7IH0KICAgICAgICAgZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gMTAzMjc4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzM3LDE0ICszMzcsMTQgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3Qg
UGxhdGZvcgogICAgICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihtX29yaWVudGF0aW9uLCBtX2RyYWdPcmlnaW4pOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbW92ZVRodW1iKG1fb3JpZW50YXRpb24gPT0gSG9yaXpvbnRh
bFNjcm9sbGJhciA/IAotICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1dpbmRvdyhldnQucG9zKCkpLngoKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgY29udmVydEZy
b21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSkueSgpLCB0aGVtZSgpLT5zaG91bGREcmFnRG9j
dW1lbnRJbnN0ZWFkT2ZUaHVtYih0aGlzLCBldnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICBj
b252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6CisgICAgICAg
ICAgICAgICAgICAgICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigp
KS55KCksIHRoZW1lKCktPnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKHRoaXMsIGV2
dCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmICht
X3ByZXNzZWRQYXJ0ICE9IE5vUGFydCkKLSAgICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyhldnQucG9zKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkp
LnkoKSk7CisgICAgICAgIG1fcHJlc3NlZFBvcyA9IChvcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkp
LngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueSgpKTsK
IAogICAgIFNjcm9sbGJhclBhcnQgcGFydCA9IHRoZW1lKCktPmhpdFRlc3QodGhpcywgZXZ0KTsK
ICAgICBpZiAocGFydCAhPSBtX2hvdmVyZWRQYXJ0KSB7CkBAIC00MTAsNyArNDEwLDcgQEAgYm9v
bCBTY3JvbGxiYXI6Om1vdXNlRG93bihjb25zdCBQbGF0Zm9ybQogICAgICAgICByZXR1cm4gdHJ1
ZTsgLy8gRklYTUU6IEhhbmRsZWQgYXMgY29udGV4dCBtZW51IGJ5IFF0IHJpZ2h0IG5vdy4gIFNo
b3VsZCBqdXN0IGF2b2lkIGV2ZW4gY2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIHJpZ2h0IGNsaWNr
IHRob3VnaC4KIAogICAgIHNldFByZXNzZWRQYXJ0KHRoZW1lKCktPmhpdFRlc3QodGhpcywgZXZ0
KSk7Ci0gICAgaW50IHByZXNzZWRQb3MgPSAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSkueCgpIDogY29u
dmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSkueSgpKTsKKyAgICBpbnQgcHJlc3Nl
ZFBvcyA9IChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueSgpKTsKICAgICAKICAgICBpZiAoKG1fcHJlc3Nl
ZFBhcnQgPT0gQmFja1RyYWNrUGFydCB8fCBtX3ByZXNzZWRQYXJ0ID09IEZvcndhcmRUcmFja1Bh
cnQpICYmIHRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIodGhpcywgZXZ0KSkgewogICAgICAg
ICBzZXRIb3ZlcmVkUGFydChUaHVtYlBhcnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gMTAzMjc4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgU2Nyb2xsYmFyUGFydCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6aAogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBJbnRQb2ludCBtb3VzZVBvc2l0aW9uID0gc2Nyb2xs
YmFyLT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvcygpKTsKKyAgICBJbnRQb2lu
dCBtb3VzZVBvc2l0aW9uID0gc2Nyb2xsYmFyLT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
ZXZ0LnBvc2l0aW9uKCkpOwogICAgIG1vdXNlUG9zaXRpb24ubW92ZShzY3JvbGxiYXItPngoKSwg
c2Nyb2xsYmFyLT55KCkpOwogICAgIAogICAgIGlmICghc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5j
b250YWlucyhtb3VzZVBvc2l0aW9uKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjgsMTEgKzY4LDExIEBAIHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQg
Y29uc3RydWN0UmVsYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZyYW1lbGVzc1Njcm9sbFZpZXcqIHBhcmVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lbGVzc1Njcm9sbFZp
ZXcqIGNoaWxkKQogewotICAgIEludFBvaW50IHBvcyA9IHBhcmVudC0+Y29udmVydFNlbGZUb0No
aWxkKGNoaWxkLCBlLnBvcygpKTsKKyAgICBJbnRQb2ludCBwb3MgPSBwYXJlbnQtPmNvbnZlcnRT
ZWxmVG9DaGlsZChjaGlsZCwgZS5wb3NpdGlvbigpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGEgaG9ycmlibGUgaGFjayBzaW5jZSBQbGF0Zm9ybU1vdXNlRXZlbnQgaGFzIG5vIHNldHRlcnMg
Zm9yIHgveS4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcmVsYXRpdmVFdmVudCA9IGU7Ci0gICAg
SW50UG9pbnQmIHJlbGF0aXZlUG9zID0gY29uc3RfY2FzdDxJbnRQb2ludCY+KHJlbGF0aXZlRXZl
bnQucG9zKCkpOworICAgIEludFBvaW50JiByZWxhdGl2ZVBvcyA9IGNvbnN0X2Nhc3Q8SW50UG9p
bnQmPihyZWxhdGl2ZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIHJlbGF0aXZlUG9zLnNldFgocG9z
LngoKSk7CiAgICAgcmVsYXRpdmVQb3Muc2V0WShwb3MueSgpKTsKICAgICByZXR1cm4gcmVsYXRp
dmVFdmVudDsKQEAgLTgyLDExICs4MiwxMSBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNv
bnN0cnVjdFJlbGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGcmFtZWxlc3NTY3JvbGxWaWV3KiBwYXJlbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWxlc3NTY3JvbGxWaWV3
KiBjaGlsZCkKIHsKLSAgICBJbnRQb2ludCBwb3MgPSBwYXJlbnQtPmNvbnZlcnRTZWxmVG9DaGls
ZChjaGlsZCwgZS5wb3MoKSk7CisgICAgSW50UG9pbnQgcG9zID0gcGFyZW50LT5jb252ZXJ0U2Vs
ZlRvQ2hpbGQoY2hpbGQsIGUucG9zaXRpb24oKSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBh
IGhvcnJpYmxlIGhhY2sgc2luY2UgUGxhdGZvcm1XaGVlbEV2ZW50IGhhcyBubyBzZXR0ZXJzIGZv
ciB4L3kuCiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHJlbGF0aXZlRXZlbnQgPSBlOwotICAgIElu
dFBvaW50JiByZWxhdGl2ZVBvcyA9IGNvbnN0X2Nhc3Q8SW50UG9pbnQmPihyZWxhdGl2ZUV2ZW50
LnBvcygpKTsKKyAgICBJbnRQb2ludCYgcmVsYXRpdmVQb3MgPSBjb25zdF9jYXN0PEludFBvaW50
Jj4ocmVsYXRpdmVFdmVudC5wb3NpdGlvbigpKTsKICAgICByZWxhdGl2ZVBvcy5zZXRYKHBvcy54
KCkpOwogICAgIHJlbGF0aXZlUG9zLnNldFkocG9zLnkoKSk7CiAgICAgcmV0dXJuIHJlbGF0aXZl
RXZlbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTGlzdEJveC5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDE0ICs4
MywxNCBAQCBQb3B1cExpc3RCb3g6OlBvcHVwTGlzdEJveChQb3B1cE1lbnVDbGllCiAKIGJvb2wg
UG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZURvd25FdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KQogewotICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gc2Nyb2xsYmFyQXRQb2lu
dChldmVudC5wb3MoKSk7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSBzY3JvbGxiYXJBdFBv
aW50KGV2ZW50LnBvc2l0aW9uKCkpOwogICAgIGlmIChzY3JvbGxiYXIpIHsKICAgICAgICAgbV9j
YXB0dXJpbmdTY3JvbGxiYXIgPSBzY3JvbGxiYXI7CiAgICAgICAgIG1fY2FwdHVyaW5nU2Nyb2xs
YmFyLT5tb3VzZURvd24oZXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAoIWlzUG9pbnRJbkJvdW5kcyhldmVudC5wb3MoKSkpCisgICAgaWYgKCFpc1BvaW50SW5C
b3VuZHMoZXZlbnQucG9zaXRpb24oKSkpCiAgICAgICAgIGFiYW5kb24oKTsKIAogICAgIHJldHVy
biB0cnVlOwpAQCAtMTAzLDcgKzEwMyw3IEBAIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVNb3Vz
ZU1vdmVFdmVudCgKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIgPSBzY3JvbGxiYXJBdFBvaW50KGV2ZW50LnBvcygpKTsKKyAgICBTY3JvbGxi
YXIqIHNjcm9sbGJhciA9IHNjcm9sbGJhckF0UG9pbnQoZXZlbnQucG9zaXRpb24oKSk7CiAgICAg
aWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgIT0gc2Nyb2xsYmFyKSB7CiAgICAgICAgIC8v
IFNlbmQgbW91c2UgZXhpdGVkIHRvIHRoZSBvbGQgc2Nyb2xsYmFyLgogICAgICAgICBpZiAobV9s
YXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSkKQEAgLTExNiwxMCArMTE2LDEwIEBAIGJvb2wgUG9wdXBM
aXN0Qm94OjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaWYgKCFpc1BvaW50SW5Cb3VuZHMoZXZlbnQucG9zKCkpKQorICAgIGlmICghaXNQ
b2ludEluQm91bmRzKGV2ZW50LnBvc2l0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBzZWxlY3RJbmRleChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9zKCkpKTsKKyAgICBzZWxl
Y3RJbmRleChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9zaXRpb24oKSkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICgh
aXNQb2ludEluQm91bmRzKGV2ZW50LnBvcygpKSkKKyAgICBpZiAoIWlzUG9pbnRJbkJvdW5kcyhl
dmVudC5wb3NpdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBOZWVkIHRv
IGNoZWNrIGJlZm9yZSBjYWxsaW5nIGFjY2VwdEluZGV4KCksIGJlY2F1c2UgbV9wb3B1cENsaWVu
dCBtaWdodCBiZSByZW1vdmVkIGluIGFjY2VwdEluZGV4KCkgY2FsbGluZyBiZWNhdXNlIG9mIGV2
ZW50IGhhbmRsZXIuCiAgICAgYm9vbCBpc1NlbGVjdFBvcHVwID0gbV9wb3B1cENsaWVudC0+bWVu
dVN0eWxlKCkubWVudVR5cGUoKSA9PSBQb3B1cE1lbnVTdHlsZTo6U2VsZWN0UG9wdXA7Ci0gICAg
aWYgKGFjY2VwdEluZGV4KHBvaW50VG9Sb3dJbmRleChldmVudC5wb3MoKSkpICYmIG1fZm9jdXNl
ZE5vZGUgJiYgaXNTZWxlY3RQb3B1cCkgeworICAgIGlmIChhY2NlcHRJbmRleChwb2ludFRvUm93
SW5kZXgoZXZlbnQucG9zaXRpb24oKSkpICYmIG1fZm9jdXNlZE5vZGUgJiYgaXNTZWxlY3RQb3B1
cCkgewogICAgICAgICBtX2ZvY3VzZWROb2RlLT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2
ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpOwogICAgICAgICBtX2ZvY3VzZWROb2RlLT5kaXNwYXRj
aE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsKIApAQCAtMTQ5LDcg
KzE0OSw3IEBAIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmUKIAogYm9v
bCBQb3B1cExpc3RCb3g6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiBldmVudCkKIHsKLSAgICBpZiAoIWlzUG9pbnRJbkJvdW5kcyhldmVudC5wb3MoKSkpIHsKKyAg
ICBpZiAoIWlzUG9pbnRJbkJvdW5kcyhldmVudC5wb3NpdGlvbigpKSkgewogICAgICAgICBhYmFu
ZG9uKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNu
CiAgICAgcmVjdC5pbmZsYXRlWSgoaG9yeiA/IGtPZmZTaWRlTXVsdGlwbGllciA6IGtPZmZFbmRN
dWx0aXBsaWVyKSAqIHRoaWNrbmVzcyk7CiAKICAgICAvLyBDb252ZXJ0IHRoZSBldmVudCB0byBs
b2NhbCBjb29yZGluYXRlcy4KLSAgICBJbnRQb2ludCBtb3VzZVBvc2l0aW9uID0gc2Nyb2xsYmFy
LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvcygpKTsKKyAgICBJbnRQb2ludCBt
b3VzZVBvc2l0aW9uID0gc2Nyb2xsYmFyLT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0
LnBvc2l0aW9uKCkpOwogICAgIG1vdXNlUG9zaXRpb24ubW92ZShzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIHNuYXAgaWZmIHRoZSBldmVudCBpcyBv
dXRzaWRlIG91ciBjYWxjdWxhdGVkIHJlY3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9TY3JvbGxiYXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvU2Nyb2xsYmFyUXQuY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAgYm9vbCBTY3JvbGxiYXI6OmNvbnRleHRNZW51KGNvbnN0IFBsYXRmbwogICAgICAgICAv
LyB0aHVtYiB0byB0aGUgbmV3IHBvc2l0aW9uCiAgICAgICAgIGludCBwb3NpdGlvbiA9IHRoZW1l
KCktPnRyYWNrUG9zaXRpb24odGhpcykgKyB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKHRoaXMpICsg
dGhlbWUoKS0+dGh1bWJMZW5ndGgodGhpcykgLyAyOwogICAgICAgICBzZXRQcmVzc2VkUG9zKHBv
c2l0aW9uKTsgCi0gICAgICAgIGNvbnN0IFFQb2ludCBwb3MgPSBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdXaW5kb3coZXZlbnQucG9zKCkpOworICAgICAgICBjb25zdCBRUG9pbnQgcG9zID0gY29udmVy
dEZyb21Db250YWluaW5nV2luZG93KGV2ZW50LnBvc2l0aW9uKCkpOwogICAgICAgICBtb3ZlVGh1
bWIoaG9yaXpvbnRhbCA/IHBvcy54KCkgOiBwb3MueSgpKTsKICAgICB9IGVsc2UgaWYgKGFjdGlv
blNlbGVjdGVkID09IGFjdFNjcm9sbFRvcCkKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEoKS0+c2Ny
b2xsKGhvcml6b250YWwgPyBTY3JvbGxMZWZ0IDogU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVR
dC5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Nj
cm9sbGJhclRoZW1lUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIAogU2Nyb2xsYmFyUGFydCBTY3Jv
bGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxl
T3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7Ci0gICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9sbGJh
ci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSk7CisgICAgY29uc3QgUVBv
aW50IHBvcyA9IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3Np
dGlvbigpKTsKICAgICBvcHQtPnJlY3QubW92ZVRvKFFQb2ludCgwLCAwKSk7CiAgICAgUVN0eWxl
OjpTdWJDb250cm9sIHNjID0gc3R5bGUoKS0+aGl0VGVzdENvbXBsZXhDb250cm9sKFFTdHlsZTo6
Q0NfU2Nyb2xsQmFyLCBvcHQsIHBvcywgMCk7CiAgICAgcmV0dXJuIHNjcm9sbGJhclBhcnQoc2Mp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhl
bWVXaW4uY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcg
QEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUbwogICAgIHJlY3QuaW5m
bGF0ZVkoKGhvcnogPyBrT2ZmU2lkZU11bHRpcGxpZXIgOiBrT2ZmRW5kTXVsdGlwbGllcikgKiB0
aGlja25lc3MpOwogCiAgICAgLy8gQ29udmVydCB0aGUgZXZlbnQgdG8gbG9jYWwgY29vcmRpbmF0
ZXMuCi0gICAgSW50UG9pbnQgbW91c2VQb3NpdGlvbiA9IHNjcm9sbGJhci0+Y29udmVydEZyb21D
b250YWluaW5nV2luZG93KGV2dC5wb3MoKSk7CisgICAgSW50UG9pbnQgbW91c2VQb3NpdGlvbiA9
IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKTsK
ICAgICBtb3VzZVBvc2l0aW9uLm1vdmUoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBzbmFwIGlmZiB0aGUgZXZlbnQgaXMgb3V0c2lkZSBvdXIgY2Fs
Y3VsYXRlZCByZWN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjkzLDcgKzE2OTMsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1NCiAKICAgICBmbG9hdCB6b29tRmFjdG9yID0g
cmVuZGVyZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKIAotICAgIExheW91dFNpemUgbmV3
T2Zmc2V0ID0gb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihkb2N1bWVudC0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKGV2dC5wb3MoKSkpOworICAgIExheW91dFNpemUgbmV3T2Zmc2V0ID0gb2Zmc2V0
RnJvbVJlc2l6ZUNvcm5lcihkb2N1bWVudC0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2dC5w
b3NpdGlvbigpKSk7CiAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKG5ld09mZnNldC53aWR0aCgpIC8g
em9vbUZhY3Rvcik7CiAgICAgbmV3T2Zmc2V0LnNldEhlaWdodChuZXdPZmZzZXQuaGVpZ2h0KCkg
LyB6b29tRmFjdG9yKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI3OCkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDExLTEyLTE5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9y
ZSBQbGF0Zm9ybUV2ZW50IGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICBVcGRhdGUgdG8gdXNl
IG5ldyBuYW1lcywgYWNjZXNzIHN0eWxlLgorCiAyMDExLTEyLTE5ICBKZXN1cyBTYW5jaGV6LVBh
bGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdW1dL
Ml0gUVdlYkRvd25sb2FkSXRlbXMgYXJlIGxlYWtpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgc3RhdGljIGJvb2wgaXNDb250ZXh0Q2xpY2soY29uc3Qg
UGxhdGZvcgogCiBzdGF0aWMgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUV2ZW50LCBQYWdlKiBwYWdlKQogewotICAgIElu
dFBvaW50IHBvaW50ID0gcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhwbGF0Zm9ybU1vdXNlRXZlbnQucG9zKCkpOworICAgIEludFBvaW50IHBvaW50ID0gcGFnZS0+
bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwbGF0Zm9ybU1vdXNlRXZlbnQu
cG9zaXRpb24oKSk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBwYWdlLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7CiAK
ICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTE5ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9yZSBQbGF0Zm9ybUV2ZW50
IGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc0ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bW91
c2VDb250ZXh0TWVudSk6CisgICAgICAgIFVwZGF0ZSB0byB1c2UgbmV3IG5hbWVzLCBhY2Nlc3Mg
c3R5bGUuCisKIDIwMTEtMTItMTkgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbY2hyb21pdW1dIEFkZCBtb3JlIHVzaW5nIHN0YXRlbWVudHMgdG8gKHJlKWZp
eCBDaHJvbWl1bSBidWlsZGVycy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM3LDcgKzUzNyw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlQ29udGV4dE1lbnUoY29uc3QKICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnRCdWlsZGVyIHBtZShtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7
CiAKICAgICAvLyBGaW5kIHRoZSByaWdodCB0YXJnZXQgZnJhbWUuIFNlZSBpc3N1ZSAxMTg2OTAw
LgotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEZvcldpbmRvd1Bvcyhw
bWUucG9zKCkpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEZvcldp
bmRvd1BvcyhwbWUucG9zaXRpb24oKSk7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgIGlm
IChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHRhcmdldEZyYW1lID0gcmVz
dWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTItMTkgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3JlIFBsYXRmb3JtRXZlbnQgY2xlYW51
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2Nv
bnRleHRfbWVudV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2hpdF90ZXN0
X3Jlc3VsdCk6CisgICAgICAgIFVwZGF0ZSB0byB1c2UgbmV3IG5hbWVzLCBhY2Nlc3Mgc3R5bGUu
CisKIDIwMTEtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVuYW1lIHJlZ2lzdGVyQ29tbWFuZEZvcihVbmRvfFJlZG8pIHRvIHJlZ2lzdGVyKFVuZG98
UmVkbylTdGVwCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfCiAgICAgbWFpbkZyYW1lLT52aWV3KCktPnNl
dEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIGlmIChwYWdlLT5mcmFtZUNvdW50KCkpIHsK
ICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsK
LSAgICAgICAgSW50UG9pbnQgcG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyhldmVudC5wb3MoKSk7CisgICAgICAgIEludFBvaW50IHBvaW50ID0gbWFpbkZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CiAgICAgICAgIE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5wcmVw
YXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2ludCwgZXZlbnQpOwogCiAgICAgICAgIEZyYW1lKiB0
YXJnZXRGcmFtZSA9IEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7
CkBAIC00Nzg1LDcgKzQ3ODUsNyBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQgPSBQbGF0Zm9ybU1vdXNl
RXZlbnQoZXZlbnQpOwogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwotICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQg
PSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQoZnJhbWUsIG1vdXNlRXZlbnQucG9zKCkpOwor
ICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQo
ZnJhbWUsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyBtZXYgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVz
dCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7CiAKICAgICByZXR1cm4ga2l0KG1ldi5oaXRU
ZXN0UmVzdWx0KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTItMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3Jl
IFBsYXRmb3JtRXZlbnQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c3dh
bGxvd0NvbnRleHRNZW51RXZlbnQpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyBuYW1lcywg
YWNjZXNzIHN0eWxlLgorCiAyMDExLTEyLTE5ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFoZkAweDkw
LmRrPgogCiAgICAgICAgIFtRdF0gQ2xlYW51cCBRVE1fTkFNRVNQQUNFIHVzYWdlIGluIERldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJRdApJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAko
cmV2aXNpb24gMTAzMjc4KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjczLDcgKzMyNzMsNyBAQCBib29sIFFXZWJQYWdlOjpzd2FsbG93
Q29udGV4dE1lbnVFdmVudChRCiAgICAgaWYgKCFSZW5kZXJUaGVtZVF0Ojp1c2VNb2JpbGVUaGVt
ZSgpKSB7CiAgICAgICAgIGlmIChRV2ViRnJhbWUqIHdlYkZyYW1lID0gZnJhbWVBdChldmVudC0+
cG9zKCkpKSB7CiAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpj
b3JlKHdlYkZyYW1lKTsKLSAgICAgICAgICAgIGlmIChTY3JvbGxiYXIqIHNjcm9sbGJhciA9IGZy
YW1lLT52aWV3KCktPnNjcm9sbGJhckF0UG9pbnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCAx
KS5wb3MoKSkpCisgICAgICAgICAgICBpZiAoU2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSBmcmFtZS0+
dmlldygpLT5zY3JvbGxiYXJBdFBvaW50KFBsYXRmb3JtTW91c2VFdmVudChldmVudCwgMSkucG9z
aXRpb24oKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+Y29udGV4dE1lbnUo
UGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCAxKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMi0xOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vcmUgUGxhdGZvcm1FdmVudCBjbGVh
bnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgz
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAg
VXBkYXRlIHRvIHVzZSBuZXcgbmFtZXMsIGFjY2VzcyBzdHlsZS4KKwogMjAxMS0xMi0xNiAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW5hbWUgcmVnaXN0ZXJD
b21tYW5kRm9yKFVuZG98UmVkbykgdG8gcmVnaXN0ZXIoVW5kb3xSZWRvKVN0ZXAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2NSw4ICsxNDY1LDggQEAgYm9vbCBXZWJW
aWV3OjpoYW5kbGVNb3VzZUV2ZW50KFVJTlQgbWVzcwogCiAgICAgc2V0TW91c2VBY3RpdmF0ZWQo
ZmFsc2UpOwogCi0gICAgYm9vbCBpbnNpZGVUaHJlc2hvbGQgPSBhYnMoZ2xvYmFsUHJldlBvaW50
LngoKSAtIG1vdXNlRXZlbnQucG9zKCkueCgpKSA8IDo6R2V0U3lzdGVtTWV0cmljcyhTTV9DWERP
VUJMRUNMSykgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyhnbG9iYWxQcmV2UG9p
bnQueSgpIC0gbW91c2VFdmVudC5wb3MoKS55KCkpIDwgOjpHZXRTeXN0ZW1NZXRyaWNzKFNNX0NZ
RE9VQkxFQ0xLKTsKKyAgICBib29sIGluc2lkZVRocmVzaG9sZCA9IGFicyhnbG9iYWxQcmV2UG9p
bnQueCgpIC0gbW91c2VFdmVudC5wb3NpdGlvbigpLngoKSkgPCA6OkdldFN5c3RlbU1ldHJpY3Mo
U01fQ1hET1VCTEVDTEspICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnMoZ2xvYmFs
UHJldlBvaW50LnkoKSAtIG1vdXNlRXZlbnQucG9zaXRpb24oKS55KCkpIDwgOjpHZXRTeXN0ZW1N
ZXRyaWNzKFNNX0NZRE9VQkxFQ0xLKTsKICAgICBMT05HIG1lc3NhZ2VUaW1lID0gOjpHZXRNZXNz
YWdlVGltZSgpOwogCiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CkBAIC0xNDg5LDcgKzE0ODks
NyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzCiAgICAgICAgICAg
ICBnbG9iYWxDbGlja0NvdW50ID0gMTsKICAgICAgICAgZ2xvYmFsUHJldk1vdXNlRG93blRpbWUg
PSBtZXNzYWdlVGltZTsKICAgICAgICAgZ2xvYmFsUHJldkJ1dHRvbiA9IG1vdXNlRXZlbnQuYnV0
dG9uKCk7Ci0gICAgICAgIGdsb2JhbFByZXZQb2ludCA9IG1vdXNlRXZlbnQucG9zKCk7CisgICAg
ICAgIGdsb2JhbFByZXZQb2ludCA9IG1vdXNlRXZlbnQucG9zaXRpb24oKTsKICAgICAgICAgCiAg
ICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tDb3VudChnbG9iYWxDbGlja0NvdW50KTsKICAgICAg
ICAgaGFuZGxlZCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVN
b3VzZVByZXNzRXZlbnQobW91c2VFdmVudCk7CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCBib29sIFdl
YlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzCiAgICAgfSBlbHNlIGlmIChtZXNzYWdl
ID09IFdNX0xCVVRUT05VUCB8fCBtZXNzYWdlID09IFdNX01CVVRUT05VUCB8fCBtZXNzYWdlID09
IFdNX1JCVVRUT05VUCkgewogICAgICAgICAvLyBSZWNvcmQgdGhlIGdsb2JhbCBwb3NpdGlvbiBh
bmQgdGhlIGJ1dHRvbiBvZiB0aGUgdXAuCiAgICAgICAgIGdsb2JhbFByZXZCdXR0b24gPSBtb3Vz
ZUV2ZW50LmJ1dHRvbigpOwotICAgICAgICBnbG9iYWxQcmV2UG9pbnQgPSBtb3VzZUV2ZW50LnBv
cygpOworICAgICAgICBnbG9iYWxQcmV2UG9pbnQgPSBtb3VzZUV2ZW50LnBvc2l0aW9uKCk7CiAg
ICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tDb3VudChnbG9iYWxDbGlja0NvdW50KTsKICAgICAg
ICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFz
ZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgICAgICA6OlJlbGVhc2VDYXB0dXJlKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNlL1dlYktpdC93aW5j
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMi0xOSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vcmUgUGxhdGZvcm1FdmVu
dCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAg
ICAgICAgVXBkYXRlIHRvIHVzZSBuZXcgbmFtZXMsIGFjY2VzcyBzdHlsZS4KKwogMjAxMS0xMi0x
NiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW5hbWUgcmVn
aXN0ZXJDb21tYW5kRm9yKFVuZG98UmVkbykgdG8gcmVnaXN0ZXIoVW5kb3xSZWRvKVN0ZXAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTAzMjc4KQorKysgU291cmNlL1dl
YktpdC93aW5jZS9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDggKzI4OCw4IEBA
IGJvb2wgV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChIV05EIGhXbmQKICAgICAvLyBvZiB0aGUg
ZXZlbnQgdG8gYmUgYXQgKE1JTlNIT1JULCBNSU5TSE9SVCkuCiAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1vdXNlRXZlbnQoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogCi0gICAgYm9v
bCBpbnNpZGVUaHJlc2hvbGQgPSBhYnMoZ2xvYmFsUHJldlBvaW50LngoKSAtIG1vdXNlRXZlbnQu
cG9zKCkueCgpKSA8IDo6R2V0U3lzdGVtTWV0cmljcyhTTV9DWERPVUJMRUNMSykKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIGFicyhnbG9iYWxQcmV2UG9pbnQueSgpIC0gbW91c2VFdmVu
dC5wb3MoKS55KCkpIDwgOjpHZXRTeXN0ZW1NZXRyaWNzKFNNX0NZRE9VQkxFQ0xLKTsKKyAgICBi
b29sIGluc2lkZVRocmVzaG9sZCA9IGFicyhnbG9iYWxQcmV2UG9pbnQueCgpIC0gbW91c2VFdmVu
dC5wb3NpdGlvbigpLngoKSkgPCA6OkdldFN5c3RlbU1ldHJpY3MoU01fQ1hET1VCTEVDTEspCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBhYnMoZ2xvYmFsUHJldlBvaW50LnkoKSAtIG1v
dXNlRXZlbnQucG9zaXRpb24oKS55KCkpIDwgOjpHZXRTeXN0ZW1NZXRyaWNzKFNNX0NZRE9VQkxF
Q0xLKTsKICAgICBMT05HIG1lc3NhZ2VUaW1lID0gMDsKIAogICAgIGJvb2wgaGFuZGxlZCA9IGZh
bHNlOwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChI
V05EIGhXbmQKICAgICAgICAgICAgIGdsb2JhbENsaWNrQ291bnQgPSAxOwogICAgICAgICBnbG9i
YWxQcmV2TW91c2VEb3duVGltZSA9IG1lc3NhZ2VUaW1lOwogICAgICAgICBnbG9iYWxQcmV2QnV0
dG9uID0gbW91c2VFdmVudC5idXR0b24oKTsKLSAgICAgICAgZ2xvYmFsUHJldlBvaW50ID0gbW91
c2VFdmVudC5wb3MoKTsKKyAgICAgICAgZ2xvYmFsUHJldlBvaW50ID0gbW91c2VFdmVudC5wb3Np
dGlvbigpOwogCiAgICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tDb3VudChnbG9iYWxDbGlja0Nv
dW50KTsKICAgICAgICAgaGFuZGxlZCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VFdmVudCk7CkBAIC0zMjQsNyArMzI0LDcg
QEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KEhXTkQgaFduZAogICAgIH0gZWxzZSBp
ZiAobWVzc2FnZSA9PSBXTV9MQlVUVE9OVVAgfHwgbWVzc2FnZSA9PSBXTV9NQlVUVE9OVVAgfHwg
bWVzc2FnZSA9PSBXTV9SQlVUVE9OVVApIHsKICAgICAgICAgLy8gUmVjb3JkIHRoZSBnbG9iYWwg
cG9zaXRpb24gYW5kIHRoZSBidXR0b24gb2YgdGhlIHVwLgogICAgICAgICBnbG9iYWxQcmV2QnV0
dG9uID0gbW91c2VFdmVudC5idXR0b24oKTsKLSAgICAgICAgZ2xvYmFsUHJldlBvaW50ID0gbW91
c2VFdmVudC5wb3MoKTsKKyAgICAgICAgZ2xvYmFsUHJldlBvaW50ID0gbW91c2VFdmVudC5wb3Np
dGlvbigpOwogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNrQ291bnQoZ2xvYmFsQ2xpY2tDb3Vu
dCk7CiAgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVN
b3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKICAgICAgICAgUmVsZWFzZUNhcHR1cmUoKTsK
</data>
<flag name="review"
          id="120102"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="120113"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>