<?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>62510</bug_id>
          
          <creation_ts>2011-06-12 03:42:26 -0700</creation_ts>
          <short_desc>Remove trival &quot;forward-to-client&quot; member functions from FrameLoader</short_desc>
          <delta_ts>2022-02-27 23:42:41 -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>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>419281</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-12 03:42:26 -0700</bug_when>
    <thetext>Remove trival &quot;forward-to-client&quot; member functions from FrameLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419282</commentid>
    <comment_count>1</comment_count>
      <attachid>96874</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-12 03:46:58 -0700</bug_when>
    <thetext>Created attachment 96874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419309</commentid>
    <comment_count>2</comment_count>
      <attachid>96874</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-12 11:26:19 -0700</bug_when>
    <thetext>Comment on attachment 96874
Patch

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

I have mixed feelings about this patch. On one hand, in most cases we are logically talking to the loader, and the client doesn&apos;t need to know that said loader even has a &quot;client&quot;. Exposing additional entities to more code is not good.

On the other hand, I think that knowing that there is not other logic besides calling the client improves readability in practice.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:121
&gt; -ResourceError MainResourceLoader::interruptionForPolicyChangeError() const
&gt; +ResourceError MainResourceLoader::interruptForPolicyChangeError() const

Wouldn&apos;t it be better to use the &quot;interruption&quot; name everywhere instead? Also, do we need this function, given that we always just make a client call in place?

&gt; Source/WebCore/loader/PingLoader.cpp:118
&gt; +    // FIXME: Why activeDocumentLoader? I would have expected documentLoader()...

It would be helpful if you could add a few words about why you expected that.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:49
&gt; -    return frame()-&gt;loader()-&gt;blockedError(request);
&gt; +    return frame()-&gt;loader()-&gt;client()-&gt;blockedError(request);

I wonder why we are even creating the error via WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419316</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-12 12:17:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 96874 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96874&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/MainResourceLoader.cpp:121
&gt; &gt; -ResourceError MainResourceLoader::interruptionForPolicyChangeError() const
&gt; &gt; +ResourceError MainResourceLoader::interruptForPolicyChangeError() const
&gt; 
&gt; Wouldn&apos;t it be better to use the &quot;interruption&quot; name everywhere instead? Also, do we need this function, given that we always just make a client call in place?

Actually, I wonder if interruptedForPolicyChangeError to match the tense of the other functions.  I&apos;ll post a followup patch that does this renaming since this patch is big enough as is.

It&apos;s likely we should inline this function as well, but I didn&apos;t study it.

&gt; &gt; Source/WebCore/loader/PingLoader.cpp:118
&gt; &gt; +    // FIXME: Why activeDocumentLoader? I would have expected documentLoader()...
&gt; 
&gt; It would be helpful if you could add a few words about why you expected that.

Will do.

&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:49
&gt; &gt; -    return frame()-&gt;loader()-&gt;blockedError(request);
&gt; &gt; +    return frame()-&gt;loader()-&gt;client()-&gt;blockedError(request);
&gt; 
&gt; I wonder why we are even creating the error via WebCore.

Yes, it does seems strange to round-trip through WebCore.  I didn&apos;t investigate the cause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419317</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-12 12:18:13 -0700</bug_when>
    <thetext>+ap.

Replies to your comments above.  Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419320</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-12 12:21:55 -0700</bug_when>
    <thetext>Committed r88618: &lt;http://trac.webkit.org/changeset/88618&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96874</attachid>
            <date>2011-06-12 03:46:58 -0700</date>
            <delta_ts>2022-02-27 23:42:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62510-20110612034657.patch</filename>
            <type>text/plain</type>
            <size>29504</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NjExKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDYtMTIgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgdHJpdmFsICJmb3J3YXJkLXRvLWNsaWVudCIgbWVtYmVy
