<?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>58485</bug_id>
          
          <creation_ts>2011-04-13 14:58:32 -0700</creation_ts>
          <short_desc>Convert WebProcess over to using disableTermination/enableTermination</short_desc>
          <delta_ts>2011-04-13 15:24:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385273</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-04-13 14:58:32 -0700</bug_when>
    <thetext>Convert WebProcess over to using disableTermination/enableTermination</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385277</commentid>
    <comment_count>1</comment_count>
      <attachid>89470</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-04-13 15:03:32 -0700</bug_when>
    <thetext>Created attachment 89470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385291</commentid>
    <comment_count>2</comment_count>
      <attachid>89470</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-13 15:13:41 -0700</bug_when>
    <thetext>Comment on attachment 89470
Patch

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

It&apos;s a little confusing that all the terminateIfPossible calls have turned into a temporary disabling of termination.

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:505
&gt;  void WebProcess::removeWebPage(uint64_t pageID)
&gt;  {
&gt;      m_pageMap.remove(pageID);
&gt; -    terminateIfPossible();
&gt; +
&gt; +    enableTermination();

Do we need to verify that pageID was in m_pageMap?

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:733
&gt; +    WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

No need for either of the &quot;WebProcess::&quot;s.

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:755
&gt; +    WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

Or here.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp:158
&gt; +    ChildProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

Why ChildProcess and not WebProcess?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385295</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-04-13 15:19:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 89470 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89470&amp;action=review
&gt; 
&gt; It&apos;s a little confusing that all the terminateIfPossible calls have turned into a temporary disabling of termination.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcess.cpp:505
&gt; &gt;  void WebProcess::removeWebPage(uint64_t pageID)
&gt; &gt;  {
&gt; &gt;      m_pageMap.remove(pageID);
&gt; &gt; -    terminateIfPossible();
&gt; &gt; +
&gt; &gt; +    enableTermination();
&gt; 
&gt; Do we need to verify that pageID was in m_pageMap?
&gt; 

Not really, but I added an assertion.

&gt; &gt; Source/WebKit2/WebProcess/WebProcess.cpp:733
&gt; &gt; +    WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());
&gt; 
&gt; No need for either of the &quot;WebProcess::&quot;s.

changed WebProcess::shared() to *this.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcess.cpp:755
&gt; &gt; +    WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());
&gt; 
&gt; Or here.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp:158
&gt; &gt; +    ChildProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());
&gt; 
&gt; Why ChildProcess and not WebProcess?

Changed to WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385301</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-04-13 15:24:35 -0700</bug_when>
    <thetext>Committed r83774: &lt;http://trac.webkit.org/changeset/83774&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89470</attachid>
            <date>2011-04-13 15:03:32 -0700</date>
            <delta_ts>2011-04-13 15:13:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58485-20110413150331.patch</filename>
            <type>text/plain</type>
            <size>25100</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNzcxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTQgQEAKKzIwMTEtMDQtMTMgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IFdlYlByb2Nlc3Mgb3ZlciB0byB1c2luZyBk
