<?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>81891</bug_id>
          
          <creation_ts>2012-03-22 04:44:13 -0700</creation_ts>
          <short_desc>[EFL] DRT should support LayoutTestController&apos;s dumpResourceLoadCallbacks()</short_desc>
          <delta_ts>2012-05-06 22:49:47 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</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>
          <dependson>82192</dependson>
    
    <dependson>82437</dependson>
    
    <dependson>82443</dependson>
    
    <dependson>84670</dependson>
          <blocked>82704</blocked>
    
    <blocked>82722</blocked>
    
    <blocked>82848</blocked>
    
    <blocked>84129</blocked>
    
    <blocked>84941</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominik Röttsches (drott)">d-r</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>585130</commentid>
    <comment_count>0</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-03-22 04:44:13 -0700</bug_when>
    <thetext>EFL DRT does not obey dumpResourceLoadCallbacks() issued by tests - 
HTTP callbacks should be caught and resource load log dumps should be perfomed.

cmp. GTK&apos;s willSendRequestCallback, didReceiveResponse, didFinishLoading, didFailLoadingWithError in GTK DumpRenderTree.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591892</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-03-29 23:17:20 -0700</bug_when>
    <thetext>*** Bug 82437 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591894</commentid>
    <comment_count>2</comment_count>
      <attachid>134728</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-03-29 23:20:10 -0700</bug_when>
    <thetext>Created attachment 134728
Proposed patch

Implements full support in EFL&apos;s DRT for LayoutTestController&apos;s dumpResourceLoadCallbacks() and allows for the following test cases to be removed from the skip list:
  http/tests/misc/favicon-loads-with-icon-loading-override.html
  fast/loader/main-document-url-for-non-http-loads.html
  http/tests/misc/link-rel-icon-beforeload.html
  http/tests/misc/willCacheResponse-delegate-callback.html
  http/tests/misc/window-dot-stop.html
  http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-in-body.html
  http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-allow.html
  http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html
  http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag.html
  http/tests/security/XFrameOptions/x-frame-options-deny.html
  http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-allow.html
  http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny.html
  http/tests/xmlhttprequest/abort-should-cancel-load.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591946</commentid>
    <comment_count>3</comment_count>
      <attachid>134743</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-03-30 01:25:39 -0700</bug_when>
    <thetext>Created attachment 134743
Proposed patch

willSendRequest should be dumped even if willSendRequestReturnsNull is set. Fixed the patch to reflect this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592035</commentid>
    <comment_count>4</comment_count>
      <attachid>134770</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-03-30 04:20:27 -0700</bug_when>
    <thetext>Created attachment 134770
Proposed patch

Updated the patch to address the following issues:
- Should not dump NSError failing url if empty
- Use different domains for WebKit and NSURL errors (Optimally, error domains and codes should move to their own header at some point)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599876</commentid>
    <comment_count>5</comment_count>
      <attachid>134770</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-04-10 18:08:22 -0700</bug_when>
    <thetext>Comment on attachment 134770
Proposed patch

Could you rebase and upload this? It looks the patch was uploaded in unfortunate timing by which bot didn&apos;t pick the patch.
The change itself looks sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600042</commentid>
    <comment_count>6</comment_count>
      <attachid>136623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-04-10 22:39:48 -0700</bug_when>
    <thetext>Created attachment 136623
Proposed patch

Rebase on master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603845</commentid>
    <comment_count>7</comment_count>
      <attachid>137487</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-04-17 00:40:42 -0700</bug_when>
    <thetext>Created attachment 137487
Proposed patch

Rebased on master and split with #84129 to reduce patch size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603851</commentid>
    <comment_count>8</comment_count>
      <attachid>137487</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-17 00:53:34 -0700</bug_when>
    <thetext>Comment on attachment 137487
Proposed patch

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

&gt; Source/WebKit/efl/ChangeLog:9
&gt; +        Implement support for LayoutTestController&apos;s 
&gt; +        dumpResourceLoadCallbacks() in EFL&apos;s DumpRenderTree.

Description in ChangeLog is poor beside patch size.

&gt; Tools/ChangeLog:9
&gt; +        dumpResourceLoadCallbacks() in EFL&apos;s DumpRenderTree.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603922</commentid>
    <comment_count>9</comment_count>
      <attachid>137509</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-04-17 04:03:38 -0700</bug_when>
    <thetext>Created attachment 137509
Proposed patch

Improve Changelogs&apos; descriptions based on Gyuyoung Kim&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606411</commentid>
    <comment_count>10</comment_count>
      <attachid>138053</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-04-20 00:21:32 -0700</bug_when>
    <thetext>Created attachment 138053
Patch

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608378</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-04-23 23:17:06 -0700</bug_when>
    <thetext>Splitting with 84670 to facilitate review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610425</commentid>
    <comment_count>12</comment_count>
      <attachid>138951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-04-26 01:41:39 -0700</bug_when>
    <thetext>Created attachment 138951
Patch

Rebase on master now that patch from bug 84670 has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611299</commentid>
    <comment_count>13</comment_count>
      <attachid>138951</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-27 00:54:50 -0700</bug_when>
    <thetext>Comment on attachment 138951
Patch

It looks there is no critical problem. Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611337</commentid>
    <comment_count>14</comment_count>
      <attachid>138951</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-27 02:46:19 -0700</bug_when>
    <thetext>Comment on attachment 138951
Patch

Clearing flags on attachment: 138951

Committed r115415: &lt;http://trac.webkit.org/changeset/115415&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611338</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-27 02:46:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134728</attachid>
            <date>2012-03-29 23:20:10 -0700</date>
            <delta_ts>2012-03-30 01:25:39 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>32042</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YmZlYzRkLi5hYmFkZTFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTItMDMt
MjkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRUZMJ3MgRFJUIG5vdyBzdXBwb3J0cyBMYXlvdXRUZXN0Q29udHJvbGxl
cidzIAorICAgICAgICBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCksIGFsbG93aW5nIHNldmVy
YWwgdGVzdHMgdG8gYmUgcmVtb3ZlZCBmcm9tCisgICAgICAgIHRoZSBza2lwIGxpc3QuIAorCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisKKzIwMTItMDMtMjkgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZMXVtEUlRd
IENhdGNoIHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE5MgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9Ta2lwcGVkCmluZGV4IDMxZWFkOTYuLmQ4MzA2ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkCkBAIC00NjUsNyArNDY1LDYgQEAgZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC1ub25leGlzdGVudC1maWxlLmh0bWwKIGZhc3QvY3NzL2Rpc2FibGVkLWF1dGhvci1zdHls
ZXMuaHRtbAogCiAjIEVGTCdzIExheW91dFRlc3RDb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVu
dCBkaXNhYmxlSW1hZ2VMb2FkaW5nCi1odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWljb24tbG9hZGluZy1vdmVycmlkZS5odG1sCiBodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fk
cy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sCiAKICMgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgZG9lcyBub3QgaW1wbGVtZW50IHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCkBAIC04
MzAsMTAgKzgyOSw2IEBAIGZhc3QvaGlzdG9yeS9iYWNrLWZvcndhcmQtcmVzZXQtYWZ0ZXItZXJy
b3ItaGFuZGxpbmcuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZW1wdHkt
dXJsLXBsdWdpbi1pbi1mcmFtZS5odG1sCiBmYXN0L2xvYWRlci9maWxlLXByb3RvY29sLWZyYWdt
ZW50Lmh0bWwKIAotIyBNaXNzaW5nIGRlbGVnYXRlczogdGVzdHMgZmFpbGluZyBiZWNhdXNlIG9m
IG1pc3NpbmcgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxsYmFja3MuCi1mYXN0L2xvYWRlci9t
YWluLWRvY3VtZW50LXVybC1mb3Itbm9uLWh0dHAtbG9hZHMuaHRtbAotaHR0cC90ZXN0cy9taXNj
L2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi0KICMgTWlzc2luZyBkZWxlZ2F0ZXM6IHRl
c3RzIGZhaWxpbmcgYmVjYXVzZSBvZiBtaXNzaW5nIHBvbGljeSBkZWxlZ2F0ZSBjYWxsYmFja3Mu
CiBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJhbWUuaHRtbAogZmFzdC9s
b2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29tZWQuaHRtbApAQCAtMTA3
Myw5ICsxMDY4LDYgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2Ut
ZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCiAjIFRlc3RzIHdoaWNoIGFsc28gZmFpbCBp
biBvdGhlciBwbGF0Zm9ybXMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi0jIFNob3VsZCBiZSBtb3ZlZCB0byBwbGF0Zm9ybS9tYWMgPHJkYXI6Ly81NjIxNDI1
PiAodmlhIHdpbi8sIGNocm9taXVtLyBhbmQgd2luY2Fpcm8vKQotaHR0cC90ZXN0cy9taXNjL3dp
bGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNrLmh0bWwKLQogIyBGYWlscyBhc3NlcnRp
b246IEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmhhc09uZVJlZigpKTsKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODAxCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS91
c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13b3JrZXJzLmh0bWwKQEAgLTEyNDMsNyArMTIz
NSw2IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC5odG1sCiBodHRwL3Rlc3Rz
L21pc2MvYWNpZDMuaHRtbAogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQt
dHdpY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1s
Ci1odHRwL3Rlc3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKIGh0dHAvdGVzdHMvbXVsdGlw
YXJ0L3BvbGljeS1pZ25vcmUtY3Jhc2gucGhwCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZlZWQtdXJs
cy1mcm9tLXJlbW90ZS5odG1sCiAKQEAgLTI1MDksMTggKzI1MDAsMTAgQEAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZWZlcnJlci1wb2xpY3ktaHR0cHMtb3JpZ2luLmh0bWwKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVmZXJyZXItcG9saWN5LXJlZGlyZWN0Lmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzLURFTklFRC14c2wtZG9jdW1lbnQtcmVkaXJlY3QueG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQteHNsLWV4dGVybmFsLWVudGl0eS1yZWRpcmVjdC54bWwKLWh0dHAvdGVzdHMv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1i
b2R5Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlv
bnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cuaHRtbAotaHR0cC90ZXN0
cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBh
cmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy5odG1sCi1odHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4t
YWxsb3cuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0
aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCiBodHRwL3Rlc3RzL3NzbC9yZWZlcmVy
LTMwMS5odG1sCiBodHRwL3Rlc3RzL3NzbC9yZWZlcmVyLTMwMy5odG1sCiBodHRwL3Rlc3RzL3Nz
bC92ZXJpZnktc3NsLWVuYWJsZWQucGhwCiBodHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1
cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sCi1odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0
LXNob3VsZC1jYW5jZWwtbG9hZC5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vz
cy1jb250cm9sLWJhc2ljLXdoaXRlbGlzdC1yZXF1ZXN0LWhlYWRlcnMuaHRtbAogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLW5vcGFzc3dvcmQuaHRtbAogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLW5vdXNlci5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXgg
MDVjYzIyYS4uNTA3MjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEy
LTAzLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAK
KyAgICAgICAgW0VGTF0gRFJUIHNob3VsZCBzdXBwb3J0IExheW91dFRlc3RDb250cm9sbGVyJ3Mg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVGTCdzIERSVCBub3cgc3VwcG9ydHMgTGF5b3V0VGVzdENvbnRy
b2xsZXIncyAKKyAgICAgICAgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpLCBhbGxvd2luZyBz
ZXZlcmFsIHRlc3RzIHRvIGJlIHJlbW92ZWQgZnJvbQorICAgICAgICB0aGUgc2tpcCBsaXN0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVu
dGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoK
KyAgICAgICAgKGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZCk6CisgICAgICAgIChld2tfZnJh
bWVfcmVzcG9uc2VfcmVjZWl2ZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQp
OgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQpOgorICAgICAgICAo
ZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2Fk
X2Vycm9yKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAgICogZXdrL2V3a19w
cml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisKKzIwMTItMDMtMjkgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZM
XVtEUlRdIENhdGNoIHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE5MgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAKaW5kZXggNmFmMWQzYS4uNTliOTZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApA
QCAtMTYzLDE2ICsxNjMsMzQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWQKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CiAgICAgQ1N0cmluZyB1cmwg
PSBjb3JlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgREJHKCJSZXNvdXJjZSB1
cmw9JXMiLCB1cmwuZGF0YSgpKTsKKyAgICBDU3RyaW5nIGZpcnN0UGFydHkgPSBjb3JlUmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGh0
dHBNZXRob2QgPSBjb3JlUmVxdWVzdC5odHRwTWV0aG9kKCkudXRmOCgpOworICAgIERCRygiUmVz
b3VyY2UgdXJsPSVzLCBmaXJzdF9wYXJ0eT0lcywgaHR0cF9tZXRob2Q9JXMiLCB1cmwuZGF0YSgp
LCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCkpOwogCi0gICAgRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgMCwgaWRlbnRpZmllciwgbV9mcmFtZSB9Owor
ICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIDAsIDAsIGlkZW50
aWZpZXIsIG1fZnJhbWUgfTsKICAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCBvcmlnID0g
cmVxdWVzdDsgLyogSW5pdGlhbGl6ZSBjb25zdCBmaWVsZHMuICovCiAKICAgICBvcmlnLnVybCA9
IHJlcXVlc3QudXJsID0gdXJsLmRhdGEoKTsKKyAgICByZXF1ZXN0LmZpcnN0X3BhcnR5ID0gZmly
c3RQYXJ0eS5kYXRhKCk7CisgICAgcmVxdWVzdC5odHRwX21ldGhvZCA9IGh0dHBNZXRob2QuZGF0
YSgpOworCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
OworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSByZXNwb25zZUJ1ZmZlcjsKKyAgICBD
U3RyaW5nIHJlZGlyZWN0VXJsOwogCi0gICAgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKG1f
ZnJhbWUsICZyZXF1ZXN0KTsKKyAgICBpZiAoY29yZVJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAg
ICByZWRpcmVjdFJlc3BvbnNlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVkaXJlY3RVcmwg
PSBjb3JlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgICAgICByZXNwb25zZUJ1
ZmZlci51cmwgPSByZWRpcmVjdFVybC5kYXRhKCk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLnN0
YXR1c19jb2RlID0gY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgICAgIHJlZGly
ZWN0UmVzcG9uc2UgPSAmcmVzcG9uc2VCdWZmZXI7CisgICAgfQorICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9NZXNzYWdlcyBtZXNzYWdlcyA9IHsgJnJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UgfTsK
IAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCx3aWxsc2VuZCIsICZyZXF1ZXN0KTsKKyAgICBld2tfZnJhbWVfcmVxdWVzdF93aWxs
X3NlbmQobV9mcmFtZSwgJm1lc3NhZ2VzKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsICZtZXNzYWdlcyk7
CiAKICAgICBpZiAocmVxdWVzdC51cmwgIT0gb3JpZy51cmwpIHsKICAgICAgICAgY29yZVJlcXVl
c3Quc2V0VVJMKEtVUkwoS1VSTCgpLCByZXF1ZXN0LnVybCkpOwpAQCAtMTk0LDggKzIxMiw5IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgQ1N0cmluZyB1cmwgPSBjb3JlUmVxdWVzdC51
cmwoKS5zdHJpbmcoKS51dGY4KCk7CiAgICAgREJHKCJSZXNvdXJjZSB1cmw9JXMiLCB1cmwuZGF0
YSgpKTsKIAotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIGlk
ZW50aWZpZXIsIG1fZnJhbWUgfTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1
ZXN0ID0geyB1cmwuZGF0YSgpLCAwLCAwLCBpZGVudGlmaWVyLCBtX2ZyYW1lIH07CiAgICAgZXdr
X2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIobV9mcmFtZSwgJnJlcXVlc3QpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVz
dCxuZXciLCAmcmVxdWVzdCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnBvc3RQ
cm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQpAQCAtMjMyLDEzICsyNTEsMjEgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGNvcmVSZXNwb25zZSkKIHsKICAgICAvLyBVcGRh
dGUgb3VyIGtub3dsZWRnZSBvZiByZXF1ZXN0IHNvdXAgZmxhZ3MgLSBzb21lIGFyZSBvbmx5IHNl
dAogICAgIC8vIGFmdGVyIHRoZSByZXF1ZXN0IGlzIGRvbmUuCi0gICAgbG9hZGVyLT5yZXF1ZXN0
KCkuc2V0U291cE1lc3NhZ2VGbGFncyhyZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkpOworICAg
IGxvYWRlci0+cmVxdWVzdCgpLnNldFNvdXBNZXNzYWdlRmxhZ3MoY29yZVJlc3BvbnNlLnNvdXBN
ZXNzYWdlRmxhZ3MoKSk7CisKKyAgICBtX3Jlc3BvbnNlID0gY29yZVJlc3BvbnNlOworCisgICAg
RXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHJlc3BvbnNlID0geyAwLCBjb3JlUmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSB9OworICAgIENTdHJpbmcgdXJsID0gY29yZVJlc3BvbnNlLnVybCgp
LnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXNwb25zZS51cmwgPSB1cmwuZGF0YSgpOwogCi0gICAg
bV9yZXNwb25zZSA9IHJlc3BvbnNlOworICAgIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZlZCht
X2ZyYW1lLCAmcmVzcG9uc2UpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsICZyZXNwb25zZSk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQpAQCAtMjg3
LDcgKzMxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgLy8gaWYgbm90IGFjY2Vw
dE5hdmlnYXRpb25SZXF1ZXN0IC0gbG9vayBhdCBRdCAtPiBQb2xpY3lJZ25vcmU7CiAgICAgLy8g
RklYTUU6IGRvIHByb3BlciBjaGVjayBhbmQgb25seSByZXNldCBmb3JtcyB3aGVuIG9uIFBvbGlj
eUlnbm9yZQogICAgIGNoYXIqIHVybCA9IHN0cmR1cChyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVx
dWVzdCA9IHsgdXJsLCAwLCBtX2ZyYW1lIH07CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVl
c3QgcmVxdWVzdCA9IHsgdXJsLCAwLCAwLCAwLCBtX2ZyYW1lIH07CiAgICAgYm9vbCByZXQgPSBl
d2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihtX3ZpZXcsICZyZXF1ZXN0KTsKICAg
ICBmcmVlKHVybCk7CiAKQEAgLTcyMCwxMiArNzQ3LDMxIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKG1fZnJh
bWUsIGlkZW50aWZpZXIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92
aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsICZpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEV3a19GcmFtZV9Mb2Fk
X0Vycm9yIGVycm9yOworICAgIENTdHJpbmcgZXJyb3JEb21haW4gPSBlcnIuZG9tYWluKCkudXRm
OCgpOworICAgIENTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbiA9IGVyci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGZhaWxpbmdVcmwgPSBlcnIuZmFpbGluZ1VSTCgp
LnV0ZjgoKTsKKworICAgIERCRygiZXdrRnJhbWU9JXAsIHJlc291cmNlPSVsZCwgZXJyb3I9JXMg
KCVkLCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAorICAgICAgICBtX2ZyYW1l
LCBpZGVudGlmaWVyLCBlcnJvckRvbWFpbi5kYXRhKCksIGVyci5lcnJvckNvZGUoKSwgZXJyLmlz
Q2FuY2VsbGF0aW9uKCksCisgICAgICAgIGVycm9yRGVzY3JpcHRpb24uZGF0YSgpLCBmYWlsaW5n
VXJsLmRhdGEoKSk7CisKKyAgICBlcnJvci5jb2RlID0gZXJyLmVycm9yQ29kZSgpOworICAgIGVy
cm9yLmlzX2NhbmNlbGxhdGlvbiA9IGVyci5pc0NhbmNlbGxhdGlvbigpOworICAgIGVycm9yLmRv
bWFpbiA9IGVycm9yRG9tYWluLmRhdGEoKTsKKyAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9y
RGVzY3JpcHRpb24uZGF0YSgpOworICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGluZ1VybC5k
YXRhKCk7CisgICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAg
ZXJyb3IuZnJhbWUgPSBtX2ZyYW1lOworCisgICAgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFp
bGVkKG1fZnJhbWUsICZlcnJvcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJsb2FkLHJlc291cmNlLGZhaWxlZCIsICZlcnJvcik7CiB9CiAKIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IGMyMjlmODAuLjcwMmM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC0x
MjA3LDE1ICsxMjA3LDE1IEBAIHZvaWQgZXdrX2ZyYW1lX2NvcmVfZ29uZShFdmFzX09iamVjdCog
ZXdrRnJhbWUpCiAgKiBjaGFuZ2luZyB2YWx1ZXMgaW4gQHBhcmFtIHJlcXVlc3QuCiAgKgogICog
QHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCBkZXRhaWxz
IHRoYXQgdXNlciBtYXkgb3ZlcnJpZGUuIFdoZW5ldmVyIHZhbHVlcyBvbgotICogdGhpcyBzdHJ1
Y3QgY2hhbmdlcywgaXQgbXVzdCBiZSBwcm9wZXJseSBtYWxsb2MnZCBhcyBpdCB3aWxsIGJlIGZy
ZWVkCi0gKiBhZnRlcndhcmRzLgorICogQHBhcmFtIG1lc3NhZ2VzIE1lc3NhZ2VzIGNvbnRhaW5p
bmcgdGhlIHJlcXVlc3QgZGV0YWlscyB0aGF0IHVzZXIgbWF5IG92ZXJyaWRlIGFuZCBhCisgKiBw
b3NzaWJsZSByZWRpcmVjdCByZXBvbnNlLiBXaGVuZXZlciB2YWx1ZXMgb24gdGhpcyBzdHJ1Y3Qg
Y2hhbmdlcywgaXQgbXVzdCBiZSBwcm9wZXJseQorICogbWFsbG9jJ2QgYXMgaXQgd2lsbCBiZSBm
cmVlZCBhZnRlcndhcmRzLgogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qs
d2lsbHNlbmQiCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCit2b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19G
cmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMpCiB7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCBy
ZXF1ZXN0KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAi
cmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIG1lc3NhZ2VzKTsKIH0KIAogLyoqCkBAIC0xMjM0
LDYgKzEyMzQsMjAgQEAgdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV3a19GcmFtZV8KIAogLyoqCiAgKiBAaW50ZXJu
YWwKKyAqIFJlcG9ydHMgdGhhdCBhIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMg
cmVjZWl2ZWQuCisgKgorICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgorICogQHBhcmFtIHJlcXVl
c3QgUmVzcG9uc2UgZGV0YWlscy4gTm8gY2hhbmdlcyBhcmUgYWxsb3dlZCB0byBmaWVsZHMuCisg
KgorICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiCisgKi8KK3Zv
aWQgZXdrX2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdr
X0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQi
LCByZXNwb25zZSk7Cit9CisKKy8qKgorICogQGludGVybmFsCiAgKiBSZXBvcnRzIHRoYXQgZmly
c3QgbmF2aWdhdGlvbiBvY2N1cnJlZAogICoKICAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KQEAg
LTEzNTgsNiArMTM3Miw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50CiAgICAgICAgIGJ1ZmZl
ci5pc19jYW5jZWxsYXRpb24gPSBpc0NhbmNlbGxhdGlvbjsKICAgICAgICAgYnVmZmVyLmRlc2Ny
aXB0aW9uID0gZXJyb3JEZXNjcmlwdGlvbjsKICAgICAgICAgYnVmZmVyLmZhaWxpbmdfdXJsID0g
ZmFpbGluZ1VybDsKKyAgICAgICAgYnVmZmVyLnJlc291cmNlX2lkZW50aWZpZXIgPSAwOwogICAg
ICAgICBidWZmZXIuZnJhbWUgPSBld2tGcmFtZTsKICAgICAgICAgZXJyb3IgPSAmYnVmZmVyOwog
ICAgIH0KQEAgLTEzNjgsNiArMTM4MywyOSBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludAogCiAv
KioKICAqIEBpbnRlcm5hbAorICogUmVwb3J0cyByZXNvdXJjZSBsb2FkIGZpbmlzaGVkLgorICoK
KyAqIEVtaXRzIHNpZ25hbDogImxvYWQscmVzb3VyY2UsZmluaXNoZWQiIHdpdGggdGhlIHJlc291
cmNlCisgKiByZXF1ZXN0IGlkZW50aWZpZXIuCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVz
b3VyY2VfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwg
ImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCAmaWRlbnRpZmllcik7Cit9CisKKy8qKgorICogQGlu
dGVybmFsCisgKiBSZXBvcnRzIHJlc291cmNlIGxvYWQgZmFpbHVyZSwgd2l0aCBlcnJvciBpbmZv
cm1hdGlvbi4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHJlc291cmNlLGZhaWxlZCIgd2l0
aCB0aGUgZXJyb3IgaW5mb3JtYXRpb24uCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3Vy
Y2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVy
cm9yKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJs
b2FkLHJlc291cmNlLGZhaWxlZCIsIGVycm9yKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKICAq
IFJlcG9ydHMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0ZyYW1lX0xvYWRfRXJy
b3IuCkBAIC0xMzg3LDYgKzE0MjUsNyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9yKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcgogICAgIGVy
cm9yLmRvbWFpbiA9IGVycm9yRG9tYWluOwogICAgIGVycm9yLmRlc2NyaXB0aW9uID0gZXJyb3JE
ZXNjcmlwdGlvbjsKICAgICBlcnJvci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7CisgICAgZXJy
b3IucmVzb3VyY2VfaWRlbnRpZmllciA9IDA7CiAgICAgZXJyb3IuZnJhbWUgPSBld2tGcmFtZTsK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxlcnJv
ciIsICZlcnJvcik7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNt
YXJ0RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKaW5kZXggM2UwNmZjMy4uYjJmNDcx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaApAQCAtNDUsNiArNDUsMTAgQEAKICAqICAt
ICJsb2FkLGZpbmlzaGVkIiwgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqOiByZXBvcnRzIGxv
YWQKICAqICAgIGZpbmlzaGVkIGFuZCBpdCBnaXZlcyBAYyBOVUxMIG9uIHN1Y2Nlc3Mgb3IgcG9p
bnRlciB0bwogICogICAgc3RydWN0dXJlIGRlZmluaW5nIHRoZSBlcnJvci4KKyAqICAtICJsb2Fk
LHJlc291cmNlLGZpbmlzaGVkIiwgdW5zaWduZWQgbG9uZzogcmVwb3J0cyByZXNvdXJjZSBsb2Fk
IGZpbmlzaGVkIGFuZCBpdCBnaXZlcworICogICAgaXRzIGlkZW50aWZpZXIuCisgKiAgLSAibG9h
ZCxyZXNvdXJjZSxmYWlsZWQiLCBFd2tfRnJhbWVfTG9hZF9FcnJvcjogcmVwb3J0cyByZXNvdXJj
ZSBsb2FkIGZhaWx1cmUgYW5kIGl0CisgKiAgICBnaXZlcyBhIHBvaW50ZXIgdG8gc3RydWN0dXJl
IGRlZmluaW5nIHRoZSBlcnJvciBhcyBhbiBhcmd1bWVudC4KICAqICAtICJsb2FkLGZpcnN0bGF5
b3V0LGZpbmlzaGVkIiwgdm9pZDogZnJhbWUgZmluaXNoZWQgZmlyc3QgbGF5b3V0LgogICogIC0g
ImxvYWQsbm9uZW1wdHlsYXlvdXQsZmluaXNoZWQiLCB2b2lkOiBmcmFtZSBmaW5pc2hlZCBmaXJz
dAogICogICAgbm9uLWVtcHR5IGxheW91dC4KQEAgLTU3LDggKzYxLDEwIEBACiAgKiAgLSAibmF2
aWdhdGlvbixmaXJzdCIsIHZvaWQ6IGZpcnN0IG5hdmlnYXRpb24gd2FzIG9jY3VycmVkLgogICog
IC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiBy
ZXBvcnRzIHRoYXQKICAqICAgIHRoZXJlJ3MgYSBuZXcgcmVzb3VyY2UgcmVxdWVzdC4KLSAqICAt
ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qq
OiBhIHJlc291cmNlIHdpbGwKKyAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdr
X0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKjogYSByZXNvdXJjZSB3aWxsCiAgKiAgICBiZSByZXF1
ZXN0ZWQuCisgKiAgLSAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBFd2tfRnJhbWVfUmVz
b3VyY2VfUmVzcG9uc2UqOiByZXBvcnRzIHRoYXQgYSByZXNwb25zZQorICogICAgdG8gYSByZXNv
dXJjZSByZXF1ZXN0IHdhcyByZWNlaXZlZC4KICAqICAtICJzdGF0ZSxzYXZlIiwgdm9pZDogZnJh
bWUncyBzdGF0ZSB3aWxsIGJlIHNhdmVkIGFzIGEgaGlzdG9yeSBpdGVtLgogICogIC0gInRpdGxl
LGNoYW5nZWQiLCBjb25zdCBjaGFyKjogdGl0bGUgb2YgdGhlIG1haW4gZnJhbWUgd2FzIGNoYW5n
ZWQuCiAgKiAgLSAidXJpLGNoYW5nZWQiLCBjb25zdCBjaGFyKjogdXJpIG9mIHRoZSBtYWluIGZy
YW1lIHdhcyBjaGFuZ2VkLgpAQCAtOTEsMjQgKzk3LDQ5IEBAIHN0cnVjdCBfRXdrX0ZyYW1lX0xv
YWRfRXJyb3IgewogICAgIGNvbnN0IGNoYXIgKmRvbWFpbjsgLyoqPCBlcnJvciBkb21haW4gbmFt
ZSAqLwogICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uOyAvKio8IGVycm9yIGRlc2NyaXB0aW9u
IGFscmVhZHkgbG9jYWxpemVkICovCiAgICAgY29uc3QgY2hhciAqZmFpbGluZ191cmw7IC8qKjwg
dGhlIHVybCB0aGF0IGZhaWxlZCB0byBsb2FkICovCisgICAgdW5zaWduZWQgbG9uZyByZXNvdXJj
ZV9pZGVudGlmaWVyOyAvKio8IGlkZW50aWZpZXIgb2YgcmVzb3VyY2UgKi8KICAgICBFdmFzX09i
amVjdCAqZnJhbWU7IC8qKjwgZnJhbWUgd2hlcmUgdGhlIGZhaWx1cmUgaGFwcGVuZWQgKi8KIH07
CiAKIC8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVl
c3QuCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3Q7CisKIC8qKgotICogQGJyaWVmICAgU3RydWN0dXJlIHVzZWQgdG8g
cmVwb3J0IHJlc291cmNlIHJlcXVlc3QuCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgY29udGFpbmlu
ZyBkZXRhaWxzIGFib3V0IGEgcmVzb3VyY2UgcmVxdWVzdC4KICAqCi0gKiBEZXRhaWxzIGdpdmVu
IGJlZm9yZSBhIHJlc291cmNlIGlzIGxvYWRlZCBvbiBhIGdpdmVuIGZyYW1lLiBJdCdzIHVzZWQg
YnkKLSAqIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZCgpIHRvIGluZm9ybSB0aGUgZGV0YWls
cyBvZiBhIHRvLWJlLWxvYWRlZAotICogcmVzb3VyY2UsIGFsbG93aW5nIHRoZW0gdG8gYmUgb3Zl
cnJpZGRlbi4KKyAqIERldGFpbHMgZ2l2ZW4gYmVmb3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVkIG9u
IGEgZ2l2ZW4gZnJhbWUuIEl0J3MgdXNlZCBpbgorICogRXdrX0ZyYW1lX1Jlc291cmNlX01lc3Nh
Z2VzIHRvIGluZm9ybSBhYm91dCB0aGUgZGV0YWlscyBvZiBhIHJlc291cmNlIHJlcXVlc3QuCiAg
Ki8KIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgewogICAgIGNvbnN0IGNoYXIg
KnVybDsgLyoqPCB1cmwgb2YgdGhlIHJlc291cmNlICovCisgICAgY29uc3QgY2hhciAqZmlyc3Rf
cGFydHk7IC8qKjwgZmlyc3QgcGFydHkgZm9yIGNvb2tpZXMsIGNhbiBub3QgYmUgY2hhbmdlZCAg
Ki8KKyAgICBjb25zdCBjaGFyICpodHRwX21ldGhvZDsgLyoqPCBodHRwIG1ldGhvZCwgY2FuIG5v
dCBiZSBjaGFuZ2VkICAqLwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsgLyoq
PCBpZGVudGlmaWVyIG9mIHJlc291cmNlLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KICAgICBFdmFz
X09iamVjdCAqZnJhbWU7IC8qKjwgZnJhbWUgd2hlcmUgdGhlIHJlc291cmNlIGlzIHJlcXVlc3Rl
ZCAqLwogfTsKIAorLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVzcG9uc2UuCit0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNl
IEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZTsKKworLyoqCisgKiBAYnJpZWYgICBTdHJ1Y3R1
cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSByZXF1
ZXN0LgorICoKKyAqIERldGFpbHMgZ2l2ZW4gaW4gdGhlIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2Ug
cmVxdWVzdC4gSXQncyB1c2VkIGJ5CisgKiBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoKSB0
byBpbmZvcm0gYWJvdXQgdGhlIGRldGFpbHMgb2YgYSByZXNwb25zZS4KKyAqLworc3RydWN0IF9F
d2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgeworICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1
cmwgb2YgdGhlIHJlc291cmNlICovCisgICAgaW50IHN0YXR1c19jb2RlOyAvKio8IGh0dHAgc3Rh
dHVzIGNvZGUgKi8KK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1l
X1Jlc291cmNlX01lc3NhZ2VzLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9N
ZXNzYWdlcyBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXM7CisKK3N0cnVjdCBfRXdrX0ZyYW1l
X1Jlc291cmNlX01lc3NhZ2VzIHsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVx
dWVzdDsgLyoqPCByZXNvdXJjZSByZXF1ZXN0ICovCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
c3BvbnNlICpyZWRpcmVjdF9yZXNwb25zZTsgLyoqPCByZWRpcmVjdCByZXNwb25zZSwgY2FuIG5v
dCBiZSBjaGFuZ2VkICovCit9OworCiAvLy8gRW51bSBjb250YWluaW5nIGhpdCB0ZXN0IGRhdGEg
dHlwZXMKIHR5cGVkZWYgZW51bSB7CiAgICAgRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0RP
Q1VNRU5UID0gMSA8PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCA5NmU0
Nzk1Li4wOGY3YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApAQCAtMjA4LDEx
ICsyMDgsMTQgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFz
X09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25l
bXB0eV9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9h
ZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJh
bWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9y
RG9tYWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBl
cnJvckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKK3ZvaWQgZXdrX2ZyYW1l
X2xvYWRfcmVzb3VyY2VfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOwordm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwogdm9pZCBl
d2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVy
cm9yRG9tYWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFy
KiBlcnJvckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKIHZvaWQgZXdrX2Zy
YW1lX2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogCi12b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rf
d2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3Nh
Z2VzKiBtZXNzYWdlcyk7CiB2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVy
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qq
IHJlcXVlc3QpOwordm9pZCBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKTsKIHZvaWQg
ZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBpdGVtKTsKIAogdm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmlyc3Rf
bmF2aWdhdGlvbihFdmFzX09iamVjdCogZXdrRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aAppbmRleCAwZDEwNzA3Li4wM2Q3MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAt
NTQsNiArNTQsMTAgQEAKICAqICAtICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9n
cmVzcyBpcyBjaGFuZ2VkIChvdmVyYWxsIHZhbHVlCiAgKiAgICBmcm9tIDAuMCB0byAxLjAsIGNv
bm5lY3QgdG8gaW5kaXZpZHVhbCBmcmFtZXMgZm9yIGZpbmUgZ3JhaW5lZCkuCiAgKiAgLSAibG9h
ZCxwcm92aXNpb25hbCIsIHZvaWQ6IHZpZXcgc3RhcnRlZCBwcm92aXNpb25hbCBsb2FkLgorICog
IC0gImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCB1bnNpZ25lZCBsb25nOiByZXBvcnRzIHJlc291
cmNlIGxvYWQgZmluaXNoZWQgYW5kIGl0IGdpdmVzCisgKiAgICBpdHMgaWRlbnRpZmllci4KKyAq
ICAtICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yOiByZXBvcnRz
IHJlc291cmNlIGxvYWQgZmFpbHVyZSBhbmQgaXQKKyAqICAgIGdpdmVzIGEgcG9pbnRlciB0byBz
dHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9yIGFzIGFuIGFyZ3VtZW50LgogICogIC0gImxvYWQs
c3RhcnRlZCIsIHZvaWQ6IGZyYW1lIHN0YXJ0ZWQgbG9hZGluZyB0aGUgZG9jdW1lbnQuCiAgKiAg
LSAibWVudWJhcix2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9U
UlVFIGlmIG1lbnViYXIgaXMKICAqICAgIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lz
ZS4KQEAgLTYxLDggKzY1LDExIEBACiAgKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZv
aWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVk
IG1peGVkIGNvbnRlbnQuCiAgKiAgLSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGFueSBvZiB0
aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNvbnRlbnQuCiAg
KiAgLSAicmVhZHkiLCB2b2lkOiBwYWdlIGlzIGZ1bGx5IGxvYWRlZC4KLSAqICAtICJyZXNvdXJj
ZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291
cmNlIHdpbGwKLSAqICAgIGJlIHJlcXVlc3RlZC4KKyAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0CisgKiAgICB0aGVy
ZSdzIGEgbmV3IHJlc291cmNlIHJlcXVlc3QuCisgKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxs
c2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2lsbCBiZSBy
ZXF1ZXN0ZWQuCisgKiAgICAgYW5kIHRoZSBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KKyAq
ICAtICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNw
b25zZSo6IHRoZSBuZXR3b3JrIHJlc3BvbnNlIGZvciBhIHJlc291cmNlLgogICogIC0gInNjcm9s
bGJhcnMsdmlzaWJsZSxnZXQiLCBFaW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFfVFJVRSBp
ZiBzY3JvbGxiYXJzCiAgKiAgICBhcmUgdmlzaWJsZTsgQGMgRUlOQV9GQUxTRSwgb3RoZXJ3aXNl
LgogICogIC0gInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCBFaW5hX0Jvb2w6IHNldHMgc2Nyb2xs
YmFycyB2aXNpYmlsaXR5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGZhN2Y0ODUuLjE5MWFjMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAogMjAxMi0wMy0yOSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCisgICAgICAgIFtF
RkxdIERSVCBzaG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFRkwncyBEUlQgbm93IHN1cHBvcnRzIExheW91dFRlc3RDb250cm9sbGVyJ3MKKyAg
ICAgICAgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpLCBhbGxvd2luZyBzZXZlcmFsIHRlc3Rz
IHRvIGJlIHJlbW92ZWQgZnJvbQorICAgICAgICB0aGUgc2tpcCBsaXN0LgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKHBhdGhTdWl0YWJsZUZv
clRlc3RSZXN1bHQpOgorICAgICAgICAodXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAg
ICAgKGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlQ2hyb21lOjpvbldpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6b25SZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvblJlc291cmNlTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvblJlc291cmNlTG9hZEZhaWxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9t
ZTo6b25OZXdSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9E
dW1wUmVuZGVyVHJlZUNocm9tZS5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWUpOgor
CisyMDEyLTAzLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CisKICAgICAgICAgW0VGTF1bRFJUXSBDYXRjaCB0aGUgInJlc291cmNlLHJlcXVlc3Qsd2ls
bHNlbmQiIHNpZ25hbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODIxOTIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVy
VHJlZUNocm9tZS5jcHAKaW5kZXggNmRkYjI4NC4uZDAyZDI2YSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCkBAIC00Nyw2ICs0Nyw4
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitIYXNoTWFwPHVuc2lnbmVkIGxvbmcs
IENTdHJpbmc+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjptX2R1bXBBc3NpZ25lZFVybHM7CisKIFBh
c3NPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVh
dGUoRXZhcyogZXZhcykKIHsKICAgICBPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IGNocm9t
ZSA9IGFkb3B0UHRyKG5ldyBEdW1wUmVuZGVyVHJlZUNocm9tZShldmFzKSk7CkBAIC05NSw3ICs5
NywxMSBAQCBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcoKSBj
b25zdAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAid2luZG93LG9i
amVjdCxjbGVhcmVkIiwgb25XaW5kb3dPYmplY3RDbGVhcmVkLCBtX2djQ29udHJvbGxlci5nZXQo
KSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJzdGF0dXNiYXIs
dGV4dCxzZXQiLCBvblN0YXR1c2JhclRleHRTZXQsIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIsIG9uRG9jdW1lbnRM
b2FkRmluaXNoZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3
LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBvbk5ld1Jlc291cmNlUmVxdWVzdCwgMCk7CiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHdp
bGxzZW5kIiwgb25XaWxsU2VuZFJlcXVlc3QsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh2aWV3LCAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBvblJlc3BvbnNl
UmVjZWl2ZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAi
bG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIG9uUmVzb3VyY2VMb2FkRmluaXNoZWQsIDApOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxyZXNvdXJjZSxmYWls
ZWQiLCBvblJlc291cmNlTG9hZEZhaWxlZCwgMCk7CiAKICAgICByZXR1cm4gdmlldzsKIH0KQEAg
LTI4NywyNSArMjkzLDE0NyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkRvY3VtZW50
TG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZQogICAgIH0KIH0KIAor
c3RhdGljIENTdHJpbmcgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFyKiB1cmlT
dHJpbmcpCit7CisgICAgaWYgKCF1cmlTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7
CisKKyAgICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcpOworCisg
ICAgaWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS51
dGY4KCk7CisKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHVyaS5wYXRoKCk7CisgICAgc2l6ZV90
IGluZGV4QmFzZU5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJyk7CisgICAgU3RyaW5n
IGJhc2VOYW1lOworICAgIGlmIChpbmRleEJhc2VOYW1lID09IG5vdEZvdW5kKQorICAgICAgICBi
YXNlTmFtZSA9IHBhdGhTdHJpbmc7CisgICAgZWxzZQorICAgICAgICBiYXNlTmFtZSA9IHBhdGhT
dHJpbmcuc3Vic3RyaW5nKGluZGV4QmFzZU5hbWUgKyAxKTsKKworICAgIFN0cmluZyBkaXJOYW1l
OworICAgIGlmIChpbmRleEJhc2VOYW1lICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHNpemVfdCBp
bmRleERpck5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJywgaW5kZXhCYXNlTmFtZSAt
IDEpOworICAgICAgICBpZiAoaW5kZXhEaXJOYW1lICE9IG5vdEZvdW5kKQorICAgICAgICAgICAg
ZGlyTmFtZSA9IHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4RGlyTmFtZSArIDEsIGluZGV4QmFz
ZU5hbWUgLSBpbmRleERpck5hbWUgLSAxKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcmV0ID0gZGly
TmFtZSArICIvIiArIGJhc2VOYW1lOworICAgIHJldHVybiByZXQudXRmOCgpOworfQorCitzdGF0
aWMgQ1N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5n
KQoreworICAgIEtVUkwgdXJpID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7Cisg
ICAgaWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcodXJpU3Ry
aW5nKTsKKworICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSB1cmkucGF0aEFmdGVyTGFzdFNsYXNo
KCk7CisgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS5zdWJzdHJpbmcoc3RhcnRJbmRleCkudXRmOCgp
OworfQorCitzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChF
d2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBTdHJpbmcgcmV0ID0g
IjxOU1VSTFJlcXVlc3QgVVJMICI7CisgICAgcmV0ICs9IHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQocmVxdWVzdC0+dXJsKS5kYXRhKCk7CisgICAgcmV0ICs9ICIsIG1haW4gZG9jdW1lbnQgVVJM
ICI7CisgICAgcmV0ICs9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT5maXJzdF9w
YXJ0eSkuZGF0YSgpOworICAgIHJldCArPSAiLCBodHRwIG1ldGhvZCAiOworICAgIHJldCArPSBy
ZXF1ZXN0LT5odHRwX21ldGhvZCA/IFN0cmluZyhyZXF1ZXN0LT5odHRwX21ldGhvZCkgOiAiKG5v
bmUpIjsKKyAgICByZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9CisKK3N0
YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IEV3a19G
cmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgaWYgKCFyZXNwb25zZSkK
KyAgICAgICAgcmV0dXJuIENTdHJpbmcoIihudWxsKSIpOworCisgICAgU3RyaW5nIHJldCA9ICI8
TlNVUkxSZXNwb25zZSAiOworICAgIHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJl
c3BvbnNlLT51cmwpLmRhdGEoKTsKKyAgICByZXQgKz0gIiwgaHR0cCBzdGF0dXMgY29kZSAiOwor
ICAgIHJldCArPSBTdHJpbmc6Om51bWJlcihyZXNwb25zZS0+c3RhdHVzX2NvZGUpOworICAgIHJl
dCArPSAiPiI7CisKKyAgICByZXR1cm4gcmV0LnV0ZjgoKTsKK30KKworc3RhdGljIENTdHJpbmcg
ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVy
cm9yKQoreworICAgIFN0cmluZyByZXQgPSAiPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21h
aW4sIGNvZGUgIjsKKyAgICByZXQgKz0gU3RyaW5nOjpudW1iZXIoZXJyb3ItPmNvZGUpOworICAg
IHJldCArPSAiLCBmYWlsaW5nIFVSTCBcIiI7CisgICAgcmV0ICs9IGVycm9yLT5mYWlsaW5nX3Vy
bDsKKyAgICByZXQgKz0gIlwiPiI7CisKKyAgICByZXR1cm4gcmV0LnV0ZjgoKTsKK30KKwogdm9p
ZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25XaWxsU2VuZFJlcXVlc3Qodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQogewotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqPihldmVu
dEluZm8pOworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMgPSBzdGF0
aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqPihldmVudEluZm8pOwogCiAgICAg
aWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGwoKSkgewogICAgICAgICAvLyBBcyByZXF1ZXN0ZWQgYnkgdGhlIExheW91dFRlc3RDb250
cm9sbGVyLCBkb24ndCBwZXJmb3JtIHRoZSByZXF1ZXN0LgotICAgICAgICByZXF1ZXN0LT51cmwg
PSAwOworICAgICAgICBtZXNzYWdlcy0+cmVxdWVzdC0+dXJsID0gMDsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEtVUkwgdXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlcXVlc3Qt
PnVybCk7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcygpKQorICAgICAgICAgICAgcHJpbnRmKCIlcyAtIHdpbGxTZW5kUmVx
dWVzdCAlcyByZWRpcmVjdFJlc3BvbnNlICVzXG4iLAorICAgICAgICAgICAgICAgICAgIHBhdGhT
dWl0YWJsZUZvclRlc3RSZXN1bHQobWVzc2FnZXMtPnJlcXVlc3QtPnVybCkuZGF0YSgpLAorICAg
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1lc3NhZ2Vz
LT5yZXF1ZXN0KS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQobWVzc2FnZXMtPnJlZGlyZWN0X3Jlc3BvbnNlKS5kYXRhKCkpOworCisg
ICAgS1VSTCB1cmwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgbWVzc2FnZXMtPnJlcXVlc3QtPnVy
bCk7CiAKICAgICBpZiAodXJsLmlzVmFsaWQoKQogICAgICAgICAmJiB1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpCiAgICAgICAgICYmIHVybC5ob3N0KCkgIT0gIjEyNy4wLjAuMSIKICAgICAg
ICAgJiYgdXJsLmhvc3QoKSAhPSAiMjU1LjI1NS4yNTUuMjU1IgogICAgICAgICAmJiB1cmwuaG9z
dCgpLmxvd2VyKCkgIT0gImxvY2FsaG9zdCIpIHsKLSAgICAgICAgcHJpbnRmKCJCbG9ja2VkIGFj
Y2VzcyB0byBleHRlcm5hbCBVUkwgJXNcbiIsIHJlcXVlc3QtPnVybCk7Ci0gICAgICAgIHJlcXVl
c3QtPnVybCA9IDA7CisgICAgICAgIHByaW50ZigiQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwg
VVJMICVzXG4iLCBtZXNzYWdlcy0+cmVxdWVzdC0+dXJsKTsKKyAgICAgICAgbWVzc2FnZXMtPnJl
cXVlc3QtPnVybCA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CisKK3ZvaWQgRHVtcFJl
bmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2
b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZXNw
b25zZSA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo+KGV2ZW50SW5m
byk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgQ1N0cmluZyByZXNwb25zZURlc2NyaXB0aW9u
KGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKSk7CisgICAgICAgIHBy
aW50ZigiJXMgLSBkaWRSZWNlaXZlUmVzcG9uc2UgJXNcbiIsCisgICAgICAgICAgICAgICBwYXRo
U3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgIHJlc3BvbnNlRGVzY3JpcHRpb24uZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRHVtcFJl
bmRlclRyZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2JqZWN0
Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9ICpz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nKj4oZXZlbnRJbmZvKTsKKworICAgIGlmICghZG9uZSAm
JiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAg
ICAgICAgcHJpbnRmKCIlcyAtIGRpZEZpbmlzaExvYWRpbmdcbiIsCisgICAgICAgICAgICAgICAo
bV9kdW1wQXNzaWduZWRVcmxzLmNvbnRhaW5zKGlkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRV
cmxzLnRha2UoaWRlbnRpZmllcikuZGF0YSgpIDogIjx1bmtub3duPiIpKTsKK30KKwordm9pZCBE
dW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJv
ciA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9Mb2FkX0Vycm9yKj4oZXZlbnRJbmZvKTsKKworICAg
IGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiAl
c1xuIiwKKyAgICAgICAgICAgICAgIChtX2R1bXBBc3NpZ25lZFVybHMuY29udGFpbnMoZXJyb3It
PnJlc291cmNlX2lkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRVcmxzLnRha2UoZXJyb3ItPnJl
c291cmNlX2lkZW50aWZpZXIpLmRhdGEoKSA6ICI8dW5rbm93bj4iKSwKKyAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGVycm9yKS5kYXRhKCkpOworfQorCit2
b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
cXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo+
KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIG1fZHVtcEFzc2lnbmVkVXJscy5h
ZGQocmVxdWVzdC0+aWRlbnRpZmllciwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0
LT51cmwpKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZUNocm9tZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVl
Q2hyb21lLmgKaW5kZXggZTE1NmI0ZC4uODI3MzM2YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTMxLDkgKzMxLDExIEBACiAKICNp
bmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogY2xhc3MgRHVtcFJlbmRlclRyZWVDaHJvbWUgewogcHVibGljOgpAQCAtNjEsNiArNjMsNyBA
QCBwcml2YXRlOgogICAgIEV2YXMqIG1fZXZhczsKICAgICBPd25QdHI8R0NDb250cm9sbGVyPiBt
X2djQ29udHJvbGxlcjsKICAgICBWZWN0b3I8RXZhc19PYmplY3QqPiBtX2V4dHJhVmlld3M7Cisg
ICAgc3RhdGljIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgQ1N0cmluZz4gbV9kdW1wQXNzaWduZWRV
cmxzOwogCiAgICAgLy8gU21hcnQgY2FsbGJhY2tzCiAgICAgc3RhdGljIHZvaWQgb25XaW5kb3dP
YmplY3RDbGVhcmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKQEAgLTc3LDYgKzgwLDE0
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgb25Eb2N1bWVudExvYWRGaW5pc2hlZCh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiAKICAgICBzdGF0aWMgdm9pZCBvbldpbGxTZW5kUmVx
dWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvblJl
c3BvbnNlUmVjZWl2ZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGlj
IHZvaWQgb25SZXNvdXJjZUxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7
CisKKyAgICBzdGF0aWMgdm9pZCBvblJlc291cmNlTG9hZEZhaWxlZCh2b2lkKiwgRXZhc19PYmpl
Y3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiB9OwogCiAjZW5kaWYgLy8gRHVtcFJlbmRlclRyZWVD
aHJvbWVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134743</attachid>
            <date>2012-03-30 01:25:39 -0700</date>
            <delta_ts>2012-03-30 04:20:27 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>32042</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YmZlYzRkLi5hYmFkZTFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTItMDMt
MjkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRUZMJ3MgRFJUIG5vdyBzdXBwb3J0cyBMYXlvdXRUZXN0Q29udHJvbGxl
cidzIAorICAgICAgICBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCksIGFsbG93aW5nIHNldmVy
YWwgdGVzdHMgdG8gYmUgcmVtb3ZlZCBmcm9tCisgICAgICAgIHRoZSBza2lwIGxpc3QuIAorCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisKKzIwMTItMDMtMjkgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZMXVtEUlRd
IENhdGNoIHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE5MgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9Ta2lwcGVkCmluZGV4IDMxZWFkOTYuLmQ4MzA2ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkCkBAIC00NjUsNyArNDY1LDYgQEAgZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC1ub25leGlzdGVudC1maWxlLmh0bWwKIGZhc3QvY3NzL2Rpc2FibGVkLWF1dGhvci1zdHls
ZXMuaHRtbAogCiAjIEVGTCdzIExheW91dFRlc3RDb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVu
dCBkaXNhYmxlSW1hZ2VMb2FkaW5nCi1odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWljb24tbG9hZGluZy1vdmVycmlkZS5odG1sCiBodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fk
cy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sCiAKICMgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgZG9lcyBub3QgaW1wbGVtZW50IHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCkBAIC04
MzAsMTAgKzgyOSw2IEBAIGZhc3QvaGlzdG9yeS9iYWNrLWZvcndhcmQtcmVzZXQtYWZ0ZXItZXJy
b3ItaGFuZGxpbmcuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZW1wdHkt
dXJsLXBsdWdpbi1pbi1mcmFtZS5odG1sCiBmYXN0L2xvYWRlci9maWxlLXByb3RvY29sLWZyYWdt
ZW50Lmh0bWwKIAotIyBNaXNzaW5nIGRlbGVnYXRlczogdGVzdHMgZmFpbGluZyBiZWNhdXNlIG9m
IG1pc3NpbmcgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxsYmFja3MuCi1mYXN0L2xvYWRlci9t
YWluLWRvY3VtZW50LXVybC1mb3Itbm9uLWh0dHAtbG9hZHMuaHRtbAotaHR0cC90ZXN0cy9taXNj
L2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi0KICMgTWlzc2luZyBkZWxlZ2F0ZXM6IHRl
c3RzIGZhaWxpbmcgYmVjYXVzZSBvZiBtaXNzaW5nIHBvbGljeSBkZWxlZ2F0ZSBjYWxsYmFja3Mu
CiBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJhbWUuaHRtbAogZmFzdC9s
b2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29tZWQuaHRtbApAQCAtMTA3
Myw5ICsxMDY4LDYgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2Ut
ZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCiAjIFRlc3RzIHdoaWNoIGFsc28gZmFpbCBp
biBvdGhlciBwbGF0Zm9ybXMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi0jIFNob3VsZCBiZSBtb3ZlZCB0byBwbGF0Zm9ybS9tYWMgPHJkYXI6Ly81NjIxNDI1
PiAodmlhIHdpbi8sIGNocm9taXVtLyBhbmQgd2luY2Fpcm8vKQotaHR0cC90ZXN0cy9taXNjL3dp
bGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNrLmh0bWwKLQogIyBGYWlscyBhc3NlcnRp
b246IEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmhhc09uZVJlZigpKTsKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODAxCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS91
c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13b3JrZXJzLmh0bWwKQEAgLTEyNDMsNyArMTIz
NSw2IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC5odG1sCiBodHRwL3Rlc3Rz
L21pc2MvYWNpZDMuaHRtbAogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQt
dHdpY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1s
Ci1odHRwL3Rlc3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKIGh0dHAvdGVzdHMvbXVsdGlw
YXJ0L3BvbGljeS1pZ25vcmUtY3Jhc2gucGhwCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZlZWQtdXJs
cy1mcm9tLXJlbW90ZS5odG1sCiAKQEAgLTI1MDksMTggKzI1MDAsMTAgQEAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZWZlcnJlci1wb2xpY3ktaHR0cHMtb3JpZ2luLmh0bWwKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVmZXJyZXItcG9saWN5LXJlZGlyZWN0Lmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzLURFTklFRC14c2wtZG9jdW1lbnQtcmVkaXJlY3QueG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQteHNsLWV4dGVybmFsLWVudGl0eS1yZWRpcmVjdC54bWwKLWh0dHAvdGVzdHMv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1i
b2R5Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlv
bnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cuaHRtbAotaHR0cC90ZXN0
cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBh
cmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy5odG1sCi1odHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4t
YWxsb3cuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0
aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCiBodHRwL3Rlc3RzL3NzbC9yZWZlcmVy
LTMwMS5odG1sCiBodHRwL3Rlc3RzL3NzbC9yZWZlcmVyLTMwMy5odG1sCiBodHRwL3Rlc3RzL3Nz
bC92ZXJpZnktc3NsLWVuYWJsZWQucGhwCiBodHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1
cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sCi1odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0
LXNob3VsZC1jYW5jZWwtbG9hZC5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vz
cy1jb250cm9sLWJhc2ljLXdoaXRlbGlzdC1yZXF1ZXN0LWhlYWRlcnMuaHRtbAogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLW5vcGFzc3dvcmQuaHRtbAogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLW5vdXNlci5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXgg
MDVjYzIyYS4uNTA3MjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEy
LTAzLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAK
KyAgICAgICAgW0VGTF0gRFJUIHNob3VsZCBzdXBwb3J0IExheW91dFRlc3RDb250cm9sbGVyJ3Mg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVGTCdzIERSVCBub3cgc3VwcG9ydHMgTGF5b3V0VGVzdENvbnRy
b2xsZXIncyAKKyAgICAgICAgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpLCBhbGxvd2luZyBz
ZXZlcmFsIHRlc3RzIHRvIGJlIHJlbW92ZWQgZnJvbQorICAgICAgICB0aGUgc2tpcCBsaXN0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVu
dGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoK
KyAgICAgICAgKGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZCk6CisgICAgICAgIChld2tfZnJh
bWVfcmVzcG9uc2VfcmVjZWl2ZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQp
OgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQpOgorICAgICAgICAo
ZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2Fk
X2Vycm9yKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAgICogZXdrL2V3a19w
cml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisKKzIwMTItMDMtMjkgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZM
XVtEUlRdIENhdGNoIHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE5MgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAKaW5kZXggNmFmMWQzYS4uNTliOTZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApA
QCAtMTYzLDE2ICsxNjMsMzQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWQKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CiAgICAgQ1N0cmluZyB1cmwg
PSBjb3JlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgREJHKCJSZXNvdXJjZSB1
cmw9JXMiLCB1cmwuZGF0YSgpKTsKKyAgICBDU3RyaW5nIGZpcnN0UGFydHkgPSBjb3JlUmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGh0
dHBNZXRob2QgPSBjb3JlUmVxdWVzdC5odHRwTWV0aG9kKCkudXRmOCgpOworICAgIERCRygiUmVz
b3VyY2UgdXJsPSVzLCBmaXJzdF9wYXJ0eT0lcywgaHR0cF9tZXRob2Q9JXMiLCB1cmwuZGF0YSgp
LCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCkpOwogCi0gICAgRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgMCwgaWRlbnRpZmllciwgbV9mcmFtZSB9Owor
ICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIDAsIDAsIGlkZW50
aWZpZXIsIG1fZnJhbWUgfTsKICAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCBvcmlnID0g
cmVxdWVzdDsgLyogSW5pdGlhbGl6ZSBjb25zdCBmaWVsZHMuICovCiAKICAgICBvcmlnLnVybCA9
IHJlcXVlc3QudXJsID0gdXJsLmRhdGEoKTsKKyAgICByZXF1ZXN0LmZpcnN0X3BhcnR5ID0gZmly
c3RQYXJ0eS5kYXRhKCk7CisgICAgcmVxdWVzdC5odHRwX21ldGhvZCA9IGh0dHBNZXRob2QuZGF0
YSgpOworCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
OworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSByZXNwb25zZUJ1ZmZlcjsKKyAgICBD
U3RyaW5nIHJlZGlyZWN0VXJsOwogCi0gICAgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKG1f
ZnJhbWUsICZyZXF1ZXN0KTsKKyAgICBpZiAoY29yZVJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAg
ICByZWRpcmVjdFJlc3BvbnNlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVkaXJlY3RVcmwg
PSBjb3JlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgICAgICByZXNwb25zZUJ1
ZmZlci51cmwgPSByZWRpcmVjdFVybC5kYXRhKCk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLnN0
YXR1c19jb2RlID0gY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgICAgIHJlZGly
ZWN0UmVzcG9uc2UgPSAmcmVzcG9uc2VCdWZmZXI7CisgICAgfQorICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9NZXNzYWdlcyBtZXNzYWdlcyA9IHsgJnJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UgfTsK
IAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCx3aWxsc2VuZCIsICZyZXF1ZXN0KTsKKyAgICBld2tfZnJhbWVfcmVxdWVzdF93aWxs
X3NlbmQobV9mcmFtZSwgJm1lc3NhZ2VzKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsICZtZXNzYWdlcyk7
CiAKICAgICBpZiAocmVxdWVzdC51cmwgIT0gb3JpZy51cmwpIHsKICAgICAgICAgY29yZVJlcXVl
c3Quc2V0VVJMKEtVUkwoS1VSTCgpLCByZXF1ZXN0LnVybCkpOwpAQCAtMTk0LDggKzIxMiw5IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgQ1N0cmluZyB1cmwgPSBjb3JlUmVxdWVzdC51
cmwoKS5zdHJpbmcoKS51dGY4KCk7CiAgICAgREJHKCJSZXNvdXJjZSB1cmw9JXMiLCB1cmwuZGF0
YSgpKTsKIAotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIGlk
ZW50aWZpZXIsIG1fZnJhbWUgfTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1
ZXN0ID0geyB1cmwuZGF0YSgpLCAwLCAwLCBpZGVudGlmaWVyLCBtX2ZyYW1lIH07CiAgICAgZXdr
X2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIobV9mcmFtZSwgJnJlcXVlc3QpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVz
dCxuZXciLCAmcmVxdWVzdCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnBvc3RQ
cm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQpAQCAtMjMyLDEzICsyNTEsMjEgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGNvcmVSZXNwb25zZSkKIHsKICAgICAvLyBVcGRh
dGUgb3VyIGtub3dsZWRnZSBvZiByZXF1ZXN0IHNvdXAgZmxhZ3MgLSBzb21lIGFyZSBvbmx5IHNl
dAogICAgIC8vIGFmdGVyIHRoZSByZXF1ZXN0IGlzIGRvbmUuCi0gICAgbG9hZGVyLT5yZXF1ZXN0
KCkuc2V0U291cE1lc3NhZ2VGbGFncyhyZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkpOworICAg
IGxvYWRlci0+cmVxdWVzdCgpLnNldFNvdXBNZXNzYWdlRmxhZ3MoY29yZVJlc3BvbnNlLnNvdXBN
ZXNzYWdlRmxhZ3MoKSk7CisKKyAgICBtX3Jlc3BvbnNlID0gY29yZVJlc3BvbnNlOworCisgICAg
RXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHJlc3BvbnNlID0geyAwLCBjb3JlUmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSB9OworICAgIENTdHJpbmcgdXJsID0gY29yZVJlc3BvbnNlLnVybCgp
LnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXNwb25zZS51cmwgPSB1cmwuZGF0YSgpOwogCi0gICAg
bV9yZXNwb25zZSA9IHJlc3BvbnNlOworICAgIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZlZCht
X2ZyYW1lLCAmcmVzcG9uc2UpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsICZyZXNwb25zZSk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQpAQCAtMjg3
LDcgKzMxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgLy8gaWYgbm90IGFjY2Vw
dE5hdmlnYXRpb25SZXF1ZXN0IC0gbG9vayBhdCBRdCAtPiBQb2xpY3lJZ25vcmU7CiAgICAgLy8g
RklYTUU6IGRvIHByb3BlciBjaGVjayBhbmQgb25seSByZXNldCBmb3JtcyB3aGVuIG9uIFBvbGlj
eUlnbm9yZQogICAgIGNoYXIqIHVybCA9IHN0cmR1cChyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVx
dWVzdCA9IHsgdXJsLCAwLCBtX2ZyYW1lIH07CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVl
c3QgcmVxdWVzdCA9IHsgdXJsLCAwLCAwLCAwLCBtX2ZyYW1lIH07CiAgICAgYm9vbCByZXQgPSBl
d2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihtX3ZpZXcsICZyZXF1ZXN0KTsKICAg
ICBmcmVlKHVybCk7CiAKQEAgLTcyMCwxMiArNzQ3LDMxIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKG1fZnJh
bWUsIGlkZW50aWZpZXIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92
aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsICZpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEV3a19GcmFtZV9Mb2Fk
X0Vycm9yIGVycm9yOworICAgIENTdHJpbmcgZXJyb3JEb21haW4gPSBlcnIuZG9tYWluKCkudXRm
OCgpOworICAgIENTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbiA9IGVyci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGZhaWxpbmdVcmwgPSBlcnIuZmFpbGluZ1VSTCgp
LnV0ZjgoKTsKKworICAgIERCRygiZXdrRnJhbWU9JXAsIHJlc291cmNlPSVsZCwgZXJyb3I9JXMg
KCVkLCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAorICAgICAgICBtX2ZyYW1l
LCBpZGVudGlmaWVyLCBlcnJvckRvbWFpbi5kYXRhKCksIGVyci5lcnJvckNvZGUoKSwgZXJyLmlz
Q2FuY2VsbGF0aW9uKCksCisgICAgICAgIGVycm9yRGVzY3JpcHRpb24uZGF0YSgpLCBmYWlsaW5n
VXJsLmRhdGEoKSk7CisKKyAgICBlcnJvci5jb2RlID0gZXJyLmVycm9yQ29kZSgpOworICAgIGVy
cm9yLmlzX2NhbmNlbGxhdGlvbiA9IGVyci5pc0NhbmNlbGxhdGlvbigpOworICAgIGVycm9yLmRv
bWFpbiA9IGVycm9yRG9tYWluLmRhdGEoKTsKKyAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9y
RGVzY3JpcHRpb24uZGF0YSgpOworICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGluZ1VybC5k
YXRhKCk7CisgICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAg
ZXJyb3IuZnJhbWUgPSBtX2ZyYW1lOworCisgICAgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFp
bGVkKG1fZnJhbWUsICZlcnJvcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJsb2FkLHJlc291cmNlLGZhaWxlZCIsICZlcnJvcik7CiB9CiAKIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IGMyMjlmODAuLjcwMmM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC0x
MjA3LDE1ICsxMjA3LDE1IEBAIHZvaWQgZXdrX2ZyYW1lX2NvcmVfZ29uZShFdmFzX09iamVjdCog
ZXdrRnJhbWUpCiAgKiBjaGFuZ2luZyB2YWx1ZXMgaW4gQHBhcmFtIHJlcXVlc3QuCiAgKgogICog
QHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgotICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCBkZXRhaWxz
IHRoYXQgdXNlciBtYXkgb3ZlcnJpZGUuIFdoZW5ldmVyIHZhbHVlcyBvbgotICogdGhpcyBzdHJ1
Y3QgY2hhbmdlcywgaXQgbXVzdCBiZSBwcm9wZXJseSBtYWxsb2MnZCBhcyBpdCB3aWxsIGJlIGZy
ZWVkCi0gKiBhZnRlcndhcmRzLgorICogQHBhcmFtIG1lc3NhZ2VzIE1lc3NhZ2VzIGNvbnRhaW5p
bmcgdGhlIHJlcXVlc3QgZGV0YWlscyB0aGF0IHVzZXIgbWF5IG92ZXJyaWRlIGFuZCBhCisgKiBw
b3NzaWJsZSByZWRpcmVjdCByZXBvbnNlLiBXaGVuZXZlciB2YWx1ZXMgb24gdGhpcyBzdHJ1Y3Qg
Y2hhbmdlcywgaXQgbXVzdCBiZSBwcm9wZXJseQorICogbWFsbG9jJ2QgYXMgaXQgd2lsbCBiZSBm
cmVlZCBhZnRlcndhcmRzLgogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qs
d2lsbHNlbmQiCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCit2b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19G
cmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMpCiB7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCBy
ZXF1ZXN0KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAi
cmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIG1lc3NhZ2VzKTsKIH0KIAogLyoqCkBAIC0xMjM0
LDYgKzEyMzQsMjAgQEAgdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV3a19GcmFtZV8KIAogLyoqCiAgKiBAaW50ZXJu
YWwKKyAqIFJlcG9ydHMgdGhhdCBhIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMg
cmVjZWl2ZWQuCisgKgorICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1lLgorICogQHBhcmFtIHJlcXVl
c3QgUmVzcG9uc2UgZGV0YWlscy4gTm8gY2hhbmdlcyBhcmUgYWxsb3dlZCB0byBmaWVsZHMuCisg
KgorICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiCisgKi8KK3Zv
aWQgZXdrX2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdr
X0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQi
LCByZXNwb25zZSk7Cit9CisKKy8qKgorICogQGludGVybmFsCiAgKiBSZXBvcnRzIHRoYXQgZmly
c3QgbmF2aWdhdGlvbiBvY2N1cnJlZAogICoKICAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KQEAg
LTEzNTgsNiArMTM3Miw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50CiAgICAgICAgIGJ1ZmZl
ci5pc19jYW5jZWxsYXRpb24gPSBpc0NhbmNlbGxhdGlvbjsKICAgICAgICAgYnVmZmVyLmRlc2Ny
aXB0aW9uID0gZXJyb3JEZXNjcmlwdGlvbjsKICAgICAgICAgYnVmZmVyLmZhaWxpbmdfdXJsID0g
ZmFpbGluZ1VybDsKKyAgICAgICAgYnVmZmVyLnJlc291cmNlX2lkZW50aWZpZXIgPSAwOwogICAg
ICAgICBidWZmZXIuZnJhbWUgPSBld2tGcmFtZTsKICAgICAgICAgZXJyb3IgPSAmYnVmZmVyOwog
ICAgIH0KQEAgLTEzNjgsNiArMTM4MywyOSBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludAogCiAv
KioKICAqIEBpbnRlcm5hbAorICogUmVwb3J0cyByZXNvdXJjZSBsb2FkIGZpbmlzaGVkLgorICoK
KyAqIEVtaXRzIHNpZ25hbDogImxvYWQscmVzb3VyY2UsZmluaXNoZWQiIHdpdGggdGhlIHJlc291
cmNlCisgKiByZXF1ZXN0IGlkZW50aWZpZXIuCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVz
b3VyY2VfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwg
ImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCAmaWRlbnRpZmllcik7Cit9CisKKy8qKgorICogQGlu
dGVybmFsCisgKiBSZXBvcnRzIHJlc291cmNlIGxvYWQgZmFpbHVyZSwgd2l0aCBlcnJvciBpbmZv
cm1hdGlvbi4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHJlc291cmNlLGZhaWxlZCIgd2l0
aCB0aGUgZXJyb3IgaW5mb3JtYXRpb24uCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3Vy
Y2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVy
cm9yKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJs
b2FkLHJlc291cmNlLGZhaWxlZCIsIGVycm9yKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKICAq
IFJlcG9ydHMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0ZyYW1lX0xvYWRfRXJy
b3IuCkBAIC0xMzg3LDYgKzE0MjUsNyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9yKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcgogICAgIGVy
cm9yLmRvbWFpbiA9IGVycm9yRG9tYWluOwogICAgIGVycm9yLmRlc2NyaXB0aW9uID0gZXJyb3JE
ZXNjcmlwdGlvbjsKICAgICBlcnJvci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7CisgICAgZXJy
b3IucmVzb3VyY2VfaWRlbnRpZmllciA9IDA7CiAgICAgZXJyb3IuZnJhbWUgPSBld2tGcmFtZTsK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxlcnJv
ciIsICZlcnJvcik7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNt
YXJ0RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKaW5kZXggM2UwNmZjMy4uYjJmNDcx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaApAQCAtNDUsNiArNDUsMTAgQEAKICAqICAt
ICJsb2FkLGZpbmlzaGVkIiwgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqOiByZXBvcnRzIGxv
YWQKICAqICAgIGZpbmlzaGVkIGFuZCBpdCBnaXZlcyBAYyBOVUxMIG9uIHN1Y2Nlc3Mgb3IgcG9p
bnRlciB0bwogICogICAgc3RydWN0dXJlIGRlZmluaW5nIHRoZSBlcnJvci4KKyAqICAtICJsb2Fk
LHJlc291cmNlLGZpbmlzaGVkIiwgdW5zaWduZWQgbG9uZzogcmVwb3J0cyByZXNvdXJjZSBsb2Fk
IGZpbmlzaGVkIGFuZCBpdCBnaXZlcworICogICAgaXRzIGlkZW50aWZpZXIuCisgKiAgLSAibG9h
ZCxyZXNvdXJjZSxmYWlsZWQiLCBFd2tfRnJhbWVfTG9hZF9FcnJvcjogcmVwb3J0cyByZXNvdXJj
ZSBsb2FkIGZhaWx1cmUgYW5kIGl0CisgKiAgICBnaXZlcyBhIHBvaW50ZXIgdG8gc3RydWN0dXJl
IGRlZmluaW5nIHRoZSBlcnJvciBhcyBhbiBhcmd1bWVudC4KICAqICAtICJsb2FkLGZpcnN0bGF5
b3V0LGZpbmlzaGVkIiwgdm9pZDogZnJhbWUgZmluaXNoZWQgZmlyc3QgbGF5b3V0LgogICogIC0g
ImxvYWQsbm9uZW1wdHlsYXlvdXQsZmluaXNoZWQiLCB2b2lkOiBmcmFtZSBmaW5pc2hlZCBmaXJz
dAogICogICAgbm9uLWVtcHR5IGxheW91dC4KQEAgLTU3LDggKzYxLDEwIEBACiAgKiAgLSAibmF2
aWdhdGlvbixmaXJzdCIsIHZvaWQ6IGZpcnN0IG5hdmlnYXRpb24gd2FzIG9jY3VycmVkLgogICog
IC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiBy
ZXBvcnRzIHRoYXQKICAqICAgIHRoZXJlJ3MgYSBuZXcgcmVzb3VyY2UgcmVxdWVzdC4KLSAqICAt
ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qq
OiBhIHJlc291cmNlIHdpbGwKKyAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdr
X0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKjogYSByZXNvdXJjZSB3aWxsCiAgKiAgICBiZSByZXF1
ZXN0ZWQuCisgKiAgLSAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBFd2tfRnJhbWVfUmVz
b3VyY2VfUmVzcG9uc2UqOiByZXBvcnRzIHRoYXQgYSByZXNwb25zZQorICogICAgdG8gYSByZXNv
dXJjZSByZXF1ZXN0IHdhcyByZWNlaXZlZC4KICAqICAtICJzdGF0ZSxzYXZlIiwgdm9pZDogZnJh
bWUncyBzdGF0ZSB3aWxsIGJlIHNhdmVkIGFzIGEgaGlzdG9yeSBpdGVtLgogICogIC0gInRpdGxl
LGNoYW5nZWQiLCBjb25zdCBjaGFyKjogdGl0bGUgb2YgdGhlIG1haW4gZnJhbWUgd2FzIGNoYW5n
ZWQuCiAgKiAgLSAidXJpLGNoYW5nZWQiLCBjb25zdCBjaGFyKjogdXJpIG9mIHRoZSBtYWluIGZy
YW1lIHdhcyBjaGFuZ2VkLgpAQCAtOTEsMjQgKzk3LDQ5IEBAIHN0cnVjdCBfRXdrX0ZyYW1lX0xv
YWRfRXJyb3IgewogICAgIGNvbnN0IGNoYXIgKmRvbWFpbjsgLyoqPCBlcnJvciBkb21haW4gbmFt
ZSAqLwogICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uOyAvKio8IGVycm9yIGRlc2NyaXB0aW9u
IGFscmVhZHkgbG9jYWxpemVkICovCiAgICAgY29uc3QgY2hhciAqZmFpbGluZ191cmw7IC8qKjwg
dGhlIHVybCB0aGF0IGZhaWxlZCB0byBsb2FkICovCisgICAgdW5zaWduZWQgbG9uZyByZXNvdXJj
ZV9pZGVudGlmaWVyOyAvKio8IGlkZW50aWZpZXIgb2YgcmVzb3VyY2UgKi8KICAgICBFdmFzX09i
amVjdCAqZnJhbWU7IC8qKjwgZnJhbWUgd2hlcmUgdGhlIGZhaWx1cmUgaGFwcGVuZWQgKi8KIH07
CiAKIC8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVl
c3QuCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3Q7CisKIC8qKgotICogQGJyaWVmICAgU3RydWN0dXJlIHVzZWQgdG8g
cmVwb3J0IHJlc291cmNlIHJlcXVlc3QuCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgY29udGFpbmlu
ZyBkZXRhaWxzIGFib3V0IGEgcmVzb3VyY2UgcmVxdWVzdC4KICAqCi0gKiBEZXRhaWxzIGdpdmVu
IGJlZm9yZSBhIHJlc291cmNlIGlzIGxvYWRlZCBvbiBhIGdpdmVuIGZyYW1lLiBJdCdzIHVzZWQg
YnkKLSAqIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZCgpIHRvIGluZm9ybSB0aGUgZGV0YWls
cyBvZiBhIHRvLWJlLWxvYWRlZAotICogcmVzb3VyY2UsIGFsbG93aW5nIHRoZW0gdG8gYmUgb3Zl
cnJpZGRlbi4KKyAqIERldGFpbHMgZ2l2ZW4gYmVmb3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVkIG9u
IGEgZ2l2ZW4gZnJhbWUuIEl0J3MgdXNlZCBpbgorICogRXdrX0ZyYW1lX1Jlc291cmNlX01lc3Nh
Z2VzIHRvIGluZm9ybSBhYm91dCB0aGUgZGV0YWlscyBvZiBhIHJlc291cmNlIHJlcXVlc3QuCiAg
Ki8KIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgewogICAgIGNvbnN0IGNoYXIg
KnVybDsgLyoqPCB1cmwgb2YgdGhlIHJlc291cmNlICovCisgICAgY29uc3QgY2hhciAqZmlyc3Rf
cGFydHk7IC8qKjwgZmlyc3QgcGFydHkgZm9yIGNvb2tpZXMsIGNhbiBub3QgYmUgY2hhbmdlZCAg
Ki8KKyAgICBjb25zdCBjaGFyICpodHRwX21ldGhvZDsgLyoqPCBodHRwIG1ldGhvZCwgY2FuIG5v
dCBiZSBjaGFuZ2VkICAqLwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsgLyoq
PCBpZGVudGlmaWVyIG9mIHJlc291cmNlLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KICAgICBFdmFz
X09iamVjdCAqZnJhbWU7IC8qKjwgZnJhbWUgd2hlcmUgdGhlIHJlc291cmNlIGlzIHJlcXVlc3Rl
ZCAqLwogfTsKIAorLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVzcG9uc2UuCit0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNl
IEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZTsKKworLyoqCisgKiBAYnJpZWYgICBTdHJ1Y3R1
cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSByZXF1
ZXN0LgorICoKKyAqIERldGFpbHMgZ2l2ZW4gaW4gdGhlIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2Ug
cmVxdWVzdC4gSXQncyB1c2VkIGJ5CisgKiBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoKSB0
byBpbmZvcm0gYWJvdXQgdGhlIGRldGFpbHMgb2YgYSByZXNwb25zZS4KKyAqLworc3RydWN0IF9F
d2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgeworICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1
cmwgb2YgdGhlIHJlc291cmNlICovCisgICAgaW50IHN0YXR1c19jb2RlOyAvKio8IGh0dHAgc3Rh
dHVzIGNvZGUgKi8KK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1l
X1Jlc291cmNlX01lc3NhZ2VzLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9N
ZXNzYWdlcyBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXM7CisKK3N0cnVjdCBfRXdrX0ZyYW1l
X1Jlc291cmNlX01lc3NhZ2VzIHsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVx
dWVzdDsgLyoqPCByZXNvdXJjZSByZXF1ZXN0ICovCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
c3BvbnNlICpyZWRpcmVjdF9yZXNwb25zZTsgLyoqPCByZWRpcmVjdCByZXNwb25zZSwgY2FuIG5v
dCBiZSBjaGFuZ2VkICovCit9OworCiAvLy8gRW51bSBjb250YWluaW5nIGhpdCB0ZXN0IGRhdGEg
dHlwZXMKIHR5cGVkZWYgZW51bSB7CiAgICAgRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0RP
Q1VNRU5UID0gMSA8PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCA5NmU0
Nzk1Li4wOGY3YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApAQCAtMjA4LDEx
ICsyMDgsMTQgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFz
X09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25l
bXB0eV9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9h
ZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJh
bWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9y
RG9tYWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBl
cnJvckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKK3ZvaWQgZXdrX2ZyYW1l
X2xvYWRfcmVzb3VyY2VfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOwordm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwogdm9pZCBl
d2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVy
cm9yRG9tYWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFy
KiBlcnJvckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKIHZvaWQgZXdrX2Zy
YW1lX2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogCi12b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rf
d2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3Nh
Z2VzKiBtZXNzYWdlcyk7CiB2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVy
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qq
IHJlcXVlc3QpOwordm9pZCBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKTsKIHZvaWQg
ZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBpdGVtKTsKIAogdm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmlyc3Rf
bmF2aWdhdGlvbihFdmFzX09iamVjdCogZXdrRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aAppbmRleCAwZDEwNzA3Li4wM2Q3MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAt
NTQsNiArNTQsMTAgQEAKICAqICAtICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9n
cmVzcyBpcyBjaGFuZ2VkIChvdmVyYWxsIHZhbHVlCiAgKiAgICBmcm9tIDAuMCB0byAxLjAsIGNv
bm5lY3QgdG8gaW5kaXZpZHVhbCBmcmFtZXMgZm9yIGZpbmUgZ3JhaW5lZCkuCiAgKiAgLSAibG9h
ZCxwcm92aXNpb25hbCIsIHZvaWQ6IHZpZXcgc3RhcnRlZCBwcm92aXNpb25hbCBsb2FkLgorICog
IC0gImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCB1bnNpZ25lZCBsb25nOiByZXBvcnRzIHJlc291
cmNlIGxvYWQgZmluaXNoZWQgYW5kIGl0IGdpdmVzCisgKiAgICBpdHMgaWRlbnRpZmllci4KKyAq
ICAtICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yOiByZXBvcnRz
IHJlc291cmNlIGxvYWQgZmFpbHVyZSBhbmQgaXQKKyAqICAgIGdpdmVzIGEgcG9pbnRlciB0byBz
dHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9yIGFzIGFuIGFyZ3VtZW50LgogICogIC0gImxvYWQs
c3RhcnRlZCIsIHZvaWQ6IGZyYW1lIHN0YXJ0ZWQgbG9hZGluZyB0aGUgZG9jdW1lbnQuCiAgKiAg
LSAibWVudWJhcix2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9U
UlVFIGlmIG1lbnViYXIgaXMKICAqICAgIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lz
ZS4KQEAgLTYxLDggKzY1LDExIEBACiAgKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZv
aWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVk
IG1peGVkIGNvbnRlbnQuCiAgKiAgLSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGFueSBvZiB0
aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNvbnRlbnQuCiAg
KiAgLSAicmVhZHkiLCB2b2lkOiBwYWdlIGlzIGZ1bGx5IGxvYWRlZC4KLSAqICAtICJyZXNvdXJj
ZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291
cmNlIHdpbGwKLSAqICAgIGJlIHJlcXVlc3RlZC4KKyAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0CisgKiAgICB0aGVy
ZSdzIGEgbmV3IHJlc291cmNlIHJlcXVlc3QuCisgKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxs
c2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2lsbCBiZSBy
ZXF1ZXN0ZWQuCisgKiAgICAgYW5kIHRoZSBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KKyAq
ICAtICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNw
b25zZSo6IHRoZSBuZXR3b3JrIHJlc3BvbnNlIGZvciBhIHJlc291cmNlLgogICogIC0gInNjcm9s
bGJhcnMsdmlzaWJsZSxnZXQiLCBFaW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFfVFJVRSBp
ZiBzY3JvbGxiYXJzCiAgKiAgICBhcmUgdmlzaWJsZTsgQGMgRUlOQV9GQUxTRSwgb3RoZXJ3aXNl
LgogICogIC0gInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCBFaW5hX0Jvb2w6IHNldHMgc2Nyb2xs
YmFycyB2aXNpYmlsaXR5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGZhN2Y0ODUuLjE5MWFjMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAogMjAxMi0wMy0yOSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCisgICAgICAgIFtF
RkxdIERSVCBzaG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFRkwncyBEUlQgbm93IHN1cHBvcnRzIExheW91dFRlc3RDb250cm9sbGVyJ3MKKyAg
ICAgICAgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpLCBhbGxvd2luZyBzZXZlcmFsIHRlc3Rz
IHRvIGJlIHJlbW92ZWQgZnJvbQorICAgICAgICB0aGUgc2tpcCBsaXN0LgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKHBhdGhTdWl0YWJsZUZv
clRlc3RSZXN1bHQpOgorICAgICAgICAodXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAg
ICAgKGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlQ2hyb21lOjpvbldpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6b25SZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvblJlc291cmNlTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvblJlc291cmNlTG9hZEZhaWxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9t
ZTo6b25OZXdSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9E
dW1wUmVuZGVyVHJlZUNocm9tZS5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWUpOgor
CisyMDEyLTAzLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CisKICAgICAgICAgW0VGTF1bRFJUXSBDYXRjaCB0aGUgInJlc291cmNlLHJlcXVlc3Qsd2ls
bHNlbmQiIHNpZ25hbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODIxOTIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVy
VHJlZUNocm9tZS5jcHAKaW5kZXggNmRkYjI4NC4uYjk4OWI3YyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCkBAIC00Nyw2ICs0Nyw4
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitIYXNoTWFwPHVuc2lnbmVkIGxvbmcs
IENTdHJpbmc+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjptX2R1bXBBc3NpZ25lZFVybHM7CisKIFBh
c3NPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVh
dGUoRXZhcyogZXZhcykKIHsKICAgICBPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IGNocm9t
ZSA9IGFkb3B0UHRyKG5ldyBEdW1wUmVuZGVyVHJlZUNocm9tZShldmFzKSk7CkBAIC05NSw3ICs5
NywxMSBAQCBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcoKSBj
b25zdAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAid2luZG93LG9i
amVjdCxjbGVhcmVkIiwgb25XaW5kb3dPYmplY3RDbGVhcmVkLCBtX2djQ29udHJvbGxlci5nZXQo
KSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJzdGF0dXNiYXIs
dGV4dCxzZXQiLCBvblN0YXR1c2JhclRleHRTZXQsIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIsIG9uRG9jdW1lbnRM
b2FkRmluaXNoZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3
LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBvbk5ld1Jlc291cmNlUmVxdWVzdCwgMCk7CiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHdp
bGxzZW5kIiwgb25XaWxsU2VuZFJlcXVlc3QsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh2aWV3LCAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBvblJlc3BvbnNl
UmVjZWl2ZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAi
bG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIG9uUmVzb3VyY2VMb2FkRmluaXNoZWQsIDApOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxyZXNvdXJjZSxmYWls
ZWQiLCBvblJlc291cmNlTG9hZEZhaWxlZCwgMCk7CiAKICAgICByZXR1cm4gdmlldzsKIH0KQEAg
LTI4NywyNSArMjkzLDE0NyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkRvY3VtZW50
TG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZQogICAgIH0KIH0KIAor
c3RhdGljIENTdHJpbmcgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFyKiB1cmlT
dHJpbmcpCit7CisgICAgaWYgKCF1cmlTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7
CisKKyAgICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcpOworCisg
ICAgaWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS51
dGY4KCk7CisKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHVyaS5wYXRoKCk7CisgICAgc2l6ZV90
IGluZGV4QmFzZU5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJyk7CisgICAgU3RyaW5n
IGJhc2VOYW1lOworICAgIGlmIChpbmRleEJhc2VOYW1lID09IG5vdEZvdW5kKQorICAgICAgICBi
YXNlTmFtZSA9IHBhdGhTdHJpbmc7CisgICAgZWxzZQorICAgICAgICBiYXNlTmFtZSA9IHBhdGhT
dHJpbmcuc3Vic3RyaW5nKGluZGV4QmFzZU5hbWUgKyAxKTsKKworICAgIFN0cmluZyBkaXJOYW1l
OworICAgIGlmIChpbmRleEJhc2VOYW1lICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHNpemVfdCBp
bmRleERpck5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJywgaW5kZXhCYXNlTmFtZSAt
IDEpOworICAgICAgICBpZiAoaW5kZXhEaXJOYW1lICE9IG5vdEZvdW5kKQorICAgICAgICAgICAg
ZGlyTmFtZSA9IHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4RGlyTmFtZSArIDEsIGluZGV4QmFz
ZU5hbWUgLSBpbmRleERpck5hbWUgLSAxKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcmV0ID0gZGly
TmFtZSArICIvIiArIGJhc2VOYW1lOworICAgIHJldHVybiByZXQudXRmOCgpOworfQorCitzdGF0
aWMgQ1N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5n
KQoreworICAgIEtVUkwgdXJpID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7Cisg
ICAgaWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcodXJpU3Ry
aW5nKTsKKworICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSB1cmkucGF0aEFmdGVyTGFzdFNsYXNo
KCk7CisgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS5zdWJzdHJpbmcoc3RhcnRJbmRleCkudXRmOCgp
OworfQorCitzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChF
d2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBTdHJpbmcgcmV0ID0g
IjxOU1VSTFJlcXVlc3QgVVJMICI7CisgICAgcmV0ICs9IHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQocmVxdWVzdC0+dXJsKS5kYXRhKCk7CisgICAgcmV0ICs9ICIsIG1haW4gZG9jdW1lbnQgVVJM
ICI7CisgICAgcmV0ICs9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT5maXJzdF9w
YXJ0eSkuZGF0YSgpOworICAgIHJldCArPSAiLCBodHRwIG1ldGhvZCAiOworICAgIHJldCArPSBy
ZXF1ZXN0LT5odHRwX21ldGhvZCA/IFN0cmluZyhyZXF1ZXN0LT5odHRwX21ldGhvZCkgOiAiKG5v
bmUpIjsKKyAgICByZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9CisKK3N0
YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IEV3a19G
cmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgaWYgKCFyZXNwb25zZSkK
KyAgICAgICAgcmV0dXJuIENTdHJpbmcoIihudWxsKSIpOworCisgICAgU3RyaW5nIHJldCA9ICI8
TlNVUkxSZXNwb25zZSAiOworICAgIHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJl
c3BvbnNlLT51cmwpLmRhdGEoKTsKKyAgICByZXQgKz0gIiwgaHR0cCBzdGF0dXMgY29kZSAiOwor
ICAgIHJldCArPSBTdHJpbmc6Om51bWJlcihyZXNwb25zZS0+c3RhdHVzX2NvZGUpOworICAgIHJl
dCArPSAiPiI7CisKKyAgICByZXR1cm4gcmV0LnV0ZjgoKTsKK30KKworc3RhdGljIENTdHJpbmcg
ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVy
cm9yKQoreworICAgIFN0cmluZyByZXQgPSAiPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21h
aW4sIGNvZGUgIjsKKyAgICByZXQgKz0gU3RyaW5nOjpudW1iZXIoZXJyb3ItPmNvZGUpOworICAg
IHJldCArPSAiLCBmYWlsaW5nIFVSTCBcIiI7CisgICAgcmV0ICs9IGVycm9yLT5mYWlsaW5nX3Vy
bDsKKyAgICByZXQgKz0gIlwiPiI7CisKKyAgICByZXR1cm4gcmV0LnV0ZjgoKTsKK30KKwogdm9p
ZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25XaWxsU2VuZFJlcXVlc3Qodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQogewotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqPihldmVu
dEluZm8pOworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMgPSBzdGF0
aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqPihldmVudEluZm8pOworCisgICAg
aWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxi
YWNrcygpKQorICAgICAgICAgICAgcHJpbnRmKCIlcyAtIHdpbGxTZW5kUmVxdWVzdCAlcyByZWRp
cmVjdFJlc3BvbnNlICVzXG4iLAorICAgICAgICAgICAgICAgICAgIHBhdGhTdWl0YWJsZUZvclRl
c3RSZXN1bHQobWVzc2FnZXMtPnJlcXVlc3QtPnVybCkuZGF0YSgpLAorICAgICAgICAgICAgICAg
ICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1lc3NhZ2VzLT5yZXF1ZXN0KS5k
YXRhKCksCisgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQobWVzc2FnZXMtPnJlZGlyZWN0X3Jlc3BvbnNlKS5kYXRhKCkpOwogCiAgICAgaWYgKCFkb25l
ICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkg
ewogICAgICAgICAvLyBBcyByZXF1ZXN0ZWQgYnkgdGhlIExheW91dFRlc3RDb250cm9sbGVyLCBk
b24ndCBwZXJmb3JtIHRoZSByZXF1ZXN0LgotICAgICAgICByZXF1ZXN0LT51cmwgPSAwOworICAg
ICAgICBtZXNzYWdlcy0+cmVxdWVzdC0+dXJsID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIEtVUkwgdXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlcXVlc3QtPnVybCk7Cisg
ICAgS1VSTCB1cmwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgbWVzc2FnZXMtPnJlcXVlc3QtPnVy
bCk7CiAKICAgICBpZiAodXJsLmlzVmFsaWQoKQogICAgICAgICAmJiB1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpCiAgICAgICAgICYmIHVybC5ob3N0KCkgIT0gIjEyNy4wLjAuMSIKICAgICAg
ICAgJiYgdXJsLmhvc3QoKSAhPSAiMjU1LjI1NS4yNTUuMjU1IgogICAgICAgICAmJiB1cmwuaG9z
dCgpLmxvd2VyKCkgIT0gImxvY2FsaG9zdCIpIHsKLSAgICAgICAgcHJpbnRmKCJCbG9ja2VkIGFj
Y2VzcyB0byBleHRlcm5hbCBVUkwgJXNcbiIsIHJlcXVlc3QtPnVybCk7Ci0gICAgICAgIHJlcXVl
c3QtPnVybCA9IDA7CisgICAgICAgIHByaW50ZigiQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwg
VVJMICVzXG4iLCBtZXNzYWdlcy0+cmVxdWVzdC0+dXJsKTsKKyAgICAgICAgbWVzc2FnZXMtPnJl
cXVlc3QtPnVybCA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CisKK3ZvaWQgRHVtcFJl
bmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2
b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZXNw
b25zZSA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo+KGV2ZW50SW5m
byk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgQ1N0cmluZyByZXNwb25zZURlc2NyaXB0aW9u
KGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKSk7CisgICAgICAgIHBy
aW50ZigiJXMgLSBkaWRSZWNlaXZlUmVzcG9uc2UgJXNcbiIsCisgICAgICAgICAgICAgICBwYXRo
U3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgIHJlc3BvbnNlRGVzY3JpcHRpb24uZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRHVtcFJl
bmRlclRyZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2JqZWN0
Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9ICpz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nKj4oZXZlbnRJbmZvKTsKKworICAgIGlmICghZG9uZSAm
JiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAg
ICAgICAgcHJpbnRmKCIlcyAtIGRpZEZpbmlzaExvYWRpbmdcbiIsCisgICAgICAgICAgICAgICAo
bV9kdW1wQXNzaWduZWRVcmxzLmNvbnRhaW5zKGlkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRV
cmxzLnRha2UoaWRlbnRpZmllcikuZGF0YSgpIDogIjx1bmtub3duPiIpKTsKK30KKwordm9pZCBE
dW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJv
ciA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9Mb2FkX0Vycm9yKj4oZXZlbnRJbmZvKTsKKworICAg
IGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiAl
c1xuIiwKKyAgICAgICAgICAgICAgIChtX2R1bXBBc3NpZ25lZFVybHMuY29udGFpbnMoZXJyb3It
PnJlc291cmNlX2lkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRVcmxzLnRha2UoZXJyb3ItPnJl
c291cmNlX2lkZW50aWZpZXIpLmRhdGEoKSA6ICI8dW5rbm93bj4iKSwKKyAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGVycm9yKS5kYXRhKCkpOworfQorCit2
b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
cXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo+
KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIG1fZHVtcEFzc2lnbmVkVXJscy5h
ZGQocmVxdWVzdC0+aWRlbnRpZmllciwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0
LT51cmwpKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZUNocm9tZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVl
Q2hyb21lLmgKaW5kZXggZTE1NmI0ZC4uODI3MzM2YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTMxLDkgKzMxLDExIEBACiAKICNp
bmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogY2xhc3MgRHVtcFJlbmRlclRyZWVDaHJvbWUgewogcHVibGljOgpAQCAtNjEsNiArNjMsNyBA
QCBwcml2YXRlOgogICAgIEV2YXMqIG1fZXZhczsKICAgICBPd25QdHI8R0NDb250cm9sbGVyPiBt
X2djQ29udHJvbGxlcjsKICAgICBWZWN0b3I8RXZhc19PYmplY3QqPiBtX2V4dHJhVmlld3M7Cisg
ICAgc3RhdGljIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgQ1N0cmluZz4gbV9kdW1wQXNzaWduZWRV
cmxzOwogCiAgICAgLy8gU21hcnQgY2FsbGJhY2tzCiAgICAgc3RhdGljIHZvaWQgb25XaW5kb3dP
YmplY3RDbGVhcmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKQEAgLTc3LDYgKzgwLDE0
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgb25Eb2N1bWVudExvYWRGaW5pc2hlZCh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiAKICAgICBzdGF0aWMgdm9pZCBvbldpbGxTZW5kUmVx
dWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvblJl
c3BvbnNlUmVjZWl2ZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGlj
IHZvaWQgb25SZXNvdXJjZUxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7
CisKKyAgICBzdGF0aWMgdm9pZCBvblJlc291cmNlTG9hZEZhaWxlZCh2b2lkKiwgRXZhc19PYmpl
Y3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiB9OwogCiAjZW5kaWYgLy8gRHVtcFJlbmRlclRyZWVD
aHJvbWVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134770</attachid>
            <date>2012-03-30 04:20:27 -0700</date>
            <delta_ts>2012-04-10 22:39:48 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>34482</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YmZlYzRkLi5hYmFkZTFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTItMDMt
MjkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRUZMJ3MgRFJUIG5vdyBzdXBwb3J0cyBMYXlvdXRUZXN0Q29udHJvbGxl
cidzIAorICAgICAgICBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCksIGFsbG93aW5nIHNldmVy
YWwgdGVzdHMgdG8gYmUgcmVtb3ZlZCBmcm9tCisgICAgICAgIHRoZSBza2lwIGxpc3QuIAorCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisKKzIwMTItMDMtMjkgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZMXVtEUlRd
IENhdGNoIHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE5MgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9Ta2lwcGVkCmluZGV4IDMxZWFkOTYuLmQ4MzA2ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkCkBAIC00NjUsNyArNDY1LDYgQEAgZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC1ub25leGlzdGVudC1maWxlLmh0bWwKIGZhc3QvY3NzL2Rpc2FibGVkLWF1dGhvci1zdHls
ZXMuaHRtbAogCiAjIEVGTCdzIExheW91dFRlc3RDb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVu
dCBkaXNhYmxlSW1hZ2VMb2FkaW5nCi1odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWljb24tbG9hZGluZy1vdmVycmlkZS5odG1sCiBodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fk
cy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sCiAKICMgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgZG9lcyBub3QgaW1wbGVtZW50IHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCkBAIC04
MzAsMTAgKzgyOSw2IEBAIGZhc3QvaGlzdG9yeS9iYWNrLWZvcndhcmQtcmVzZXQtYWZ0ZXItZXJy
b3ItaGFuZGxpbmcuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZW1wdHkt
dXJsLXBsdWdpbi1pbi1mcmFtZS5odG1sCiBmYXN0L2xvYWRlci9maWxlLXByb3RvY29sLWZyYWdt
ZW50Lmh0bWwKIAotIyBNaXNzaW5nIGRlbGVnYXRlczogdGVzdHMgZmFpbGluZyBiZWNhdXNlIG9m
IG1pc3NpbmcgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxsYmFja3MuCi1mYXN0L2xvYWRlci9t
YWluLWRvY3VtZW50LXVybC1mb3Itbm9uLWh0dHAtbG9hZHMuaHRtbAotaHR0cC90ZXN0cy9taXNj
L2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi0KICMgTWlzc2luZyBkZWxlZ2F0ZXM6IHRl
c3RzIGZhaWxpbmcgYmVjYXVzZSBvZiBtaXNzaW5nIHBvbGljeSBkZWxlZ2F0ZSBjYWxsYmFja3Mu
CiBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJhbWUuaHRtbAogZmFzdC9s
b2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29tZWQuaHRtbApAQCAtMTA3
Myw5ICsxMDY4LDYgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2Ut
ZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCiAjIFRlc3RzIHdoaWNoIGFsc28gZmFpbCBp
biBvdGhlciBwbGF0Zm9ybXMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi0jIFNob3VsZCBiZSBtb3ZlZCB0byBwbGF0Zm9ybS9tYWMgPHJkYXI6Ly81NjIxNDI1
PiAodmlhIHdpbi8sIGNocm9taXVtLyBhbmQgd2luY2Fpcm8vKQotaHR0cC90ZXN0cy9taXNjL3dp
bGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNrLmh0bWwKLQogIyBGYWlscyBhc3NlcnRp
b246IEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmhhc09uZVJlZigpKTsKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODAxCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS91
c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13b3JrZXJzLmh0bWwKQEAgLTEyNDMsNyArMTIz
NSw2IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC5odG1sCiBodHRwL3Rlc3Rz
L21pc2MvYWNpZDMuaHRtbAogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQt
dHdpY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1s
Ci1odHRwL3Rlc3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKIGh0dHAvdGVzdHMvbXVsdGlw
YXJ0L3BvbGljeS1pZ25vcmUtY3Jhc2gucGhwCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZlZWQtdXJs
cy1mcm9tLXJlbW90ZS5odG1sCiAKQEAgLTI1MDksMTggKzI1MDAsMTAgQEAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZWZlcnJlci1wb2xpY3ktaHR0cHMtb3JpZ2luLmh0bWwKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVmZXJyZXItcG9saWN5LXJlZGlyZWN0Lmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzLURFTklFRC14c2wtZG9jdW1lbnQtcmVkaXJlY3QueG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQteHNsLWV4dGVybmFsLWVudGl0eS1yZWRpcmVjdC54bWwKLWh0dHAvdGVzdHMv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1i
b2R5Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlv
bnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cuaHRtbAotaHR0cC90ZXN0
cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBh
cmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy5odG1sCi1odHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4t
YWxsb3cuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0
aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCiBodHRwL3Rlc3RzL3NzbC9yZWZlcmVy
LTMwMS5odG1sCiBodHRwL3Rlc3RzL3NzbC9yZWZlcmVyLTMwMy5odG1sCiBodHRwL3Rlc3RzL3Nz
bC92ZXJpZnktc3NsLWVuYWJsZWQucGhwCiBodHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1
cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sCi1odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0
LXNob3VsZC1jYW5jZWwtbG9hZC5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vz
cy1jb250cm9sLWJhc2ljLXdoaXRlbGlzdC1yZXF1ZXN0LWhlYWRlcnMuaHRtbAogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLW5vcGFzc3dvcmQuaHRtbAogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLW5vdXNlci5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXgg
MDVjYzIyYS4uNTA3MjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEy
LTAzLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAK
KyAgICAgICAgW0VGTF0gRFJUIHNob3VsZCBzdXBwb3J0IExheW91dFRlc3RDb250cm9sbGVyJ3Mg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVGTCdzIERSVCBub3cgc3VwcG9ydHMgTGF5b3V0VGVzdENvbnRy
b2xsZXIncyAKKyAgICAgICAgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpLCBhbGxvd2luZyBz
ZXZlcmFsIHRlc3RzIHRvIGJlIHJlbW92ZWQgZnJvbQorICAgICAgICB0aGUgc2tpcCBsaXN0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVu
dGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoK
KyAgICAgICAgKGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZCk6CisgICAgICAgIChld2tfZnJh
bWVfcmVzcG9uc2VfcmVjZWl2ZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQp
OgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQpOgorICAgICAgICAo
ZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2Fk
X2Vycm9yKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAgICogZXdrL2V3a19w
cml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisKKzIwMTItMDMtMjkgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZM
XVtEUlRdIENhdGNoIHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE5MgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAKaW5kZXggNmFmMWQzYS4uMTAwYjdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApA
QCAtMTYzLDE2ICsxNjMsMzQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWQKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CiAgICAgQ1N0cmluZyB1cmwg
PSBjb3JlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgREJHKCJSZXNvdXJjZSB1
cmw9JXMiLCB1cmwuZGF0YSgpKTsKKyAgICBDU3RyaW5nIGZpcnN0UGFydHkgPSBjb3JlUmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGh0
dHBNZXRob2QgPSBjb3JlUmVxdWVzdC5odHRwTWV0aG9kKCkudXRmOCgpOworICAgIERCRygiUmVz
b3VyY2UgdXJsPSVzLCBmaXJzdF9wYXJ0eT0lcywgaHR0cF9tZXRob2Q9JXMiLCB1cmwuZGF0YSgp
LCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCkpOwogCi0gICAgRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgMCwgaWRlbnRpZmllciwgbV9mcmFtZSB9Owor
ICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIDAsIDAsIGlkZW50
aWZpZXIsIG1fZnJhbWUgfTsKICAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCBvcmlnID0g
cmVxdWVzdDsgLyogSW5pdGlhbGl6ZSBjb25zdCBmaWVsZHMuICovCiAKICAgICBvcmlnLnVybCA9
IHJlcXVlc3QudXJsID0gdXJsLmRhdGEoKTsKKyAgICByZXF1ZXN0LmZpcnN0X3BhcnR5ID0gZmly
c3RQYXJ0eS5kYXRhKCk7CisgICAgcmVxdWVzdC5odHRwX21ldGhvZCA9IGh0dHBNZXRob2QuZGF0
YSgpOworCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
OworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSByZXNwb25zZUJ1ZmZlcjsKKyAgICBD
U3RyaW5nIHJlZGlyZWN0VXJsOwogCi0gICAgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKG1f
ZnJhbWUsICZyZXF1ZXN0KTsKKyAgICBpZiAoY29yZVJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAg
ICByZWRpcmVjdFJlc3BvbnNlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVkaXJlY3RVcmwg
PSBjb3JlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgICAgICByZXNwb25zZUJ1
ZmZlci51cmwgPSByZWRpcmVjdFVybC5kYXRhKCk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLnN0
YXR1c19jb2RlID0gY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgICAgIHJlZGly
ZWN0UmVzcG9uc2UgPSAmcmVzcG9uc2VCdWZmZXI7CisgICAgfQorICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9NZXNzYWdlcyBtZXNzYWdlcyA9IHsgJnJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UgfTsK
IAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCx3aWxsc2VuZCIsICZyZXF1ZXN0KTsKKyAgICBld2tfZnJhbWVfcmVxdWVzdF93aWxs
X3NlbmQobV9mcmFtZSwgJm1lc3NhZ2VzKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsICZtZXNzYWdlcyk7
CiAKICAgICBpZiAocmVxdWVzdC51cmwgIT0gb3JpZy51cmwpIHsKICAgICAgICAgY29yZVJlcXVl
c3Quc2V0VVJMKEtVUkwoS1VSTCgpLCByZXF1ZXN0LnVybCkpOwpAQCAtMTk0LDggKzIxMiw5IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgQ1N0cmluZyB1cmwgPSBjb3JlUmVxdWVzdC51
cmwoKS5zdHJpbmcoKS51dGY4KCk7CiAgICAgREJHKCJSZXNvdXJjZSB1cmw9JXMiLCB1cmwuZGF0
YSgpKTsKIAotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIGlk
ZW50aWZpZXIsIG1fZnJhbWUgfTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1
ZXN0ID0geyB1cmwuZGF0YSgpLCAwLCAwLCBpZGVudGlmaWVyLCBtX2ZyYW1lIH07CiAgICAgZXdr
X2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIobV9mcmFtZSwgJnJlcXVlc3QpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVz
dCxuZXciLCAmcmVxdWVzdCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnBvc3RQ
cm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQpAQCAtMjMyLDEzICsyNTEsMjEgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGNvcmVSZXNwb25zZSkKIHsKICAgICAvLyBVcGRh
dGUgb3VyIGtub3dsZWRnZSBvZiByZXF1ZXN0IHNvdXAgZmxhZ3MgLSBzb21lIGFyZSBvbmx5IHNl
dAogICAgIC8vIGFmdGVyIHRoZSByZXF1ZXN0IGlzIGRvbmUuCi0gICAgbG9hZGVyLT5yZXF1ZXN0
KCkuc2V0U291cE1lc3NhZ2VGbGFncyhyZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkpOworICAg
IGxvYWRlci0+cmVxdWVzdCgpLnNldFNvdXBNZXNzYWdlRmxhZ3MoY29yZVJlc3BvbnNlLnNvdXBN
ZXNzYWdlRmxhZ3MoKSk7CisKKyAgICBtX3Jlc3BvbnNlID0gY29yZVJlc3BvbnNlOworCisgICAg
RXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHJlc3BvbnNlID0geyAwLCBjb3JlUmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSB9OworICAgIENTdHJpbmcgdXJsID0gY29yZVJlc3BvbnNlLnVybCgp
LnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXNwb25zZS51cmwgPSB1cmwuZGF0YSgpOwogCi0gICAg
bV9yZXNwb25zZSA9IHJlc3BvbnNlOworICAgIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZlZCht
X2ZyYW1lLCAmcmVzcG9uc2UpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsICZyZXNwb25zZSk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQpAQCAtMjg3
LDcgKzMxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgLy8gaWYgbm90IGFjY2Vw
dE5hdmlnYXRpb25SZXF1ZXN0IC0gbG9vayBhdCBRdCAtPiBQb2xpY3lJZ25vcmU7CiAgICAgLy8g
RklYTUU6IGRvIHByb3BlciBjaGVjayBhbmQgb25seSByZXNldCBmb3JtcyB3aGVuIG9uIFBvbGlj
eUlnbm9yZQogICAgIGNoYXIqIHVybCA9IHN0cmR1cChyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVx
dWVzdCA9IHsgdXJsLCAwLCBtX2ZyYW1lIH07CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVl
c3QgcmVxdWVzdCA9IHsgdXJsLCAwLCAwLCAwLCBtX2ZyYW1lIH07CiAgICAgYm9vbCByZXQgPSBl
d2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihtX3ZpZXcsICZyZXF1ZXN0KTsKICAg
ICBmcmVlKHVybCk7CiAKQEAgLTcyMCwxMiArNzQ3LDMxIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKG1fZnJh
bWUsIGlkZW50aWZpZXIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92
aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsICZpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEV3a19GcmFtZV9Mb2Fk
X0Vycm9yIGVycm9yOworICAgIENTdHJpbmcgZXJyb3JEb21haW4gPSBlcnIuZG9tYWluKCkudXRm
OCgpOworICAgIENTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbiA9IGVyci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGZhaWxpbmdVcmwgPSBlcnIuZmFpbGluZ1VSTCgp
LnV0ZjgoKTsKKworICAgIERCRygiZXdrRnJhbWU9JXAsIHJlc291cmNlPSVsZCwgZXJyb3I9JXMg
KCVkLCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAorICAgICAgICBtX2ZyYW1l
LCBpZGVudGlmaWVyLCBlcnJvckRvbWFpbi5kYXRhKCksIGVyci5lcnJvckNvZGUoKSwgZXJyLmlz
Q2FuY2VsbGF0aW9uKCksCisgICAgICAgIGVycm9yRGVzY3JpcHRpb24uZGF0YSgpLCBmYWlsaW5n
VXJsLmRhdGEoKSk7CisKKyAgICBlcnJvci5jb2RlID0gZXJyLmVycm9yQ29kZSgpOworICAgIGVy
cm9yLmlzX2NhbmNlbGxhdGlvbiA9IGVyci5pc0NhbmNlbGxhdGlvbigpOworICAgIGVycm9yLmRv
bWFpbiA9IGVycm9yRG9tYWluLmRhdGEoKTsKKyAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9y
RGVzY3JpcHRpb24uZGF0YSgpOworICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGluZ1VybC5k
YXRhKCk7CisgICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAg
ZXJyb3IuZnJhbWUgPSBtX2ZyYW1lOworCisgICAgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFp
bGVkKG1fZnJhbWUsICZlcnJvcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJsb2FkLHJlc291cmNlLGZhaWxlZCIsICZlcnJvcik7CiB9CiAKIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGludCBsZW5ndGgpCkBAIC03ODAsOSArODI2LDEyIEBAIGVudW0gewogICAgIFdl
YktpdEVycm9ySmF2YVVuYXZhaWxhYmxlID0gMjAyLAogfTsKIAorY29uc3QgY2hhciogY29uc3Qg
TlNVUkxFcnJvckRvbWFpbiA9ICJOU1VSTEVycm9yRG9tYWluIjsKK2NvbnN0IGNoYXIqIGNvbnN0
IFdlYktpdEVycm9yRG9tYWluID0gIldlYktpdEVycm9yRG9tYWluIjsKKwogUmVzb3VyY2VFcnJv
ciBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIkVycm9yIiwgLTk5OSwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKE5TVVJMRXJy
b3JEb21haW4sIC05OTksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAiUmVxdWVzdCBjYW5jZWxsZWQiKTsKICAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlv
bih0cnVlKTsKICAgICByZXR1cm4gZXJyb3I7CkBAIC03OTAsMzEgKzgzOSwzMSBAQCBSZXNvdXJj
ZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlcwogCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpi
bG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKCJFcnJvciIsIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBv
cnQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2Vi
S2l0RXJyb3JEb21haW4sIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVlc3QgYmxv
Y2tlZCIpOwogfQogCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5ub3RT
aG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKCJFcnJvciIsIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJLaXRFcnJvckRv
bWFpbiwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2hvdyBVUkwiKTsKIH0KIAogUmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoIkVycm9yIiwgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5
Q2hhbmdlLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYktpdEVycm9yRG9tYWluLCBXZWJL
aXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIkZyYW1lIGxvYWQgaW50ZXJydXB0
ZWQgYnkgcG9saWN5IGNoYW5nZSIpOwogfQogCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiRXJyb3IiLCBXZWJLaXRFcnJv
ckNhbm5vdFNob3dNSU1FVHlwZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksCisgICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoTlNVUkxFcnJvckRvbWFpbiwgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlN
RVR5cGUsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICJDYW5ub3Qgc2hvdyBtaW1ldHlwZSIpOwogfQogCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIkVycm9yIiwgLTk5OCAvKiAj
IyMgKi8sIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KE5TVVJMRXJyb3JEb21haW4sIC05OTggLyogIyMjICovLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlsZSBkb2VzIG5vdCBleGlzdCIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IGMyMjlmODAuLjcwMmM1ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC0xMjA3LDE1ICsxMjA3LDE1IEBAIHZv
aWQgZXdrX2ZyYW1lX2NvcmVfZ29uZShFdmFzX09iamVjdCogZXdrRnJhbWUpCiAgKiBjaGFuZ2lu
ZyB2YWx1ZXMgaW4gQHBhcmFtIHJlcXVlc3QuCiAgKgogICogQHBhcmFtIGV3a0ZyYW1lIEZyYW1l
LgotICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCBkZXRhaWxzIHRoYXQgdXNlciBtYXkgb3ZlcnJp
ZGUuIFdoZW5ldmVyIHZhbHVlcyBvbgotICogdGhpcyBzdHJ1Y3QgY2hhbmdlcywgaXQgbXVzdCBi
ZSBwcm9wZXJseSBtYWxsb2MnZCBhcyBpdCB3aWxsIGJlIGZyZWVkCi0gKiBhZnRlcndhcmRzLgor
ICogQHBhcmFtIG1lc3NhZ2VzIE1lc3NhZ2VzIGNvbnRhaW5pbmcgdGhlIHJlcXVlc3QgZGV0YWls
cyB0aGF0IHVzZXIgbWF5IG92ZXJyaWRlIGFuZCBhCisgKiBwb3NzaWJsZSByZWRpcmVjdCByZXBv
bnNlLiBXaGVuZXZlciB2YWx1ZXMgb24gdGhpcyBzdHJ1Y3QgY2hhbmdlcywgaXQgbXVzdCBiZSBw
cm9wZXJseQorICogbWFsbG9jJ2QgYXMgaXQgd2lsbCBiZSBmcmVlZCBhZnRlcndhcmRzLgogICoK
ICAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiCiAgKi8KLXZvaWQg
ZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0Zy
YW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dp
bGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdl
cyogbWVzc2FnZXMpCiB7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tG
cmFtZSwgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCByZXF1ZXN0KTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVzb3VyY2UscmVxdWVzdCx3aWxs
c2VuZCIsIG1lc3NhZ2VzKTsKIH0KIAogLyoqCkBAIC0xMjM0LDYgKzEyMzQsMjAgQEAgdm9pZCBl
d2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCogZXdrRnJhbWUs
IGNvbnN0IEV3a19GcmFtZV8KIAogLyoqCiAgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhhdCBh
IHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCisgKgorICogQHBh
cmFtIGV3a0ZyYW1lIEZyYW1lLgorICogQHBhcmFtIHJlcXVlc3QgUmVzcG9uc2UgZGV0YWlscy4g
Tm8gY2hhbmdlcyBhcmUgYWxsb3dlZCB0byBmaWVsZHMuCisgKgorICogRW1pdHMgc2lnbmFsOiAi
cmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX3Jlc3BvbnNl
X3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3Bv
bnNlKiByZXNwb25zZSkKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3
a0ZyYW1lLCAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCByZXNwb25zZSk7Cit9CisKKy8q
KgorICogQGludGVybmFsCiAgKiBSZXBvcnRzIHRoYXQgZmlyc3QgbmF2aWdhdGlvbiBvY2N1cnJl
ZAogICoKICAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KQEAgLTEzNTgsNiArMTM3Miw3IEBAIHZv
aWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBj
aGFyKiBlcnJvckRvbWFpbiwgaW50CiAgICAgICAgIGJ1ZmZlci5pc19jYW5jZWxsYXRpb24gPSBp
c0NhbmNlbGxhdGlvbjsKICAgICAgICAgYnVmZmVyLmRlc2NyaXB0aW9uID0gZXJyb3JEZXNjcmlw
dGlvbjsKICAgICAgICAgYnVmZmVyLmZhaWxpbmdfdXJsID0gZmFpbGluZ1VybDsKKyAgICAgICAg
YnVmZmVyLnJlc291cmNlX2lkZW50aWZpZXIgPSAwOwogICAgICAgICBidWZmZXIuZnJhbWUgPSBl
d2tGcmFtZTsKICAgICAgICAgZXJyb3IgPSAmYnVmZmVyOwogICAgIH0KQEAgLTEzNjgsNiArMTM4
MywyOSBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludAogCiAvKioKICAqIEBpbnRlcm5hbAorICog
UmVwb3J0cyByZXNvdXJjZSBsb2FkIGZpbmlzaGVkLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImxv
YWQscmVzb3VyY2UsZmluaXNoZWQiIHdpdGggdGhlIHJlc291cmNlCisgKiByZXF1ZXN0IGlkZW50
aWZpZXIuCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQscmVzb3VyY2UsZmluaXNo
ZWQiLCAmaWRlbnRpZmllcik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHJl
c291cmNlIGxvYWQgZmFpbHVyZSwgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KKyAqCisgKiBFbWl0
cyBzaWduYWw6ICJsb2FkLHJlc291cmNlLGZhaWxlZCIgd2l0aCB0aGUgZXJyb3IgaW5mb3JtYXRp
b24uCisgKi8KK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQoreworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLHJlc291cmNlLGZhaWxlZCIs
IGVycm9yKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKICAqIFJlcG9ydHMgbG9hZCBmYWlsZWQg
d2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9y
IiB3aXRoIHBvaW50ZXIgdG8gRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCkBAIC0xMzg3LDYgKzE0MjUs
NyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29u
c3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcgogICAgIGVycm9yLmRvbWFpbiA9IGVycm9yRG9t
YWluOwogICAgIGVycm9yLmRlc2NyaXB0aW9uID0gZXJyb3JEZXNjcmlwdGlvbjsKICAgICBlcnJv
ci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7CisgICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmll
ciA9IDA7CiAgICAgZXJyb3IuZnJhbWUgPSBld2tGcmFtZTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxlcnJvciIsICZlcnJvcik7CiAgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmgKaW5kZXggM2UwNmZjMy4uYjJmNDcxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuaApAQCAtNDUsNiArNDUsMTAgQEAKICAqICAtICJsb2FkLGZpbmlzaGVkIiwgY29u
c3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqOiByZXBvcnRzIGxvYWQKICAqICAgIGZpbmlzaGVkIGFu
ZCBpdCBnaXZlcyBAYyBOVUxMIG9uIHN1Y2Nlc3Mgb3IgcG9pbnRlciB0bwogICogICAgc3RydWN0
dXJlIGRlZmluaW5nIHRoZSBlcnJvci4KKyAqICAtICJsb2FkLHJlc291cmNlLGZpbmlzaGVkIiwg
dW5zaWduZWQgbG9uZzogcmVwb3J0cyByZXNvdXJjZSBsb2FkIGZpbmlzaGVkIGFuZCBpdCBnaXZl
cworICogICAgaXRzIGlkZW50aWZpZXIuCisgKiAgLSAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCBF
d2tfRnJhbWVfTG9hZF9FcnJvcjogcmVwb3J0cyByZXNvdXJjZSBsb2FkIGZhaWx1cmUgYW5kIGl0
CisgKiAgICBnaXZlcyBhIHBvaW50ZXIgdG8gc3RydWN0dXJlIGRlZmluaW5nIHRoZSBlcnJvciBh
cyBhbiBhcmd1bWVudC4KICAqICAtICJsb2FkLGZpcnN0bGF5b3V0LGZpbmlzaGVkIiwgdm9pZDog
ZnJhbWUgZmluaXNoZWQgZmlyc3QgbGF5b3V0LgogICogIC0gImxvYWQsbm9uZW1wdHlsYXlvdXQs
ZmluaXNoZWQiLCB2b2lkOiBmcmFtZSBmaW5pc2hlZCBmaXJzdAogICogICAgbm9uLWVtcHR5IGxh
eW91dC4KQEAgLTU3LDggKzYxLDEwIEBACiAgKiAgLSAibmF2aWdhdGlvbixmaXJzdCIsIHZvaWQ6
IGZpcnN0IG5hdmlnYXRpb24gd2FzIG9jY3VycmVkLgogICogIC0gInJlc291cmNlLHJlcXVlc3Qs
bmV3IiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiByZXBvcnRzIHRoYXQKICAqICAgIHRo
ZXJlJ3MgYSBuZXcgcmVzb3VyY2UgcmVxdWVzdC4KLSAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LHdp
bGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291cmNlIHdpbGwKKyAq
ICAtICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3Nh
Z2VzKjogYSByZXNvdXJjZSB3aWxsCiAgKiAgICBiZSByZXF1ZXN0ZWQuCisgKiAgLSAicmVzb3Vy
Y2UscmVzcG9uc2UscmVjZWl2ZWQiLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqOiByZXBv
cnRzIHRoYXQgYSByZXNwb25zZQorICogICAgdG8gYSByZXNvdXJjZSByZXF1ZXN0IHdhcyByZWNl
aXZlZC4KICAqICAtICJzdGF0ZSxzYXZlIiwgdm9pZDogZnJhbWUncyBzdGF0ZSB3aWxsIGJlIHNh
dmVkIGFzIGEgaGlzdG9yeSBpdGVtLgogICogIC0gInRpdGxlLGNoYW5nZWQiLCBjb25zdCBjaGFy
KjogdGl0bGUgb2YgdGhlIG1haW4gZnJhbWUgd2FzIGNoYW5nZWQuCiAgKiAgLSAidXJpLGNoYW5n
ZWQiLCBjb25zdCBjaGFyKjogdXJpIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgpAQCAt
OTEsMjQgKzk3LDQ5IEBAIHN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgewogICAgIGNvbnN0
IGNoYXIgKmRvbWFpbjsgLyoqPCBlcnJvciBkb21haW4gbmFtZSAqLwogICAgIGNvbnN0IGNoYXIg
KmRlc2NyaXB0aW9uOyAvKio8IGVycm9yIGRlc2NyaXB0aW9uIGFscmVhZHkgbG9jYWxpemVkICov
CiAgICAgY29uc3QgY2hhciAqZmFpbGluZ191cmw7IC8qKjwgdGhlIHVybCB0aGF0IGZhaWxlZCB0
byBsb2FkICovCisgICAgdW5zaWduZWQgbG9uZyByZXNvdXJjZV9pZGVudGlmaWVyOyAvKio8IGlk
ZW50aWZpZXIgb2YgcmVzb3VyY2UgKi8KICAgICBFdmFzX09iamVjdCAqZnJhbWU7IC8qKjwgZnJh
bWUgd2hlcmUgdGhlIGZhaWx1cmUgaGFwcGVuZWQgKi8KIH07CiAKIC8vLyBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QuCiB0eXBlZGVmIHN0cnVjdCBf
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Q7CisK
IC8qKgotICogQGJyaWVmICAgU3RydWN0dXJlIHVzZWQgdG8gcmVwb3J0IHJlc291cmNlIHJlcXVl
c3QuCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVz
b3VyY2UgcmVxdWVzdC4KICAqCi0gKiBEZXRhaWxzIGdpdmVuIGJlZm9yZSBhIHJlc291cmNlIGlz
IGxvYWRlZCBvbiBhIGdpdmVuIGZyYW1lLiBJdCdzIHVzZWQgYnkKLSAqIGV3a19mcmFtZV9yZXF1
ZXN0X3dpbGxfc2VuZCgpIHRvIGluZm9ybSB0aGUgZGV0YWlscyBvZiBhIHRvLWJlLWxvYWRlZAot
ICogcmVzb3VyY2UsIGFsbG93aW5nIHRoZW0gdG8gYmUgb3ZlcnJpZGRlbi4KKyAqIERldGFpbHMg
Z2l2ZW4gYmVmb3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVkIG9uIGEgZ2l2ZW4gZnJhbWUuIEl0J3Mg
dXNlZCBpbgorICogRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzIHRvIGluZm9ybSBhYm91dCB0
aGUgZGV0YWlscyBvZiBhIHJlc291cmNlIHJlcXVlc3QuCiAgKi8KIHN0cnVjdCBfRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3QgewogICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1cmwgb2YgdGhl
IHJlc291cmNlICovCisgICAgY29uc3QgY2hhciAqZmlyc3RfcGFydHk7IC8qKjwgZmlyc3QgcGFy
dHkgZm9yIGNvb2tpZXMsIGNhbiBub3QgYmUgY2hhbmdlZCAgKi8KKyAgICBjb25zdCBjaGFyICpo
dHRwX21ldGhvZDsgLyoqPCBodHRwIG1ldGhvZCwgY2FuIG5vdCBiZSBjaGFuZ2VkICAqLwogICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsgLyoqPCBpZGVudGlmaWVyIG9mIHJlc291
cmNlLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KICAgICBFdmFzX09iamVjdCAqZnJhbWU7IC8qKjwg
ZnJhbWUgd2hlcmUgdGhlIHJlc291cmNlIGlzIHJlcXVlc3RlZCAqLwogfTsKIAorLy8vIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UuCit0eXBlZGVm
IHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIEV3a19GcmFtZV9SZXNvdXJjZV9S
ZXNwb25zZTsKKworLyoqCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxz
IGFib3V0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSByZXF1ZXN0LgorICoKKyAqIERldGFpbHMg
Z2l2ZW4gaW4gdGhlIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgcmVxdWVzdC4gSXQncyB1c2VkIGJ5
CisgKiBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoKSB0byBpbmZvcm0gYWJvdXQgdGhlIGRl
dGFpbHMgb2YgYSByZXNwb25zZS4KKyAqLworc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVz
cG9uc2UgeworICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1cmwgb2YgdGhlIHJlc291cmNlICov
CisgICAgaW50IHN0YXR1c19jb2RlOyAvKio8IGh0dHAgc3RhdHVzIGNvZGUgKi8KK307CisKKy8v
LyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzLgor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyBFd2tfRnJhbWVfUmVz
b3VyY2VfTWVzc2FnZXM7CisKK3N0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzIHsK
KyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVxdWVzdDsgLyoqPCByZXNvdXJjZSBy
ZXF1ZXN0ICovCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlICpyZWRpcmVjdF9yZXNw
b25zZTsgLyoqPCByZWRpcmVjdCByZXNwb25zZSwgY2FuIG5vdCBiZSBjaGFuZ2VkICovCit9Owor
CiAvLy8gRW51bSBjb250YWluaW5nIGhpdCB0ZXN0IGRhdGEgdHlwZXMKIHR5cGVkZWYgZW51bSB7
CiAgICAgRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0RPQ1VNRU5UID0gMSA8PCAxLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCA5NmU0Nzk1Li4wOGY3YmExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApAQCAtMjA4LDExICsyMDgsMTQgQEAgdm9pZCBld2tf
ZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwog
dm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9maW5pc2hlZChFdmFzX09i
amVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChF
dmFzX09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFz
X09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2NyaXB0aW9uLCBjb25z
dCBjaGFyKiBmYWlsaW5nVXJsKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwordm9p
ZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBF
d2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9lcnJvcihF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2NyaXB0aW9uLCBj
b25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJvZ3Jlc3NfY2hh
bmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogCi12b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dp
bGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
KiByZXF1ZXN0KTsKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKiBtZXNzYWdlcyk7CiB2b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpOwordm9pZCBld2tf
ZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKTsKIHZvaWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVf
c2F2ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKTsK
IAogdm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmlyc3RfbmF2aWdhdGlvbihFdmFzX09iamVj
dCogZXdrRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCAwZDEwNzA3Li4wM2Q3
MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtNTQsNiArNTQsMTAgQEAKICAqICAt
ICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9ncmVzcyBpcyBjaGFuZ2VkIChvdmVy
YWxsIHZhbHVlCiAgKiAgICBmcm9tIDAuMCB0byAxLjAsIGNvbm5lY3QgdG8gaW5kaXZpZHVhbCBm
cmFtZXMgZm9yIGZpbmUgZ3JhaW5lZCkuCiAgKiAgLSAibG9hZCxwcm92aXNpb25hbCIsIHZvaWQ6
IHZpZXcgc3RhcnRlZCBwcm92aXNpb25hbCBsb2FkLgorICogIC0gImxvYWQscmVzb3VyY2UsZmlu
aXNoZWQiLCB1bnNpZ25lZCBsb25nOiByZXBvcnRzIHJlc291cmNlIGxvYWQgZmluaXNoZWQgYW5k
IGl0IGdpdmVzCisgKiAgICBpdHMgaWRlbnRpZmllci4KKyAqICAtICJsb2FkLHJlc291cmNlLGZh
aWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yOiByZXBvcnRzIHJlc291cmNlIGxvYWQgZmFpbHVy
ZSBhbmQgaXQKKyAqICAgIGdpdmVzIGEgcG9pbnRlciB0byBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhl
IGVycm9yIGFzIGFuIGFyZ3VtZW50LgogICogIC0gImxvYWQsc3RhcnRlZCIsIHZvaWQ6IGZyYW1l
IHN0YXJ0ZWQgbG9hZGluZyB0aGUgZG9jdW1lbnQuCiAgKiAgLSAibWVudWJhcix2aXNpYmxlLGdl
dCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9UUlVFIGlmIG1lbnViYXIgaXMKICAq
ICAgIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KQEAgLTYxLDggKzY1LDExIEBA
CiAgKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFp
bmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCiAgKiAg
LSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMg
aGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNvbnRlbnQuCiAgKiAgLSAicmVhZHkiLCB2b2lkOiBw
YWdlIGlzIGZ1bGx5IGxvYWRlZC4KLSAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwg
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291cmNlIHdpbGwKLSAqICAgIGJlIHJl
cXVlc3RlZC4KKyAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0CisgKiAgICB0aGVyZSdzIGEgbmV3IHJlc291cmNlIHJl
cXVlc3QuCisgKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNv
dXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2lsbCBiZSByZXF1ZXN0ZWQuCisgKiAgICAgYW5k
IHRoZSBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KKyAqICAtICJyZXNvdXJjZSxyZXNwb25z
ZSxyZWNlaXZlZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo6IHRoZSBuZXR3b3JrIHJl
c3BvbnNlIGZvciBhIHJlc291cmNlLgogICogIC0gInNjcm9sbGJhcnMsdmlzaWJsZSxnZXQiLCBF
aW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFfVFJVRSBpZiBzY3JvbGxiYXJzCiAgKiAgICBh
cmUgdmlzaWJsZTsgQGMgRUlOQV9GQUxTRSwgb3RoZXJ3aXNlLgogICogIC0gInNjcm9sbGJhcnMs
dmlzaWJsZSxzZXQiLCBFaW5hX0Jvb2w6IHNldHMgc2Nyb2xsYmFycyB2aXNpYmlsaXR5LgpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZhN2Y0ODUu
LjE5MWFjMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwyOSBAQAogMjAxMi0wMy0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgogCisgICAgICAgIFtFRkxdIERSVCBzaG91bGQgc3VwcG9y
dCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4OTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFRkwncyBEUlQgbm93
IHN1cHBvcnRzIExheW91dFRlc3RDb250cm9sbGVyJ3MKKyAgICAgICAgZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcygpLCBhbGxvd2luZyBzZXZlcmFsIHRlc3RzIHRvIGJlIHJlbW92ZWQgZnJvbQor
ICAgICAgICB0aGUgc2tpcCBsaXN0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1
bXBSZW5kZXJUcmVlQ2hyb21lLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpj
cmVhdGVWaWV3KToKKyAgICAgICAgKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAg
ICAodXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKGRlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNwb25zZVJl
Y2VpdmVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc291cmNlTG9hZEZp
bmlzaGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc291cmNlTG9hZEZh
aWxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25OZXdSZXNvdXJjZVJlcXVl
c3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5o
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWUpOgorCisyMDEyLTAzLTI5ICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKICAgICAgICAgW0VGTF1b
RFJUXSBDYXRjaCB0aGUgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiIHNpZ25hbAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxOTIKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKaW5kZXgg
NmRkYjI4NC4uZjIzMzM1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1
bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVt
cFJlbmRlclRyZWVDaHJvbWUuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCitIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIENTdHJpbmc+IER1bXBSZW5kZXJU
cmVlQ2hyb21lOjptX2R1bXBBc3NpZ25lZFVybHM7CisKIFBhc3NPd25QdHI8RHVtcFJlbmRlclRy
ZWVDaHJvbWU+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGUoRXZhcyogZXZhcykKIHsKICAg
ICBPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IGNocm9tZSA9IGFkb3B0UHRyKG5ldyBEdW1w
UmVuZGVyVHJlZUNocm9tZShldmFzKSk7CkBAIC05NSw3ICs5NywxMSBAQCBFdmFzX09iamVjdCog
RHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcoKSBjb25zdAogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAid2luZG93LG9iamVjdCxjbGVhcmVkIiwgb25XaW5k
b3dPYmplY3RDbGVhcmVkLCBtX2djQ29udHJvbGxlci5nZXQoKSk7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJzdGF0dXNiYXIsdGV4dCxzZXQiLCBvblN0YXR1c2Jh
clRleHRTZXQsIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAi
bG9hZCxkb2N1bWVudCxmaW5pc2hlZCIsIG9uRG9jdW1lbnRMb2FkRmluaXNoZWQsIDApOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVzb3VyY2UscmVxdWVzdCxu
ZXciLCBvbk5ld1Jlc291cmNlUmVxdWVzdCwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgb25XaWxsU2VuZFJl
cXVlc3QsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVz
b3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBvblJlc3BvbnNlUmVjZWl2ZWQsIDApOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hl
ZCIsIG9uUmVzb3VyY2VMb2FkRmluaXNoZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh2aWV3LCAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCBvblJlc291cmNlTG9hZEZh
aWxlZCwgMCk7CiAKICAgICByZXR1cm4gdmlldzsKIH0KQEAgLTI4NywyNSArMjkzLDE1MiBAQCB2
b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkRvY3VtZW50TG9hZEZpbmlzaGVkKHZvaWQqLCBF
dmFzX09iamVjdCosIHZvaWQqIGV2ZQogICAgIH0KIH0KIAorc3RhdGljIENTdHJpbmcgcGF0aFN1
aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFyKiB1cmlTdHJpbmcpCit7CisgICAgaWYgKCF1
cmlTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBLVVJMIHVyaSA9IEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcpOworCisgICAgaWYgKCF1cmkuaXNMb2NhbEZp
bGUoKSkKKyAgICAgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS51dGY4KCk7CisKKyAgICBTdHJpbmcg
cGF0aFN0cmluZyA9IHVyaS5wYXRoKCk7CisgICAgc2l6ZV90IGluZGV4QmFzZU5hbWUgPSBwYXRo
U3RyaW5nLnJldmVyc2VGaW5kKCcvJyk7CisgICAgU3RyaW5nIGJhc2VOYW1lOworICAgIGlmIChp
bmRleEJhc2VOYW1lID09IG5vdEZvdW5kKQorICAgICAgICBiYXNlTmFtZSA9IHBhdGhTdHJpbmc7
CisgICAgZWxzZQorICAgICAgICBiYXNlTmFtZSA9IHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4
QmFzZU5hbWUgKyAxKTsKKworICAgIFN0cmluZyBkaXJOYW1lOworICAgIGlmIChpbmRleEJhc2VO
YW1lICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHNpemVfdCBpbmRleERpck5hbWUgPSBwYXRoU3Ry
aW5nLnJldmVyc2VGaW5kKCcvJywgaW5kZXhCYXNlTmFtZSAtIDEpOworICAgICAgICBpZiAoaW5k
ZXhEaXJOYW1lICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgZGlyTmFtZSA9IHBhdGhTdHJpbmcu
c3Vic3RyaW5nKGluZGV4RGlyTmFtZSArIDEsIGluZGV4QmFzZU5hbWUgLSBpbmRleERpck5hbWUg
LSAxKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcmV0ID0gZGlyTmFtZSArICIvIiArIGJhc2VOYW1l
OworICAgIHJldHVybiByZXQudXRmOCgpOworfQorCitzdGF0aWMgQ1N0cmluZyB1cmxTdWl0YWJs
ZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5nKQoreworICAgIEtVUkwgdXJpID0g
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7CisgICAgaWYgKCF1cmkuaXNMb2NhbEZp
bGUoKSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcodXJpU3RyaW5nKTsKKworICAgIHVuc2lnbmVk
IHN0YXJ0SW5kZXggPSB1cmkucGF0aEFmdGVyTGFzdFNsYXNoKCk7CisgICAgcmV0dXJuIHVyaS5z
dHJpbmcoKS5zdWJzdHJpbmcoc3RhcnRJbmRleCkudXRmOCgpOworfQorCitzdGF0aWMgQ1N0cmlu
ZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChFd2tfRnJhbWVfUmVzb3VyY2VfUmVx
dWVzdCogcmVxdWVzdCkKK3sKKyAgICBTdHJpbmcgcmV0ID0gIjxOU1VSTFJlcXVlc3QgVVJMICI7
CisgICAgcmV0ICs9IHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdC0+dXJsKS5kYXRh
KCk7CisgICAgcmV0ICs9ICIsIG1haW4gZG9jdW1lbnQgVVJMICI7CisgICAgcmV0ICs9IHVybFN1
aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT5maXJzdF9wYXJ0eSkuZGF0YSgpOworICAgIHJl
dCArPSAiLCBodHRwIG1ldGhvZCAiOworICAgIHJldCArPSByZXF1ZXN0LT5odHRwX21ldGhvZCA/
IFN0cmluZyhyZXF1ZXN0LT5odHRwX21ldGhvZCkgOiAiKG5vbmUpIjsKKyAgICByZXQgKz0gIj4i
OworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9CisKK3N0YXRpYyBDU3RyaW5nIGRlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25z
ZSogcmVzcG9uc2UpCit7CisgICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIENTdHJp
bmcoIihudWxsKSIpOworCisgICAgU3RyaW5nIHJldCA9ICI8TlNVUkxSZXNwb25zZSAiOworICAg
IHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKTsK
KyAgICByZXQgKz0gIiwgaHR0cCBzdGF0dXMgY29kZSAiOworICAgIHJldCArPSBTdHJpbmc6Om51
bWJlcihyZXNwb25zZS0+c3RhdHVzX2NvZGUpOworICAgIHJldCArPSAiPiI7CisKKyAgICByZXR1
cm4gcmV0LnV0ZjgoKTsKK30KKworc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQoreworICAgIFN0cmluZyBy
ZXQgPSAiPE5TRXJyb3IgZG9tYWluICI7CisgICAgcmV0ICs9IGVycm9yLT5kb21haW47CisgICAg
cmV0ICs9ICIsIGNvZGUgIjsKKyAgICByZXQgKz0gU3RyaW5nOjpudW1iZXIoZXJyb3ItPmNvZGUp
OworICAgIGlmIChlcnJvci0+ZmFpbGluZ191cmwgJiYgKmVycm9yLT5mYWlsaW5nX3VybCAhPSAn
XDAnKSB7CisgICAgICAgIHJldCArPSAiLCBmYWlsaW5nIFVSTCBcIiI7CisgICAgICAgIHJldCAr
PSBlcnJvci0+ZmFpbGluZ191cmw7CisgICAgICAgIHJldCArPSAiXCIiOworICAgIH0KKyAgICBy
ZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9CisKIHZvaWQgRHVtcFJlbmRl
clRyZWVDaHJvbWU6Om9uV2lsbFNlbmRSZXF1ZXN0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQq
IGV2ZW50SW5mbykKIHsKLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCA9
IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0Kj4oZXZlbnRJbmZvKTsKKyAg
ICBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqIG1lc3NhZ2VzID0gc3RhdGljX2Nhc3Q8RXdr
X0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKj4oZXZlbnRJbmZvKTsKKworICAgIGlmICghZG9uZSAm
JiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAg
ICAgICAgICAgIHByaW50ZigiJXMgLSB3aWxsU2VuZFJlcXVlc3QgJXMgcmVkaXJlY3RSZXNwb25z
ZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1l
c3NhZ2VzLT5yZXF1ZXN0LT51cmwpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICBkZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtZXNzYWdlcy0+cmVxdWVzdCkuZGF0YSgpLAorICAg
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1lc3NhZ2Vz
LT5yZWRpcmVjdF9yZXNwb25zZSkuZGF0YSgpKTsKIAogICAgIGlmICghZG9uZSAmJiBnTGF5b3V0
VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkpIHsKICAgICAgICAg
Ly8gQXMgcmVxdWVzdGVkIGJ5IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciwgZG9uJ3QgcGVyZm9y
bSB0aGUgcmVxdWVzdC4KLSAgICAgICAgcmVxdWVzdC0+dXJsID0gMDsKKyAgICAgICAgbWVzc2Fn
ZXMtPnJlcXVlc3QtPnVybCA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBLVVJM
IHVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXF1ZXN0LT51cmwpOworICAgIEtVUkwgdXJs
ID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwpOwogCiAgICAg
aWYgKHVybC5pc1ZhbGlkKCkKICAgICAgICAgJiYgdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KQogICAgICAgICAmJiB1cmwuaG9zdCgpICE9ICIxMjcuMC4wLjEiCiAgICAgICAgICYmIHVybC5o
b3N0KCkgIT0gIjI1NS4yNTUuMjU1LjI1NSIKICAgICAgICAgJiYgdXJsLmhvc3QoKS5sb3dlcigp
ICE9ICJsb2NhbGhvc3QiKSB7Ci0gICAgICAgIHByaW50ZigiQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMICVzXG4iLCByZXF1ZXN0LT51cmwpOwotICAgICAgICByZXF1ZXN0LT51cmwgPSAw
OworICAgICAgICBwcmludGYoIkJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCAlc1xuIiwg
bWVzc2FnZXMtPnJlcXVlc3QtPnVybCk7CisgICAgICAgIG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwg
PSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvblJlc3BvbnNlUmVjZWl2ZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJ
bmZvKQoreworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UgPSBzdGF0
aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqPihldmVudEluZm8pOworCisgICAg
aWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxi
YWNrcygpKSB7CisgICAgICAgIENTdHJpbmcgcmVzcG9uc2VEZXNjcmlwdGlvbihkZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXNwb25zZSkpOworICAgICAgICBwcmludGYoIiVzIC0g
ZGlkUmVjZWl2ZVJlc3BvbnNlICVzXG4iLAorICAgICAgICAgICAgICAgcGF0aFN1aXRhYmxlRm9y
VGVzdFJlc3VsdChyZXNwb25zZS0+dXJsKS5kYXRhKCksCisgICAgICAgICAgICAgICByZXNwb25z
ZURlc2NyaXB0aW9uLmRhdGEoKSk7CisgICAgfQorfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvblJlc291cmNlTG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2
ZW50SW5mbykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSAqc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyo+KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50
ZigiJXMgLSBkaWRGaW5pc2hMb2FkaW5nXG4iLAorICAgICAgICAgICAgICAgKG1fZHVtcEFzc2ln
bmVkVXJscy5jb250YWlucyhpZGVudGlmaWVyKSA/IG1fZHVtcEFzc2lnbmVkVXJscy50YWtlKGlk
ZW50aWZpZXIpLmRhdGEoKSA6ICI8dW5rbm93bj4iKSk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2FkRmFpbGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQq
IGV2ZW50SW5mbykKK3sKKyAgICBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IgPSBzdGF0aWNf
Y2FzdDxFd2tfRnJhbWVfTG9hZF9FcnJvcio+KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUg
JiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisg
ICAgICAgIHByaW50ZigiJXMgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogJXNcbiIsCisgICAg
ICAgICAgICAgICAobV9kdW1wQXNzaWduZWRVcmxzLmNvbnRhaW5zKGVycm9yLT5yZXNvdXJjZV9p
ZGVudGlmaWVyKSA/IG1fZHVtcEFzc2lnbmVkVXJscy50YWtlKGVycm9yLT5yZXNvdXJjZV9pZGVu
dGlmaWVyKS5kYXRhKCkgOiAiPHVua25vd24+IiksCisgICAgICAgICAgICAgICBkZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChlcnJvcikuZGF0YSgpKTsKK30KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6b25OZXdSZXNvdXJjZVJlcXVlc3Qodm9pZCosIEV2YXNfT2JqZWN0Kiwg
dm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1
ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqPihldmVudEluZm8p
OworCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNl
TG9hZENhbGxiYWNrcygpKQorICAgICAgICBtX2R1bXBBc3NpZ25lZFVybHMuYWRkKHJlcXVlc3Qt
PmlkZW50aWZpZXIsIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdC0+dXJsKSk7Cit9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJv
bWUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5oCmlu
ZGV4IGUxNTZiNGQuLjgyNzMzNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9EdW1wUmVuZGVyVHJlZUNocm9tZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9E
dW1wUmVuZGVyVHJlZUNocm9tZS5oCkBAIC0zMSw5ICszMSwxMSBAQAogCiAjaW5jbHVkZSA8RWlu
YS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIGNsYXNzIER1
bXBSZW5kZXJUcmVlQ2hyb21lIHsKIHB1YmxpYzoKQEAgLTYxLDYgKzYzLDcgQEAgcHJpdmF0ZToK
ICAgICBFdmFzKiBtX2V2YXM7CiAgICAgT3duUHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xs
ZXI7CiAgICAgVmVjdG9yPEV2YXNfT2JqZWN0Kj4gbV9leHRyYVZpZXdzOworICAgIHN0YXRpYyBI
YXNoTWFwPHVuc2lnbmVkIGxvbmcsIENTdHJpbmc+IG1fZHVtcEFzc2lnbmVkVXJsczsKIAogICAg
IC8vIFNtYXJ0IGNhbGxiYWNrcwogICAgIHN0YXRpYyB2b2lkIG9uV2luZG93T2JqZWN0Q2xlYXJl
ZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CkBAIC03Nyw2ICs4MCwxNCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIG9uRG9jdW1lbnRMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCopOwogCiAgICAgc3RhdGljIHZvaWQgb25XaWxsU2VuZFJlcXVlc3Qodm9pZCos
IEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGljIHZvaWQgb25SZXNwb25zZVJlY2Vp
dmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9uUmVz
b3VyY2VMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3Rh
dGljIHZvaWQgb25SZXNvdXJjZUxvYWRGYWlsZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCop
OworCisgICAgc3RhdGljIHZvaWQgb25OZXdSZXNvdXJjZVJlcXVlc3Qodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCopOwogfTsKIAogI2VuZGlmIC8vIER1bXBSZW5kZXJUcmVlQ2hyb21lX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136623</attachid>
            <date>2012-04-10 22:39:48 -0700</date>
            <delta_ts>2012-04-17 00:40:42 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>35792</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MTcxZmRkLi42MGQwMzI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzIHdoaWNoIGRlcGVuZCBvbiBFRkwncyBEdW1wUmVu
ZGVyVHJlZSBzdXBwb3J0IGZvcgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSwgbm93IHRoYXQgaXQgaXMKKyAgICAgICAgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwogMjAxMi0wNC0wNSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtF
RkxdIERSVCBzaG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIHdpbGxTZW5kUmVx
dWVzdFJldHVybnNOdWxsKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggZDYyYWQ5OC4u
MmRjZTQyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTc2MiwxMCArNzYyLDYgQEAg
ZmFzdC9oaXN0b3J5L2JhY2stZm9yd2FyZC1yZXNldC1hZnRlci1lcnJvci1oYW5kbGluZy5odG1s
CiBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9lbXB0eS11cmwtcGx1Z2luLWluLWZy
YW1lLmh0bWwKIGZhc3QvbG9hZGVyL2ZpbGUtcHJvdG9jb2wtZnJhZ21lbnQuaHRtbAogCi0jIE1p
c3NpbmcgZGVsZWdhdGVzOiB0ZXN0cyBmYWlsaW5nIGJlY2F1c2Ugb2YgbWlzc2luZyByZXNvdXJj
ZSBsb2FkIGRlbGVnYXRlIGNhbGxiYWNrcy4KLWZhc3QvbG9hZGVyL21haW4tZG9jdW1lbnQtdXJs
LWZvci1ub24taHR0cC1sb2Fkcy5odG1sCi1odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1i
ZWZvcmVsb2FkLmh0bWwKLQogIyBNaXNzaW5nIGRlbGVnYXRlczogdGVzdHMgZmFpbGluZyBiZWNh
dXNlIG9mIG1pc3NpbmcgcG9saWN5IGRlbGVnYXRlIGNhbGxiYWNrcy4KIGZhc3QvbG9hZGVyL29u
bG9hZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS5odG1sCiBmYXN0L2xvYWRlci9wb2xpY3ktZGVs
ZWdhdGUtYWN0aW9uLWhpdC10ZXN0LXpvb21lZC5odG1sCkBAIC0xMDEwLDkgKzEwMDYsNiBAQCBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lv
bnMtaGVhZGVyLmh0bWwKICMgVGVzdHMgd2hpY2ggYWxzbyBmYWlsIGluIG90aGVyIHBsYXRmb3Jt
cwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSMgU2hvdWxk
IGJlIG1vdmVkIHRvIHBsYXRmb3JtL21hYyA8cmRhcjovLzU2MjE0MjU+ICh2aWEgd2luLywgY2hy
b21pdW0vIGFuZCB3aW5jYWlyby8pCi1odHRwL3Rlc3RzL21pc2Mvd2lsbENhY2hlUmVzcG9uc2Ut
ZGVsZWdhdGUtY2FsbGJhY2suaHRtbAotCiAjIEZhaWxzIGFzc2VydGlvbjogQVNTRVJUKG1fd29y
a2VyQ29udGV4dC0+aGFzT25lUmVmKCkpOwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTk4MDEKIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3VzZS1zYW1lLWRhdGFiYXNl
LWluLXBhZ2UtYW5kLXdvcmtlcnMuaHRtbApAQCAtMTE3Niw3ICsxMTY5LDYgQEAgaHR0cC90ZXN0
cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9hY2lkMy5odG1s
CiBodHRwL3Rlc3RzL21pc2MvcG9saWN5LWRlbGVnYXRlLWNhbGxlZC10d2ljZS5odG1sCiBodHRw
L3Rlc3RzL21pc2MvcmVkaXJlY3QtdG8tZXh0ZXJuYWwtdXJsLmh0bWwKLWh0dHAvdGVzdHMvbWlz
Yy93aW5kb3ctZG90LXN0b3AuaHRtbAogaHR0cC90ZXN0cy9tdWx0aXBhcnQvcG9saWN5LWlnbm9y
ZS1jcmFzaC5waHAKIGh0dHAvdGVzdHMvc2VjdXJpdHkvZmVlZC11cmxzLWZyb20tcmVtb3RlLmh0
bWwKIApAQCAtMjQ0MCwxOCArMjQzMiwxMCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3JlZmVycmVy
LXBvbGljeS1odHRwcy1vcmlnaW4uaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9yZWZlcnJlci1w
b2xpY3ktcmVkaXJlY3QuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1k
b2N1bWVudC1yZWRpcmVjdC54bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wt
ZXh0ZXJuYWwtZW50aXR5LXJlZGlyZWN0LnhtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVP
cHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWluLWJvZHkuaHRtbAotaHR0cC90
ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFn
LXBhcmVudC1zYW1lLW9yaWdpbi1hbGxvdy5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2lu
LWRlbnkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0
aW9ucy1kZW55LW1ldGEtdGFnLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9u
cy94LWZyYW1lLW9wdGlvbnMtZGVueS5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLXBhcmVudC1zYW1lLW9yaWdpbi1hbGxvdy5odG1sCi1odHRw
L3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLXBhcmVudC1zYW1l
LW9yaWdpbi1kZW55Lmh0bWwKIGh0dHAvdGVzdHMvc3NsL3JlZmVyZXItMzAxLmh0bWwKIGh0dHAv
dGVzdHMvc3NsL3JlZmVyZXItMzAzLmh0bWwKIGh0dHAvdGVzdHMvc3NsL3ZlcmlmeS1zc2wtZW5h
YmxlZC5waHAKIGh0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0
aW9uLmh0bWwKLWh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWJvcnQtc2hvdWxkLWNhbmNlbC1s
b2FkLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMt
d2hpdGVsaXN0LXJlcXVlc3QtaGVhZGVycy5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2Jhc2ljLWF1dGgtbm9wYXNzd29yZC5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jh
c2ljLWF1dGgtbm91c2VyLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA0M2RlMDY1Li5hMzEzMjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTItMDQtMTEgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBE
UlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyJ3MgCisgICAgICAg
IGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBpbiBFRkwncyBEdW1wUmVuZGVyVHJlZS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6YXNzaWduSWRlbnRp
ZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbmNlbGxlZEVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpibG9ja2VkRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbm5vdFNob3dVUkxFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6aW50ZXJydXB0ZWRG
b3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgICogZXdrL2V3
a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKToKKyAgICAgICAgKGV3a19mcmFtZV9s
b2FkX2ZpbmlzaGVkKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVk
KToKKyAgICAgICAgKGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZCk6CisgICAgICAgIChl
d2tfZnJhbWVfbG9hZF9lcnJvcik6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5oOgorICAgICAg
ICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAyMDEy
LTA0LTEwICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50
ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIExheW91dFRlc3RDb250cm9sbGVyIG5lZWRzIGltcGxl
bWVudGF0aW9uIG9mIGFkZFVzZXJTdHlsZVNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggOTM1
MTgyOS4uYjc0ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtMTcwLDcgKzE3MCw5IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoRG9jdW1lbnRMb2FkCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGNvcmVSZXNwb25zZSkKIHsKICAgICBDU3RyaW5nIHVybCA9IGNvcmVSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKTsKLSAgICBEQkcoIlJlc291cmNlIHVybD0lcyIsIHVybC5kYXRh
KCkpOworICAgIENTdHJpbmcgZmlyc3RQYXJ0eSA9IGNvcmVSZXF1ZXN0LmZpcnN0UGFydHlGb3JD
b29raWVzKCkuc3RyaW5nKCkudXRmOCgpOworICAgIENTdHJpbmcgaHR0cE1ldGhvZCA9IGNvcmVS
ZXF1ZXN0Lmh0dHBNZXRob2QoKS51dGY4KCk7CisgICAgREJHKCJSZXNvdXJjZSB1cmw9JXMsIGZp
cnN0X3BhcnR5PSVzLCBodHRwX21ldGhvZD0lcyIsIHVybC5kYXRhKCksIGZpcnN0UGFydHkuZGF0
YSgpLCBodHRwTWV0aG9kLmRhdGEoKSk7CiAKICAgICAvLyBXZSB3YW50IHRvIGRpc3Rpbmd1aXNo
IGJldHdlZW4gYSByZXF1ZXN0IGZvciBhIGRvY3VtZW50IHRvIGJlIGxvYWRlZCBpbnRvCiAgICAg
Ly8gdGhlIG1haW4gZnJhbWUsIGEgc3ViLWZyYW1lLCBvciB0aGUgc3ViLW9iamVjdHMgaW4gdGhh
dCBkb2N1bWVudC4KQEAgLTE4MCwxNCArMTgyLDMwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2ln
CiAgICAgICAgICAgICBpc01haW5GcmFtZVJlcXVlc3QgPSAobG9hZGVyID09IGZyYW1lTG9hZGVy
LT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWVMb2FkZXItPmlzTG9hZGluZ01h
aW5GcmFtZSgpKTsKICAgICB9CiAKLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1
ZXN0ID0geyAwLCBpZGVudGlmaWVyLCBtX2ZyYW1lLCBpc01haW5GcmFtZVJlcXVlc3QgfTsKKyAg
ICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyAwLCAwLCAwLCBpZGVudGlm
aWVyLCBtX2ZyYW1lLCBpc01haW5GcmFtZVJlcXVlc3QgfTsKICAgICBFd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVxdWVzdCBvcmlnID0gcmVxdWVzdDsgLyogSW5pdGlhbGl6ZSBjb25zdCBmaWVsZHMuICov
CiAKICAgICBvcmlnLnVybCA9IHJlcXVlc3QudXJsID0gdXJsLmRhdGEoKTsKKyAgICByZXF1ZXN0
LmZpcnN0X3BhcnR5ID0gZmlyc3RQYXJ0eS5kYXRhKCk7CisgICAgcmVxdWVzdC5odHRwX21ldGhv
ZCA9IGh0dHBNZXRob2QuZGF0YSgpOwogCi0gICAgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5k
KG1fZnJhbWUsICZyZXF1ZXN0KTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJl
ZGlyZWN0UmVzcG9uc2U7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHJlc3BvbnNl
QnVmZmVyOworICAgIENTdHJpbmcgcmVkaXJlY3RVcmw7CiAKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCAmcmVx
dWVzdCk7CisgICAgaWYgKGNvcmVSZXNwb25zZS5pc051bGwoKSkKKyAgICAgICAgcmVkaXJlY3RS
ZXNwb25zZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIHJlZGlyZWN0VXJsID0gY29yZVJlc3Bv
bnNlLnVybCgpLnN0cmluZygpLnV0ZjgoKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIudXJsID0g
cmVkaXJlY3RVcmwuZGF0YSgpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5zdGF0dXNfY29kZSA9
IGNvcmVSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgICAgICByZWRpcmVjdFJlc3BvbnNl
ID0gJnJlc3BvbnNlQnVmZmVyOworICAgIH0KKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2Fn
ZXMgbWVzc2FnZXMgPSB7ICZyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlIH07CisKKyAgICBld2tf
ZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQobV9mcmFtZSwgJm1lc3NhZ2VzKTsKKworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3aWxs
c2VuZCIsICZtZXNzYWdlcyk7CiAKICAgICBpZiAocmVxdWVzdC51cmwgIT0gb3JpZy51cmwpIHsK
ICAgICAgICAgY29yZVJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCByZXF1ZXN0LnVybCkpOwpA
QCAtMjA3LDcgKzIyNSw5IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQKIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBjb3JlUmVxdWVzdCkKIHsKICAgICBDU3RyaW5nIHVybCA9IGNvcmVSZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKTsKLSAgICBEQkcoIlJlc291cmNlIHVybD0lcyIsIHVybC5kYXRhKCkp
OworICAgIENTdHJpbmcgZmlyc3RQYXJ0eSA9IGNvcmVSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29r
aWVzKCkuc3RyaW5nKCkudXRmOCgpOworICAgIENTdHJpbmcgaHR0cE1ldGhvZCA9IGNvcmVSZXF1
ZXN0Lmh0dHBNZXRob2QoKS51dGY4KCk7CisgICAgREJHKCJSZXNvdXJjZSB1cmw9JXMsIEZpcnN0
IHBhcnR5PSVzLCBIVFRQIG1ldGhvZD0lcyIsIHVybC5kYXRhKCksIGZpcnN0UGFydHkuZGF0YSgp
LCBodHRwTWV0aG9kLmRhdGEoKSk7CiAKICAgICBib29sIGlzTWFpbkZyYW1lUmVxdWVzdCA9IGZh
bHNlOwogICAgIGlmIChsb2FkZXIpIHsKQEAgLTIxNSw4ICsyMzUsOSBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aQogICAgICAgICAgICAgaXNNYWluRnJhbWVSZXF1ZXN0ID0gKGxvYWRlciA9PSBm
cmFtZUxvYWRlci0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpICYmIGZyYW1lTG9hZGVyLT5p
c0xvYWRpbmdNYWluRnJhbWUoKSk7CiAgICAgfQogCi0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
cXVlc3QgcmVxdWVzdCA9IHsgMCwgaWRlbnRpZmllciwgbV9mcmFtZSwgaXNNYWluRnJhbWVSZXF1
ZXN0IH07CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgdXJsLmRh
dGEoKSwgZmlyc3RQYXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpLCBpZGVudGlmaWVyLCBt
X2ZyYW1lLCBpc01haW5GcmFtZVJlcXVlc3QgfTsKICAgICBld2tfZnJhbWVfcmVxdWVzdF9hc3Np
Z25faWRlbnRpZmllcihtX2ZyYW1lLCAmcmVxdWVzdCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICZyZXF1ZXN0KTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlm
aWNhdGlvbigpCkBAIC0yNTMsMTMgKzI3NCwyMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgY29yZVJlc3BvbnNlKQogewogICAgIC8vIFVwZGF0ZSBvdXIga25vd2xlZGdlIG9m
IHJlcXVlc3Qgc291cCBmbGFncyAtIHNvbWUgYXJlIG9ubHkgc2V0CiAgICAgLy8gYWZ0ZXIgdGhl
IHJlcXVlc3QgaXMgZG9uZS4KLSAgICBsb2FkZXItPnJlcXVlc3QoKS5zZXRTb3VwTWVzc2FnZUZs
YWdzKHJlc3BvbnNlLnNvdXBNZXNzYWdlRmxhZ3MoKSk7CisgICAgbG9hZGVyLT5yZXF1ZXN0KCku
c2V0U291cE1lc3NhZ2VGbGFncyhjb3JlUmVzcG9uc2Uuc291cE1lc3NhZ2VGbGFncygpKTsKKwor
ICAgIG1fcmVzcG9uc2UgPSBjb3JlUmVzcG9uc2U7CisKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVzcG9uc2UgcmVzcG9uc2UgPSB7IDAsIGNvcmVSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIH07
CisgICAgQ1N0cmluZyB1cmwgPSBjb3JlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpOwor
ICAgIHJlc3BvbnNlLnVybCA9IHVybC5kYXRhKCk7CisKKyAgICBld2tfZnJhbWVfcmVzcG9uc2Vf
cmVjZWl2ZWQobV9mcmFtZSwgJnJlc3BvbnNlKTsKIAotICAgIG1fcmVzcG9uc2UgPSByZXNwb25z
ZTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNl
LHJlc3BvbnNlLHJlY2VpdmVkIiwgJnJlc3BvbnNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0
aW9uIGZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCkBAIC0zMDcsMTAgKzMzNiwxMSBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oRnJhbWVQb2xpY3lGdQogCiAgICAgLy8gaWYgbm90IGFjY2VwdE5hdmlnYXRpb25SZXF1
ZXN0IC0gbG9vayBhdCBRdCAtPiBQb2xpY3lJZ25vcmU7CiAgICAgLy8gRklYTUU6IGRvIHByb3Bl
ciBjaGVjayBhbmQgb25seSByZXNldCBmb3JtcyB3aGVuIG9uIFBvbGljeUlnbm9yZQotICAgIGNo
YXIqIHVybCA9IHN0cmR1cChyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgdXJsLCAw
LCBtX2ZyYW1lLCBmYWxzZSB9OworICAgIENTdHJpbmcgdXJsID0gcmVzb3VyY2VSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGZpcnN0UGFydHkgPSByZXNvdXJjZVJl
cXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgQ1N0cmlu
ZyBodHRwTWV0aG9kID0gcmVzb3VyY2VSZXF1ZXN0Lmh0dHBNZXRob2QoKS51dGY4KCk7CisgICAg
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgdXJsLmRhdGEoKSwgZmlyc3RQ
YXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpLCAwLCBtX2ZyYW1lLCBmYWxzZSB9OwogICAg
IGJvb2wgcmV0ID0gZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24obV92aWV3LCAm
cmVxdWVzdCk7Ci0gICAgZnJlZSh1cmwpOwogCiAgICAgUG9saWN5QWN0aW9uIHBvbGljeTsKICAg
ICBpZiAoIXJldCkKQEAgLTczNSwxMiArNzY1LDMxIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKG1fZnJhbWUs
IGlkZW50aWZpZXIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3
LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsICZpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciog
bG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEV3a19GcmFtZV9Mb2FkX0Vy
cm9yIGVycm9yOworICAgIENTdHJpbmcgZXJyb3JEb21haW4gPSBlcnIuZG9tYWluKCkudXRmOCgp
OworICAgIENTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbiA9IGVyci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGZhaWxpbmdVcmwgPSBlcnIuZmFpbGluZ1VSTCgpLnV0
ZjgoKTsKKworICAgIERCRygiZXdrRnJhbWU9JXAsIHJlc291cmNlPSVsZCwgZXJyb3I9JXMgKCVk
LCBjYW5jZWxsYXRpb249JWhodSkgXCIlc1wiLCB1cmw9JXMiLAorICAgICAgICBtX2ZyYW1lLCBp
ZGVudGlmaWVyLCBlcnJvckRvbWFpbi5kYXRhKCksIGVyci5lcnJvckNvZGUoKSwgZXJyLmlzQ2Fu
Y2VsbGF0aW9uKCksCisgICAgICAgIGVycm9yRGVzY3JpcHRpb24uZGF0YSgpLCBmYWlsaW5nVXJs
LmRhdGEoKSk7CisKKyAgICBlcnJvci5jb2RlID0gZXJyLmVycm9yQ29kZSgpOworICAgIGVycm9y
LmlzX2NhbmNlbGxhdGlvbiA9IGVyci5pc0NhbmNlbGxhdGlvbigpOworICAgIGVycm9yLmRvbWFp
biA9IGVycm9yRG9tYWluLmRhdGEoKTsKKyAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9yRGVz
Y3JpcHRpb24uZGF0YSgpOworICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGluZ1VybC5kYXRh
KCk7CisgICAgZXJyb3IucmVzb3VyY2VfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgZXJy
b3IuZnJhbWUgPSBtX2ZyYW1lOworCisgICAgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVk
KG1fZnJhbWUsICZlcnJvcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbCht
X3ZpZXcsICJsb2FkLHJlc291cmNlLGZhaWxlZCIsICZlcnJvcik7CiB9CiAKIGJvb2wgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIGludCBsZW5ndGgpCkBAIC03OTYsOSArODQ1LDEyIEBAIGVudW0gewogICAgIFdlYktp
dEVycm9yUGx1Z2luV2lsbEhhbmRsZUxvYWQgPSAyMDQKIH07CiAKK2NvbnN0IGNoYXIqIGNvbnN0
IE5TVVJMRXJyb3JEb21haW4gPSAiTlNVUkxFcnJvckRvbWFpbiI7Citjb25zdCBjaGFyKiBjb25z
dCBXZWJLaXRFcnJvckRvbWFpbiA9ICJXZWJLaXRFcnJvckRvbWFpbiI7CisKIFJlc291cmNlRXJy
b3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJFcnJvciIsIC05OTks
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCksCisgICAgUmVzb3VyY2VFcnJvciBlcnJvcihOU1VSTEVy
cm9yRG9tYWluLCAtOTk5LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIlJlcXVlc3QgY2FuY2VsbGVkIik7CiAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRp
b24odHJ1ZSk7CiAgICAgcmV0dXJuIGVycm9yOwpAQCAtODA2LDMxICs4NTgsMzEgQEAgUmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXMKIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcigiRXJyb3IiLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQ
b3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdl
YktpdEVycm9yRG9tYWluLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1ZXN0IGJs
b2NrZWQiKTsKIH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fubm90
U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcigiRXJyb3IiLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViS2l0RXJyb3JE
b21haW4sIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNob3cgVVJMIik7CiB9CiAKIFJlc291
cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKCJFcnJvciIsIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJLaXRFcnJvckRvbWFpbiwgV2Vi
S2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJGcmFtZSBsb2FkIGludGVycnVw
dGVkIGJ5IHBvbGljeSBjaGFuZ2UiKTsKIH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIkVycm9yIiwgV2ViS2l0RXJy
b3JDYW5ub3RTaG93TUlNRVR5cGUsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAorICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKE5TVVJMRXJyb3JEb21haW4sIFdlYktpdEVycm9yQ2Fubm90U2hvd01J
TUVUeXBlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ2Fubm90IHNob3cgbWltZXR5cGUiKTsKIH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCJFcnJvciIsIC05OTggLyog
IyMjICovLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihOU1VSTEVycm9yRG9tYWluLCAtOTk4IC8qICMjIyAqLywgcmVzcG9uc2UudXJsKCkuc3RyaW5n
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgZG9lcyBub3QgZXhpc3QiKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBlZmNhODZjLi40Yjk4ZDY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMTIwNywxNSArMTIwNywxNSBAQCB2
b2lkIGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogICogY2hhbmdp
bmcgdmFsdWVzIGluIEBwYXJhbSByZXF1ZXN0LgogICoKICAqIEBwYXJhbSBld2tGcmFtZSBGcmFt
ZS4KLSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgZGV0YWlscyB0aGF0IHVzZXIgbWF5IG92ZXJy
aWRlLiBXaGVuZXZlciB2YWx1ZXMgb24KLSAqIHRoaXMgc3RydWN0IGNoYW5nZXMsIGl0IG11c3Qg
YmUgcHJvcGVybHkgbWFsbG9jJ2QgYXMgaXQgd2lsbCBiZSBmcmVlZAotICogYWZ0ZXJ3YXJkcy4K
KyAqIEBwYXJhbSBtZXNzYWdlcyBNZXNzYWdlcyBjb250YWluaW5nIHRoZSByZXF1ZXN0IGRldGFp
bHMgdGhhdCB1c2VyIG1heSBvdmVycmlkZSBhbmQgYQorICogcG9zc2libGUgcmVkaXJlY3QgcmVw
b25zZS4gV2hlbmV2ZXIgdmFsdWVzIG9uIHRoaXMgc3RydWN0IGNoYW5nZXMsIGl0IG11c3QgYmUg
cHJvcGVybHkKKyAqIG1hbGxvYydkIGFzIGl0IHdpbGwgYmUgZnJlZWQgYWZ0ZXJ3YXJkcy4KICAq
CiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIgogICovCi12b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBld2tfZnJhbWVfcmVxdWVzdF93
aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2Fn
ZXMqIG1lc3NhZ2VzKQogewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
RnJhbWUsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgcmVxdWVzdCk7CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgInJlc291cmNlLHJlcXVlc3Qsd2ls
bHNlbmQiLCBtZXNzYWdlcyk7CiB9CiAKIC8qKgpAQCAtMTIzNCw2ICsxMjM0LDIwIEBAIHZvaWQg
ZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBjb25zdCBFd2tfRnJhbWVfCiAKIC8qKgogICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoYXQg
YSByZXNwb25zZSB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVkLgorICoKKyAqIEBw
YXJhbSBld2tGcmFtZSBGcmFtZS4KKyAqIEBwYXJhbSByZXF1ZXN0IFJlc3BvbnNlIGRldGFpbHMu
IE5vIGNoYW5nZXMgYXJlIGFsbG93ZWQgdG8gZmllbGRzLgorICoKKyAqIEVtaXRzIHNpZ25hbDog
InJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIgorICovCit2b2lkIGV3a19mcmFtZV9yZXNwb25z
ZV9yZWNlaXZlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNw
b25zZSogcmVzcG9uc2UpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tGcmFtZSwgInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgcmVzcG9uc2UpOworfQorCisv
KioKKyAqIEBpbnRlcm5hbAogICogUmVwb3J0cyB0aGF0IGZpcnN0IG5hdmlnYXRpb24gb2NjdXJy
ZWQKICAqCiAgKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCkBAIC0xMzU4LDYgKzEzNzIsNyBAQCB2
b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3Qg
Y2hhciogZXJyb3JEb21haW4sIGludAogICAgICAgICBidWZmZXIuaXNfY2FuY2VsbGF0aW9uID0g
aXNDYW5jZWxsYXRpb247CiAgICAgICAgIGJ1ZmZlci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3Jp
cHRpb247CiAgICAgICAgIGJ1ZmZlci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7CisgICAgICAg
IGJ1ZmZlci5yZXNvdXJjZV9pZGVudGlmaWVyID0gMDsKICAgICAgICAgYnVmZmVyLmZyYW1lID0g
ZXdrRnJhbWU7CiAgICAgICAgIGVycm9yID0gJmJ1ZmZlcjsKICAgICB9CkBAIC0xMzY4LDYgKzEz
ODMsMjkgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJh
bWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQKIAogLyoqCiAgKiBAaW50ZXJuYWwKKyAq
IFJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJs
b2FkLHJlc291cmNlLGZpbmlzaGVkIiB3aXRoIHRoZSByZXNvdXJjZQorICogcmVxdWVzdCBpZGVu
dGlmaWVyLgorICovCit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLHJlc291cmNlLGZpbmlz
aGVkIiwgJmlkZW50aWZpZXIpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyBy
ZXNvdXJjZSBsb2FkIGZhaWx1cmUsIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCisgKgorICogRW1p
dHMgc2lnbmFsOiAibG9hZCxyZXNvdXJjZSxmYWlsZWQiIHdpdGggdGhlIGVycm9yIGluZm9ybWF0
aW9uLgorICovCit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrRnJhbWUsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3sKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxyZXNvdXJjZSxmYWlsZWQi
LCBlcnJvcik7Cit9CisKKy8qKgorICogQGludGVybmFsCiAgKiBSZXBvcnRzIGxvYWQgZmFpbGVk
IHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJv
ciIgd2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgpAQCAtMTM4Nyw2ICsxNDI1
LDcgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNv
bnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQgZXIKICAgICBlcnJvci5kb21haW4gPSBlcnJvckRv
bWFpbjsKICAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRpb247CiAgICAgZXJy
b3IuZmFpbGluZ191cmwgPSBmYWlsaW5nVXJsOworICAgIGVycm9yLnJlc291cmNlX2lkZW50aWZp
ZXIgPSAwOwogICAgIGVycm9yLmZyYW1lID0gZXdrRnJhbWU7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQsZXJyb3IiLCAmZXJyb3IpOwogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5oCmluZGV4IDk0MjQyOGMuLjgyMmQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmgKQEAgLTQ1LDYgKzQ1LDEwIEBACiAgKiAgLSAibG9hZCxmaW5pc2hlZCIsIGNv
bnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKjogcmVwb3J0cyBsb2FkCiAgKiAgICBmaW5pc2hlZCBh
bmQgaXQgZ2l2ZXMgQGMgTlVMTCBvbiBzdWNjZXNzIG9yIHBvaW50ZXIgdG8KICAqICAgIHN0cnVj
dHVyZSBkZWZpbmluZyB0aGUgZXJyb3IuCisgKiAgLSAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIs
IHVuc2lnbmVkIGxvbmc6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZCBhbmQgaXQgZ2l2
ZXMKKyAqICAgIGl0cyBpZGVudGlmaWVyLgorICogIC0gImxvYWQscmVzb3VyY2UsZmFpbGVkIiwg
RXdrX0ZyYW1lX0xvYWRfRXJyb3I6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmYWlsdXJlIGFuZCBp
dAorICogICAgZ2l2ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJyb3Ig
YXMgYW4gYXJndW1lbnQuCiAgKiAgLSAibG9hZCxmaXJzdGxheW91dCxmaW5pc2hlZCIsIHZvaWQ6
IGZyYW1lIGZpbmlzaGVkIGZpcnN0IGxheW91dC4KICAqICAtICJsb2FkLG5vbmVtcHR5bGF5b3V0
LGZpbmlzaGVkIiwgdm9pZDogZnJhbWUgZmluaXNoZWQgZmlyc3QKICAqICAgIG5vbi1lbXB0eSBs
YXlvdXQuCkBAIC01Nyw4ICs2MSwxMCBAQAogICogIC0gIm5hdmlnYXRpb24sZmlyc3QiLCB2b2lk
OiBmaXJzdCBuYXZpZ2F0aW9uIHdhcyBvY2N1cnJlZC4KICAqICAtICJyZXNvdXJjZSxyZXF1ZXN0
LG5ldyIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0CiAgKiAgICB0
aGVyZSdzIGEgbmV3IHJlc291cmNlIHJlcXVlc3QuCi0gKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3
aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSB3aWxsCisg
KiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNz
YWdlcyo6IGEgcmVzb3VyY2Ugd2lsbAogICogICAgYmUgcmVxdWVzdGVkLgorICogIC0gInJlc291
cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKjogcmVw
b3J0cyB0aGF0IGEgcmVzcG9uc2UKKyAqICAgIHRvIGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMgcmVj
ZWl2ZWQuCiAgKiAgLSAic3RhdGUsc2F2ZSIsIHZvaWQ6IGZyYW1lJ3Mgc3RhdGUgd2lsbCBiZSBz
YXZlZCBhcyBhIGhpc3RvcnkgaXRlbS4KICAqICAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hh
cio6IHRpdGxlIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgogICogIC0gInVyaSxjaGFu
Z2VkIiwgY29uc3QgY2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KQEAg
LTkxLDI1ICs5Nyw1MCBAQCBzdHJ1Y3QgX0V3a19GcmFtZV9Mb2FkX0Vycm9yIHsKICAgICBjb25z
dCBjaGFyICpkb21haW47IC8qKjwgZXJyb3IgZG9tYWluIG5hbWUgKi8KICAgICBjb25zdCBjaGFy
ICpkZXNjcmlwdGlvbjsgLyoqPCBlcnJvciBkZXNjcmlwdGlvbiBhbHJlYWR5IGxvY2FsaXplZCAq
LwogICAgIGNvbnN0IGNoYXIgKmZhaWxpbmdfdXJsOyAvKio8IHRoZSB1cmwgdGhhdCBmYWlsZWQg
dG8gbG9hZCAqLworICAgIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VfaWRlbnRpZmllcjsgLyoqPCBp
ZGVudGlmaWVyIG9mIHJlc291cmNlICovCiAgICAgRXZhc19PYmplY3QgKmZyYW1lOyAvKio8IGZy
YW1lIHdoZXJlIHRoZSBmYWlsdXJlIGhhcHBlbmVkICovCiB9OwogCiAvLy8gQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0LgogdHlwZWRlZiBzdHJ1Y3Qg
X0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0Owor
CiAvKioKLSAqIEBicmllZiAgIFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCByZXNvdXJjZSByZXF1
ZXN0LgorICogQGJyaWVmICAgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJl
c291cmNlIHJlcXVlc3QuCiAgKgotICogRGV0YWlscyBnaXZlbiBiZWZvcmUgYSByZXNvdXJjZSBp
cyBsb2FkZWQgb24gYSBnaXZlbiBmcmFtZS4gSXQncyB1c2VkIGJ5Ci0gKiBld2tfZnJhbWVfcmVx
dWVzdF93aWxsX3NlbmQoKSB0byBpbmZvcm0gdGhlIGRldGFpbHMgb2YgYSB0by1iZS1sb2FkZWQK
LSAqIHJlc291cmNlLCBhbGxvd2luZyB0aGVtIHRvIGJlIG92ZXJyaWRkZW4uCisgKiBEZXRhaWxz
IGdpdmVuIGJlZm9yZSBhIHJlc291cmNlIGlzIGxvYWRlZCBvbiBhIGdpdmVuIGZyYW1lLiBJdCdz
IHVzZWQgaW4KKyAqIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyB0byBpbmZvcm0gYWJvdXQg
dGhlIGRldGFpbHMgb2YgYSByZXNvdXJjZSByZXF1ZXN0LgogICovCiBzdHJ1Y3QgX0V3a19GcmFt
ZV9SZXNvdXJjZV9SZXF1ZXN0IHsKICAgICBjb25zdCBjaGFyICp1cmw7IC8qKjwgdXJsIG9mIHRo
ZSByZXNvdXJjZSAqLworICAgIGNvbnN0IGNoYXIgKmZpcnN0X3BhcnR5OyAvKio8IGZpcnN0IHBh
cnR5IGZvciBjb29raWVzLCBjYW4gbm90IGJlIGNoYW5nZWQgICovCisgICAgY29uc3QgY2hhciAq
aHR0cF9tZXRob2Q7IC8qKjwgaHR0cCBtZXRob2QsIGNhbiBub3QgYmUgY2hhbmdlZCAgKi8KICAg
ICBjb25zdCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7IC8qKjwgaWRlbnRpZmllciBvZiByZXNv
dXJjZSwgY2FuIG5vdCBiZSBjaGFuZ2VkICovCiAgICAgRXZhc19PYmplY3QgKmZyYW1lOyAvKio8
IGZyYW1lIHdoZXJlIHRoZSByZXNvdXJjZSBpcyByZXF1ZXN0ZWQgKi8KICAgICBFaW5hX0Jvb2wg
aXNfbWFpbl9mcmFtZV9yZXF1ZXN0OyAvKiogPCBpbmRpY2F0ZXMgaWYgdGhlIHJlcXVlc3QgaXMg
Zm9yIHRoZSBtYWluIGZyYW1lICovCiB9OwogCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
X0V3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVf
UmVzb3VyY2VfUmVzcG9uc2UgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlOworCisvKioKKyAq
IEBicmllZiAgIFN0cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNwb25zZSB0
byBhIHJlc291cmNlIHJlcXVlc3QuCisgKgorICogRGV0YWlscyBnaXZlbiBpbiB0aGUgcmVzcG9u
c2UgdG8gYSByZXNvdXJjZSByZXF1ZXN0LiBJdCdzIHVzZWQgYnkKKyAqIGV3a19mcmFtZV9yZXNw
b25zZV9yZWNlaXZlZCgpIHRvIGluZm9ybSBhYm91dCB0aGUgZGV0YWlscyBvZiBhIHJlc3BvbnNl
LgorICovCitzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSB7CisgICAgY29uc3Qg
Y2hhciAqdXJsOyAvKio8IHVybCBvZiB0aGUgcmVzb3VyY2UgKi8KKyAgICBpbnQgc3RhdHVzX2Nv
ZGU7IC8qKjwgaHR0cCBzdGF0dXMgY29kZSAqLworfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5h
bWUgZm9yIF9Fd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMuCit0eXBlZGVmIHN0cnVjdCBfRXdr
X0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlczsKKwor
c3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMgeworICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0ICpyZXF1ZXN0OyAvKio8IHJlc291cmNlIHJlcXVlc3QgKi8KKyAgICBFd2tf
RnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgKnJlZGlyZWN0X3Jlc3BvbnNlOyAvKio8IHJlZGlyZWN0
IHJlc3BvbnNlLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KK307CisKIC8vLyBFbnVtIGNvbnRhaW5p
bmcgaGl0IHRlc3QgZGF0YSB0eXBlcwogdHlwZWRlZiBlbnVtIHsKICAgICBFV0tfSElUX1RFU1Rf
UkVTVUxUX0NPTlRFWFRfRE9DVU1FTlQgPSAxIDw8IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCmluZGV4IDk2ZTQ3OTUuLjA4ZjdiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCkBAIC0yMDgsMTEgKzIwOCwxNCBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5
b3V0X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9sb2Fk
X2ZpcnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2
b2lkIGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSk7CiB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwg
Y29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxsYXRp
b24sIGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwp
Owordm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZChFdmFzX09iamVjdCogZXdr
RnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Jl
c291cmNlX2ZhaWxlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9Mb2FkX0Vycm9y
KiBlcnJvcik7CiB2b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxs
YXRpb24sIGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdV
cmwpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7CiAKLXZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpOwordm9pZCBl
d2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJh
bWVfUmVzb3VyY2VfTWVzc2FnZXMqIG1lc3NhZ2VzKTsKIHZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rf
YXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7Cit2b2lkIGV3a19mcmFtZV9yZXNwb25zZV9yZWNl
aXZlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSog
cmVzcG9uc2UpOwogdm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pOwogCiB2b2lkIGV3a19mcmFtZV9k
aWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0aW9uKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGZhMzgyYTkuLjFlMzBmODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCkBAIC01NCw2ICs1NCwxMCBAQAogICogIC0gImxvYWQscHJvZ3Jlc3MiLCBk
b3VibGUqOiBsb2FkIHByb2dyZXNzIGlzIGNoYW5nZWQgKG92ZXJhbGwgdmFsdWUKICAqICAgIGZy
b20gMC4wIHRvIDEuMCwgY29ubmVjdCB0byBpbmRpdmlkdWFsIGZyYW1lcyBmb3IgZmluZSBncmFp
bmVkKS4KICAqICAtICJsb2FkLHByb3Zpc2lvbmFsIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zp
c2lvbmFsIGxvYWQuCisgKiAgLSAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIHVuc2lnbmVkIGxv
bmc6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZCBhbmQgaXQgZ2l2ZXMKKyAqICAgIGl0
cyBpZGVudGlmaWVyLgorICogIC0gImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgRXdrX0ZyYW1lX0xv
YWRfRXJyb3I6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmYWlsdXJlIGFuZCBpdAorICogICAgZ2l2
ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJyb3IgYXMgYW4gYXJndW1l
bnQuCiAgKiAgLSAibG9hZCxzdGFydGVkIiwgdm9pZDogZnJhbWUgc3RhcnRlZCBsb2FkaW5nIHRo
ZSBkb2N1bWVudC4KICAqICAtICJtZW51YmFyLHZpc2libGUsZ2V0IiwgRWluYV9Cb29sICo6IGV4
cGVjdHMgYSBAYyBFSU5BX1RSVUUgaWYgbWVudWJhciBpcwogICogICAgdmlzaWJsZTsgQGMgRUlO
QV9GQUxTRSwgb3RoZXJ3aXNlLgpAQCAtNjEsOCArNjUsMTEgQEAKICAqICAtICJtaXhlZGNvbnRl
bnQsZGlzcGxheWVkIiwgdm9pZDogYW55IG9mIHRoZSBjb250YWluaW5nIGZyYW1lcyBoYXMgbG9h
ZGVkIGFuZCBkaXNwbGF5ZWQgbWl4ZWQgY29udGVudC4KICAqICAtICJtaXhlZGNvbnRlbnQscnVu
Iiwgdm9pZDogYW55IG9mIHRoZSBjb250YWluaW5nIGZyYW1lcyBoYXMgbG9hZGVkIGFuZCBydW4g
bWl4ZWQgY29udGVudC4KICAqICAtICJyZWFkeSIsIHZvaWQ6IHBhZ2UgaXMgZnVsbHkgbG9hZGVk
LgotICogIC0gInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCBFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVxdWVzdCo6IGEgcmVzb3VyY2Ugd2lsbAotICogICAgYmUgcmVxdWVzdGVkLgorICogIC0gInJl
c291cmNlLHJlcXVlc3QsbmV3IiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiByZXBvcnRz
IHRoYXQKKyAqICAgIHRoZXJlJ3MgYSBuZXcgcmVzb3VyY2UgcmVxdWVzdC4KKyAqICAtICJyZXNv
dXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKjogYSBy
ZXNvdXJjZSB3aWxsIGJlIHJlcXVlc3RlZC4KKyAqICAgICBhbmQgdGhlIHBvc3NpYmxlIHJlZGly
ZWN0IHJlc3BvbnNlLgorICogIC0gInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgRXdrX0Zy
YW1lX1Jlc291cmNlX1Jlc3BvbnNlKjogdGhlIG5ldHdvcmsgcmVzcG9uc2UgZm9yIGEgcmVzb3Vy
Y2UuCiAgKiAgLSAic2Nyb2xsYmFycyx2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3Rz
IGEgQGMgRUlOQV9UUlVFIGlmIHNjcm9sbGJhcnMKICAqICAgIGFyZSB2aXNpYmxlOyBAYyBFSU5B
X0ZBTFNFLCBvdGhlcndpc2UuCiAgKiAgLSAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIsIEVpbmFf
Qm9vbDogc2V0cyBzY3JvbGxiYXJzIHZpc2liaWxpdHkuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTE3NzVlZS4uZGJlNjkwMyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDEyLTA0LTExICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CisKKyAgICAgICAgW0VGTF0gRFJUIHNob3VsZCBzdXBwb3J0IExheW91dFRlc3RDb250cm9s
bGVyJ3MgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0
Q29udHJvbGxlcidzCisgICAgICAgIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBpbiBFRkwn
cyBEdW1wUmVuZGVyVHJlZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZUNocm9tZS5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRl
Vmlldyk6CisgICAgICAgIChwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKHVy
bFN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChkZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25XaWxsU2VuZFJl
cXVlc3QpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZl
ZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGaW5pc2hl
ZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uTmV3UmVzb3VyY2VSZXF1ZXN0KToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaDoKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lKToKKwogMjAxMi0wNC0wNSAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIERSVCBz
aG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIHdpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVy
VHJlZUNocm9tZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVD
aHJvbWUuY3BwCmluZGV4IGIzOWUxMjUuLjQ2M2ZjZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcApAQCAtNDcsNiArNDcsOCBAQAog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBDU3Ry
aW5nPiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6bV9kdW1wQXNzaWduZWRVcmxzOworCiBQYXNzT3du
UHRyPER1bXBSZW5kZXJUcmVlQ2hyb21lPiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlKEV2
YXMqIGV2YXMpCiB7CiAgICAgT3duUHRyPER1bXBSZW5kZXJUcmVlQ2hyb21lPiBjaHJvbWUgPSBh
ZG9wdFB0cihuZXcgRHVtcFJlbmRlclRyZWVDaHJvbWUoZXZhcykpOwpAQCAtOTUsNyArOTcsMTEg
QEAgRXZhc19PYmplY3QqIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGVWaWV3KCkgY29uc3QK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgIndpbmRvdyxvYmplY3Qs
Y2xlYXJlZCIsIG9uV2luZG93T2JqZWN0Q2xlYXJlZCwgbV9nY0NvbnRyb2xsZXIuZ2V0KCkpOwog
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAic3RhdHVzYmFyLHRleHQs
c2V0Iiwgb25TdGF0dXNiYXJUZXh0U2V0LCAwKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQodmlldywgImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiLCBvbkRvY3VtZW50TG9hZEZp
bmlzaGVkLCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgInJl
c291cmNlLHJlcXVlc3QsbmV3Iiwgb25OZXdSZXNvdXJjZVJlcXVlc3QsIDApOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2Vu
ZCIsIG9uV2lsbFNlbmRSZXF1ZXN0LCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19hZGQodmlldywgInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgb25SZXNwb25zZVJlY2Vp
dmVkLCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgImxvYWQs
cmVzb3VyY2UsZmluaXNoZWQiLCBvblJlc291cmNlTG9hZEZpbmlzaGVkLCAwKTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwg
b25SZXNvdXJjZUxvYWRGYWlsZWQsIDApOwogCiAgICAgcmV0dXJuIHZpZXc7CiB9CkBAIC0yOTMs
MjQgKzI5OSwxNTEgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25Eb2N1bWVudExvYWRG
aW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmUKICAgICB9CiB9CiAKK3N0YXRp
YyBDU3RyaW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5n
KQoreworICAgIGlmICghdXJpU3RyaW5nKQorICAgICAgICByZXR1cm4gQ1N0cmluZygpOworCisg
ICAgS1VSTCB1cmkgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJpU3RyaW5nKTsKKworICAgIGlm
ICghdXJpLmlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybiB1cmkuc3RyaW5nKCkudXRmOCgp
OworCisgICAgU3RyaW5nIHBhdGhTdHJpbmcgPSB1cmkucGF0aCgpOworICAgIHNpemVfdCBpbmRl
eEJhc2VOYW1lID0gcGF0aFN0cmluZy5yZXZlcnNlRmluZCgnLycpOworICAgIFN0cmluZyBiYXNl
TmFtZTsKKyAgICBpZiAoaW5kZXhCYXNlTmFtZSA9PSBub3RGb3VuZCkKKyAgICAgICAgYmFzZU5h
bWUgPSBwYXRoU3RyaW5nOworICAgIGVsc2UKKyAgICAgICAgYmFzZU5hbWUgPSBwYXRoU3RyaW5n
LnN1YnN0cmluZyhpbmRleEJhc2VOYW1lICsgMSk7CisKKyAgICBTdHJpbmcgZGlyTmFtZTsKKyAg
ICBpZiAoaW5kZXhCYXNlTmFtZSAhPSBub3RGb3VuZCkgeworICAgICAgICBzaXplX3QgaW5kZXhE
aXJOYW1lID0gcGF0aFN0cmluZy5yZXZlcnNlRmluZCgnLycsIGluZGV4QmFzZU5hbWUgLSAxKTsK
KyAgICAgICAgaWYgKGluZGV4RGlyTmFtZSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgIGRpck5h
bWUgPSBwYXRoU3RyaW5nLnN1YnN0cmluZyhpbmRleERpck5hbWUgKyAxLCBpbmRleEJhc2VOYW1l
IC0gaW5kZXhEaXJOYW1lIC0gMSk7CisgICAgfQorCisgICAgU3RyaW5nIHJldCA9IGRpck5hbWUg
KyAiLyIgKyBiYXNlTmFtZTsKKyAgICByZXR1cm4gcmV0LnV0ZjgoKTsKK30KKworc3RhdGljIENT
dHJpbmcgdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IGNoYXIqIHVyaVN0cmluZykKK3sK
KyAgICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcpOworICAgIGlm
ICghdXJpLmlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybiBDU3RyaW5nKHVyaVN0cmluZyk7
CisKKyAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gdXJpLnBhdGhBZnRlckxhc3RTbGFzaCgpOwor
ICAgIHJldHVybiB1cmkuc3RyaW5nKCkuc3Vic3RyaW5nKHN0YXJ0SW5kZXgpLnV0ZjgoKTsKK30K
Kworc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0Zy
YW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgU3RyaW5nIHJldCA9ICI8TlNV
UkxSZXF1ZXN0IFVSTCAiOworICAgIHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJl
cXVlc3QtPnVybCkuZGF0YSgpOworICAgIHJldCArPSAiLCBtYWluIGRvY3VtZW50IFVSTCAiOwor
ICAgIHJldCArPSB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdC0+Zmlyc3RfcGFydHkp
LmRhdGEoKTsKKyAgICByZXQgKz0gIiwgaHR0cCBtZXRob2QgIjsKKyAgICByZXQgKz0gcmVxdWVz
dC0+aHR0cF9tZXRob2QgPyBTdHJpbmcocmVxdWVzdC0+aHR0cF9tZXRob2QpIDogIihub25lKSI7
CisgICAgcmV0ICs9ICI+IjsKKworICAgIHJldHVybiByZXQudXRmOCgpOworfQorCitzdGF0aWMg
Q1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKQoreworICAgIGlmICghcmVzcG9uc2UpCisgICAg
ICAgIHJldHVybiBDU3RyaW5nKCIobnVsbCkiKTsKKworICAgIFN0cmluZyByZXQgPSAiPE5TVVJM
UmVzcG9uc2UgIjsKKyAgICByZXQgKz0gcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXNwb25z
ZS0+dXJsKS5kYXRhKCk7CisgICAgcmV0ICs9ICIsIGh0dHAgc3RhdHVzIGNvZGUgIjsKKyAgICBy
ZXQgKz0gU3RyaW5nOjpudW1iZXIocmVzcG9uc2UtPnN0YXR1c19jb2RlKTsKKyAgICByZXQgKz0g
Ij4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9CisKK3N0YXRpYyBDU3RyaW5nIGRlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikK
K3sKKyAgICBTdHJpbmcgcmV0ID0gIjxOU0Vycm9yIGRvbWFpbiAiOworICAgIHJldCArPSBlcnJv
ci0+ZG9tYWluOworICAgIHJldCArPSAiLCBjb2RlICI7CisgICAgcmV0ICs9IFN0cmluZzo6bnVt
YmVyKGVycm9yLT5jb2RlKTsKKyAgICBpZiAoZXJyb3ItPmZhaWxpbmdfdXJsICYmICplcnJvci0+
ZmFpbGluZ191cmwgIT0gJ1wwJykgeworICAgICAgICByZXQgKz0gIiwgZmFpbGluZyBVUkwgXCIi
OworICAgICAgICByZXQgKz0gZXJyb3ItPmZhaWxpbmdfdXJsOworICAgICAgICByZXQgKz0gIlwi
IjsKKyAgICB9CisgICAgcmV0ICs9ICI+IjsKKworICAgIHJldHVybiByZXQudXRmOCgpOworfQor
CiB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbGxTZW5kUmVxdWVzdCh2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCiB7Ci0gICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
cXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo+
KGV2ZW50SW5mbyk7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKiBtZXNzYWdlcyA9
IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo+KGV2ZW50SW5mbyk7CisK
KyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKCkpCisgICAgICAgICAgICBwcmludGYoIiVzIC0gd2lsbFNlbmRSZXF1ZXN0ICVz
IHJlZGlyZWN0UmVzcG9uc2UgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgcGF0aFN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChtZXNzYWdlcy0+cmVxdWVzdC0+dXJsKS5kYXRhKCksCisgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobWVzc2FnZXMtPnJlcXVl
c3QpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChtZXNzYWdlcy0+cmVkaXJlY3RfcmVzcG9uc2UpLmRhdGEoKSk7CiAKICAgICBpZiAo
IWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT53aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVs
bCgpKSB7CiAgICAgICAgIC8vIEFzIHJlcXVlc3RlZCBieSB0aGUgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGRvbid0IHBlcmZvcm0gdGhlIHJlcXVlc3QuCi0gICAgICAgIHJlcXVlc3QtPnVybCA9IDA7
CisgICAgICAgIG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwgPSAwOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgS1VSTCB1cmwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVxdWVzdC0+dXJs
KTsKKyAgICBLVVJMIHVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtZXNzYWdlcy0+cmVxdWVz
dC0+dXJsKTsKIAogICAgIGlmICh1cmwuaXNWYWxpZCgpCiAgICAgICAgICYmIHVybC5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkKICAgICAgICAgJiYgdXJsLmhvc3QoKSAhPSAiMTI3LjAuMC4xIgog
ICAgICAgICAmJiB1cmwuaG9zdCgpICE9ICIyNTUuMjU1LjI1NS4yNTUiCiAgICAgICAgICYmIHVy
bC5ob3N0KCkubG93ZXIoKSAhPSAibG9jYWxob3N0IikgewotICAgICAgICBwcmludGYoIkJsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCAlc1xuIiwgcmVxdWVzdC0+dXJsKTsKLSAgICAgICAg
cmVxdWVzdC0+dXJsID0gMDsKKyAgICAgICAgcHJpbnRmKCJCbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgJXNcbiIsIG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwpOworICAgICAgICBtZXNzYWdl
cy0+cmVxdWVzdC0+dXJsID0gMDsKICAgICB9CiB9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVDaHJv
bWU6Om9uUmVzcG9uc2VSZWNlaXZlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudElu
Zm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSA9IHN0YXRp
Y19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo+KGV2ZW50SW5mbyk7CisKKyAgICBp
ZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkpIHsKKyAgICAgICAgQ1N0cmluZyByZXNwb25zZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKSk7CisgICAgICAgIHByaW50ZigiJXMgLSBk
aWRSZWNlaXZlUmVzcG9uc2UgJXNcbiIsCisgICAgICAgICAgICAgICBwYXRoU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKSwKKyAgICAgICAgICAgICAgIHJlc3BvbnNl
RGVzY3JpcHRpb24uZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVDaHJv
bWU6Om9uUmVzb3VyY2VMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZl
bnRJbmZvKQoreworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9ICpzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nKj4oZXZlbnRJbmZvKTsKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVz
dENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRm
KCIlcyAtIGRpZEZpbmlzaExvYWRpbmdcbiIsCisgICAgICAgICAgICAgICAobV9kdW1wQXNzaWdu
ZWRVcmxzLmNvbnRhaW5zKGlkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRVcmxzLnRha2UoaWRl
bnRpZmllcikuZGF0YSgpIDogIjx1bmtub3duPiIpKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCog
ZXZlbnRJbmZvKQoreworICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvciA9IHN0YXRpY19j
YXN0PEV3a19GcmFtZV9Mb2FkX0Vycm9yKj4oZXZlbnRJbmZvKTsKKworICAgIGlmICghZG9uZSAm
JiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAg
ICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiAlc1xuIiwKKyAgICAg
ICAgICAgICAgIChtX2R1bXBBc3NpZ25lZFVybHMuY29udGFpbnMoZXJyb3ItPnJlc291cmNlX2lk
ZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRVcmxzLnRha2UoZXJyb3ItPnJlc291cmNlX2lkZW50
aWZpZXIpLmRhdGEoKSA6ICI8dW5rbm93bj4iKSwKKyAgICAgICAgICAgICAgIGRlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0KGVycm9yKS5kYXRhKCkpOworfQorCit2b2lkIER1bXBSZW5k
ZXJUcmVlQ2hyb21lOjpvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2
b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVl
c3QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo+KGV2ZW50SW5mbyk7
CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIG1fZHVtcEFzc2lnbmVkVXJscy5hZGQocmVxdWVzdC0+
aWRlbnRpZmllciwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT51cmwpKTsKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9t
ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKaW5k
ZXggZTE1NmI0ZC4uODI3MzM2YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1
bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTMxLDkgKzMxLDExIEBACiAKICNpbmNsdWRlIDxFaW5h
Lmg+CiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogY2xhc3MgRHVt
cFJlbmRlclRyZWVDaHJvbWUgewogcHVibGljOgpAQCAtNjEsNiArNjMsNyBAQCBwcml2YXRlOgog
ICAgIEV2YXMqIG1fZXZhczsKICAgICBPd25QdHI8R0NDb250cm9sbGVyPiBtX2djQ29udHJvbGxl
cjsKICAgICBWZWN0b3I8RXZhc19PYmplY3QqPiBtX2V4dHJhVmlld3M7CisgICAgc3RhdGljIEhh
c2hNYXA8dW5zaWduZWQgbG9uZywgQ1N0cmluZz4gbV9kdW1wQXNzaWduZWRVcmxzOwogCiAgICAg
Ly8gU21hcnQgY2FsbGJhY2tzCiAgICAgc3RhdGljIHZvaWQgb25XaW5kb3dPYmplY3RDbGVhcmVk
KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKQEAgLTc3LDYgKzgwLDE0IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgb25Eb2N1bWVudExvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmpl
Y3QqLCB2b2lkKik7CiAKICAgICBzdGF0aWMgdm9pZCBvbldpbGxTZW5kUmVxdWVzdCh2b2lkKiwg
RXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvblJlc3BvbnNlUmVjZWl2
ZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGljIHZvaWQgb25SZXNv
dXJjZUxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0
aWMgdm9pZCBvblJlc291cmNlTG9hZEZhaWxlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7
CisKKyAgICBzdGF0aWMgdm9pZCBvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZhc19PYmpl
Y3QqLCB2b2lkKik7CiB9OwogCiAjZW5kaWYgLy8gRHVtcFJlbmRlclRyZWVDaHJvbWVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137487</attachid>
            <date>2012-04-17 00:40:42 -0700</date>
            <delta_ts>2012-04-17 04:03:38 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>33808</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzJhODE1Li5hYTQwYWUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MTcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzIHdoaWNoIGRlcGVuZCBvbiBFRkwncyBEdW1wUmVu
ZGVyVHJlZSBzdXBwb3J0IGZvcgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSwgbm93IHRoYXQgaXQgaXMKKyAgICAgICAgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwogMjAxMi0wNC0xNiAgRGF2
aWQgQmFyciAgPGRhdmlkYmFyckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3RhY2sgb3ZlcmZs
b3cgaW4gQ1NTIHBhcnNlciBjYXVzZWQgYnkgcmVjdXJzaXZlIHN0eWxlc2hlZXQgaW1wb3J0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDIxMmUwNjkuLjBhOTlhODAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9Ta2lwcGVkCkBAIC03NTcsMTAgKzc1Nyw2IEBAIGZhc3QvaGlzdG9yeS9iYWNrLWZv
cndhcmQtcmVzZXQtYWZ0ZXItZXJyb3ItaGFuZGxpbmcuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvZW1wdHktdXJsLXBsdWdpbi1pbi1mcmFtZS5odG1sCiBmYXN0L2xvYWRl
ci9maWxlLXByb3RvY29sLWZyYWdtZW50Lmh0bWwKIAotIyBNaXNzaW5nIGRlbGVnYXRlczogdGVz
dHMgZmFpbGluZyBiZWNhdXNlIG9mIG1pc3NpbmcgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxs
YmFja3MuCi1mYXN0L2xvYWRlci9tYWluLWRvY3VtZW50LXVybC1mb3Itbm9uLWh0dHAtbG9hZHMu
aHRtbAotaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi0KICMg
TWlzc2luZyBkZWxlZ2F0ZXM6IHRlc3RzIGZhaWxpbmcgYmVjYXVzZSBvZiBtaXNzaW5nIHBvbGlj
eSBkZWxlZ2F0ZSBjYWxsYmFja3MuCiBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1m
b3ItZnJhbWUuaHRtbAogZmFzdC9sb2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVz
dC16b29tZWQuaHRtbApAQCAtMTAwNSw5ICsxMDAxLDYgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCiAjIFRl
c3RzIHdoaWNoIGFsc28gZmFpbCBpbiBvdGhlciBwbGF0Zm9ybXMKICMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0jIFNob3VsZCBiZSBtb3ZlZCB0byBwbGF0Zm9y
bS9tYWMgPHJkYXI6Ly81NjIxNDI1PiAodmlhIHdpbi8sIGNocm9taXVtLyBhbmQgd2luY2Fpcm8v
KQotaHR0cC90ZXN0cy9taXNjL3dpbGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNrLmh0
bWwKLQogIyBGYWlscyBhc3NlcnRpb246IEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmhhc09uZVJl
ZigpKTsKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODAxCiBm
YXN0L3dvcmtlcnMvc3RvcmFnZS91c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13b3JrZXJz
Lmh0bWwKQEAgLTExNzEsMTAgKzExNjQsMTkgQEAgaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5
LXN0YWxsLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9hY2lkMy5odG1sCiBodHRwL3Rlc3RzL21pc2Mv
cG9saWN5LWRlbGVnYXRlLWNhbGxlZC10d2ljZS5odG1sCiBodHRwL3Rlc3RzL21pc2MvcmVkaXJl
Y3QtdG8tZXh0ZXJuYWwtdXJsLmh0bWwKLWh0dHAvdGVzdHMvbWlzYy93aW5kb3ctZG90LXN0b3Au
aHRtbAogaHR0cC90ZXN0cy9tdWx0aXBhcnQvcG9saWN5LWlnbm9yZS1jcmFzaC5waHAKIGh0dHAv
dGVzdHMvc2VjdXJpdHkvZmVlZC11cmxzLWZyb20tcmVtb3RlLmh0bWwKIAorIyBSZXNvdXJjZUVy
cm9yIGRvbWFpbiBuZWVkcyB0byBiZSBwcm9wZXJseSBzZXQgaW4gRnJhbWVMb2FkZXJDbGllbnQK
KyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTI5CitodHRwL3Rl
c3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1l
T3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0bWwKK2h0dHAv
dGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRh
Zy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWcuaHRtbAoraHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55Lmh0bWwKK2h0dHAvdGVz
dHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtcGFyZW50LXNhbWUtb3Jp
Z2luLWRlbnkuaHRtbAoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1zaG91bGQtY2Fu
Y2VsLWxvYWQuaHRtbAorCiAjIFRlc3QgdGltZXMgb3V0ICh2aWEgR1RLKykKICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDg1CiBodHRwL3Rlc3RzL21pc2MvaWZy
YW1lLXJlcGFyZW50aW5nLWlkLWNvbGxpc2lvbi5odG1sCkBAIC0yMzU3LDE4ICsyMzU5LDEwIEBA
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVmZXJyZXItcG9saWN5LWh0dHBzLW9yaWdpbi5odG1sCiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3JlZmVycmVyLXBvbGljeS1yZWRpcmVjdC5odG1sCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXJlZGlyZWN0LnhtbAogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHktcmVkaXJlY3QueG1s
Ci1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctaW4tYm9keS5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMv
eC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWFsbG93Lmh0
bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCi1odHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWcuaHRtbAotaHR0
cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55Lmh0bWwK
LWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtcGFyZW50
LXNhbWUtb3JpZ2luLWFsbG93Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9u
cy94LWZyYW1lLW9wdGlvbnMtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbAogaHR0cC90ZXN0
cy9zc2wvcmVmZXJlci0zMDEuaHRtbAogaHR0cC90ZXN0cy9zc2wvcmVmZXJlci0zMDMuaHRtbAog
aHR0cC90ZXN0cy9zc2wvdmVyaWZ5LXNzbC1lbmFibGVkLnBocAogaHR0cC90ZXN0cy93b3JrZXJz
L3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24uaHRtbAotaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hYm9ydC1zaG91bGQtY2FuY2VsLWxvYWQuaHRtbAogaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy13aGl0ZWxpc3QtcmVxdWVzdC1oZWFkZXJzLmh0
bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC1ub3Bhc3N3b3JkLmh0bWwK
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC1ub3VzZXIuaHRtbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IGNiZGJlMDQuLjVjYjliZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAxMi0wNC0xNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdIERSVCBzaG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0
Q29udHJvbGxlcidzIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgTGF5
b3V0VGVzdENvbnRyb2xsZXIncyAKKyAgICAgICAgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
IGluIEVGTCdzIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9yZXF1ZXN0X3dp
bGxfc2VuZCk6CisgICAgICAgIChld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQpOgorICAgICAg
ICAoZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVz
b3VyY2VfZmluaXNoZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVk
KToKKyAgICAgICAgKGV3a19mcmFtZV9sb2FkX2Vycm9yKToKKyAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmg6CisgICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192
aWV3Lmg6CisKIDIwMTItMDQtMTMgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNh
bnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgY29sb3IgY2hvb3Nl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IDkzNTE4MjkuLjRjYmQ1ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHAKQEAgLTE3MCw3ICsxNzAsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZAogdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIGNv
cmVSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CiAgICAg
Q1N0cmluZyB1cmwgPSBjb3JlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgREJH
KCJSZXNvdXJjZSB1cmw9JXMiLCB1cmwuZGF0YSgpKTsKKyAgICBDU3RyaW5nIGZpcnN0UGFydHkg
PSBjb3JlUmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKKyAg
ICBDU3RyaW5nIGh0dHBNZXRob2QgPSBjb3JlUmVxdWVzdC5odHRwTWV0aG9kKCkudXRmOCgpOwor
ICAgIERCRygiUmVzb3VyY2UgdXJsPSVzLCBmaXJzdF9wYXJ0eT0lcywgaHR0cF9tZXRob2Q9JXMi
LCB1cmwuZGF0YSgpLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCkpOwogCiAg
ICAgLy8gV2Ugd2FudCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgcmVxdWVzdCBmb3IgYSBkb2N1
bWVudCB0byBiZSBsb2FkZWQgaW50bwogICAgIC8vIHRoZSBtYWluIGZyYW1lLCBhIHN1Yi1mcmFt
ZSwgb3IgdGhlIHN1Yi1vYmplY3RzIGluIHRoYXQgZG9jdW1lbnQuCkBAIC0xODAsMTQgKzE4Miwz
MCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChE
b2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZwogICAgICAgICAgICAgaXNNYWluRnJhbWVSZXF1
ZXN0ID0gKGxvYWRlciA9PSBmcmFtZUxvYWRlci0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
ICYmIGZyYW1lTG9hZGVyLT5pc0xvYWRpbmdNYWluRnJhbWUoKSk7CiAgICAgfQogCi0gICAgRXdr
X0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgMCwgaWRlbnRpZmllciwgbV9mcmFt
ZSwgaXNNYWluRnJhbWVSZXF1ZXN0IH07CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qg
cmVxdWVzdCA9IHsgMCwgMCwgMCwgaWRlbnRpZmllciwgbV9mcmFtZSwgaXNNYWluRnJhbWVSZXF1
ZXN0IH07CiAgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qgb3JpZyA9IHJlcXVlc3Q7IC8q
IEluaXRpYWxpemUgY29uc3QgZmllbGRzLiAqLwogCiAgICAgb3JpZy51cmwgPSByZXF1ZXN0LnVy
bCA9IHVybC5kYXRhKCk7CisgICAgcmVxdWVzdC5maXJzdF9wYXJ0eSA9IGZpcnN0UGFydHkuZGF0
YSgpOworICAgIHJlcXVlc3QuaHR0cF9tZXRob2QgPSBodHRwTWV0aG9kLmRhdGEoKTsKIAotICAg
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChtX2ZyYW1lLCAmcmVxdWVzdCk7CisgICAgRXdr
X0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlOworICAgIEV3a19GcmFt
ZV9SZXNvdXJjZV9SZXNwb25zZSByZXNwb25zZUJ1ZmZlcjsKKyAgICBDU3RyaW5nIHJlZGlyZWN0
VXJsOwogCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNv
dXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgJnJlcXVlc3QpOworICAgIGlmIChjb3JlUmVzcG9uc2Uu
aXNOdWxsKCkpCisgICAgICAgIHJlZGlyZWN0UmVzcG9uc2UgPSAwOworICAgIGVsc2UgeworICAg
ICAgICByZWRpcmVjdFVybCA9IGNvcmVSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51dGY4KCk7Cisg
ICAgICAgIHJlc3BvbnNlQnVmZmVyLnVybCA9IHJlZGlyZWN0VXJsLmRhdGEoKTsKKyAgICAgICAg
cmVzcG9uc2VCdWZmZXIuc3RhdHVzX2NvZGUgPSBjb3JlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KTsKKyAgICAgICAgcmVkaXJlY3RSZXNwb25zZSA9ICZyZXNwb25zZUJ1ZmZlcjsKKyAgICB9Cisg
ICAgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzIG1lc3NhZ2VzID0geyAmcmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSB9OworCisgICAgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKG1fZnJh
bWUsICZtZXNzYWdlcyk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCAmbWVzc2FnZXMpOwogCiAgICAgaWYg
KHJlcXVlc3QudXJsICE9IG9yaWcudXJsKSB7CiAgICAgICAgIGNvcmVSZXF1ZXN0LnNldFVSTChL
VVJMKEtVUkwoKSwgcmVxdWVzdC51cmwpKTsKQEAgLTIwNyw3ICsyMjUsOSBAQCBib29sIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVy
VG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QpCiB7CiAgICAgQ1N0
cmluZyB1cmwgPSBjb3JlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgREJHKCJS
ZXNvdXJjZSB1cmw9JXMiLCB1cmwuZGF0YSgpKTsKKyAgICBDU3RyaW5nIGZpcnN0UGFydHkgPSBj
b3JlUmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKKyAgICBD
U3RyaW5nIGh0dHBNZXRob2QgPSBjb3JlUmVxdWVzdC5odHRwTWV0aG9kKCkudXRmOCgpOworICAg
IERCRygiUmVzb3VyY2UgdXJsPSVzLCBGaXJzdCBwYXJ0eT0lcywgSFRUUCBtZXRob2Q9JXMiLCB1
cmwuZGF0YSgpLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCkpOwogCiAgICAg
Ym9vbCBpc01haW5GcmFtZVJlcXVlc3QgPSBmYWxzZTsKICAgICBpZiAobG9hZGVyKSB7CkBAIC0y
MTUsOCArMjM1LDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6YXNzaWduSWRlbnRpZmll
clRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGkKICAgICAgICAgICAgIGlzTWFp
bkZyYW1lUmVxdWVzdCA9IChsb2FkZXIgPT0gZnJhbWVMb2FkZXItPnByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIoKSAmJiBmcmFtZUxvYWRlci0+aXNMb2FkaW5nTWFpbkZyYW1lKCkpOwogICAgIH0K
IAotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIGlkZW50aWZp
ZXIsIG1fZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9OworICAgIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IHVybC5kYXRhKCksIGZpcnN0UGFydHkuZGF0YSgpLCBodHRw
TWV0aG9kLmRhdGEoKSwgaWRlbnRpZmllciwgbV9mcmFtZSwgaXNNYWluRnJhbWVSZXF1ZXN0IH07
CiAgICAgZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIobV9mcmFtZSwgJnJlcXVl
c3QpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3Vy
Y2UscmVxdWVzdCxuZXciLCAmcmVxdWVzdCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQpAQCAtMjUzLDEzICsyNzQsMjEg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQogICAg
IGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGNvcmVSZXNwb25zZSkKIHsKICAg
ICAvLyBVcGRhdGUgb3VyIGtub3dsZWRnZSBvZiByZXF1ZXN0IHNvdXAgZmxhZ3MgLSBzb21lIGFy
ZSBvbmx5IHNldAogICAgIC8vIGFmdGVyIHRoZSByZXF1ZXN0IGlzIGRvbmUuCi0gICAgbG9hZGVy
LT5yZXF1ZXN0KCkuc2V0U291cE1lc3NhZ2VGbGFncyhyZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdz
KCkpOworICAgIGxvYWRlci0+cmVxdWVzdCgpLnNldFNvdXBNZXNzYWdlRmxhZ3MoY29yZVJlc3Bv
bnNlLnNvdXBNZXNzYWdlRmxhZ3MoKSk7CisKKyAgICBtX3Jlc3BvbnNlID0gY29yZVJlc3BvbnNl
OworCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIHJlc3BvbnNlID0geyAwLCBjb3Jl
UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSB9OworICAgIENTdHJpbmcgdXJsID0gY29yZVJlc3Bv
bnNlLnVybCgpLnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXNwb25zZS51cmwgPSB1cmwuZGF0YSgp
OwogCi0gICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOworICAgIGV3a19mcmFtZV9yZXNwb25zZV9y
ZWNlaXZlZChtX2ZyYW1lLCAmcmVzcG9uc2UpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsICZyZXNwb25z
ZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KQpAQCAtMzA3LDEwICszMzYsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnUKIAogICAgIC8v
IGlmIG5vdCBhY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCAtIGxvb2sgYXQgUXQgLT4gUG9saWN5SWdu
b3JlOwogICAgIC8vIEZJWE1FOiBkbyBwcm9wZXIgY2hlY2sgYW5kIG9ubHkgcmVzZXQgZm9ybXMg
d2hlbiBvbiBQb2xpY3lJZ25vcmUKLSAgICBjaGFyKiB1cmwgPSBzdHJkdXAocmVzb3VyY2VSZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IHVybCwgMCwgbV9mcmFtZSwgZmFsc2UgfTsKKyAgICBDU3Ry
aW5nIHVybCA9IHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgQ1N0
cmluZyBmaXJzdFBhcnR5ID0gcmVzb3VyY2VSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCku
c3RyaW5nKCkudXRmOCgpOworICAgIENTdHJpbmcgaHR0cE1ldGhvZCA9IHJlc291cmNlUmVxdWVz
dC5odHRwTWV0aG9kKCkudXRmOCgpOworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJl
cXVlc3QgPSB7IHVybC5kYXRhKCksIGZpcnN0UGFydHkuZGF0YSgpLCBodHRwTWV0aG9kLmRhdGEo
KSwgMCwgbV9mcmFtZSwgZmFsc2UgfTsKICAgICBib29sIHJldCA9IGV3a192aWV3X25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uKG1fdmlldywgJnJlcXVlc3QpOwotICAgIGZyZWUodXJsKTsKIAog
ICAgIFBvbGljeUFjdGlvbiBwb2xpY3k7CiAgICAgaWYgKCFyZXQpCkBAIC03MzUsMTIgKzc2NSwz
MSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50
TGVuZ3RoKERvY3VtZW50TG9hZGVyKiwgdW5zaQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBld2tfZnJhbWVfbG9h
ZF9yZXNvdXJjZV9maW5pc2hlZChtX2ZyYW1lLCBpZGVudGlmaWVyKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCAm
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
RmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnIpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnIpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBFd2tfRnJhbWVfTG9hZF9FcnJvciBlcnJvcjsKKyAgICBDU3RyaW5nIGVycm9y
RG9tYWluID0gZXJyLmRvbWFpbigpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGVycm9yRGVzY3JpcHRp
b24gPSBlcnIubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCk7CisgICAgQ1N0cmluZyBmYWls
aW5nVXJsID0gZXJyLmZhaWxpbmdVUkwoKS51dGY4KCk7CisKKyAgICBEQkcoImV3a0ZyYW1lPSVw
LCByZXNvdXJjZT0lbGQsIGVycm9yPSVzICglZCwgY2FuY2VsbGF0aW9uPSVoaHUpIFwiJXNcIiwg
dXJsPSVzIiwKKyAgICAgICAgbV9mcmFtZSwgaWRlbnRpZmllciwgZXJyb3JEb21haW4uZGF0YSgp
LCBlcnIuZXJyb3JDb2RlKCksIGVyci5pc0NhbmNlbGxhdGlvbigpLAorICAgICAgICBlcnJvckRl
c2NyaXB0aW9uLmRhdGEoKSwgZmFpbGluZ1VybC5kYXRhKCkpOworCisgICAgZXJyb3IuY29kZSA9
IGVyci5lcnJvckNvZGUoKTsKKyAgICBlcnJvci5pc19jYW5jZWxsYXRpb24gPSBlcnIuaXNDYW5j
ZWxsYXRpb24oKTsKKyAgICBlcnJvci5kb21haW4gPSBlcnJvckRvbWFpbi5kYXRhKCk7CisgICAg
ZXJyb3IuZGVzY3JpcHRpb24gPSBlcnJvckRlc2NyaXB0aW9uLmRhdGEoKTsKKyAgICBlcnJvci5m
YWlsaW5nX3VybCA9IGZhaWxpbmdVcmwuZGF0YSgpOworICAgIGVycm9yLnJlc291cmNlX2lkZW50
aWZpZXIgPSBpZGVudGlmaWVyOworICAgIGVycm9yLmZyYW1lID0gbV9mcmFtZTsKKworICAgIGV3
a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZChtX2ZyYW1lLCAmZXJyb3IpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxyZXNvdXJjZSxmYWlsZWQi
LCAmZXJyb3IpOwogfQogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBlZmNhODZjLi40Yjk4ZDY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMTIwNywxNSArMTIwNywxNSBAQCB2b2lkIGV3a19mcmFt
ZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogICogY2hhbmdpbmcgdmFsdWVzIGlu
IEBwYXJhbSByZXF1ZXN0LgogICoKICAqIEBwYXJhbSBld2tGcmFtZSBGcmFtZS4KLSAqIEBwYXJh
bSByZXF1ZXN0IFJlcXVlc3QgZGV0YWlscyB0aGF0IHVzZXIgbWF5IG92ZXJyaWRlLiBXaGVuZXZl
ciB2YWx1ZXMgb24KLSAqIHRoaXMgc3RydWN0IGNoYW5nZXMsIGl0IG11c3QgYmUgcHJvcGVybHkg
bWFsbG9jJ2QgYXMgaXQgd2lsbCBiZSBmcmVlZAotICogYWZ0ZXJ3YXJkcy4KKyAqIEBwYXJhbSBt
ZXNzYWdlcyBNZXNzYWdlcyBjb250YWluaW5nIHRoZSByZXF1ZXN0IGRldGFpbHMgdGhhdCB1c2Vy
IG1heSBvdmVycmlkZSBhbmQgYQorICogcG9zc2libGUgcmVkaXJlY3QgcmVwb25zZS4gV2hlbmV2
ZXIgdmFsdWVzIG9uIHRoaXMgc3RydWN0IGNoYW5nZXMsIGl0IG11c3QgYmUgcHJvcGVybHkKKyAq
IG1hbGxvYydkIGFzIGl0IHdpbGwgYmUgZnJlZWQgYWZ0ZXJ3YXJkcy4KICAqCiAgKiBFbWl0cyBz
aWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIgogICovCi12b2lkIGV3a19mcmFtZV9y
ZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBld2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqIG1lc3NhZ2Vz
KQogewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJyZXNv
dXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgcmVxdWVzdCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tGcmFtZSwgInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCBtZXNz
YWdlcyk7CiB9CiAKIC8qKgpAQCAtMTIzNCw2ICsxMjM0LDIwIEBAIHZvaWQgZXdrX2ZyYW1lX3Jl
cXVlc3RfYXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tf
RnJhbWVfCiAKIC8qKgogICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoYXQgYSByZXNwb25zZSB0
byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVkLgorICoKKyAqIEBwYXJhbSBld2tGcmFt
ZSBGcmFtZS4KKyAqIEBwYXJhbSByZXF1ZXN0IFJlc3BvbnNlIGRldGFpbHMuIE5vIGNoYW5nZXMg
YXJlIGFsbG93ZWQgdG8gZmllbGRzLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJl
c3BvbnNlLHJlY2VpdmVkIgorICovCit2b2lkIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZlZChF
dmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9u
c2UpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tGcmFtZSwgInJl
c291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgcmVzcG9uc2UpOworfQorCisvKioKKyAqIEBpbnRl
cm5hbAogICogUmVwb3J0cyB0aGF0IGZpcnN0IG5hdmlnYXRpb24gb2NjdXJyZWQKICAqCiAgKiBA
cGFyYW0gZXdrRnJhbWUgRnJhbWUuCkBAIC0xMzU4LDYgKzEzNzIsNyBAQCB2b2lkIGV3a19mcmFt
ZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JE
b21haW4sIGludAogICAgICAgICBidWZmZXIuaXNfY2FuY2VsbGF0aW9uID0gaXNDYW5jZWxsYXRp
b247CiAgICAgICAgIGJ1ZmZlci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRpb247CiAgICAg
ICAgIGJ1ZmZlci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7CisgICAgICAgIGJ1ZmZlci5yZXNv
dXJjZV9pZGVudGlmaWVyID0gMDsKICAgICAgICAgYnVmZmVyLmZyYW1lID0gZXdrRnJhbWU7CiAg
ICAgICAgIGVycm9yID0gJmJ1ZmZlcjsKICAgICB9CkBAIC0xMzY4LDYgKzEzODMsMjkgQEAgdm9p
ZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNo
YXIqIGVycm9yRG9tYWluLCBpbnQKIAogLyoqCiAgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgcmVz
b3VyY2UgbG9hZCBmaW5pc2hlZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHJlc291cmNl
LGZpbmlzaGVkIiB3aXRoIHRoZSByZXNvdXJjZQorICogcmVxdWVzdCBpZGVudGlmaWVyLgorICov
Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLHJlc291cmNlLGZpbmlzaGVkIiwgJmlkZW50
aWZpZXIpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyByZXNvdXJjZSBsb2Fk
IGZhaWx1cmUsIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCisgKgorICogRW1pdHMgc2lnbmFsOiAi
bG9hZCxyZXNvdXJjZSxmYWlsZWQiIHdpdGggdGhlIGVycm9yIGluZm9ybWF0aW9uLgorICovCit2
b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZChFdmFzX09iamVjdCogZXdrRnJhbWUs
IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCBlcnJvcik7Cit9
CisKKy8qKgorICogQGludGVybmFsCiAgKiBSZXBvcnRzIGxvYWQgZmFpbGVkIHdpdGggZXJyb3Ig
aW5mb3JtYXRpb24uCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2lu
dGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgpAQCAtMTM4Nyw2ICsxNDI1LDcgQEAgdm9pZCBl
d2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVy
cm9yRG9tYWluLCBpbnQgZXIKICAgICBlcnJvci5kb21haW4gPSBlcnJvckRvbWFpbjsKICAgICBl
cnJvci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRpb247CiAgICAgZXJyb3IuZmFpbGluZ191
cmwgPSBmYWlsaW5nVXJsOworICAgIGVycm9yLnJlc291cmNlX2lkZW50aWZpZXIgPSAwOwogICAg
IGVycm9yLmZyYW1lID0gZXdrRnJhbWU7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tGcmFtZSwgImxvYWQsZXJyb3IiLCAmZXJyb3IpOwogICAgIEVXS19GUkFNRV9TRF9H
RVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5oCmluZGV4IDk0MjQyOGMuLjgyMmQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgK
QEAgLTQ1LDYgKzQ1LDEwIEBACiAgKiAgLSAibG9hZCxmaW5pc2hlZCIsIGNvbnN0IEV3a19GcmFt
ZV9Mb2FkX0Vycm9yKjogcmVwb3J0cyBsb2FkCiAgKiAgICBmaW5pc2hlZCBhbmQgaXQgZ2l2ZXMg
QGMgTlVMTCBvbiBzdWNjZXNzIG9yIHBvaW50ZXIgdG8KICAqICAgIHN0cnVjdHVyZSBkZWZpbmlu
ZyB0aGUgZXJyb3IuCisgKiAgLSAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIHVuc2lnbmVkIGxv
bmc6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZCBhbmQgaXQgZ2l2ZXMKKyAqICAgIGl0
cyBpZGVudGlmaWVyLgorICogIC0gImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgRXdrX0ZyYW1lX0xv
YWRfRXJyb3I6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmYWlsdXJlIGFuZCBpdAorICogICAgZ2l2
ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJyb3IgYXMgYW4gYXJndW1l
bnQuCiAgKiAgLSAibG9hZCxmaXJzdGxheW91dCxmaW5pc2hlZCIsIHZvaWQ6IGZyYW1lIGZpbmlz
aGVkIGZpcnN0IGxheW91dC4KICAqICAtICJsb2FkLG5vbmVtcHR5bGF5b3V0LGZpbmlzaGVkIiwg
dm9pZDogZnJhbWUgZmluaXNoZWQgZmlyc3QKICAqICAgIG5vbi1lbXB0eSBsYXlvdXQuCkBAIC01
Nyw4ICs2MSwxMCBAQAogICogIC0gIm5hdmlnYXRpb24sZmlyc3QiLCB2b2lkOiBmaXJzdCBuYXZp
Z2F0aW9uIHdhcyBvY2N1cnJlZC4KICAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0CiAgKiAgICB0aGVyZSdzIGEgbmV3
IHJlc291cmNlIHJlcXVlc3QuCi0gKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIEV3
a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSB3aWxsCisgKiAgLSAicmVzb3Vy
Y2UscmVxdWVzdCx3aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVz
b3VyY2Ugd2lsbAogICogICAgYmUgcmVxdWVzdGVkLgorICogIC0gInJlc291cmNlLHJlc3BvbnNl
LHJlY2VpdmVkIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKjogcmVwb3J0cyB0aGF0IGEg
cmVzcG9uc2UKKyAqICAgIHRvIGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCiAgKiAg
LSAic3RhdGUsc2F2ZSIsIHZvaWQ6IGZyYW1lJ3Mgc3RhdGUgd2lsbCBiZSBzYXZlZCBhcyBhIGhp
c3RvcnkgaXRlbS4KICAqICAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9m
IHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgogICogIC0gInVyaSxjaGFuZ2VkIiwgY29uc3Qg
Y2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KQEAgLTkxLDI1ICs5Nyw1
MCBAQCBzdHJ1Y3QgX0V3a19GcmFtZV9Mb2FkX0Vycm9yIHsKICAgICBjb25zdCBjaGFyICpkb21h
aW47IC8qKjwgZXJyb3IgZG9tYWluIG5hbWUgKi8KICAgICBjb25zdCBjaGFyICpkZXNjcmlwdGlv
bjsgLyoqPCBlcnJvciBkZXNjcmlwdGlvbiBhbHJlYWR5IGxvY2FsaXplZCAqLwogICAgIGNvbnN0
IGNoYXIgKmZhaWxpbmdfdXJsOyAvKio8IHRoZSB1cmwgdGhhdCBmYWlsZWQgdG8gbG9hZCAqLwor
ICAgIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VfaWRlbnRpZmllcjsgLyoqPCBpZGVudGlmaWVyIG9m
IHJlc291cmNlICovCiAgICAgRXZhc19PYmplY3QgKmZyYW1lOyAvKio8IGZyYW1lIHdoZXJlIHRo
ZSBmYWlsdXJlIGhhcHBlbmVkICovCiB9OwogCiAvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
X0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0LgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9S
ZXNvdXJjZV9SZXF1ZXN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0OworCiAvKioKLSAqIEBi
cmllZiAgIFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCByZXNvdXJjZSByZXF1ZXN0LgorICogQGJy
aWVmICAgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc291cmNlIHJlcXVl
c3QuCiAgKgotICogRGV0YWlscyBnaXZlbiBiZWZvcmUgYSByZXNvdXJjZSBpcyBsb2FkZWQgb24g
YSBnaXZlbiBmcmFtZS4gSXQncyB1c2VkIGJ5Ci0gKiBld2tfZnJhbWVfcmVxdWVzdF93aWxsX3Nl
bmQoKSB0byBpbmZvcm0gdGhlIGRldGFpbHMgb2YgYSB0by1iZS1sb2FkZWQKLSAqIHJlc291cmNl
LCBhbGxvd2luZyB0aGVtIHRvIGJlIG92ZXJyaWRkZW4uCisgKiBEZXRhaWxzIGdpdmVuIGJlZm9y
ZSBhIHJlc291cmNlIGlzIGxvYWRlZCBvbiBhIGdpdmVuIGZyYW1lLiBJdCdzIHVzZWQgaW4KKyAq
IEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyB0byBpbmZvcm0gYWJvdXQgdGhlIGRldGFpbHMg
b2YgYSByZXNvdXJjZSByZXF1ZXN0LgogICovCiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9S
ZXF1ZXN0IHsKICAgICBjb25zdCBjaGFyICp1cmw7IC8qKjwgdXJsIG9mIHRoZSByZXNvdXJjZSAq
LworICAgIGNvbnN0IGNoYXIgKmZpcnN0X3BhcnR5OyAvKio8IGZpcnN0IHBhcnR5IGZvciBjb29r
aWVzLCBjYW4gbm90IGJlIGNoYW5nZWQgICovCisgICAgY29uc3QgY2hhciAqaHR0cF9tZXRob2Q7
IC8qKjwgaHR0cCBtZXRob2QsIGNhbiBub3QgYmUgY2hhbmdlZCAgKi8KICAgICBjb25zdCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXI7IC8qKjwgaWRlbnRpZmllciBvZiByZXNvdXJjZSwgY2FuIG5v
dCBiZSBjaGFuZ2VkICovCiAgICAgRXZhc19PYmplY3QgKmZyYW1lOyAvKio8IGZyYW1lIHdoZXJl
IHRoZSByZXNvdXJjZSBpcyByZXF1ZXN0ZWQgKi8KICAgICBFaW5hX0Jvb2wgaXNfbWFpbl9mcmFt
ZV9yZXF1ZXN0OyAvKiogPCBpbmRpY2F0ZXMgaWYgdGhlIHJlcXVlc3QgaXMgZm9yIHRoZSBtYWlu
IGZyYW1lICovCiB9OwogCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9S
ZXNvdXJjZV9SZXNwb25zZS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVz
cG9uc2UgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlOworCisvKioKKyAqIEBicmllZiAgIFN0
cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNwb25zZSB0byBhIHJlc291cmNl
IHJlcXVlc3QuCisgKgorICogRGV0YWlscyBnaXZlbiBpbiB0aGUgcmVzcG9uc2UgdG8gYSByZXNv
dXJjZSByZXF1ZXN0LiBJdCdzIHVzZWQgYnkKKyAqIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZl
ZCgpIHRvIGluZm9ybSBhYm91dCB0aGUgZGV0YWlscyBvZiBhIHJlc3BvbnNlLgorICovCitzdHJ1
Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSB7CisgICAgY29uc3QgY2hhciAqdXJsOyAv
Kio8IHVybCBvZiB0aGUgcmVzb3VyY2UgKi8KKyAgICBpbnQgc3RhdHVzX2NvZGU7IC8qKjwgaHR0
cCBzdGF0dXMgY29kZSAqLworfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tf
RnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMuCit0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291
cmNlX01lc3NhZ2VzIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlczsKKworc3RydWN0IF9Fd2tf
RnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMgeworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
ICpyZXF1ZXN0OyAvKio8IHJlc291cmNlIHJlcXVlc3QgKi8KKyAgICBFd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVzcG9uc2UgKnJlZGlyZWN0X3Jlc3BvbnNlOyAvKio8IHJlZGlyZWN0IHJlc3BvbnNlLCBj
YW4gbm90IGJlIGNoYW5nZWQgKi8KK307CisKIC8vLyBFbnVtIGNvbnRhaW5pbmcgaGl0IHRlc3Qg
ZGF0YSB0eXBlcwogdHlwZWRlZiBlbnVtIHsKICAgICBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRF
WFRfRE9DVU1FTlQgPSAxIDw8IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCmluZGV4
IDk2ZmE3NTMuLjVmZWI4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC0y
MTcsMTEgKzIxNywxNCBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X2ZpbmlzaGVk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0
X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFt
ZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3
a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciog
ZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0IGNo
YXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwpOwordm9pZCBld2tf
ZnJhbWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcik7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcik7CiB2
b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hh
ciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0
IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwpOwogdm9pZCBl
d2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAK
LXZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwg
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpOwordm9pZCBld2tfZnJhbWVfcmVx
dWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2Vf
TWVzc2FnZXMqIG1lc3NhZ2VzKTsKIHZvaWQgZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50
aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVx
dWVzdCogcmVxdWVzdCk7Cit2b2lkIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZlZChFdmFzX09i
amVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpOwog
dm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pOwogCiB2b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9m
aXJzdF9uYXZpZ2F0aW9uKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5oCmluZGV4IDM3NDM4OTguLjg1NjVhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
CkBAIC02MCw2ICs2MCwxMCBAQAogICogIC0gImxvYWQscHJvZ3Jlc3MiLCBkb3VibGUqOiBsb2Fk
IHByb2dyZXNzIGlzIGNoYW5nZWQgKG92ZXJhbGwgdmFsdWUKICAqICAgIGZyb20gMC4wIHRvIDEu
MCwgY29ubmVjdCB0byBpbmRpdmlkdWFsIGZyYW1lcyBmb3IgZmluZSBncmFpbmVkKS4KICAqICAt
ICJsb2FkLHByb3Zpc2lvbmFsIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQu
CisgKiAgLSAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIHVuc2lnbmVkIGxvbmc6IHJlcG9ydHMg
cmVzb3VyY2UgbG9hZCBmaW5pc2hlZCBhbmQgaXQgZ2l2ZXMKKyAqICAgIGl0cyBpZGVudGlmaWVy
LgorICogIC0gImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgRXdrX0ZyYW1lX0xvYWRfRXJyb3I6IHJl
cG9ydHMgcmVzb3VyY2UgbG9hZCBmYWlsdXJlIGFuZCBpdAorICogICAgZ2l2ZXMgYSBwb2ludGVy
IHRvIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgZXJyb3IgYXMgYW4gYXJndW1lbnQuCiAgKiAgLSAi
bG9hZCxzdGFydGVkIiwgdm9pZDogZnJhbWUgc3RhcnRlZCBsb2FkaW5nIHRoZSBkb2N1bWVudC4K
ICAqICAtICJtZW51YmFyLHZpc2libGUsZ2V0IiwgRWluYV9Cb29sICo6IGV4cGVjdHMgYSBAYyBF
SU5BX1RSVUUgaWYgbWVudWJhciBpcwogICogICAgdmlzaWJsZTsgQGMgRUlOQV9GQUxTRSwgb3Ro
ZXJ3aXNlLgpAQCAtNjcsOCArNzEsMTEgQEAKICAqICAtICJtaXhlZGNvbnRlbnQsZGlzcGxheWVk
Iiwgdm9pZDogYW55IG9mIHRoZSBjb250YWluaW5nIGZyYW1lcyBoYXMgbG9hZGVkIGFuZCBkaXNw
bGF5ZWQgbWl4ZWQgY29udGVudC4KICAqICAtICJtaXhlZGNvbnRlbnQscnVuIiwgdm9pZDogYW55
IG9mIHRoZSBjb250YWluaW5nIGZyYW1lcyBoYXMgbG9hZGVkIGFuZCBydW4gbWl4ZWQgY29udGVu
dC4KICAqICAtICJyZWFkeSIsIHZvaWQ6IHBhZ2UgaXMgZnVsbHkgbG9hZGVkLgotICogIC0gInJl
c291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo6IGEg
cmVzb3VyY2Ugd2lsbAotICogICAgYmUgcmVxdWVzdGVkLgorICogIC0gInJlc291cmNlLHJlcXVl
c3QsbmV3IiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiByZXBvcnRzIHRoYXQKKyAqICAg
IHRoZXJlJ3MgYSBuZXcgcmVzb3VyY2UgcmVxdWVzdC4KKyAqICAtICJyZXNvdXJjZSxyZXF1ZXN0
LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKjogYSByZXNvdXJjZSB3aWxs
IGJlIHJlcXVlc3RlZC4KKyAqICAgICBhbmQgdGhlIHBvc3NpYmxlIHJlZGlyZWN0IHJlc3BvbnNl
LgorICogIC0gInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgRXdrX0ZyYW1lX1Jlc291cmNl
X1Jlc3BvbnNlKjogdGhlIG5ldHdvcmsgcmVzcG9uc2UgZm9yIGEgcmVzb3VyY2UuCiAgKiAgLSAi
c2Nyb2xsYmFycyx2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9U
UlVFIGlmIHNjcm9sbGJhcnMKICAqICAgIGFyZSB2aXNpYmxlOyBAYyBFSU5BX0ZBTFNFLCBvdGhl
cndpc2UuCiAgKiAgLSAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIsIEVpbmFfQm9vbDogc2V0cyBz
Y3JvbGxiYXJzIHZpc2liaWxpdHkuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMjIyNzZiZS4uNjg0YmYyMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA0LTE3
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAg
ICAgW0VGTF0gRFJUIHNob3VsZCBzdXBwb3J0IExheW91dFRlc3RDb250cm9sbGVyJ3MgZHVtcFJl
c291cmNlTG9hZENhbGxiYWNrcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcidz
CisgICAgICAgIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBpbiBFRkwncyBEdW1wUmVuZGVy
VHJlZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9t
ZS5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlVmlldyk6CisgICAg
ICAgIChwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKHVybFN1aXRhYmxlRm9y
VGVzdFJlc3VsdCk6CisgICAgICAgIChkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25XaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGaW5pc2hlZCk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQpOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uTmV3UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaDoKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlQ2hyb21lKToKKwogMjAxMi0wNC0xNiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z25zQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBVc2UgY29uZmlndXJlIGluc3RlYWQgb2Yg
YXV0b2dlbi5zaCBmb3IgZ3RrKwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZUNocm9tZS5jcHAKaW5kZXggYjM5ZTEyNS4uNDYzZmNmNSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCkBAIC00Nyw2
ICs0Nyw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitIYXNoTWFwPHVuc2lnbmVk
IGxvbmcsIENTdHJpbmc+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjptX2R1bXBBc3NpZ25lZFVybHM7
CisKIFBhc3NPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IER1bXBSZW5kZXJUcmVlQ2hyb21l
OjpjcmVhdGUoRXZhcyogZXZhcykKIHsKICAgICBPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+
IGNocm9tZSA9IGFkb3B0UHRyKG5ldyBEdW1wUmVuZGVyVHJlZUNocm9tZShldmFzKSk7CkBAIC05
NSw3ICs5NywxMSBAQCBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZp
ZXcoKSBjb25zdAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAid2lu
ZG93LG9iamVjdCxjbGVhcmVkIiwgb25XaW5kb3dPYmplY3RDbGVhcmVkLCBtX2djQ29udHJvbGxl
ci5nZXQoKSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJzdGF0
dXNiYXIsdGV4dCxzZXQiLCBvblN0YXR1c2JhclRleHRTZXQsIDApOwogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIsIG9uRG9j
dW1lbnRMb2FkRmluaXNoZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCh2aWV3LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBvbk5ld1Jlc291cmNlUmVxdWVzdCwgMCk7
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJyZXNvdXJjZSxyZXF1
ZXN0LHdpbGxzZW5kIiwgb25XaWxsU2VuZFJlcXVlc3QsIDApOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBvblJl
c3BvbnNlUmVjZWl2ZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2
aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIG9uUmVzb3VyY2VMb2FkRmluaXNoZWQsIDAp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxyZXNvdXJj
ZSxmYWlsZWQiLCBvblJlc291cmNlTG9hZEZhaWxlZCwgMCk7CiAKICAgICByZXR1cm4gdmlldzsK
IH0KQEAgLTI5MywyNCArMjk5LDE1MSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkRv
Y3VtZW50TG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZQogICAgIH0K
IH0KIAorc3RhdGljIENTdHJpbmcgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFy
KiB1cmlTdHJpbmcpCit7CisgICAgaWYgKCF1cmlTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3Ry
aW5nKCk7CisKKyAgICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcp
OworCisgICAgaWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHVyaS5zdHJp
bmcoKS51dGY4KCk7CisKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHVyaS5wYXRoKCk7CisgICAg
c2l6ZV90IGluZGV4QmFzZU5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJyk7CisgICAg
U3RyaW5nIGJhc2VOYW1lOworICAgIGlmIChpbmRleEJhc2VOYW1lID09IG5vdEZvdW5kKQorICAg
ICAgICBiYXNlTmFtZSA9IHBhdGhTdHJpbmc7CisgICAgZWxzZQorICAgICAgICBiYXNlTmFtZSA9
IHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4QmFzZU5hbWUgKyAxKTsKKworICAgIFN0cmluZyBk
aXJOYW1lOworICAgIGlmIChpbmRleEJhc2VOYW1lICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHNp
emVfdCBpbmRleERpck5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJywgaW5kZXhCYXNl
TmFtZSAtIDEpOworICAgICAgICBpZiAoaW5kZXhEaXJOYW1lICE9IG5vdEZvdW5kKQorICAgICAg
ICAgICAgZGlyTmFtZSA9IHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4RGlyTmFtZSArIDEsIGlu
ZGV4QmFzZU5hbWUgLSBpbmRleERpck5hbWUgLSAxKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcmV0
ID0gZGlyTmFtZSArICIvIiArIGJhc2VOYW1lOworICAgIHJldHVybiByZXQudXRmOCgpOworfQor
CitzdGF0aWMgQ1N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJp
U3RyaW5nKQoreworICAgIEtVUkwgdXJpID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmlu
Zyk7CisgICAgaWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmco
dXJpU3RyaW5nKTsKKworICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSB1cmkucGF0aEFmdGVyTGFz
dFNsYXNoKCk7CisgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS5zdWJzdHJpbmcoc3RhcnRJbmRleCku
dXRmOCgpOworfQorCitzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBTdHJpbmcg
cmV0ID0gIjxOU1VSTFJlcXVlc3QgVVJMICI7CisgICAgcmV0ICs9IHBhdGhTdWl0YWJsZUZvclRl
c3RSZXN1bHQocmVxdWVzdC0+dXJsKS5kYXRhKCk7CisgICAgcmV0ICs9ICIsIG1haW4gZG9jdW1l
bnQgVVJMICI7CisgICAgcmV0ICs9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT5m
aXJzdF9wYXJ0eSkuZGF0YSgpOworICAgIHJldCArPSAiLCBodHRwIG1ldGhvZCAiOworICAgIHJl
dCArPSByZXF1ZXN0LT5odHRwX21ldGhvZCA/IFN0cmluZyhyZXF1ZXN0LT5odHRwX21ldGhvZCkg
OiAiKG5vbmUpIjsKKyAgICByZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9
CisKK3N0YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0
IEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgaWYgKCFyZXNw
b25zZSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoIihudWxsKSIpOworCisgICAgU3RyaW5nIHJl
dCA9ICI8TlNVUkxSZXNwb25zZSAiOworICAgIHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVz
dWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKTsKKyAgICByZXQgKz0gIiwgaHR0cCBzdGF0dXMgY29k
ZSAiOworICAgIHJldCArPSBTdHJpbmc6Om51bWJlcihyZXNwb25zZS0+c3RhdHVzX2NvZGUpOwor
ICAgIHJldCArPSAiPiI7CisKKyAgICByZXR1cm4gcmV0LnV0ZjgoKTsKK30KKworc3RhdGljIENT
dHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1lX0xvYWRfRXJy
b3IqIGVycm9yKQoreworICAgIFN0cmluZyByZXQgPSAiPE5TRXJyb3IgZG9tYWluICI7CisgICAg
cmV0ICs9IGVycm9yLT5kb21haW47CisgICAgcmV0ICs9ICIsIGNvZGUgIjsKKyAgICByZXQgKz0g
U3RyaW5nOjpudW1iZXIoZXJyb3ItPmNvZGUpOworICAgIGlmIChlcnJvci0+ZmFpbGluZ191cmwg
JiYgKmVycm9yLT5mYWlsaW5nX3VybCAhPSAnXDAnKSB7CisgICAgICAgIHJldCArPSAiLCBmYWls
aW5nIFVSTCBcIiI7CisgICAgICAgIHJldCArPSBlcnJvci0+ZmFpbGluZ191cmw7CisgICAgICAg
IHJldCArPSAiXCIiOworICAgIH0KKyAgICByZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51
dGY4KCk7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uV2lsbFNlbmRSZXF1ZXN0
KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKIHsKLSAgICBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0Kj4oZXZlbnRJbmZvKTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMq
IG1lc3NhZ2VzID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKj4oZXZl
bnRJbmZvKTsKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgICAgIHByaW50ZigiJXMgLSB3aWxsU2Vu
ZFJlcXVlc3QgJXMgcmVkaXJlY3RSZXNwb25zZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICBw
YXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwpLmRhdGEoKSwK
KyAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtZXNz
YWdlcy0+cmVxdWVzdCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KG1lc3NhZ2VzLT5yZWRpcmVjdF9yZXNwb25zZSkuZGF0YSgpKTsK
IAogICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsKCkpIHsKICAgICAgICAgLy8gQXMgcmVxdWVzdGVkIGJ5IHRoZSBMYXlvdXRU
ZXN0Q29udHJvbGxlciwgZG9uJ3QgcGVyZm9ybSB0aGUgcmVxdWVzdC4KLSAgICAgICAgcmVxdWVz
dC0+dXJsID0gMDsKKyAgICAgICAgbWVzc2FnZXMtPnJlcXVlc3QtPnVybCA9IDA7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBLVVJMIHVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBy
ZXF1ZXN0LT51cmwpOworICAgIEtVUkwgdXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1lc3Nh
Z2VzLT5yZXF1ZXN0LT51cmwpOwogCiAgICAgaWYgKHVybC5pc1ZhbGlkKCkKICAgICAgICAgJiYg
dXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKQogICAgICAgICAmJiB1cmwuaG9zdCgpICE9ICIx
MjcuMC4wLjEiCiAgICAgICAgICYmIHVybC5ob3N0KCkgIT0gIjI1NS4yNTUuMjU1LjI1NSIKICAg
ICAgICAgJiYgdXJsLmhvc3QoKS5sb3dlcigpICE9ICJsb2NhbGhvc3QiKSB7Ci0gICAgICAgIHBy
aW50ZigiQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMICVzXG4iLCByZXF1ZXN0LT51cmwp
OwotICAgICAgICByZXF1ZXN0LT51cmwgPSAwOworICAgICAgICBwcmludGYoIkJsb2NrZWQgYWNj
ZXNzIHRvIGV4dGVybmFsIFVSTCAlc1xuIiwgbWVzc2FnZXMtPnJlcXVlc3QtPnVybCk7CisgICAg
ICAgIG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwgPSAwOwogICAgIH0KIH0KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6b25SZXNwb25zZVJlY2VpdmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZv
aWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3Bv
bnNlID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKj4oZXZlbnRJbmZv
KTsKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBDU3RyaW5nIHJlc3BvbnNlRGVzY3JpcHRpb24o
ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVzcG9uc2UpKTsKKyAgICAgICAgcHJp
bnRmKCIlcyAtIGRpZFJlY2VpdmVSZXNwb25zZSAlc1xuIiwKKyAgICAgICAgICAgICAgIHBhdGhT
dWl0YWJsZUZvclRlc3RSZXN1bHQocmVzcG9uc2UtPnVybCkuZGF0YSgpLAorICAgICAgICAgICAg
ICAgcmVzcG9uc2VEZXNjcmlwdGlvbi5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gKnN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcqPihldmVudEluZm8pOworCisgICAgaWYgKCFkb25lICYm
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKQorICAg
ICAgICBwcmludGYoIiVzIC0gZGlkRmluaXNoTG9hZGluZ1xuIiwKKyAgICAgICAgICAgICAgICht
X2R1bXBBc3NpZ25lZFVybHMuY29udGFpbnMoaWRlbnRpZmllcikgPyBtX2R1bXBBc3NpZ25lZFVy
bHMudGFrZShpZGVudGlmaWVyKS5kYXRhKCkgOiAiPHVua25vd24+IikpOworfQorCit2b2lkIER1
bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc291cmNlTG9hZEZhaWxlZCh2b2lkKiwgRXZhc19PYmpl
Y3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9y
ID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX0xvYWRfRXJyb3IqPihldmVudEluZm8pOworCisgICAg
aWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxi
YWNrcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6ICVz
XG4iLAorICAgICAgICAgICAgICAgKG1fZHVtcEFzc2lnbmVkVXJscy5jb250YWlucyhlcnJvci0+
cmVzb3VyY2VfaWRlbnRpZmllcikgPyBtX2R1bXBBc3NpZ25lZFVybHMudGFrZShlcnJvci0+cmVz
b3VyY2VfaWRlbnRpZmllcikuZGF0YSgpIDogIjx1bmtub3duPiIpLAorICAgICAgICAgICAgICAg
ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZXJyb3IpLmRhdGEoKSk7Cit9CisKK3Zv
aWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uTmV3UmVzb3VyY2VSZXF1ZXN0KHZvaWQqLCBFdmFz
X09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVx
dWVzdCogcmVxdWVzdCA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0Kj4o
ZXZlbnRJbmZvKTsKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1
bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgbV9kdW1wQXNzaWduZWRVcmxzLmFk
ZChyZXF1ZXN0LT5pZGVudGlmaWVyLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3Qt
PnVybCkpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVD
aHJvbWUuaAppbmRleCBlMTU2YjRkLi44MjczMzZhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaApAQCAtMzEsOSArMzEsMTEgQEAKIAogI2lu
Y2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiBjbGFzcyBEdW1wUmVuZGVyVHJlZUNocm9tZSB7CiBwdWJsaWM6CkBAIC02MSw2ICs2Myw3IEBA
IHByaXZhdGU6CiAgICAgRXZhcyogbV9ldmFzOwogICAgIE93blB0cjxHQ0NvbnRyb2xsZXI+IG1f
Z2NDb250cm9sbGVyOwogICAgIFZlY3RvcjxFdmFzX09iamVjdCo+IG1fZXh0cmFWaWV3czsKKyAg
ICBzdGF0aWMgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBDU3RyaW5nPiBtX2R1bXBBc3NpZ25lZFVy
bHM7CiAKICAgICAvLyBTbWFydCBjYWxsYmFja3MKICAgICBzdGF0aWMgdm9pZCBvbldpbmRvd09i
amVjdENsZWFyZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOwpAQCAtNzcsNiArODAsMTQg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBvbkRvY3VtZW50TG9hZEZpbmlzaGVkKHZvaWQq
LCBFdmFzX09iamVjdCosIHZvaWQqKTsKIAogICAgIHN0YXRpYyB2b2lkIG9uV2lsbFNlbmRSZXF1
ZXN0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9uUmVz
cG9uc2VSZWNlaXZlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMg
dm9pZCBvblJlc291cmNlTG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsK
KworICAgIHN0YXRpYyB2b2lkIG9uUmVzb3VyY2VMb2FkRmFpbGVkKHZvaWQqLCBFdmFzX09iamVj
dCosIHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9uTmV3UmVzb3VyY2VSZXF1ZXN0KHZvaWQq
LCBFdmFzX09iamVjdCosIHZvaWQqKTsKIH07CiAKICNlbmRpZiAvLyBEdW1wUmVuZGVyVHJlZUNo
cm9tZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137509</attachid>
            <date>2012-04-17 04:03:38 -0700</date>
            <delta_ts>2012-04-20 00:21:32 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>34559</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzJhODE1Li5hYTQwYWUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MTcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzIHdoaWNoIGRlcGVuZCBvbiBFRkwncyBEdW1wUmVu
ZGVyVHJlZSBzdXBwb3J0IGZvcgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSwgbm93IHRoYXQgaXQgaXMKKyAgICAgICAgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwogMjAxMi0wNC0xNiAgRGF2
aWQgQmFyciAgPGRhdmlkYmFyckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3RhY2sgb3ZlcmZs
b3cgaW4gQ1NTIHBhcnNlciBjYXVzZWQgYnkgcmVjdXJzaXZlIHN0eWxlc2hlZXQgaW1wb3J0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDIxMmUwNjkuLjBhOTlhODAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9Ta2lwcGVkCkBAIC03NTcsMTAgKzc1Nyw2IEBAIGZhc3QvaGlzdG9yeS9iYWNrLWZv
cndhcmQtcmVzZXQtYWZ0ZXItZXJyb3ItaGFuZGxpbmcuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvZW1wdHktdXJsLXBsdWdpbi1pbi1mcmFtZS5odG1sCiBmYXN0L2xvYWRl
ci9maWxlLXByb3RvY29sLWZyYWdtZW50Lmh0bWwKIAotIyBNaXNzaW5nIGRlbGVnYXRlczogdGVz
dHMgZmFpbGluZyBiZWNhdXNlIG9mIG1pc3NpbmcgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxs
YmFja3MuCi1mYXN0L2xvYWRlci9tYWluLWRvY3VtZW50LXVybC1mb3Itbm9uLWh0dHAtbG9hZHMu
aHRtbAotaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi0KICMg
TWlzc2luZyBkZWxlZ2F0ZXM6IHRlc3RzIGZhaWxpbmcgYmVjYXVzZSBvZiBtaXNzaW5nIHBvbGlj
eSBkZWxlZ2F0ZSBjYWxsYmFja3MuCiBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1m
b3ItZnJhbWUuaHRtbAogZmFzdC9sb2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVz
dC16b29tZWQuaHRtbApAQCAtMTAwNSw5ICsxMDAxLDYgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCiAjIFRl
c3RzIHdoaWNoIGFsc28gZmFpbCBpbiBvdGhlciBwbGF0Zm9ybXMKICMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0jIFNob3VsZCBiZSBtb3ZlZCB0byBwbGF0Zm9y
bS9tYWMgPHJkYXI6Ly81NjIxNDI1PiAodmlhIHdpbi8sIGNocm9taXVtLyBhbmQgd2luY2Fpcm8v
KQotaHR0cC90ZXN0cy9taXNjL3dpbGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNrLmh0
bWwKLQogIyBGYWlscyBhc3NlcnRpb246IEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmhhc09uZVJl
ZigpKTsKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODAxCiBm
YXN0L3dvcmtlcnMvc3RvcmFnZS91c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13b3JrZXJz
Lmh0bWwKQEAgLTExNzEsMTAgKzExNjQsMTkgQEAgaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5
LXN0YWxsLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9hY2lkMy5odG1sCiBodHRwL3Rlc3RzL21pc2Mv
cG9saWN5LWRlbGVnYXRlLWNhbGxlZC10d2ljZS5odG1sCiBodHRwL3Rlc3RzL21pc2MvcmVkaXJl
Y3QtdG8tZXh0ZXJuYWwtdXJsLmh0bWwKLWh0dHAvdGVzdHMvbWlzYy93aW5kb3ctZG90LXN0b3Au
aHRtbAogaHR0cC90ZXN0cy9tdWx0aXBhcnQvcG9saWN5LWlnbm9yZS1jcmFzaC5waHAKIGh0dHAv
dGVzdHMvc2VjdXJpdHkvZmVlZC11cmxzLWZyb20tcmVtb3RlLmh0bWwKIAorIyBSZXNvdXJjZUVy
cm9yIGRvbWFpbiBuZWVkcyB0byBiZSBwcm9wZXJseSBzZXQgaW4gRnJhbWVMb2FkZXJDbGllbnQK
KyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTI5CitodHRwL3Rl
c3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1l
T3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0bWwKK2h0dHAv
dGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRh
Zy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWcuaHRtbAoraHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55Lmh0bWwKK2h0dHAvdGVz
dHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtcGFyZW50LXNhbWUtb3Jp
Z2luLWRlbnkuaHRtbAoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1zaG91bGQtY2Fu
Y2VsLWxvYWQuaHRtbAorCiAjIFRlc3QgdGltZXMgb3V0ICh2aWEgR1RLKykKICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDg1CiBodHRwL3Rlc3RzL21pc2MvaWZy
YW1lLXJlcGFyZW50aW5nLWlkLWNvbGxpc2lvbi5odG1sCkBAIC0yMzU3LDE4ICsyMzU5LDEwIEBA
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVmZXJyZXItcG9saWN5LWh0dHBzLW9yaWdpbi5odG1sCiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3JlZmVycmVyLXBvbGljeS1yZWRpcmVjdC5odG1sCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXJlZGlyZWN0LnhtbAogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHktcmVkaXJlY3QueG1s
Ci1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctaW4tYm9keS5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMv
eC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWFsbG93Lmh0
bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCi1odHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWcuaHRtbAotaHR0
cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55Lmh0bWwK
LWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtcGFyZW50
LXNhbWUtb3JpZ2luLWFsbG93Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9u
cy94LWZyYW1lLW9wdGlvbnMtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbAogaHR0cC90ZXN0
cy9zc2wvcmVmZXJlci0zMDEuaHRtbAogaHR0cC90ZXN0cy9zc2wvcmVmZXJlci0zMDMuaHRtbAog
aHR0cC90ZXN0cy9zc2wvdmVyaWZ5LXNzbC1lbmFibGVkLnBocAogaHR0cC90ZXN0cy93b3JrZXJz
L3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24uaHRtbAotaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hYm9ydC1zaG91bGQtY2FuY2VsLWxvYWQuaHRtbAogaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy13aGl0ZWxpc3QtcmVxdWVzdC1oZWFkZXJzLmh0
bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC1ub3Bhc3N3b3JkLmh0bWwK
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC1ub3VzZXIuaHRtbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IGNiZGJlMDQuLmVjYWUzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOSBAQAorMjAxMi0wNC0xNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdIERSVCBzaG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0
Q29udHJvbGxlcidzIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFRkwncyBGcmFtZUxvYWRlckNsaWVudCBu
b3cgcHJvdmlkZXMgdGhlIHJlZGlyZWN0IHJlc3BvbnNlIGluIGFkZGl0aW9uCisgICAgICAgIHRv
IHRoZSByZXF1ZXN0IGluIHRoZSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIgc2lnbmFsLiBJ
dCBhbHNvCisgICAgICAgIHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlc291
cmNlIHJlcXVlc3QsIGluIHBhcnRpY3VsYXIsCisgICAgICAgIHRoZSBIVFRQIG1ldGhvZCBhbmQg
dGhlIG1haW4gZG9jdW1lbnQgVVJJIChmaXJzdCBwYXJ0eSkuIE5ldyBzaWduYWxzCisgICAgICAg
IHN1Y2ggYXMgImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCAibG9hZCxyZXNvdXJjZSxmYWlsZWQi
LAorICAgICAgICAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiIHdlcmUgYWxzbyBhZGRlZCB0
byBub3RpZnkgYWJvdXQgZGlmZmVyZW50CisgICAgICAgIHJlc291cmNlIGxvYWQgZXZlbnRzLgor
ICAgICAgICBUaGVzZSBhZGRpdGlvbmFsIHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBhbmQgc2lnbmFs
cyBhcmUgbmVlZGVkIGZvcgorICAgICAgICBwcm9wZXIgc3VwcG9ydCBvZiBMYXlvdXRUZXN0Q29u
dHJvbGxlcidzIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKQorICAgICAgICBpbiBFRkwncyBE
dW1wUmVuZGVyVHJlZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogZXdr
L2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQpOgor
ICAgICAgICAoZXdrX2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKToKKyAgICAgICAgKGV3a19mcmFt
ZV9sb2FkX2ZpbmlzaGVkKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2Zpbmlz
aGVkKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZCk6CisgICAgICAg
IChld2tfZnJhbWVfbG9hZF9lcnJvcik6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAy
MDEyLTA0LTEzICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwu
Y29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIGNvbG9yIGNob29zZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAppbmRleCA5MzUxODI5Li40Y2JkNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC0x
NzAsNyArMTcwLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDYW5j
ZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWQKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiBjb3JlUmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgY29yZVJlc3BvbnNlKQogewogICAgIENTdHJpbmcgdXJs
ID0gY29yZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIERCRygiUmVzb3VyY2Ug
dXJsPSVzIiwgdXJsLmRhdGEoKSk7CisgICAgQ1N0cmluZyBmaXJzdFBhcnR5ID0gY29yZVJlcXVl
c3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgQ1N0cmluZyBo
dHRwTWV0aG9kID0gY29yZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKTsKKyAgICBEQkcoIlJl
c291cmNlIHVybD0lcywgZmlyc3RfcGFydHk9JXMsIGh0dHBfbWV0aG9kPSVzIiwgdXJsLmRhdGEo
KSwgZmlyc3RQYXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpKTsKIAogICAgIC8vIFdlIHdh
bnQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHJlcXVlc3QgZm9yIGEgZG9jdW1lbnQgdG8gYmUg
bG9hZGVkIGludG8KICAgICAvLyB0aGUgbWFpbiBmcmFtZSwgYSBzdWItZnJhbWUsIG9yIHRoZSBz
dWItb2JqZWN0cyBpbiB0aGF0IGRvY3VtZW50LgpAQCAtMTgwLDE0ICsxODIsMzAgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgdW5zaWcKICAgICAgICAgICAgIGlzTWFpbkZyYW1lUmVxdWVzdCA9IChsb2Fk
ZXIgPT0gZnJhbWVMb2FkZXItPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZUxv
YWRlci0+aXNMb2FkaW5nTWFpbkZyYW1lKCkpOwogICAgIH0KIAotICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIGlkZW50aWZpZXIsIG1fZnJhbWUsIGlzTWFpbkZy
YW1lUmVxdWVzdCB9OworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7
IDAsIDAsIDAsIGlkZW50aWZpZXIsIG1fZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9OwogICAg
IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IG9yaWcgPSByZXF1ZXN0OyAvKiBJbml0aWFsaXpl
IGNvbnN0IGZpZWxkcy4gKi8KIAogICAgIG9yaWcudXJsID0gcmVxdWVzdC51cmwgPSB1cmwuZGF0
YSgpOworICAgIHJlcXVlc3QuZmlyc3RfcGFydHkgPSBmaXJzdFBhcnR5LmRhdGEoKTsKKyAgICBy
ZXF1ZXN0Lmh0dHBfbWV0aG9kID0gaHR0cE1ldGhvZC5kYXRhKCk7CiAKLSAgICBld2tfZnJhbWVf
cmVxdWVzdF93aWxsX3NlbmQobV9mcmFtZSwgJnJlcXVlc3QpOworICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVzcG9uc2UgcmVzcG9uc2VCdWZmZXI7CisgICAgQ1N0cmluZyByZWRpcmVjdFVybDsKIAotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVz
dCx3aWxsc2VuZCIsICZyZXF1ZXN0KTsKKyAgICBpZiAoY29yZVJlc3BvbnNlLmlzTnVsbCgpKQor
ICAgICAgICByZWRpcmVjdFJlc3BvbnNlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVkaXJl
Y3RVcmwgPSBjb3JlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgICAgICByZXNw
b25zZUJ1ZmZlci51cmwgPSByZWRpcmVjdFVybC5kYXRhKCk7CisgICAgICAgIHJlc3BvbnNlQnVm
ZmVyLnN0YXR1c19jb2RlID0gY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgICAg
IHJlZGlyZWN0UmVzcG9uc2UgPSAmcmVzcG9uc2VCdWZmZXI7CisgICAgfQorICAgIEV3a19GcmFt
ZV9SZXNvdXJjZV9NZXNzYWdlcyBtZXNzYWdlcyA9IHsgJnJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UgfTsKKworICAgIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChtX2ZyYW1lLCAmbWVzc2Fn
ZXMpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNv
dXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgJm1lc3NhZ2VzKTsKIAogICAgIGlmIChyZXF1ZXN0LnVy
bCAhPSBvcmlnLnVybCkgewogICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCks
IHJlcXVlc3QudXJsKSk7CkBAIC0yMDcsNyArMjI1LDkgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIENTdHJpbmcgdXJsID0g
Y29yZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIERCRygiUmVzb3VyY2UgdXJs
PSVzIiwgdXJsLmRhdGEoKSk7CisgICAgQ1N0cmluZyBmaXJzdFBhcnR5ID0gY29yZVJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgQ1N0cmluZyBodHRw
TWV0aG9kID0gY29yZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKTsKKyAgICBEQkcoIlJlc291
cmNlIHVybD0lcywgRmlyc3QgcGFydHk9JXMsIEhUVFAgbWV0aG9kPSVzIiwgdXJsLmRhdGEoKSwg
Zmlyc3RQYXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpKTsKIAogICAgIGJvb2wgaXNNYWlu
RnJhbWVSZXF1ZXN0ID0gZmFsc2U7CiAgICAgaWYgKGxvYWRlcikgewpAQCAtMjE1LDggKzIzNSw5
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgICAgICAgICBpc01haW5GcmFtZVJlcXVl
c3QgPSAobG9hZGVyID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkg
JiYgZnJhbWVMb2FkZXItPmlzTG9hZGluZ01haW5GcmFtZSgpKTsKICAgICB9CiAKLSAgICBFd2tf
RnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyAwLCBpZGVudGlmaWVyLCBtX2ZyYW1l
LCBpc01haW5GcmFtZVJlcXVlc3QgfTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCBy
ZXF1ZXN0ID0geyB1cmwuZGF0YSgpLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRh
KCksIGlkZW50aWZpZXIsIG1fZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9OwogICAgIGV3a19m
cmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKG1fZnJhbWUsICZyZXF1ZXN0KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3Qs
bmV3IiwgJnJlcXVlc3QpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwb3N0UHJv
Z3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCkKQEAgLTI1MywxMyArMjc0LDIxIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhp
czsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVz
cG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CiAgICAgLy8gVXBkYXRl
IG91ciBrbm93bGVkZ2Ugb2YgcmVxdWVzdCBzb3VwIGZsYWdzIC0gc29tZSBhcmUgb25seSBzZXQK
ICAgICAvLyBhZnRlciB0aGUgcmVxdWVzdCBpcyBkb25lLgotICAgIGxvYWRlci0+cmVxdWVzdCgp
LnNldFNvdXBNZXNzYWdlRmxhZ3MocmVzcG9uc2Uuc291cE1lc3NhZ2VGbGFncygpKTsKKyAgICBs
b2FkZXItPnJlcXVlc3QoKS5zZXRTb3VwTWVzc2FnZUZsYWdzKGNvcmVSZXNwb25zZS5zb3VwTWVz
c2FnZUZsYWdzKCkpOworCisgICAgbV9yZXNwb25zZSA9IGNvcmVSZXNwb25zZTsKKworICAgIEV3
a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSByZXNwb25zZSA9IHsgMCwgY29yZVJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgfTsKKyAgICBDU3RyaW5nIHVybCA9IGNvcmVSZXNwb25zZS51cmwoKS5z
dHJpbmcoKS51dGY4KCk7CisgICAgcmVzcG9uc2UudXJsID0gdXJsLmRhdGEoKTsKIAotICAgIG1f
cmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQobV9m
cmFtZSwgJnJlc3BvbnNlKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bV92aWV3LCAicmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCAmcmVzcG9uc2UpOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAgLTMwNywx
MCArMzM2LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAKICAgICAvLyBpZiBub3QgYWNj
ZXB0TmF2aWdhdGlvblJlcXVlc3QgLSBsb29rIGF0IFF0IC0+IFBvbGljeUlnbm9yZTsKICAgICAv
LyBGSVhNRTogZG8gcHJvcGVyIGNoZWNrIGFuZCBvbmx5IHJlc2V0IGZvcm1zIHdoZW4gb24gUG9s
aWN5SWdub3JlCi0gICAgY2hhciogdXJsID0gc3RyZHVwKHJlc291cmNlUmVxdWVzdC51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCBy
ZXF1ZXN0ID0geyB1cmwsIDAsIG1fZnJhbWUsIGZhbHNlIH07CisgICAgQ1N0cmluZyB1cmwgPSBy
ZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIENTdHJpbmcgZmlyc3RQ
YXJ0eSA9IHJlc291cmNlUmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0
ZjgoKTsKKyAgICBDU3RyaW5nIGh0dHBNZXRob2QgPSByZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhv
ZCgpLnV0ZjgoKTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1
cmwuZGF0YSgpLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCksIDAsIG1fZnJh
bWUsIGZhbHNlIH07CiAgICAgYm9vbCByZXQgPSBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbihtX3ZpZXcsICZyZXF1ZXN0KTsKLSAgICBmcmVlKHVybCk7CiAKICAgICBQb2xpY3lB
Y3Rpb24gcG9saWN5OwogICAgIGlmICghcmV0KQpAQCAtNzM1LDEyICs3NjUsMzEgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1
bWVudExvYWRlciosIHVuc2kKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2Vf
ZmluaXNoZWQobV9mcmFtZSwgaWRlbnRpZmllcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHJlc291cmNlLGZpbmlzaGVkIiwgJmlkZW50aWZpZXIp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
RXdrX0ZyYW1lX0xvYWRfRXJyb3IgZXJyb3I7CisgICAgQ1N0cmluZyBlcnJvckRvbWFpbiA9IGVy
ci5kb21haW4oKS51dGY4KCk7CisgICAgQ1N0cmluZyBlcnJvckRlc2NyaXB0aW9uID0gZXJyLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpOworICAgIENTdHJpbmcgZmFpbGluZ1VybCA9IGVy
ci5mYWlsaW5nVVJMKCkudXRmOCgpOworCisgICAgREJHKCJld2tGcmFtZT0lcCwgcmVzb3VyY2U9
JWxkLCBlcnJvcj0lcyAoJWQsIGNhbmNlbGxhdGlvbj0laGh1KSBcIiVzXCIsIHVybD0lcyIsCisg
ICAgICAgIG1fZnJhbWUsIGlkZW50aWZpZXIsIGVycm9yRG9tYWluLmRhdGEoKSwgZXJyLmVycm9y
Q29kZSgpLCBlcnIuaXNDYW5jZWxsYXRpb24oKSwKKyAgICAgICAgZXJyb3JEZXNjcmlwdGlvbi5k
YXRhKCksIGZhaWxpbmdVcmwuZGF0YSgpKTsKKworICAgIGVycm9yLmNvZGUgPSBlcnIuZXJyb3JD
b2RlKCk7CisgICAgZXJyb3IuaXNfY2FuY2VsbGF0aW9uID0gZXJyLmlzQ2FuY2VsbGF0aW9uKCk7
CisgICAgZXJyb3IuZG9tYWluID0gZXJyb3JEb21haW4uZGF0YSgpOworICAgIGVycm9yLmRlc2Ny
aXB0aW9uID0gZXJyb3JEZXNjcmlwdGlvbi5kYXRhKCk7CisgICAgZXJyb3IuZmFpbGluZ191cmwg
PSBmYWlsaW5nVXJsLmRhdGEoKTsKKyAgICBlcnJvci5yZXNvdXJjZV9pZGVudGlmaWVyID0gaWRl
bnRpZmllcjsKKyAgICBlcnJvci5mcmFtZSA9IG1fZnJhbWU7CisKKyAgICBld2tfZnJhbWVfbG9h
ZF9yZXNvdXJjZV9mYWlsZWQobV9mcmFtZSwgJmVycm9yKTsKKyAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgJmVycm9yKTsK
IH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAKaW5kZXggZWZjYTg2Yy4uNGI5OGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAKQEAgLTEyMDcsMTUgKzEyMDcsMTUgQEAgdm9pZCBld2tfZnJhbWVfY29yZV9nb25l
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAqIGNoYW5naW5nIHZhbHVlcyBpbiBAcGFyYW0gcmVx
dWVzdC4KICAqCiAgKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCi0gKiBAcGFyYW0gcmVxdWVzdCBS
ZXF1ZXN0IGRldGFpbHMgdGhhdCB1c2VyIG1heSBvdmVycmlkZS4gV2hlbmV2ZXIgdmFsdWVzIG9u
Ci0gKiB0aGlzIHN0cnVjdCBjaGFuZ2VzLCBpdCBtdXN0IGJlIHByb3Blcmx5IG1hbGxvYydkIGFz
IGl0IHdpbGwgYmUgZnJlZWQKLSAqIGFmdGVyd2FyZHMuCisgKiBAcGFyYW0gbWVzc2FnZXMgTWVz
c2FnZXMgY29udGFpbmluZyB0aGUgcmVxdWVzdCBkZXRhaWxzIHRoYXQgdXNlciBtYXkgb3ZlcnJp
ZGUgYW5kIGEKKyAqIHBvc3NpYmxlIHJlZGlyZWN0IHJlcG9uc2UuIFdoZW5ldmVyIHZhbHVlcyBv
biB0aGlzIHN0cnVjdCBjaGFuZ2VzLCBpdCBtdXN0IGJlIHByb3Blcmx5CisgKiBtYWxsb2MnZCBh
cyBpdCB3aWxsIGJlIGZyZWVkIGFmdGVyd2FyZHMuCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVz
b3VyY2UscmVxdWVzdCx3aWxsc2VuZCIKICAqLwotdm9pZCBld2tfZnJhbWVfcmVxdWVzdF93aWxs
X3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCog
cmVxdWVzdCkKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKiBtZXNzYWdlcykKIHsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVzb3VyY2UscmVxdWVz
dCx3aWxsc2VuZCIsIHJlcXVlc3QpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZXdrRnJhbWUsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgbWVzc2FnZXMpOwogfQog
CiAvKioKQEAgLTEyMzQsNiArMTIzNCwyMCBAQCB2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2ln
bl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lXwogCiAv
KioKICAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGF0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJj
ZSByZXF1ZXN0IHdhcyByZWNlaXZlZC4KKyAqCisgKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCisg
KiBAcGFyYW0gcmVxdWVzdCBSZXNwb25zZSBkZXRhaWxzLiBObyBjaGFuZ2VzIGFyZSBhbGxvd2Vk
IHRvIGZpZWxkcy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXNwb25zZSxyZWNl
aXZlZCIKKyAqLwordm9pZCBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKQoreworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJyZXNvdXJjZSxyZXNw
b25zZSxyZWNlaXZlZCIsIHJlc3BvbnNlKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKICAqIFJl
cG9ydHMgdGhhdCBmaXJzdCBuYXZpZ2F0aW9uIG9jY3VycmVkCiAgKgogICogQHBhcmFtIGV3a0Zy
YW1lIEZyYW1lLgpAQCAtMTM1OCw2ICsxMzcyLDcgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9maW5p
c2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQK
ICAgICAgICAgYnVmZmVyLmlzX2NhbmNlbGxhdGlvbiA9IGlzQ2FuY2VsbGF0aW9uOwogICAgICAg
ICBidWZmZXIuZGVzY3JpcHRpb24gPSBlcnJvckRlc2NyaXB0aW9uOwogICAgICAgICBidWZmZXIu
ZmFpbGluZ191cmwgPSBmYWlsaW5nVXJsOworICAgICAgICBidWZmZXIucmVzb3VyY2VfaWRlbnRp
ZmllciA9IDA7CiAgICAgICAgIGJ1ZmZlci5mcmFtZSA9IGV3a0ZyYW1lOwogICAgICAgICBlcnJv
ciA9ICZidWZmZXI7CiAgICAgfQpAQCAtMTM2OCw2ICsxMzgzLDI5IEBAIHZvaWQgZXdrX2ZyYW1l
X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRv
bWFpbiwgaW50CiAKIC8qKgogICogQGludGVybmFsCisgKiBSZXBvcnRzIHJlc291cmNlIGxvYWQg
ZmluaXNoZWQuCisgKgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIg
d2l0aCB0aGUgcmVzb3VyY2UKKyAqIHJlcXVlc3QgaWRlbnRpZmllci4KKyAqLwordm9pZCBld2tf
ZnJhbWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKGV3a0ZyYW1lLCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsICZpZGVudGlmaWVyKTsKK30K
KworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmYWlsdXJlLCB3
aXRoIGVycm9yIGluZm9ybWF0aW9uLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImxvYWQscmVzb3Vy
Y2UsZmFpbGVkIiB3aXRoIHRoZSBlcnJvciBpbmZvcm1hdGlvbi4KKyAqLwordm9pZCBld2tfZnJh
bWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVf
TG9hZF9FcnJvciogZXJyb3IpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tGcmFtZSwgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgZXJyb3IpOworfQorCisvKioKKyAq
IEBpbnRlcm5hbAogICogUmVwb3J0cyBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9ybWF0aW9u
LgogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tf
RnJhbWVfTG9hZF9FcnJvci4KQEAgLTEzODcsNiArMTQyNSw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xv
YWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwg
aW50IGVyCiAgICAgZXJyb3IuZG9tYWluID0gZXJyb3JEb21haW47CiAgICAgZXJyb3IuZGVzY3Jp
cHRpb24gPSBlcnJvckRlc2NyaXB0aW9uOwogICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGlu
Z1VybDsKKyAgICBlcnJvci5yZXNvdXJjZV9pZGVudGlmaWVyID0gMDsKICAgICBlcnJvci5mcmFt
ZSA9IGV3a0ZyYW1lOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJh
bWUsICJsb2FkLGVycm9yIiwgJmVycm9yKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAppbmRleCA5
NDI0MjhjLi44MjJkOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCkBAIC00NSw2ICs0
NSwxMCBAQAogICogIC0gImxvYWQsZmluaXNoZWQiLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJv
cio6IHJlcG9ydHMgbG9hZAogICogICAgZmluaXNoZWQgYW5kIGl0IGdpdmVzIEBjIE5VTEwgb24g
c3VjY2VzcyBvciBwb2ludGVyIHRvCiAgKiAgICBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9y
LgorICogIC0gImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCB1bnNpZ25lZCBsb25nOiByZXBvcnRz
IHJlc291cmNlIGxvYWQgZmluaXNoZWQgYW5kIGl0IGdpdmVzCisgKiAgICBpdHMgaWRlbnRpZmll
ci4KKyAqICAtICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yOiBy
ZXBvcnRzIHJlc291cmNlIGxvYWQgZmFpbHVyZSBhbmQgaXQKKyAqICAgIGdpdmVzIGEgcG9pbnRl
ciB0byBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9yIGFzIGFuIGFyZ3VtZW50LgogICogIC0g
ImxvYWQsZmlyc3RsYXlvdXQsZmluaXNoZWQiLCB2b2lkOiBmcmFtZSBmaW5pc2hlZCBmaXJzdCBs
YXlvdXQuCiAgKiAgLSAibG9hZCxub25lbXB0eWxheW91dCxmaW5pc2hlZCIsIHZvaWQ6IGZyYW1l
IGZpbmlzaGVkIGZpcnN0CiAgKiAgICBub24tZW1wdHkgbGF5b3V0LgpAQCAtNTcsOCArNjEsMTAg
QEAKICAqICAtICJuYXZpZ2F0aW9uLGZpcnN0Iiwgdm9pZDogZmlyc3QgbmF2aWdhdGlvbiB3YXMg
b2NjdXJyZWQuCiAgKiAgLSAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBFd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVxdWVzdCo6IHJlcG9ydHMgdGhhdAogICogICAgdGhlcmUncyBhIG5ldyByZXNvdXJjZSBy
ZXF1ZXN0LgotICogIC0gInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQiLCBFd2tfRnJhbWVfUmVz
b3VyY2VfUmVxdWVzdCo6IGEgcmVzb3VyY2Ugd2lsbAorICogIC0gInJlc291cmNlLHJlcXVlc3Qs
d2lsbHNlbmQiLCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqOiBhIHJlc291cmNlIHdpbGwK
ICAqICAgIGJlIHJlcXVlc3RlZC4KKyAqICAtICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIs
IEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo6IHJlcG9ydHMgdGhhdCBhIHJlc3BvbnNlCisg
KiAgICB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVkLgogICogIC0gInN0YXRlLHNh
dmUiLCB2b2lkOiBmcmFtZSdzIHN0YXRlIHdpbGwgYmUgc2F2ZWQgYXMgYSBoaXN0b3J5IGl0ZW0u
CiAgKiAgLSAidGl0bGUsY2hhbmdlZCIsIGNvbnN0IGNoYXIqOiB0aXRsZSBvZiB0aGUgbWFpbiBm
cmFtZSB3YXMgY2hhbmdlZC4KICAqICAtICJ1cmksY2hhbmdlZCIsIGNvbnN0IGNoYXIqOiB1cmkg
b2YgdGhlIG1haW4gZnJhbWUgd2FzIGNoYW5nZWQuCkBAIC05MSwyNSArOTcsNTAgQEAgc3RydWN0
IF9Fd2tfRnJhbWVfTG9hZF9FcnJvciB7CiAgICAgY29uc3QgY2hhciAqZG9tYWluOyAvKio8IGVy
cm9yIGRvbWFpbiBuYW1lICovCiAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb247IC8qKjwgZXJy
b3IgZGVzY3JpcHRpb24gYWxyZWFkeSBsb2NhbGl6ZWQgKi8KICAgICBjb25zdCBjaGFyICpmYWls
aW5nX3VybDsgLyoqPCB0aGUgdXJsIHRoYXQgZmFpbGVkIHRvIGxvYWQgKi8KKyAgICB1bnNpZ25l
ZCBsb25nIHJlc291cmNlX2lkZW50aWZpZXI7IC8qKjwgaWRlbnRpZmllciBvZiByZXNvdXJjZSAq
LwogICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCBmcmFtZSB3aGVyZSB0aGUgZmFpbHVyZSBo
YXBwZW5lZCAqLwogfTsKIAogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdC4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVx
dWVzdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdDsKKwogLyoqCi0gKiBAYnJpZWYgICBTdHJ1
Y3R1cmUgdXNlZCB0byByZXBvcnQgcmVzb3VyY2UgcmVxdWVzdC4KKyAqIEBicmllZiAgIFN0cnVj
dHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNvdXJjZSByZXF1ZXN0LgogICoKLSAq
IERldGFpbHMgZ2l2ZW4gYmVmb3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVkIG9uIGEgZ2l2ZW4gZnJh
bWUuIEl0J3MgdXNlZCBieQotICogZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKCkgdG8gaW5m
b3JtIHRoZSBkZXRhaWxzIG9mIGEgdG8tYmUtbG9hZGVkCi0gKiByZXNvdXJjZSwgYWxsb3dpbmcg
dGhlbSB0byBiZSBvdmVycmlkZGVuLgorICogRGV0YWlscyBnaXZlbiBiZWZvcmUgYSByZXNvdXJj
ZSBpcyBsb2FkZWQgb24gYSBnaXZlbiBmcmFtZS4gSXQncyB1c2VkIGluCisgKiBFd2tfRnJhbWVf
UmVzb3VyY2VfTWVzc2FnZXMgdG8gaW5mb3JtIGFib3V0IHRoZSBkZXRhaWxzIG9mIGEgcmVzb3Vy
Y2UgcmVxdWVzdC4KICAqLwogc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCB7CiAg
ICAgY29uc3QgY2hhciAqdXJsOyAvKio8IHVybCBvZiB0aGUgcmVzb3VyY2UgKi8KKyAgICBjb25z
dCBjaGFyICpmaXJzdF9wYXJ0eTsgLyoqPCBmaXJzdCBwYXJ0eSBmb3IgY29va2llcywgY2FuIG5v
dCBiZSBjaGFuZ2VkICAqLworICAgIGNvbnN0IGNoYXIgKmh0dHBfbWV0aG9kOyAvKio8IGh0dHAg
bWV0aG9kLCBjYW4gbm90IGJlIGNoYW5nZWQgICovCiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyOyAvKio8IGlkZW50aWZpZXIgb2YgcmVzb3VyY2UsIGNhbiBub3QgYmUgY2hhbmdl
ZCAqLwogICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCBmcmFtZSB3aGVyZSB0aGUgcmVzb3Vy
Y2UgaXMgcmVxdWVzdGVkICovCiAgICAgRWluYV9Cb29sIGlzX21haW5fZnJhbWVfcmVxdWVzdDsg
LyoqIDwgaW5kaWNhdGVzIGlmIHRoZSByZXF1ZXN0IGlzIGZvciB0aGUgbWFpbiBmcmFtZSAqLwog
fTsKIAorLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVz
cG9uc2UuCit0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXNwb25zZTsKKworLyoqCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgY29u
dGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSByZXF1ZXN0Lgor
ICoKKyAqIERldGFpbHMgZ2l2ZW4gaW4gdGhlIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgcmVxdWVz
dC4gSXQncyB1c2VkIGJ5CisgKiBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoKSB0byBpbmZv
cm0gYWJvdXQgdGhlIGRldGFpbHMgb2YgYSByZXNwb25zZS4KKyAqLworc3RydWN0IF9Fd2tfRnJh
bWVfUmVzb3VyY2VfUmVzcG9uc2UgeworICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1cmwgb2Yg
dGhlIHJlc291cmNlICovCisgICAgaW50IHN0YXR1c19jb2RlOyAvKio8IGh0dHAgc3RhdHVzIGNv
ZGUgKi8KK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291
cmNlX01lc3NhZ2VzLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdl
cyBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXM7CisKK3N0cnVjdCBfRXdrX0ZyYW1lX1Jlc291
cmNlX01lc3NhZ2VzIHsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVxdWVzdDsg
LyoqPCByZXNvdXJjZSByZXF1ZXN0ICovCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNl
ICpyZWRpcmVjdF9yZXNwb25zZTsgLyoqPCByZWRpcmVjdCByZXNwb25zZSwgY2FuIG5vdCBiZSBj
aGFuZ2VkICovCit9OworCiAvLy8gRW51bSBjb250YWluaW5nIGhpdCB0ZXN0IGRhdGEgdHlwZXMK
IHR5cGVkZWYgZW51bSB7CiAgICAgRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0RPQ1VNRU5U
ID0gMSA8PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCA5NmZhNzUzLi41
ZmViODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApAQCAtMjE3LDExICsyMTcs
MTQgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVj
dCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9m
aW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1
bWVudF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogdm9pZCBld2tfZnJhbWVfbG9h
ZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWlu
LCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRl
c2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRf
cmVzb3VyY2VfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpOwordm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwogdm9pZCBld2tfZnJh
bWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJv
ckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKIHZvaWQgZXdrX2ZyYW1lX2xv
YWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogCi12b2lkIGV3a19m
cmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9z
ZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKiBt
ZXNzYWdlcyk7CiB2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVl
c3QpOwordm9pZCBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKTsKIHZvaWQgZXdrX2Zy
YW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBpdGVtKTsKIAogdm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmlyc3RfbmF2aWdh
dGlvbihFdmFzX09iamVjdCogZXdrRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRl
eCAzNzQzODk4Li44NTY1YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtNjAsNiAr
NjAsMTAgQEAKICAqICAtICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9ncmVzcyBp
cyBjaGFuZ2VkIChvdmVyYWxsIHZhbHVlCiAgKiAgICBmcm9tIDAuMCB0byAxLjAsIGNvbm5lY3Qg
dG8gaW5kaXZpZHVhbCBmcmFtZXMgZm9yIGZpbmUgZ3JhaW5lZCkuCiAgKiAgLSAibG9hZCxwcm92
aXNpb25hbCIsIHZvaWQ6IHZpZXcgc3RhcnRlZCBwcm92aXNpb25hbCBsb2FkLgorICogIC0gImxv
YWQscmVzb3VyY2UsZmluaXNoZWQiLCB1bnNpZ25lZCBsb25nOiByZXBvcnRzIHJlc291cmNlIGxv
YWQgZmluaXNoZWQgYW5kIGl0IGdpdmVzCisgKiAgICBpdHMgaWRlbnRpZmllci4KKyAqICAtICJs
b2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yOiByZXBvcnRzIHJlc291
cmNlIGxvYWQgZmFpbHVyZSBhbmQgaXQKKyAqICAgIGdpdmVzIGEgcG9pbnRlciB0byBzdHJ1Y3R1
cmUgZGVmaW5pbmcgdGhlIGVycm9yIGFzIGFuIGFyZ3VtZW50LgogICogIC0gImxvYWQsc3RhcnRl
ZCIsIHZvaWQ6IGZyYW1lIHN0YXJ0ZWQgbG9hZGluZyB0aGUgZG9jdW1lbnQuCiAgKiAgLSAibWVu
dWJhcix2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEgQGMgRUlOQV9UUlVFIGlm
IG1lbnViYXIgaXMKICAqICAgIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KQEAg
LTY3LDggKzcxLDExIEBACiAgKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZvaWQ6IGFu
eSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVkIG1peGVk
IGNvbnRlbnQuCiAgKiAgLSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGFueSBvZiB0aGUgY29u
dGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNvbnRlbnQuCiAgKiAgLSAi
cmVhZHkiLCB2b2lkOiBwYWdlIGlzIGZ1bGx5IGxvYWRlZC4KLSAqICAtICJyZXNvdXJjZSxyZXF1
ZXN0LHdpbGxzZW5kIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291cmNlIHdp
bGwKLSAqICAgIGJlIHJlcXVlc3RlZC4KKyAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsIEV3
a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0CisgKiAgICB0aGVyZSdzIGEg
bmV3IHJlc291cmNlIHJlcXVlc3QuCisgKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIs
IEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2lsbCBiZSByZXF1ZXN0
ZWQuCisgKiAgICAgYW5kIHRoZSBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KKyAqICAtICJy
ZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo6
IHRoZSBuZXR3b3JrIHJlc3BvbnNlIGZvciBhIHJlc291cmNlLgogICogIC0gInNjcm9sbGJhcnMs
dmlzaWJsZSxnZXQiLCBFaW5hX0Jvb2wgKjogZXhwZWN0cyBhIEBjIEVJTkFfVFJVRSBpZiBzY3Jv
bGxiYXJzCiAgKiAgICBhcmUgdmlzaWJsZTsgQGMgRUlOQV9GQUxTRSwgb3RoZXJ3aXNlLgogICog
IC0gInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCBFaW5hX0Jvb2w6IHNldHMgc2Nyb2xsYmFycyB2
aXNpYmlsaXR5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDIyMjc2YmUuLjRkMjJjYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNC0xNyAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdIERS
VCBzaG91bGQgc3VwcG9ydCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODE4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIncworICAgICAgICBk
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgaW4gRUZMJ3MgRHVtcFJlbmRlclRyZWUgYnkgY2F0
Y2hpbmcgbmV3CisgICAgICAgIGV3a192aWV3IHNpZ25hbHMgYWJvdXQgcmVzb3VyY2UgbG9hZGlu
ZyBhbmQgcHJpbnQgb3V0IHRoZSBuZWNlc3NhcnkKKyAgICAgICAgaW5mb3JtYXRpb24uIFRoaXMg
YWxsb3dzIGZvciBzZXZlcmFsIHRlc3QgY2FzZXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZQorICAg
ICAgICBza2lwIGxpc3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRl
clRyZWVDaHJvbWUuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZp
ZXcpOgorICAgICAgICAocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgICh1cmxT
dWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc3BvbnNlUmVjZWl2ZWQp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2FkRmluaXNoZWQp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2FkRmFpbGVkKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbk5ld1Jlc291cmNlUmVxdWVzdCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmg6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZSk6CisKIDIwMTItMDQtMTYgIEd1c3Rhdm8gTm9yb25o
YSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gVXNlIGNvbmZpZ3VyZSBp
bnN0ZWFkIG9mIGF1dG9nZW4uc2ggZm9yIGd0aysKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmluZGV4IGIzOWUxMjUuLjQ2M2ZjZjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNw
cApAQCAtNDcsNiArNDcsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorSGFzaE1h
cDx1bnNpZ25lZCBsb25nLCBDU3RyaW5nPiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6bV9kdW1wQXNz
aWduZWRVcmxzOworCiBQYXNzT3duUHRyPER1bXBSZW5kZXJUcmVlQ2hyb21lPiBEdW1wUmVuZGVy
VHJlZUNocm9tZTo6Y3JlYXRlKEV2YXMqIGV2YXMpCiB7CiAgICAgT3duUHRyPER1bXBSZW5kZXJU
cmVlQ2hyb21lPiBjaHJvbWUgPSBhZG9wdFB0cihuZXcgRHVtcFJlbmRlclRyZWVDaHJvbWUoZXZh
cykpOwpAQCAtOTUsNyArOTcsMTEgQEAgRXZhc19PYmplY3QqIER1bXBSZW5kZXJUcmVlQ2hyb21l
OjpjcmVhdGVWaWV3KCkgY29uc3QKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
dmlldywgIndpbmRvdyxvYmplY3QsY2xlYXJlZCIsIG9uV2luZG93T2JqZWN0Q2xlYXJlZCwgbV9n
Y0NvbnRyb2xsZXIuZ2V0KCkpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2
aWV3LCAic3RhdHVzYmFyLHRleHQsc2V0Iiwgb25TdGF0dXNiYXJUZXh0U2V0LCAwKTsKICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgImxvYWQsZG9jdW1lbnQsZmluaXNo
ZWQiLCBvbkRvY3VtZW50TG9hZEZpbmlzaGVkLCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQodmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3Iiwgb25OZXdSZXNvdXJjZVJl
cXVlc3QsIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVz
b3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIG9uV2lsbFNlbmRSZXF1ZXN0LCAwKTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgInJlc291cmNlLHJlc3BvbnNlLHJlY2Vp
dmVkIiwgb25SZXNwb25zZVJlY2VpdmVkLCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQodmlldywgImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCBvblJlc291cmNlTG9hZEZp
bmlzaGVkLCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgImxv
YWQscmVzb3VyY2UsZmFpbGVkIiwgb25SZXNvdXJjZUxvYWRGYWlsZWQsIDApOwogCiAgICAgcmV0
dXJuIHZpZXc7CiB9CkBAIC0yOTMsMjQgKzI5OSwxNTEgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZUNo
cm9tZTo6b25Eb2N1bWVudExvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBl
dmUKICAgICB9CiB9CiAKK3N0YXRpYyBDU3RyaW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQo
Y29uc3QgY2hhciogdXJpU3RyaW5nKQoreworICAgIGlmICghdXJpU3RyaW5nKQorICAgICAgICBy
ZXR1cm4gQ1N0cmluZygpOworCisgICAgS1VSTCB1cmkgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJpU3RyaW5nKTsKKworICAgIGlmICghdXJpLmlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVy
biB1cmkuc3RyaW5nKCkudXRmOCgpOworCisgICAgU3RyaW5nIHBhdGhTdHJpbmcgPSB1cmkucGF0
aCgpOworICAgIHNpemVfdCBpbmRleEJhc2VOYW1lID0gcGF0aFN0cmluZy5yZXZlcnNlRmluZCgn
LycpOworICAgIFN0cmluZyBiYXNlTmFtZTsKKyAgICBpZiAoaW5kZXhCYXNlTmFtZSA9PSBub3RG
b3VuZCkKKyAgICAgICAgYmFzZU5hbWUgPSBwYXRoU3RyaW5nOworICAgIGVsc2UKKyAgICAgICAg
YmFzZU5hbWUgPSBwYXRoU3RyaW5nLnN1YnN0cmluZyhpbmRleEJhc2VOYW1lICsgMSk7CisKKyAg
ICBTdHJpbmcgZGlyTmFtZTsKKyAgICBpZiAoaW5kZXhCYXNlTmFtZSAhPSBub3RGb3VuZCkgewor
ICAgICAgICBzaXplX3QgaW5kZXhEaXJOYW1lID0gcGF0aFN0cmluZy5yZXZlcnNlRmluZCgnLycs
IGluZGV4QmFzZU5hbWUgLSAxKTsKKyAgICAgICAgaWYgKGluZGV4RGlyTmFtZSAhPSBub3RGb3Vu
ZCkKKyAgICAgICAgICAgIGRpck5hbWUgPSBwYXRoU3RyaW5nLnN1YnN0cmluZyhpbmRleERpck5h
bWUgKyAxLCBpbmRleEJhc2VOYW1lIC0gaW5kZXhEaXJOYW1lIC0gMSk7CisgICAgfQorCisgICAg
U3RyaW5nIHJldCA9IGRpck5hbWUgKyAiLyIgKyBiYXNlTmFtZTsKKyAgICByZXR1cm4gcmV0LnV0
ZjgoKTsKK30KKworc3RhdGljIENTdHJpbmcgdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0
IGNoYXIqIHVyaVN0cmluZykKK3sKKyAgICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmlTdHJpbmcpOworICAgIGlmICghdXJpLmlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVy
biBDU3RyaW5nKHVyaVN0cmluZyk7CisKKyAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gdXJpLnBh
dGhBZnRlckxhc3RTbGFzaCgpOworICAgIHJldHVybiB1cmkuc3RyaW5nKCkuc3Vic3RyaW5nKHN0
YXJ0SW5kZXgpLnV0ZjgoKTsKK30KKworc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCit7Cisg
ICAgU3RyaW5nIHJldCA9ICI8TlNVUkxSZXF1ZXN0IFVSTCAiOworICAgIHJldCArPSBwYXRoU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPnVybCkuZGF0YSgpOworICAgIHJldCArPSAiLCBt
YWluIGRvY3VtZW50IFVSTCAiOworICAgIHJldCArPSB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQo
cmVxdWVzdC0+Zmlyc3RfcGFydHkpLmRhdGEoKTsKKyAgICByZXQgKz0gIiwgaHR0cCBtZXRob2Qg
IjsKKyAgICByZXQgKz0gcmVxdWVzdC0+aHR0cF9tZXRob2QgPyBTdHJpbmcocmVxdWVzdC0+aHR0
cF9tZXRob2QpIDogIihub25lKSI7CisgICAgcmV0ICs9ICI+IjsKKworICAgIHJldHVybiByZXQu
dXRmOCgpOworfQorCitzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKQoreworICAg
IGlmICghcmVzcG9uc2UpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCIobnVsbCkiKTsKKworICAg
IFN0cmluZyByZXQgPSAiPE5TVVJMUmVzcG9uc2UgIjsKKyAgICByZXQgKz0gcGF0aFN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChyZXNwb25zZS0+dXJsKS5kYXRhKCk7CisgICAgcmV0ICs9ICIsIGh0dHAg
c3RhdHVzIGNvZGUgIjsKKyAgICByZXQgKz0gU3RyaW5nOjpudW1iZXIocmVzcG9uc2UtPnN0YXR1
c19jb2RlKTsKKyAgICByZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9CisK
K3N0YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KEV3a19GcmFt
ZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3sKKyAgICBTdHJpbmcgcmV0ID0gIjxOU0Vycm9yIGRvbWFp
biAiOworICAgIHJldCArPSBlcnJvci0+ZG9tYWluOworICAgIHJldCArPSAiLCBjb2RlICI7Cisg
ICAgcmV0ICs9IFN0cmluZzo6bnVtYmVyKGVycm9yLT5jb2RlKTsKKyAgICBpZiAoZXJyb3ItPmZh
aWxpbmdfdXJsICYmICplcnJvci0+ZmFpbGluZ191cmwgIT0gJ1wwJykgeworICAgICAgICByZXQg
Kz0gIiwgZmFpbGluZyBVUkwgXCIiOworICAgICAgICByZXQgKz0gZXJyb3ItPmZhaWxpbmdfdXJs
OworICAgICAgICByZXQgKz0gIlwiIjsKKyAgICB9CisgICAgcmV0ICs9ICI+IjsKKworICAgIHJl
dHVybiByZXQudXRmOCgpOworfQorCiB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbGxT
ZW5kUmVxdWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCiB7Ci0gICAg
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfRnJh
bWVfUmVzb3VyY2VfUmVxdWVzdCo+KGV2ZW50SW5mbyk7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNl
X01lc3NhZ2VzKiBtZXNzYWdlcyA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9NZXNz
YWdlcyo+KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgICAgICBwcmludGYoIiVz
IC0gd2lsbFNlbmRSZXF1ZXN0ICVzIHJlZGlyZWN0UmVzcG9uc2UgJXNcbiIsCisgICAgICAgICAg
ICAgICAgICAgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChtZXNzYWdlcy0+cmVxdWVzdC0+dXJs
KS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQobWVzc2FnZXMtPnJlcXVlc3QpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICBkZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtZXNzYWdlcy0+cmVkaXJlY3RfcmVzcG9uc2Up
LmRhdGEoKSk7CiAKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT53aWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpKSB7CiAgICAgICAgIC8vIEFzIHJlcXVlc3RlZCBieSB0
aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIsIGRvbid0IHBlcmZvcm0gdGhlIHJlcXVlc3QuCi0gICAg
ICAgIHJlcXVlc3QtPnVybCA9IDA7CisgICAgICAgIG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwgPSAw
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBLVVJMKFBhcnNlZFVS
TFN0cmluZywgcmVxdWVzdC0+dXJsKTsKKyAgICBLVVJMIHVybCA9IEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBtZXNzYWdlcy0+cmVxdWVzdC0+dXJsKTsKIAogICAgIGlmICh1cmwuaXNWYWxpZCgpCiAg
ICAgICAgICYmIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkKICAgICAgICAgJiYgdXJsLmhv
c3QoKSAhPSAiMTI3LjAuMC4xIgogICAgICAgICAmJiB1cmwuaG9zdCgpICE9ICIyNTUuMjU1LjI1
NS4yNTUiCiAgICAgICAgICYmIHVybC5ob3N0KCkubG93ZXIoKSAhPSAibG9jYWxob3N0Iikgewot
ICAgICAgICBwcmludGYoIkJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCAlc1xuIiwgcmVx
dWVzdC0+dXJsKTsKLSAgICAgICAgcmVxdWVzdC0+dXJsID0gMDsKKyAgICAgICAgcHJpbnRmKCJC
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgJXNcbiIsIG1lc3NhZ2VzLT5yZXF1ZXN0LT51
cmwpOworICAgICAgICBtZXNzYWdlcy0+cmVxdWVzdC0+dXJsID0gMDsKICAgICB9CiB9CisKK3Zv
aWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZlZCh2b2lkKiwgRXZhc19P
YmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3Bv
bnNlKiByZXNwb25zZSA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo+
KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgQ1N0cmluZyByZXNwb25zZURl
c2NyaXB0aW9uKGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKSk7Cisg
ICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlUmVzcG9uc2UgJXNcbiIsCisgICAgICAgICAg
ICAgICBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKSwKKyAg
ICAgICAgICAgICAgIHJlc3BvbnNlRGVzY3JpcHRpb24uZGF0YSgpKTsKKyAgICB9Cit9CisKK3Zv
aWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2FkRmluaXNoZWQodm9pZCosIEV2
YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciA9ICpzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nKj4oZXZlbnRJbmZvKTsKKworICAgIGlm
ICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZpbmlzaExvYWRpbmdcbiIsCisgICAgICAg
ICAgICAgICAobV9kdW1wQXNzaWduZWRVcmxzLmNvbnRhaW5zKGlkZW50aWZpZXIpID8gbV9kdW1w
QXNzaWduZWRVcmxzLnRha2UoaWRlbnRpZmllcikuZGF0YSgpIDogIjx1bmtub3duPiIpKTsKK30K
Kwordm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQodm9pZCos
IEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19GcmFtZV9Mb2FkX0Vy
cm9yKiBlcnJvciA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9Mb2FkX0Vycm9yKj4oZXZlbnRJbmZv
KTsKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkaW5nV2l0
aEVycm9yOiAlc1xuIiwKKyAgICAgICAgICAgICAgIChtX2R1bXBBc3NpZ25lZFVybHMuY29udGFp
bnMoZXJyb3ItPnJlc291cmNlX2lkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRVcmxzLnRha2Uo
ZXJyb3ItPnJlc291cmNlX2lkZW50aWZpZXIpLmRhdGEoKSA6ICI8dW5rbm93bj4iKSwKKyAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGVycm9yKS5kYXRhKCkp
OworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbk5ld1Jlc291cmNlUmVxdWVzdCh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jl
c291cmNlX1JlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVxdWVzdCo+KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250
cm9sbGVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIG1fZHVtcEFzc2ln
bmVkVXJscy5hZGQocmVxdWVzdC0+aWRlbnRpZmllciwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChyZXF1ZXN0LT51cmwpKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9EdW1wUmVuZGVyVHJlZUNocm9tZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmgKaW5kZXggZTE1NmI0ZC4uODI3MzM2YSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTMxLDkgKzMxLDEx
IEBACiAKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogY2xhc3MgRHVtcFJlbmRlclRyZWVDaHJvbWUgewogcHVibGljOgpAQCAtNjEs
NiArNjMsNyBAQCBwcml2YXRlOgogICAgIEV2YXMqIG1fZXZhczsKICAgICBPd25QdHI8R0NDb250
cm9sbGVyPiBtX2djQ29udHJvbGxlcjsKICAgICBWZWN0b3I8RXZhc19PYmplY3QqPiBtX2V4dHJh
Vmlld3M7CisgICAgc3RhdGljIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgQ1N0cmluZz4gbV9kdW1w
QXNzaWduZWRVcmxzOwogCiAgICAgLy8gU21hcnQgY2FsbGJhY2tzCiAgICAgc3RhdGljIHZvaWQg
b25XaW5kb3dPYmplY3RDbGVhcmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKQEAgLTc3
LDYgKzgwLDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgb25Eb2N1bWVudExvYWRGaW5p
c2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiAKICAgICBzdGF0aWMgdm9pZCBvbldp
bGxTZW5kUmVxdWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMg
dm9pZCBvblJlc3BvbnNlUmVjZWl2ZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisg
ICAgc3RhdGljIHZvaWQgb25SZXNvdXJjZUxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvblJlc291cmNlTG9hZEZhaWxlZCh2b2lkKiwg
RXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvbk5ld1Jlc291cmNlUmVx
dWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiB9OwogCiAjZW5kaWYgLy8gRHVtcFJl
bmRlclRyZWVDaHJvbWVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138053</attachid>
            <date>2012-04-20 00:21:32 -0700</date>
            <delta_ts>2012-04-26 01:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>35703</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjY2MTE0Li5iNWU3NzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MjAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzIHdoaWNoIGRlcGVuZCBvbiBFRkwncyBEdW1wUmVu
ZGVyVHJlZSBzdXBwb3J0IGZvcgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSwgbm93IHRoYXQgaXQgaXMKKyAgICAgICAgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwogMjAxMi0wNC0xOSAgRG1p
dHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQs
IHJlLXVwZGF0ZSBiYXNlbGluZXMgZm9yIG5ldyB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBl
ZAppbmRleCBkZWM0Mjg3Li4zOWZiYjI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAt
NzUwLDEwICs3NTAsNiBAQCBmYXN0L2hpc3RvcnkvYmFjay1mb3J3YXJkLXJlc2V0LWFmdGVyLWVy
cm9yLWhhbmRsaW5nLmh0bWwKICMgTWlzc2luZyBkZWxlZ2F0ZXM6IHRlc3RzIHdoaWNoIG5lZWQg
cHJvcGVyIGZyYW1lIGxvYWRlciBjYWxsYmFja3MgcmVwb3J0aW5nCiBmYXN0L2xvYWRlci9maWxl
LXByb3RvY29sLWZyYWdtZW50Lmh0bWwKIAotIyBNaXNzaW5nIGRlbGVnYXRlczogdGVzdHMgZmFp
bGluZyBiZWNhdXNlIG9mIG1pc3NpbmcgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxsYmFja3Mu
Ci1mYXN0L2xvYWRlci9tYWluLWRvY3VtZW50LXVybC1mb3Itbm9uLWh0dHAtbG9hZHMuaHRtbAot
aHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi0KICMgTWlzc2lu
ZyBkZWxlZ2F0ZXM6IHRlc3RzIGZhaWxpbmcgYmVjYXVzZSBvZiBtaXNzaW5nIHBvbGljeSBkZWxl
Z2F0ZSBjYWxsYmFja3MuCiBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJh
bWUuaHRtbAogZmFzdC9sb2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29t
ZWQuaHRtbApAQCAtODA2LDcgKzgwMiw2IEBAIGh0dHAvdGVzdHMvbG9hZGluZy9wcmVsb2FkLXNs
b3ctbG9hZGluZy5waHAKIAogIyBCVUc6IE1pc3NpbmcgcmVzb3VyY2UgbG9hZCBjYWxsYmFjayBh
YmlsaXR5IGluIERSVAogaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbAot
aHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAog
CiAjIFJlcXVpcmVzIHdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCArIHdpbGxT
ZW5kUmVxdWVzdCArIGRpZEZpbmlzaExvYWRpbmcKIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQt
cmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbApAQCAtOTk4LDkgKzk5Myw2IEBA
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5z
aW9ucy1oZWFkZXIuaHRtbAogIyBUZXN0cyB3aGljaCBhbHNvIGZhaWwgaW4gb3RoZXIgcGxhdGZv
cm1zCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotIyBTaG91
bGQgYmUgbW92ZWQgdG8gcGxhdGZvcm0vbWFjIDxyZGFyOi8vNTYyMTQyNT4gKHZpYSB3aW4vLCBj
aHJvbWl1bS8gYW5kIHdpbmNhaXJvLykKLWh0dHAvdGVzdHMvbWlzYy93aWxsQ2FjaGVSZXNwb25z
ZS1kZWxlZ2F0ZS1jYWxsYmFjay5odG1sCi0KICMgRmFpbHMgYXNzZXJ0aW9uOiBBU1NFUlQobV93
b3JrZXJDb250ZXh0LT5oYXNPbmVSZWYoKSk7CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTgwMQogZmFzdC93b3JrZXJzL3N0b3JhZ2UvdXNlLXNhbWUtZGF0YWJh
c2UtaW4tcGFnZS1hbmQtd29ya2Vycy5odG1sCkBAIC0xMTYzLDEwICsxMTU1LDE5IEBAIGh0dHAv
dGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC5odG1sCiBodHRwL3Rlc3RzL21pc2MvYWNpZDMu
aHRtbAogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQtdHdpY2UuaHRtbAog
aHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCi1odHRwL3Rlc3Rz
L21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKIGh0dHAvdGVzdHMvbXVsdGlwYXJ0L3BvbGljeS1p
Z25vcmUtY3Jhc2gucGhwCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZlZWQtdXJscy1mcm9tLXJlbW90
ZS5odG1sCiAKKyMgUmVzb3VyY2VFcnJvciBkb21haW4gbmVlZHMgdG8gYmUgcHJvcGVybHkgc2V0
IGluIEZyYW1lTG9hZGVyQ2xpZW50CisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDEyOQoraHR0cC90ZXN0cy9taXNjL3dpbmRvdy1kb3Qtc3RvcC5odG1sCitodHRw
L3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWctaW4tYm9keS5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFt
ZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbAoraHR0
cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEt
dGFnLmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlv
bnMtZGVueS5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1v
cHRpb25zLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwKK2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWJvcnQtc2hvdWxkLWNhbmNlbC1sb2FkLmh0bWwKKwogIyBUZXN0IHRpbWVzIG91dCAo
dmlhIEdUSyspCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA4
NQogaHR0cC90ZXN0cy9taXNjL2lmcmFtZS1yZXBhcmVudGluZy1pZC1jb2xsaXNpb24uaHRtbApA
QCAtMjMxOSwxOCArMjMyMCwxMCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3JlZmVycmVyLXBvbGlj
eS1odHRwcy1vcmlnaW4uaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9yZWZlcnJlci1wb2xpY3kt
cmVkaXJlY3QuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVu
dC1yZWRpcmVjdC54bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZXh0ZXJu
YWwtZW50aXR5LXJlZGlyZWN0LnhtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25z
L3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWluLWJvZHkuaHRtbAotaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVu
dC1zYW1lLW9yaWdpbi1hbGxvdy5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlv
bnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnku
aHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1k
ZW55LW1ldGEtdGFnLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZy
YW1lLW9wdGlvbnMtZGVueS5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMv
eC1mcmFtZS1vcHRpb25zLXBhcmVudC1zYW1lLW9yaWdpbi1hbGxvdy5odG1sCi1odHRwL3Rlc3Rz
L3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLXBhcmVudC1zYW1lLW9yaWdp
bi1kZW55Lmh0bWwKIGh0dHAvdGVzdHMvc3NsL3JlZmVyZXItMzAxLmh0bWwKIGh0dHAvdGVzdHMv
c3NsL3JlZmVyZXItMzAzLmh0bWwKIGh0dHAvdGVzdHMvc3NsL3ZlcmlmeS1zc2wtZW5hYmxlZC5w
aHAKIGh0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0
bWwKLWh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWJvcnQtc2hvdWxkLWNhbmNlbC1sb2FkLmh0
bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtd2hpdGVs
aXN0LXJlcXVlc3QtaGVhZGVycy5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2lj
LWF1dGgtbm9wYXNzd29yZC5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2ljLWF1
dGgtbm91c2VyLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA4MGMwYzVkLi5hNGY0MWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDQtMjAgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBEUlQgc2hv
dWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
ODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZM
J3MgRnJhbWVMb2FkZXJDbGllbnQgbm93IHByb3ZpZGVzIHRoZSByZWRpcmVjdCByZXNwb25zZSBp
biBhZGRpdGlvbgorICAgICAgICB0byB0aGUgcmVxdWVzdCBpbiB0aGUgInJlc291cmNlLHJlcXVl
c3Qsd2lsbHNlbmQiIHNpZ25hbC4gSXQgYWxzbworICAgICAgICBwcm92aWRlcyBtb3JlIGluZm9y
bWF0aW9uIGFib3V0IHRoZSByZXNvdXJjZSByZXF1ZXN0LCBpbiBwYXJ0aWN1bGFyLAorICAgICAg
ICB0aGUgSFRUUCBtZXRob2QgYW5kIHRoZSBtYWluIGRvY3VtZW50IFVSSSAoZmlyc3QgcGFydHkp
LiBOZXcgc2lnbmFscworICAgICAgICBzdWNoIGFzICJsb2FkLHJlc291cmNlLGZpbmlzaGVkIiwg
ImxvYWQscmVzb3VyY2UsZmFpbGVkIiwKKyAgICAgICAgInJlc291cmNlLHJlc3BvbnNlLHJlY2Vp
dmVkIiB3ZXJlIGFsc28gYWRkZWQgdG8gbm90aWZ5IGFib3V0IGRpZmZlcmVudAorICAgICAgICBy
ZXNvdXJjZSBsb2FkIGV2ZW50cy4KKyAgICAgICAgVGhlc2UgYWRkaXRpb25hbCBwaWVjZXMgb2Yg
aW5mb3JtYXRpb24gYW5kIHNpZ25hbHMgYXJlIG5lZWRlZCBmb3IKKyAgICAgICAgcHJvcGVyIHN1
cHBvcnQgb2YgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
KCkKKyAgICAgICAgaW4gRUZMJ3MgRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExv
YWRpbmcpOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1l
X3JlcXVlc3Rfd2lsbF9zZW5kKToKKyAgICAgICAgKGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZl
ZCk6CisgICAgICAgIChld2tfZnJhbWVfbG9hZF9maW5pc2hlZCk6CisgICAgICAgIChld2tfZnJh
bWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZCk6CisgICAgICAgIChld2tfZnJhbWVfbG9hZF9yZXNv
dXJjZV9mYWlsZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZXJyb3IpOgorICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuaDoKKyAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuaDoKKwogMjAxMi0wNC0xOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIGRpc3BhdGNoRGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3QgbmVlZHMgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRl
eCA4ZWFiYzAzLi44ODllYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC0xNzAsNyArMTcwLDkg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWQKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiBjb3JlUmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgY29yZVJlc3BvbnNlKQogewogICAgIENTdHJpbmcgdXJsID0gY29yZVJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIERCRygiUmVzb3VyY2UgdXJsPSVzIiwgdXJs
LmRhdGEoKSk7CisgICAgQ1N0cmluZyBmaXJzdFBhcnR5ID0gY29yZVJlcXVlc3QuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgQ1N0cmluZyBodHRwTWV0aG9kID0g
Y29yZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKTsKKyAgICBEQkcoIlJlc291cmNlIHVybD0l
cywgZmlyc3RfcGFydHk9JXMsIGh0dHBfbWV0aG9kPSVzIiwgdXJsLmRhdGEoKSwgZmlyc3RQYXJ0
eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpKTsKIAogICAgIC8vIFdlIHdhbnQgdG8gZGlzdGlu
Z3Vpc2ggYmV0d2VlbiBhIHJlcXVlc3QgZm9yIGEgZG9jdW1lbnQgdG8gYmUgbG9hZGVkIGludG8K
ICAgICAvLyB0aGUgbWFpbiBmcmFtZSwgYSBzdWItZnJhbWUsIG9yIHRoZSBzdWItb2JqZWN0cyBp
biB0aGF0IGRvY3VtZW50LgpAQCAtMTgwLDE0ICsxODIsMzAgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
dW5zaWcKICAgICAgICAgICAgIGlzTWFpbkZyYW1lUmVxdWVzdCA9IChsb2FkZXIgPT0gZnJhbWVM
b2FkZXItPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZUxvYWRlci0+aXNMb2Fk
aW5nTWFpbkZyYW1lKCkpOwogICAgIH0KIAotICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
IHJlcXVlc3QgPSB7IDAsIGlkZW50aWZpZXIsIG1fZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9
OworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHJlcXVlc3QgPSB7IDAsIDAsIDAsIGlk
ZW50aWZpZXIsIG1fZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9OwogICAgIEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXF1ZXN0IG9yaWcgPSByZXF1ZXN0OyAvKiBJbml0aWFsaXplIGNvbnN0IGZpZWxk
cy4gKi8KIAogICAgIG9yaWcudXJsID0gcmVxdWVzdC51cmwgPSB1cmwuZGF0YSgpOworICAgIHJl
cXVlc3QuZmlyc3RfcGFydHkgPSBmaXJzdFBhcnR5LmRhdGEoKTsKKyAgICByZXF1ZXN0Lmh0dHBf
bWV0aG9kID0gaHR0cE1ldGhvZC5kYXRhKCk7CiAKLSAgICBld2tfZnJhbWVfcmVxdWVzdF93aWxs
X3NlbmQobV9mcmFtZSwgJnJlcXVlc3QpOworICAgIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25z
ZSogcmVkaXJlY3RSZXNwb25zZTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgcmVz
cG9uc2VCdWZmZXI7CisgICAgQ1N0cmluZyByZWRpcmVjdFVybDsKIAotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIs
ICZyZXF1ZXN0KTsKKyAgICBpZiAoY29yZVJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICByZWRp
cmVjdFJlc3BvbnNlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVkaXJlY3RVcmwgPSBjb3Jl
UmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgICAgICByZXNwb25zZUJ1ZmZlci51
cmwgPSByZWRpcmVjdFVybC5kYXRhKCk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLnN0YXR1c19j
b2RlID0gY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgICAgIHJlZGlyZWN0UmVz
cG9uc2UgPSAmcmVzcG9uc2VCdWZmZXI7CisgICAgfQorICAgIEV3a19GcmFtZV9SZXNvdXJjZV9N
ZXNzYWdlcyBtZXNzYWdlcyA9IHsgJnJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UgfTsKKworICAg
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChtX2ZyYW1lLCAmbWVzc2FnZXMpOworCisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0
LHdpbGxzZW5kIiwgJm1lc3NhZ2VzKTsKIAogICAgIGlmIChyZXF1ZXN0LnVybCAhPSBvcmlnLnVy
bCkgewogICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIHJlcXVlc3QudXJs
KSk7CkBAIC0yMDcsNyArMjI1LDkgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIENTdHJpbmcgdXJsID0gY29yZVJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpOwotICAgIERCRygiUmVzb3VyY2UgdXJsPSVzIiwgdXJsLmRh
dGEoKSk7CisgICAgQ1N0cmluZyBmaXJzdFBhcnR5ID0gY29yZVJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgQ1N0cmluZyBodHRwTWV0aG9kID0gY29y
ZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKTsKKyAgICBEQkcoIlJlc291cmNlIHVybD0lcywg
Rmlyc3QgcGFydHk9JXMsIEhUVFAgbWV0aG9kPSVzIiwgdXJsLmRhdGEoKSwgZmlyc3RQYXJ0eS5k
YXRhKCksIGh0dHBNZXRob2QuZGF0YSgpKTsKIAogICAgIGJvb2wgaXNNYWluRnJhbWVSZXF1ZXN0
ID0gZmFsc2U7CiAgICAgaWYgKGxvYWRlcikgewpAQCAtMjE1LDggKzIzNSw5IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpCiAgICAgICAgICAgICBpc01haW5GcmFtZVJlcXVlc3QgPSAobG9hZGVy
ID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWVMb2Fk
ZXItPmlzTG9hZGluZ01haW5GcmFtZSgpKTsKICAgICB9CiAKLSAgICBFd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVxdWVzdCByZXF1ZXN0ID0geyAwLCBpZGVudGlmaWVyLCBtX2ZyYW1lLCBpc01haW5GcmFt
ZVJlcXVlc3QgfTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1
cmwuZGF0YSgpLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCksIGlkZW50aWZp
ZXIsIG1fZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9OwogICAgIGV3a19mcmFtZV9yZXF1ZXN0
X2Fzc2lnbl9pZGVudGlmaWVyKG1fZnJhbWUsICZyZXF1ZXN0KTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgJnJlcXVl
c3QpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwb3N0UHJvZ3Jlc3NTdGFydGVk
Tm90aWZpY2F0aW9uKCkKQEAgLTI0NCwxMyArMjY1LDIxIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CiAgICAgLy8gVXBkYXRlIG91ciBrbm93bGVk
Z2Ugb2YgcmVxdWVzdCBzb3VwIGZsYWdzIC0gc29tZSBhcmUgb25seSBzZXQKICAgICAvLyBhZnRl
ciB0aGUgcmVxdWVzdCBpcyBkb25lLgotICAgIGxvYWRlci0+cmVxdWVzdCgpLnNldFNvdXBNZXNz
YWdlRmxhZ3MocmVzcG9uc2Uuc291cE1lc3NhZ2VGbGFncygpKTsKKyAgICBsb2FkZXItPnJlcXVl
c3QoKS5zZXRTb3VwTWVzc2FnZUZsYWdzKGNvcmVSZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkp
OworCisgICAgbV9yZXNwb25zZSA9IGNvcmVSZXNwb25zZTsKKworICAgIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXNwb25zZSByZXNwb25zZSA9IHsgMCwgY29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgfTsKKyAgICBDU3RyaW5nIHVybCA9IGNvcmVSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51dGY4
KCk7CisgICAgcmVzcG9uc2UudXJsID0gdXJsLmRhdGEoKTsKIAotICAgIG1fcmVzcG9uc2UgPSBy
ZXNwb25zZTsKKyAgICBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQobV9mcmFtZSwgJnJlc3Bv
bnNlKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVz
b3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCAmcmVzcG9uc2UpOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5
RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAgLTI5OCwxMCArMzI3LDExIEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAKICAgICAvLyBpZiBub3QgYWNjZXB0TmF2aWdhdGlv
blJlcXVlc3QgLSBsb29rIGF0IFF0IC0+IFBvbGljeUlnbm9yZTsKICAgICAvLyBGSVhNRTogZG8g
cHJvcGVyIGNoZWNrIGFuZCBvbmx5IHJlc2V0IGZvcm1zIHdoZW4gb24gUG9saWN5SWdub3JlCi0g
ICAgY2hhciogdXJsID0gc3RyZHVwKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1
cmwsIDAsIG1fZnJhbWUsIGZhbHNlIH07CisgICAgQ1N0cmluZyB1cmwgPSByZXNvdXJjZVJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIENTdHJpbmcgZmlyc3RQYXJ0eSA9IHJlc291
cmNlUmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpLnV0ZjgoKTsKKyAgICBD
U3RyaW5nIGh0dHBNZXRob2QgPSByZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKTsK
KyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1cmwuZGF0YSgpLCBm
aXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCksIDAsIG1fZnJhbWUsIGZhbHNlIH07
CiAgICAgYm9vbCByZXQgPSBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihtX3Zp
ZXcsICZyZXF1ZXN0KTsKLSAgICBmcmVlKHVybCk7CiAKICAgICBQb2xpY3lBY3Rpb24gcG9saWN5
OwogICAgIGlmICghcmV0KQpAQCAtNzMwLDEyICs3NjAsMzEgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlcios
IHVuc2kKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQobV9m
cmFtZSwgaWRlbnRpZmllcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbCht
X3ZpZXcsICJsb2FkLHJlc291cmNlLGZpbmlzaGVkIiwgJmlkZW50aWZpZXIpOwogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrX0ZyYW1lX0xv
YWRfRXJyb3IgZXJyb3I7CisgICAgQ1N0cmluZyBlcnJvckRvbWFpbiA9IGVyci5kb21haW4oKS51
dGY4KCk7CisgICAgQ1N0cmluZyBlcnJvckRlc2NyaXB0aW9uID0gZXJyLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkudXRmOCgpOworICAgIENTdHJpbmcgZmFpbGluZ1VybCA9IGVyci5mYWlsaW5nVVJM
KCkudXRmOCgpOworCisgICAgREJHKCJld2tGcmFtZT0lcCwgcmVzb3VyY2U9JWxkLCBlcnJvcj0l
cyAoJWQsIGNhbmNlbGxhdGlvbj0laGh1KSBcIiVzXCIsIHVybD0lcyIsCisgICAgICAgIG1fZnJh
bWUsIGlkZW50aWZpZXIsIGVycm9yRG9tYWluLmRhdGEoKSwgZXJyLmVycm9yQ29kZSgpLCBlcnIu
aXNDYW5jZWxsYXRpb24oKSwKKyAgICAgICAgZXJyb3JEZXNjcmlwdGlvbi5kYXRhKCksIGZhaWxp
bmdVcmwuZGF0YSgpKTsKKworICAgIGVycm9yLmNvZGUgPSBlcnIuZXJyb3JDb2RlKCk7CisgICAg
ZXJyb3IuaXNfY2FuY2VsbGF0aW9uID0gZXJyLmlzQ2FuY2VsbGF0aW9uKCk7CisgICAgZXJyb3Iu
ZG9tYWluID0gZXJyb3JEb21haW4uZGF0YSgpOworICAgIGVycm9yLmRlc2NyaXB0aW9uID0gZXJy
b3JEZXNjcmlwdGlvbi5kYXRhKCk7CisgICAgZXJyb3IuZmFpbGluZ191cmwgPSBmYWlsaW5nVXJs
LmRhdGEoKTsKKyAgICBlcnJvci5yZXNvdXJjZV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAg
ICBlcnJvci5mcmFtZSA9IG1fZnJhbWU7CisKKyAgICBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9m
YWlsZWQobV9mcmFtZSwgJmVycm9yKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgJmVycm9yKTsKIH0KIAogYm9vbCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5k
ZXggNGM2MzlkMy4uYThhYTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAg
LTEyMjAsMTUgKzEyMjAsMTUgQEAgdm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2FuY2VsbGVkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKICAqIGNoYW5naW5nIHZhbHVlcyBpbiBAcGFyYW0gcmVxdWVz
dC4KICAqCiAgKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCi0gKiBAcGFyYW0gcmVxdWVzdCBSZXF1
ZXN0IGRldGFpbHMgdGhhdCB1c2VyIG1heSBvdmVycmlkZS4gV2hlbmV2ZXIgdmFsdWVzIG9uCi0g
KiB0aGlzIHN0cnVjdCBjaGFuZ2VzLCBpdCBtdXN0IGJlIHByb3Blcmx5IG1hbGxvYydkIGFzIGl0
IHdpbGwgYmUgZnJlZWQKLSAqIGFmdGVyd2FyZHMuCisgKiBAcGFyYW0gbWVzc2FnZXMgTWVzc2Fn
ZXMgY29udGFpbmluZyB0aGUgcmVxdWVzdCBkZXRhaWxzIHRoYXQgdXNlciBtYXkgb3ZlcnJpZGUg
YW5kIGEKKyAqIHBvc3NpYmxlIHJlZGlyZWN0IHJlcG9uc2UuIFdoZW5ldmVyIHZhbHVlcyBvbiB0
aGlzIHN0cnVjdCBjaGFuZ2VzLCBpdCBtdXN0IGJlIHByb3Blcmx5CisgKiBtYWxsb2MnZCBhcyBp
dCB3aWxsIGJlIGZyZWVkIGFmdGVyd2FyZHMuCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3Vy
Y2UscmVxdWVzdCx3aWxsc2VuZCIKICAqLwotdm9pZCBld2tfZnJhbWVfcmVxdWVzdF93aWxsX3Nl
bmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVx
dWVzdCkKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKiBtZXNzYWdlcykKIHsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAicmVzb3VyY2UscmVxdWVzdCx3
aWxsc2VuZCIsIHJlcXVlc3QpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrRnJhbWUsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgbWVzc2FnZXMpOwogfQogCiAv
KioKQEAgLTEyNDcsNiArMTI0NywyMCBAQCB2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9p
ZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lXwogCiAvKioK
ICAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGF0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSBy
ZXF1ZXN0IHdhcyByZWNlaXZlZC4KKyAqCisgKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCisgKiBA
cGFyYW0gcmVxdWVzdCBSZXNwb25zZSBkZXRhaWxzLiBObyBjaGFuZ2VzIGFyZSBhbGxvd2VkIHRv
IGZpZWxkcy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZl
ZCIKKyAqLwordm9pZCBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKQoreworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJyZXNvdXJjZSxyZXNwb25z
ZSxyZWNlaXZlZCIsIHJlc3BvbnNlKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKICAqIFJlcG9y
dHMgdGhhdCBmaXJzdCBuYXZpZ2F0aW9uIG9jY3VycmVkCiAgKgogICogQHBhcmFtIGV3a0ZyYW1l
IEZyYW1lLgpAQCAtMTM4Miw2ICsxMzk2LDcgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQKICAg
ICAgICAgYnVmZmVyLmlzX2NhbmNlbGxhdGlvbiA9IGlzQ2FuY2VsbGF0aW9uOwogICAgICAgICBi
dWZmZXIuZGVzY3JpcHRpb24gPSBlcnJvckRlc2NyaXB0aW9uOwogICAgICAgICBidWZmZXIuZmFp
bGluZ191cmwgPSBmYWlsaW5nVXJsOworICAgICAgICBidWZmZXIucmVzb3VyY2VfaWRlbnRpZmll
ciA9IDA7CiAgICAgICAgIGJ1ZmZlci5mcmFtZSA9IGV3a0ZyYW1lOwogICAgICAgICBlcnJvciA9
ICZidWZmZXI7CiAgICAgfQpAQCAtMTM5Miw2ICsxNDA3LDI5IEBAIHZvaWQgZXdrX2ZyYW1lX2xv
YWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFp
biwgaW50CiAKIC8qKgogICogQGludGVybmFsCisgKiBSZXBvcnRzIHJlc291cmNlIGxvYWQgZmlu
aXNoZWQuCisgKgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIgd2l0
aCB0aGUgcmVzb3VyY2UKKyAqIHJlcXVlc3QgaWRlbnRpZmllci4KKyAqLwordm9pZCBld2tfZnJh
bWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a0ZyYW1lLCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsICZpZGVudGlmaWVyKTsKK30KKwor
LyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmYWlsdXJlLCB3aXRo
IGVycm9yIGluZm9ybWF0aW9uLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImxvYWQscmVzb3VyY2Us
ZmFpbGVkIiB3aXRoIHRoZSBlcnJvciBpbmZvcm1hdGlvbi4KKyAqLwordm9pZCBld2tfZnJhbWVf
bG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfTG9h
ZF9FcnJvciogZXJyb3IpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tGcmFtZSwgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgZXJyb3IpOworfQorCisvKioKKyAqIEBp
bnRlcm5hbAogICogUmVwb3J0cyBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgog
ICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfRnJh
bWVfTG9hZF9FcnJvci4KQEAgLTE0MTEsNiArMTQ0OSw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRf
ZXJyb3IoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50
IGVyCiAgICAgZXJyb3IuZG9tYWluID0gZXJyb3JEb21haW47CiAgICAgZXJyb3IuZGVzY3JpcHRp
b24gPSBlcnJvckRlc2NyaXB0aW9uOwogICAgIGVycm9yLmZhaWxpbmdfdXJsID0gZmFpbGluZ1Vy
bDsKKyAgICBlcnJvci5yZXNvdXJjZV9pZGVudGlmaWVyID0gMDsKICAgICBlcnJvci5mcmFtZSA9
IGV3a0ZyYW1lOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUs
ICJsb2FkLGVycm9yIiwgJmVycm9yKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihl
d2tGcmFtZSwgc21hcnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAppbmRleCA5NDNm
YzFlLi5lNmM0MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCkBAIC00Niw2ICs0Niwx
MCBAQAogICogIC0gImxvYWQsZmluaXNoZWQiLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6
IHJlcG9ydHMgbG9hZAogICogICAgZmluaXNoZWQgYW5kIGl0IGdpdmVzIEBjIE5VTEwgb24gc3Vj
Y2VzcyBvciBwb2ludGVyIHRvCiAgKiAgICBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9yLgor
ICogIC0gImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCB1bnNpZ25lZCBsb25nOiByZXBvcnRzIHJl
c291cmNlIGxvYWQgZmluaXNoZWQgYW5kIGl0IGdpdmVzCisgKiAgICBpdHMgaWRlbnRpZmllci4K
KyAqICAtICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yOiByZXBv
cnRzIHJlc291cmNlIGxvYWQgZmFpbHVyZSBhbmQgaXQKKyAqICAgIGdpdmVzIGEgcG9pbnRlciB0
byBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9yIGFzIGFuIGFyZ3VtZW50LgogICogIC0gImxv
YWQsZmlyc3RsYXlvdXQsZmluaXNoZWQiLCB2b2lkOiBmcmFtZSBmaW5pc2hlZCBmaXJzdCBsYXlv
dXQuCiAgKiAgLSAibG9hZCxub25lbXB0eWxheW91dCxmaW5pc2hlZCIsIHZvaWQ6IGZyYW1lIGZp
bmlzaGVkIGZpcnN0CiAgKiAgICBub24tZW1wdHkgbGF5b3V0LgpAQCAtNTksOCArNjMsMTAgQEAK
ICAqICAtICJyZWRpcmVjdCxjYW5jZWxsZWQiLCB2b2lkOiBjbGllbnQgcmVkaXJlY3Qgd2FzIGNh
bmNlbGxlZC4KICAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0CiAgKiAgICB0aGVyZSdzIGEgbmV3IHJlc291cmNlIHJl
cXVlc3QuCi0gKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSB3aWxsCisgKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3
aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2lsbAog
ICogICAgYmUgcmVxdWVzdGVkLgorICogIC0gInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwg
RXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKjogcmVwb3J0cyB0aGF0IGEgcmVzcG9uc2UKKyAq
ICAgIHRvIGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCiAgKiAgLSAic3RhdGUsc2F2
ZSIsIHZvaWQ6IGZyYW1lJ3Mgc3RhdGUgd2lsbCBiZSBzYXZlZCBhcyBhIGhpc3RvcnkgaXRlbS4K
ICAqICAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9mIHRoZSBtYWluIGZy
YW1lIHdhcyBjaGFuZ2VkLgogICogIC0gInVyaSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHVyaSBv
ZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KQEAgLTk0LDI1ICsxMDAsNTAgQEAgc3RydWN0
IF9Fd2tfRnJhbWVfTG9hZF9FcnJvciB7CiAgICAgY29uc3QgY2hhciAqZG9tYWluOyAvKio8IGVy
cm9yIGRvbWFpbiBuYW1lICovCiAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb247IC8qKjwgZXJy
b3IgZGVzY3JpcHRpb24gYWxyZWFkeSBsb2NhbGl6ZWQgKi8KICAgICBjb25zdCBjaGFyICpmYWls
aW5nX3VybDsgLyoqPCB0aGUgdXJsIHRoYXQgZmFpbGVkIHRvIGxvYWQgKi8KKyAgICB1bnNpZ25l
ZCBsb25nIHJlc291cmNlX2lkZW50aWZpZXI7IC8qKjwgaWRlbnRpZmllciBvZiByZXNvdXJjZSAq
LwogICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCBmcmFtZSB3aGVyZSB0aGUgZmFpbHVyZSBo
YXBwZW5lZCAqLwogfTsKIAogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdC4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVx
dWVzdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdDsKKwogLyoqCi0gKiBAYnJpZWYgICBTdHJ1
Y3R1cmUgdXNlZCB0byByZXBvcnQgcmVzb3VyY2UgcmVxdWVzdC4KKyAqIEBicmllZiAgIFN0cnVj
dHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNvdXJjZSByZXF1ZXN0LgogICoKLSAq
IERldGFpbHMgZ2l2ZW4gYmVmb3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVkIG9uIGEgZ2l2ZW4gZnJh
bWUuIEl0J3MgdXNlZCBieQotICogZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKCkgdG8gaW5m
b3JtIHRoZSBkZXRhaWxzIG9mIGEgdG8tYmUtbG9hZGVkCi0gKiByZXNvdXJjZSwgYWxsb3dpbmcg
dGhlbSB0byBiZSBvdmVycmlkZGVuLgorICogRGV0YWlscyBnaXZlbiBiZWZvcmUgYSByZXNvdXJj
ZSBpcyBsb2FkZWQgb24gYSBnaXZlbiBmcmFtZS4gSXQncyB1c2VkIGluCisgKiBFd2tfRnJhbWVf
UmVzb3VyY2VfTWVzc2FnZXMgdG8gaW5mb3JtIGFib3V0IHRoZSBkZXRhaWxzIG9mIGEgcmVzb3Vy
Y2UgcmVxdWVzdC4KICAqLwogc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCB7CiAg
ICAgY29uc3QgY2hhciAqdXJsOyAvKio8IHVybCBvZiB0aGUgcmVzb3VyY2UgKi8KKyAgICBjb25z
dCBjaGFyICpmaXJzdF9wYXJ0eTsgLyoqPCBmaXJzdCBwYXJ0eSBmb3IgY29va2llcywgY2FuIG5v
dCBiZSBjaGFuZ2VkICAqLworICAgIGNvbnN0IGNoYXIgKmh0dHBfbWV0aG9kOyAvKio8IGh0dHAg
bWV0aG9kLCBjYW4gbm90IGJlIGNoYW5nZWQgICovCiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyOyAvKio8IGlkZW50aWZpZXIgb2YgcmVzb3VyY2UsIGNhbiBub3QgYmUgY2hhbmdl
ZCAqLwogICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCBmcmFtZSB3aGVyZSB0aGUgcmVzb3Vy
Y2UgaXMgcmVxdWVzdGVkICovCiAgICAgRWluYV9Cb29sIGlzX21haW5fZnJhbWVfcmVxdWVzdDsg
LyoqIDwgaW5kaWNhdGVzIGlmIHRoZSByZXF1ZXN0IGlzIGZvciB0aGUgbWFpbiBmcmFtZSAqLwog
fTsKIAorLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVz
cG9uc2UuCit0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXNwb25zZTsKKworLyoqCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgY29u
dGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSByZXF1ZXN0Lgor
ICoKKyAqIERldGFpbHMgZ2l2ZW4gaW4gdGhlIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgcmVxdWVz
dC4gSXQncyB1c2VkIGJ5CisgKiBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoKSB0byBpbmZv
cm0gYWJvdXQgdGhlIGRldGFpbHMgb2YgYSByZXNwb25zZS4KKyAqLworc3RydWN0IF9Fd2tfRnJh
bWVfUmVzb3VyY2VfUmVzcG9uc2UgeworICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1cmwgb2Yg
dGhlIHJlc291cmNlICovCisgICAgaW50IHN0YXR1c19jb2RlOyAvKio8IGh0dHAgc3RhdHVzIGNv
ZGUgKi8KK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291
cmNlX01lc3NhZ2VzLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdl
cyBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXM7CisKK3N0cnVjdCBfRXdrX0ZyYW1lX1Jlc291
cmNlX01lc3NhZ2VzIHsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVxdWVzdDsg
LyoqPCByZXNvdXJjZSByZXF1ZXN0ICovCisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNl
ICpyZWRpcmVjdF9yZXNwb25zZTsgLyoqPCByZWRpcmVjdCByZXNwb25zZSwgY2FuIG5vdCBiZSBj
aGFuZ2VkICovCit9OworCiAvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0ZyYW1lX1hz
c19Ob3RpZmljYXRpb24uCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRp
b24gRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2
YXRlLmgKaW5kZXggOWMyMmQ0YS4uODU1ZDMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2
YXRlLmgKQEAgLTIxOSwxMiArMjE5LDE1IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlv
dXRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRf
Zmlyc3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKIHZv
aWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
b25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlv
biwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1VybCk7
Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVz
b3VyY2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xvYWRfRXJyb3Iq
IGVycm9yKTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxh
dGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1Vy
bCk7CiB2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKIAogdm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2FuY2VsbGVkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVj
dCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKK3ZvaWQg
ZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0Zy
YW1lX1Jlc291cmNlX01lc3NhZ2VzKiBtZXNzYWdlcyk7CiB2b2lkIGV3a19mcmFtZV9yZXF1ZXN0
X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpOwordm9pZCBld2tfZnJhbWVfcmVzcG9uc2VfcmVj
ZWl2ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2Uq
IHJlc3BvbnNlKTsKIHZvaWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCog
ZXdrRnJhbWUsIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKTsKIAogdm9pZCBld2tfZnJhbWVf
ZGlkX3BlcmZvcm1fZmlyc3RfbmF2aWdhdGlvbihFdmFzX09iamVjdCogZXdrRnJhbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBmMmYwYmUxLi5hN2Q0NDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaApAQCAtNjAsNiArNjAsMTAgQEAKICAqICAtICJsb2FkLHByb2dyZXNzIiwg
ZG91YmxlKjogbG9hZCBwcm9ncmVzcyBpcyBjaGFuZ2VkIChvdmVyYWxsIHZhbHVlCiAgKiAgICBm
cm9tIDAuMCB0byAxLjAsIGNvbm5lY3QgdG8gaW5kaXZpZHVhbCBmcmFtZXMgZm9yIGZpbmUgZ3Jh
aW5lZCkuCiAgKiAgLSAibG9hZCxwcm92aXNpb25hbCIsIHZvaWQ6IHZpZXcgc3RhcnRlZCBwcm92
aXNpb25hbCBsb2FkLgorICogIC0gImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCB1bnNpZ25lZCBs
b25nOiByZXBvcnRzIHJlc291cmNlIGxvYWQgZmluaXNoZWQgYW5kIGl0IGdpdmVzCisgKiAgICBp
dHMgaWRlbnRpZmllci4KKyAqICAtICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9M
b2FkX0Vycm9yOiByZXBvcnRzIHJlc291cmNlIGxvYWQgZmFpbHVyZSBhbmQgaXQKKyAqICAgIGdp
dmVzIGEgcG9pbnRlciB0byBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGVycm9yIGFzIGFuIGFyZ3Vt
ZW50LgogICogIC0gImxvYWQsc3RhcnRlZCIsIEV2YXNfT2JqZWN0KjogZnJhbWUgc3RhcnRlZCBs
b2FkaW5nIHRoZSBkb2N1bWVudC4KICAqICAtICJtZW51YmFyLHZpc2libGUsZ2V0IiwgRWluYV9C
b29sICo6IGV4cGVjdHMgYSBAYyBFSU5BX1RSVUUgaWYgbWVudWJhciBpcwogICogICAgdmlzaWJs
ZTsgQGMgRUlOQV9GQUxTRSwgb3RoZXJ3aXNlLgpAQCAtNjgsOCArNzIsMTEgQEAKICAqICAtICJt
aXhlZGNvbnRlbnQscnVuIiwgdm9pZDogYW55IG9mIHRoZSBjb250YWluaW5nIGZyYW1lcyBoYXMg
bG9hZGVkIGFuZCBydW4gbWl4ZWQgY29udGVudC4KICAqICAtICJvbmxvYWQsZXZlbnQiLCBFdmFz
X09iamVjdCo6IGEgZnJhbWUgb25sb2FkIGV2ZW50IGhhcyBiZWVuIHJlY2VpdmVkLgogICogIC0g
InJlYWR5Iiwgdm9pZDogcGFnZSBpcyBmdWxseSBsb2FkZWQuCi0gKiAgLSAicmVzb3VyY2UscmVx
dWVzdCx3aWxsc2VuZCIsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSB3
aWxsCi0gKiAgICBiZSByZXF1ZXN0ZWQuCisgKiAgLSAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBF
d2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo6IHJlcG9ydHMgdGhhdAorICogICAgdGhlcmUncyBh
IG5ldyByZXNvdXJjZSByZXF1ZXN0LgorICogIC0gInJlc291cmNlLHJlcXVlc3Qsd2lsbHNlbmQi
LCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqOiBhIHJlc291cmNlIHdpbGwgYmUgcmVxdWVz
dGVkLgorICogICAgIGFuZCB0aGUgcG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UuCisgKiAgLSAi
cmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2Uq
OiB0aGUgbmV0d29yayByZXNwb25zZSBmb3IgYSByZXNvdXJjZS4KICAqICAtICJzY3JvbGxiYXJz
LHZpc2libGUsZ2V0IiwgRWluYV9Cb29sICo6IGV4cGVjdHMgYSBAYyBFSU5BX1RSVUUgaWYgc2Ny
b2xsYmFycwogICogICAgYXJlIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KICAq
ICAtICJzY3JvbGxiYXJzLHZpc2libGUsc2V0IiwgRWluYV9Cb29sOiBzZXRzIHNjcm9sbGJhcnMg
dmlzaWJpbGl0eS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MTJhYTQ4Li5iZjIzMjVjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDQtMjAgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBE
UlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyJ3MKKyAgICAgICAg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIGluIEVGTCdzIER1bXBSZW5kZXJUcmVlIGJ5IGNh
dGNoaW5nIG5ldworICAgICAgICBld2tfdmlldyBzaWduYWxzIGFib3V0IHJlc291cmNlIGxvYWRp
bmcgYW5kIHByaW50IG91dCB0aGUgbmVjZXNzYXJ5CisgICAgICAgIGluZm9ybWF0aW9uLiBUaGlz
IGFsbG93cyBmb3Igc2V2ZXJhbCB0ZXN0IGNhc2VzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUKKyAg
ICAgICAgc2tpcCBsaXN0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGVW
aWV3KToKKyAgICAgICAgKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAodXJs
U3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKGRlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25SZXNwb25zZVJlY2VpdmVk
KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc291cmNlTG9hZEZpbmlzaGVk
KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc291cmNlTG9hZEZhaWxlZCk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25OZXdSZXNvdXJjZVJlcXVlc3QpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5oOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWUpOgorCiAyMDEyLTA0LTE5ICBKZXJlbXkgTWFvICA8
eXVqaWUubWFvQGludGVsLmNvbT4KIAogICAgICAgICBNZWRpYSBTdHJlYW0gQVBJOiBQaWVjZSBv
ZiBjb2RlIGNsZWFudXAgZm9yIHRoZSBjaHJvbWl1bSBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAppbmRleCAzMTExM2M0Li5hZDIw
ZTY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVD
aHJvbWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNo
cm9tZS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
K0hhc2hNYXA8dW5zaWduZWQgbG9uZywgQ1N0cmluZz4gRHVtcFJlbmRlclRyZWVDaHJvbWU6Om1f
ZHVtcEFzc2lnbmVkVXJsczsKKwogUGFzc093blB0cjxEdW1wUmVuZGVyVHJlZUNocm9tZT4gRHVt
cFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZShFdmFzKiBldmFzKQogewogICAgIE93blB0cjxEdW1w
UmVuZGVyVHJlZUNocm9tZT4gY2hyb21lID0gYWRvcHRQdHIobmV3IER1bXBSZW5kZXJUcmVlQ2hy
b21lKGV2YXMpKTsKQEAgLTk0LDExICs5NiwxNSBAQCBFdmFzX09iamVjdCogRHVtcFJlbmRlclRy
ZWVDaHJvbWU6OmNyZWF0ZVZpZXcoKSBjb25zdAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZCh2aWV3LCAid2luZG93LG9iamVjdCxjbGVhcmVkIiwgb25XaW5kb3dPYmplY3RDbGVh
cmVkLCBtX2djQ29udHJvbGxlci5nZXQoKSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKHZpZXcsICJzdGF0dXNiYXIsdGV4dCxzZXQiLCBvblN0YXR1c2JhclRleHRTZXQsIDAp
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxkb2N1bWVu
dCxmaW5pc2hlZCIsIG9uRG9jdW1lbnRMb2FkRmluaXNoZWQsIDApOworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBvbk5ld1Jl
c291cmNlUmVxdWVzdCwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZp
ZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgb25XaWxsU2VuZFJlcXVlc3QsIDApOwog
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAib25sb2FkLGV2ZW50Iiwg
b25XZWJWaWV3T25sb2FkRXZlbnQsIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZCh2aWV3LCAibWl4ZWRjb250ZW50LHJ1biIsIG9uSW5zZWN1cmVDb250ZW50UnVuLCAwKTsK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgIm1peGVkY29udGVudCxk
aXNwbGF5ZWQiLCBvbkluc2VjdXJlQ29udGVudERpc3BsYXllZCwgMCk7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJmcmFtZSxjcmVhdGVkIiwgb25GcmFtZUNyZWF0
ZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVzb3Vy
Y2UscmVzcG9uc2UscmVjZWl2ZWQiLCBvblJlc3BvbnNlUmVjZWl2ZWQsIDApOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIs
IG9uUmVzb3VyY2VMb2FkRmluaXNoZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZCh2aWV3LCAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCBvblJlc291cmNlTG9hZEZhaWxl
ZCwgMCk7CiAKICAgICBFdmFzX09iamVjdCogbWFpbkZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQodmlldyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1haW5GcmFt
ZSwgImxvYWQscHJvdmlzaW9uYWwiLCBvbkZyYW1lUHJvdmlzaW9uYWxMb2FkLCAwKTsKQEAgLTMw
NCwyNSArMzEwLDExMyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkRvY3VtZW50TG9h
ZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZQogICAgIH0KIH0KIAorc3Rh
dGljIENTdHJpbmcgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFyKiB1cmlTdHJp
bmcpCit7CisgICAgaWYgKCF1cmlTdHJpbmcpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisK
KyAgICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcpOworCisgICAg
aWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS51dGY4
KCk7CisKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHVyaS5wYXRoKCk7CisgICAgc2l6ZV90IGlu
ZGV4QmFzZU5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJyk7CisgICAgU3RyaW5nIGJh
c2VOYW1lOworICAgIGlmIChpbmRleEJhc2VOYW1lID09IG5vdEZvdW5kKQorICAgICAgICBiYXNl
TmFtZSA9IHBhdGhTdHJpbmc7CisgICAgZWxzZQorICAgICAgICBiYXNlTmFtZSA9IHBhdGhTdHJp
bmcuc3Vic3RyaW5nKGluZGV4QmFzZU5hbWUgKyAxKTsKKworICAgIFN0cmluZyBkaXJOYW1lOwor
ICAgIGlmIChpbmRleEJhc2VOYW1lICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHNpemVfdCBpbmRl
eERpck5hbWUgPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJywgaW5kZXhCYXNlTmFtZSAtIDEp
OworICAgICAgICBpZiAoaW5kZXhEaXJOYW1lICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgZGly
TmFtZSA9IHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4RGlyTmFtZSArIDEsIGluZGV4QmFzZU5h
bWUgLSBpbmRleERpck5hbWUgLSAxKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcmV0ID0gZGlyTmFt
ZSArICIvIiArIGJhc2VOYW1lOworICAgIHJldHVybiByZXQudXRmOCgpOworfQorCitzdGF0aWMg
Q1N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5nKQor
eworICAgIEtVUkwgdXJpID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7CisgICAg
aWYgKCF1cmkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcodXJpU3RyaW5n
KTsKKworICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSB1cmkucGF0aEFmdGVyTGFzdFNsYXNoKCk7
CisgICAgcmV0dXJuIHVyaS5zdHJpbmcoKS5zdWJzdHJpbmcoc3RhcnRJbmRleCkudXRmOCgpOwor
fQorCitzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChFd2tf
RnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBTdHJpbmcgcmV0ID0gIjxO
U1VSTFJlcXVlc3QgVVJMICI7CisgICAgcmV0ICs9IHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQo
cmVxdWVzdC0+dXJsKS5kYXRhKCk7CisgICAgcmV0ICs9ICIsIG1haW4gZG9jdW1lbnQgVVJMICI7
CisgICAgcmV0ICs9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT5maXJzdF9wYXJ0
eSkuZGF0YSgpOworICAgIHJldCArPSAiLCBodHRwIG1ldGhvZCAiOworICAgIHJldCArPSByZXF1
ZXN0LT5odHRwX21ldGhvZCA/IFN0cmluZyhyZXF1ZXN0LT5odHRwX21ldGhvZCkgOiAiKG5vbmUp
IjsKKyAgICByZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9CisKK3N0YXRp
YyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IEV3a19GcmFt
ZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgaWYgKCFyZXNwb25zZSkKKyAg
ICAgICAgcmV0dXJuIENTdHJpbmcoIihudWxsKSIpOworCisgICAgU3RyaW5nIHJldCA9ICI8TlNV
UkxSZXNwb25zZSAiOworICAgIHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3Bv
bnNlLT51cmwpLmRhdGEoKTsKKyAgICByZXQgKz0gIiwgaHR0cCBzdGF0dXMgY29kZSAiOworICAg
IHJldCArPSBTdHJpbmc6Om51bWJlcihyZXNwb25zZS0+c3RhdHVzX2NvZGUpOworICAgIHJldCAr
PSAiPiI7CisKKyAgICByZXR1cm4gcmV0LnV0ZjgoKTsKK30KKworc3RhdGljIENTdHJpbmcgZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9y
KQoreworICAgIFN0cmluZyByZXQgPSAiPE5TRXJyb3IgZG9tYWluICI7CisgICAgcmV0ICs9IGVy
cm9yLT5kb21haW47CisgICAgcmV0ICs9ICIsIGNvZGUgIjsKKyAgICByZXQgKz0gU3RyaW5nOjpu
dW1iZXIoZXJyb3ItPmNvZGUpOworICAgIGlmIChlcnJvci0+ZmFpbGluZ191cmwgJiYgKmVycm9y
LT5mYWlsaW5nX3VybCAhPSAnXDAnKSB7CisgICAgICAgIHJldCArPSAiLCBmYWlsaW5nIFVSTCBc
IiI7CisgICAgICAgIHJldCArPSBlcnJvci0+ZmFpbGluZ191cmw7CisgICAgICAgIHJldCArPSAi
XCIiOworICAgIH0KKyAgICByZXQgKz0gIj4iOworCisgICAgcmV0dXJuIHJldC51dGY4KCk7Cit9
CisKIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uV2lsbFNlbmRSZXF1ZXN0KHZvaWQqLCBF
dmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKIHsKLSAgICBFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
Kj4oZXZlbnRJbmZvKTsKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqIG1lc3NhZ2Vz
ID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKj4oZXZlbnRJbmZvKTsK
KworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3MoKSkKKyAgICAgICAgICAgIHByaW50ZigiJXMgLSB3aWxsU2VuZFJlcXVlc3Qg
JXMgcmVkaXJlY3RSZXNwb25zZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICBwYXRoU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwpLmRhdGEoKSwKKyAgICAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtZXNzYWdlcy0+cmVx
dWVzdCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KG1lc3NhZ2VzLT5yZWRpcmVjdF9yZXNwb25zZSkuZGF0YSgpKTsKIAogICAgIGlm
ICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdFJldHVybnNO
dWxsKCkpIHsKICAgICAgICAgLy8gQXMgcmVxdWVzdGVkIGJ5IHRoZSBMYXlvdXRUZXN0Q29udHJv
bGxlciwgZG9uJ3QgcGVyZm9ybSB0aGUgcmVxdWVzdC4KLSAgICAgICAgcmVxdWVzdC0+dXJsID0g
MDsKKyAgICAgICAgbWVzc2FnZXMtPnJlcXVlc3QtPnVybCA9IDA7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBLVVJMIHVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXF1ZXN0LT51
cmwpOworICAgIEtVUkwgdXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1lc3NhZ2VzLT5yZXF1
ZXN0LT51cmwpOwogCiAgICAgaWYgKHVybC5pc1ZhbGlkKCkKICAgICAgICAgJiYgdXJsLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKQogICAgICAgICAmJiB1cmwuaG9zdCgpICE9ICIxMjcuMC4wLjEi
CiAgICAgICAgICYmIHVybC5ob3N0KCkgIT0gIjI1NS4yNTUuMjU1LjI1NSIKICAgICAgICAgJiYg
dXJsLmhvc3QoKS5sb3dlcigpICE9ICJsb2NhbGhvc3QiKSB7Ci0gICAgICAgIHByaW50ZigiQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMICVzXG4iLCByZXF1ZXN0LT51cmwpOwotICAgICAg
ICByZXF1ZXN0LT51cmwgPSAwOworICAgICAgICBwcmludGYoIkJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCAlc1xuIiwgbWVzc2FnZXMtPnJlcXVlc3QtPnVybCk7CisgICAgICAgIG1lc3Nh
Z2VzLT5yZXF1ZXN0LT51cmwgPSAwOwogICAgIH0KIH0KIApAQCAtNDE5LDMgKzUxMyw0MiBAQCB2
b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkRpZERldGVjdFhTUyh2b2lkKiwgRXZhc19PYmpl
Y3QqIHZpZXcsIHZvaWQqKQogICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKICAgICAgICAgcHJpbnRmKCJkaWREZXRlY3RYU1Nc
biIpOwogfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc3BvbnNlUmVjZWl2ZWQo
dm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVzcG9uc2UqPihldmVudEluZm8pOworCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0
Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIENTdHJp
bmcgcmVzcG9uc2VEZXNjcmlwdGlvbihkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChy
ZXNwb25zZSkpOworICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVJlc3BvbnNlICVzXG4i
LAorICAgICAgICAgICAgICAgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXNwb25zZS0+dXJs
KS5kYXRhKCksCisgICAgICAgICAgICAgICByZXNwb25zZURlc2NyaXB0aW9uLmRhdGEoKSk7Cisg
ICAgfQorfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvblJlc291cmNlTG9hZEZpbmlz
aGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIgPSAqc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyo+KGV2ZW50SW5m
byk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5pc2hMb2FkaW5n
XG4iLAorICAgICAgICAgICAgICAgKG1fZHVtcEFzc2lnbmVkVXJscy5jb250YWlucyhpZGVudGlm
aWVyKSA/IG1fZHVtcEFzc2lnbmVkVXJscy50YWtlKGlkZW50aWZpZXIpLmRhdGEoKSA6ICI8dW5r
bm93bj4iKSk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2Fk
RmFpbGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tf
RnJhbWVfTG9hZF9FcnJvciogZXJyb3IgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfTG9hZF9FcnJv
cio+KGV2ZW50SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50ZigiJXMgLSBkaWRG
YWlsTG9hZGluZ1dpdGhFcnJvcjogJXNcbiIsCisgICAgICAgICAgICAgICAobV9kdW1wQXNzaWdu
ZWRVcmxzLmNvbnRhaW5zKGVycm9yLT5yZXNvdXJjZV9pZGVudGlmaWVyKSA/IG1fZHVtcEFzc2ln
bmVkVXJscy50YWtlKGVycm9yLT5yZXNvdXJjZV9pZGVudGlmaWVyKS5kYXRhKCkgOiAiPHVua25v
d24+IiksCisgICAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChl
cnJvcikuZGF0YSgpKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25OZXdSZXNv
dXJjZVJlcXVlc3Qodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAg
IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0Zy
YW1lX1Jlc291cmNlX1JlcXVlc3QqPihldmVudEluZm8pOworCisgICAgaWYgKCFkb25lICYmIGdM
YXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKQorICAgICAg
ICBtX2R1bXBBc3NpZ25lZFVybHMuYWRkKHJlcXVlc3QtPmlkZW50aWZpZXIsIHBhdGhTdWl0YWJs
ZUZvclRlc3RSZXN1bHQocmVxdWVzdC0+dXJsKSk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5oCmluZGV4IDE4ZDVjYWIuLjI0NTBlN2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5oCkBA
IC0zMSw5ICszMSwxMSBAQAogCiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIGNsYXNzIER1bXBSZW5kZXJUcmVlQ2hyb21lIHsKIHB1
YmxpYzoKQEAgLTYxLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBFdmFzKiBtX2V2YXM7CiAgICAg
T3duUHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xsZXI7CiAgICAgVmVjdG9yPEV2YXNfT2Jq
ZWN0Kj4gbV9leHRyYVZpZXdzOworICAgIHN0YXRpYyBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIENT
dHJpbmc+IG1fZHVtcEFzc2lnbmVkVXJsczsKIAogICAgIC8vIFNtYXJ0IGNhbGxiYWNrcwogICAg
IHN0YXRpYyB2b2lkIG9uV2luZG93T2JqZWN0Q2xlYXJlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2
b2lkKik7CkBAIC05Niw2ICs5OSwxNCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgb25G
cmFtZUxvYWRFcnJvcih2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiAgICAgc3RhdGljIHZv
aWQgb25EaWREZXRlY3RYU1Modm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3Rh
dGljIHZvaWQgb25SZXNwb25zZVJlY2VpdmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsK
KworICAgIHN0YXRpYyB2b2lkIG9uUmVzb3VyY2VMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGljIHZvaWQgb25SZXNvdXJjZUxvYWRGYWlsZWQodm9p
ZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGljIHZvaWQgb25OZXdSZXNvdXJj
ZVJlcXVlc3Qodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOwogfTsKIAogI2VuZGlmIC8vIER1
bXBSZW5kZXJUcmVlQ2hyb21lX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138951</attachid>
            <date>2012-04-26 01:41:39 -0700</date>
            <delta_ts>2012-04-27 02:46:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>81891_dumpresourceloadcallbacks.patch</filename>
            <type>text/plain</type>
            <size>24332</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YjFkMWE1Li5hOTBkN2UwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW5za2lwIHRlc3RzIHdoaWNoIGRlcGVuZCBvbiBFRkwncyBEdW1wUmVu
ZGVyVHJlZSBzdXBwb3J0IGZvcgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcidzIGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSwgbm93IHRoYXQgaXQgaXMKKyAgICAgICAgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwogMjAxMi0wNC0yNSAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTEzNzAzIGJlY2F1c2Ugb2YgY3Jhc2hpbmcgdGVzdHMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDEwZDNjZTEuLmNhZDYyM2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC02NDMsMTAgKzY0Myw2IEBAIGZhc3QvaGlzdG9yeS9iYWNr
LWZvcndhcmQtcmVzZXQtYWZ0ZXItZXJyb3ItaGFuZGxpbmcuaHRtbAogIyBNaXNzaW5nIGRlbGVn
YXRlczogdGVzdHMgd2hpY2ggbmVlZCBwcm9wZXIgZnJhbWUgbG9hZGVyIGNhbGxiYWNrcyByZXBv
cnRpbmcKIGZhc3QvbG9hZGVyL2ZpbGUtcHJvdG9jb2wtZnJhZ21lbnQuaHRtbAogCi0jIE1pc3Np
bmcgZGVsZWdhdGVzOiB0ZXN0cyBmYWlsaW5nIGJlY2F1c2Ugb2YgbWlzc2luZyByZXNvdXJjZSBs
b2FkIGRlbGVnYXRlIGNhbGxiYWNrcy4KLWZhc3QvbG9hZGVyL21haW4tZG9jdW1lbnQtdXJsLWZv
ci1ub24taHR0cC1sb2Fkcy5odG1sCi1odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZv
cmVsb2FkLmh0bWwKLQogIyBNaXNzaW5nIGRlbGVnYXRlczogdGVzdHMgZmFpbGluZyBiZWNhdXNl
IG9mIG1pc3NpbmcgcG9saWN5IGRlbGVnYXRlIGNhbGxiYWNrcy4KIGZhc3QvbG9hZGVyL29ubG9h
ZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS5odG1sCiBmYXN0L2xvYWRlci9wb2xpY3ktZGVsZWdh
dGUtYWN0aW9uLWhpdC10ZXN0LXpvb21lZC5odG1sCkBAIC02OTksNyArNjk1LDYgQEAgaHR0cC90
ZXN0cy9sb2FkaW5nL3ByZWxvYWQtc2xvdy1sb2FkaW5nLnBocAogCiAjIEJVRzogTWlzc2luZyBy
ZXNvdXJjZSBsb2FkIGNhbGxiYWNrIGFiaWxpdHkgaW4gRFJUCiBodHRwL3Rlc3RzL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy5odG1sCi1odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWltYWdlcy1kaXNhYmxlZC5odG1sCiAKICMgUmVxdWlyZXMgd2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGxPblJlZGlyZWN0ICsgd2lsbFNlbmRSZXF1ZXN0ICsgZGlkRmluaXNoTG9hZGluZwogaHR0
cC90ZXN0cy9taXNjL3dpbGwtc2VuZC1yZXF1ZXN0LXJldHVybnMtbnVsbC1vbi1yZWRpcmVjdC5o
dG1sCkBAIC0xMDA2LDEwICsxMDAxLDE5IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1z
dGFsbC5odG1sCiBodHRwL3Rlc3RzL21pc2MvYWNpZDMuaHRtbAogaHR0cC90ZXN0cy9taXNjL3Bv
bGljeS1kZWxlZ2F0ZS1jYWxsZWQtdHdpY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0
LXRvLWV4dGVybmFsLXVybC5odG1sCi1odHRwL3Rlc3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0
bWwKIGh0dHAvdGVzdHMvbXVsdGlwYXJ0L3BvbGljeS1pZ25vcmUtY3Jhc2gucGhwCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2ZlZWQtdXJscy1mcm9tLXJlbW90ZS5odG1sCiAKKyMgUmVzb3VyY2VFcnJv
ciBkb21haW4gbmVlZHMgdG8gYmUgcHJvcGVybHkgc2V0IGluIEZyYW1lTG9hZGVyQ2xpZW50Cisj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDEyOQoraHR0cC90ZXN0
cy9taXNjL3dpbmRvdy1kb3Qtc3RvcC5odG1sCitodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS5odG1sCitodHRwL3Rl
c3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
cGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbAoraHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVP
cHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLmh0bWwKK2h0dHAvdGVzdHMvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS5odG1sCitodHRwL3Rlc3Rz
L3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLXBhcmVudC1zYW1lLW9yaWdp
bi1kZW55Lmh0bWwKK2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWJvcnQtc2hvdWxkLWNhbmNl
bC1sb2FkLmh0bWwKKwogIyBUZXN0IHRpbWVzIG91dCAodmlhIEdUSyspCiAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA4NQogaHR0cC90ZXN0cy9taXNjL2lmcmFt
ZS1yZXBhcmVudGluZy1pZC1jb2xsaXNpb24uaHRtbApAQCAtMjEzNywxOCArMjE0MSwxMCBAQCBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3JlZmVycmVyLXBvbGljeS1odHRwcy1vcmlnaW4uaHRtbAogaHR0
cC90ZXN0cy9zZWN1cml0eS9yZWZlcnJlci1wb2xpY3ktcmVkaXJlY3QuaHRtbAogaHR0cC90ZXN0
cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1yZWRpcmVjdC54bWwKIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZXh0ZXJuYWwtZW50aXR5LXJlZGlyZWN0LnhtbAot
aHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1l
dGEtdGFnLWluLWJvZHkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gt
ZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1hbGxvdy5odG1s
Ci1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0
eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLmh0bWwKLWh0dHAv
dGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS5odG1sCi1o
dHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLXBhcmVudC1z
YW1lLW9yaWdpbi1hbGxvdy5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMv
eC1mcmFtZS1vcHRpb25zLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwKIGh0dHAvdGVzdHMv
c3NsL3JlZmVyZXItMzAxLmh0bWwKIGh0dHAvdGVzdHMvc3NsL3JlZmVyZXItMzAzLmh0bWwKIGh0
dHAvdGVzdHMvc3NsL3ZlcmlmeS1zc2wtZW5hYmxlZC5waHAKIGh0dHAvdGVzdHMvd29ya2Vycy90
ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwKLWh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWJvcnQtc2hvdWxkLWNhbmNlbC1sb2FkLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtd2hpdGVsaXN0LXJlcXVlc3QtaGVhZGVycy5odG1s
CiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2ljLWF1dGgtbm9wYXNzd29yZC5odG1sCiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2ljLWF1dGgtbm91c2VyLmh0bWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwppbmRleCAxNDliNzk2Li4xM2U4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MzMgQEAKIDIwMTItMDQtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGlu
dGVsLmNvbT4KIAorICAgICAgICBbRUZMXSBEUlQgc2hvdWxkIHN1cHBvcnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIncyBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxODkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3ICJsb2FkLHJlc291cmNlLGZpbmlzaGVk
IiwgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgYW5kCisgICAgICAgICJyZXNvdXJjZSxyZXNwb25z
ZSxyZWNlaXZlZCIgc2lnbmFscyB3ZXJlIGFkZGVkIHRvIG5vdGlmeSBhYm91dCBkaWZmZXJlbnQK
KyAgICAgICAgcmVzb3VyY2UgbG9hZCBldmVudHMuIFRoZXNlIGFkZGl0aW9uYWwgc2lnbmFscyBh
cmUgbmVlZGVkIGZvciBwcm9wZXIKKyAgICAgICAgc3VwcG9ydCBvZiBMYXlvdXRUZXN0Q29udHJv
bGxlcidzIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBpbiBFRkwncworICAgICAgICBEdW1w
UmVuZGVyVHJlZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25J
ZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
Zyk6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfcmVz
cG9uc2VfcmVjZWl2ZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmluaXNoZWQpOgorICAgICAgICAoZXdrX2Zy
YW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2FkX2Vycm9y
KToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAgICogZXdrL2V3a19wcml2YXRl
Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisKKzIwMTItMDQtMjYgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZMXVtEUlRd
ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiBzaWduYWwgbmVlZHMgdG8gcHJvdmlkZSBtb3Jl
IGluZm9ybWF0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NDY3MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggMjAxYjFiNC4uZDVkNjE5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcApAQCAtMjM0LDYgKzIzNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpCiAKICAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1cmwuZGF0
YSgpLCBmaXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCksIGlkZW50aWZpZXIsIG1f
ZnJhbWUsIGlzTWFpbkZyYW1lUmVxdWVzdCB9OwogICAgIGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2ln
bl9pZGVudGlmaWVyKG1fZnJhbWUsICZyZXF1ZXN0KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgJnJlcXVlc3QpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZp
Y2F0aW9uKCkKQEAgLTI2MSwxMyArMjYyLDIwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CiAgICAgLy8gVXBkYXRlIG91ciBrbm93bGVkZ2Ugb2Yg
cmVxdWVzdCBzb3VwIGZsYWdzIC0gc29tZSBhcmUgb25seSBzZXQKICAgICAvLyBhZnRlciB0aGUg
cmVxdWVzdCBpcyBkb25lLgotICAgIGxvYWRlci0+cmVxdWVzdCgpLnNldFNvdXBNZXNzYWdlRmxh
Z3MocmVzcG9uc2Uuc291cE1lc3NhZ2VGbGFncygpKTsKKyAgICBsb2FkZXItPnJlcXVlc3QoKS5z
ZXRTb3VwTWVzc2FnZUZsYWdzKGNvcmVSZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkpOwogCi0g
ICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOworICAgIG1fcmVzcG9uc2UgPSBjb3JlUmVzcG9uc2U7
CisKKyAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UgcmVzcG9uc2UgPSB7IDAsIGNvcmVS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIH07CisgICAgQ1N0cmluZyB1cmwgPSBjb3JlUmVzcG9u
c2UudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJlc3BvbnNlLnVybCA9IHVybC5kYXRhKCk7
CisKKyAgICBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQobV9mcmFtZSwgJnJlc3BvbnNlKTsK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJl
c3BvbnNlLHJlY2VpdmVkIiwgJnJlc3BvbnNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCkBAIC03NDgsMTIgKzc1NiwzMSBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9m
aW5pc2hlZChtX2ZyYW1lLCBpZGVudGlmaWVyKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG1fdmlldywgImxvYWQscmVzb3VyY2UsZmluaXNoZWQiLCAmaWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnIpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBF
d2tfRnJhbWVfTG9hZF9FcnJvciBlcnJvcjsKKyAgICBDU3RyaW5nIGVycm9yRG9tYWluID0gZXJy
LmRvbWFpbigpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGVycm9yRGVzY3JpcHRpb24gPSBlcnIubG9j
YWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCk7CisgICAgQ1N0cmluZyBmYWlsaW5nVXJsID0gZXJy
LmZhaWxpbmdVUkwoKS51dGY4KCk7CisKKyAgICBEQkcoImV3a0ZyYW1lPSVwLCByZXNvdXJjZT0l
bGQsIGVycm9yPSVzICglZCwgY2FuY2VsbGF0aW9uPSVoaHUpIFwiJXNcIiwgdXJsPSVzIiwKKyAg
ICAgICAgbV9mcmFtZSwgaWRlbnRpZmllciwgZXJyb3JEb21haW4uZGF0YSgpLCBlcnIuZXJyb3JD
b2RlKCksIGVyci5pc0NhbmNlbGxhdGlvbigpLAorICAgICAgICBlcnJvckRlc2NyaXB0aW9uLmRh
dGEoKSwgZmFpbGluZ1VybC5kYXRhKCkpOworCisgICAgZXJyb3IuY29kZSA9IGVyci5lcnJvckNv
ZGUoKTsKKyAgICBlcnJvci5pc19jYW5jZWxsYXRpb24gPSBlcnIuaXNDYW5jZWxsYXRpb24oKTsK
KyAgICBlcnJvci5kb21haW4gPSBlcnJvckRvbWFpbi5kYXRhKCk7CisgICAgZXJyb3IuZGVzY3Jp
cHRpb24gPSBlcnJvckRlc2NyaXB0aW9uLmRhdGEoKTsKKyAgICBlcnJvci5mYWlsaW5nX3VybCA9
IGZhaWxpbmdVcmwuZGF0YSgpOworICAgIGVycm9yLnJlc291cmNlX2lkZW50aWZpZXIgPSBpZGVu
dGlmaWVyOworICAgIGVycm9yLmZyYW1lID0gbV9mcmFtZTsKKworICAgIGV3a19mcmFtZV9sb2Fk
X3Jlc291cmNlX2ZhaWxlZChtX2ZyYW1lLCAmZXJyb3IpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCAmZXJyb3IpOwog
fQogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAppbmRleCBmN2MzOTEwLi42MDZmMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcApAQCAtMTIzMCw3ICsxMjMwLDcgQEAgdm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2Fu
Y2VsbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAqIGNoYW5naW5nIHZhbHVlcyBpbiBAcGFy
YW0gcmVxdWVzdC4KICAqCiAgKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCi0gKiBAcGFyYW0gQHBh
cmFtIG1lc3NhZ2VzIE1lc3NhZ2VzIGNvbnRhaW5pbmcgdGhlIHJlcXVlc3QgZGV0YWlscyB0aGF0
IHVzZXIgbWF5IG92ZXJyaWRlIGFuZCBhCisgKiBAcGFyYW0gbWVzc2FnZXMgTWVzc2FnZXMgY29u
dGFpbmluZyB0aGUgcmVxdWVzdCBkZXRhaWxzIHRoYXQgdXNlciBtYXkgb3ZlcnJpZGUgYW5kIGEK
ICAqIHBvc3NpYmxlIHJlZGlyZWN0IHJlcG9uc2UuIFdoZW5ldmVyIHZhbHVlcyBvbiB0aGlzIHN0
cnVjdCBjaGFuZ2VzLCBpdCBtdXN0IGJlIHByb3Blcmx5CiAgKiBtYWxsb2MnZCBhcyBpdCB3aWxs
IGJlIGZyZWVkIGFmdGVyd2FyZHMuCiAgKgpAQCAtMTI1Nyw2ICsxMjU3LDIwIEBAIHZvaWQgZXdr
X2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
b25zdCBFd2tfRnJhbWVfCiAKIC8qKgogICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoYXQgYSBy
ZXNwb25zZSB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVkLgorICoKKyAqIEBwYXJh
bSBld2tGcmFtZSBGcmFtZS4KKyAqIEBwYXJhbSByZXF1ZXN0IFJlc3BvbnNlIGRldGFpbHMuIE5v
IGNoYW5nZXMgYXJlIGFsbG93ZWQgdG8gZmllbGRzLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJl
c291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIgorICovCit2b2lkIGV3a19mcmFtZV9yZXNwb25zZV9y
ZWNlaXZlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25z
ZSogcmVzcG9uc2UpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tG
cmFtZSwgInJlc291cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgcmVzcG9uc2UpOworfQorCisvKioK
KyAqIEBpbnRlcm5hbAogICogUmVwb3J0cyB0aGF0IGZpcnN0IG5hdmlnYXRpb24gb2NjdXJyZWQK
ICAqCiAgKiBAcGFyYW0gZXdrRnJhbWUgRnJhbWUuCkBAIC0xMzkyLDYgKzE0MDYsNyBAQCB2b2lk
IGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hh
ciogZXJyb3JEb21haW4sIGludAogICAgICAgICBidWZmZXIuaXNfY2FuY2VsbGF0aW9uID0gaXND
YW5jZWxsYXRpb247CiAgICAgICAgIGJ1ZmZlci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRp
b247CiAgICAgICAgIGJ1ZmZlci5mYWlsaW5nX3VybCA9IGZhaWxpbmdVcmw7CisgICAgICAgIGJ1
ZmZlci5yZXNvdXJjZV9pZGVudGlmaWVyID0gMDsKICAgICAgICAgYnVmZmVyLmZyYW1lID0gZXdr
RnJhbWU7CiAgICAgICAgIGVycm9yID0gJmJ1ZmZlcjsKICAgICB9CkBAIC0xNDAyLDYgKzE0MTcs
MjkgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUs
IGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQKIAogLyoqCiAgKiBAaW50ZXJuYWwKKyAqIFJl
cG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5pc2hlZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2Fk
LHJlc291cmNlLGZpbmlzaGVkIiB3aXRoIHRoZSByZXNvdXJjZQorICogcmVxdWVzdCBpZGVudGlm
aWVyLgorICovCit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJsb2FkLHJlc291cmNlLGZpbmlzaGVk
IiwgJmlkZW50aWZpZXIpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyByZXNv
dXJjZSBsb2FkIGZhaWx1cmUsIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCisgKgorICogRW1pdHMg
c2lnbmFsOiAibG9hZCxyZXNvdXJjZSxmYWlsZWQiIHdpdGggdGhlIGVycm9yIGluZm9ybWF0aW9u
LgorICovCit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZhaWxlZChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3sKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAibG9hZCxyZXNvdXJjZSxmYWlsZWQiLCBl
cnJvcik7Cit9CisKKy8qKgorICogQGludGVybmFsCiAgKiBSZXBvcnRzIGxvYWQgZmFpbGVkIHdp
dGggZXJyb3IgaW5mb3JtYXRpb24uCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIg
d2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgpAQCAtMTQyMSw2ICsxNDU5LDcg
QEAgdm9pZCBld2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IGNoYXIqIGVycm9yRG9tYWluLCBpbnQgZXIKICAgICBlcnJvci5kb21haW4gPSBlcnJvckRvbWFp
bjsKICAgICBlcnJvci5kZXNjcmlwdGlvbiA9IGVycm9yRGVzY3JpcHRpb247CiAgICAgZXJyb3Iu
ZmFpbGluZ191cmwgPSBmYWlsaW5nVXJsOworICAgIGVycm9yLnJlc291cmNlX2lkZW50aWZpZXIg
PSAwOwogICAgIGVycm9yLmZyYW1lID0gZXdrRnJhbWU7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tGcmFtZSwgImxvYWQsZXJyb3IiLCAmZXJyb3IpOwogICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5oCmluZGV4IGIxNjg3YWIuLjZkYTEzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZyYW1lLmgKQEAgLTQ2LDYgKzQ2LDEwIEBACiAgKiAgLSAibG9hZCxmaW5pc2hlZCIsIGNvbnN0
IEV3a19GcmFtZV9Mb2FkX0Vycm9yKjogcmVwb3J0cyBsb2FkCiAgKiAgICBmaW5pc2hlZCBhbmQg
aXQgZ2l2ZXMgQGMgTlVMTCBvbiBzdWNjZXNzIG9yIHBvaW50ZXIgdG8KICAqICAgIHN0cnVjdHVy
ZSBkZWZpbmluZyB0aGUgZXJyb3IuCisgKiAgLSAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIHVu
c2lnbmVkIGxvbmcqOiByZXBvcnRzIHJlc291cmNlIGxvYWQgZmluaXNoZWQgYW5kIGl0IGdpdmVz
CisgKiAgICBhIHBvaW50ZXIgdG8gaXRzIGlkZW50aWZpZXIuCisgKiAgLSAibG9hZCxyZXNvdXJj
ZSxmYWlsZWQiLCBFd2tfRnJhbWVfTG9hZF9FcnJvcio6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBm
YWlsdXJlIGFuZCBpdAorICogICAgZ2l2ZXMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBkZWZpbmlu
ZyB0aGUgZXJyb3IgYXMgYW4gYXJndW1lbnQuCiAgKiAgLSAibG9hZCxmaXJzdGxheW91dCxmaW5p
c2hlZCIsIHZvaWQ6IGZyYW1lIGZpbmlzaGVkIGZpcnN0IGxheW91dC4KICAqICAtICJsb2FkLG5v
bmVtcHR5bGF5b3V0LGZpbmlzaGVkIiwgdm9pZDogZnJhbWUgZmluaXNoZWQgZmlyc3QKICAqICAg
IG5vbi1lbXB0eSBsYXlvdXQuCkBAIC02MSw2ICs2NSw4IEBACiAgKiAgICB0aGVyZSdzIGEgbmV3
IHJlc291cmNlIHJlcXVlc3QuCiAgKiAgLSAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsIEV3
a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyo6IGEgcmVzb3VyY2Ugd2lsbCBiZSByZXF1ZXN0ZWQu
CiAgKiAgICBhbmQgdGhlIHBvc3NpYmxlIHJlZGlyZWN0IHJlc3BvbnNlLgorICogIC0gInJlc291
cmNlLHJlc3BvbnNlLHJlY2VpdmVkIiwgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKjogcmVw
b3J0cyB0aGF0IGEgcmVzcG9uc2UKKyAqICAgIHRvIGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMgcmVj
ZWl2ZWQuCiAgKiAgLSAic3RhdGUsc2F2ZSIsIHZvaWQ6IGZyYW1lJ3Mgc3RhdGUgd2lsbCBiZSBz
YXZlZCBhcyBhIGhpc3RvcnkgaXRlbS4KICAqICAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hh
cio6IHRpdGxlIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgogICogIC0gInVyaSxjaGFu
Z2VkIiwgY29uc3QgY2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KQEAg
LTk2LDYgKzEwMiw3IEBAIHN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgewogICAgIGNvbnN0
IGNoYXIgKmRvbWFpbjsgLyoqPCBlcnJvciBkb21haW4gbmFtZSAqLwogICAgIGNvbnN0IGNoYXIg
KmRlc2NyaXB0aW9uOyAvKio8IGVycm9yIGRlc2NyaXB0aW9uIGFscmVhZHkgbG9jYWxpemVkICov
CiAgICAgY29uc3QgY2hhciAqZmFpbGluZ191cmw7IC8qKjwgdGhlIHVybCB0aGF0IGZhaWxlZCB0
byBsb2FkICovCisgICAgdW5zaWduZWQgbG9uZyByZXNvdXJjZV9pZGVudGlmaWVyOyAvKio8IGlk
ZW50aWZpZXIgb2YgcmVzb3VyY2UgKi8KICAgICBFdmFzX09iamVjdCAqZnJhbWU7IC8qKjwgZnJh
bWUgd2hlcmUgdGhlIGZhaWx1cmUgaGFwcGVuZWQgKi8KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmgKaW5kZXggNDgwODY4NC4uYjVjNTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmgKQEAgLTIyMCwxMiArMjIwLDE1IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmly
c3RsYXlvdXRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKIHZvaWQgZXdrX2ZyYW1l
X2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNl
bGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGlu
Z1VybCk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKK3ZvaWQgZXdrX2ZyYW1lX2xv
YWRfcmVzb3VyY2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xvYWRf
RXJyb3IqIGVycm9yKTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0Nh
bmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFp
bGluZ1VybCk7CiB2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKTsKIAogdm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2FuY2VsbGVkKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFz
X09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMp
Owogdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKK3Zv
aWQgZXdrX2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdr
X0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSk7CiB2b2lkIGV3a19mcmFtZV92aWV3
X3N0YXRlX3NhdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSog
aXRlbSk7CiAKIHZvaWQgZXdrX2ZyYW1lX2RpZF9wZXJmb3JtX2ZpcnN0X25hdmlnYXRpb24oRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggNDJjNGQy
OC4uODNjNzQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTYwLDYgKzYwLDEwIEBA
CiAgKiAgLSAibG9hZCxwcm9ncmVzcyIsIGRvdWJsZSo6IGxvYWQgcHJvZ3Jlc3MgaXMgY2hhbmdl
ZCAob3ZlcmFsbCB2YWx1ZQogICogICAgZnJvbSAwLjAgdG8gMS4wLCBjb25uZWN0IHRvIGluZGl2
aWR1YWwgZnJhbWVzIGZvciBmaW5lIGdyYWluZWQpLgogICogIC0gImxvYWQscHJvdmlzaW9uYWwi
LCB2b2lkOiB2aWV3IHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZC4KKyAqICAtICJsb2FkLHJlc291
cmNlLGZpbmlzaGVkIiwgdW5zaWduZWQgbG9uZyo6IHJlcG9ydHMgcmVzb3VyY2UgbG9hZCBmaW5p
c2hlZCBhbmQgaXQgZ2l2ZXMKKyAqICAgIGEgcG9pbnRlciB0byBpdHMgaWRlbnRpZmllci4KKyAq
ICAtICJsb2FkLHJlc291cmNlLGZhaWxlZCIsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKjogcmVwb3J0
cyByZXNvdXJjZSBsb2FkIGZhaWx1cmUgYW5kIGl0CisgKiAgICBnaXZlcyBhIHBvaW50ZXIgdG8g
c3RydWN0dXJlIGRlZmluaW5nIHRoZSBlcnJvciBhcyBhbiBhcmd1bWVudC4KICAqICAtICJsb2Fk
LHN0YXJ0ZWQiLCBFdmFzX09iamVjdCo6IGZyYW1lIHN0YXJ0ZWQgbG9hZGluZyB0aGUgZG9jdW1l
bnQuCiAgKiAgLSAibWVudWJhcix2aXNpYmxlLGdldCIsIEVpbmFfQm9vbCAqOiBleHBlY3RzIGEg
QGMgRUlOQV9UUlVFIGlmIG1lbnViYXIgaXMKICAqICAgIHZpc2libGU7IEBjIEVJTkFfRkFMU0Us
IG90aGVyd2lzZS4KQEAgLTY4LDggKzcyLDExIEBACiAgKiAgLSAibWl4ZWRjb250ZW50LHJ1biIs
IHZvaWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1p
eGVkIGNvbnRlbnQuCiAgKiAgLSAib25sb2FkLGV2ZW50IiwgRXZhc19PYmplY3QqOiBhIGZyYW1l
IG9ubG9hZCBldmVudCBoYXMgYmVlbiByZWNlaXZlZC4KICAqICAtICJyZWFkeSIsIHZvaWQ6IHBh
Z2UgaXMgZnVsbHkgbG9hZGVkLgorICogIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgRXdrX0Zy
YW1lX1Jlc291cmNlX1JlcXVlc3QqOiByZXBvcnRzIHRoYXQKKyAqICAgIHRoZXJlJ3MgYSBuZXcg
cmVzb3VyY2UgcmVxdWVzdC4KICAqICAtICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgRXdr
X0ZyYW1lX1Jlc291cmNlX01lc3NhZ2VzKjogYSByZXNvdXJjZSB3aWxsIGJlIHJlcXVlc3RlZC4K
ICAqICAgIGFuZCB0aGUgcG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UuCisgKiAgLSAicmVzb3Vy
Y2UscmVzcG9uc2UscmVjZWl2ZWQiLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqOiB0aGUg
bmV0d29yayByZXNwb25zZSBmb3IgYSByZXNvdXJjZS4KICAqICAtICJzY3JvbGxiYXJzLHZpc2li
bGUsZ2V0IiwgRWluYV9Cb29sICo6IGV4cGVjdHMgYSBAYyBFSU5BX1RSVUUgaWYgc2Nyb2xsYmFy
cwogICogICAgYXJlIHZpc2libGU7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KICAqICAtICJz
Y3JvbGxiYXJzLHZpc2libGUsc2V0IiwgRWluYV9Cb29sOiBzZXRzIHNjcm9sbGJhcnMgdmlzaWJp
bGl0eS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBiMzM0MTEzLi5lN2JlMGMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTItMDQtMjYgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAgICAgICBbRUZMXSBEUlQgc2hv
dWxkIHN1cHBvcnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
ODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IHN1cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyJ3MKKyAgICAgICAgZHVtcFJl
c291cmNlTG9hZENhbGxiYWNrcygpIGluIEVGTCdzIER1bXBSZW5kZXJUcmVlIGJ5IGNhdGNoaW5n
IG5ldworICAgICAgICBld2tfdmlldyBzaWduYWxzIGFib3V0IHJlc291cmNlIGxvYWRpbmcgYW5k
IHByaW50IG91dCB0aGUgZXhwZWN0ZWQKKyAgICAgICAgaW5mb3JtYXRpb24uIFRoaXMgYWxsb3dz
IGZvciBzZXZlcmFsIHRlc3QgY2FzZXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICBz
a2lwIGxpc3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVD
aHJvbWUuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcpOgor
ICAgICAgICAoZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGaW5pc2hlZCk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQpOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVDaHJvbWU6Om9uTmV3UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
Q2hyb21lKToKKworMjAxMi0wNC0yNiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVt
ZXpAaW50ZWwuY29tPgorCiAgICAgICAgIFtFRkxdW0RSVF0gInJlc291cmNlLHJlcXVlc3Qsd2ls
bHNlbmQiIHNpZ25hbCBuZWVkcyB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24KICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NjcwCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmluZGV4IDk2
NDNjYTcuLjAzMjJlZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmNwcApAQCAtNDcsNiArNDcsOCBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBDU3RyaW5nPiBEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6bV9kdW1wQXNzaWduZWRVcmxzOworCiBQYXNzT3duUHRyPER1bXBSZW5kZXJUcmVl
Q2hyb21lPiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlKEV2YXMqIGV2YXMpCiB7CiAgICAg
T3duUHRyPER1bXBSZW5kZXJUcmVlQ2hyb21lPiBjaHJvbWUgPSBhZG9wdFB0cihuZXcgRHVtcFJl
bmRlclRyZWVDaHJvbWUoZXZhcykpOwpAQCAtODksMTIgKzkxLDE2IEBAIEV2YXNfT2JqZWN0KiBE
dW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlVmlldygpIGNvbnN0CiAKICAgICBld2tfdmlld190
aGVtZV9zZXQodmlldywgREFUQV9ESVIiL2RlZmF1bHQuZWRqIik7CiAKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQodmlldywgImxvYWQscmVzb3VyY2UsZmFpbGVkIiwgb25SZXNv
dXJjZUxvYWRGYWlsZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2
aWV3LCAibG9hZCxyZXNvdXJjZSxmaW5pc2hlZCIsIG9uUmVzb3VyY2VMb2FkRmluaXNoZWQsIDAp
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxzdGFydGVk
Iiwgb25Mb2FkU3RhcnRlZCwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25UaXRsZUNoYW5nZWQsIDApOwogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAid2luZG93LG9iamVjdCxjbGVhcmVkIiwgb25X
aW5kb3dPYmplY3RDbGVhcmVkLCBtX2djQ29udHJvbGxlci5nZXQoKSk7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJzdGF0dXNiYXIsdGV4dCxzZXQiLCBvblN0YXR1
c2JhclRleHRTZXQsIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3
LCAibG9hZCxkb2N1bWVudCxmaW5pc2hlZCIsIG9uRG9jdW1lbnRMb2FkRmluaXNoZWQsIDApOwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAicmVzb3VyY2UscmVxdWVz
dCxuZXciLCBvbk5ld1Jlc291cmNlUmVxdWVzdCwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKHZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgb25XaWxsU2Vu
ZFJlcXVlc3QsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAi
cmVzb3VyY2UscmVzcG9uc2UscmVjZWl2ZWQiLCBvblJlc3BvbnNlUmVjZWl2ZWQsIDApOwogICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAib25sb2FkLGV2ZW50Iiwgb25X
ZWJWaWV3T25sb2FkRXZlbnQsIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCh2aWV3LCAibWl4ZWRjb250ZW50LHJ1biIsIG9uSW5zZWN1cmVDb250ZW50UnVuLCAwKTsKICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgIm1peGVkY29udGVudCxkaXNw
bGF5ZWQiLCBvbkluc2VjdXJlQ29udGVudERpc3BsYXllZCwgMCk7CkBAIC0zMDcsNiArMzEzLDIy
IEBAIHN0YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0
IEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zCiAgICAgcmV0dXJuIHJldC51dGY4KCk7CiB9CiAK
K3N0YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KEV3a19GcmFt
ZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3sKKyAgICBTdHJpbmcgcmV0ID0gIjxOU0Vycm9yIGRvbWFp
biAiOworICAgIHJldCArPSBlcnJvci0+ZG9tYWluOworICAgIHJldCArPSAiLCBjb2RlICI7Cisg
ICAgcmV0ICs9IFN0cmluZzo6bnVtYmVyKGVycm9yLT5jb2RlKTsKKyAgICBpZiAoZXJyb3ItPmZh
aWxpbmdfdXJsICYmICplcnJvci0+ZmFpbGluZ191cmwgIT0gJ1wwJykgeworICAgICAgICByZXQg
Kz0gIiwgZmFpbGluZyBVUkwgXCIiOworICAgICAgICByZXQgKz0gZXJyb3ItPmZhaWxpbmdfdXJs
OworICAgICAgICByZXQgKz0gIlwiIjsKKyAgICB9CisgICAgcmV0ICs9ICI+IjsKKworICAgIHJl
dHVybiByZXQudXRmOCgpOworfQorCiAvLyBTbWFydCBDYWxsYmFja3MKIC8vIC0tLS0tLS0tLS0t
LS0tLQogCkBAIC01MTksMyArNTQxLDQyIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9u
RGlkRGV0ZWN0WFNTKHZvaWQqLCBFdmFzX09iamVjdCogdmlldywgdm9pZCopCiAgICAgaWYgKCFk
b25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQog
ICAgICAgICBwcmludGYoImRpZERldGVjdFhTU1xuIik7CiB9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBl
dmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSA9
IHN0YXRpY19jYXN0PEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSo+KGV2ZW50SW5mbyk7CisK
KyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKCkpIHsKKyAgICAgICAgQ1N0cmluZyByZXNwb25zZURlc2NyaXB0aW9uKGRlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKSk7CisgICAgICAgIHByaW50Zigi
JXMgLSBkaWRSZWNlaXZlUmVzcG9uc2UgJXNcbiIsCisgICAgICAgICAgICAgICBwYXRoU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKSwKKyAgICAgICAgICAgICAgIHJl
c3BvbnNlRGVzY3JpcHRpb24uZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWVDaHJvbWU6Om9uUmVzb3VyY2VMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCogZXZlbnRJbmZvKQoreworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9ICpzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nKj4oZXZlbnRJbmZvKTsKKworICAgIGlmICghZG9uZSAmJiBnTGF5
b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAg
cHJpbnRmKCIlcyAtIGRpZEZpbmlzaExvYWRpbmdcbiIsCisgICAgICAgICAgICAgICAobV9kdW1w
QXNzaWduZWRVcmxzLmNvbnRhaW5zKGlkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRVcmxzLnRh
a2UoaWRlbnRpZmllcikuZGF0YSgpIDogIjx1bmtub3duPiIpKTsKK30KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6b25SZXNvdXJjZUxvYWRGYWlsZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwg
dm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvciA9IHN0
YXRpY19jYXN0PEV3a19GcmFtZV9Mb2FkX0Vycm9yKj4oZXZlbnRJbmZvKTsKKworICAgIGlmICgh
ZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiAlc1xuIiwK
KyAgICAgICAgICAgICAgIChtX2R1bXBBc3NpZ25lZFVybHMuY29udGFpbnMoZXJyb3ItPnJlc291
cmNlX2lkZW50aWZpZXIpID8gbV9kdW1wQXNzaWduZWRVcmxzLnRha2UoZXJyb3ItPnJlc291cmNl
X2lkZW50aWZpZXIpLmRhdGEoKSA6ICI8dW5rbm93bj4iKSwKKyAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGVycm9yKS5kYXRhKCkpOworfQorCit2b2lkIER1
bXBSZW5kZXJUcmVlQ2hyb21lOjpvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZhc19PYmpl
Y3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qq
IHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCo+KGV2ZW50
SW5mbyk7CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIG1fZHVtcEFzc2lnbmVkVXJscy5hZGQocmVx
dWVzdC0+aWRlbnRpZmllciwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT51cmwp
KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJl
ZUNocm9tZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21l
LmgKaW5kZXggMThkNWNhYi4uMjQ1MGU3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTMxLDkgKzMxLDExIEBACiAKICNpbmNsdWRl
IDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogY2xh
c3MgRHVtcFJlbmRlclRyZWVDaHJvbWUgewogcHVibGljOgpAQCAtNjEsNiArNjMsNyBAQCBwcml2
YXRlOgogICAgIEV2YXMqIG1fZXZhczsKICAgICBPd25QdHI8R0NDb250cm9sbGVyPiBtX2djQ29u
dHJvbGxlcjsKICAgICBWZWN0b3I8RXZhc19PYmplY3QqPiBtX2V4dHJhVmlld3M7CisgICAgc3Rh
dGljIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgQ1N0cmluZz4gbV9kdW1wQXNzaWduZWRVcmxzOwog
CiAgICAgLy8gU21hcnQgY2FsbGJhY2tzCiAgICAgc3RhdGljIHZvaWQgb25XaW5kb3dPYmplY3RD
bGVhcmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKQEAgLTk2LDYgKzk5LDE0IEBAIHBy
aXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBvbkZyYW1lTG9hZEVycm9yKHZvaWQqLCBFdmFzX09i
amVjdCosIHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBvbkRpZERldGVjdFhTUyh2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvblJlc3BvbnNlUmVjZWl2ZWQo
dm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGljIHZvaWQgb25SZXNvdXJj
ZUxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMg
dm9pZCBvblJlc291cmNlTG9hZEZhaWxlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisK
KyAgICBzdGF0aWMgdm9pZCBvbk5ld1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKik7CiB9OwogCiAjZW5kaWYgLy8gRHVtcFJlbmRlclRyZWVDaHJvbWVfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>