IGZ1bmN0aW9ucyBmcm9tIEZyYW1lTG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MjUxMAorCisgICAgICAgIE9yaWdpbmFsbHksIEZyYW1lTG9h
ZGVyIHdhcyBzdXBwb3NlZCB0byBhYnN0cmFjdCBGcmFtZUxvYWRlckNsaWVudCwgYnV0CisgICAg
ICAgIHdlIGxvc3QgdGhhdCBiYXR0bGUgbG9nIGFnby4gIE5vd2FkYXlzLCBpdCdzIGVhc2llciBp
ZiBmb2xrcyBqdXN0IGNhbGwKKyAgICAgICAgaW50byBGcmFtZUxvYWRlckNsaWVudCBkaXJlY3Rs
eS4gIE1hbnkgb2YgdGhlc2UgZnVuY3Rpb25zIGhhdmUgZGlyZWN0CisgICAgICAgIGNhbGxlcnMg
YWxyZWFkeSBhbnl3YXkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxhY2VCeU1JTUVUeXBlKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmRpZEZpcnN0TGF5b3V0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAg
ICAgICAgIC0gY2FuY2VsbGVkRXJyb3IgaXMgc2xpZ2h0bHkgbW9yZSBkZWxpY2F0ZSwgc28gSSdt
IGdvaW5nIHRvIG1vdmUgaXQgaW4KKyAgICAgICAgICAgICAgYSBzZXBhcmF0ZSBwYXRjaC4KKyAg
ICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1haW5SZXNvdXJjZUxvYWRlcjo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0ZvclBvbGljeUNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQWZ0
ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
aGFuZGxlRW1wdHlMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
bG9hZE5vdyk6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9h
ZGVyOjpQaW5nTG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlvblBv
bGljeSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorCiAyMDExLTA2LTEx
ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEphbWVzIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDg4
NjEwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTEwNDYsNyArMTA0Niw2IEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNndpbmRvd1RvQ29u
dGUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2libGVDb250ZW50UmVjdEViCiBfX1pO
SzdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRl
cjEwaXNDb21wbGV0ZUV2Ci1fX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjEyYmxvY2tlZEVycm9y
RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0Y2Fu
Y2VsbGVkRXJyb3JFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk5LN1dlYkNvcmUxMUZyYW1l
TG9hZGVyMTRmcmFtZUhhc0xvYWRlZEV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjE2b3V0
Z29pbmdSZWZlcnJlckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDg4NjEwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIFJlbmRlck9iamVj
dCogSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlUmUKICAgICAgICAgbWVkaWFSZW5kZXJlci0+c2V0
V2lkZ2V0KG1fcHJveHlXaWRnZXQpOwogCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5zaG93TWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihtX3Byb3h5V2lkZ2V0LmdldCgpKTsKKyAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPnNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKG1fcHJveHlX
aWRnZXQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbWVkaWFSZW5kZXJlcjsKICNlbHNlCkBA
IC0zNzYsNyArMzc2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdHRhY2goKQogI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIGVsc2UgaWYgKG1fcHJveHlXaWRnZXQp
IHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAg
ICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKG1fcHJv
eHlXaWRnZXQuZ2V0KCkpOworICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+
aGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4obV9wcm94eVdpZGdldC5nZXQoKSk7CiAgICAgfQog
I2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJ
KHJldmlzaW9uIDg4NjEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDE3ICsxNzcsMTcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c2V0UmVxdWVzdChjb25zdCBSZQogICAgIEtVUkwgb2xkVVJMID0gbV9yZXF1ZXN0LnVy
bCgpOwogICAgIG1fcmVxdWVzdCA9IHJlcTsKIAotICAgIC8vIE9ubHkgc2VuZCB3ZWJWaWV3OmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBpZiBVUkwg
Y2hhbmdlZCAoYW5kIGlzIG5vbi1udWxsKS4KKyAgICAvLyBPbmx5IGRpc3BhdGNoRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgaWYgVVJMIGNoYW5nZWQgKGFuZCBp
cyBub24tbnVsbCkuCiAgICAgLy8gQWxzbywgZG9uJ3Qgc2VuZCBpdCB3aGVuIHJlcGxhY2luZyB1
bnJlYWNoYWJsZSBVUkxzIHdpdGggYWx0ZXJuYXRlIGNvbnRlbnQuCiAgICAgaWYgKCFoYW5kbGlu
Z1VucmVhY2hhYmxlVVJMICYmICFyZXEudXJsKCkuaXNOdWxsKCkgJiYgb2xkVVJMICE9IHJlcS51
cmwoKSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCktPmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7
CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldE1haW5Eb2N1bWVudEVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fbWFpbkRvY3VtZW50RXJyb3IgPSBlcnJvcjsg
ICAgCi0gICAgZnJhbWVMb2FkZXIoKS0+c2V0TWFpbkRvY3VtZW50RXJyb3IodGhpcywgZXJyb3Ip
OwotIH0KKyAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+c2V0TWFpbkRvY3VtZW50RXJyb3Io
dGhpcywgZXJyb3IpOworfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckVycm9ycygpCiB7
CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNl
QnlNSQogICAgIFN0cmluZyBvbGRNSU1FVHlwZSA9IG1fcmVzcG9uc2UubWltZVR5cGUoKTsKICAg
ICAKICAgICBpZiAoIWRvZXNQcm9ncmVzc2l2ZUxvYWQob2xkTUlNRVR5cGUpKSB7Ci0gICAgICAg
IGZyYW1lTG9hZGVyKCktPnJldmVydFRvUHJvdmlzaW9uYWwodGhpcyk7CisgICAgICAgIGZyYW1l
TG9hZGVyKCktPmNsaWVudCgpLT5yZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUodGhpcyk7CiAgICAg
ICAgIHNldHVwRm9yUmVwbGFjZSgpOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNv
dXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgIGNvbW1pdExvYWQocmVzb3Vy
Y2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKQEAgLTM1NCw3ICszNTQsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxhY2VCeU1JCiAgICAgbV9nb3RGaXJz
dEJ5dGUgPSBmYWxzZTsKICAgICAKICAgICBpZiAoZG9lc1Byb2dyZXNzaXZlTG9hZChuZXdNSU1F
VHlwZSkpIHsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+cmV2ZXJ0VG9Qcm92aXNpb25hbCh0aGlz
KTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnJldmVydFRvUHJvdmlzaW9uYWxT
dGF0ZSh0aGlzKTsKICAgICAgICAgc2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgfQogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA4ODYxMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2MywxMSArMjYzLDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29s
IAogICAgIH0KIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5jYW5IYW5k
bGVSZXF1ZXN0KHJlcXVlc3QpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlv
bihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tC
YWNrRm9yd2FyZExpc3QsIGJvb2wgcmVmcmVzaCkKIHsKICAgICBSZWZQdHI8RnJhbWU+IHByb3Rl
Y3QobV9mcmFtZSk7CkBAIC0xMDc3LDE4ICsxMDcyLDYgQEAgT2JqZWN0Q29udGVudFR5cGUgRnJh
bWVMb2FkZXI6OmRlZmF1bHRPYgogICAgIHJldHVybiBXZWJDb3JlOjpPYmplY3RDb250ZW50Tm9u
ZTsKIH0KIAotI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotdm9pZCBGcmFtZUxv
YWRlcjo6aGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAg
bV9jbGllbnQtPmhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKHdpZGdldCk7Ci19Ci0KLXZvaWQg
RnJhbWVMb2FkZXI6OnNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdpZGdldCogd2lkZ2V0KQot
ewotICAgIG1fY2xpZW50LT5zaG93TWVkaWFQbGF5ZXJQcm94eVBsdWdpbih3aWRnZXQpOwotfQot
I2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotCiBTdHJpbmcgRnJhbWVM
b2FkZXI6Om91dGdvaW5nUmVmZXJyZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX291dGdvaW5n
UmVmZXJyZXI7CkBAIC0yMzA3LDI2ICsyMjkwLDYgQEAgYm9vbCBGcmFtZUxvYWRlcjo6aXNMb2Fk
aW5nTWFpbkZyYW1lKCkgYwogICAgIHJldHVybiBwYWdlICYmIG1fZnJhbWUgPT0gcGFnZS0+bWFp
bkZyYW1lKCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OmNhblNob3dNSU1FVHlwZShjb25zdCBT
dHJpbmcmIE1JTUVUeXBlKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC0+Y2FuU2hvd01J
TUVUeXBlKE1JTUVUeXBlKTsKLX0KLQotYm9vbCBGcmFtZUxvYWRlcjo6cmVwcmVzZW50YXRpb25F
eGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUpCi17Ci0gICAgcmV0dXJu
IG1fY2xpZW50LT5yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShVUkxTY2hlbWUpOwot
fQotCi1TdHJpbmcgRnJhbWVMb2FkZXI6OmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNv
bnN0IFN0cmluZyYgVVJMU2NoZW1lKQotewotICAgIHJldHVybiBtX2NsaWVudC0+Z2VuZXJhdGVk
TUlNRVR5cGVGb3JVUkxTY2hlbWUoVVJMU2NoZW1lKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlcjo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKQotewot
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZCgpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjpmaW5pc2hlZExvYWRpbmdEb2N1bWVu
dChEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIC8vIEZJWE1FOiBQbGF0Zm9ybXMgc2hv
dWxkbid0IGRpZmZlciBoZXJlIQpAQCAtMjM3NSwxMSArMjMzOCw2IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnNldFJlcGxhY2luZygpCiAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGVSZXBsYWNl
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpyZXZlcnRUb1Byb3Zpc2lvbmFsKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCi17Ci0gICAgbV9jbGllbnQtPnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShs
b2FkZXIpOwotfQotCiBib29sIEZyYW1lTG9hZGVyOjpzdWJmcmFtZUlzTG9hZGluZygpIGNvbnN0
CiB7CiAgICAgLy8gSXQncyBtb3N0IGxpa2VseSB0aGF0IHRoZSBsYXN0IGFkZGVkIGZyYW1lIGlz
IHRoZSBsYXN0IHRvIGxvYWQgc28gd2Ugd2FsayBiYWNrd2FyZHMuCkBAIC0yNTc3LDYgKzI1MzUs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRGaXJzdExheW91dCgpCiAKICAgICBpZiAobV9zdGF0
ZU1hY2hpbmUuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCkgJiYgIW1fc3RhdGVNYWNo
aW5lLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgIW1fc3RhdGVNYWNoaW5l
LmZpcnN0TGF5b3V0RG9uZSgpKQogICAgICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkZpcnN0TGF5b3V0RG9uZSk7CisKICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwogfQogCkBAIC0zMzY3LDExICszMzI2LDYgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIAogICAgICAgICBsb2FkRGlmZmVy
ZW50RG9jdW1lbnRJdGVtKGl0ZW0sIGxvYWRUeXBlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6
c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCi17Ci0gICAgbV9jbGllbnQtPnNldE1haW5Eb2N1bWVudEVycm9yKGxv
YWRlciwgZXJyb3IpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjptYWluUmVjZWl2ZWRDb21wbGV0
ZUVycm9yKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQogewog
ICAgIGxvYWRlci0+c2V0UHJpbWFyeUxvYWRDb21wbGV0ZSh0cnVlKTsKQEAgLTMzOTMsMzggKzMz
NDcsNiBAQCBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJvCiAgICAgcmV0
dXJuIGVycm9yOwogfQogCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpibG9ja2VkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAotewotICAgIHJldHVybiBtX2Ns
aWVudC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwotfQotCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9h
ZGVyOjpjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBj
b25zdAotewotICAgIHJldHVybiBtX2NsaWVudC0+Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3Qp
OwotfQotCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjppbnRlcnJ1cHRpb25Gb3JQb2xpY3lD
aGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fY2xpZW50LT5pbnRlcnJ1cHRGb3JQb2xpY3lDaGFuZ2VFcnJvcihyZXF1ZXN0KTsK
LX0KLQotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBjb25zdAotewotICAgIHJldHVybiBtX2Ns
aWVudC0+ZmlsZURvZXNOb3RFeGlzdEVycm9yKHJlc3BvbnNlKTsgICAgCi19Ci0KLWJvb2wgRnJh
bWVMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIpCi17Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShs
b2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpKTsKLX0KLQotI2lm
IFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1ib29sIEZyYW1lTG9hZGVyOjpj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQotewotICAgIHJldHVy
biBtX2NsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShsb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBwcm90ZWN0aW9uU3BhY2Up
OwotfQotI2VuZGlmCi0KIHZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRp
dGxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA4ODYx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjgsOCArMTI4LDYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbG9uZyBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRp
YWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0
YSk7CiAKLSAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
Ci0KICAgICAvLyBBbHNvIG5vdCBjb29sLgogICAgIHZvaWQgc3RvcEFsbExvYWRlcnMoQ2xlYXJQ
cm92aXNpb25hbEl0ZW1Qb2xpY3kgPSBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRlbSk7CiAgICAg
dm9pZCBzdG9wRm9yVXNlckNhbmNlbChib29sIGRlZmVyQ2hlY2tMb2FkQ29tcGxldGUgPSBmYWxz
ZSk7CkBAIC0xNTIsMTAgKzE1MCw2IEBAIHB1YmxpYzoKICAgICBGcmFtZVN0YXRlIHN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIHN0YXRpYyBkb3VibGUgdGltZU9mTGFzdENv
bXBsZXRlZExvYWQoKTsKIAotICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVz
b3VyY2VMb2FkZXIqKTsKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQot
ICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShSZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSk7Ci0j
ZW5kaWYKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0
OwogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlhbFJlcXVlc3QoKSBjb25zdDsKICAg
ICB2b2lkIHJlY2VpdmVkTWFpblJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYsIGJv
b2wgaXNDb21wbGV0ZSk7CkBAIC0xNjcsMjcgKzE2MSwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZygpOwogCisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2QgdG8g
UmVzb3VyY2VMb2FkZXIgd2l0aCB0aGUgcmVzdCBvZiB0aGUgUmVzb3VyY2VFcnJvciBhY2Nlc3Nv
cnMuCiAgICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBjb25zdDsKLSAgICBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3Q7Ci0gICAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7Ci0gICAgUmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7Ci0gICAgUmVzb3Vy
Y2VFcnJvciBpbnRlcnJ1cHRpb25Gb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdDsKIAogICAgIGJvb2wgaXNIb3N0ZWRCeU9iamVjdEVsZW1lbnQoKSBjb25z
dDsKICAgICBib29sIGlzTG9hZGluZ01haW5GcmFtZSgpIGNvbnN0OwotICAgIGJvb2wgY2FuU2hv
d01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwotICAgIGJvb2wgcmVwcmVz
ZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUpOwotICAg
IFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIFVSTFNj
aGVtZSk7CiAKICAgICB2b2lkIHJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwog
ICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBvdmVycmlk
ZUVuY29kaW5nKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0RvY3VtZW50KERv
Y3VtZW50TG9hZGVyKik7CiAgICAgYm9vbCBpc1JlcGxhY2luZygpIGNvbnN0OwogICAgIHZvaWQg
c2V0UmVwbGFjaW5nKCk7Ci0gICAgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsKERvY3VtZW50TG9h
ZGVyKik7Ci0gICAgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIG1haW5SZWNlaXZlZENvbXBsZXRlRXJyb3Io
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgYm9vbCBzdWJmcmFt
ZUlzTG9hZGluZygpIGNvbnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKik7CkBAIC0zMDksMTEgKzI5NCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb3BlbihDYWNo
ZWRGcmFtZUJhc2UmKTsKIAotI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAg
IHZvaWQgaGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0Kik7Ci0gICAgdm9pZCBzaG93
TWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKTsKLSNlbmRpZgotCiAgICAgLy8gRklYTUU6
IFNob3VsZCB0aGVzZSByZWFsbHkgYmUgcHVibGljPwogICAgIHZvaWQgY29tcGxldGVkKCk7CiAg
ICAgYm9vbCBhbGxBbmNlc3RvcnNBcmVDb21wbGV0ZSgpIGNvbnN0OyAvLyBpbmNsdWRpbmcgdGhp
cwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDg4NjEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCwxNCArMTE4LDE0IEBAIHZvaWQgTWFpblJl
c291cmNlTG9hZGVyOjpkaWRDYW5jZWwoY29uc3QKICAgICBmcmFtZUxvYWRlcigpLT5yZWNlaXZl
ZE1haW5SZXNvdXJjZUVycm9yKGVycm9yLCB0cnVlKTsKIH0KIAotUmVzb3VyY2VFcnJvciBNYWlu
UmVzb3VyY2VMb2FkZXI6OmludGVycnVwdGlvbkZvclBvbGljeUNoYW5nZUVycm9yKCkgY29uc3QK
K1Jlc291cmNlRXJyb3IgTWFpblJlc291cmNlTG9hZGVyOjppbnRlcnJ1cHRGb3JQb2xpY3lDaGFu
Z2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmludGVycnVwdGlv
bkZvclBvbGljeUNoYW5nZUVycm9yKHJlcXVlc3QoKSk7CisgICAgcmV0dXJuIGZyYW1lTG9hZGVy
KCktPmNsaWVudCgpLT5pbnRlcnJ1cHRGb3JQb2xpY3lDaGFuZ2VFcnJvcihyZXF1ZXN0KCkpOwog
fQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2Uo
KQogewotICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBpbnRlcnJ1cHRpb25Gb3JQb2xpY3lDaGFu
Z2VFcnJvcigpOworICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBpbnRlcnJ1cHRGb3JQb2xpY3lD
aGFuZ2VFcnJvcigpOwogICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOwogICAgIGNh
bmNlbChlcnJvcik7CiB9CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlQWZ0ZXJDbwogICAgICAgICAvLyBQcmV2ZW50IHJlbW90ZSB3ZWIgYXJjaGl2
ZXMgZnJvbSBsb2FkaW5nIGJlY2F1c2UgdGhleSBjYW4gY2xhaW0gdG8gYmUgZnJvbSBhbnkgZG9t
YWluIGFuZCB0aHVzIGF2b2lkIGNyb3NzLWRvbWFpbiBzZWN1cml0eSBjaGVja3MgKDQxMjAyNTUp
LgogICAgICAgICBib29sIGlzUmVtb3RlV2ViQXJjaGl2ZSA9IChlcXVhbElnbm9yaW5nQ2FzZSgi
YXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiwgbWltZVR5cGUpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KCJtdWx0aXBhcnQvcmVsYXRlZCIsIG1pbWVUeXBlKSkKICAgICAgICAgICAgICYmICFtX3N1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAhdXJsLmlzTG9jYWxGaWxlKCk7Ci0gICAgICAgIGlmICgh
ZnJhbWVMb2FkZXIoKS0+Y2FuU2hvd01JTUVUeXBlKG1pbWVUeXBlKSB8fCBpc1JlbW90ZVdlYkFy
Y2hpdmUpIHsKKyAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Y2FuU2hvd01J
TUVUeXBlKG1pbWVUeXBlKSB8fCBpc1JlbW90ZVdlYkFyY2hpdmUpIHsKICAgICAgICAgICAgIGZy
YW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2Fubm90U2hvd01JTUVUeXBlKHIpOwogICAg
ICAgICAgICAgLy8gQ2hlY2sgcmVhY2hlZFRlcm1pbmFsU3RhdGUgc2luY2UgdGhlIGxvYWQgbWF5
IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZCBpbnNpZGUgb2YgX2hhbmRsZVVuaW1wbGVtZW50
YWJsZVBvbGljeVdpdGhFcnJvckNvZGU6Oi4KICAgICAgICAgICAgIGlmICghcmVhY2hlZFRlcm1p
bmFsU3RhdGUoKSkKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6
Y29udGludWVBZnRlckNvCiAgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5kb3dubG9h
ZChtX2hhbmRsZS5nZXQoKSwgcmVxdWVzdCgpLCBtX2hhbmRsZS5nZXQoKS0+Zmlyc3RSZXF1ZXN0
KCksIHIpOwogICAgICAgICAvLyBJdCBtaWdodCBoYXZlIGdvbmUgbWlzc2luZwogICAgICAgICBp
ZiAoZnJhbWVMb2FkZXIoKSkKLSAgICAgICAgICAgIHJlY2VpdmVkRXJyb3IoaW50ZXJydXB0aW9u
Rm9yUG9saWN5Q2hhbmdlRXJyb3IoKSk7CisgICAgICAgICAgICByZWNlaXZlZEVycm9yKGludGVy
cnVwdEZvclBvbGljeUNoYW5nZUVycm9yKCkpOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNl
IFBvbGljeUlnbm9yZToKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRl
cjo6Y29udGludWVBZnRlckNvCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEobV9zdWJz
dGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCkt
PnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgdHJ1ZSk7CiAgICAg
ICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+aXNTdG9wcGluZygp
KSAKICAgICAgICAgICAgICAgICBkaWRGaW5pc2hMb2FkaW5nKDApOwotICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQodXJsKSB8fCBmcmFtZUxvYWRlcigpLT5yZXBy
ZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSkpCisgICAgICAgIH0g
ZWxzZSBpZiAoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh1cmwpIHx8IGZyYW1lTG9hZGVyKCkt
PmNsaWVudCgpLT5yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2wo
KSkpCiAgICAgICAgICAgICBkaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0KQEAgLTUxMCw3
ICs1MTAsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxlRW1wdHlMb2FkCiB7CiAg
ICAgU3RyaW5nIG1pbWVUeXBlOwogICAgIGlmIChmb3JVUkxTY2hlbWUpCi0gICAgICAgIG1pbWVU
eXBlID0gZnJhbWVMb2FkZXIoKS0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUodXJsLnBy
b3RvY29sKCkpOworICAgICAgICBtaW1lVHlwZSA9IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5n
ZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSk7CiAgICAgZWxzZQog
ICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L2h0bWwiOwogICAgIApAQCAtNTgwLDcgKzU4MCw3IEBA
IGJvb2wgTWFpblJlc291cmNlTG9hZGVyOjpsb2FkTm93KFJlc291cmMKICAgICByZXNvdXJjZUxv
YWRTY2hlZHVsZXIoKS0+YWRkTWFpblJlc291cmNlTG9hZCh0aGlzKTsKICAgICBpZiAobV9zdWJz
dGl0dXRlRGF0YS5pc1ZhbGlkKCkpIAogICAgICAgICBoYW5kbGVEYXRhTG9hZFNvb24ocik7Ci0g
ICAgZWxzZSBpZiAoc2hvdWxkTG9hZEVtcHR5IHx8IGZyYW1lTG9hZGVyKCktPnJlcHJlc2VudGF0
aW9uRXhpc3RzRm9yVVJMU2NoZW1lKHVybC5wcm90b2NvbCgpKSkKKyAgICBlbHNlIGlmIChzaG91
bGRMb2FkRW1wdHkgfHwgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnJlcHJlc2VudGF0aW9uRXhp
c3RzRm9yVVJMU2NoZW1lKHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgaGFuZGxlRW1wdHlMb2Fk
KHVybCwgIXNob3VsZExvYWRFbXB0eSk7CiAgICAgZWxzZQogICAgICAgICBtX2hhbmRsZSA9IFJl
c291cmNlSGFuZGxlOjpjcmVhdGUobV9mcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0
KCksIHIsIHRoaXMsIGZhbHNlLCB0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDg4NjEwKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBoYW5kbGVEYXRhTG9hZChSZXNv
dXJjZVJlcXVlc3QmKTsKIAogICAgICAgICB2b2lkIHJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwotICAgICAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGlvbkZvclBvbGljeUNo
YW5nZUVycm9yKCkgY29uc3Q7CisgICAgICAgIFJlc291cmNlRXJyb3IgaW50ZXJydXB0Rm9yUG9s
aWN5Q2hhbmdlRXJyb3IoKSBjb25zdDsKICAgICAgICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGlj
eUNoYW5nZSgpOwogICAgICAgICBib29sIGlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCShyZXZpc2lvbiA4ODYxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oIgogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTg5LDcgKzkwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkgPCAxMDAgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCi0gICAg
ICAgIGNhbmNlbChmcmFtZUxvYWRlcigpLT5maWxlRG9lc05vdEV4aXN0RXJyb3IocmVzcG9uc2Up
KTsKKyAgICAgICAgY2FuY2VsKGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5maWxlRG9lc05vdEV4
aXN0RXJyb3IocmVzcG9uc2UpKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9QaW5nTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5jcHAJKHJldmlzaW9uIDg4NjEwKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BpbmdMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcgQEAgUGlu
Z0xvYWRlcjo6UGluZ0xvYWRlcihGcmFtZSogZnJhbWUsIFJlcwogICAgIDogbV90aW1lb3V0KHRo
aXMsICZQaW5nTG9hZGVyOjp0aW1lb3V0KQogewogICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciA9IGZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsK
KyAgICAvLyBGSVhNRTogV2h5IGFjdGl2ZURvY3VtZW50TG9hZGVyPyBJIHdvdWxkIGhhdmUgZXhw
ZWN0ZWQgZG9jdW1lbnRMb2FkZXIoKS4uLgogICAgIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UgPSBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZShmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIpOwog
ICAgIG1faGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShmcmFtZS0+bG9hZGVyKCktPm5l
dHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsIHRoaXMsIGZhbHNlLCBmYWxzZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDg4NjEwKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyTmF2
aWdhdAogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoY2FsbGJhY2sucmVxdWVz
dCgpKTsKIAogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNh
bkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKLSAgICAgICAgICAgICAgICBoYW5kbGVVbmltcGxl
bWVudGFibGVQb2xpY3kobV9mcmFtZS0+bG9hZGVyKCktPmNhbm5vdFNob3dVUkxFcnJvcihjYWxs
YmFjay5yZXF1ZXN0KCkpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQ
b2xpY3kobV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5jYW5ub3RTaG93VVJMRXJyb3IoY2Fs
bGJhY2sucmVxdWVzdCgpKSk7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0
KCk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNp
b24gODg2MTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MDYsMTIgKzQwNiwxMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNl
TG9hZGVyOjpjYW5jZWxsZWRFCiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VMb2FkZXI6OmJsb2Nr
ZWRFcnJvcigpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmJsb2NrZWRFcnJvcihtX3Jl
cXVlc3QpOworICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+YmxvY2tlZEVycm9y
KG1fcmVxdWVzdCk7CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNo
b3dVUkxFcnJvcigpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNhbm5vdFNob3dVUkxF
cnJvcihtX3JlcXVlc3QpOworICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Y2Fu
bm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTQ3MSw3ICs0NzEs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93VVJMKFJlc291CiBib29sIFJlc291
cmNlTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7CiAgICAgUmVmUHRyPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCkt
PnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOworICAgIHJldHVybiBmcmFtZUxvYWRl
cigpLT5jbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoZG9jdW1lbnRMb2FkZXIo
KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2Vs
QXV0aGVudGljYQogYm9vbCBSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsK
ICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICByZXR1cm4g
ZnJhbWVMb2FkZXIoKS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh0aGlz
LCBwcm90ZWN0aW9uU3BhY2UpOworICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShkb2N1bWVudExvYWRlcigpLCBp
ZGVudGlmaWVyKCksIHByb3RlY3Rpb25TcGFjZSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODg2
MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgpA
QCAtNjk0LDcgKzY5NSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAgICAg
IEtVUkwgbGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICAg
ICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKGxvYWRlci0+Y2Fu
SGFuZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlua1VSTCkpKSB7CisgICAgICAgICAgICBp
ZiAobG9hZGVyLT5jbGllbnQoKS0+Y2FuSGFuZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlu
a1VSTCkpKSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShPcGVuTGlua0l0ZW0sIG1fY29u
dGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oT3BlbkxpbmtJbk5l
d1dpbmRvd0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oRG93bmxvYWRGaWxlSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC04NTUsNyAr
ODU2LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAg
RnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICAgICAgS1VSTCBsaW5r
VVJMID0gbV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIWxp
bmtVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAobG9hZGVyLT5jYW5IYW5kbGVSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdChsaW5rVVJMKSkpIHsKKyAgICAgICAgICAgIGlmIChsb2FkZXIt
PmNsaWVudCgpLT5jYW5IYW5kbGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsaW5rVVJMKSkpIHsK
ICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9wZW5MaW5rSXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CiAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShPcGVuTGlua0luTmV3V2luZG93SXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShEb3du
bG9hZEZpbGVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDg4NjExKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgdHJpdmFsICJmb3J3YXJkLXRvLWNsaWVudCIgbWVtYmVyIGZ1bmN0aW9ucyBmcm9tIEZyYW1l
TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjUxMAorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6YmxvY2tlZEVycm9yKToKKwogMjAxMS0wNi0xMSAgU3RlcGhhbmllIExld2lzICA8
c2xld2lzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZp
c2lvbiA4ODYxMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwLDYg
KzIwLDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oIgogCisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtNDUsNyArNDYsNyBAQCBTY2hlZHVsZVBh
aXJIYXNoU2V0KiBXZWJGcmFtZU5ldHdvcmtpbmdDCiAKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkgY29uc3QKIHsKLSAgICByZXR1cm4gZnJhbWUoKS0+bG9hZGVyKCktPmJsb2NrZWRFcnJv
cihyZXF1ZXN0KTsKKyAgICByZXR1cm4gZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5ibG9j
a2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9u
IDg4NjExKQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgdHJpdmFsICJmb3J3YXJkLXRvLWNsaWVudCIgbWVtYmVyIGZ1bmN0aW9ucyBmcm9tIEZyYW1l
TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjUxMAorCisgICAgICAgIFVwZGF0ZSB0byBjYWxsIHRoZSBGcmFtZUxvYWRlckNsaWVudCBkaXJl
Y3RseS4gIEFsc28sIHJlbW92ZSBjYXJnby1jdWx0CisgICAgICAgIGNvZGUgdGhhdCBjaGVja3Mg
d2hldGhlciBGcmFtZUxvYWRlciBpcyBudWxsLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKToKKwogMjAxMS0wNi0wOSAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCShyZXZpc2lvbiA4ODYxMCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR093blB0ckd0ay5oIgpAQCAtMzk3OCwxMCArMzk3OSw3IEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X3N0b3BfbG9hZGluZyhXZWJLaXQKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcp
LT5tYWluRnJhbWUoKTsKLQotICAgIGlmIChGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxv
YWRlcigpKQotICAgICAgICBsb2FkZXItPnN0b3BGb3JVc2VyQ2FuY2VsKCk7CisgICAgY29yZSh3
ZWJWaWV3KS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wRm9yVXNlckNhbmNlbCgpOwogfQog
CiAvKioKQEAgLTQzNTYsMTAgKzQzNTQsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2Fu
X3Nob3dfbWltZV90CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVX
KHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJf
dmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSk7Ci0gICAgaWYgKEZyYW1lTG9hZGVyKiBsb2Fk
ZXIgPSBmcmFtZS0+bG9hZGVyKCkpCi0gICAgICAgIHJldHVybiBsb2FkZXItPmNhblNob3dNSU1F
VHlwZShTdHJpbmc6OmZyb21VVEY4KG1pbWVUeXBlKSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1
cm4gRkFMU0U7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNhblNob3dN
SU1FVHlwZShTdHJpbmc6OmZyb21VVEY4KG1pbWVUeXBlKSk7CiB9CiAKIC8qKgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gODg2MTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNi0xMiAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSB0cml2YWwgImZvcndhcmQtdG8tY2xpZW50IiBtZW1iZXIg
ZnVuY3Rpb25zIGZyb20gRnJhbWVMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYyNTEwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6YmxvY2tlZEVycm9yKToKKwogMjAxMS0wNi0xMCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDg4NjEwKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTksNiArMTksNyBAQAogCiAjaW1wb3J0ICJXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgiCiAKKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC00Miw1ICs0Myw1IEBAIFNjaGVkdWxlUGFpckhh
c2hTZXQqIFdlYkZyYW1lTmV0d29ya2luZ0MKIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KSBjb25zdAogewotICAgIHJldHVybiBmcmFtZSgpLT5sb2FkZXIoKS0+YmxvY2tlZEVycm9yKHJl
cXVlc3QpOworICAgIHJldHVybiBmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmJsb2NrZWRF
cnJvcihyZXF1ZXN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NjExKQor
KysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMDYtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdHJpdmFs
ICJmb3J3YXJkLXRvLWNsaWVudCIgbWVtYmVyIGZ1bmN0aW9ucyBmcm9tIEZyYW1lTG9hZGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjUxMAorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IpOgorCiAyMDEx
LTA2LTA2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5j
cHAJKHJldmlzaW9uIDg4NjEwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4LDkgKzE4
LDEwIEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUGFzc1JlZlB0cjxXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0PiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAgLTQwLDUgKzQxLDUgQEAgU3RyaW5nIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnJlZmVycgogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigp
LT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CisgICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigpLT5j
bGllbnQoKS0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQo=
</data>
<flag name="review"
          id="90662"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>