<?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>156635</bug_id>
          
          <creation_ts>2016-04-15 12:27:42 -0700</creation_ts>
          <short_desc>Web Automation: provide detailed error messages when an automation command fails</short_desc>
          <delta_ts>2016-04-18 10:45:45 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1184167</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-15 12:27:42 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184168</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-15 12:28:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/25754051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184274</commentid>
    <comment_count>2</comment_count>
      <attachid>276527</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-15 17:09:56 -0700</bug_when>
    <thetext>Created attachment 276527
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184275</commentid>
    <comment_count>3</comment_count>
      <attachid>276527</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-15 17:10:17 -0700</bug_when>
    <thetext>Comment on attachment 276527
Proposed Fix

Needs to land with corresponding internal patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184646</commentid>
    <comment_count>4</comment_count>
      <attachid>276527</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-04-18 07:37:25 -0700</bug_when>
    <thetext>Comment on attachment 276527
Proposed Fix

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

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:269
&gt; +        FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InternalError, &quot;The remote session could not request a new browsing context.&quot;);

If we are passing these error messages through to the endpoints, should we use &quot;window&quot; instead of &quot;browsing context&quot;?

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:273
&gt; +        FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InternalError, &quot;The remote session failed to create a new browsing context.&quot;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184713</commentid>
    <comment_count>5</comment_count>
      <attachid>276527</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-18 10:15:58 -0700</bug_when>
    <thetext>Comment on attachment 276527
Proposed Fix

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

&gt;&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:269
&gt;&gt; +        FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InternalError, &quot;The remote session could not request a new browsing context.&quot;);
&gt; 
&gt; If we are passing these error messages through to the endpoints, should we use &quot;window&quot; instead of &quot;browsing context&quot;?

They currently only go through to endpoints in engineering builds, since most of these errors are programming errors and leak implementation details. So the verbiage is not important IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184727</commentid>
    <comment_count>6</comment_count>
      <attachid>276527</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-04-18 10:40:04 -0700</bug_when>
    <thetext>Comment on attachment 276527
Proposed Fix

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:269
&gt;&gt;&gt; +        FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InternalError, &quot;The remote session could not request a new browsing context.&quot;);
&gt;&gt; 
&gt;&gt; If we are passing these error messages through to the endpoints, should we use &quot;window&quot; instead of &quot;browsing context&quot;?
&gt; 
&gt; They currently only go through to endpoints in engineering builds, since most of these errors are programming errors and leak implementation details. So the verbiage is not important IMO.

Okay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184729</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-18 10:45:45 -0700</bug_when>
    <thetext>Committed r199680: &lt;http://trac.webkit.org/changeset/199680&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276527</attachid>
            <date>2016-04-15 17:09:56 -0700</date>
            <delta_ts>2016-04-16 10:41:17 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-156635-20160415171010.patch</filename>
            <type>text/plain</type>
            <size>38457</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWEzODg3NWIzYTM4NGU1