aXNhYmxlVGVybWluYXRpb24vZW5hYmxlVGVybWluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NDg1CisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpn
ZXRTaXRlc1dpdGhEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y2xlYXJT
aXRlRGF0YSk6CisgICAgICAgIFVzZSB0aGUgTG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIFJBSUkg
Y2xhc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChXZWJL
aXQ6OkNoaWxkUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyOjpMb2NhbFRlcm1pbmF0
aW9uRGlzYWJsZXIpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OkxvY2FsVGVybWlu
YXRpb25EaXNhYmxlcjo6fkxvY2FsVGVybWluYXRpb25EaXNhYmxlcik6CisgICAgICAgIEFkZCBS
QUlJIGNsYXNzIGZvciBjYWxsaW5nIGRpc2FibGVUZXJtaW5hdGlvbi9lbmFibGVUZXJtaW5hdGlv
bi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyOjpnZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXI6OmRlbGV0ZUFsbEVudHJpZXMp
OgorICAgICAgICBVc2UgdGhlIExvY2FsVGVybWluYXRpb25EaXNhYmxlciBSQUlJIGNsYXNzLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2VydmluZ0Nv
b2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6
Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIFVzZSB0aGUgTG9jYWxUZXJtaW5h
dGlvbkRpc2FibGVyIFJBSUkgY2xhc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6Cisg
ICAgICAgIENhbGwgZGlzYWJsZVRlcm1pbmF0aW9uKCkuCisKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWQ6On5Eb3dubG9hZCk6CisgICAgICAgIENhbGwgZW5hYmxlVGVybWluYXRpb24oKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZCk6CisgICAgICAg
IFJlbW92ZSBjYWxsIHRvIHRlcm1pbmF0ZUlmUG9zc2libGUuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0tleVZhbHVlU3RvcmFnZS9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6Z2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgVXNlIHRoZSBMb2NhbFRlcm1p
bmF0aW9uRGlzYWJsZXIgUkFJSSBjbGFzcy4KKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFDYWNoZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFDYWNoZU1hbmFnZXI6OmNsZWFyQ2FjaGVGb3JIb3N0bmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yQWxs
SG9zdG5hbWVzKToKKyAgICAgICAgVXNlIHRoZSBMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgUkFJ
SSBjbGFzcy4KKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VD
YWNoZU1hbmFnZXI6OmdldENhY2hlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6OmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKToKKyAgICAg
ICAgVXNlIHRoZSBMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgUkFJSSBjbGFzcy4KKyAgICAgICAg
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlc0J5
T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFz
ZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURh
dGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1h
bmFnZXI6OmRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRh
dGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbik6CisgICAgICAgIFVzZSB0aGUgTG9j
YWxUZXJtaW5hdGlvbkRpc2FibGVyIFJBSUkgY2xhc3MuCisgICAgICAgIAorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNy
ZWF0ZVdlYlBhZ2UpOgorICAgICAgICBDYWxsIGRpc2FibGVUZXJtaW5hdGlvbigpLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICBDYWxsIGVu
YWJsZVRlcm1pbmF0aW9uKCkuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hvdWxk
VGVybWluYXRlKToKKyAgICAgICAgTW92ZSBsb2dpYyBmcm9tIHRlcm1pbmF0ZUlmUG9zc2libGUg
b3ZlciBoZXJlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnRlcm1pbmF0ZSk6Cisg
ICAgICAgIE1vdmUgbG9naWMgZnJvbSB0ZXJtaW5hdGVJZlBvc3NpYmxlIG92ZXIgaGVyZS4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpnZXRTaXRlc1dpdGhQbHVnaW5EYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5TaXRlRGF0YSk6CisgICAgICAg
IFVzZSB0aGUgTG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIFJBSUkgY2xhc3MuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgUHVibGljYWxseSBpbmhlcml0IGZy
b20gQ2hpbGRQcm9jZXNzLCBMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgbmVlZHMgdG8gYmUgYWNj
ZXNzaWJsZQorICAgICAgICBmcm9tIHRoZSBXZWJQcm9jZXNzIGNsYXNzLgorCiAyMDExLTA0LTEz
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2
aW4gQmFycmFjbG91Z2guCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDgzNzY3KQorKysgU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDIwICsx
NjcsMTggQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubgogCiB2b2lk
IFBsdWdpblByb2Nlc3M6OmdldFNpdGVzV2l0aERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKIHsK
LSAgICBkaXNhYmxlVGVybWluYXRpb24oKTsKKyAgICBMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIg
dGVybWluYXRpb25EaXNhYmxlcigqdGhpcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBzaXRlczsK
ICAgICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG1vZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9k
dWxlKCkpCiAgICAgICAgIHNpdGVzID0gbW9kdWxlLT5zaXRlc1dpdGhEYXRhKCk7CiAKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkR2V0U2l0
ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCksIDApOwotCi0gICAgZW5hYmxlVGVybWluYXRp
b24oKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpjbGVhclNpdGVEYXRhKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25k
cywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBkaXNhYmxlVGVybWluYXRpb24oKTsKKyAg
ICBMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcigqdGhpcyk7CiAK
ICAgICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG1vZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9k
dWxlKCkpIHsKICAgICAgICAgaWYgKHNpdGVzLmlzRW1wdHkoKSkgewpAQCAtMTkzLDggKzE5MSw2
IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y2xlYXJTaXRlRGF0YShjb25zdCAKICAgICB9CiAKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ2xl
YXJTaXRlRGF0YShjYWxsYmFja0lEKSwgMCk7Ci0KLSAgICBlbmFibGVUZXJtaW5hdGlvbigpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
aGlsZFByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQ
cm9jZXNzLmgJKHJldmlzaW9uIDgzNzY3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwyMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaXNhYmxlVGVybWluYXRpb24oKTsKICAgICB2b2lkIGVuYWJsZVRlcm1pbmF0aW9uKCk7
CiAKKyAgICBjbGFzcyBMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgZXhwbGljaXQgTG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyKENoaWxkUHJvY2VzcyYgY2hp
bGRQcm9jZXNzKQorICAgICAgICAgICAgOiBtX2NoaWxkUHJvY2VzcyhjaGlsZFByb2Nlc3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fY2hpbGRQcm9jZXNzLmRpc2FibGVUZXJtaW5hdGlvbigp
OworICAgICAgICB9CisKKyAgICAgICAgfkxvY2FsVGVybWluYXRpb25EaXNhYmxlcigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fY2hpbGRQcm9jZXNzLmVuYWJsZVRlcm1pbmF0aW9uKCk7Cisg
ICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENoaWxkUHJvY2VzcyYgbV9jaGlsZFBy
b2Nlc3M7CisgICAgfTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENoaWxkUHJvY2Vzcyhk
b3VibGUgdGVybWluYXRpb25UaW1lb3V0KTsKICAgICB+Q2hpbGRQcm9jZXNzKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDgzNzY3KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDkwLDYgKzQ5MCw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50
NjRfdCAKICAgICBpZiAocmVzdWx0LnNlY29uZCkgewogICAgICAgICBBU1NFUlQoIXJlc3VsdC5m
aXJzdC0+c2Vjb25kKTsKICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBXZWJQYWdlOjpj
cmVhdGUocGFnZUlELCBwYXJhbWV0ZXJzKTsKKworICAgICAgICAvLyBCYWxhbmNlZCBieSBhbiBl
bmFibGVUZXJtaW5hdGlvbiBpbiByZW1vdmVXZWJQYWdlLgorICAgICAgICBkaXNhYmxlVGVybWlu
YXRpb24oKTsKICAgICB9CiAKICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwpAQCAt
NDk4LDcgKzUwMSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCAK
IHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiB7CiAgICAg
bV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwotICAgIHRlcm1pbmF0ZUlmUG9zc2libGUoKTsKKwor
ICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzczo6aXNTZXBhcmF0
ZVByb2Nlc3MoKSBjb25zdApAQCAtNTA3LDI5ICs1MTEsMjYgQEAgYm9vbCBXZWJQcm9jZXNzOjpp
c1NlcGFyYXRlUHJvY2VzcygpIGNvbgogICAgIHJldHVybiBtX3J1bkxvb3AgPT0gUnVuTG9vcDo6
bWFpbigpOwogfQogIAotdm9pZCBXZWJQcm9jZXNzOjp0ZXJtaW5hdGVJZlBvc3NpYmxlKCkKK2Jv
b2wgV2ViUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHsKLSAgICBpZiAoIW1fcGFnZU1hcC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2luRGlkQ2xvc2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChEb3dubG9hZE1hbmFnZXI6OnNoYXJlZCgpLmlzRG93bmxv
YWRpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gS2VlcCBydW5uaW5nIGZvcmV2ZXIg
aWYgd2UncmUgcnVubmluZyBpbiB0aGUgc2FtZSBwcm9jZXNzLgogICAgIGlmICghaXNTZXBhcmF0
ZVByb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBBU1NFUlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFEb3dubG9hZE1hbmFn
ZXI6OnNoYXJlZCgpLmlzRG93bmxvYWRpbmcoKSk7CiAKICAgICAvLyBGSVhNRTogdGhlIFNob3Vs
ZFRlcm1pbmF0ZSBtZXNzYWdlIHNob3VsZCBhbHNvIHNlbmQgdGVybWluYXRpb24gcGFyYW1ldGVy
cywgc3VjaCBhcyBhbnkgc2Vzc2lvbiBjb29raWVzIHRoYXQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQu
CiAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUgPSBmYWxzZTsKICAgICBpZiAobV9jb25uZWN0aW9u
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTaG91bGRUZXJtaW5hdGUoKSwg
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U2hvdWxkVGVybWluYXRlOjpSZXBseShzaG91bGRU
ZXJtaW5hdGUpLCAwKQogICAgICAgICAmJiAhc2hvdWxkVGVybWluYXRlKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIEFjdHVhbGx5IHRlcm1pbmF0ZSB0
aGUgcHJvY2Vzcy4KKyAgICByZXR1cm4gdHJ1ZTsKK30KIAordm9pZCBXZWJQcm9jZXNzOjp0ZXJt
aW5hdGUoKQorewogI2lmbmRlZiBOREVCVUcKICAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29s
bGVjdE5vdygpOwogICAgIG1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkKHRydWUpOwpAQCAtNTQz
LDEzICs1NDQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZUlmUG9zc2libGUoKQogICAg
IG1fcnVuTG9vcC0+c3RvcCgpOwogfQogCi1ib29sIFdlYlByb2Nlc3M6OnNob3VsZFRlcm1pbmF0
ZSgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIENvcmVJUEM6OlN5bmNSZXBseU1vZGUgV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnRzLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJlcGx5KQogeyAgIAogICAg
IHVpbnQ2NF90IHBhZ2VJRCA9IGFyZ3VtZW50cy0+ZGVzdGluYXRpb25JRCgpOwpAQCAtNzM2LDYg
KzczMCw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlKCkKICNpZiAh
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzOjpnZXRTaXRlc1dpdGhQbHVn
aW5EYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwbHVnaW5QYXRocywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWlu
YXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisKICAgICBIYXNoU2V0PFN0cmlu
Zz4gc2l0ZXNTZXQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblBhdGhzLnNp
emUoKTsgKytpKSB7CkBAIC03NTIsMTEgKzc0OCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldFNp
dGVzV2l0aFBsdWdpbkRhdGEoCiAgICAgY29weVRvVmVjdG9yKHNpdGVzU2V0LCBzaXRlcyk7CiAK
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZEdldFNpdGVz
V2l0aFBsdWdpbkRhdGEoc2l0ZXMsIGNhbGxiYWNrSUQpLCAwKTsKLSAgICB0ZXJtaW5hdGVJZlBv
c3NpYmxlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5TaXRlRGF0YShjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGx1Z2luUGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRl
cywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVy
bWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHBsdWdpblBhdGhzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpbk1vZHVsZT4gbmV0c2NhcGVQbHVnaW5Nb2R1bGUgPSBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aHNbaV0pOwogICAgICAgICBpZiAoIW5ldHNj
YXBlUGx1Z2luTW9kdWxlKQpAQCAtNzczLDcgKzc3MCw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2xl
YXJQbHVnaW5TaXRlRGF0YShjb24KICAgICB9CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYkNvbnRleHQ6OkRpZENsZWFyUGx1Z2luU2l0ZURhdGEoY2FsbGJhY2tJRCksIDAp
OwotICAgIHRlcm1pbmF0ZUlmUG9zc2libGUoKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gODM3NjcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyAr
NjYsNyBAQCBzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YTsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0
b3JlOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFdlYlBy
b2Nlc3MgOiBDaGlsZFByb2Nlc3MgeworY2xhc3MgV2ViUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFBy
b2Nlc3MgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJQcm9jZXNzJiBzaGFyZWQoKTsKIApAQCAt
MTA3LDkgKzEwNyw2IEBAIHB1YmxpYzoKICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKCkgeyByZXR1cm4gbV9uZXR3b3JrQWNjZXNzTWFuYWdlcjsgfQogI2Vu
ZGlmCiAKLSAgICAvLyBXaWxsIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MgaWYgdGhlcmUgYXJl
IG5vIGxpdmUgcGFnZXMgb3IgZG93bmxvYWRzLgotICAgIHZvaWQgdGVybWluYXRlSWZQb3NzaWJs
ZSgpOwotCiAgICAgYm9vbCBzaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZvck1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGVzV2l0aEN1
c3RvbVJlcHJlc2VudGF0aW9ucy5jb250YWlucyhtaW1lVHlwZSk7IH0KIAogICAgIC8vIFRleHQg
Q2hlY2tpbmcKQEAgLTE2OCw2ICsxNjUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2hpbGRQcm9j
ZXNzCiAgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB0ZXJtaW5hdGUoKTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGljYXRpb25D
YWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDgzNzY0KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCB2b2lkIFdl
YkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlCiAKIHZvaWQgV2ViQXBwbGljYXRpb25D
YWNoZU1hbmFnZXI6OmdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CisgICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0
aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkpOworCiAgICAgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhhc2g+IG9yaWdpbnM7CiAKICNpZiBFTkFC
TEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQpAQCAtNzksMTEgKzgxLDEyIEBAIHZvaWQgV2Vi
QXBwbGljYXRpb25DYWNoZU1hbmFnZXI6OmdldEFwcGwKICAgICB9CiAKICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyUHJveHk6OkRpZEdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKGlkZW50aWZpZXJz
LCBjYWxsYmFja0lEKSwgMCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkudGVybWluYXRlSWZQ
b3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSkKIHsK
KyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNh
YmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShvcmlnaW5EYXRhLnByb3RvY29sLCBvcmlnaW5EYXRhLmhvc3QsIG9yaWdp
bkRhdGEucG9ydCk7CiAgICAgaWYgKCFvcmlnaW4pCkBAIC05MSwxNSArOTQsMTUgQEAgdm9pZCBX
ZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcjo6ZGVsZXRlRQogICAgIAogICAgIEFwcGxpY2F0aW9u
Q2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7CiAjZW5kaWYKLSAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJtaW5hdGVJZlBvc3NpYmxlKCk7CiB9CiAKIHZvaWQgV2Vi
QXBwbGljYXRpb25DYWNoZU1hbmFnZXI6OmRlbGV0ZUFsbEVudHJpZXMoKQogeworICAgIFdlYlBy
b2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpKTsKKwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
CiAgICAgY2FjaGVTdG9yYWdlKCkuZGVsZXRlQWxsRW50cmllcygpOwogI2VuZGlmCi0gICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkudGVybWluYXRlSWZQb3NzaWJsZSgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDgzNzY0KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw2ICs1NCw4IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGlkUmVjZWl2
ZU1lc3NhZ2UKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyh1aW50NjRfdCBjYWxsYmFja0lEKQogeworICAgIFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRp
b25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKKwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0bmFtZXM7CiAKICAgICBXZWJDb3JlOjpnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhob3N0bmFtZXMpOwpAQCAtNjIsMjUgKzY0LDI3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aEMKICAgICBjb3B5VG9WZWN0b3IoaG9zdG5hbWVz
LCBob3N0bmFtZUxpc3QpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGhvc3RuYW1lTGlzdCwgY2FsbGJhY2tJRCksIDApOwotICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnRlcm1pbmF0ZUlmUG9zc2libGUoKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsK
KyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNh
YmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoaG9zdG5hbWUpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRlcm1pbmF0
ZUlmUG9zc2libGUoKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29r
aWVzKCkKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWlu
YXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisKICAgICBXZWJDb3JlOjpkZWxl
dGVBbGxDb29raWVzKCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkudGVybWluYXRlSWZQb3Nz
aWJsZSgpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygpCiB7CisgICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRl
cm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkpOworCiAgICAgV2ViQ29yZTo6
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
dGVybWluYXRlSWZQb3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKQEAgLTk1LDE0ICs5OSwxNCBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmRpc3BhdGNoQ29va2llc0RpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKIHsK
KyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNh
YmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBvbGljeSk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkudGVybWluYXRlSWZQ
b3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRl
cm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQo
KSk7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxh
dGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKLSAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJtaW5hdGVJZlBvc3NpYmxlKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcAkocmV2aXNpb24gODM3NjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEx
ICs1MiwxNSBAQCBEb3dubG9hZDo6RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgCiAjZW5k
aWYKIHsKICAgICBBU1NFUlQobV9kb3dubG9hZElEKTsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmRpc2FibGVUZXJtaW5hdGlvbigpOwogfQogCiBEb3dubG9hZDo6fkRvd25sb2FkKCkKIHsK
ICAgICBwbGF0Zm9ybUludmFsaWRhdGUoKTsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmVu
YWJsZVRlcm1pbmF0aW9uKCk7CiB9CiAKIENvcmVJUEM6OkNvbm5lY3Rpb24qIERvd25sb2FkOjpj
b25uZWN0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAkocmV2aXNpb24gODM3NjQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw4ICs3Nyw2IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpk
b3dubG9hZEZpbmlzaGVkKEQKICAgICBtX2Rvd25sb2Fkcy5yZW1vdmUoZG93bmxvYWQtPmRvd25s
b2FkSUQoKSk7CiAKICAgICBkZWxldGUgZG93bmxvYWQ7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS50ZXJtaW5hdGVJZlBvc3NpYmxlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UvV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9LZXlWYWx1ZVN0b3JhZ2UvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAJKHJldmlz
aW9uIDgzNzY0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2Uv
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3
LDggQEAgdm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpkaWRSZWNlaQogCiB2b2lkIFdl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnModWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJs
ZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisKICAgICBWZWN0
b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNvcmVPcmlnaW5zOwogCiAgICAgU3RvcmFnZVRy
YWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKGNvcmVPcmlnaW5zKTsKQEAgLTc2LDIzICs3OCwyMyBA
QCB2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldEtleVZhCiAgICAgfQogCiAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OkRpZEdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoaWRl
bnRpZmllcnMsIGNhbGxiYWNrSUQpLCAwKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJt
aW5hdGVJZlBvc3NpYmxlKCk7CiB9CiAKIHZvaWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRh
dGEpCiB7CisgICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0
aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkpOworCiAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbkRhdGEucHJvdG9j
b2wsIG9yaWdpbkRhdGEuaG9zdCwgb3JpZ2luRGF0YS5wb3J0KTsKICAgICBpZiAoIW9yaWdpbikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVP
cmlnaW4ob3JpZ2luLmdldCgpKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJtaW5hdGVJ
ZlBvc3NpYmxlKCk7CiB9CiAKIHZvaWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
QWxsRW50cmllcygpCiB7CisgICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVy
IHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkpOwogICAgIFN0b3JhZ2VU
cmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsT3JpZ2lucygpOwotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnRlcm1pbmF0ZUlmUG9zc2libGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNo
ZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDgzNzY0KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBAQCB2b2lkIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlTWVzCiAKIHZvaWQgV2ViTWVkaWFDYWNoZU1hbmFnZXI6OmdldEhvc3Ru
YW1lc1dpdGhNZWRpYUNhY2hlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CisgICAgV2ViUHJvY2Vz
czo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vz
czo6c2hhcmVkKCkpOworCiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFDYWNoZUhvc3RuYW1lczsK
IAogI2lmIEVOQUJMRShWSURFTykKQEAgLTYwLDIzICs2MiwyNCBAQCB2b2lkIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXCiAjZW5kaWYKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94
eTo6RGlkR2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUobWVkaWFDYWNoZUhvc3RuYW1lcywgY2Fs
bGJhY2tJRCksIDApOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRlcm1pbmF0ZUlmUG9zc2li
bGUoKTsKIH0KIAogdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNoZUZvckhvc3Ru
YW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CisgICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJt
aW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkp
OworCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFD
YWNoZUZvclNpdGUoaG9zdG5hbWUpOwogI2VuZGlmCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
dGVybWluYXRlSWZQb3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyOjpj
bGVhckNhY2hlRm9yQWxsSG9zdG5hbWVzKCkKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1p
bmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7
CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNh
Y2hlKCk7CiAjZW5kaWYKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJtaW5hdGVJZlBvc3Np
YmxlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA4Mzc2NCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDggQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdl
cjo6ZGlkUmVjZWl2ZQogCiB2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpnZXRDYWNoZU9y
aWdpbnModWludDY0X3QgY2FsbGJhY2tJRCkgY29uc3QKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2Nh
bFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFy
ZWQoKSk7CisKICAgICBNZW1vcnlDYWNoZTo6U2VjdXJpdHlPcmlnaW5TZXQgb3JpZ2luczsKICAg
ICBtZW1vcnlDYWNoZSgpLT5nZXRPcmlnaW5zV2l0aENhY2hlKG9yaWdpbnMpOwogCkBAIC05NCwx
MSArOTYsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVPcgogICAg
IH0KIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6RGlkR2V0Q2FjaGVPcmlnaW5zKGlkZW50
aWZpZXJzLCBjYWxsYmFja0lEKSwgMCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkudGVybWlu
YXRlSWZQb3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVh
ckNhY2hlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5EYXRhLCB1aW50MzJfdCBj
YWNoZXNUb0NsZWFyKSBjb25zdAogeworICAgIFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25E
aXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKKwogI2lm
IFVTRShDRlVSTENBQ0hFKQogICAgIFJlc291cmNlQ2FjaGVzVG9DbGVhciByZXNvdXJjZUNhY2hl
c1RvQ2xlYXIgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUNhY2hlc1RvQ2xlYXI+KGNhY2hlc1RvQ2xl
YXIpOwogI2Vsc2UKQEAgLTEyMCwxNSArMTIzLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXI6OmNsZWFyQ2FjaGUKICAgICAgICAgY2xlYXJDRlVSTENhY2hlRm9ySG9zdE5hbWVzKGhv
c3RBcnJheS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
dGVybWluYXRlSWZQb3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
OjpjbGVhckNhY2hlRm9yQWxsT3JpZ2lucyh1aW50MzJfdCBjYWNoZXNUb0NsZWFyKSBjb25zdAog
eworICAgIFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRp
c2FibGVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKKwogICAgIFJlc291cmNlQ2FjaGVzVG9DbGVh
ciByZXNvdXJjZUNhY2hlc1RvQ2xlYXIgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUNhY2hlc1RvQ2xl
YXI+KGNhY2hlc1RvQ2xlYXIpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY2xlYXJSZXNv
dXJjZUNhY2hlcyhyZXNvdXJjZUNhY2hlc1RvQ2xlYXIpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnRlcm1pbmF0ZUlmUG9zc2libGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA4Mzc2NCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCB2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlcjo6ZGlkUmVjZWl2ZU1lc3NhCiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRh
YmFzZXNCeU9yaWdpbih1aW50NjRfdCBjYWxsYmFja0lEKSBjb25zdAogeworICAgIFdlYlByb2Nl
c3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlByb2Nl
c3M6OnNoYXJlZCgpKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBl
ZmZpY2llbnQgYnkgYWRkaW5nIGEgZnVuY3Rpb24gdG8gRGF0YWJhc2VUcmFja2VyCiAgICAgLy8g
dG8gZ2V0IGJvdGggdGhlIG9yaWdpbnMgYW5kIHRoZSBWZWN0b3Igb2YgRGF0YWJhc2VEZXRhaWxz
IGZvciBlYWNoIG9yaWdpbiBpbiBvbmUKICAgICAvLyBzaG90LiAgVGhhdCB3b3VsZCBhdm9pZCB0
YWtpbmcgdGhlIG51bWVyb3VzIGxvY2tzIHRoaXMgcmVxdWlyZXMuCkBAIC0xMDUsMTEgKzEwNywx
MiBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlPCiAgICAgfQogCiAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJE
YXRhYmFzZU1hbmFnZXJQcm94eTo6RGlkR2V0RGF0YWJhc2VzQnlPcmlnaW4ob3JpZ2luQW5kRGF0
YWJhc2VzVmVjdG9yLCBjYWxsYmFja0lEKSwgMCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
dGVybWluYXRlSWZQb3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0
RGF0YWJhc2VPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpIGNvbnN0CiB7CisgICAgV2ViUHJv
Y2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJv
Y2Vzczo6c2hhcmVkKCkpOworCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiBv
cmlnaW5zOwogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMob3JpZ2lucyk7
CiAKQEAgLTExOSwzNyArMTIyLDQxIEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRh
YmFzZU9yaWcKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9yaWdpbnM7ICsraSkKICAg
ICAgICAgaWRlbnRpZmllcnNbaV0gPSBvcmlnaW5zW2ldLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsK
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkRhdGFiYXNlTWFuYWdlclByb3h5OjpEaWRHZXREYXRhYmFzZU9yaWdpbnMoaWRlbnRpZmllcnMs
IGNhbGxiYWNrSUQpLCAwKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJtaW5hdGVJZlBv
c3NpYmxlKCk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZVdp
dGhOYW1lRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0CiB7CisgICAgV2ViUHJvY2Vzczo6TG9jYWxU
ZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVk
KCkpOworCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKICAgICBp
ZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLmdldCgpLCBkYXRhYmFzZUlkZW50aWZpZXIpOwot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRlcm1pbmF0ZUlmUG9zc2libGUoKTsKIH0KIAogdm9p
ZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbihjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0CiB7CisgICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJt
aW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkp
OworCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKICAgICBpZiAo
IW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGVsZXRlT3JpZ2luKG9yaWdpbi5nZXQoKSk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
dGVybWluYXRlSWZQb3NzaWJsZSgpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVs
ZXRlQWxsRGF0YWJhc2VzKCkgY29uc3QKIHsKKyAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0
aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CisK
ICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKLSAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJtaW5hdGVJZlBvc3NpYmxlKCk7CiB9CiAKIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgY29uc3QKIHsKKyAgICBDaGls
ZFByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdl
YlByb2Nlc3M6OnNoYXJlZCgpKTsKKwogICAgIC8vIElmIHRoZSBxdW90YSBpcyBzZXQgdG8gYSB2
YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0aGF0IHF1b3RhIHdpbGwKICAgICAv
LyAic3RpY2siIGJ1dCBubyBkYXRhIHdpbGwgYmUgcHVyZ2VkIHRvIG1lZXQgdGhlIG5ldyBxdW90
YS4gVGhpcyB3aWxsIHNpbXBseQogICAgIC8vIHByZXZlbnQgbmV3IGRhdGEgZnJvbSBiZWluZyBh
ZGRlZCB0byBkYXRhYmFzZXMgaW4gdGhhdCBvcmlnaW4uCkBAIC0xNTksNyArMTY2LDYgQEAgdm9p
ZCBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhRm9yT3JpZwogICAgICAgICByZXR1cm47CiAK
ICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0KCksIHF1
b3RhKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS50ZXJtaW5hdGVJZlBvc3NpYmxlKCk7CiB9
CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQo=
</data>
<flag name="review"
          id="82147"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>