MzAzNWNhNTMyNTE4NDZhNjlmODVkOTlkZi4uOGRmYTI4YjE4MWMwMmQwYmNkODI2YjdjNWE5ZDhm
NDM4YWExZDc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE2LTA0LTE1ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBwcm92
aWRlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzIHdoZW4gYW4gYXV0b21hdGlvbiBjb21tYW5kIGZh
aWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2
MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NzU0MDUxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbGwgaW4gbG90cyBvZiBtaXNzaW5nIGVy
cm9yIG1lc3NhZ2UgZGV0YWlscyBub3cgdGhhdCB0aGUgcmVtb3RlIGVuZCBrbm93cworICAgICAg
ICBob3cgdG8gcGFyc2UgZXJyb3Igc3RyaW5ncyB3aXRoIHByZWRlZmluZWQgZXJyb3IgbmFtZXMg
YW5kIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIFJlYXJyYW5nZSB0aGUgZXJyb3IgbWVzc2FnZSBtYWNy
b3MuIE1ha2UgaXQgcG9zc2libGUgdG8gcGFzcyBhIEVycm9yTWVzc2FnZQorICAgICAgICB2YXJp
YWJsZSBvciBqdXN0IHRoZSBlbnVtIHZhbHVlIG5hbWUgYW5kIGdldCBvdXQgYW4gZW5jb2RlZCBl
cnJvciBtZXNzYWdlCisgICAgICAgIHRoYXQgb3B0aW9uYWxseSBpbmNsdWRlcyBhIGZyZWUtZm9y
bSBkZXRhaWxzIHN0cmluZy4gVGhlIHByZWRlZmluZWQgZXJyb3IKKyAgICAgICAgbmFtZSBhbmQg
dGhlIGRldGFpbHMgc3RyaW5nIGFyZSBqb2luZWQgdG9nZXRoZXIgd2l0aCBhIHNlbWljb2xvbi4K
KworICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJyb3dz
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjbG9z
ZUJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
Ojpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpyZXNpemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjptb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0Nv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29CYWNrSW5C
cm93c2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVDaGls
ZEZyYW1lSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRp
ZFJlc29sdmVDaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlUGFyZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaG93aW5nSmF2YVNjcmlwdERp
YWxvZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaXNtaXNzQ3Vy
cmVudEphdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6YWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2cpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0VXNlcklucHV0Rm9yQ3Vy
cmVudEphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpkaWRHZXRDb29raWVzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6ZGVsZXRlU2luZ2xlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OmRpZERlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNo
b3QpOgorICAgICAgICBBdWRpdCBhbG1vc3QgYWxsIGVhcmx5IGV4aXRzIGFuZCBwcm92aWRlIGEg
cmVsZXZhbnQgZXJyb3IgZGV0YWlscyBtZXNzYWdlCisgICAgICAgIGlmIHRoZSBlcnJvciBpdHNl
bGYgaXMgYW1iaWd1b3VzLiBNYWtlIHN1cmUgdG8gZm9ybWF0IGFzeW5jaHJvbm91cyBlcnJvcnMu
CisKIDIwMTYtMDQtMTQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEF1dG9tYXRpb246IHN1cHByZXNzIGF1dG9tYXRpYyB0ZXh0IGNvcnJlY3Rpb24gaW4gcGFn
ZXMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXgg
ZDc5YzEwZDkwNDM3Mzg0OWVkOWUwMWMzMjBlYzUxNGU1NDNkMmJkNi4uYmIxNzM1N2VmOWY0YmQ0
YTRhMGRhMjRhZDlhNDNiMjZmODFkN2IxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAt
MzgsMTMgKzM4LDMzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9VVUlELmg+CiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotI2RlZmlu
ZSBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKG1lc3NhZ2VOYW1lKSBcCitzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3JOYW1lQW5kRGV0YWlsc1NlcGFyYXRvciA9ICI7IjsK
KworLy8gTWFrZSBzdXJlIHRoZSBwcmVkZWZpbmVkIGVycm9yIG5hbWUgaXMgdmFsaWQsIG90aGVy
d2lzZSB1c2UgSW50ZXJuYWxFcnJvci4KKyNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0Uo
ZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlPihlcnJvclN0cmluZykudmFsdWVPcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpCisKKy8vIElmIHRoZSBlcnJvciBu
YW1lIGlzIGluY29ycmVjdCBmb3IgdGhlc2UgbWFjcm9zLCBpdCB3aWxsIGJlIGEgY29tcGlsZS10
aW1lIGVycm9yLgorI2RlZmluZSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShlcnJv
ck5hbWUpIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6
OmVycm9yTmFtZSkKKyNkZWZpbmUgU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUVfQU5E
X0RFVEFJTFMoZXJyb3JOYW1lLCBkZXRhaWxzU3RyaW5nKSBtYWtlU3RyaW5nKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OmVycm9yTmFtZSksIGVycm9y
TmFtZUFuZERldGFpbHNTZXBhcmF0b3IsIGRldGFpbHNTdHJpbmcpCisKKy8vIElmIHRoZSBlcnJv
ciBtZXNzYWdlIGlzIG5vdCBhIHByZWRlZmluZWQgZXJyb3IsIEludGVybmFsRXJyb3Igd2lsbCBi
ZSB1c2VkIGluc3RlYWQuCisjZGVmaW5lIFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNT
QUdFKGVycm9yTWVzc2FnZSkgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6
OmdldEVudW1Db25zdGFudFZhbHVlKFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yTWVzc2Fn
ZSkpCisjZGVmaW5lIFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFX0FORF9ERVRB
SUxTKGVycm9yTWVzc2FnZSwgZGV0YWlsc1N0cmluZykgbWFrZVN0cmluZyhJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoVkFMSURBVEVE
X0VSUk9SX01FU1NBR0UoZXJyb3JNZXNzYWdlKSksIGVycm9yTmFtZUFuZERldGFpbHNTZXBhcmF0
b3IsIGRldGFpbHNTdHJpbmcpCisKKy8vIENvbnZlbmllbmNlIG1hY3JvcyBmb3IgZmlsbGluZyBp
biB0aGUgZXJyb3Igc3RyaW5nIG9mIHN5bmNocm9ub3VzIGNvbW1hbmRzIGluIGJhaWxvdXQgYnJh
bmNoZXMuCisjZGVmaW5lIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKGVycm9yTmFtZSkgXAog
ZG8geyBcCi0gICAgYXV0byBlbnVtVmFsdWUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpFcnJvck1lc3NhZ2U6Om1lc3NhZ2VOYW1lOyBcCi0gICAgZXJyb3JTdHJpbmcgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUo
ZW51bVZhbHVlKTsgXAorICAgIGVycm9yU3RyaW5nID0gU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VS
Uk9SX05BTUUoZXJyb3JOYW1lKTsgXAorICAgIHJldHVybjsgXAorfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoZXJyb3JOYW1l
LCBkZXRhaWxzU3RyaW5nKSBcCitkbyB7IFwKKyAgICBlcnJvclN0cmluZyA9IFNUUklOR19GT1Jf
UFJFREVGSU5FRF9FUlJPUl9OQU1FX0FORF9ERVRBSUxTKGVycm9yTmFtZSwgZGV0YWlsc1N0cmlu
Zyk7IFwKICAgICByZXR1cm47IFwKIH0gd2hpbGUgKGZhbHNlKQogCkBAIC0yMzcsNyArMjU3LDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3
ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBjb250
ZXh0ID0gYnVpbGRCcm93c2luZ0NvbnRleHRGb3JQYWdlKCpwYWdlKTsKIH0KQEAgLTI0NiwxMSAr
MjY2LDExIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJyb3dzaW5nQ29udGV4
dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKICAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9NRVNTQUdFKEludGVybmFsRXJyb3IpOworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUl9BTkRfREVUQUlMUyhJbnRlcm5hbEVycm9yLCAiVGhlIHJlbW90ZSBzZXNzaW9uIGNvdWxk
IG5vdCByZXF1ZXN0IGEgbmV3IGJyb3dzaW5nIGNvbnRleHQuIik7CiAKICAgICBXZWJQYWdlUHJv
eHkqIHBhZ2UgPSBtX2NsaWVudC0+ZGlkUmVxdWVzdE5ld1dpbmRvdyh0aGlzKTsKICAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW50ZXJu
YWxFcnJvcik7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KEludGVybmFsRXJyb3IsICJUaGUgcmVtb3RlIHNlc3Npb24gZmFpbGVkIHRvIGNyZWF0ZSBhIG5l
dyBicm93c2luZyBjb250ZXh0LiIpOwogCiAgICAgbV9hY3RpdmVCcm93c2luZ0NvbnRleHRIYW5k
bGUgPSAqaGFuZGxlID0gaGFuZGxlRm9yV2ViUGFnZVByb3h5KCpwYWdlKTsKIH0KQEAgLTI1OSw3
ICsyNzksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjbG9zZUJyb3dzaW5nQ29udGV4
dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cgogewogICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwogICAgIGlmICghcGFnZSkKLSAg
ICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7
CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAog
ICAgIGlmIChoYW5kbGUgPT0gbV9hY3RpdmVCcm93c2luZ0NvbnRleHRIYW5kbGUpCiAgICAgICAg
IG1fYWN0aXZlQnJvd3NpbmdDb250ZXh0SGFuZGxlID0gZW1wdHlTdHJpbmcoKTsKQEAgLTI3MSwx
MSArMjkxLDExIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdD
b250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yCiB7CiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAg
ICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdF
KFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2lu
ZG93Tm90Rm91bmQpOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB3ZWJGcmFtZVByb3h5
Rm9ySGFuZGxlKG9wdGlvbmFsRnJhbWVIYW5kbGUgPyAqb3B0aW9uYWxGcmFtZUhhbmRsZSA6IGVt
cHR5U3RyaW5nKCksICpwYWdlKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICBGQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEZyYW1lTm90Rm91bmQpOworICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAogICAgIC8vIEZJWE1FOiBXZSBk
b24ndCBuZWVkIHRvIHRyYWNrIHRoaXMgaW4gV0syLiBSZW1vdmUgaW4gYSBmb2xsb3cgdXAuCiAg
ICAgbV9hY3RpdmVCcm93c2luZ0NvbnRleHRIYW5kbGUgPSBicm93c2luZ0NvbnRleHRIYW5kbGU7
CkBAIC0yODYsODYgKzMwNiw4NiBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hU
b0Jyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvcgogCiB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZXNpemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBzaXplT2JqZWN0KQogewotICAgIC8vIEZJWE1F
IDxyZGFyOi8vcHJvYmxlbS8yNTA5NDEwNj46IFNwZWNpZnkgd2hhdCBwYXJhbWV0ZXIgd2FzIG1p
c3Npbmcgb3IgaW52YWxpZCBhbmQgaG93LgotICAgIC8vIFRoaXMgcmVxdWlyZXMgc29tZSBjaGFu
Z2VzIHRvIHRoZSBvdGhlciBlbmQncyBlcnJvciBoYW5kbGluZy4gUmlnaHQgbm93IGl0IGxvb2tz
IGZvciBhbgotICAgIC8vIGV4YWN0IGVycm9yIG1lc3NhZ2UgbWF0Y2guIFdlIGNvdWxkIHN0dWZm
IHRoaXMgaW50byB0aGUgJ2RhdGEnIGZpZWxkIG9uIGVycm9yIG9iamVjdC4KICAgICBmbG9hdCB3
aWR0aDsKICAgICBpZiAoIXNpemVPYmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJ3
aWR0aCIpLCB3aWR0aCkpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NB
R0UoTWlzc2luZ1BhcmFtZXRlcik7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgJ3dpZHRoJyBwYXJhbWV0ZXIgd2Fz
IG5vdCBmb3VuZCBvciBpbnZhbGlkLiIpOwogCiAgICAgZmxvYXQgaGVpZ2h0OwogICAgIGlmICgh
c2l6ZU9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoImhlaWdodCIpLCBoZWlnaHQp
KQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJh
bWV0ZXIpOworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhN
aXNzaW5nUGFyYW1ldGVyLCAiVGhlICdoZWlnaHQnIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9y
IGludmFsaWQuIik7CisKKyAgICBpZiAod2lkdGggPCAwKQorICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlICd3aWR0aCcg
cGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOwogCi0gICAgaWYgKHdpZHRoIDwgMCB8
fCBoZWlnaHQgPCAwKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdF
KEludmFsaWRQYXJhbWV0ZXIpOworICAgIGlmIChoZWlnaHQgPCAwKQorICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlICdo
ZWlnaHQnIHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsKIAogICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwogICAgIGlmICghcGFn
ZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RG
b3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5k
KTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBvcmlnaW5hbEZyYW1lOwogICAgIHBhZ2UtPmdl
dFdpbmRvd0ZyYW1lKG9yaWdpbmFsRnJhbWUpOwotICAgIAorCiAgICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IG5ld0ZyYW1lID0gV2ViQ29yZTo6RmxvYXRSZWN0KG9yaWdpbmFsRnJhbWUubG9jYXRpb24o
KSwgV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICBpZiAobmV3RnJhbWUg
PT0gb3JpZ2luYWxGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFnZS0+c2V0V2luZG93
RnJhbWUobmV3RnJhbWUpOwotICAgIAorCiAgICAgLy8gSWYgbm90aGluZyBjaGFuZ2VkIGF0IGFs
bCwgaXQncyBwcm9iYWJseSBmYWlyIHRvIHJlcG9ydCB0aGF0IHNvbWV0aGluZyB3ZW50IHdyb25n
LgogICAgIC8vIChXZSBjYW4ndCBhc3N1bWUgdGhhdCB0aGUgcmVxdWVzdGVkIGZyYW1lIHNpemUg
d2lsbCBiZSBob25vcmVkIGV4YWN0bHksIGhvd2V2ZXIuKQogICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCB1cGRhdGVkRnJhbWU7CiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWUodXBkYXRlZEZyYW1lKTsK
ICAgICBpZiAob3JpZ2luYWxGcmFtZSA9PSB1cGRhdGVkRnJhbWUpCi0gICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW50ZXJuYWxFcnJvcik7CisgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJUaGUgd2lu
ZG93IHNpemUgd2FzIGV4cGVjdGVkIHRvIGhhdmUgY2hhbmdlZCwgYnV0IGRpZCBub3QuIik7CiB9
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1vdmVXaW5kb3dPZkJyb3dzaW5nQ29udGV4
dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5k
bGUsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBwb3NpdGlvbk9iamVjdCkKIHsK
LSAgICAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMjUwOTQxMDY+OiBTcGVjaWZ5IHdoYXQgcGFy
YW1ldGVyIHdhcyBtaXNzaW5nIG9yIGludmFsaWQgYW5kIGhvdy4KLSAgICAvLyBUaGlzIHJlcXVp
cmVzIHNvbWUgY2hhbmdlcyB0byB0aGUgb3RoZXIgZW5kJ3MgZXJyb3IgaGFuZGxpbmcuIFJpZ2h0
IG5vdyBpdCBsb29rcyBmb3IgYW4KLSAgICAvLyBleGFjdCBlcnJvciBtZXNzYWdlIG1hdGNoLiBX
ZSBjb3VsZCBzdHVmZiB0aGlzIGludG8gdGhlICdkYXRhJyBmaWVsZCBvbiBlcnJvciBvYmplY3Qu
CiAgICAgZmxvYXQgeDsKICAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LmdldERvdWJsZShXVEY6OkFT
Q0lJTGl0ZXJhbCgieCIpLCB4KSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
TUVTU0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSAneCcgcGFyYW1ldGVyIHdh
cyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKIAogICAgIGZsb2F0IHk7CiAgICAgaWYgKCFwb3Np
dGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoInkiKSwgeSkpCi0gICAgICAg
IEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7Cisg
ICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJh
bWV0ZXIsICJUaGUgJ3knIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9yIGludmFsaWQuIik7CiAK
LSAgICBpZiAoeCA8IDAgfHwgeSA8IDApCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX01FU1NBR0UoSW52YWxpZFBhcmFtZXRlcik7CisgICAgaWYgKHggPCAwKQorICAgICAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAi
VGhlICd4JyBwYXJhbWV0ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7CisKKyAgICBpZiAoeSA8
IDApCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFs
aWRQYXJhbWV0ZXIsICJUaGUgJ3knIHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsK
IAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUp
OwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVT
U0FHRShXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBvcmlnaW5hbEZyYW1l
OwogICAgIHBhZ2UtPmdldFdpbmRvd0ZyYW1lKG9yaWdpbmFsRnJhbWUpOwotICAgIAorCiAgICAg
V2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0gV2ViQ29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6
OkZsb2F0UG9pbnQoeCwgeSksIG9yaWdpbmFsRnJhbWUuc2l6ZSgpKTsKICAgICBpZiAobmV3RnJh
bWUgPT0gb3JpZ2luYWxGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFnZS0+c2V0V2lu
ZG93RnJhbWUobmV3RnJhbWUpOwotICAgIAorCiAgICAgLy8gSWYgbm90aGluZyBjaGFuZ2VkIGF0
IGFsbCwgaXQncyBwcm9iYWJseSBmYWlyIHRvIHJlcG9ydCB0aGF0IHNvbWV0aGluZyB3ZW50IHdy
b25nLgogICAgIC8vIChXZSBjYW4ndCBhc3N1bWUgdGhhdCB0aGUgcmVxdWVzdGVkIGZyYW1lIHNp
emUgd2lsbCBiZSBob25vcmVkIGV4YWN0bHksIGhvd2V2ZXIuKQogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCB1cGRhdGVkRnJhbWU7CiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWUodXBkYXRlZEZyYW1l
KTsKICAgICBpZiAob3JpZ2luYWxGcmFtZSA9PSB1cGRhdGVkRnJhbWUpCi0gICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW50ZXJuYWxFcnJvcik7CisgICAgICAgIEZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJUaGUg
d2luZG93IHBvc2l0aW9uIHdhcyBleHBlY3RlZCB0byBoYXZlIGNoYW5nZWQsIGJ1dCBkaWQgbm90
LiIpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29u
dGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBo
YW5kbGUsIGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8TmF2aWdhdGVCcm93c2luZ0NvbnRleHRDYWxs
YmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJv
eHlGb3JIYW5kbGUoaGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fcGVuZGluZ05hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBh
Z2UudGFrZShwYWdlLT5wYWdlSUQoKSkpCi0gICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpUaW1lb3V0
KSk7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURf
RVJST1JfTkFNRShUaW1lb3V0KSk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbkluQnJvd3NpbmdD
b250ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS0+cGFnZUlEKCksIFdURk1vdmUoY2FsbGJh
Y2spKTsKIAogICAgIHBhZ2UtPmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgdXJsKSk7CkBAIC0zNzUsMTAgKzM5NSwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
Ojpnb0JhY2tJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvcgog
ewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUp
OwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVT
U0FHRShXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKIAogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTmF2
aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJ
RCgpKSkKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OlRpbWVvdXQpKTsKKyAgICAgICAgY2FsbGJh
Y2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKFRpbWVvdXQp
KTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQ
YWdlLnNldChwYWdlLT5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgcGFnZS0+
Z29CYWNrKCk7CkBAIC0zODgsMTAgKzQwOCwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
Ojpnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcgog
ewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUp
OwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVT
U0FHRShXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKIAogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTmF2
aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJ
RCgpKSkKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OlRpbWVvdXQpKTsKKyAgICAgICAgY2FsbGJh
Y2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKFRpbWVvdXQp
KTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQ
YWdlLnNldChwYWdlLT5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgcGFnZS0+
Z29Gb3J3YXJkKCk7CkBAIC00MDEsMTAgKzQyMSwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JT
dAogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5k
bGUpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
TUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
TmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBh
Z2VJRCgpKSkKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OlRpbWVvdXQpKTsKKyAgICAgICAgY2Fs
bGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKFRpbWVv
dXQpKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQ
ZXJQYWdlLnNldChwYWdlLT5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgY29u
c3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7CkBAIC00MjIsMTEgKzQ0MiwxMSBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiBlcgogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBh
Z2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkK
LSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3Vu
ZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsK
IAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gd2ViRnJhbWVQcm94eUZvckhhbmRsZShvcHRp
b25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpLCAq
cGFnZSk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1JfTUVTU0FHRShGcmFtZU5vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHNWZWN0
b3I7CiAgICAgYXJndW1lbnRzVmVjdG9yLnJlc2VydmVDYXBhY2l0eShhcmd1bWVudHMubGVuZ3Ro
KCkpOwpAQCAtNDUyLDI1ICs0NzIsMjQgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlk
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY28KICAgICBp
ZiAoIWNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWVycm9yVHlwZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzZW5kIGJvdGggdGhlIGVycm9y
VHlwZSBhbmQgcmVzdWx0LCBzaW5jZSByZXN1bHQgaGFzIHRoZSBzcGVjaWZpYyBleGNlcHRpb24g
bWVzc2FnZS4KLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yVHlwZSk7Ci0gICAg
fSBlbHNlCisgICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKQorICAgICAgICBjYWxsYmFjay0+
c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0VfQU5EX0RFVEFJ
TFMoZXJyb3JUeXBlLCByZXN1bHQpKTsKKyAgICBlbHNlCiAgICAgICAgIGNhbGxiYWNrLT5zZW5k
U3VjY2VzcyhyZXN1bHQpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZl
Q2hpbGRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxG
cmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVD
aGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFvcHRpb25h
bE9yZGluYWwgJiYgIW9wdGlvbmFsTmFtZSAmJiAhb3B0aW9uYWxOb2RlSGFuZGxlKQotICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIpOwor
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFy
YW1ldGVyLCAiQ29tbWFuZCBtdXN0IHNwZWNpZnkgYSBjaGlsZCBmcmFtZSBieSBvcmRpbmFsLCBu
YW1lLCBvciBlbGVtZW50IGhhbmRsZS4iKTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFn
ZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RG
b3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5k
KTsKIAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gd2ViRnJhbWVQcm94eUZvckhhbmRsZShv
cHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygp
LCAqcGFnZSk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1JfTUVTU0FHRShGcmFtZU5vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9u
ZXh0UmVzb2x2ZUZyYW1lQ2FsbGJhY2tJRCsrOwogICAgIG1fcmVzb2x2ZUNoaWxkRnJhbWVIYW5k
bGVDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTUwMCw3
ICs1MTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlQ2hpbGRGcmFt
ZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcgogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIWVycm9yVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVy
ZShlcnJvclR5cGUpOworICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9Q
UkVERUZJTkVEX0VSUk9SX01FU1NBR0UoZXJyb3JUeXBlKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoaGFuZGxlRm9yV2ViRnJhbWVJRChmcmFtZUlEKSk7CiB9CkBA
IC01MDksMTEgKzUyOCwxMSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFy
ZW50RnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJybwogewogICAgIFdlYlBh
Z2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5k
bGUpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
TUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gd2ViRnJh
bWVQcm94eUZvckhhbmRsZShmcmFtZUhhbmRsZSwgKnBhZ2UpOwogICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoRnJhbWVOb3RGb3VuZCk7
CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCiAg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fbmV4dFJlc29sdmVQYXJlbnRGcmFtZUNhbGxiYWNr
SUQrKzsKICAgICBtX3Jlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrcy5zZXQoY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNTI4LDcgKzU0Nyw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OmRpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lE
LCB1aW50NjRfdCBmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghZXJyb3JUeXBlLmlzRW1w
dHkoKSkKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yVHlwZSk7CisgICAgICAg
IGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FH
RShlcnJvclR5cGUpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vzcyho
YW5kbGVGb3JXZWJGcmFtZUlEKGZyYW1lSUQpKTsKIH0KQEAgLTUzNywxMSArNTU2LDExIEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmIGVycm9yU3RyCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFn
ZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQot
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKFdpbmRvd05vdEZvdW5k
KTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwog
CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKGZyYW1l
SGFuZGxlLCAqcGFnZSk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfTUVTU0FHRShGcmFtZU5vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9uZXh0Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFja0lEKys7CiAgICAgbV9jb21wdXRl
RWxlbWVudExheW91dENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykp
OwpAQCAtNTU5LDcgKzU3OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1
dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghZXJyb3JUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBjYWxsYmFj
ay0+c2VuZEZhaWx1cmUoZXJyb3JUeXBlKTsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJl
KFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKGVycm9yVHlwZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC01ODUsMTEgKzYwNCwxMSBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjppc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmIGVycgogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgaWYgKCFtX2NsaWVudCkKLSAg
ICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShJbnRlcm5hbEVycm9yKTsK
KyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50ZXJuYWxFcnJvcik7CiAKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250
ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworICAgICAgICBGQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICAqcmVzdWx0ID0gbV9jbGllbnQtPmlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2dPblBhZ2UodGhpcywgcGFnZSk7CiB9CkBAIC01OTgsMTQg
KzYxNywxNCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaXNtaXNzQ3VycmVudEphdmFT
Y3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZwogewogICAgIEFTU0VSVChtX2NsaWVu
dCk7CiAgICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1JfTUVTU0FHRShJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1IoSW50ZXJuYWxFcnJvcik7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdl
UHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0g
ICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQp
OworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAK
ICAgICBpZiAoIW1fY2xpZW50LT5pc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nT25QYWdlKHRoaXMs
IHBhZ2UpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE5vSmF2
YVNjcmlwdERpYWxvZyk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vSmF2
YVNjcmlwdERpYWxvZyk7CiAKICAgICBtX2NsaWVudC0+ZGlzbWlzc0N1cnJlbnRKYXZhU2NyaXB0
RGlhbG9nT25QYWdlKHRoaXMsIHBhZ2UpOwogfQpAQCAtNjE0LDE0ICs2MzMsMTQgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2coSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGlmICghbV9j
bGllbnQpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW50ZXJu
YWxFcnJvcik7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJy
b3IpOwogCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJy
b3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCiAgICAgaWYgKCFtX2NsaWVu
dC0+aXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZ09uUGFnZSh0aGlzLCBwYWdlKSkKLSAgICAgICAg
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShOb0phdmFTY3JpcHREaWFsb2cpOwor
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihOb0phdmFTY3JpcHREaWFsb2cpOwog
CiAgICAgbV9jbGllbnQtPmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKHRoaXMs
IHBhZ2UpOwogfQpAQCAtNjMwLDE0ICs2NDksMTQgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6bWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmkK
IHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIEZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW50ZXJuYWxFcnJvcik7CisgICAgICAg
IEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOwogCiAgICAgV2ViUGFn
ZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9N
RVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1IoV2luZG93Tm90Rm91bmQpOwogCiAgICAgaWYgKCFtX2NsaWVudC0+aXNTaG93aW5nSmF2YVNj
cmlwdERpYWxvZ09uUGFnZSh0aGlzLCBwYWdlKSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfTUVTU0FHRShOb0phdmFTY3JpcHREaWFsb2cpOworICAgICAgICBGQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUihOb0phdmFTY3JpcHREaWFsb2cpOwogCiAgICAgKnRleHQgPSBtX2Ns
aWVudC0+bWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UodGhpcywgcGFnZSk7
CiB9CkBAIC02NDYsMTQgKzY2NSwxNCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRV
c2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdChJbnNwZWN0b3I6OkVycgogewogICAg
IEFTU0VSVChtX2NsaWVudCk7CiAgICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfTUVTU0FHRShJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1IoSW50ZXJuYWxFcnJvcik7CiAKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKICAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
V2luZG93Tm90Rm91bmQpOworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CiAKICAgICBpZiAoIW1fY2xpZW50LT5pc1Nob3dpbmdKYXZhU2NyaXB0RGlh
bG9nT25QYWdlKHRoaXMsIHBhZ2UpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9NRVNTQUdFKE5vSmF2YVNjcmlwdERpYWxvZyk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SKE5vSmF2YVNjcmlwdERpYWxvZyk7CiAKICAgICBtX2NsaWVudC0+c2V0VXNlcklu
cHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9tcHRPblBhZ2UodGhpcywgcGFnZSwgcHJvbXB0VmFs
dWUpOwogfQpAQCAtNjYyLDEyICs2ODEsMTIgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
Z2V0QWxsQ29va2llcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKIHsK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdD
b250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBtYWlu
RnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICBBU1NFUlQobWFpbkZyYW1lKTsKICAgICBp
ZiAoIW1haW5GcmFtZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FH
RShXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZy
YW1lTm90Rm91bmQpOwogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fbmV4dEdldENvb2tp
ZXNDYWxsYmFja0lEKys7CiAgICAgbV9nZXRDb29raWVDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTcwNyw3ICs3MjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpkaWRHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgVmVj
dG9yPFdlYgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWVycm9yVHlwZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yVHlwZSk7CisgICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRShl
cnJvclR5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzE4LDEyICs3MzcsMTIg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlU2luZ2xlQ29va2llKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3QKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3
ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBh
Z2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90
Rm91bmQpOworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3Vu
ZCk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsK
ICAgICBBU1NFUlQobWFpbkZyYW1lKTsKICAgICBpZiAoIW1haW5GcmFtZSkKLSAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CisgICAgICAg
IEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCiAgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fbmV4dERlbGV0ZUNvb2tpZUNhbGxiYWNrSUQrKzsKICAgICBtX2Rl
bGV0ZUNvb2tpZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwpA
QCAtNzM4LDcgKzc1Nyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZERlbGV0ZUNv
b2tpZSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVyCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghZXJyb3JUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBjYWxsYmFjay0+
c2VuZEZhaWx1cmUoZXJyb3JUeXBlKTsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNU
UklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKGVycm9yVHlwZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03NDksNyArNzY4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6YWRkU2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW4KIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJv
d3NpbmdDb250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBXZWJDb3JlOjpVUkwg
YWN0aXZlVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0
YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsKQEAg
LTc1NywxNCArNzc2LDE0IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNv
b2tpZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgV2ViQ29yZTo6
Q29va2llIGNvb2tpZTsKIAogICAgIGlmICghY29va2llT2JqZWN0LmdldFN0cmluZyhXVEY6OkFT
Q0lJTGl0ZXJhbCgibmFtZSIpLCBjb29raWUubmFtZSkpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisgICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFy
YW1ldGVyICduYW1lJyB3YXMgbm90IGZvdW5kLiIpOwogCiAgICAgaWYgKCFjb29raWVPYmplY3Qu
Z2V0U3RyaW5nKFdURjo6QVNDSUlMaXRlcmFsKCJ2YWx1ZSIpLCBjb29raWUudmFsdWUpKQotICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIp
OworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5n
UGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAndmFsdWUnIHdhcyBub3QgZm91bmQuIik7CiAKICAg
ICBTdHJpbmcgZG9tYWluOwogICAgIGlmICghY29va2llT2JqZWN0LmdldFN0cmluZyhXVEY6OkFT
Q0lJTGl0ZXJhbCgiZG9tYWluIiksIGRvbWFpbikpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisgICAgICAgIEZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1l
dGVyICdkb21haW4nIHdhcyBub3QgZm91bmQuIik7CiAKICAgICAvLyBJbmhlcml0IHRoZSBkb21h
aW4vaG9zdCBmcm9tIHRoZSBtYWluIGZyYW1lJ3MgVVJMIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5
IHNldC4KICAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKQEAgLTc3MywyMiArNzkyLDIyIEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgY29va2llLmRvbWFpbiA9IGRvbWFpbjsKIAogICAg
IGlmICghY29va2llT2JqZWN0LmdldFN0cmluZyhXVEY6OkFTQ0lJTGl0ZXJhbCgicGF0aCIpLCBj
b29raWUucGF0aCkpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
TWlzc2luZ1BhcmFtZXRlcik7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FO
RF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdwYXRoJyB3YXMgbm90
IGZvdW5kLiIpOwogCiAgICAgZG91YmxlIGV4cGlyZXM7CiAgICAgaWYgKCFjb29raWVPYmplY3Qu
Z2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJleHBpcmVzIiksIGV4cGlyZXMpKQotICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIpOwor
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFy
YW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnZXhwaXJlcycgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAg
IGNvb2tpZS5leHBpcmVzID0gZXhwaXJlcyAqIDEwMDAuMDsKIAogICAgIGlmICghY29va2llT2Jq
ZWN0LmdldEJvb2xlYW4oV1RGOjpBU0NJSUxpdGVyYWwoInNlY3VyZSIpLCBjb29raWUuc2VjdXJl
KSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShNaXNzaW5nUGFy
YW1ldGVyKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
TWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3NlY3VyZScgd2FzIG5vdCBmb3VuZC4i
KTsKIAogICAgIGlmICghY29va2llT2JqZWN0LmdldEJvb2xlYW4oV1RGOjpBU0NJSUxpdGVyYWwo
InNlc3Npb24iKSwgY29va2llLnNlc3Npb24pKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRl
ciAnc2Vzc2lvbicgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIGlmICghY29va2llT2JqZWN0Lmdl
dEJvb2xlYW4oV1RGOjpBU0NJSUxpdGVyYWwoImh0dHBPbmx5IiksIGNvb2tpZS5odHRwT25seSkp
Ci0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1BhcmFt
ZXRlcik7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1p
c3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4i
KTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vz
c1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwogICAgIGNvb2tpZU1h
bmFnZXItPmFkZENvb2tpZShjb29raWUsIGFjdGl2ZVVSTC5ob3N0KCkpOwpAQCAtODAwLDcgKzgx
OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYg
KCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKFdpbmRv
d05vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90
Rm91bmQpOwogCiAgICAgV2ViQ29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKICAgICBBU1NF
UlQoYWN0aXZlVVJMLmlzVmFsaWQoKSk7CkBAIC04MzAsMjIgKzg0OSwxOSBAQCBzdGF0aWMgV2Vi
RXZlbnQ6Ok1vZGlmaWVycyBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3Bl
Y3Rvcjo6UHJvdG9jbwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50
ZXJhY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgaGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcmVxdWVzdGVkUG9z
aXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSYga2V5TW9kaWZpZXJTdHJpbmdzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6UG9pbnQ+JiB1cGRhdGVkUG9zaXRpb25PYmplY3QpCiB7CiAjaWYgIVVTRShBUFBLSVQp
Ci0gICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShOb3RJbXBsZW1lbnRlZCk7
CisgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoTm90SW1wbGVtZW50ZWQpOwogI2Vsc2UK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsK
ICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NB
R0UoV2luZG93Tm90Rm91bmQpOworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihX
aW5kb3dOb3RGb3VuZCk7CiAKLSAgICAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMjUwOTQxMDY+
OiBTcGVjaWZ5IHdoYXQgcGFyYW1ldGVyIHdhcyBtaXNzaW5nIG9yIGludmFsaWQgYW5kIGhvdy4K
LSAgICAvLyBUaGlzIHJlcXVpcmVzIHNvbWUgY2hhbmdlcyB0byB0aGUgb3RoZXIgZW5kJ3MgZXJy
b3IgaGFuZGxpbmcuIFJpZ2h0IG5vdyBpdCBsb29rcyBmb3IgYW4KLSAgICAvLyBleGFjdCBlcnJv
ciBtZXNzYWdlIG1hdGNoLiBXZSBjb3VsZCBzdHVmZiB0aGlzIGludG8gdGhlICdkYXRhJyBmaWVs
ZCBvbiBlcnJvciBvYmplY3QuCiAgICAgZmxvYXQgeDsKICAgICBpZiAoIXJlcXVlc3RlZFBvc2l0
aW9uT2JqZWN0LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgieCIpLCB4KSkKLSAgICAgICAg
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKyAg
ICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFt
ZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3gnIHdhcyBub3QgZm91bmQuIik7CiAKICAgICBmbG9hdCB5
OwogICAgIGlmICghcmVxdWVzdGVkUG9zaXRpb25PYmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlM
aXRlcmFsKCJ5IiksIHkpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNT
QUdFKE1pc3NpbmdQYXJhbWV0ZXIpOworICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAneScgd2FzIG5v
dCBmb3VuZC4iKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZTsKICAgICBw
YWdlLT5nZXRXaW5kb3dGcmFtZSh3aW5kb3dGcmFtZSk7CkBAIC04NTcsMjEgKzg3MywyMSBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiBlcnJvcgogCiAgICAgYXV0byBwYXJzZWRJbnRlcmFjdGlvbiA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbj4o
bW91c2VJbnRlcmFjdGlvblN0cmluZyk7CiAgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKLSAg
ICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVy
KTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxp
ZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2ludGVyYWN0aW9uJyBpcyBpbnZhbGlkLiIpOwog
CiAgICAgYXV0byBwYXJzZWRCdXR0b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uPihtb3VzZUJ1dHRvblN0cmluZyk7CiAgICAgaWYgKCFwYXJz
ZWRCdXR0b24pCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW52
YWxpZFBhcmFtZXRlcik7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9E
RVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdidXR0b24nIGlzIGludmFs
aWQuIik7CiAKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycyA9IChXZWJFdmVu
dDo6TW9kaWZpZXJzKTA7CiAgICAgZm9yIChhdXRvIGl0ID0ga2V5TW9kaWZpZXJTdHJpbmdzLmJl
Z2luKCk7IGl0ICE9IGtleU1vZGlmaWVyU3RyaW5ncy5lbmQoKTsgKytpdCkgewogICAgICAgICBT
dHJpbmcgbW9kaWZpZXJTdHJpbmc7CiAgICAgICAgIGlmICghaXQtPmdldCgpLT5hc1N0cmluZyht
b2RpZmllclN0cmluZykpCi0gICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9N
RVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ21v
ZGlmaWVycycgaXMgaW52YWxpZC4iKTsKIAogICAgICAgICBhdXRvIHBhcnNlZE1vZGlmaWVyID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllcj4obW9k
aWZpZXJTdHJpbmcpOwogICAgICAgICBpZiAoIXBhcnNlZE1vZGlmaWVyKQotICAgICAgICAgICAg
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKyAg
ICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQ
YXJhbWV0ZXIsICJBIG1vZGlmaWVyIGluIHRoZSAnbW9kaWZpZXJzJyBhcnJheSBpcyBpbnZhbGlk
LiIpOwogICAgICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIGVudW1WYWx1ZSA9IHByb3RvY29sTW9k
aWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIocGFyc2VkTW9kaWZpZXIudmFsdWUoKSk7CiAgICAgICAg
IGtleU1vZGlmaWVycyA9IChXZWJFdmVudDo6TW9kaWZpZXJzKShlbnVtVmFsdWUgfCBrZXlNb2Rp
ZmllcnMpOwogICAgIH0KQEAgLTg4OCwxNCArOTA0LDE0IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVy
cm9yCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlv
bnMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW50ZXJhY3Rpb25zKQogewogI2lmICFVU0UoQVBQ
S0lUKQotICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoTm90SW1wbGVtZW50
ZWQpOworICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKICNl
bHNlCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRs
ZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9N
RVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1IoV2luZG93Tm90Rm91bmQpOwogCiAgICAgaWYgKCFpbnRlcmFjdGlvbnMubGVuZ3RoKCkpCi0g
ICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW52YWxpZFBhcmFtZXRl
cik7CisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFs
aWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdpbnRlcmFjdGlvbnMnIHdhcyBub3QgZm91bmQg
b3IgZW1wdHkuIik7CiAKICAgICAvLyBWYWxpZGF0ZSBhbGwgb2YgdGhlIHBhcmFtZXRlcnMgYmVm
b3JlIHBlcmZvcm1pbmcgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBicm93c2luZyBjb250ZXh0
IHVuZGVyIHRlc3QuCiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gYWN0aW9uc1Rv
UGVyZm9ybTsKQEAgLTkwNCwyMSArOTIwLDIxIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiAg
ICAgZm9yIChhdXRvIGludGVyYWN0aW9uIDogaW50ZXJhY3Rpb25zKSB7CiAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGludGVyYWN0aW9uT2JqZWN0OwogICAgICAgICBpZiAoIWludGVy
YWN0aW9uLT5hc09iamVjdChpbnRlcmFjdGlvbk9iamVjdCkpCi0gICAgICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworICAgICAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRl
ciwgIkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50ZXJhY3Rpb25zJyBwYXJhbWV0ZXIgd2FzIGlu
dmFsaWQuIik7CiAKICAgICAgICAgU3RyaW5nIGludGVyYWN0aW9uVHlwZVN0cmluZzsKICAgICAg
ICAgaWYgKCFpbnRlcmFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidHlwZSIp
LCBpbnRlcmFjdGlvblR5cGVTdHJpbmcpKQotICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKyAgICAgICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnRl
cmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgdGhlICd0
eXBlJyBrZXkuIik7CiAgICAgICAgIGF1dG8gaW50ZXJhY3Rpb25UeXBlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZT4oaW50
ZXJhY3Rpb25UeXBlU3RyaW5nKTsKICAgICAgICAgaWYgKCFpbnRlcmFjdGlvblR5cGUpCi0gICAg
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0
ZXIpOworICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50ZXJhY3Rpb25zJyBw
YXJhbWV0ZXIgaGFzIGFuIGludmFsaWQgJ3R5cGUnIGtleS4iKTsKIAogICAgICAgICBTdHJpbmcg
dmlydHVhbEtleVN0cmluZzsKICAgICAgICAgYm9vbCBmb3VuZFZpcnR1YWxLZXkgPSBpbnRlcmFj
dGlvbk9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgia2V5IiksIHZpcnR1YWxLZXlTdHJp
bmcpOwogICAgICAgICBpZiAoZm91bmRWaXJ0dWFsS2V5KSB7CiAgICAgICAgICAgICBhdXRvIHZp
cnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk+KHZpcnR1YWxLZXlTdHJpbmcpOwogICAgICAgICAgICAgaWYgKCF2aXJ0dWFsS2V5KQot
ICAgICAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW52YWxp
ZFBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50
ZXJhY3Rpb25zJyBwYXJhbWV0ZXIgaGFzIGFuIGludmFsaWQgJ2tleScgdmFsdWUuIik7CiAKICAg
ICAgICAgICAgIGFjdGlvbnNUb1BlcmZvcm0udW5jaGVja2VkQXBwZW5kKFt0aGlzLCBwYWdlLCBp
bnRlcmFjdGlvblR5cGUsIHZpcnR1YWxLZXldIHsKICAgICAgICAgICAgICAgICBwbGF0Zm9ybVNp
bXVsYXRlS2V5U3Ryb2tlKCpwYWdlLCBpbnRlcmFjdGlvblR5cGUudmFsdWUoKSwgdmlydHVhbEtl
eS52YWx1ZSgpKTsKQEAgLTkzMiw3ICs5NDgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLAog
ICAgICAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2Fy
ZEludGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6CiAgICAgICAgICAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNl
OgogICAgICAgICAgICAgICAgIC8vICdLZXlQcmVzcycgYW5kICdLZXlSZWxlYXNlJyBhcmUgbWVh
bnQgZm9yIGEgdmlydHVhbCBrZXkgYW5kIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBhIHN0cmluZyAo
c2VxdWVuY2Ugb2YgY29kZXBvaW50cykuCi0gICAgICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAi
QW4gaW50ZXJhY3Rpb24gaW4gdGhlICdpbnRlcmFjdGlvbnMnIHBhcmFtZXRlciBoYXMgYW4gaW52
YWxpZCAna2V5JyB2YWx1ZS4iKTsKIAogICAgICAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6CiAg
ICAgICAgICAgICAgICAgYWN0aW9uc1RvUGVyZm9ybS51bmNoZWNrZWRBcHBlbmQoW3RoaXMsIHBh
Z2UsIGtleVNlcXVlbmNlXSB7CkBAIC05NDMsNyArOTU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZm91bmRWaXJ0dWFsS2V5ICYmICFmb3Vu
ZEtleVNlcXVlbmNlKQotICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVT
U0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKyAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJBbiBpbnRlcmFjdGlvbiBpbiB0
aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYm90aCAna2V5JyBhbmQgJ3Rl
eHQnLiBPbmUgbXVzdCBiZSBwcm92aWRlZC4iKTsKICAgICB9CiAKICAgICBBU1NFUlQoYWN0aW9u
c1RvUGVyZm9ybS5zaXplKCkpOwpAQCAtOTU3LDcgKzk3Myw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnRha2VTY3JlZW5zaG90KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxl
KGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUl9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
bmV4dFNjcmVlbnNob3RDYWxsYmFja0lEKys7CiAgICAgbV9zY3JlZW5zaG90Q2FsbGJhY2tzLnNl
dChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC05NzIsMTMgKzk4OCwxMyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBjYWxs
YmFja0lELCBjb25zdCBTaGFyZWFibAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWVycm9y
VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yVHlw
ZSk7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURf
RVJST1JfTUVTU0FHRShlcnJvclR5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IFN0cmluZyBiYXNlNjRFbmNvZGVkRGF0YSA9IHBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoaW1hZ2VEYXRhSGFuZGxlKTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZERhdGEuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKSk7CisgICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShJbnRl
cm5hbEVycm9yKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
</data>
<flag name="review"
          id="300812"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="300813"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>