<?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>206861</bug_id>
          
          <creation_ts>2020-01-27 21:15:59 -0800</creation_ts>
          <short_desc>[LFC][IFC] Decouple Display::LineBox and Layout::LineBoxBuilder</short_desc>
          <delta_ts>2020-01-28 10:26:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1611798</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-27 21:15:59 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611799</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-27 21:16:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/58945284&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611800</commentid>
    <comment_count>2</comment_count>
      <attachid>388964</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-27 21:18:55 -0800</bug_when>
    <thetext>Created attachment 388964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611912</commentid>
    <comment_count>3</comment_count>
      <attachid>388991</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-28 07:30:04 -0800</bug_when>
    <thetext>Created attachment 388991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611928</commentid>
    <comment_count>4</comment_count>
      <attachid>388991</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-28 08:18:28 -0800</bug_when>
    <thetext>Comment on attachment 388991
Patch

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

&gt; Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp:544
&gt; +    inlineContent.lineBoxes.append(Display::LineBox { lineBox.logicalRect(), lineBox.scrollableOverflow(), lineInkOverflow, { baseline.ascent(), baseline.descent() }, lineBox.baselineOffset(), lineBox.isConsideredEmpty() });

Could have some sort of helper for the conversion.

Type name Display::LineBox is probably not needed.

&gt; Source/WebCore/layout/inlineformatting/InlineLineBox.h:36
&gt; +namespace Layout {
&gt; +
&gt; +class LineBox {

Could this be like LineBoxBuilder or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611944</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-28 08:43:56 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 388991 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388991&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp:544
&gt; &gt; +    inlineContent.lineBoxes.append(Display::LineBox { lineBox.logicalRect(), lineBox.scrollableOverflow(), lineInkOverflow, { baseline.ascent(), baseline.descent() }, lineBox.baselineOffset(), lineBox.isConsideredEmpty() });
&gt; 
&gt; Could have some sort of helper for the conversion.
This will eventually turn into a logical -&gt; physical conversion (horizontal flip/vertical transform). I am not yet sure the exact setup for this so I prefer to not do it in this patch.  

&gt; 
&gt; Type name Display::LineBox is probably not needed.
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLineBox.h:36
&gt; &gt; +namespace Layout {
&gt; &gt; +
&gt; &gt; +class LineBox {
&gt; 
&gt; Could this be like LineBoxBuilder or something?
Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611953</commentid>
    <comment_count>6</comment_count>
      <attachid>389007</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-28 08:51:04 -0800</bug_when>
    <thetext>Created attachment 389007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611955</commentid>
    <comment_count>7</comment_count>
      <attachid>389009</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-28 08:51:57 -0800</bug_when>
    <thetext>Created attachment 389009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612037</commentid>
    <comment_count>8</comment_count>
      <attachid>389009</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-28 10:26:07 -0800</bug_when>
    <thetext>Comment on attachment 389009
Patch

Clearing flags on attachment: 389009

Committed r255257: &lt;https://trac.webkit.org/changeset/255257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612038</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-28 10:26:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388964</attachid>
            <date>2020-01-27 21:18:55 -0800</date>
            <delta_ts>2020-01-28 07:30:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206861-20200127211854.patch</filename>
            <type>text/plain</type>
            <size>48882</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2ZmE4MGRmNjU1ZTkx
NDFlNzk4OTBhMWNlYjM1MTY3NTQxMjk3OC4uZmViYWMzNGVjMjRiYjJmNjliNzNhNjE1YWMyNTM2
YzExZjFiYWU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0wMS0yNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gRGVjb3Vw
bGUgRGlzcGxheTo6TGluZUJveCBhbmQgTGF5b3V0OjpMaW5lQm94CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU4OTQ1Mjg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlIHNob3VsZCBub3QgbWl4IGxvZ2ljYWwgYW5kIHBoeXNpY2FsIGNvb3JkaW5h
dGVzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0
Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlMaW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpC
YXNlbGluZTo6YXNjZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVC
b3g6OkJhc2VsaW5lOjpkZXNjZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxpbmVCb3g6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJv
eDo6bGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpyaWdo
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojp0b3AgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6Ym90dG9tIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OndpZHRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpMaW5lQm94OjpiYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94OjpiYXNlbGluZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpMaW5lQm94Ojppc0NvbnNpZGVyZWRFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsVG9wTGVmdCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsTGVmdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2Fs
UmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJv
eDo6bG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpMaW5lQm94Ojpsb2dpY2FsQm90dG9tIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkxpbmVCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsSGVpZ2h0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlc2V0RGVzY2VudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRMb2dpY2Fs
VG9wTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpz
ZXRMb2dpY2FsSGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OnNldExvZ2ljYWxXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpMaW5lQm94OjpzZXRTY3JvbGxhYmxlT3ZlcmZsb3cpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0SW5rT3ZlcmZsb3cpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bW92ZUhvcml6b250YWxseSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpleHBhbmRIb3Jpem9udGFs
bHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2hyaW5r
SG9yaXpvbnRhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVC
b3g6OmV4cGFuZFZlcnRpY2FsbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6TGluZUJveDo6c2hyaW5rVmVydGljYWxseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWRFbXB0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWROb25FbXB0eSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRMb2dpY2Fs
SGVpZ2h0SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlc2V0QmFzZWxp
bmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6QmFzZWxp
bmU6OnNldEFzY2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5l
Qm94OjpCYXNlbGluZTo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpwYWludElubGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OlF1aXJrczo6bGluZUhlaWdodENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzY3JvbGxhYmxlT3ZlcmZsb3cgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxUb3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsQm90dG9tIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFdpZHRoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbEhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnJlc2V0RGVzY2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRTY3JvbGxhYmxlT3ZlcmZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojptb3ZlSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6ZXhwYW5kSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6c2hyaW5rSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6ZXhwYW5kVmVydGljYWxseSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua1ZlcnRpY2FsbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94Ojppc0NvbnNpZGVyZWRFbXB0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29uc2lkZXJlZEVtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0SXNDb25zaWRlcmVkTm9uRW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpMaW5lQm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YmFzZWxpbmVPZmZzZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpyZXNldEJhc2VsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OkJhc2VsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OmFzY2VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpkZXNjZW50IGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyk6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbnRlbnRMb2dpY2FsUmlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGluZUJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb250ZW50TG9naWNh
bFdpZHRoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5
b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250
ZXh0OjpsYXlvdXRMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5l
TGF5b3V0Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpmaXJzdExpbmVCYXNlbGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGFzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0SW5s
aW5lUnVucyk6CisKIDIwMjAtMDEtMjcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEFkZCBzdXBwb3J0IGZvciB0aGUgb3B0aW9u
cyBwYXJhbWV0ZXIgdG8gZ2V0QW5pbWF0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzExZTc2MmZmOGRkYTYxYTQwZTlm
YWRmMGJkZmM4YjFmMjNhMmUyZi4uY2RhZmViNWVmODljMDEwOGIzZGU1ZDQ1NDU0YjJhNGQ5NjJh
NTA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjA3Miw2ICsyMDcyLDcgQEAKIAkJNkY5OTVBM0ExQTcwODMzNzAwQTczNUY0
IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9OwogCQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyog
SlNCZWZvcmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZl
bnQuaCAqLzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgz
RkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGlu
ZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZC
MjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JD
QjAgLyogRGlzcGxheUxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjVF
MjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5
ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlz
cGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQwOCw2ICs5NDA5LDcgQEAKIAkJ
NkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHRVdGlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZGQjExQjVCMjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0VXRpbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGQjIyRTMwMjMwMDk3RTMwMEMyMDg2NiAvKiBUYWJsZUdyaWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGFibGVHcmlkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQjI0
MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElubGluZUxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkZCNDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5lQm94Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4
MzksNiArMTY4NDEsNyBAQAogCQkJCTExNUNGQTdDMjA4QjhFMTAwMDFFNjk5MSAvKiBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaCAqLywKIAkJCQk2RjdCOENFQzIzNjI2RTY2MDBDOUZGMTUgLyogSW5s
aW5lSXRlbS5jcHAgKi8sCiAJCQkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0
ZW0uaCAqLywKKwkJCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5o
ICovLAogCQkJCTZGRTE5ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5j
cHAgKi8sCiAJCQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2Vy
LmggKi8sCiAJCQkJNkYwQ0Q2OTIyMjlFRDMxOTAwQzU5OTRFIC8qIElubGluZUxpbmVCdWlsZGVy
LmNwcCAqLywKQEAgLTMwNDUxLDYgKzMwNDU0LDcgQEAKIAkJCQkxMTVDRkE3RTIwOEI4RTEwMDAx
RTY5OTEgLyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU3
Q0ZBMjIxNzdFRUYyMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFNzg5MTYxMTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVh
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5s
aW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYwRTUwMjM5OTk0MjEwMDE1
MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5k
ZXggZjZhNTk3YmViMDMwNDNjMTZlZTc0YzQyYzI1MzhjNzU2YzRjNTM2Zi4uZDBmMjNmMzQ0ZTZm
ODU2MTcwYWM0NDZjZDEzYjI0N2RkYTkxOWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTM2LDggKzEzNiw4IEBA
IExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9y
Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvCiAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGxheW91
dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290Q29u
dGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAgIC8vIEV2
ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAgIEFTU0VSVCgh
bGluZUJveGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLmxv
Z2ljYWxUb3AoKTsKLSAgICAgICAgYm90dG9tID0gbGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90
dG9tKCk7CisgICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLnRvcCgpOworICAgICAgICBi
b3R0b20gPSBsaW5lQm94ZXMubGFzdCgpLmJvdHRvbSgpOwogICAgIH0gZWxzZSBpZiAoZm9ybWF0
dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwg
Zm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0
KCkgfHwgZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuaXNEb2N1bWVudEJveCgpKSB7CiAgICAgICAg
IGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5oYXNJbkZsb3dDaGlsZCgpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBmaXJzdEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlG
b3JCb3goKmZvcm1hdHRpbmdSb290Q29udGFpbmVyLmZpcnN0SW5GbG93Q2hpbGQoKSwgRXNjYXBl
UmVhc29uOjpOZWVkc0dlb21ldHJ5RnJvbUVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBjYWQ4
YjE4MDcxMTU1NzBjNWFhYmE3NzVkNjFmYTMwZTdhMjM5YjYuLjQ1YmY1Y2NmMjIxYmM0MTgwZTU3
MDlkMTYxOTJiNDY0OGU0MWZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQK
ICAgICAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVu
dCgpLT5saW5lQm94ZXM7CiAgICAgICAgICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2Vu
ZXJhdGUgb25lIGxpbmUuIAogICAgICAgICAgICAgQVNTRVJUKCFsaW5lQm94ZXMuaXNFbXB0eSgp
KTsKLSAgICAgICAgICAgIHJldHVybiB7IHRvTGF5b3V0VW5pdChsaW5lQm94ZXMubGFzdCgpLmxv
Z2ljYWxCb3R0b20oKSkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4g
fTsKKyAgICAgICAgICAgIHJldHVybiB7IHRvTGF5b3V0VW5pdChsaW5lQm94ZXMubGFzdCgpLmJv
dHRvbSgpKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0b20gKHBv
c3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQsIGlmIHRo
ZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKaW5kZXggMDRmNjQ3NDk5OTVlNDliOTdmNWNk
NDAwMGY0MTZhMDU2MDk3M2RjOC4uOGZmZTA2NzM2YjkzNjVjOTUyNmE2MzUzMmI0MWU5ZjU5MzMy
MGFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlMaW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlMaW5lQm94LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlJbmxpbmVSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDQ2ICszNywzNCBA
QCBjbGFzcyBMaW5lQm94IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQmFzZWxpbmUgewogICAgICAg
ICBCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNj
ZW50KTsKLSAgICAgICAgQmFzZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgdm9pZCBzZXRB
c2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVM
YXlvdXRVbml0KTsKLQotICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2NlbnQoKSArIGRlc2NlbnQoKTsgfQot
ICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0OwotICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGRlc2NlbnQoKSBjb25zdDsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2Nl
bnQoKSBjb25zdCB7IHJldHVybiBtX2FzY2VudDsgfQorICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IGRlc2NlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgYm9vbCBtX2hhc1ZhbGlkQXNjZW50IHsgZmFsc2Ug
fTsKLSAgICAgICAgYm9vbCBtX2hhc1ZhbGlkRGVzY2VudCB7IGZhbHNlIH07Ci0jZW5kaWYKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudDsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBtX2Rlc2NlbnQ7CisgICAgICAgIElubGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07Cisg
ICAgICAgIElubGluZUxheW91dFVuaXQgbV9kZXNjZW50IHsgMCB9OwogICAgIH07CiAKLSAgICBM
aW5lQm94KGNvbnN0IElubGluZVJlY3QmLCBjb25zdCBCYXNlbGluZSYsIElubGluZUxheW91dFVu
aXQgYmFzZWxpbmVPZmZzZXQpOwotICAgIExpbmVCb3goKSA9IGRlZmF1bHQ7CisgICAgTGluZUJv
eChjb25zdCBJbmxpbmVSZWN0JiwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93
LCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0LCBib29sIGlzQ29uc2lkZXJlZEVtcHR5KTsKIAotICAg
IGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9
CisgICAgY29uc3QgSW5saW5lUmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQog
ICAgIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9CiAgICAgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9CiAKLSAgICBJbmxpbmVMYXlvdXRQ
b2ludCBsb2dpY2FsVG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50b3BMZWZ0KCk7IH0K
LSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LmxlZnQoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LnJpZ2h0KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3Ao
KSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7IH0KKyAgICBJbmxp
bmVMYXlvdXRVbml0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubGVmdCgpOyB9CisgICAg
SW5saW5lTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9
CisgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7
IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5i
b3R0b20oKTsgfQogCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorICAgIElubGluZUxheW91
dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQorICAgIElubGlu
ZUxheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CiAK
LSAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKLSAgICAvLyBCYXNlbGluZSBv
ZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5l
Y2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUo
KSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CisgICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZy
b20gbGluZSB0b3AuIE5vdGUgdGhhdCBvZmZzZXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwg
dG8gYXNjZW50LgogICAgIC8vCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxv
Z2ljYWwgdG9wICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICh0b3AgYWxpZ24pCisgICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLSAgICAgICAgbGluZSB0b3AgICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0tICh0b3AgYWxpZ24pCiAgICAgLy8gICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAgICAgLy8gICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICB8CiAgICAgLy8gICBeICAgICAg
ICAgfCBiYXNlbGluZSBvZmZzZXQgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IGJhc2Vs
aW5lIG9mZnNldApAQCAtODksMTYzICs3NiwzMyBAQCBwdWJsaWM6CiAgICAgLy8gICBeICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NlbnQKICAgICAvLyAg
IHwgZGVzY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKICAgICAvLyAg
IHYKLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCBib3R0b20gIC0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRV
bml0KTsKLSAgICB2b2lkIHNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAg
ICB2b2lkIHNldERlc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0KLSAgICB2b2lk
IHJlc2V0QmFzZWxpbmUoKTsKLSAgICB2b2lkIHJlc2V0RGVzY2VudCgpIHsgbV9iYXNlbGluZS5z
ZXREZXNjZW50KDBfbHUpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxUb3BMZWZ0KGNvbnN0IElu
bGluZUxheW91dFBvaW50JiBsb2dpY2FsVG9wTGVmdCkgeyBtX3JlY3Quc2V0VG9wTGVmdChsb2dp
Y2FsVG9wTGVmdCk7IH0KLSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0KSB7IG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KLQot
ICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAg
ICB2b2lkIHNldExvZ2ljYWxXaWR0aChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkgeyBt
X3JlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsgfQotCi0gICAgdm9pZCBzZXRTY3JvbGxhYmxl
T3ZlcmZsb3coY29uc3QgSW5saW5lUmVjdCYgcmVjdCkgeyBtX3Njcm9sbGFibGVPdmVyZmxvdyA9
IHJlY3Q7IH0KLSAgICB2b2lkIHNldElua092ZXJmbG93KGNvbnN0IElubGluZVJlY3QmIHJlY3Qp
IHsgbV9pbmtPdmVyZmxvdyA9IHJlY3Q7IH0KLQotICAgIHZvaWQgbW92ZUhvcml6b250YWxseShJ
bmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5tb3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsg
fQotCi0gICAgdm9pZCBleHBhbmRIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkg
eyBtX3JlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5rSG9y
aXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kSG9yaXpvbnRhbGx5KC1k
ZWx0YSk7IH0KLQotICAgIHZvaWQgZXhwYW5kVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IGRl
bHRhKSB7IG1fcmVjdC5leHBhbmRWZXJ0aWNhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5r
VmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZFZlcnRpY2FsbHkoLWRl
bHRhKTsgfQotCi0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRt
bCNpbmxpbmUtZm9ybWF0dGluZwotICAgIC8vIExpbmUgYm94ZXMgdGhhdCBjb250YWluIG5vIHRl
eHQsIG5vIHByZXNlcnZlZCB3aGl0ZSBzcGFjZSwgbm8gaW5saW5lIGVsZW1lbnRzIHdpdGggbm9u
LXplcm8gbWFyZ2lucywgcGFkZGluZywgb3IgYm9yZGVycywKLSAgICAvLyBhbmQgbm8gb3RoZXIg
aW4tZmxvdyBjb250ZW50IChzdWNoIGFzIGltYWdlcywgaW5saW5lIGJsb2NrcyBvciBpbmxpbmUg
dGFibGVzKSwgYW5kIGRvIG5vdCBlbmQgd2l0aCBhIHByZXNlcnZlZCBuZXdsaW5lCi0gICAgLy8g
bXVzdCBiZSB0cmVhdGVkIGFzIHplcm8taGVpZ2h0IGxpbmUgYm94ZXMgZm9yIHRoZSBwdXJwb3Nl
cyBvZiBkZXRlcm1pbmluZyB0aGUgcG9zaXRpb25zIG9mIGFueSBlbGVtZW50cyBpbnNpZGUgb2Yg
dGhlbSwKLSAgICAvLyBhbmQgbXVzdCBiZSB0cmVhdGVkIGFzIG5vdCBleGlzdGluZyBmb3IgYW55
IG90aGVyIHB1cnBvc2UuCi0gICAgLy8gTm90ZSB0aGF0IGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5
IG1lYW4gdmlzdWFsbHkgbm9uLWVtcHR5IGxpbmUuIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDBw
eCI+dGhpcyBpcyBzdGlsbCBjb25zaWRlcmVkIG5vbi1lbXB0eTwvc3Bhbj4KKyAgICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tICAgICAgIGxpbmUgYm90dG9tICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlbGluZU9mZnNldDsgfQogICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29uc2lkZXJlZEVtcHR5OyB9Ci0gICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRF
bXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzQ29u
c2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KIAogcHJp
dmF0ZToKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07Ci0j
ZW5kaWYKICAgICBJbmxpbmVSZWN0IG1fcmVjdDsKICAgICBJbmxpbmVSZWN0IG1fc2Nyb2xsYWJs
ZU92ZXJmbG93OwogICAgIElubGluZVJlY3QgbV9pbmtPdmVyZmxvdzsKICAgICBCYXNlbGluZSBt
X2Jhc2VsaW5lOwotICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZU9mZnNldDsKKyAgICBJ
bmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmVPZmZzZXQgeyAwIH07CiAgICAgYm9vbCBtX2lzQ29u
c2lkZXJlZEVtcHR5IHsgdHJ1ZSB9OwogfTsKIAotaW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29u
c3QgSW5saW5lUmVjdCYgcmVjdCwgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmVMYXlv
dXRVbml0IGJhc2VsaW5lT2Zmc2V0KQoraW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5s
aW5lUmVjdCYgcmVjdCwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25z
dCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxp
bmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0LCBib29sIGlzQ29uc2lkZXJlZEVtcHR5KQogICAg
IDogbV9yZWN0KHJlY3QpCisgICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhzY3JvbGxhYmxlT3Zl
cmZsb3cpCisgICAgLCBtX2lua092ZXJmbG93KGlua092ZXJmbG93KQogICAgICwgbV9iYXNlbGlu
ZShiYXNlbGluZSkKICAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCisgICAg
LCBtX2lzQ29uc2lkZXJlZEVtcHR5KGlzQ29uc2lkZXJlZEVtcHR5KQogewotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkQmFz
ZWxpbmVPZmZzZXQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIExpbmVCb3g6OnNl
dExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQot
ewotICAgIGlmIChsb2dpY2FsSGVpZ2h0IDw9IG1fcmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7Ci19Ci0KLWlubGluZSBj
b25zdCBMaW5lQm94OjpCYXNlbGluZSYgTGluZUJveDo6YmFzZWxpbmUoKSBjb25zdAotewotICAg
IEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmUpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lOwotfQot
Ci1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9o
YXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYmFzZWxpbmVPZmZz
ZXQgPSBzdGQ6Om1heChiYXNlbGluZU9mZnNldCwgbV9iYXNlbGluZU9mZnNldCk7Ci19Ci0KLWlu
bGluZSB2b2lkIExpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGFz
Y2VudCkKLXsKLSAgICBpZiAoYXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7Ci0gICAgbV9i
YXNlbGluZS5zZXRBc2NlbnQoYXNjZW50KTsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6c2V0
RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0gICAgaWYgKGRl
c2NlbnQgPCBtX2Jhc2VsaW5lLmRlc2NlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYmFz
ZWxpbmUuc2V0RGVzY2VudChkZXNjZW50KTsKLX0KLQotaW5saW5lIElubGluZUxheW91dFVuaXQg
TGluZUJveDo6YmFzZWxpbmVPZmZzZXQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlk
QmFzZWxpbmVPZmZzZXQpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lT2Zmc2V0OwotfQotCi1pbmxp
bmUgdm9pZCBMaW5lQm94OjpyZXNldEJhc2VsaW5lKCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jhc2Vs
aW5lT2Zmc2V0ID0gMF9sdTsKLSAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7CiB9CiAKIGlubGluZSBM
aW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQsIElubGlu
ZUxheW91dFVuaXQgZGVzY2VudCkKICAgICA6IG1fYXNjZW50KGFzY2VudCkKICAgICAsIG1fZGVz
Y2VudChkZXNjZW50KQogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2Vu
dCA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLWlu
bGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXRBc2NlbnQoSW5saW5lTGF5b3V0VW5pdCBh
c2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1
ZTsKLSNlbmRpZgotICAgIG1fYXNjZW50ID0gYXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5l
Qm94OjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYK
LSAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNl
bGluZTo6cmVzZXQoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2Vu
dCA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9h
c2NlbnQgPSAwX2x1OwotICAgIG1fZGVzY2VudCA9IDBfbHU7Ci19Ci0KLWlubGluZSBJbmxpbmVM
YXlvdXRVbml0IExpbmVCb3g6OkJhc2VsaW5lOjphc2NlbnQoKSBjb25zdAotewotICAgIEFTU0VS
VChtX2hhc1ZhbGlkQXNjZW50KTsKLSAgICByZXR1cm4gbV9hc2NlbnQ7Ci19Ci0KLWlubGluZSBJ
bmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OkJhc2VsaW5lOjpkZXNjZW50KCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQobV9oYXNWYWxpZERlc2NlbnQpOwotICAgIHJldHVybiBtX2Rlc2NlbnQ7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBh
aW50ZXIuY3BwCmluZGV4IDQyYzIxMjA1MThjYWQ2NmUxZmVkMWZkOTZkNmI3YWNlMTIyMjM1MGUu
LjU2Y2Q1OWE1NDNiYTc5ODAxZjA2YTZjMmM1MTU2ZWRlYjBkYzg3NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAt
MTI5LDkgKzEyOSw5IEBAIHN0YXRpYyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIExheW91dFBvaW50IGFic29sdXRlT2ZmCiAgICAgICAgICAgICBhdXRv
IGFic29sdXRlTGVmdCA9IGFic29sdXRlT2Zmc2V0LngoKSArIHJ1bi5sZWZ0KCk7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWludGluZwogICAgICAgICAg
ICAgYXV0byYgbGluZUJveCA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5saW5lQm94Rm9yUnVuKHJ1
bik7Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gYWJzb2x1dGVPZmZzZXQueSgp
ICsgbGluZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisgICAg
ICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gYWJzb2x1dGVPZmZzZXQueSgpICsgbGluZUJv
eC50b3AoKSArIGxpbmVCb3guYmFzZWxpbmVPZmZzZXQoKTsKICAgICAgICAgICAgIGF1dG8gZXhw
YW5zaW9uQ29udGV4dCA9IHRleHRDb250ZXh0LT5leHBhbnNpb24oKTsKLSAgICAgICAgICAgIGF1
dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0Q29udGV4dC0+Y29udGVudCgpLCBydW4ubGVmdCgp
IC0gbGluZUJveC5sb2dpY2FsTGVmdCgpLAorICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4
dFJ1biB7IHRleHRDb250ZXh0LT5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94LmxlZnQo
KSwKICAgICAgICAgICAgICAgICBleHBhbnNpb25Db250ZXh0ID8gZXhwYW5zaW9uQ29udGV4dC0+
aG9yaXpvbnRhbEV4cGFuc2lvbiA6IDAsCiAgICAgICAgICAgICAgICAgZXhwYW5zaW9uQ29udGV4
dCA/IGV4cGFuc2lvbkNvbnRleHQtPmJlaGF2aW9yIDogRGVmYXVsdEV4cGFuc2lvbiB9OwogICAg
ICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwg
c3R5bGUudGFiU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCA3OGM4MTQ1ZDAyYTA2NTI1Mjg5NGRjYTY5ODk1NGY3NGFhMWUxYzVlLi5lYzkzOGZiYTBmN2I3
YmExMmQ1MjkwZjk4YTFmODVkZjAzOWNmNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCkBAIC00MjQsNiArNDI0LDcgQEAgTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSG9yaXoKIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3Qg
TGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgYXV0byYgZm9y
bWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CisgICAgYXV0byYgbGluZUJv
eCA9IGxpbmVDb250ZW50LmxpbmVCb3g7CiAKICAgICBpZiAoIWxpbmVDb250ZW50LmZsb2F0cy5p
c0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRl
eHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpIH07CkBA
IC00MzIsNyArNDMzLDYgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxh
eUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgICAgIGF1
dG8mIGZsb2F0Qm94ID0gZmxvYXRJdGVtLT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxheUJveChmbG9hdEJveCk7CiAgICAg
ICAgICAgICAvLyBTZXQgc3RhdGljIHBvc2l0aW9uIGZpcnN0LgotICAgICAgICAgICAgYXV0byYg
bGluZUJveCA9IGxpbmVDb250ZW50LmxpbmVCb3g7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNl
dFRvcExlZnQoeyBsaW5lQm94LmxvZ2ljYWxMZWZ0KCksIGxpbmVCb3gubG9naWNhbFRvcCgpIH0p
OwogICAgICAgICAgICAgLy8gRmxvYXQgaXQuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRv
cExlZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yRmxvYXQoZmxvYXRCb3gpKTsKQEAgLTQ0
OCw4ICs0NDgsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94
ZXNGb3JMaW5lKGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaQogICAgICAgICBpbml0aWFsQ29u
dGFpbmdCbG9ja1NpemUgPSBnZW9tZXRyeUZvckJveChyb290KCkuaW5pdGlhbENvbnRhaW5pbmdC
bG9jaygpLCBFc2NhcGVSZWFzb246OlN0cm9rZU92ZXJmbG93TmVlZHNWaWV3cG9ydEdlb21ldHJ5
KS5jb250ZW50Qm94KCkuc2l6ZSgpOwogICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0
aW5nU3RhdGUuZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBhdXRvIGxpbmVJbmRl
eCA9IGlubGluZUNvbnRlbnQubGluZUJveGVzLnNpemUoKTsKLSAgICBpbmxpbmVDb250ZW50Lmxp
bmVCb3hlcy5hcHBlbmQobGluZUNvbnRlbnQubGluZUJveCk7Ci0gICAgYXV0byBsaW5lSW5rT3Zl
cmZsb3cgPSBsaW5lQ29udGVudC5saW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygpOworICAgIGF1
dG8gbGluZUlua092ZXJmbG93ID0gbGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKTsKICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbGFzdFRleHRJdGVtSW5kZXg7CiAgICAgLy8gQ29tcHV0ZSBib3gg
ZmluYWwgZ2VvbWV0cnkuCiAgICAgYXV0byYgbGluZVJ1bnMgPSBsaW5lQ29udGVudC5ydW5MaXN0
OwpAQCAtNTQwLDcgKzUzOSw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERp
c3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSB0cmFpbGluZyB0ZXh0IHJ1biBnZXRzIGEgaHlwaGVuIHdoZW4gaXQgbmVlZHMg
b25lLgogICAgIGlmIChsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudCAmJiBsaW5lQ29udGVudC5w
YXJ0aWFsQ29udGVudC0+dHJhaWxpbmdDb250ZW50TmVlZHNIeXBoZW4pCiAgICAgICAgIGlubGlu
ZUNvbnRlbnQucnVuc1sqbGFzdFRleHRJdGVtSW5kZXhdLnRleHRDb250ZXh0KCktPnNldE5lZWRz
SHlwaGVuKCk7Ci0gICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMubGFzdCgpLnNldElua092ZXJm
bG93KGxpbmVJbmtPdmVyZmxvdyk7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgdGhlIGxv
Z2ljYWwgdG8gcGh5c2ljYWwgdHJhbnNsYXRlIHNob3VsZCBoYXBwZW4uCisgICAgYXV0byYgYmFz
ZWxpbmUgPSBsaW5lQm94LmJhc2VsaW5lKCk7CisgICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMu
YXBwZW5kKERpc3BsYXk6OkxpbmVCb3ggeyBsaW5lQm94LmxvZ2ljYWxSZWN0KCksIGxpbmVCb3gu
c2Nyb2xsYWJsZU92ZXJmbG93KCksIGxpbmVJbmtPdmVyZmxvdywgeyBiYXNlbGluZS5hc2NlbnQo
KSwgYmFzZWxpbmUuZGVzY2VudCgpIH0sIGxpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSwgbGluZUJv
eC5pc0NvbnNpZGVyZWRFbXB0eSgpIH0pOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjppbnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEludmFsaWRhdGlvblN0YXRlJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCA0OTM2
NGZlODIzNTU4MmEyMWQyMjBkMzU0ZjJlN2VkNzgxZjUwMTI4Li5lNDE1NmIzYTRjYzg1ZGY1NDY2
MTY1YzZmMTEwY2ZhNzFlZGRkMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwCkBAIC04MywxMiArODMsMTIgQEAgTGluZUJ1aWxkZXI6OkNvbnN0cmFp
bnRzOjpIZWlnaHRBbmRCYXNlbGluZSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjps
aW4KICAgICBhdXRvIGxpbmVIZWlnaHQgPSBmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmxpbmVIZWln
aHQoKTsKICAgICBpZiAobGluZUhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAg
ICAgICBhdXRvIGluaXRpYWxCYXNlbGluZU9mZnNldCA9IExpbmVCdWlsZGVyOjpoYWxmTGVhZGlu
Z01ldHJpY3MoZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmljcygpLCAwX2x1KS5hc2Nl
bnQoKTsKLSAgICAgICAgcmV0dXJuIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQmFz
ZWxpbmVPZmZzZXQsIERpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIHsgc3RydXRCYXNlbGluZU9m
ZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2VsaW5lT2Zmc2V0IH0gfTsKKyAgICAgICAgcmV0
dXJuIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIExpbmVC
b3g6OkJhc2VsaW5lIHsgc3RydXRCYXNlbGluZU9mZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJh
c2VsaW5lT2Zmc2V0IH0gfTsKICAgICB9CiAgICAgLy8gRklYTUU6IFRoZSBvbmx5IHJlYXNvbiB3
aHkgd2UgdXNlIGludFZhbHVlKCkgaGVyZSBpcyB0byBtYXRjaCBjdXJyZW50IGlubGluZSB0cmVl
IChpbnRlZ3JhbCliZWhhdmlvci4KICAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxMaW5lSGVp
Z2h0ID0gbGluZUhlaWdodC5pbnRWYWx1ZSgpOwogICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5lT2Zm
c2V0ID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5nUm9vdC5zdHls
ZSgpLmZvbnRNZXRyaWNzKCksIGluaXRpYWxMaW5lSGVpZ2h0KS5hc2NlbnQoKTsKLSAgICByZXR1
cm4geyBpbml0aWFsTGluZUhlaWdodCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBEaXNwbGF5OjpM
aW5lQm94OjpCYXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0cnV0SGVpZ2h0IC0gc3Ry
dXRCYXNlbGluZU9mZnNldCB9IH07CisgICAgcmV0dXJuIHsgaW5pdGlhbExpbmVIZWlnaHQsIGlu
aXRpYWxCYXNlbGluZU9mZnNldCwgTGluZUJveDo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zm
c2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
Qm94LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTA2MGIyOGZlMWI4YjYwMjIyMDI5NDcwZmZhNTc4ZDIyM2QzMDQ2
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCb3guaApAQCAtMCwwICsxLDI0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNs
dWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheUlubGluZVJlY3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIExpbmVCb3ggewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0cnVjdCBCYXNlbGlu
ZSB7CisgICAgICAgIEJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlv
dXRVbml0IGRlc2NlbnQpOworICAgICAgICBCYXNlbGluZSgpID0gZGVmYXVsdDsKKworICAgICAg
ICB2b2lkIHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKKyAgICAgICAgdm9pZCBzZXREZXNj
ZW50KElubGluZUxheW91dFVuaXQpOworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCgpICsgZGVz
Y2VudCgpOyB9CisgICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50KCkgY29uc3Q7CisgICAg
ICAgIElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyNp
ZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxzZSB9
OworICAgICAgICBib29sIG1faGFzVmFsaWREZXNjZW50IHsgZmFsc2UgfTsKKyNlbmRpZgorICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYXNjZW50IHsgMCB9OworICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IG1fZGVzY2VudCB7IDAgfTsKKyAgICB9OworCisgICAgTGluZUJveChjb25zdCBEaXNw
bGF5OjpJbmxpbmVSZWN0JiwgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2Vs
aW5lT2Zmc2V0KTsKKyAgICBMaW5lQm94KCkgPSBkZWZhdWx0OworCisgICAgY29uc3QgRGlzcGxh
eTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAg
ICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQorCisgICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0KKyAgICBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9
CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LnRvcCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CisK
KyAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKKyAgICAvLyBCYXNlbGluZSBv
ZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5l
Y2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICAvLworICAgIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0gICAgbGluZSBsb2dpY2FsIHRvcCAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9wIGFs
aWduKQorICAgIC8vICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXiAgICAgICAgICAgfAorICAgIC8vICAgXiAgICAgICAgIHwgYmFzZWxp
bmUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCBiYXNlbGluZSBvZmZzZXQK
KyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgIHwKKyAgICAvLyAgIHwgYXNjZW50ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgYXNjZW50ICAgIHwKKyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgIHYKKyAgICAvLyAgIHYgICAgICAgICB2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxp
bmUKKyAgICAvLyAgIC0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lICAgICAgICAgICAgICAgICAg
IF4KKyAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgZGVzY2VudAorICAgIC8vICAgfCBkZXNjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdgorICAgIC8vICAgdgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGlu
ZSBsb2dpY2FsIGJvdHRvbSAgLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIElubGluZUxheW91dFVu
aXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZH
cmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0QXNjZW50SWZHcmVhdGVyKElu
bGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlv
dXRVbml0KTsKKworICAgIHZvaWQgcmVzZXRCYXNlbGluZSgpOworICAgIHZvaWQgcmVzZXREZXNj
ZW50KCkgeyBtX2Jhc2VsaW5lLnNldERlc2NlbnQoMF9sdSk7IH0KKworICAgIHZvaWQgc2V0TG9n
aWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9yZWN0LnNldEhl
aWdodChsb2dpY2FsSGVpZ2h0KTsgfQorCisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0SWZHcmVh
dGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9
CisKKyAgICB2b2lkIHNldFNjcm9sbGFibGVPdmVyZmxvdyhjb25zdCBEaXNwbGF5OjpJbmxpbmVS
ZWN0JiByZWN0KSB7IG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVjdDsgfQorCisgICAgdm9pZCBt
b3ZlSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0Lm1vdmVIb3Jp
em9udGFsbHkoZGVsdGEpOyB9CisKKyAgICB2b2lkIGV4cGFuZEhvcml6b250YWxseShJbmxpbmVM
YXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5leHBhbmRIb3Jpem9udGFsbHkoZGVsdGEpOyB9Cisg
ICAgdm9pZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBh
bmRIb3Jpem9udGFsbHkoLWRlbHRhKTsgfQorCisgICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElu
bGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZFZlcnRpY2FsbHkoZGVsdGEpOyB9
CisgICAgdm9pZCBzaHJpbmtWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhw
YW5kVmVydGljYWxseSgtZGVsdGEpOyB9CisKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
Q1NTMjIvdmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0aW5nCisgICAgLy8gTGluZSBib3hlcyB0
aGF0IGNvbnRhaW4gbm8gdGV4dCwgbm8gcHJlc2VydmVkIHdoaXRlIHNwYWNlLCBubyBpbmxpbmUg
ZWxlbWVudHMgd2l0aCBub24temVybyBtYXJnaW5zLCBwYWRkaW5nLCBvciBib3JkZXJzLAorICAg
IC8vIGFuZCBubyBvdGhlciBpbi1mbG93IGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2VzLCBpbmxpbmUg
YmxvY2tzIG9yIGlubGluZSB0YWJsZXMpLCBhbmQgZG8gbm90IGVuZCB3aXRoIGEgcHJlc2VydmVk
IG5ld2xpbmUKKyAgICAvLyBtdXN0IGJlIHRyZWF0ZWQgYXMgemVyby1oZWlnaHQgbGluZSBib3hl
cyBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHRoZSBwb3NpdGlvbnMgb2YgYW55IGVs
ZW1lbnRzIGluc2lkZSBvZiB0aGVtLAorICAgIC8vIGFuZCBtdXN0IGJlIHRyZWF0ZWQgYXMgbm90
IGV4aXN0aW5nIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KKyAgICAvLyBOb3RlIHRoYXQgaXQgZG9l
cyBub3QgbmVjZXNzYXJpbHkgbWVhbiB2aXN1YWxseSBub24tZW1wdHkgbGluZS4gPHNwYW4gc3R5
bGU9ImZvbnQtc2l6ZTogMHB4Ij50aGlzIGlzIHN0aWxsIGNvbnNpZGVyZWQgbm9uLWVtcHR5PC9z
cGFuPgorICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
c2lkZXJlZEVtcHR5OyB9CisgICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0Nv
bnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5
KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KKworcHJpdmF0ZToKKyNpZiBBU1NF
UlRfRU5BQkxFRAorICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07CisjZW5kaWYKKyAgICBEaXNw
bGF5OjpJbmxpbmVSZWN0IG1fcmVjdDsKKyAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fc2Nyb2xs
YWJsZU92ZXJmbG93OworICAgIEJhc2VsaW5lIG1fYmFzZWxpbmU7CisgICAgSW5saW5lTGF5b3V0
VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0IHsgMCB9OworICAgIGJvb2wgbV9pc0NvbnNpZGVyZWRFbXB0
eSB7IHRydWUgfTsKK307CisKK2lubGluZSBMaW5lQm94OjpMaW5lQm94KGNvbnN0IERpc3BsYXk6
OklubGluZVJlY3QmIHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0
VW5pdCBiYXNlbGluZU9mZnNldCkKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV9iYXNlbGlu
ZShiYXNlbGluZSkKKyAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCit7Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmUgPSB0cnVlOworICAgIG1f
aGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQg
TGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQpCit7CisgICAgaWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKK30K
KworaW5saW5lIGNvbnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OjpiYXNlbGluZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7CisgICAgcmV0dXJuIG1fYmFz
ZWxpbmU7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVh
dGVyKElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VOQUJM
RUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlmCisgICAgbV9i
YXNlbGluZU9mZnNldCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zmc2V0LCBtX2Jhc2VsaW5lT2Zmc2V0
KTsKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6c2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxh
eW91dFVuaXQgYXNjZW50KQoreworICAgIGlmIChhc2NlbnQgPCBtX2Jhc2VsaW5lLmFzY2VudCgp
KQorICAgICAgICByZXR1cm47CisgICAgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoYXNjZW50
KTsKKyAgICBtX2Jhc2VsaW5lLnNldEFzY2VudChhc2NlbnQpOworfQorCitpbmxpbmUgdm9pZCBM
aW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgZGVzY2VudCkKK3sK
KyAgICBpZiAoZGVzY2VudCA8IG1fYmFzZWxpbmUuZGVzY2VudCgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9iYXNlbGluZS5zZXREZXNjZW50KGRlc2NlbnQpOworfQorCitpbmxpbmUgSW5saW5l
TGF5b3V0VW5pdCBMaW5lQm94OjpiYXNlbGluZU9mZnNldCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCk7CisgICAgcmV0dXJuIG1fYmFzZWxpbmVPZmZzZXQ7
Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OnJlc2V0QmFzZWxpbmUoKQoreworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKKyNlbmRpZgor
ICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1OworICAgIG1fYmFzZWxpbmUucmVzZXQoKTsKK30K
KworaW5saW5lIExpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFz
Y2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQorICAgIDogbV9hc2NlbnQoYXNjZW50KQor
ICAgICwgbV9kZXNjZW50KGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hh
c1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudChJbmxpbmVM
YXlvdXRVbml0IGFzY2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRB
c2NlbnQgPSB0cnVlOworI2VuZGlmCisgICAgbV9hc2NlbnQgPSBhc2NlbnQ7Cit9CisKK2lubGlu
ZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KElubGluZUxheW91dFVuaXQgZGVz
Y2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1
ZTsKKyNlbmRpZgorICAgIG1fZGVzY2VudCA9IGRlc2NlbnQ7Cit9CisKK2lubGluZSB2b2lkIExp
bmVCb3g6OkJhc2VsaW5lOjpyZXNldCgpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hh
c1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5k
aWYKKyAgICBtX2FzY2VudCA9IDBfbHU7CisgICAgbV9kZXNjZW50ID0gMF9sdTsKK30KKworaW5s
aW5lIElubGluZUxheW91dFVuaXQgTGluZUJveDo6QmFzZWxpbmU6OmFzY2VudCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1faGFzVmFsaWRBc2NlbnQpOworICAgIHJldHVybiBtX2FzY2VudDsKK30K
KworaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveDo6QmFzZWxpbmU6OmRlc2NlbnQoKSBj
b25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkRGVzY2VudCk7CisgICAgcmV0dXJuIG1fZGVz
Y2VudDsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4
NDNlNmE4NzNjZjMzNWEwNTEwNzE0MTI0NDllNGZjZjBkOWI4NmU4Li5hNTY1NWQ1NTg3NjNlNGMz
MTVjNzQ4YTc5MGU0Zjc3OTI0MjkyM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC05
MSw4ICs5MSw4IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWlu
dHMmIGNvbnN0cmFpbnRzKQogICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IHsgfTsKIAogICAgIGF1
dG8gbGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgY29uc3RyYWludHMubG9naWNhbFRv
cExlZnQsIDBfbHUsIGluaXRpYWxMaW5lSGVpZ2h0IH07Ci0gICAgYXV0byBiYXNlbGluZSA9IERp
c3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFs
TGluZUhlaWdodCAtIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OwotICAgIG1fbGluZUJveCA9IERp
c3BsYXk6OkxpbmVCb3ggeyBsaW5lUmVjdCwgYmFzZWxpbmUsIGluaXRpYWxCYXNlbGluZU9mZnNl
dCB9OworICAgIGF1dG8gYmFzZWxpbmUgPSBMaW5lQm94OjpCYXNlbGluZSB7IGluaXRpYWxCYXNl
bGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWlnaHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsK
KyAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsgbGluZVJlY3QsIGJhc2VsaW5lLCBpbml0aWFsQmFz
ZWxpbmVPZmZzZXQgfTsKICAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBjb25zdHJhaW50cy5hdmFp
bGFibGVMb2dpY2FsV2lkdGg7CiAgICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGNvbnN0cmFpbnRz
LmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdDsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIExpbmVCdWls
ZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQgaXNMYXN0TGluZVdpCiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgp
KSB7CiAgICAgICAgICAgICBtX2xpbmVCb3gucmVzZXRCYXNlbGluZSgpOwotICAgICAgICAgICAg
bV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoMF9sdSk7CisgICAgICAgICAgICBtX2xpbmVCb3gu
c2V0TG9naWNhbEhlaWdodCh7IH0pOwogICAgICAgICB9CiAgICAgICAgIC8vIFJlbW92ZSBkZXNj
ZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVt
IGhhdmUgZGVzY2VudC4KICAgICAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCku
bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcobV9ydW5zKSkgewpAQCAtNjU4LDcgKzY1OCw3IEBA
IGJvb2wgTGluZUJ1aWxkZXI6OmlzVmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mIHJ1bikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLURpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIExp
bmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRy
aWNzLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KQorTGluZUJveDo6QmFzZWxp
bmUgTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCiB7CiAgICAgYXV0
byBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKICAgICBhdXRvIGRlc2NlbnQgPSBmb250
TWV0cmljcy5kZXNjZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCA0ZDVjMjUwZDhmNGE1
NmFhOTQ1MDk5OGY2NGYyMzE4M2E0MzE2OGZkLi4wZTZkYzZiNzZmZDUxMWQ3NjBjODM1MzUzZmYz
MWE5YjljYmRkMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAog
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxh
eUxpbmVCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5UnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
bS5oIgorI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRl
bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RydWN0IEhlaWdodEFuZEJhc2VsaW5lIHsKICAgICAgICAgICAgIElubGluZUxheW91
dFVuaXQgaGVpZ2h0IHsgMCB9OwogICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCB7IDAgfTsKLSAgICAgICAgICAgIE9wdGlvbmFsPERpc3BsYXk6OkxpbmVCb3g6OkJh
c2VsaW5lPiBzdHJ1dDsKKyAgICAgICAgICAgIE9wdGlvbmFsPExpbmVCb3g6OkJhc2VsaW5lPiBz
dHJ1dDsKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0QW5kQmFzZWxpbmU+IGhl
aWdodEFuZEJhc2VsaW5lOwogICAgIH07CkBAIC02NSwxMSArNjUsMTIgQEAgcHVibGljOgogICAg
IGJvb2wgaXNWaXN1YWxseUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94LmlzQ29uc2lk
ZXJlZEVtcHR5KCk7IH0KICAgICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0KCkgY29uc3QgeyByZXR1
cm4gbV9oYXNJbnRydXNpdmVGbG9hdDsgfQogICAgIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsV2lkdGgoKSAtIGNvbnRlbnRMb2dpY2FsV2lk
dGgoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsUmlnaHQoKTsgfQogCiAgICAgSW5saW5lTGF5b3V0
VW5pdCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVU
cmFpbGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJvb2wgaXNUcmFpbGluZ1J1bkZ1bGx5VHJp
bW1hYmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuaXNUcmFp
bGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAgIGNvbnN0IERpc3BsYXk6OkxpbmVCb3gm
IGxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3g7IH0KKyAgICBjb25zdCBMaW5lQm94
JiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CiAgICAgdm9pZCBtb3ZlTG9n
aWNhbExlZnQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBtb3ZlTG9naWNhbFJpZ2h0KElu
bGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0SGFzSW50cnVzaXZlRmxvYXQoKSB7IG1faGFz
SW50cnVzaXZlRmxvYXQgPSB0cnVlOyB9CkBAIC0xNDMsNyArMTQ0LDcgQEAgcHVibGljOgogICAg
IGVudW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsgTm8sIFllcyB9OwogICAg
IFJ1bkxpc3QgY2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50ID0gSXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50OjpObyk7CiAKLSAgICBzdGF0aWMgRGlzcGxheTo6TGluZUJveDo6QmFz
ZWxpbmUgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiwgSW5saW5lTGF5b3V0
VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7CisgICAgc3RhdGljIExpbmVCb3g6OkJhc2VsaW5lIGhh
bGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQgbGlu
ZUxvZ2ljYWxIZWlnaHQpOwogCiBwcml2YXRlOgogICAgIElubGluZUxheW91dFVuaXQgbG9naWNh
bFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsVG9wKCk7IH0KQEAgLTE1Niw3
ICsxNTcsNiBAQCBwcml2YXRlOgogICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsSGVpZ2h0KCk7IH0KIAogICAgIElubGlu
ZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJv
eC5sb2dpY2FsV2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxS
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsUmlnaHQoKTsgfQogICAgIElu
bGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3gu
YmFzZWxpbmVPZmZzZXQoKTsgfQogCiAgICAgdm9pZCBhcHBlbmROb25CcmVha2FibGVTcGFjZShj
b25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwpAQCAtMjExLDEyICsyMTEsMTIgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDsKICAgICBSdW5MaXN0IG1fcnVuczsKICAgICBUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgbV90
cmltbWFibGVUcmFpbGluZ0NvbnRlbnQ7Ci0gICAgT3B0aW9uYWw8RGlzcGxheTo6TGluZUJveDo6
QmFzZWxpbmU+IG1faW5pdGlhbFN0cnV0OworICAgIE9wdGlvbmFsPExpbmVCb3g6OkJhc2VsaW5l
PiBtX2luaXRpYWxTdHJ1dDsKICAgICBJbmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0
aCB7IDAgfTsKICAgICBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBtX2hvcml6b250YWxBbGlnbm1l
bnQ7CiAgICAgYm9vbCBtX2lzSW50cmluc2ljU2l6aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzSW50cnVzaXZlRmxvYXQgeyBmYWxzZSB9OwotICAgIERpc3BsYXk6OkxpbmVCb3ggbV9saW5l
Qm94OworICAgIExpbmVCb3ggbV9saW5lQm94OwogICAgIE9wdGlvbmFsPGJvb2w+IG1fbGluZUlz
VmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDsKICAgICBib29sIG1f
c2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5
b3V0Q29udGV4dC5jcHAKaW5kZXggYmNkMTM3YzYwYWVhNWNjYTY0YTAwOTk2YjgzY2VkZWY0ZTgx
YTUyOC4uNjMyMDM4ZjY4M2JiM2VmM2YzNzRkNTQ5YTdjMzBlMTk0MTQyMGVlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVM
YXlvdXRDb250ZXh0LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIExpbmVMYXlvdXRDb250ZXh0OjpM
aW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5lQnVpbGRlciYgbGlu
ZSwKICAgICAgICAgLy8gMi4gQXBwbHkgZmxvYXRzIGFuZCBzaHJpbmsgdGhlIGF2YWlsYWJsZSBo
b3Jpem9udGFsIHNwYWNlIGUuZy4gPHNwYW4+aW50cnVfPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQi
PjwvZGl2PnNpdmVfZmxvYXQ8L3NwYW4+LgogICAgICAgICAvLyAzLiBDaGVjayBpZiB0aGUgY29u
dGVudCBmaXRzIHRoZSBsaW5lIGFuZCBjb21taXQgdGhlIGNvbnRlbnQgYWNjb3JkaW5nbHkgKGZ1
bGwsIHBhcnRpYWwgb3Igbm90IGNvbW1pdCBhdCBhbGwpLgogICAgICAgICAvLyA0LiBSZXR1cm4g
aWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgZWl0aGVyIGJ5IG5vdCBiZWluZyBhYmxl
IHRvIGZpdCBtb3JlIGNvbnRlbnQgb3IgYmVjYXVzZSBvZiBhbiBleHBsaWNpdCBsaW5lIGJyZWFr
LgotICAgICAgICBuZXh0Q29udGVudEZvckxpbmUoY2FuZGlkYXRlQ29udGVudCwgY3VycmVudEl0
ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgbGluZS5s
aW5lQm94KCkubG9naWNhbFdpZHRoKCkpOworICAgICAgICBuZXh0Q29udGVudEZvckxpbmUoY2Fu
ZGlkYXRlQ29udGVudCwgY3VycmVudEl0ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFk
aW5nQ29udGVudExlbmd0aCwgbGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCkpOwogICAgICAgICBp
ZiAoY2FuZGlkYXRlQ29udGVudC5oYXNJbnRydXNpdmVGbG9hdHMoKSkgewogICAgICAgICAgICAg
Ly8gQWRkIGZsb2F0cyBmaXJzdCBiZWNhdXNlIHRoZXkgc2hyaW5rIHRoZSBhdmFpbGFibGUgaG9y
aXpvbnRhbCBzcGFjZSBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnQuCiAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IHRyeUFkZGluZ0Zsb2F0SXRlbXMobGluZSwgY2FuZGlkYXRlQ29udGVudC5m
bG9hdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCA5ZjBlZGQ4YjJmZDRjNDEyZDZkOWRi
M2M3NTdkZWU5NWNiZWY3MWY4Li43NTM1NjU3ZWRkZGNmYzM3YjZmOTBjNWUyOWVkOWNkYmU4ODFm
MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9M
aW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
ICAgICBPcHRpb25hbDxQYXJ0aWFsQ29udGVudD4gcGFydGlhbENvbnRlbnQ7CiAgICAgICAgIFZl
Y3Rvcjxjb25zdCBJbmxpbmVJdGVtKj4gZmxvYXRzOwogICAgICAgICBjb25zdCBMaW5lQnVpbGRl
cjo6UnVuTGlzdCBydW5MaXN0OwotICAgICAgICBjb25zdCBEaXNwbGF5OjpMaW5lQm94IGxpbmVC
b3g7CisgICAgICAgIGNvbnN0IExpbmVCb3ggbGluZUJveDsKICAgICB9OwogICAgIHN0cnVjdCBJ
bmxpbmVJdGVtUmFuZ2UgewogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBz
dGFydCA9PSBlbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggMjM4
ODY5YzZkNjI0MDgyMDRjZjFhMTk4YjllMjBkNzc5ODRmZTQ1ZC4uNTc4ZDRkZDA4ODA3OWM5NGRl
N2M2ZmQzNjI1ZjM2NTVjYjliN2FhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiBMYXlvdXRV
bml0IExpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKIHsKICAgICBhdXRv
JiBsaW5lQm94ZXMgPSBkaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7Ci0gICAgcmV0
dXJuIExheW91dFVuaXQgeyBsaW5lQm94ZXMubGFzdCgpLmxvZ2ljYWxCb3R0b20oKSAtIGxpbmVC
b3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKSB9OworICAgIHJldHVybiBMYXlvdXRVbml0IHsgbGlu
ZUJveGVzLmxhc3QoKS5ib3R0b20oKSAtIGxpbmVCb3hlcy5maXJzdCgpLnRvcCgpIH07CiB9CiAK
IHNpemVfdCBMaW5lTGF5b3V0OjpsaW5lQ291bnQoKSBjb25zdApAQCAtMTM3LDcgKzEzNyw3IEBA
IExheW91dFVuaXQgTGluZUxheW91dDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgIH0K
IAogICAgIGF1dG8mIGZpcnN0TGluZUJveCA9IGlubGluZUNvbnRlbnQtPmxpbmVCb3hlcy5maXJz
dCgpOwotICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChmaXJzdExpbmVCb3gubG9naWNh
bFRvcCgpICsgZmlyc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkpOworICAgIHJldHVybiBMYXlv
dXQ6OnRvTGF5b3V0VW5pdChmaXJzdExpbmVCb3gudG9wKCkgKyBmaXJzdExpbmVCb3guYmFzZWxp
bmVPZmZzZXQoKSk7CiB9CiAKIExheW91dFVuaXQgTGluZUxheW91dDo6bGFzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CkBAIC0xNDksNyArMTQ5LDcgQEAgTGF5b3V0VW5pdCBMaW5lTGF5b3V0OjpsYXN0
TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAgICBhdXRvJiBsYXN0TGluZUJveCA9IGlu
bGluZUNvbnRlbnQtPmxpbmVCb3hlcy5sYXN0KCk7Ci0gICAgcmV0dXJuIExheW91dDo6dG9MYXlv
dXRVbml0KGxhc3RMaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxhc3RMaW5lQm94LmJhc2VsaW5lT2Zm
c2V0KCkpOworICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChsYXN0TGluZUJveC50b3Ao
KSArIGxhc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6
OmNvbGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCkBAIC0yNTgsNyArMjU4LDcg
QEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICB9CiAKICAgICAgICAgYXV0byYgbGluZUJv
eCA9IGlubGluZUNvbnRlbnQubGluZUJveEZvclJ1bihydW4pOwotICAgICAgICBhdXRvIGJhc2Vs
aW5lT2Zmc2V0ID0gcGFpbnRPZmZzZXQueSgpICsgbGluZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5l
Qm94LmJhc2VsaW5lT2Zmc2V0KCk7CisgICAgICAgIGF1dG8gYmFzZWxpbmVPZmZzZXQgPSBwYWlu
dE9mZnNldC55KCkgKyBsaW5lQm94LnRvcCgpICsgbGluZUJveC5iYXNlbGluZU9mZnNldCgpOwog
CiAgICAgICAgIGF1dG8gYmVoYXZpb3IgPSB0ZXh0Q29udGV4dC5leHBhbnNpb24oKSA/IHRleHRD
b250ZXh0LmV4cGFuc2lvbigpLT5iZWhhdmlvciA6IERlZmF1bHRFeHBhbnNpb247CiAgICAgICAg
IGF1dG8gaG9yaXpvbnRhbEV4cGFuc2lvbiA9IHRleHRDb250ZXh0LmV4cGFuc2lvbigpID8gdGV4
dENvbnRleHQuZXhwYW5zaW9uKCktPmhvcml6b250YWxFeHBhbnNpb24gOiAwOwpAQCAtMjY2LDcg
KzI2Niw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgU3RyaW5nIHRleHRXaXRoSHlw
aGVuOwogICAgICAgICBpZiAodGV4dENvbnRleHQubmVlZHNIeXBoZW4oKSkKICAgICAgICAgICAg
IHRleHRXaXRoSHlwaGVuID0gbWFrZVN0cmluZyh0ZXh0Q29udGV4dC5jb250ZW50KCksIHN0eWxl
Lmh5cGhlblN0cmluZygpKTsKLSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgIXRleHRXaXRoSHlw
aGVuLmlzRW1wdHkoKSA/IHRleHRXaXRoSHlwaGVuIDogdGV4dENvbnRleHQuY29udGVudCgpLCBy
dW4ubGVmdCgpIC0gbGluZUJveC5sb2dpY2FsTGVmdCgpLCBob3Jpem9udGFsRXhwYW5zaW9uLCBi
ZWhhdmlvciB9OworICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4uaXNF
bXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGV4dC5jb250ZW50KCksIHJ1bi5sZWZ0
KCkgLSBsaW5lQm94LmxlZnQoKSwgaG9yaXpvbnRhbEV4cGFuc2lvbiwgYmVoYXZpb3IgfTsKICAg
ICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5
bGUudGFiU2l6ZSgpKTsKICAgICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkg
KyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZU9mZnNldCwgZGV2
aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCAyZmJiYjljNDQ0NmEwZmRiYjky
N2JkZTAyOTdiOTM5MDAxYzMyZmY0Li5jMTQ2MjJlOTBjMzlmNzQzMjQwOTFiMWVjZDY4MWZkNjkx
OWI0NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIHZvaWQgb3V0
cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwKIAogICAgIHN0cmVhbSA8PCAibGluZXMgYXJlIC0+ICI7CiAgICAgZm9yIChhdXRv
JiBsaW5lQm94IDogbGluZUJveGVzKQotICAgICAgICBzdHJlYW0gPDwgIlsiIDw8IGxpbmVCb3gu
bG9naWNhbExlZnQoKSA8PCAiLCIgPDwgbGluZUJveC5sb2dpY2FsVG9wKCkgPDwgIiAiIDw8IGxp
bmVCb3gubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGxpbmVCb3gubG9naWNhbEhlaWdodCgpIDw8
ICJdICI7CisgICAgICAgIHN0cmVhbSA8PCAiWyIgPDwgbGluZUJveC5sZWZ0KCkgPDwgIiwiIDw8
IGxpbmVCb3gudG9wKCkgPDwgIiAiIDw8IGxpbmVCb3gud2lkdGgoKSA8PCAieCIgPDwgbGluZUJv
eC5oZWlnaHQoKSA8PCAiXSAiOwogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogCiAgICAgZm9yIChh
dXRvJiBkaXNwbGF5UnVuIDogZGlzcGxheVJ1bnMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388991</attachid>
            <date>2020-01-28 07:30:04 -0800</date>
            <delta_ts>2020-01-28 08:51:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206861-20200128073002.patch</filename>
            <type>text/plain</type>
            <size>46677</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2ZmE4MGRmNjU1ZTkx
NDFlNzk4OTBhMWNlYjM1MTY3NTQxMjk3OC4uZmViYWMzNGVjMjRiYjJmNjliNzNhNjE1YWMyNTM2
YzExZjFiYWU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0wMS0yNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gRGVjb3Vw
bGUgRGlzcGxheTo6TGluZUJveCBhbmQgTGF5b3V0OjpMaW5lQm94CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU4OTQ1Mjg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlIHNob3VsZCBub3QgbWl4IGxvZ2ljYWwgYW5kIHBoeXNpY2FsIGNvb3JkaW5h
dGVzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0
Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlMaW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpC
YXNlbGluZTo6YXNjZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVC
b3g6OkJhc2VsaW5lOjpkZXNjZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxpbmVCb3g6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJv
eDo6bGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpyaWdo
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojp0b3AgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6Ym90dG9tIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OndpZHRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpMaW5lQm94OjpiYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94OjpiYXNlbGluZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpMaW5lQm94Ojppc0NvbnNpZGVyZWRFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsVG9wTGVmdCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsTGVmdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2Fs
UmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJv
eDo6bG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpMaW5lQm94Ojpsb2dpY2FsQm90dG9tIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkxpbmVCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsSGVpZ2h0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlc2V0RGVzY2VudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRMb2dpY2Fs
VG9wTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpz
ZXRMb2dpY2FsSGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OnNldExvZ2ljYWxXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpMaW5lQm94OjpzZXRTY3JvbGxhYmxlT3ZlcmZsb3cpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0SW5rT3ZlcmZsb3cpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bW92ZUhvcml6b250YWxseSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpleHBhbmRIb3Jpem9udGFs
bHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2hyaW5r
SG9yaXpvbnRhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVC
b3g6OmV4cGFuZFZlcnRpY2FsbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6TGluZUJveDo6c2hyaW5rVmVydGljYWxseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWRFbXB0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWROb25FbXB0eSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRMb2dpY2Fs
SGVpZ2h0SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlc2V0QmFzZWxp
bmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6QmFzZWxp
bmU6OnNldEFzY2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5l
Qm94OjpCYXNlbGluZTo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpwYWludElubGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OlF1aXJrczo6bGluZUhlaWdodENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzY3JvbGxhYmxlT3ZlcmZsb3cgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxUb3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsQm90dG9tIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFdpZHRoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbEhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnJlc2V0RGVzY2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRTY3JvbGxhYmxlT3ZlcmZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojptb3ZlSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6ZXhwYW5kSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6c2hyaW5rSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6ZXhwYW5kVmVydGljYWxseSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua1ZlcnRpY2FsbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94Ojppc0NvbnNpZGVyZWRFbXB0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29uc2lkZXJlZEVtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0SXNDb25zaWRlcmVkTm9uRW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpMaW5lQm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YmFzZWxpbmVPZmZzZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpyZXNldEJhc2VsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OkJhc2VsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OmFzY2VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpkZXNjZW50IGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyk6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbnRlbnRMb2dpY2FsUmlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGluZUJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb250ZW50TG9naWNh
bFdpZHRoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5
b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250
ZXh0OjpsYXlvdXRMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5l
TGF5b3V0Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpmaXJzdExpbmVCYXNlbGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGFzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0SW5s
aW5lUnVucyk6CisKIDIwMjAtMDEtMjcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEFkZCBzdXBwb3J0IGZvciB0aGUgb3B0aW9u
cyBwYXJhbWV0ZXIgdG8gZ2V0QW5pbWF0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzExZTc2MmZmOGRkYTYxYTQwZTlm
YWRmMGJkZmM4YjFmMjNhMmUyZi4uY2RhZmViNWVmODljMDEwOGIzZGU1ZDQ1NDU0YjJhNGQ5NjJh
NTA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjA3Miw2ICsyMDcyLDcgQEAKIAkJNkY5OTVBM0ExQTcwODMzNzAwQTczNUY0
IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9OwogCQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyog
SlNCZWZvcmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZl
bnQuaCAqLzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgz
RkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGlu
ZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZC
MjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JD
QjAgLyogRGlzcGxheUxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjVF
MjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5
ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlz
cGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQwOCw2ICs5NDA5LDcgQEAKIAkJ
NkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHRVdGlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZGQjExQjVCMjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0VXRpbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGQjIyRTMwMjMwMDk3RTMwMEMyMDg2NiAvKiBUYWJsZUdyaWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGFibGVHcmlkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQjI0
MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElubGluZUxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkZCNDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5lQm94Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4
MzksNiArMTY4NDEsNyBAQAogCQkJCTExNUNGQTdDMjA4QjhFMTAwMDFFNjk5MSAvKiBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaCAqLywKIAkJCQk2RjdCOENFQzIzNjI2RTY2MDBDOUZGMTUgLyogSW5s
aW5lSXRlbS5jcHAgKi8sCiAJCQkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0
ZW0uaCAqLywKKwkJCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5o
ICovLAogCQkJCTZGRTE5ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5j
cHAgKi8sCiAJCQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2Vy
LmggKi8sCiAJCQkJNkYwQ0Q2OTIyMjlFRDMxOTAwQzU5OTRFIC8qIElubGluZUxpbmVCdWlsZGVy
LmNwcCAqLywKQEAgLTMwNDUxLDYgKzMwNDU0LDcgQEAKIAkJCQkxMTVDRkE3RTIwOEI4RTEwMDAx
RTY5OTEgLyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU3
Q0ZBMjIxNzdFRUYyMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFNzg5MTYxMTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVh
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5s
aW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYwRTUwMjM5OTk0MjEwMDE1
MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5k
ZXggZjZhNTk3YmViMDMwNDNjMTZlZTc0YzQyYzI1MzhjNzU2YzRjNTM2Zi4uZDBmMjNmMzQ0ZTZm
ODU2MTcwYWM0NDZjZDEzYjI0N2RkYTkxOWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTM2LDggKzEzNiw4IEBA
IExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9y
Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvCiAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGxheW91
dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290Q29u
dGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAgIC8vIEV2
ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAgIEFTU0VSVCgh
bGluZUJveGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLmxv
Z2ljYWxUb3AoKTsKLSAgICAgICAgYm90dG9tID0gbGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90
dG9tKCk7CisgICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLnRvcCgpOworICAgICAgICBi
b3R0b20gPSBsaW5lQm94ZXMubGFzdCgpLmJvdHRvbSgpOwogICAgIH0gZWxzZSBpZiAoZm9ybWF0
dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwg
Zm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0
KCkgfHwgZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuaXNEb2N1bWVudEJveCgpKSB7CiAgICAgICAg
IGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5oYXNJbkZsb3dDaGlsZCgpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBmaXJzdEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlG
b3JCb3goKmZvcm1hdHRpbmdSb290Q29udGFpbmVyLmZpcnN0SW5GbG93Q2hpbGQoKSwgRXNjYXBl
UmVhc29uOjpOZWVkc0dlb21ldHJ5RnJvbUVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBjYWQ4
YjE4MDcxMTU1NzBjNWFhYmE3NzVkNjFmYTMwZTdhMjM5YjYuLjQ1YmY1Y2NmMjIxYmM0MTgwZTU3
MDlkMTYxOTJiNDY0OGU0MWZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQK
ICAgICAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVu
dCgpLT5saW5lQm94ZXM7CiAgICAgICAgICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2Vu
ZXJhdGUgb25lIGxpbmUuIAogICAgICAgICAgICAgQVNTRVJUKCFsaW5lQm94ZXMuaXNFbXB0eSgp
KTsKLSAgICAgICAgICAgIHJldHVybiB7IHRvTGF5b3V0VW5pdChsaW5lQm94ZXMubGFzdCgpLmxv
Z2ljYWxCb3R0b20oKSkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4g
fTsKKyAgICAgICAgICAgIHJldHVybiB7IHRvTGF5b3V0VW5pdChsaW5lQm94ZXMubGFzdCgpLmJv
dHRvbSgpKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0b20gKHBv
c3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQsIGlmIHRo
ZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKaW5kZXggMDRmNjQ3NDk5OTVlNDliOTdmNWNk
NDAwMGY0MTZhMDU2MDk3M2RjOC4uOGZmZTA2NzM2YjkzNjVjOTUyNmE2MzUzMmI0MWU5ZjU5MzMy
MGFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlMaW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlMaW5lQm94LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlJbmxpbmVSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDQ2ICszNywzNCBA
QCBjbGFzcyBMaW5lQm94IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQmFzZWxpbmUgewogICAgICAg
ICBCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNj
ZW50KTsKLSAgICAgICAgQmFzZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgdm9pZCBzZXRB
c2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVM
YXlvdXRVbml0KTsKLQotICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2NlbnQoKSArIGRlc2NlbnQoKTsgfQot
ICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0OwotICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGRlc2NlbnQoKSBjb25zdDsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2Nl
bnQoKSBjb25zdCB7IHJldHVybiBtX2FzY2VudDsgfQorICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IGRlc2NlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgYm9vbCBtX2hhc1ZhbGlkQXNjZW50IHsgZmFsc2Ug
fTsKLSAgICAgICAgYm9vbCBtX2hhc1ZhbGlkRGVzY2VudCB7IGZhbHNlIH07Ci0jZW5kaWYKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudDsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBtX2Rlc2NlbnQ7CisgICAgICAgIElubGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07Cisg
ICAgICAgIElubGluZUxheW91dFVuaXQgbV9kZXNjZW50IHsgMCB9OwogICAgIH07CiAKLSAgICBM
aW5lQm94KGNvbnN0IElubGluZVJlY3QmLCBjb25zdCBCYXNlbGluZSYsIElubGluZUxheW91dFVu
aXQgYmFzZWxpbmVPZmZzZXQpOwotICAgIExpbmVCb3goKSA9IGRlZmF1bHQ7CisgICAgTGluZUJv
eChjb25zdCBJbmxpbmVSZWN0JiwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93
LCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0LCBib29sIGlzQ29uc2lkZXJlZEVtcHR5KTsKIAotICAg
IGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9
CisgICAgY29uc3QgSW5saW5lUmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQog
ICAgIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9CiAgICAgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9CiAKLSAgICBJbmxpbmVMYXlvdXRQ
b2ludCBsb2dpY2FsVG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50b3BMZWZ0KCk7IH0K
LSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LmxlZnQoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LnJpZ2h0KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3Ao
KSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7IH0KKyAgICBJbmxp
bmVMYXlvdXRVbml0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubGVmdCgpOyB9CisgICAg
SW5saW5lTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9
CisgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7
IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5i
b3R0b20oKTsgfQogCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorICAgIElubGluZUxheW91
dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQorICAgIElubGlu
ZUxheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CiAK
LSAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKLSAgICAvLyBCYXNlbGluZSBv
ZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5l
Y2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUo
KSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CisgICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZy
b20gbGluZSB0b3AuIE5vdGUgdGhhdCBvZmZzZXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwg
dG8gYXNjZW50LgogICAgIC8vCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxv
Z2ljYWwgdG9wICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICh0b3AgYWxpZ24pCisgICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLSAgICAgICAgbGluZSB0b3AgICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0tICh0b3AgYWxpZ24pCiAgICAgLy8gICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAgICAgLy8gICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICB8CiAgICAgLy8gICBeICAgICAg
ICAgfCBiYXNlbGluZSBvZmZzZXQgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IGJhc2Vs
aW5lIG9mZnNldApAQCAtODksMTYzICs3NiwzMyBAQCBwdWJsaWM6CiAgICAgLy8gICBeICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NlbnQKICAgICAvLyAg
IHwgZGVzY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKICAgICAvLyAg
IHYKLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCBib3R0b20gIC0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRV
bml0KTsKLSAgICB2b2lkIHNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAg
ICB2b2lkIHNldERlc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0KLSAgICB2b2lk
IHJlc2V0QmFzZWxpbmUoKTsKLSAgICB2b2lkIHJlc2V0RGVzY2VudCgpIHsgbV9iYXNlbGluZS5z
ZXREZXNjZW50KDBfbHUpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxUb3BMZWZ0KGNvbnN0IElu
bGluZUxheW91dFBvaW50JiBsb2dpY2FsVG9wTGVmdCkgeyBtX3JlY3Quc2V0VG9wTGVmdChsb2dp
Y2FsVG9wTGVmdCk7IH0KLSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0KSB7IG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KLQot
ICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAg
ICB2b2lkIHNldExvZ2ljYWxXaWR0aChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkgeyBt
X3JlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsgfQotCi0gICAgdm9pZCBzZXRTY3JvbGxhYmxl
T3ZlcmZsb3coY29uc3QgSW5saW5lUmVjdCYgcmVjdCkgeyBtX3Njcm9sbGFibGVPdmVyZmxvdyA9
IHJlY3Q7IH0KLSAgICB2b2lkIHNldElua092ZXJmbG93KGNvbnN0IElubGluZVJlY3QmIHJlY3Qp
IHsgbV9pbmtPdmVyZmxvdyA9IHJlY3Q7IH0KLQotICAgIHZvaWQgbW92ZUhvcml6b250YWxseShJ
bmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5tb3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsg
fQotCi0gICAgdm9pZCBleHBhbmRIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkg
eyBtX3JlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5rSG9y
aXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kSG9yaXpvbnRhbGx5KC1k
ZWx0YSk7IH0KLQotICAgIHZvaWQgZXhwYW5kVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IGRl
bHRhKSB7IG1fcmVjdC5leHBhbmRWZXJ0aWNhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5r
VmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZFZlcnRpY2FsbHkoLWRl
bHRhKTsgfQotCi0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRt
bCNpbmxpbmUtZm9ybWF0dGluZwotICAgIC8vIExpbmUgYm94ZXMgdGhhdCBjb250YWluIG5vIHRl
eHQsIG5vIHByZXNlcnZlZCB3aGl0ZSBzcGFjZSwgbm8gaW5saW5lIGVsZW1lbnRzIHdpdGggbm9u
LXplcm8gbWFyZ2lucywgcGFkZGluZywgb3IgYm9yZGVycywKLSAgICAvLyBhbmQgbm8gb3RoZXIg
aW4tZmxvdyBjb250ZW50IChzdWNoIGFzIGltYWdlcywgaW5saW5lIGJsb2NrcyBvciBpbmxpbmUg
dGFibGVzKSwgYW5kIGRvIG5vdCBlbmQgd2l0aCBhIHByZXNlcnZlZCBuZXdsaW5lCi0gICAgLy8g
bXVzdCBiZSB0cmVhdGVkIGFzIHplcm8taGVpZ2h0IGxpbmUgYm94ZXMgZm9yIHRoZSBwdXJwb3Nl
cyBvZiBkZXRlcm1pbmluZyB0aGUgcG9zaXRpb25zIG9mIGFueSBlbGVtZW50cyBpbnNpZGUgb2Yg
dGhlbSwKLSAgICAvLyBhbmQgbXVzdCBiZSB0cmVhdGVkIGFzIG5vdCBleGlzdGluZyBmb3IgYW55
IG90aGVyIHB1cnBvc2UuCi0gICAgLy8gTm90ZSB0aGF0IGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5
IG1lYW4gdmlzdWFsbHkgbm9uLWVtcHR5IGxpbmUuIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDBw
eCI+dGhpcyBpcyBzdGlsbCBjb25zaWRlcmVkIG5vbi1lbXB0eTwvc3Bhbj4KKyAgICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tICAgICAgIGxpbmUgYm90dG9tICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlbGluZU9mZnNldDsgfQogICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29uc2lkZXJlZEVtcHR5OyB9Ci0gICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRF
bXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzQ29u
c2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KIAogcHJp
dmF0ZToKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07Ci0j
ZW5kaWYKICAgICBJbmxpbmVSZWN0IG1fcmVjdDsKICAgICBJbmxpbmVSZWN0IG1fc2Nyb2xsYWJs
ZU92ZXJmbG93OwogICAgIElubGluZVJlY3QgbV9pbmtPdmVyZmxvdzsKICAgICBCYXNlbGluZSBt
X2Jhc2VsaW5lOwotICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZU9mZnNldDsKKyAgICBJ
bmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmVPZmZzZXQgeyAwIH07CiAgICAgYm9vbCBtX2lzQ29u
c2lkZXJlZEVtcHR5IHsgdHJ1ZSB9OwogfTsKIAotaW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29u
c3QgSW5saW5lUmVjdCYgcmVjdCwgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmVMYXlv
dXRVbml0IGJhc2VsaW5lT2Zmc2V0KQoraW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5s
aW5lUmVjdCYgcmVjdCwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25z
dCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxp
bmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0LCBib29sIGlzQ29uc2lkZXJlZEVtcHR5KQogICAg
IDogbV9yZWN0KHJlY3QpCisgICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhzY3JvbGxhYmxlT3Zl
cmZsb3cpCisgICAgLCBtX2lua092ZXJmbG93KGlua092ZXJmbG93KQogICAgICwgbV9iYXNlbGlu
ZShiYXNlbGluZSkKICAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCisgICAg
LCBtX2lzQ29uc2lkZXJlZEVtcHR5KGlzQ29uc2lkZXJlZEVtcHR5KQogewotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkQmFz
ZWxpbmVPZmZzZXQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIExpbmVCb3g6OnNl
dExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQot
ewotICAgIGlmIChsb2dpY2FsSGVpZ2h0IDw9IG1fcmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7Ci19Ci0KLWlubGluZSBj
b25zdCBMaW5lQm94OjpCYXNlbGluZSYgTGluZUJveDo6YmFzZWxpbmUoKSBjb25zdAotewotICAg
IEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmUpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lOwotfQot
Ci1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9o
YXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYmFzZWxpbmVPZmZz
ZXQgPSBzdGQ6Om1heChiYXNlbGluZU9mZnNldCwgbV9iYXNlbGluZU9mZnNldCk7Ci19Ci0KLWlu
bGluZSB2b2lkIExpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGFz
Y2VudCkKLXsKLSAgICBpZiAoYXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7Ci0gICAgbV9i
YXNlbGluZS5zZXRBc2NlbnQoYXNjZW50KTsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6c2V0
RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0gICAgaWYgKGRl
c2NlbnQgPCBtX2Jhc2VsaW5lLmRlc2NlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYmFz
ZWxpbmUuc2V0RGVzY2VudChkZXNjZW50KTsKLX0KLQotaW5saW5lIElubGluZUxheW91dFVuaXQg
TGluZUJveDo6YmFzZWxpbmVPZmZzZXQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlk
QmFzZWxpbmVPZmZzZXQpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lT2Zmc2V0OwotfQotCi1pbmxp
bmUgdm9pZCBMaW5lQm94OjpyZXNldEJhc2VsaW5lKCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jhc2Vs
aW5lT2Zmc2V0ID0gMF9sdTsKLSAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7CiB9CiAKIGlubGluZSBM
aW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQsIElubGlu
ZUxheW91dFVuaXQgZGVzY2VudCkKICAgICA6IG1fYXNjZW50KGFzY2VudCkKICAgICAsIG1fZGVz
Y2VudChkZXNjZW50KQogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2Vu
dCA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLWlu
bGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXRBc2NlbnQoSW5saW5lTGF5b3V0VW5pdCBh
c2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1
ZTsKLSNlbmRpZgotICAgIG1fYXNjZW50ID0gYXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5l
Qm94OjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYK
LSAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNl
bGluZTo6cmVzZXQoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2Vu
dCA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9h
c2NlbnQgPSAwX2x1OwotICAgIG1fZGVzY2VudCA9IDBfbHU7Ci19Ci0KLWlubGluZSBJbmxpbmVM
YXlvdXRVbml0IExpbmVCb3g6OkJhc2VsaW5lOjphc2NlbnQoKSBjb25zdAotewotICAgIEFTU0VS
VChtX2hhc1ZhbGlkQXNjZW50KTsKLSAgICByZXR1cm4gbV9hc2NlbnQ7Ci19Ci0KLWlubGluZSBJ
bmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OkJhc2VsaW5lOjpkZXNjZW50KCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQobV9oYXNWYWxpZERlc2NlbnQpOwotICAgIHJldHVybiBtX2Rlc2NlbnQ7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBh
aW50ZXIuY3BwCmluZGV4IDQyYzIxMjA1MThjYWQ2NmUxZmVkMWZkOTZkNmI3YWNlMTIyMjM1MGUu
LjU2Y2Q1OWE1NDNiYTc5ODAxZjA2YTZjMmM1MTU2ZWRlYjBkYzg3NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAt
MTI5LDkgKzEyOSw5IEBAIHN0YXRpYyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIExheW91dFBvaW50IGFic29sdXRlT2ZmCiAgICAgICAgICAgICBhdXRv
IGFic29sdXRlTGVmdCA9IGFic29sdXRlT2Zmc2V0LngoKSArIHJ1bi5sZWZ0KCk7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWludGluZwogICAgICAgICAg
ICAgYXV0byYgbGluZUJveCA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5saW5lQm94Rm9yUnVuKHJ1
bik7Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gYWJzb2x1dGVPZmZzZXQueSgp
ICsgbGluZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisgICAg
ICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gYWJzb2x1dGVPZmZzZXQueSgpICsgbGluZUJv
eC50b3AoKSArIGxpbmVCb3guYmFzZWxpbmVPZmZzZXQoKTsKICAgICAgICAgICAgIGF1dG8gZXhw
YW5zaW9uQ29udGV4dCA9IHRleHRDb250ZXh0LT5leHBhbnNpb24oKTsKLSAgICAgICAgICAgIGF1
dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0Q29udGV4dC0+Y29udGVudCgpLCBydW4ubGVmdCgp
IC0gbGluZUJveC5sb2dpY2FsTGVmdCgpLAorICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4
dFJ1biB7IHRleHRDb250ZXh0LT5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94LmxlZnQo
KSwKICAgICAgICAgICAgICAgICBleHBhbnNpb25Db250ZXh0ID8gZXhwYW5zaW9uQ29udGV4dC0+
aG9yaXpvbnRhbEV4cGFuc2lvbiA6IDAsCiAgICAgICAgICAgICAgICAgZXhwYW5zaW9uQ29udGV4
dCA/IGV4cGFuc2lvbkNvbnRleHQtPmJlaGF2aW9yIDogRGVmYXVsdEV4cGFuc2lvbiB9OwogICAg
ICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwg
c3R5bGUudGFiU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCA3OGM4MTQ1ZDAyYTA2NTI1Mjg5NGRjYTY5ODk1NGY3NGFhMWUxYzVlLi5lYzkzOGZiYTBmN2I3
YmExMmQ1MjkwZjk4YTFmODVkZjAzOWNmNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCkBAIC00MjQsNiArNDI0LDcgQEAgTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSG9yaXoKIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3Qg
TGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgYXV0byYgZm9y
bWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CisgICAgYXV0byYgbGluZUJv
eCA9IGxpbmVDb250ZW50LmxpbmVCb3g7CiAKICAgICBpZiAoIWxpbmVDb250ZW50LmZsb2F0cy5p
c0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRl
eHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpIH07CkBA
IC00MzIsNyArNDMzLDYgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxh
eUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgICAgIGF1
dG8mIGZsb2F0Qm94ID0gZmxvYXRJdGVtLT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxheUJveChmbG9hdEJveCk7CiAgICAg
ICAgICAgICAvLyBTZXQgc3RhdGljIHBvc2l0aW9uIGZpcnN0LgotICAgICAgICAgICAgYXV0byYg
bGluZUJveCA9IGxpbmVDb250ZW50LmxpbmVCb3g7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNl
dFRvcExlZnQoeyBsaW5lQm94LmxvZ2ljYWxMZWZ0KCksIGxpbmVCb3gubG9naWNhbFRvcCgpIH0p
OwogICAgICAgICAgICAgLy8gRmxvYXQgaXQuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRv
cExlZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yRmxvYXQoZmxvYXRCb3gpKTsKQEAgLTQ0
OCw4ICs0NDgsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94
ZXNGb3JMaW5lKGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaQogICAgICAgICBpbml0aWFsQ29u
dGFpbmdCbG9ja1NpemUgPSBnZW9tZXRyeUZvckJveChyb290KCkuaW5pdGlhbENvbnRhaW5pbmdC
bG9jaygpLCBFc2NhcGVSZWFzb246OlN0cm9rZU92ZXJmbG93TmVlZHNWaWV3cG9ydEdlb21ldHJ5
KS5jb250ZW50Qm94KCkuc2l6ZSgpOwogICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0
aW5nU3RhdGUuZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBhdXRvIGxpbmVJbmRl
eCA9IGlubGluZUNvbnRlbnQubGluZUJveGVzLnNpemUoKTsKLSAgICBpbmxpbmVDb250ZW50Lmxp
bmVCb3hlcy5hcHBlbmQobGluZUNvbnRlbnQubGluZUJveCk7Ci0gICAgYXV0byBsaW5lSW5rT3Zl
cmZsb3cgPSBsaW5lQ29udGVudC5saW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygpOworICAgIGF1
dG8gbGluZUlua092ZXJmbG93ID0gbGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKTsKICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbGFzdFRleHRJdGVtSW5kZXg7CiAgICAgLy8gQ29tcHV0ZSBib3gg
ZmluYWwgZ2VvbWV0cnkuCiAgICAgYXV0byYgbGluZVJ1bnMgPSBsaW5lQ29udGVudC5ydW5MaXN0
OwpAQCAtNTQwLDcgKzUzOSw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERp
c3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSB0cmFpbGluZyB0ZXh0IHJ1biBnZXRzIGEgaHlwaGVuIHdoZW4gaXQgbmVlZHMg
b25lLgogICAgIGlmIChsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudCAmJiBsaW5lQ29udGVudC5w
YXJ0aWFsQ29udGVudC0+dHJhaWxpbmdDb250ZW50TmVlZHNIeXBoZW4pCiAgICAgICAgIGlubGlu
ZUNvbnRlbnQucnVuc1sqbGFzdFRleHRJdGVtSW5kZXhdLnRleHRDb250ZXh0KCktPnNldE5lZWRz
SHlwaGVuKCk7Ci0gICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMubGFzdCgpLnNldElua092ZXJm
bG93KGxpbmVJbmtPdmVyZmxvdyk7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgdGhlIGxv
Z2ljYWwgdG8gcGh5c2ljYWwgdHJhbnNsYXRlIHNob3VsZCBoYXBwZW4uCisgICAgYXV0byYgYmFz
ZWxpbmUgPSBsaW5lQm94LmJhc2VsaW5lKCk7CisgICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMu
YXBwZW5kKERpc3BsYXk6OkxpbmVCb3ggeyBsaW5lQm94LmxvZ2ljYWxSZWN0KCksIGxpbmVCb3gu
c2Nyb2xsYWJsZU92ZXJmbG93KCksIGxpbmVJbmtPdmVyZmxvdywgeyBiYXNlbGluZS5hc2NlbnQo
KSwgYmFzZWxpbmUuZGVzY2VudCgpIH0sIGxpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSwgbGluZUJv
eC5pc0NvbnNpZGVyZWRFbXB0eSgpIH0pOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjppbnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEludmFsaWRhdGlvblN0YXRlJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCA0OTM2
NGZlODIzNTU4MmEyMWQyMjBkMzU0ZjJlN2VkNzgxZjUwMTI4Li5lNDE1NmIzYTRjYzg1ZGY1NDY2
MTY1YzZmMTEwY2ZhNzFlZGRkMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwCkBAIC04MywxMiArODMsMTIgQEAgTGluZUJ1aWxkZXI6OkNvbnN0cmFp
bnRzOjpIZWlnaHRBbmRCYXNlbGluZSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjps
aW4KICAgICBhdXRvIGxpbmVIZWlnaHQgPSBmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmxpbmVIZWln
aHQoKTsKICAgICBpZiAobGluZUhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAg
ICAgICBhdXRvIGluaXRpYWxCYXNlbGluZU9mZnNldCA9IExpbmVCdWlsZGVyOjpoYWxmTGVhZGlu
Z01ldHJpY3MoZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmljcygpLCAwX2x1KS5hc2Nl
bnQoKTsKLSAgICAgICAgcmV0dXJuIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQmFz
ZWxpbmVPZmZzZXQsIERpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIHsgc3RydXRCYXNlbGluZU9m
ZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2VsaW5lT2Zmc2V0IH0gfTsKKyAgICAgICAgcmV0
dXJuIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIExpbmVC
b3g6OkJhc2VsaW5lIHsgc3RydXRCYXNlbGluZU9mZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJh
c2VsaW5lT2Zmc2V0IH0gfTsKICAgICB9CiAgICAgLy8gRklYTUU6IFRoZSBvbmx5IHJlYXNvbiB3
aHkgd2UgdXNlIGludFZhbHVlKCkgaGVyZSBpcyB0byBtYXRjaCBjdXJyZW50IGlubGluZSB0cmVl
IChpbnRlZ3JhbCliZWhhdmlvci4KICAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxMaW5lSGVp
Z2h0ID0gbGluZUhlaWdodC5pbnRWYWx1ZSgpOwogICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5lT2Zm
c2V0ID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5nUm9vdC5zdHls
ZSgpLmZvbnRNZXRyaWNzKCksIGluaXRpYWxMaW5lSGVpZ2h0KS5hc2NlbnQoKTsKLSAgICByZXR1
cm4geyBpbml0aWFsTGluZUhlaWdodCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBEaXNwbGF5OjpM
aW5lQm94OjpCYXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0cnV0SGVpZ2h0IC0gc3Ry
dXRCYXNlbGluZU9mZnNldCB9IH07CisgICAgcmV0dXJuIHsgaW5pdGlhbExpbmVIZWlnaHQsIGlu
aXRpYWxCYXNlbGluZU9mZnNldCwgTGluZUJveDo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zm
c2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
Qm94LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTA2MGIyOGZlMWI4YjYwMjIyMDI5NDcwZmZhNTc4ZDIyM2QzMDQ2
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCb3guaApAQCAtMCwwICsxLDI0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNs
dWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheUlubGluZVJlY3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIExpbmVCb3ggewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0cnVjdCBCYXNlbGlu
ZSB7CisgICAgICAgIEJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlv
dXRVbml0IGRlc2NlbnQpOworICAgICAgICBCYXNlbGluZSgpID0gZGVmYXVsdDsKKworICAgICAg
ICB2b2lkIHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKKyAgICAgICAgdm9pZCBzZXREZXNj
ZW50KElubGluZUxheW91dFVuaXQpOworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCgpICsgZGVz
Y2VudCgpOyB9CisgICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50KCkgY29uc3Q7CisgICAg
ICAgIElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyNp
ZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxzZSB9
OworICAgICAgICBib29sIG1faGFzVmFsaWREZXNjZW50IHsgZmFsc2UgfTsKKyNlbmRpZgorICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYXNjZW50IHsgMCB9OworICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IG1fZGVzY2VudCB7IDAgfTsKKyAgICB9OworCisgICAgTGluZUJveChjb25zdCBEaXNw
bGF5OjpJbmxpbmVSZWN0JiwgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2Vs
aW5lT2Zmc2V0KTsKKyAgICBMaW5lQm94KCkgPSBkZWZhdWx0OworCisgICAgY29uc3QgRGlzcGxh
eTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAg
ICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQorCisgICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0KKyAgICBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9
CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LnRvcCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CisK
KyAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKKyAgICAvLyBCYXNlbGluZSBv
ZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5l
Y2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICAvLworICAgIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0gICAgbGluZSBsb2dpY2FsIHRvcCAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9wIGFs
aWduKQorICAgIC8vICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXiAgICAgICAgICAgfAorICAgIC8vICAgXiAgICAgICAgIHwgYmFzZWxp
bmUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCBiYXNlbGluZSBvZmZzZXQK
KyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgIHwKKyAgICAvLyAgIHwgYXNjZW50ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgYXNjZW50ICAgIHwKKyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgIHYKKyAgICAvLyAgIHYgICAgICAgICB2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxp
bmUKKyAgICAvLyAgIC0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lICAgICAgICAgICAgICAgICAg
IF4KKyAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgZGVzY2VudAorICAgIC8vICAgfCBkZXNjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdgorICAgIC8vICAgdgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGlu
ZSBsb2dpY2FsIGJvdHRvbSAgLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIElubGluZUxheW91dFVu
aXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZH
cmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0QXNjZW50SWZHcmVhdGVyKElu
bGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlv
dXRVbml0KTsKKworICAgIHZvaWQgcmVzZXRCYXNlbGluZSgpOworICAgIHZvaWQgcmVzZXREZXNj
ZW50KCkgeyBtX2Jhc2VsaW5lLnNldERlc2NlbnQoMF9sdSk7IH0KKworICAgIHZvaWQgc2V0TG9n
aWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9yZWN0LnNldEhl
aWdodChsb2dpY2FsSGVpZ2h0KTsgfQorCisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0SWZHcmVh
dGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9
CisKKyAgICB2b2lkIHNldFNjcm9sbGFibGVPdmVyZmxvdyhjb25zdCBEaXNwbGF5OjpJbmxpbmVS
ZWN0JiByZWN0KSB7IG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVjdDsgfQorCisgICAgdm9pZCBt
b3ZlSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0Lm1vdmVIb3Jp
em9udGFsbHkoZGVsdGEpOyB9CisKKyAgICB2b2lkIGV4cGFuZEhvcml6b250YWxseShJbmxpbmVM
YXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5leHBhbmRIb3Jpem9udGFsbHkoZGVsdGEpOyB9Cisg
ICAgdm9pZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBh
bmRIb3Jpem9udGFsbHkoLWRlbHRhKTsgfQorCisgICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElu
bGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZFZlcnRpY2FsbHkoZGVsdGEpOyB9
CisgICAgdm9pZCBzaHJpbmtWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhw
YW5kVmVydGljYWxseSgtZGVsdGEpOyB9CisKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
Q1NTMjIvdmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0aW5nCisgICAgLy8gTGluZSBib3hlcyB0
aGF0IGNvbnRhaW4gbm8gdGV4dCwgbm8gcHJlc2VydmVkIHdoaXRlIHNwYWNlLCBubyBpbmxpbmUg
ZWxlbWVudHMgd2l0aCBub24temVybyBtYXJnaW5zLCBwYWRkaW5nLCBvciBib3JkZXJzLAorICAg
IC8vIGFuZCBubyBvdGhlciBpbi1mbG93IGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2VzLCBpbmxpbmUg
YmxvY2tzIG9yIGlubGluZSB0YWJsZXMpLCBhbmQgZG8gbm90IGVuZCB3aXRoIGEgcHJlc2VydmVk
IG5ld2xpbmUKKyAgICAvLyBtdXN0IGJlIHRyZWF0ZWQgYXMgemVyby1oZWlnaHQgbGluZSBib3hl
cyBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHRoZSBwb3NpdGlvbnMgb2YgYW55IGVs
ZW1lbnRzIGluc2lkZSBvZiB0aGVtLAorICAgIC8vIGFuZCBtdXN0IGJlIHRyZWF0ZWQgYXMgbm90
IGV4aXN0aW5nIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KKyAgICAvLyBOb3RlIHRoYXQgaXQgZG9l
cyBub3QgbmVjZXNzYXJpbHkgbWVhbiB2aXN1YWxseSBub24tZW1wdHkgbGluZS4gPHNwYW4gc3R5
bGU9ImZvbnQtc2l6ZTogMHB4Ij50aGlzIGlzIHN0aWxsIGNvbnNpZGVyZWQgbm9uLWVtcHR5PC9z
cGFuPgorICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
c2lkZXJlZEVtcHR5OyB9CisgICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0Nv
bnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5
KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KKworcHJpdmF0ZToKKyNpZiBBU1NF
UlRfRU5BQkxFRAorICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07CisjZW5kaWYKKyAgICBEaXNw
bGF5OjpJbmxpbmVSZWN0IG1fcmVjdDsKKyAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fc2Nyb2xs
YWJsZU92ZXJmbG93OworICAgIEJhc2VsaW5lIG1fYmFzZWxpbmU7CisgICAgSW5saW5lTGF5b3V0
VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0IHsgMCB9OworICAgIGJvb2wgbV9pc0NvbnNpZGVyZWRFbXB0
eSB7IHRydWUgfTsKK307CisKK2lubGluZSBMaW5lQm94OjpMaW5lQm94KGNvbnN0IERpc3BsYXk6
OklubGluZVJlY3QmIHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0
VW5pdCBiYXNlbGluZU9mZnNldCkKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV9iYXNlbGlu
ZShiYXNlbGluZSkKKyAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCit7Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmUgPSB0cnVlOworICAgIG1f
aGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQg
TGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQpCit7CisgICAgaWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKK30K
KworaW5saW5lIGNvbnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OjpiYXNlbGluZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7CisgICAgcmV0dXJuIG1fYmFz
ZWxpbmU7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVh
dGVyKElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VOQUJM
RUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlmCisgICAgbV9i
YXNlbGluZU9mZnNldCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zmc2V0LCBtX2Jhc2VsaW5lT2Zmc2V0
KTsKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6c2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxh
eW91dFVuaXQgYXNjZW50KQoreworICAgIGlmIChhc2NlbnQgPCBtX2Jhc2VsaW5lLmFzY2VudCgp
KQorICAgICAgICByZXR1cm47CisgICAgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoYXNjZW50
KTsKKyAgICBtX2Jhc2VsaW5lLnNldEFzY2VudChhc2NlbnQpOworfQorCitpbmxpbmUgdm9pZCBM
aW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgZGVzY2VudCkKK3sK
KyAgICBpZiAoZGVzY2VudCA8IG1fYmFzZWxpbmUuZGVzY2VudCgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9iYXNlbGluZS5zZXREZXNjZW50KGRlc2NlbnQpOworfQorCitpbmxpbmUgSW5saW5l
TGF5b3V0VW5pdCBMaW5lQm94OjpiYXNlbGluZU9mZnNldCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCk7CisgICAgcmV0dXJuIG1fYmFzZWxpbmVPZmZzZXQ7
Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OnJlc2V0QmFzZWxpbmUoKQoreworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKKyNlbmRpZgor
ICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1OworICAgIG1fYmFzZWxpbmUucmVzZXQoKTsKK30K
KworaW5saW5lIExpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFz
Y2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQorICAgIDogbV9hc2NlbnQoYXNjZW50KQor
ICAgICwgbV9kZXNjZW50KGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hh
c1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudChJbmxpbmVM
YXlvdXRVbml0IGFzY2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRB
c2NlbnQgPSB0cnVlOworI2VuZGlmCisgICAgbV9hc2NlbnQgPSBhc2NlbnQ7Cit9CisKK2lubGlu
ZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KElubGluZUxheW91dFVuaXQgZGVz
Y2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1
ZTsKKyNlbmRpZgorICAgIG1fZGVzY2VudCA9IGRlc2NlbnQ7Cit9CisKK2lubGluZSB2b2lkIExp
bmVCb3g6OkJhc2VsaW5lOjpyZXNldCgpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hh
c1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5k
aWYKKyAgICBtX2FzY2VudCA9IDBfbHU7CisgICAgbV9kZXNjZW50ID0gMF9sdTsKK30KKworaW5s
aW5lIElubGluZUxheW91dFVuaXQgTGluZUJveDo6QmFzZWxpbmU6OmFzY2VudCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1faGFzVmFsaWRBc2NlbnQpOworICAgIHJldHVybiBtX2FzY2VudDsKK30K
KworaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveDo6QmFzZWxpbmU6OmRlc2NlbnQoKSBj
b25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkRGVzY2VudCk7CisgICAgcmV0dXJuIG1fZGVz
Y2VudDsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4
NDNlNmE4NzNjZjMzNWEwNTEwNzE0MTI0NDllNGZjZjBkOWI4NmU4Li5hNTY1NWQ1NTg3NjNlNGMz
MTVjNzQ4YTc5MGU0Zjc3OTI0MjkyM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC05
MSw4ICs5MSw4IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWlu
dHMmIGNvbnN0cmFpbnRzKQogICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IHsgfTsKIAogICAgIGF1
dG8gbGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgY29uc3RyYWludHMubG9naWNhbFRv
cExlZnQsIDBfbHUsIGluaXRpYWxMaW5lSGVpZ2h0IH07Ci0gICAgYXV0byBiYXNlbGluZSA9IERp
c3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFs
TGluZUhlaWdodCAtIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OwotICAgIG1fbGluZUJveCA9IERp
c3BsYXk6OkxpbmVCb3ggeyBsaW5lUmVjdCwgYmFzZWxpbmUsIGluaXRpYWxCYXNlbGluZU9mZnNl
dCB9OworICAgIGF1dG8gYmFzZWxpbmUgPSBMaW5lQm94OjpCYXNlbGluZSB7IGluaXRpYWxCYXNl
bGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWlnaHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsK
KyAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsgbGluZVJlY3QsIGJhc2VsaW5lLCBpbml0aWFsQmFz
ZWxpbmVPZmZzZXQgfTsKICAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBjb25zdHJhaW50cy5hdmFp
bGFibGVMb2dpY2FsV2lkdGg7CiAgICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGNvbnN0cmFpbnRz
LmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdDsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIExpbmVCdWls
ZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQgaXNMYXN0TGluZVdpCiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgp
KSB7CiAgICAgICAgICAgICBtX2xpbmVCb3gucmVzZXRCYXNlbGluZSgpOwotICAgICAgICAgICAg
bV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoMF9sdSk7CisgICAgICAgICAgICBtX2xpbmVCb3gu
c2V0TG9naWNhbEhlaWdodCh7IH0pOwogICAgICAgICB9CiAgICAgICAgIC8vIFJlbW92ZSBkZXNj
ZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVt
IGhhdmUgZGVzY2VudC4KICAgICAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCku
bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcobV9ydW5zKSkgewpAQCAtNjU4LDcgKzY1OCw3IEBA
IGJvb2wgTGluZUJ1aWxkZXI6OmlzVmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mIHJ1bikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLURpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIExp
bmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRy
aWNzLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KQorTGluZUJveDo6QmFzZWxp
bmUgTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCiB7CiAgICAgYXV0
byBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKICAgICBhdXRvIGRlc2NlbnQgPSBmb250
TWV0cmljcy5kZXNjZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCA0ZDVjMjUwZDhmNGE1
NmFhOTQ1MDk5OGY2NGYyMzE4M2E0MzE2OGZkLi5hNzc4MzRjMWIwZTY3Yjc5MmMzODk1MzFlNDY2
ZmYyZTgwMmNkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAog
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxh
eUxpbmVCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5UnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
bS5oIgorI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRl
bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RydWN0IEhlaWdodEFuZEJhc2VsaW5lIHsKICAgICAgICAgICAgIElubGluZUxheW91
dFVuaXQgaGVpZ2h0IHsgMCB9OwogICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCB7IDAgfTsKLSAgICAgICAgICAgIE9wdGlvbmFsPERpc3BsYXk6OkxpbmVCb3g6OkJh
c2VsaW5lPiBzdHJ1dDsKKyAgICAgICAgICAgIE9wdGlvbmFsPExpbmVCb3g6OkJhc2VsaW5lPiBz
dHJ1dDsKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0QW5kQmFzZWxpbmU+IGhl
aWdodEFuZEJhc2VsaW5lOwogICAgIH07CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBJ
bmxpbmVMYXlvdXRVbml0IHRyaW1tYWJsZVRyYWlsaW5nV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC53aWR0aCgpOyB9CiAgICAgYm9vbCBpc1RyYWlsaW5n
UnVuRnVsbHlUcmltbWFibGUoKSBjb25zdCB7IHJldHVybiBtX3RyaW1tYWJsZVRyYWlsaW5nQ29u
dGVudC5pc1RyYWlsaW5nUnVuRnVsbHlUcmltbWFibGUoKTsgfQogCi0gICAgY29uc3QgRGlzcGxh
eTo6TGluZUJveCYgbGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveDsgfQorICAgIGNv
bnN0IExpbmVCb3gmIGxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3g7IH0KICAgICB2
b2lkIG1vdmVMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0KTsKICAgICB2b2lkIG1vdmVMb2dp
Y2FsUmlnaHQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRIYXNJbnRydXNpdmVGbG9h
dCgpIHsgbV9oYXNJbnRydXNpdmVGbG9hdCA9IHRydWU7IH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgeyBObywg
WWVzIH07CiAgICAgUnVuTGlzdCBjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgPSBJ
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vKTsKIAotICAgIHN0YXRpYyBEaXNwbGF5OjpM
aW5lQm94OjpCYXNlbGluZSBoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmLCBJ
bmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBzdGF0aWMgTGluZUJveDo6
QmFzZWxpbmUgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiwgSW5saW5lTGF5
b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7CiAKIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94LmxvZ2ljYWxUb3AoKTsg
fQpAQCAtMjExLDEyICsyMTEsMTIgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKICAgICBSdW5MaXN0IG1fcnVu
czsKICAgICBUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgbV90cmltbWFibGVUcmFpbGluZ0NvbnRl
bnQ7Ci0gICAgT3B0aW9uYWw8RGlzcGxheTo6TGluZUJveDo6QmFzZWxpbmU+IG1faW5pdGlhbFN0
cnV0OworICAgIE9wdGlvbmFsPExpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKICAg
ICBJbmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBPcHRpb25h
bDxUZXh0QWxpZ25Nb2RlPiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgYm9vbCBtX2lzSW50
cmluc2ljU2l6aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzSW50cnVzaXZlRmxvYXQgeyBm
YWxzZSB9OwotICAgIERpc3BsYXk6OkxpbmVCb3ggbV9saW5lQm94OworICAgIExpbmVCb3ggbV9s
aW5lQm94OwogICAgIE9wdGlvbmFsPGJvb2w+IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRy
aW1tYWJsZVRyYWlsaW5nQ29udGVudDsKICAgICBib29sIG1fc2hvdWxkSWdub3JlVHJhaWxpbmdM
ZXR0ZXJTcGFjaW5nIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCA5ZjBl
ZGQ4YjJmZDRjNDEyZDZkOWRiM2M3NTdkZWU5NWNiZWY3MWY4Li43NTM1NjU3ZWRkZGNmYzM3YjZm
OTBjNWUyOWVkOWNkYmU4ODFmMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxQYXJ0aWFsQ29udGVudD4gcGFydGlhbENv
bnRlbnQ7CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVJdGVtKj4gZmxvYXRzOwogICAgICAg
ICBjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCBydW5MaXN0OwotICAgICAgICBjb25zdCBEaXNw
bGF5OjpMaW5lQm94IGxpbmVCb3g7CisgICAgICAgIGNvbnN0IExpbmVCb3ggbGluZUJveDsKICAg
ICB9OwogICAgIHN0cnVjdCBJbmxpbmVJdGVtUmFuZ2UgewogICAgICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5jcHAKaW5kZXggMjM4ODY5YzZkNjI0MDgyMDRjZjFhMTk4YjllMjBkNzc5ODRmZTQ1ZC4u
NTc4ZDRkZDA4ODA3OWM5NGRlN2M2ZmQzNjI1ZjM2NTVjYjliN2FhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIExpbmVMYXlvdXQ6
OmxheW91dCgpCiBMYXlvdXRVbml0IExpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkg
Y29uc3QKIHsKICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkaXNwbGF5SW5saW5lQ29udGVudCgpLT5s
aW5lQm94ZXM7Ci0gICAgcmV0dXJuIExheW91dFVuaXQgeyBsaW5lQm94ZXMubGFzdCgpLmxvZ2lj
YWxCb3R0b20oKSAtIGxpbmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKSB9OworICAgIHJldHVy
biBMYXlvdXRVbml0IHsgbGluZUJveGVzLmxhc3QoKS5ib3R0b20oKSAtIGxpbmVCb3hlcy5maXJz
dCgpLnRvcCgpIH07CiB9CiAKIHNpemVfdCBMaW5lTGF5b3V0OjpsaW5lQ291bnQoKSBjb25zdApA
QCAtMTM3LDcgKzEzNyw3IEBAIExheW91dFVuaXQgTGluZUxheW91dDo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAogICAgIH0KIAogICAgIGF1dG8mIGZpcnN0TGluZUJveCA9IGlubGluZUNvbnRl
bnQtPmxpbmVCb3hlcy5maXJzdCgpOwotICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChm
aXJzdExpbmVCb3gubG9naWNhbFRvcCgpICsgZmlyc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkp
OworICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChmaXJzdExpbmVCb3gudG9wKCkgKyBm
aXJzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7CiB9CiAKIExheW91dFVuaXQgTGluZUxheW91
dDo6bGFzdExpbmVCYXNlbGluZSgpIGNvbnN0CkBAIC0xNDksNyArMTQ5LDcgQEAgTGF5b3V0VW5p
dCBMaW5lTGF5b3V0OjpsYXN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAgICBhdXRv
JiBsYXN0TGluZUJveCA9IGlubGluZUNvbnRlbnQtPmxpbmVCb3hlcy5sYXN0KCk7Ci0gICAgcmV0
dXJuIExheW91dDo6dG9MYXlvdXRVbml0KGxhc3RMaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxhc3RM
aW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkpOworICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5p
dChsYXN0TGluZUJveC50b3AoKSArIGxhc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkpOwogfQog
CiB2b2lkIExpbmVMYXlvdXQ6OmNvbGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cp
CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICB9CiAKICAg
ICAgICAgYXV0byYgbGluZUJveCA9IGlubGluZUNvbnRlbnQubGluZUJveEZvclJ1bihydW4pOwot
ICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gcGFpbnRPZmZzZXQueSgpICsgbGluZUJveC5s
b2dpY2FsVG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisgICAgICAgIGF1dG8gYmFz
ZWxpbmVPZmZzZXQgPSBwYWludE9mZnNldC55KCkgKyBsaW5lQm94LnRvcCgpICsgbGluZUJveC5i
YXNlbGluZU9mZnNldCgpOwogCiAgICAgICAgIGF1dG8gYmVoYXZpb3IgPSB0ZXh0Q29udGV4dC5l
eHBhbnNpb24oKSA/IHRleHRDb250ZXh0LmV4cGFuc2lvbigpLT5iZWhhdmlvciA6IERlZmF1bHRF
eHBhbnNpb247CiAgICAgICAgIGF1dG8gaG9yaXpvbnRhbEV4cGFuc2lvbiA9IHRleHRDb250ZXh0
LmV4cGFuc2lvbigpID8gdGV4dENvbnRleHQuZXhwYW5zaW9uKCktPmhvcml6b250YWxFeHBhbnNp
b24gOiAwOwpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAg
U3RyaW5nIHRleHRXaXRoSHlwaGVuOwogICAgICAgICBpZiAodGV4dENvbnRleHQubmVlZHNIeXBo
ZW4oKSkKICAgICAgICAgICAgIHRleHRXaXRoSHlwaGVuID0gbWFrZVN0cmluZyh0ZXh0Q29udGV4
dC5jb250ZW50KCksIHN0eWxlLmh5cGhlblN0cmluZygpKTsKLSAgICAgICAgVGV4dFJ1biB0ZXh0
UnVuIHsgIXRleHRXaXRoSHlwaGVuLmlzRW1wdHkoKSA/IHRleHRXaXRoSHlwaGVuIDogdGV4dENv
bnRleHQuY29udGVudCgpLCBydW4ubGVmdCgpIC0gbGluZUJveC5sb2dpY2FsTGVmdCgpLCBob3Jp
em9udGFsRXhwYW5zaW9uLCBiZWhhdmlvciB9OworICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAh
dGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGV4dC5j
b250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94LmxlZnQoKSwgaG9yaXpvbnRhbEV4cGFuc2lv
biwgYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBz
ZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAgICAgICAgRmxvYXRQb2ludCB0ZXh0
T3JpZ2luIHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChi
YXNlbGluZU9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCAy
ZmJiYjljNDQ0NmEwZmRiYjkyN2JkZTAyOTdiOTM5MDAxYzMyZmY0Li5jMTQ2MjJlOTBjMzlmNzQz
MjQwOTFiMWVjZDY4MWZkNjkxOWI0NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMzAsNyArMzMwLDcg
QEAgc3RhdGljIHZvaWQgb3V0cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKIAogICAgIHN0cmVhbSA8PCAibGluZXMgYXJlIC0+
ICI7CiAgICAgZm9yIChhdXRvJiBsaW5lQm94IDogbGluZUJveGVzKQotICAgICAgICBzdHJlYW0g
PDwgIlsiIDw8IGxpbmVCb3gubG9naWNhbExlZnQoKSA8PCAiLCIgPDwgbGluZUJveC5sb2dpY2Fs
VG9wKCkgPDwgIiAiIDw8IGxpbmVCb3gubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGxpbmVCb3gu
bG9naWNhbEhlaWdodCgpIDw8ICJdICI7CisgICAgICAgIHN0cmVhbSA8PCAiWyIgPDwgbGluZUJv
eC5sZWZ0KCkgPDwgIiwiIDw8IGxpbmVCb3gudG9wKCkgPDwgIiAiIDw8IGxpbmVCb3gud2lkdGgo
KSA8PCAieCIgPDwgbGluZUJveC5oZWlnaHQoKSA8PCAiXSAiOwogICAgIHN0cmVhbS5uZXh0TGlu
ZSgpOwogCiAgICAgZm9yIChhdXRvJiBkaXNwbGF5UnVuIDogZGlzcGxheVJ1bnMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389007</attachid>
            <date>2020-01-28 08:51:04 -0800</date>
            <delta_ts>2020-01-28 08:51:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206861-20200128085104.patch</filename>
            <type>text/plain</type>
            <size>46940</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2ZmE4MGRmNjU1ZTkx
NDFlNzk4OTBhMWNlYjM1MTY3NTQxMjk3OC4uNTk1NmQ0Nzk4NGQ3ZWU2OTJiMTUxNTUxMjkyNWU2
OGUyNTg1YTUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0wMS0yNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gRGVjb3Vw
bGUgRGlzcGxheTo6TGluZUJveCBhbmQgTGF5b3V0OjpMaW5lQm94CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU4OTQ1Mjg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgor
CisgICAgICAgIFdlIHNob3VsZCBub3QgbWl4IGxvZ2ljYWwgYW5kIHBoeXNpY2FsIGNvb3JkaW5h
dGVzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0
Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlMaW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpC
YXNlbGluZTo6YXNjZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVC
b3g6OkJhc2VsaW5lOjpkZXNjZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxpbmVCb3g6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJv
eDo6bGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpyaWdo
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojp0b3AgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6Ym90dG9tIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OndpZHRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpMaW5lQm94OjpiYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94OjpiYXNlbGluZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpMaW5lQm94Ojppc0NvbnNpZGVyZWRFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsVG9wTGVmdCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsTGVmdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2Fs
UmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJv
eDo6bG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpMaW5lQm94Ojpsb2dpY2FsQm90dG9tIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkxpbmVCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsSGVpZ2h0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlc2V0RGVzY2VudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRMb2dpY2Fs
VG9wTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpz
ZXRMb2dpY2FsSGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OnNldExvZ2ljYWxXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpMaW5lQm94OjpzZXRTY3JvbGxhYmxlT3ZlcmZsb3cpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0SW5rT3ZlcmZsb3cpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bW92ZUhvcml6b250YWxseSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpleHBhbmRIb3Jpem9udGFs
bHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2hyaW5r
SG9yaXpvbnRhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVC
b3g6OmV4cGFuZFZlcnRpY2FsbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6TGluZUJveDo6c2hyaW5rVmVydGljYWxseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWRFbXB0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWROb25FbXB0eSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRMb2dpY2Fs
SGVpZ2h0SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlc2V0QmFzZWxp
bmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6QmFzZWxp
bmU6OnNldEFzY2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5l
Qm94OjpCYXNlbGluZTo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpwYWludElubGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OlF1aXJrczo6bGluZUhlaWdodENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzY3JvbGxhYmxlT3ZlcmZsb3cgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxUb3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsQm90dG9tIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFdpZHRoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbEhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnJlc2V0RGVzY2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRTY3JvbGxhYmxlT3ZlcmZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojptb3ZlSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6ZXhwYW5kSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6c2hyaW5rSG9yaXpvbnRhbGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6ZXhwYW5kVmVydGljYWxseSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua1ZlcnRpY2FsbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94Ojppc0NvbnNpZGVyZWRFbXB0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29uc2lkZXJlZEVtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0SXNDb25zaWRlcmVkTm9uRW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpMaW5lQm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YmFzZWxpbmVPZmZzZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpyZXNldEJhc2VsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OkJhc2VsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OmFzY2VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpkZXNjZW50IGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyk6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbnRlbnRMb2dpY2FsUmlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGluZUJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb250ZW50TG9naWNh
bFdpZHRoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5
b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250
ZXh0OjpsYXlvdXRMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5l
TGF5b3V0Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpmaXJzdExpbmVCYXNlbGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGFzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0SW5s
aW5lUnVucyk6CisKIDIwMjAtMDEtMjcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEFkZCBzdXBwb3J0IGZvciB0aGUgb3B0aW9u
cyBwYXJhbWV0ZXIgdG8gZ2V0QW5pbWF0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzExZTc2MmZmOGRkYTYxYTQwZTlm
YWRmMGJkZmM4YjFmMjNhMmUyZi4uZjhmZmM0NTU3MmEyZGZlNDk5ZTI0MGY2MjZkNmFjM2IxZjE2
ZGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjA3Miw2ICsyMDcyLDcgQEAKIAkJNkY5OTVBM0ExQTcwODMzNzAwQTczNUY0
IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9OwogCQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyog
SlNCZWZvcmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZl
bnQuaCAqLzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgz
RkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGlu
ZUJveEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGQjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjQ3RTYz
MjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIERp
c3BsYXlMaW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNkZCNUUyMTQyMjFGMjQ1MzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNUUy
MTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQ0UxQTFBMjI2MThBQkQw
MDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RkNFMUExODIyNjE4QUIzMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NDA4LDYg
Kzk0MDksNyBAQAogCQk2RkIxMUI1OTIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFV0aWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkZCMTFCNUIyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRVdGlsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMjJFMzAyMzAwOTdFMzAwQzIwODY2IC8qIFRhYmxl
R3JpZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZUdyaWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3hCdWlsZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUxpbmVCb3hCdWlsZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNC
MCAvKiBEaXNwbGF5TGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkI1RTIxMjIy
MUYyNDQ3MDAzOTg5Q0YgLyogQ29udGVudENoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RkJCODYwNTIwQjQ2NEI2MDBEQUQ5MzggLyogRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODM5LDYgKzE2ODQxLDcgQEAKIAkJCQkxMTVDRkE3
QzIwOEI4RTEwMDAxRTY5OTEgLyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggKi8sCiAJCQkJNkY3
QjhDRUMyMzYyNkU2NjAwQzlGRjE1IC8qIElubGluZUl0ZW0uY3BwICovLAogCQkJCTZGRTdDRkEw
MjE3N0VFRjEwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggKi8sCisJCQkJNkZCMjQwMDMyM0RGRjEy
NzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggKi8sCiAJCQkJNkZFMTk4MTMyMTc4
Mzk3QjAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmNwcCAqLywKIAkJCQk2RkUxOTgxNTIx
NzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuaCAqLywKIAkJCQk2RjBDRDY5MjIy
OUVEMzE5MDBDNTk5NEUgLyogSW5saW5lTGluZUJ1aWxkZXIuY3BwICovLApAQCAtMzA0NTEsNiAr
MzA0NTQsNyBAQAogCQkJCTExNUNGQTdFMjA4QjhFMTAwMDFFNjk5MSAvKiBJbmxpbmVGb3JtYXR0
aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGRTdDRkEyMjE3N0VFRjIwMDVCMTU3MyAv
KiBJbmxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U3ODkxNjExMjBENjA4MDA2MEVD
RTUgLyogSW5saW5lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQjI0MDA1MjNERkYx
MjgwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGluZUJ1aWxkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYwRTUwMjM5OTk0MjEwMDE1MTJBNyAvKiBJbmxpbmVT
b2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZjZhNTk3YmViMDMw
NDNjMTZlZTc0YzQyYzI1MzhjNzU2YzRjNTM2Zi4uZDBmMjNmMzQ0ZTZmODU2MTcwYWM0NDZjZDEz
YjI0N2RkYTkxOWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTM2LDggKzEzNiw4IEBAIExheW91dFVuaXQgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRl
eHRSb290KGNvCiAgICAgICAgIGF1dG8mIGxpbmVCb3hlcyA9IGxheW91dFN0YXRlLmVzdGFibGlz
aGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290Q29udGFpbmVyKS5kaXNwbGF5
SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFp
bmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1w
dHkoKSk7Ci0gICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKTsKLSAg
ICAgICAgYm90dG9tID0gbGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90dG9tKCk7CisgICAgICAg
IHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLnRvcCgpOworICAgICAgICBib3R0b20gPSBsaW5lQm94
ZXMubGFzdCgpLmJvdHRvbSgpOwogICAgIH0gZWxzZSBpZiAoZm9ybWF0dGluZ1Jvb3RDb250YWlu
ZXIuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwgZm9ybWF0dGluZ1Jvb3RD
b250YWluZXIuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkgfHwgZm9ybWF0dGlu
Z1Jvb3RDb250YWluZXIuaXNEb2N1bWVudEJveCgpKSB7CiAgICAgICAgIGlmIChmb3JtYXR0aW5n
Um9vdENvbnRhaW5lci5oYXNJbkZsb3dDaGlsZCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBmaXJz
dEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmZvcm1hdHRp
bmdSb290Q29udGFpbmVyLmZpcnN0SW5GbG93Q2hpbGQoKSwgRXNjYXBlUmVhc29uOjpOZWVkc0dl
b21ldHJ5RnJvbUVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBjYWQ4YjE4MDcxMTU1NzBjNWFh
YmE3NzVkNjFmYTMwZTdhMjM5YjYuLjQ1YmY1Y2NmMjIxYmM0MTgwZTU3MDlkMTYxOTJiNDY0OGU0
MWZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQKICAgICAgICAgICAgIGF1
dG8mIGxpbmVCb3hlcyA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5n
U3RhdGUobGF5b3V0Q29udGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7
CiAgICAgICAgICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2VuZXJhdGUgb25lIGxpbmUu
IAogICAgICAgICAgICAgQVNTRVJUKCFsaW5lQm94ZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAg
IHJldHVybiB7IHRvTGF5b3V0VW5pdChsaW5lQm94ZXMubGFzdCgpLmxvZ2ljYWxCb3R0b20oKSkg
LSBib3JkZXJBbmRQYWRkaW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAg
IHJldHVybiB7IHRvTGF5b3V0VW5pdChsaW5lQm94ZXMubGFzdCgpLmJvdHRvbSgpKSAtIGJvcmRl
ckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNl
ZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRv
bSBtYXJnaW4uLi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJl
ZS9EaXNwbGF5TGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlMaW5lQm94LmgKaW5kZXggMDRmNjQ3NDk5OTVlNDliOTdmNWNkNDAwMGY0MTZhMDU2MDk3
M2RjOC4uOGZmZTA2NzM2YjkzNjVjOTUyNmE2MzUzMmI0MWU5ZjU5MzMyMGFiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
Ci0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlJbmxpbmVSZWN0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDQ2ICszNywzNCBAQCBjbGFzcyBMaW5lQm94
IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQmFzZWxpbmUgewogICAgICAgICBCYXNlbGluZShJbmxp
bmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KTsKLSAgICAgICAg
QmFzZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgdm9pZCBzZXRBc2NlbnQoSW5saW5lTGF5
b3V0VW5pdCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKLQot
ICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBhc2NlbnQoKSArIGRlc2NlbnQoKTsgfQotICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGFzY2VudCgpIGNvbnN0OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQoKSBjb25zdDsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2FzY2VudDsgfQorICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQoKSBjb25z
dCB7IHJldHVybiBtX2Rlc2NlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAgICAgYm9vbCBtX2hhc1ZhbGlkQXNjZW50IHsgZmFsc2UgfTsKLSAgICAgICAgYm9v
bCBtX2hhc1ZhbGlkRGVzY2VudCB7IGZhbHNlIH07Ci0jZW5kaWYKLSAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBtX2FzY2VudDsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Rlc2NlbnQ7Cisg
ICAgICAgIElubGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07CisgICAgICAgIElubGluZUxh
eW91dFVuaXQgbV9kZXNjZW50IHsgMCB9OwogICAgIH07CiAKLSAgICBMaW5lQm94KGNvbnN0IElu
bGluZVJlY3QmLCBjb25zdCBCYXNlbGluZSYsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZz
ZXQpOwotICAgIExpbmVCb3goKSA9IGRlZmF1bHQ7CisgICAgTGluZUJveChjb25zdCBJbmxpbmVS
ZWN0JiwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBJbmxpbmVS
ZWN0JiBpbmtPdmVyZmxvdywgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2Vs
aW5lT2Zmc2V0LCBib29sIGlzQ29uc2lkZXJlZEVtcHR5KTsKIAotICAgIGNvbnN0IElubGluZVJl
Y3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgY29uc3QgSW5s
aW5lUmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0IElubGlu
ZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZU92
ZXJmbG93OyB9CiAgICAgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3coKSBjb25zdCB7IHJl
dHVybiBtX2lua092ZXJmbG93OyB9CiAKLSAgICBJbmxpbmVMYXlvdXRQb2ludCBsb2dpY2FsVG9w
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50b3BMZWZ0KCk7IH0KLSAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmxlZnQoKTsgfQotICAg
IElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJp
Z2h0KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVy
biBtX3JlY3QudG9wKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oKSBj
b25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxl
ZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubGVmdCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5p
dCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9CisgICAgSW5saW5lTGF5
b3V0VW5pdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7IH0KKyAgICBJbmxpbmVM
YXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0b20oKTsgfQogCi0g
ICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qu
d2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CiAKLSAgICBjb25zdCBCYXNl
bGluZSYgYmFzZWxpbmUoKSBjb25zdDsKLSAgICAvLyBCYXNlbGluZSBvZmZzZXQgZnJvbSBsaW5l
IGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFs
IHRvIGFzY2VudC4KKyAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVy
biBtX2Jhc2VsaW5lOyB9CisgICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZyb20gbGluZSB0b3AuIE5v
dGUgdGhhdCBvZmZzZXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gYXNjZW50LgogICAg
IC8vCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwgdG9wICAgICAt
LS0tLS0tLS0tLS0tLS0tLS0tICh0b3AgYWxpZ24pCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LSAgICAgICAgbGluZSB0b3AgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICh0b3AgYWxpZ24p
CiAgICAgLy8gICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBeCiAgICAgLy8gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBeICAgICAgICAgICB8CiAgICAgLy8gICBeICAgICAgICAgfCBiYXNlbGluZSBv
ZmZzZXQgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IGJhc2VsaW5lIG9mZnNldApAQCAt
ODksMTYzICs3NiwzMyBAQCBwdWJsaWM6CiAgICAgLy8gICBeICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NlbnQKICAgICAvLyAgIHwgZGVzY2VudCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKICAgICAvLyAgIHYKLSAgICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCBib3R0b20gIC0tLS0tLS0tLS0tLS0tLS0t
LS0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAgICB2b2lk
IHNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAgICB2b2lkIHNldERlc2Nl
bnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0KLSAgICB2b2lkIHJlc2V0QmFzZWxpbmUo
KTsKLSAgICB2b2lkIHJlc2V0RGVzY2VudCgpIHsgbV9iYXNlbGluZS5zZXREZXNjZW50KDBfbHUp
OyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxUb3BMZWZ0KGNvbnN0IElubGluZUxheW91dFBvaW50
JiBsb2dpY2FsVG9wTGVmdCkgeyBtX3JlY3Quc2V0VG9wTGVmdChsb2dpY2FsVG9wTGVmdCk7IH0K
LSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
KSB7IG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KLQotICAgIHZvaWQgc2V0TG9n
aWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAgICB2b2lkIHNldExvZ2lj
YWxXaWR0aChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkgeyBtX3JlY3Quc2V0V2lkdGgo
bG9naWNhbFdpZHRoKTsgfQotCi0gICAgdm9pZCBzZXRTY3JvbGxhYmxlT3ZlcmZsb3coY29uc3Qg
SW5saW5lUmVjdCYgcmVjdCkgeyBtX3Njcm9sbGFibGVPdmVyZmxvdyA9IHJlY3Q7IH0KLSAgICB2
b2lkIHNldElua092ZXJmbG93KGNvbnN0IElubGluZVJlY3QmIHJlY3QpIHsgbV9pbmtPdmVyZmxv
dyA9IHJlY3Q7IH0KLQotICAgIHZvaWQgbW92ZUhvcml6b250YWxseShJbmxpbmVMYXlvdXRVbml0
IGRlbHRhKSB7IG1fcmVjdC5tb3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQotCi0gICAgdm9pZCBl
eHBhbmRIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3QuZXhwYW5k
SG9yaXpvbnRhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5rSG9yaXpvbnRhbGx5KElubGlu
ZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kSG9yaXpvbnRhbGx5KC1kZWx0YSk7IH0KLQotICAg
IHZvaWQgZXhwYW5kVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5l
eHBhbmRWZXJ0aWNhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5rVmVydGljYWxseShJbmxp
bmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZFZlcnRpY2FsbHkoLWRlbHRhKTsgfQotCi0gICAg
Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRtbCNpbmxpbmUtZm9ybWF0
dGluZwotICAgIC8vIExpbmUgYm94ZXMgdGhhdCBjb250YWluIG5vIHRleHQsIG5vIHByZXNlcnZl
ZCB3aGl0ZSBzcGFjZSwgbm8gaW5saW5lIGVsZW1lbnRzIHdpdGggbm9uLXplcm8gbWFyZ2lucywg
cGFkZGluZywgb3IgYm9yZGVycywKLSAgICAvLyBhbmQgbm8gb3RoZXIgaW4tZmxvdyBjb250ZW50
IChzdWNoIGFzIGltYWdlcywgaW5saW5lIGJsb2NrcyBvciBpbmxpbmUgdGFibGVzKSwgYW5kIGRv
IG5vdCBlbmQgd2l0aCBhIHByZXNlcnZlZCBuZXdsaW5lCi0gICAgLy8gbXVzdCBiZSB0cmVhdGVk
IGFzIHplcm8taGVpZ2h0IGxpbmUgYm94ZXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBkZXRlcm1pbmlu
ZyB0aGUgcG9zaXRpb25zIG9mIGFueSBlbGVtZW50cyBpbnNpZGUgb2YgdGhlbSwKLSAgICAvLyBh
bmQgbXVzdCBiZSB0cmVhdGVkIGFzIG5vdCBleGlzdGluZyBmb3IgYW55IG90aGVyIHB1cnBvc2Uu
Ci0gICAgLy8gTm90ZSB0aGF0IGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdmlzdWFsbHkg
bm9uLWVtcHR5IGxpbmUuIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDBweCI+dGhpcyBpcyBzdGls
bCBjb25zaWRlcmVkIG5vbi1lbXB0eTwvc3Bhbj4KKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
ICAgICAgIGxpbmUgYm90dG9tICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlbGluZU9mZnNl
dDsgfQogICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
c2lkZXJlZEVtcHR5OyB9Ci0gICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0Nv
bnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5
KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07Ci0jZW5kaWYKICAgICBJbmxp
bmVSZWN0IG1fcmVjdDsKICAgICBJbmxpbmVSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93OwogICAg
IElubGluZVJlY3QgbV9pbmtPdmVyZmxvdzsKICAgICBCYXNlbGluZSBtX2Jhc2VsaW5lOwotICAg
IElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZU9mZnNldDsKKyAgICBJbmxpbmVMYXlvdXRVbml0
IG1fYmFzZWxpbmVPZmZzZXQgeyAwIH07CiAgICAgYm9vbCBtX2lzQ29uc2lkZXJlZEVtcHR5IHsg
dHJ1ZSB9OwogfTsKIAotaW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5saW5lUmVjdCYg
cmVjdCwgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5l
T2Zmc2V0KQoraW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5saW5lUmVjdCYgcmVjdCwg
Y29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBJbmxpbmVSZWN0JiBp
bmtPdmVyZmxvdywgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGJh
c2VsaW5lT2Zmc2V0LCBib29sIGlzQ29uc2lkZXJlZEVtcHR5KQogICAgIDogbV9yZWN0KHJlY3Qp
CisgICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhzY3JvbGxhYmxlT3ZlcmZsb3cpCisgICAgLCBt
X2lua092ZXJmbG93KGlua092ZXJmbG93KQogICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkKICAg
ICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCisgICAgLCBtX2lzQ29uc2lkZXJl
ZEVtcHR5KGlzQ29uc2lkZXJlZEVtcHR5KQogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9o
YXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0
cnVlOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIExpbmVCb3g6OnNldExvZ2ljYWxIZWlnaHRJ
ZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQotewotICAgIGlmIChsb2dp
Y2FsSGVpZ2h0IDw9IG1fcmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcmVj
dC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7Ci19Ci0KLWlubGluZSBjb25zdCBMaW5lQm94OjpC
YXNlbGluZSYgTGluZUJveDo6YmFzZWxpbmUoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1Zh
bGlkQmFzZWxpbmUpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lOwotfQotCi1pbmxpbmUgdm9pZCBM
aW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGJhc2Vs
aW5lT2Zmc2V0KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEJhc2VsaW5l
T2Zmc2V0ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYmFzZWxpbmVPZmZzZXQgPSBzdGQ6Om1heChi
YXNlbGluZU9mZnNldCwgbV9iYXNlbGluZU9mZnNldCk7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVC
b3g6OnNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKLXsKLSAgICBp
ZiAoYXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNl
dEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7Ci0gICAgbV9iYXNlbGluZS5zZXRBc2Nl
bnQoYXNjZW50KTsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6c2V0RGVzY2VudElmR3JlYXRl
cihJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0gICAgaWYgKGRlc2NlbnQgPCBtX2Jhc2Vs
aW5lLmRlc2NlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYmFzZWxpbmUuc2V0RGVzY2Vu
dChkZXNjZW50KTsKLX0KLQotaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveDo6YmFzZWxp
bmVPZmZzZXQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQp
OwotICAgIHJldHVybiBtX2Jhc2VsaW5lT2Zmc2V0OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94
OjpyZXNldEJhc2VsaW5lKCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRC
YXNlbGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jhc2VsaW5lT2Zmc2V0ID0gMF9s
dTsKLSAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7CiB9CiAKIGlubGluZSBMaW5lQm94OjpCYXNlbGlu
ZTo6QmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQsIElubGluZUxheW91dFVuaXQgZGVz
Y2VudCkKICAgICA6IG1fYXNjZW50KGFzY2VudCkKICAgICAsIG1fZGVzY2VudChkZXNjZW50KQog
ewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0gICAg
bV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIExpbmVC
b3g6OkJhc2VsaW5lOjpzZXRBc2NlbnQoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQpCi17Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAg
IG1fYXNjZW50ID0gYXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNlbGluZTo6
c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Rlc2NlbnQg
PSBkZXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQoKQot
ewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0gICAg
bV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9hc2NlbnQgPSAwX2x1Owot
ICAgIG1fZGVzY2VudCA9IDBfbHU7Ci19Ci0KLWlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVC
b3g6OkJhc2VsaW5lOjphc2NlbnQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkQXNj
ZW50KTsKLSAgICByZXR1cm4gbV9hc2NlbnQ7Ci19Ci0KLWlubGluZSBJbmxpbmVMYXlvdXRVbml0
IExpbmVCb3g6OkJhc2VsaW5lOjpkZXNjZW50KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9oYXNW
YWxpZERlc2NlbnQpOwotICAgIHJldHVybiBtX2Rlc2NlbnQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmluZGV4
IDQyYzIxMjA1MThjYWQ2NmUxZmVkMWZkOTZkNmI3YWNlMTIyMjM1MGUuLjU2Y2Q1OWE1NDNiYTc5
ODAxZjA2YTZjMmM1MTU2ZWRlYjBkYzg3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAtMTI5LDkgKzEyOSw5IEBA
IHN0YXRpYyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IExheW91dFBvaW50IGFic29sdXRlT2ZmCiAgICAgICAgICAgICBhdXRvIGFic29sdXRlTGVmdCA9
IGFic29sdXRlT2Zmc2V0LngoKSArIHJ1bi5sZWZ0KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTog
QWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWludGluZwogICAgICAgICAgICAgYXV0byYgbGluZUJv
eCA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5saW5lQm94Rm9yUnVuKHJ1bik7Ci0gICAgICAgICAg
ICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gYWJzb2x1dGVPZmZzZXQueSgpICsgbGluZUJveC5sb2dp
Y2FsVG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisgICAgICAgICAgICBhdXRvIGJh
c2VsaW5lT2Zmc2V0ID0gYWJzb2x1dGVPZmZzZXQueSgpICsgbGluZUJveC50b3AoKSArIGxpbmVC
b3guYmFzZWxpbmVPZmZzZXQoKTsKICAgICAgICAgICAgIGF1dG8gZXhwYW5zaW9uQ29udGV4dCA9
IHRleHRDb250ZXh0LT5leHBhbnNpb24oKTsKLSAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IFRl
eHRSdW4geyB0ZXh0Q29udGV4dC0+Y29udGVudCgpLCBydW4ubGVmdCgpIC0gbGluZUJveC5sb2dp
Y2FsTGVmdCgpLAorICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4dFJ1biB7IHRleHRDb250
ZXh0LT5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94LmxlZnQoKSwKICAgICAgICAgICAg
ICAgICBleHBhbnNpb25Db250ZXh0ID8gZXhwYW5zaW9uQ29udGV4dC0+aG9yaXpvbnRhbEV4cGFu
c2lvbiA6IDAsCiAgICAgICAgICAgICAgICAgZXhwYW5zaW9uQ29udGV4dCA/IGV4cGFuc2lvbkNv
bnRleHQtPmJlaGF2aW9yIDogRGVmYXVsdEV4cGFuc2lvbiB9OwogICAgICAgICAgICAgdGV4dFJ1
bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA3OGM4MTQ1ZDAyYTA2
NTI1Mjg5NGRjYTY5ODk1NGY3NGFhMWUxYzVlLi5mZjI2ZmU2YzY0OGE5OTg4ZjJmM2I5NTE0NzA2
ZGVmOGMyZmQyN2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00
MjQsNiArNDI0LDcgQEAgTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSG9yaXoKIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRl
eHQ6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiBob3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CisgICAgYXV0byYgbGluZUJveCA9IGxpbmVDb250ZW50
LmxpbmVCb3g7CiAKICAgICBpZiAoIWxpbmVDb250ZW50LmZsb2F0cy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyByb290KCksICp0
aGlzLCBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpIH07CkBAIC00MzIsNyArNDMzLDYg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShj
b25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgICAgIGF1dG8mIGZsb2F0Qm94ID0g
ZmxvYXRJdGVtLT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBm
b3JtYXR0aW5nU3RhdGUuZGlzcGxheUJveChmbG9hdEJveCk7CiAgICAgICAgICAgICAvLyBTZXQg
c3RhdGljIHBvc2l0aW9uIGZpcnN0LgotICAgICAgICAgICAgYXV0byYgbGluZUJveCA9IGxpbmVD
b250ZW50LmxpbmVCb3g7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoeyBsaW5l
Qm94LmxvZ2ljYWxMZWZ0KCksIGxpbmVCb3gubG9naWNhbFRvcCgpIH0pOwogICAgICAgICAgICAg
Ly8gRmxvYXQgaXQuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoZmxvYXRpbmdD
b250ZXh0LnBvc2l0aW9uRm9yRmxvYXQoZmxvYXRCb3gpKTsKQEAgLTQ0OCw4ICs0NDgsNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKGNvbnN0
IExpbmVMYXlvdXRDb250ZXh0OjpMaQogICAgICAgICBpbml0aWFsQ29udGFpbmdCbG9ja1NpemUg
PSBnZW9tZXRyeUZvckJveChyb290KCkuaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpLCBFc2NhcGVS
ZWFzb246OlN0cm9rZU92ZXJmbG93TmVlZHNWaWV3cG9ydEdlb21ldHJ5KS5jb250ZW50Qm94KCku
c2l6ZSgpOwogICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0aW5nU3RhdGUuZW5zdXJl
RGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBhdXRvIGxpbmVJbmRleCA9IGlubGluZUNvbnRl
bnQubGluZUJveGVzLnNpemUoKTsKLSAgICBpbmxpbmVDb250ZW50LmxpbmVCb3hlcy5hcHBlbmQo
bGluZUNvbnRlbnQubGluZUJveCk7Ci0gICAgYXV0byBsaW5lSW5rT3ZlcmZsb3cgPSBsaW5lQ29u
dGVudC5saW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygpOworICAgIGF1dG8gbGluZUlua092ZXJm
bG93ID0gbGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKTsKICAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbGFzdFRleHRJdGVtSW5kZXg7CiAgICAgLy8gQ29tcHV0ZSBib3ggZmluYWwgZ2VvbWV0cnku
CiAgICAgYXV0byYgbGluZVJ1bnMgPSBsaW5lQ29udGVudC5ydW5MaXN0OwpAQCAtNTQwLDcgKzUz
OSw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0Zvckxp
bmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgLy8gTWFrZSBzdXJlIHRoZSB0cmFp
bGluZyB0ZXh0IHJ1biBnZXRzIGEgaHlwaGVuIHdoZW4gaXQgbmVlZHMgb25lLgogICAgIGlmIChs
aW5lQ29udGVudC5wYXJ0aWFsQ29udGVudCAmJiBsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+
dHJhaWxpbmdDb250ZW50TmVlZHNIeXBoZW4pCiAgICAgICAgIGlubGluZUNvbnRlbnQucnVuc1sq
bGFzdFRleHRJdGVtSW5kZXhdLnRleHRDb250ZXh0KCktPnNldE5lZWRzSHlwaGVuKCk7Ci0gICAg
aW5saW5lQ29udGVudC5saW5lQm94ZXMubGFzdCgpLnNldElua092ZXJmbG93KGxpbmVJbmtPdmVy
Zmxvdyk7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgdGhlIGxvZ2ljYWwgdG8gcGh5c2lj
YWwgdHJhbnNsYXRlIHNob3VsZCBoYXBwZW4uCisgICAgYXV0byYgYmFzZWxpbmUgPSBsaW5lQm94
LmJhc2VsaW5lKCk7CisgICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMuYXBwZW5kKHsgbGluZUJv
eC5sb2dpY2FsUmVjdCgpLCBsaW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygpLCBsaW5lSW5rT3Zl
cmZsb3csIHsgYmFzZWxpbmUuYXNjZW50KCksIGJhc2VsaW5lLmRlc2NlbnQoKSB9LCBsaW5lQm94
LmJhc2VsaW5lT2Zmc2V0KCksIGxpbmVCb3guaXNDb25zaWRlcmVkRW1wdHkoKSB9KTsKIH0KIAog
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZShj
b25zdCBJbnZhbGlkYXRpb25TdGF0ZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKaW5kZXggNDkzNjRmZTgyMzU1ODJhMjFkMjIwZDM1NGYyZTdlZDc4MWY1
MDEyOC4uY2VlMTE3YTZkOTJkZmQzZjdmMTRjY2VkOWRiMDhhODFlOGFhMTI2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtODMsMTIgKzgzLDEy
IEBAIExpbmVCdWlsZGVyOjpDb25zdHJhaW50czo6SGVpZ2h0QW5kQmFzZWxpbmUgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluCiAgICAgYXV0byBsaW5lSGVpZ2h0ID0gZm9ybWF0
dGluZ1Jvb3Quc3R5bGUoKS5saW5lSGVpZ2h0KCk7CiAgICAgaWYgKGxpbmVIZWlnaHQuaXNQZXJj
ZW50T3JDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQg
PSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCku
Zm9udE1ldHJpY3MoKSwgMF9sdSkuYXNjZW50KCk7Ci0gICAgICAgIHJldHVybiB7IGluaXRpYWxC
YXNlbGluZU9mZnNldCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBEaXNwbGF5OjpMaW5lQm94OjpC
YXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0cnV0SGVpZ2h0IC0gc3RydXRCYXNlbGlu
ZU9mZnNldCB9IH07CisgICAgICAgIHJldHVybiB7IGluaXRpYWxCYXNlbGluZU9mZnNldCwgaW5p
dGlhbEJhc2VsaW5lT2Zmc2V0LCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUgeyBzdHJ1dEJhc2Vs
aW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogICAgIH0K
ICAgICAvLyBGSVhNRTogVGhlIG9ubHkgcmVhc29uIHdoeSB3ZSB1c2UgaW50VmFsdWUoKSBoZXJl
IGlzIHRvIG1hdGNoIGN1cnJlbnQgaW5saW5lIHRyZWUgKGludGVncmFsKWJlaGF2aW9yLgogICAg
IElubGluZUxheW91dFVuaXQgaW5pdGlhbExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0LmludFZhbHVl
KCk7CiAgICAgYXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBMaW5lQnVpbGRlcjo6aGFsZkxl
YWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgaW5pdGlh
bExpbmVIZWlnaHQpLmFzY2VudCgpOwotICAgIHJldHVybiB7IGluaXRpYWxMaW5lSGVpZ2h0LCBp
bml0aWFsQmFzZWxpbmVPZmZzZXQsIERpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIHsgc3RydXRC
YXNlbGluZU9mZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2VsaW5lT2Zmc2V0IH0gfTsKKyAg
ICByZXR1cm4geyBpbml0aWFsTGluZUhlaWdodCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBMaW5l
Qm94QnVpbGRlcjo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAt
IHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94QnVpbGRlci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveEJ1aWxkZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMDUwOThkYjA1OTc2MTBmZjA0ZDIxN2Y3YmNjYTIwMjBhMWQ3ZDhhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveEJ1aWxkZXIuaApAQCAtMCwwICsxLDI0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNp
bmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheUlubGluZVJlY3QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIExpbmVCb3hC
dWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdHJ1
Y3QgQmFzZWxpbmUgeworICAgICAgICBCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KTsKKyAgICAgICAgQmFzZWxpbmUoKSA9IGRlZmF1bHQ7
CisKKyAgICAgICAgdm9pZCBzZXRBc2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7CisgICAgICAgIHZv
aWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKKworICAgICAgICB2b2lkIHJlc2V0KCk7
CisKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2Nl
bnQoKSArIGRlc2NlbnQoKTsgfQorICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNv
bnN0OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQoKSBjb25zdDsKKworICAgIHBy
aXZhdGU6CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYm9vbCBtX2hhc1ZhbGlkQXNjZW50
IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2hhc1ZhbGlkRGVzY2VudCB7IGZhbHNlIH07Cisj
ZW5kaWYKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudCB7IDAgfTsKKyAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBtX2Rlc2NlbnQgeyAwIH07CisgICAgfTsKKworICAgIExpbmVCb3hC
dWlsZGVyKGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmLCBjb25zdCBCYXNlbGluZSYsIElubGlu
ZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpOworICAgIExpbmVCb3hCdWlsZGVyKCkgPSBkZWZh
dWx0OworCisgICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3Jv
bGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQor
CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dC5sZWZ0KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9w
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisKKyAgICBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0
aCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0LmhlaWdodCgpOyB9CisKKyAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBj
b25zdDsKKyAgICAvLyBCYXNlbGluZSBvZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3Rl
IHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICAv
LworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIHRvcCAgICAgLS0t
LS0tLS0tLS0tLS0tLS0tLSAodG9wIGFsaWduKQorICAgIC8vICAgICAgICAgICAgIF4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgfAorICAg
IC8vICAgXiAgICAgICAgIHwgYmFzZWxpbmUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgfCBiYXNlbGluZSBvZmZzZXQKKyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAvLyAgIHwgYXNjZW50ICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXNjZW50ICAgIHwKKyAgICAvLyAg
IHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAg
IHYKKyAgICAvLyAgIHYgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxpbmUKKyAgICAvLyAgIC0tLS0tLS0tLS0tLS0tLS0tIGJh
c2VsaW5lICAgICAgICAgICAgICAgICAgIF4KKyAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVzY2VudAorICAgIC8vICAgfCBkZXNjZW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgdgorICAgIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIGJvdHRvbSAgLS0tLS0tLS0tLS0tLS0t
LS0tLQorICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdDsKKyAgICB2
b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZv
aWQgc2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0RGVz
Y2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKKworICAgIHZvaWQgcmVzZXRCYXNlbGlu
ZSgpOworICAgIHZvaWQgcmVzZXREZXNjZW50KCkgeyBtX2Jhc2VsaW5lLnNldERlc2NlbnQoMF9s
dSk7IH0KKworICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQpIHsgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsgfQorCisgICAgdm9p
ZCBzZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQg
c2V0TG9naWNhbFdpZHRoKElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fcmVjdC5z
ZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9CisKKyAgICB2b2lkIHNldFNjcm9sbGFibGVPdmVyZmxv
dyhjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0KSB7IG1fc2Nyb2xsYWJsZU92ZXJmbG93
ID0gcmVjdDsgfQorCisgICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQg
ZGVsdGEpIHsgbV9yZWN0Lm1vdmVIb3Jpem9udGFsbHkoZGVsdGEpOyB9CisKKyAgICB2b2lkIGV4
cGFuZEhvcml6b250YWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5leHBhbmRI
b3Jpem9udGFsbHkoZGVsdGEpOyB9CisgICAgdm9pZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5l
TGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRIb3Jpem9udGFsbHkoLWRlbHRhKTsgfQorCisgICAg
dm9pZCBleHBhbmRWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4
cGFuZFZlcnRpY2FsbHkoZGVsdGEpOyB9CisgICAgdm9pZCBzaHJpbmtWZXJ0aWNhbGx5KElubGlu
ZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kVmVydGljYWxseSgtZGVsdGEpOyB9CisKKyAgICAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0
aW5nCisgICAgLy8gTGluZSBib3hlcyB0aGF0IGNvbnRhaW4gbm8gdGV4dCwgbm8gcHJlc2VydmVk
IHdoaXRlIHNwYWNlLCBubyBpbmxpbmUgZWxlbWVudHMgd2l0aCBub24temVybyBtYXJnaW5zLCBw
YWRkaW5nLCBvciBib3JkZXJzLAorICAgIC8vIGFuZCBubyBvdGhlciBpbi1mbG93IGNvbnRlbnQg
KHN1Y2ggYXMgaW1hZ2VzLCBpbmxpbmUgYmxvY2tzIG9yIGlubGluZSB0YWJsZXMpLCBhbmQgZG8g
bm90IGVuZCB3aXRoIGEgcHJlc2VydmVkIG5ld2xpbmUKKyAgICAvLyBtdXN0IGJlIHRyZWF0ZWQg
YXMgemVyby1oZWlnaHQgbGluZSBib3hlcyBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5n
IHRoZSBwb3NpdGlvbnMgb2YgYW55IGVsZW1lbnRzIGluc2lkZSBvZiB0aGVtLAorICAgIC8vIGFu
ZCBtdXN0IGJlIHRyZWF0ZWQgYXMgbm90IGV4aXN0aW5nIGZvciBhbnkgb3RoZXIgcHVycG9zZS4K
KyAgICAvLyBOb3RlIHRoYXQgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB2aXN1YWxseSBu
b24tZW1wdHkgbGluZS4gPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMHB4Ij50aGlzIGlzIHN0aWxs
IGNvbnNpZGVyZWQgbm9uLWVtcHR5PC9zcGFuPgorICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2lzQ29uc2lkZXJlZEVtcHR5OyB9CisgICAgdm9pZCBzZXRJc0Nv
bnNpZGVyZWRFbXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KKyAgICB2b2lk
IHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7
IH0KKworcHJpdmF0ZToKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV9oYXNWYWxpZEJh
c2VsaW5lIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZh
bHNlIH07CisjZW5kaWYKKyAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fcmVjdDsKKyAgICBEaXNw
bGF5OjpJbmxpbmVSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93OworICAgIEJhc2VsaW5lIG1fYmFz
ZWxpbmU7CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0IHsgMCB9OworICAg
IGJvb2wgbV9pc0NvbnNpZGVyZWRFbXB0eSB7IHRydWUgfTsKK307CisKK2lubGluZSBMaW5lQm94
QnVpbGRlcjo6TGluZUJveEJ1aWxkZXIoY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgcmVjdCwg
Y29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0
KQorICAgIDogbV9yZWN0KHJlY3QpCisgICAgLCBtX2Jhc2VsaW5lKGJhc2VsaW5lKQorICAgICwg
bV9iYXNlbGluZU9mZnNldChiYXNlbGluZU9mZnNldCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgIG1faGFzVmFsaWRCYXNlbGluZSA9IHRydWU7CisgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zm
c2V0ID0gdHJ1ZTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0
TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCit7
CisgICAgaWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgpKQorICAgICAgICByZXR1
cm47CisgICAgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKK30KKworaW5saW5lIGNv
bnN0IExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSYgTGluZUJveEJ1aWxkZXI6OmJhc2VsaW5lKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lKTsKKyAgICByZXR1cm4gbV9i
YXNlbGluZTsKK30KKworaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEJhc2VsaW5lT2Zm
c2V0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNT
RVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlm
CisgICAgbV9iYXNlbGluZU9mZnNldCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zmc2V0LCBtX2Jhc2Vs
aW5lT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEFzY2VudElm
R3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKK3sKKyAgICBpZiAoYXNjZW50IDwgbV9i
YXNlbGluZS5hc2NlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHNldEJhc2VsaW5lT2Zmc2V0
SWZHcmVhdGVyKGFzY2VudCk7CisgICAgbV9iYXNlbGluZS5zZXRBc2NlbnQoYXNjZW50KTsKK30K
KworaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldERlc2NlbnRJZkdyZWF0ZXIoSW5saW5l
TGF5b3V0VW5pdCBkZXNjZW50KQoreworICAgIGlmIChkZXNjZW50IDwgbV9iYXNlbGluZS5kZXNj
ZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Jhc2VsaW5lLnNldERlc2NlbnQoZGVzY2Vu
dCk7Cit9CisKK2lubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hCdWlsZGVyOjpiYXNlbGlu
ZU9mZnNldCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCk7
CisgICAgcmV0dXJuIG1fYmFzZWxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3hC
dWlsZGVyOjpyZXNldEJhc2VsaW5lKCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFz
VmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2Jhc2VsaW5lT2Zmc2V0
ID0gMF9sdTsKKyAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7Cit9CisKK2lubGluZSBMaW5lQm94QnVp
bGRlcjo6QmFzZWxpbmU6OkJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVM
YXlvdXRVbml0IGRlc2NlbnQpCisgICAgOiBtX2FzY2VudChhc2NlbnQpCisgICAgLCBtX2Rlc2Nl
bnQoZGVzY2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRBc2NlbnQg
PSB0cnVlOworICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKKyNlbmRpZgorfQorCitpbmxp
bmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OnNldEFzY2VudChJbmxpbmVMYXlvdXRV
bml0IGFzY2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRBc2NlbnQg
PSB0cnVlOworI2VuZGlmCisgICAgbV9hc2NlbnQgPSBhc2NlbnQ7Cit9CisKK2lubGluZSB2b2lk
IExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRl
c2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRy
dWU7CisjZW5kaWYKKyAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OworfQorCitpbmxpbmUgdm9pZCBM
aW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OnJlc2V0KCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOworICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1
ZTsKKyNlbmRpZgorICAgIG1fYXNjZW50ID0gMF9sdTsKKyAgICBtX2Rlc2NlbnQgPSAwX2x1Owor
fQorCitpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OmFz
Y2VudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRBc2NlbnQpOworICAgIHJldHVy
biBtX2FzY2VudDsKK30KKworaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveEJ1aWxkZXI6
OkJhc2VsaW5lOjpkZXNjZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZERlc2Nl
bnQpOworICAgIHJldHVybiBtX2Rlc2NlbnQ7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lQnVpbGRlci5jcHAKaW5kZXggODQzZTZhODczY2YzMzVhMDUxMDcxNDEyNDQ5ZTRmY2YwZDli
ODZlOC4uZjI0ZDAyM2U0ZDIxYWE1OTY0YzY5ODg3ZjFlY2I0MDZmZmQ2ZDM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmVCdWlsZGVyLmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIExpbmVCdWlsZGVyOjppbml0
aWFsaXplKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKICAgICAgICAgbV9pbml0aWFs
U3RydXQgPSB7IH07CiAKICAgICBhdXRvIGxpbmVSZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7
IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0LCAwX2x1LCBpbml0aWFsTGluZUhlaWdodCB9Owot
ICAgIGF1dG8gYmFzZWxpbmUgPSBEaXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZSB7IGluaXRpYWxC
YXNlbGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWlnaHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQg
fTsKLSAgICBtX2xpbmVCb3ggPSBEaXNwbGF5OjpMaW5lQm94IHsgbGluZVJlY3QsIGJhc2VsaW5l
LCBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKKyAgICBhdXRvIGJhc2VsaW5lID0gTGluZUJveEJ1
aWxkZXI6OkJhc2VsaW5lIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsTGluZUhlaWdo
dCAtIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OworICAgIG1fbGluZUJveCA9IExpbmVCb3hCdWls
ZGVyIHsgbGluZVJlY3QsIGJhc2VsaW5lLCBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKICAgICBt
X2xpbmVMb2dpY2FsV2lkdGggPSBjb25zdHJhaW50cy5hdmFpbGFibGVMb2dpY2FsV2lkdGg7CiAg
ICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGNvbnN0cmFpbnRzLmxpbmVJc0NvbnN0cmFpbmVkQnlG
bG9hdDsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIExpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWls
ZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpCiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2xp
bmVCb3gucmVzZXRCYXNlbGluZSgpOwotICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxI
ZWlnaHQoMF9sdSk7CisgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodCh7IH0p
OwogICAgICAgICB9CiAgICAgICAgIC8vIFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQg
aXMgYmFzZWxpbmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KICAgICAg
ICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCkubGluZURlc2NlbnROZWVkc0NvbGxh
cHNpbmcobV9ydW5zKSkgewpAQCAtNjU4LDcgKzY1OCw3IEBAIGJvb2wgTGluZUJ1aWxkZXI6Omlz
VmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mIHJ1bikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLURpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIExpbmVCdWlsZGVyOjpoYWxmTGVhZGlu
Z01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBJbmxpbmVMYXlvdXRVbml0
IGxpbmVMb2dpY2FsSGVpZ2h0KQorTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lIExpbmVCdWlsZGVy
OjpoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBJbmxp
bmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KQogewogICAgIGF1dG8gYXNjZW50ID0gZm9u
dE1ldHJpY3MuYXNjZW50KCk7CiAgICAgYXV0byBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVzY2Vu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXggNGQ1YzI1MGQ4ZjRhNTZhYTk0NTA5OThmNjRm
MjMxODNhNDMxNjhmZC4uY2EzYTI0ZjkyNmY2MmIzZmE3NTZlZmE1NTg0ZjM5ZTRhNzczNjJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlMaW5lQm94LmgiCiAj
aW5jbHVkZSAiRGlzcGxheVJ1bi5oIgogI2luY2x1ZGUgIklubGluZUl0ZW0uaCIKKyNpbmNsdWRl
ICJJbmxpbmVMaW5lQm94QnVpbGRlci5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgICAgICBz
dHJ1Y3QgSGVpZ2h0QW5kQmFzZWxpbmUgewogICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBo
ZWlnaHQgeyAwIH07CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0
IHsgMCB9OwotICAgICAgICAgICAgT3B0aW9uYWw8RGlzcGxheTo6TGluZUJveDo6QmFzZWxpbmU+
IHN0cnV0OworICAgICAgICAgICAgT3B0aW9uYWw8TGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lPiBz
dHJ1dDsKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0QW5kQmFzZWxpbmU+IGhl
aWdodEFuZEJhc2VsaW5lOwogICAgIH07CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBJ
bmxpbmVMYXlvdXRVbml0IHRyaW1tYWJsZVRyYWlsaW5nV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC53aWR0aCgpOyB9CiAgICAgYm9vbCBpc1RyYWlsaW5n
UnVuRnVsbHlUcmltbWFibGUoKSBjb25zdCB7IHJldHVybiBtX3RyaW1tYWJsZVRyYWlsaW5nQ29u
dGVudC5pc1RyYWlsaW5nUnVuRnVsbHlUcmltbWFibGUoKTsgfQogCi0gICAgY29uc3QgRGlzcGxh
eTo6TGluZUJveCYgbGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveDsgfQorICAgIGNv
bnN0IExpbmVCb3hCdWlsZGVyJiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9
CiAgICAgdm9pZCBtb3ZlTG9naWNhbExlZnQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBt
b3ZlTG9naWNhbFJpZ2h0KElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0SGFzSW50cnVz
aXZlRmxvYXQoKSB7IG1faGFzSW50cnVzaXZlRmxvYXQgPSB0cnVlOyB9CkBAIC0xNDMsNyArMTQz
LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50
IHsgTm8sIFllcyB9OwogICAgIFJ1bkxpc3QgY2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250
ZW50ID0gSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpObyk7CiAKLSAgICBzdGF0aWMgRGlz
cGxheTo6TGluZUJveDo6QmFzZWxpbmUgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRy
aWNzJiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7CisgICAgc3RhdGljIExp
bmVCb3hCdWlsZGVyOjpCYXNlbGluZSBoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJp
Y3MmLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KTsKIAogcHJpdmF0ZToKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3gu
bG9naWNhbFRvcCgpOyB9CkBAIC0yMTEsMTIgKzIxMSwxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwogICAg
IFJ1bkxpc3QgbV9ydW5zOwogICAgIFRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCBtX3RyaW1tYWJs
ZVRyYWlsaW5nQ29udGVudDsKLSAgICBPcHRpb25hbDxEaXNwbGF5OjpMaW5lQm94OjpCYXNlbGlu
ZT4gbV9pbml0aWFsU3RydXQ7CisgICAgT3B0aW9uYWw8TGluZUJveEJ1aWxkZXI6OkJhc2VsaW5l
PiBtX2luaXRpYWxTdHJ1dDsKICAgICBJbmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0
aCB7IDAgfTsKICAgICBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBtX2hvcml6b250YWxBbGlnbm1l
bnQ7CiAgICAgYm9vbCBtX2lzSW50cmluc2ljU2l6aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzSW50cnVzaXZlRmxvYXQgeyBmYWxzZSB9OwotICAgIERpc3BsYXk6OkxpbmVCb3ggbV9saW5l
Qm94OworICAgIExpbmVCb3hCdWlsZGVyIG1fbGluZUJveDsKICAgICBPcHRpb25hbDxib29sPiBt
X2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ7CiAgICAg
Ym9vbCBtX3Nob3VsZElnbm9yZVRyYWlsaW5nTGV0dGVyU3BhY2luZyB7IGZhbHNlIH07CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxh
eW91dENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xp
bmVMYXlvdXRDb250ZXh0LmgKaW5kZXggOWYwZWRkOGIyZmQ0YzQxMmQ2ZDlkYjNjNzU3ZGVlOTVj
YmVmNzFmOC4uMjNkOGY3MTlmMzE1NTY5YWQ0OTBiYzM1MGNjOTlhZWVlMTY4M2UwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5l
TGF5b3V0Q29udGV4dC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9u
YWw8UGFydGlhbENvbnRlbnQ+IHBhcnRpYWxDb250ZW50OwogICAgICAgICBWZWN0b3I8Y29uc3Qg
SW5saW5lSXRlbSo+IGZsb2F0czsKICAgICAgICAgY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3Qg
cnVuTGlzdDsKLSAgICAgICAgY29uc3QgRGlzcGxheTo6TGluZUJveCBsaW5lQm94OworICAgICAg
ICBjb25zdCBMaW5lQm94QnVpbGRlciBsaW5lQm94OwogICAgIH07CiAgICAgc3RydWN0IElubGlu
ZUl0ZW1SYW5nZSB7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0
ID09IGVuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCAyMzg4Njlj
NmQ2MjQwODIwNGNmMWExOThiOWUyMGQ3Nzk4NGZlNDVkLi41NzhkNGRkMDg4MDc5Yzk0ZGU3YzZm
ZDM2MjVmMzY1NWNiOWI3YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTGluZUxheW91dDo6bGF5b3V0KCkKIExheW91dFVuaXQg
TGluZUxheW91dDo6Y29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewogICAgIGF1dG8mIGxp
bmVCb3hlcyA9IGRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlczsKLSAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IGxpbmVCb3hlcy5sYXN0KCkubG9naWNhbEJvdHRvbSgpIC0gbGluZUJveGVz
LmZpcnN0KCkubG9naWNhbFRvcCgpIH07CisgICAgcmV0dXJuIExheW91dFVuaXQgeyBsaW5lQm94
ZXMubGFzdCgpLmJvdHRvbSgpIC0gbGluZUJveGVzLmZpcnN0KCkudG9wKCkgfTsKIH0KIAogc2l6
ZV90IExpbmVMYXlvdXQ6OmxpbmVDb3VudCgpIGNvbnN0CkBAIC0xMzcsNyArMTM3LDcgQEAgTGF5
b3V0VW5pdCBMaW5lTGF5b3V0OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgfQogCiAg
ICAgYXV0byYgZmlyc3RMaW5lQm94ID0gaW5saW5lQ29udGVudC0+bGluZUJveGVzLmZpcnN0KCk7
Ci0gICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRVbml0KGZpcnN0TGluZUJveC5sb2dpY2FsVG9w
KCkgKyBmaXJzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7CisgICAgcmV0dXJuIExheW91dDo6
dG9MYXlvdXRVbml0KGZpcnN0TGluZUJveC50b3AoKSArIGZpcnN0TGluZUJveC5iYXNlbGluZU9m
ZnNldCgpKTsKIH0KIAogTGF5b3V0VW5pdCBMaW5lTGF5b3V0OjpsYXN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKQEAgLTE0OSw3ICsxNDksNyBAQCBMYXlvdXRVbml0IExpbmVMYXlvdXQ6Omxhc3RMaW5l
QmFzZWxpbmUoKSBjb25zdAogICAgIH0KIAogICAgIGF1dG8mIGxhc3RMaW5lQm94ID0gaW5saW5l
Q29udGVudC0+bGluZUJveGVzLmxhc3QoKTsKLSAgICByZXR1cm4gTGF5b3V0Ojp0b0xheW91dFVu
aXQobGFzdExpbmVCb3gubG9naWNhbFRvcCgpICsgbGFzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQo
KSk7CisgICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRVbml0KGxhc3RMaW5lQm94LnRvcCgpICsg
bGFzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7CiB9CiAKIHZvaWQgTGluZUxheW91dDo6Y29s
bGVjdE92ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdykKQEAgLTI1OCw3ICsyNTgsNyBAQCB2
b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBsaW5lQm94ID0g
aW5saW5lQ29udGVudC5saW5lQm94Rm9yUnVuKHJ1bik7Ci0gICAgICAgIGF1dG8gYmFzZWxpbmVP
ZmZzZXQgPSBwYWludE9mZnNldC55KCkgKyBsaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxpbmVCb3gu
YmFzZWxpbmVPZmZzZXQoKTsKKyAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IHBhaW50T2Zm
c2V0LnkoKSArIGxpbmVCb3gudG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CiAKICAg
ICAgICAgYXV0byBiZWhhdmlvciA9IHRleHRDb250ZXh0LmV4cGFuc2lvbigpID8gdGV4dENvbnRl
eHQuZXhwYW5zaW9uKCktPmJlaGF2aW9yIDogRGVmYXVsdEV4cGFuc2lvbjsKICAgICAgICAgYXV0
byBob3Jpem9udGFsRXhwYW5zaW9uID0gdGV4dENvbnRleHQuZXhwYW5zaW9uKCkgPyB0ZXh0Q29u
dGV4dC5leHBhbnNpb24oKS0+aG9yaXpvbnRhbEV4cGFuc2lvbiA6IDA7CkBAIC0yNjYsNyArMjY2
LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICBTdHJpbmcgdGV4dFdpdGhIeXBoZW47
CiAgICAgICAgIGlmICh0ZXh0Q29udGV4dC5uZWVkc0h5cGhlbigpKQogICAgICAgICAgICAgdGV4
dFdpdGhIeXBoZW4gPSBtYWtlU3RyaW5nKHRleHRDb250ZXh0LmNvbnRlbnQoKSwgc3R5bGUuaHlw
aGVuU3RyaW5nKCkpOwotICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4u
aXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGV4dC5jb250ZW50KCksIHJ1bi5s
ZWZ0KCkgLSBsaW5lQm94LmxvZ2ljYWxMZWZ0KCksIGhvcml6b250YWxFeHBhbnNpb24sIGJlaGF2
aW9yIH07CisgICAgICAgIFRleHRSdW4gdGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5
KCkgPyB0ZXh0V2l0aEh5cGhlbiA6IHRleHRDb250ZXh0LmNvbnRlbnQoKSwgcnVuLmxlZnQoKSAt
IGxpbmVCb3gubGVmdCgpLCBob3Jpem9udGFsRXhwYW5zaW9uLCBiZWhhdmlvciB9OwogICAgICAg
ICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50
YWJTaXplKCkpOwogICAgICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyByZWN0LngoKSArIHBh
aW50T2Zmc2V0LngoKSwgcm91bmRUb0RldmljZVBpeGVsKGJhc2VsaW5lT2Zmc2V0LCBkZXZpY2VT
Y2FsZUZhY3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDJmYmJiOWM0NDQ2YTBmZGJiOTI3YmRl
MDI5N2I5MzkwMDFjMzJmZjQuLmMxNDYyMmU5MGMzOWY3NDMyNDA5MWIxZWNkNjgxZmQ2OTE5YjQ0
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRJ
bmxpbmVSdW5zKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLAogCiAgICAgc3RyZWFtIDw8ICJsaW5lcyBhcmUgLT4gIjsKICAgICBmb3IgKGF1dG8mIGxp
bmVCb3ggOiBsaW5lQm94ZXMpCi0gICAgICAgIHN0cmVhbSA8PCAiWyIgPDwgbGluZUJveC5sb2dp
Y2FsTGVmdCgpIDw8ICIsIiA8PCBsaW5lQm94LmxvZ2ljYWxUb3AoKSA8PCAiICIgPDwgbGluZUJv
eC5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgbGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgPDwgIl0g
IjsKKyAgICAgICAgc3RyZWFtIDw8ICJbIiA8PCBsaW5lQm94LmxlZnQoKSA8PCAiLCIgPDwgbGlu
ZUJveC50b3AoKSA8PCAiICIgPDwgbGluZUJveC53aWR0aCgpIDw8ICJ4IiA8PCBsaW5lQm94Lmhl
aWdodCgpIDw8ICJdICI7CiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAKICAgICBmb3IgKGF1dG8m
IGRpc3BsYXlSdW4gOiBkaXNwbGF5UnVucykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389009</attachid>
            <date>2020-01-28 08:51:57 -0800</date>
            <delta_ts>2020-01-28 10:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206861-20200128085156.patch</filename>
            <type>text/plain</type>
            <size>46947</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2ZmE4MGRmNjU1ZTkx
NDFlNzk4OTBhMWNlYjM1MTY3NTQxMjk3OC4uODI0NmU3NTc1NmNjNmU3MWViMmI4YzAzMGRlYTll
OWEwNDhhMjMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0wMS0yNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gRGVjb3Vw
bGUgRGlzcGxheTo6TGluZUJveCBhbmQgTGF5b3V0OjpMaW5lQm94QnVpbGRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81ODk0NTI4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KKworICAgICAgICBXZSBzaG91bGQgbm90IG1peCBsb2dpY2FsIGFuZCBwaHlzaWNhbCBj
b29yZGluYXRlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29udGVu
dEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5TGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGlu
ZUJveDo6QmFzZWxpbmU6OmFzY2VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpMaW5lQm94OjpCYXNlbGluZTo6ZGVzY2VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpMaW5lQm94OjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxpbmVCb3g6OmxlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJv
eDo6cmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6dG9w
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OmJvdHRvbSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojp3aWR0aCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpoZWlnaHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6YmFzZWxpbmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6YmFzZWxpbmVPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6aXNDb25zaWRlcmVkRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6TGluZUJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bG9naWNhbFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bG9naWNhbFRvcExlZnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bG9naWNhbExl
ZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6
bG9naWNhbFJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxpbmVCb3g6OmxvZ2ljYWxUb3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6TGluZUJveDo6bG9naWNhbEJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsV2lkdGggY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bG9naWNhbEhlaWdodCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpyZXNldERl
c2NlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0
TG9naWNhbFRvcExlZnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGlu
ZUJveDo6c2V0TG9naWNhbEhlaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpMaW5lQm94OjpzZXRMb2dpY2FsV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6TGluZUJveDo6c2V0U2Nyb2xsYWJsZU92ZXJmbG93KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldElua092ZXJmbG93KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6Om1vdmVIb3Jpem9udGFsbHkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6ZXhwYW5kSG9y
aXpvbnRhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6
OnNocmlua0hvcml6b250YWxseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpMaW5lQm94OjpleHBhbmRWZXJ0aWNhbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxpbmVCb3g6OnNocmlua1ZlcnRpY2FsbHkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0SXNDb25zaWRlcmVkRW1wdHkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0SXNDb25zaWRlcmVkTm9u
RW1wdHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0
TG9naWNhbEhlaWdodElmR3JlYXRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0ZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0RGVzY2VudElmR3Jl
YXRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpyZXNl
dEJhc2VsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6
OkJhc2VsaW5lOjpzZXRBc2NlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6TGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGluZUJveDo6QmFzZWxpbmU6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6cGFpbnRJbmxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNGb3JM
aW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVIZWlnaHRDb25zdHJhaW50cyBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUxpbmVCb3guaC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OmhlaWdodCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSZWN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2Nyb2xsYWJsZU92ZXJmbG93IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbExlZnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsVG9wIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbEJvdHRvbSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxXaWR0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxIZWlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpyZXNldERlc2NlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dpY2FsSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNhbFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0U2Nyb2xsYWJsZU92ZXJmbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bW92ZUhvcml6b250YWxseSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZEhvcml6b250YWxseSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua0hvcml6b250YWxseSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZFZlcnRpY2FsbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzaHJpbmtWZXJ0aWNhbGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aXNDb25zaWRlcmVkRW1wdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWRFbXB0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29uc2lkZXJlZE5vbkVtcHR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6TGluZUJveCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpiYXNlbGluZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QXNjZW50SWZHcmVhdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0RGVzY2VudElmR3JlYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJhc2VsaW5lT2Zmc2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6cmVzZXRCYXNlbGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpzZXRBc2NlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6c2V0RGVzY2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjphc2NlbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6ZGVzY2Vu
dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3Mp
OgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb250ZW50TG9naWNhbFJp
Z2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmxpbmVC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y29udGVu
dExvZ2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZUxheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5
b3V0Q29udGV4dDo6bGF5b3V0TGluZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZUxheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb250ZW50TG9naWNhbEhlaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Zmlyc3RMaW5lQmFz
ZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVM
YXlvdXQ6Omxhc3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91
dHB1dElubGluZVJ1bnMpOgorCiAyMDIwLTAxLTI3ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBBZGQgc3VwcG9ydCBmb3IgdGhl
IG9wdGlvbnMgcGFyYW1ldGVyIHRvIGdldEFuaW1hdGlvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxMWU3NjJmZjhkZGE2
MWE0MGU5ZmFkZjBiZGZjOGIxZjIzYTJlMmYuLmY4ZmZjNDU1NzJhMmRmZTQ5OWUyNDBmNjI2ZDZh
YzNiMWYxNmRiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIwNzIsNiArMjA3Miw3IEBACiAJCTZGOTk1QTNBMUE3MDgzMzcw
MEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBK
U1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNkZBNDQ1NEU4OThGMkZDMTY4QkMz
OEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5MDIyQiAvKiBKU0JlZm9yZVVu
bG9hZEV2ZW50LmggKi87IH07CiAJCTZGQjExQjVDMjE3ODNGRDAwMEUyQTU3NCAvKiBUZXh0VXRp
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCMTFC
NTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkZCMjQwMDUyM0RGRjEyODAwNzk2NDU4IC8qIElu
bGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1aWxk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogRGlzcGxheUxpbmVCb3guaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNC
MCAvKiBEaXNwbGF5TGluZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkNFMUExQTIy
NjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8qIERpc3BsYXlS
dW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTQwOCw2ICs5NDA5LDcgQEAKIAkJNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGls
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVdGlsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjExQjVCMjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0VXRp
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VXRpbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjIyRTMwMjMwMDk3RTMwMEMyMDg2NiAv
KiBUYWJsZUdyaWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFibGVHcmlkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZGQjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94
QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lQm94
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkI0N0U2MTIyNzc0MjVB
MDBDN0JDQjAgLyogRGlzcGxheUxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZC
NUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkZCQjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjgzOSw2ICsxNjg0MSw3IEBACiAJCQkJ
MTE1Q0ZBN0MyMDhCOEUxMDAwMUU2OTkxIC8qIElubGluZUZvcm1hdHRpbmdTdGF0ZS5oICovLAog
CQkJCTZGN0I4Q0VDMjM2MjZFNjYwMEM5RkYxNSAvKiBJbmxpbmVJdGVtLmNwcCAqLywKIAkJCQk2
RkU3Q0ZBMDIxNzdFRUYxMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oICovLAorCQkJCTZGQjI0MDAz
MjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oICovLAogCQkJCTZGRTE5
ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5jcHAgKi8sCiAJCQkJNkZF
MTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggKi8sCiAJCQkJNkYw
Q0Q2OTIyMjlFRDMxOTAwQzU5OTRFIC8qIElubGluZUxpbmVCdWlsZGVyLmNwcCAqLywKQEAgLTMw
NDUxLDYgKzMwNDU0LDcgQEAKIAkJCQkxMTVDRkE3RTIwOEI4RTEwMDAxRTY5OTEgLyogSW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU3Q0ZBMjIxNzdFRUYyMDA1
QjE1NzMgLyogSW5saW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNzg5MTYxMTIwRDYw
ODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RkIyNDAw
NTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5OTRFIC8qIElubGluZUxpbmVC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjM2MEU1MDIzOTk5NDIxMDAxNTEyQTcgLyog
SW5saW5lU29mdExpbmVCcmVha0l0ZW0uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGY2YTU5
N2JlYjAzMDQzYzE2ZWU3NGM0MmMyNTM4Yzc1NmM0YzUzNmYuLmQwZjIzZjM0NGU2Zjg1NjE3MGFj
NDQ2Y2QxM2IyNDdkZGE5MTlmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTEzNiw4ICsxMzYsOCBAQCBMYXlvdXRV
bml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29udGVudEhlaWdodEZvckZvcm1hdHRp
bmdDb250ZXh0Um9vdChjbwogICAgICAgICBhdXRvJiBsaW5lQm94ZXMgPSBsYXlvdXRTdGF0ZS5l
c3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nUm9vdENvbnRhaW5lciku
ZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGluZUJveGVzOwogICAgICAgICAvLyBFdmVuIGVtcHR5
IGNvbnRhaW5lcnMgZ2VuZXJhdGUgb25lIGxpbmUuIAogICAgICAgICBBU1NFUlQoIWxpbmVCb3hl
cy5pc0VtcHR5KCkpOwotICAgICAgICB0b3AgPSBsaW5lQm94ZXMuZmlyc3QoKS5sb2dpY2FsVG9w
KCk7Ci0gICAgICAgIGJvdHRvbSA9IGxpbmVCb3hlcy5sYXN0KCkubG9naWNhbEJvdHRvbSgpOwor
ICAgICAgICB0b3AgPSBsaW5lQm94ZXMuZmlyc3QoKS50b3AoKTsKKyAgICAgICAgYm90dG9tID0g
bGluZUJveGVzLmxhc3QoKS5ib3R0b20oKTsKICAgICB9IGVsc2UgaWYgKGZvcm1hdHRpbmdSb290
Q29udGFpbmVyLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIHx8IGZvcm1hdHRp
bmdSb290Q29udGFpbmVyLmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpIHx8IGZv
cm1hdHRpbmdSb290Q29udGFpbmVyLmlzRG9jdW1lbnRCb3goKSkgewogICAgICAgICBpZiAoZm9y
bWF0dGluZ1Jvb3RDb250YWluZXIuaGFzSW5GbG93Q2hpbGQoKSkgewogICAgICAgICAgICAgYXV0
byYgZmlyc3RCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpm
b3JtYXR0aW5nUm9vdENvbnRhaW5lci5maXJzdEluRmxvd0NoaWxkKCksIEVzY2FwZVJlYXNvbjo6
TmVlZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAwY2FkOGIxODA3MTE1
NTcwYzVhYWJhNzc1ZDYxZmEzMGU3YTIzOWI2Li40NWJmNWNjZjIyMWJjNDE4MGU1NzA5ZDE2MTky
YjQ2NDhlNDFmZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0CiAgICAgICAg
ICAgICBhdXRvJiBsaW5lQm94ZXMgPSBsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9y
bWF0dGluZ1N0YXRlKGxheW91dENvbnRhaW5lcikuZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGlu
ZUJveGVzOwogICAgICAgICAgICAgLy8gRXZlbiBlbXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9u
ZSBsaW5lLiAKICAgICAgICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1wdHkoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4geyB0b0xheW91dFVuaXQobGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90
dG9tKCkpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2luIH07CisgICAg
ICAgICAgICByZXR1cm4geyB0b0xheW91dFVuaXQobGluZUJveGVzLmxhc3QoKS5ib3R0b20oKSkg
LSBib3JkZXJBbmRQYWRkaW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4gfTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIDIuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgYm90dG9tIChwb3NzaWJseSBj
b2xsYXBzZWQpIG1hcmdpbiBvZiBpdHMgbGFzdCBpbi1mbG93IGNoaWxkLCBpZiB0aGUgY2hpbGQn
cyBib3R0b20gbWFyZ2luLi4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5TGluZUJveC5oCmluZGV4IDA0ZjY0NzQ5OTk1ZTQ5Yjk3ZjVjZDQwMDBmNDE2
YTA1NjA5NzNkYzguLjhmZmUwNjczNmI5MzY1Yzk1MjZhNjM1MzJiNDFlOWY1OTMzMjBhYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJv
eC5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5SW5saW5l
UmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw0NiArMzcsMzQgQEAgY2xhc3Mg
TGluZUJveCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEJhc2VsaW5lIHsKICAgICAgICAgQmFzZWxp
bmUoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQsIElubGluZUxheW91dFVuaXQgZGVzY2VudCk7Ci0g
ICAgICAgIEJhc2VsaW5lKCkgPSBkZWZhdWx0OwotCi0gICAgICAgIHZvaWQgc2V0QXNjZW50KElu
bGluZUxheW91dFVuaXQpOwotICAgICAgICB2b2lkIHNldERlc2NlbnQoSW5saW5lTGF5b3V0VW5p
dCk7Ci0KLSAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgICAgIElubGluZUxheW91dFVuaXQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50KCkgKyBkZXNjZW50KCk7IH0KLSAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBhc2NlbnQoKSBjb25zdDsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBkZXNjZW50KCkgY29uc3Q7CisgICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50KCkgY29u
c3QgeyByZXR1cm4gbV9hc2NlbnQ7IH0KKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50
KCkgY29uc3QgeyByZXR1cm4gbV9kZXNjZW50OyB9CiAKICAgICBwcml2YXRlOgotI2lmIEFTU0VS
VF9FTkFCTEVECi0gICAgICAgIGJvb2wgbV9oYXNWYWxpZEFzY2VudCB7IGZhbHNlIH07Ci0gICAg
ICAgIGJvb2wgbV9oYXNWYWxpZERlc2NlbnQgeyBmYWxzZSB9OwotI2VuZGlmCi0gICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9hc2NlbnQ7Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgbV9kZXNj
ZW50OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYXNjZW50IHsgMCB9OworICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IG1fZGVzY2VudCB7IDAgfTsKICAgICB9OwogCi0gICAgTGluZUJveChj
b25zdCBJbmxpbmVSZWN0JiwgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2Vs
aW5lT2Zmc2V0KTsKLSAgICBMaW5lQm94KCkgPSBkZWZhdWx0OworICAgIExpbmVCb3goY29uc3Qg
SW5saW5lUmVjdCYsIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3Qg
SW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIGNvbnN0IEJhc2VsaW5lJiwgSW5saW5lTGF5b3V0VW5p
dCBiYXNlbGluZU9mZnNldCwgYm9vbCBpc0NvbnNpZGVyZWRFbXB0eSk7CiAKLSAgICBjb25zdCBJ
bmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIGNv
bnN0IElubGluZVJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25z
dCBJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bGFibGVPdmVyZmxvdzsgfQogICAgIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogCi0gICAgSW5saW5lTGF5b3V0UG9pbnQgbG9n
aWNhbFRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wTGVmdCgpOyB9Ci0gICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7
IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdC5yaWdodCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90
dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisgICAgSW5saW5lTGF5b3V0
VW5pdCBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmxlZnQoKTsgfQorICAgIElubGluZUxh
eW91dFVuaXQgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QucmlnaHQoKTsgfQorICAgIElu
bGluZUxheW91dFVuaXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9CisgICAg
SW5saW5lTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7
IH0KIAotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9yZWN0LndpZHRoKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JlY3QuaGVpZ2h0KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRV
bml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQogCi0gICAgY29u
c3QgQmFzZWxpbmUmIGJhc2VsaW5lKCkgY29uc3Q7Ci0gICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZy
b20gbGluZSBsb2dpY2FsIHRvcC4gTm90ZSB0aGF0IG9mZnNldCBkb2VzIG5vdCBuZWNlc3Nhcmls
eSBlcXVhbCB0byBhc2NlbnQuCisgICAgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9iYXNlbGluZTsgfQorICAgIC8vIEJhc2VsaW5lIG9mZnNldCBmcm9tIGxpbmUg
dG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2Vu
dC4KICAgICAvLwotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIHRv
cCAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9wIGFsaWduKQorICAgIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0gICAgICAgIGxpbmUgdG9wICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9w
IGFsaWduKQogICAgIC8vICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXgogICAgIC8vICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgfAogICAgIC8vICAgXiAgICAgICAgIHwgYmFz
ZWxpbmUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCBiYXNlbGluZSBvZmZz
ZXQKQEAgLTg5LDE2MyArNzYsMzMgQEAgcHVibGljOgogICAgIC8vICAgXiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjZW50CiAgICAgLy8gICB8IGRlc2Nl
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CiAgICAgLy8gICB2Ci0gICAg
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwgYm90dG9tICAtLS0tLS0tLS0t
LS0tLS0tLS0tCi0gICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0g
ICAgdm9pZCBzZXRBc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBz
ZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOwotCi0gICAgdm9pZCByZXNldEJh
c2VsaW5lKCk7Ci0gICAgdm9pZCByZXNldERlc2NlbnQoKSB7IG1fYmFzZWxpbmUuc2V0RGVzY2Vu
dCgwX2x1KTsgfQotCi0gICAgdm9pZCBzZXRMb2dpY2FsVG9wTGVmdChjb25zdCBJbmxpbmVMYXlv
dXRQb2ludCYgbG9naWNhbFRvcExlZnQpIHsgbV9yZWN0LnNldFRvcExlZnQobG9naWNhbFRvcExl
ZnQpOyB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KElubGluZUxheW91dFVuaXQgbG9naWNh
bEhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOyB9Ci0KLSAgICB2b2lk
IHNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBz
ZXRMb2dpY2FsV2lkdGgoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpIHsgbV9yZWN0LnNl
dFdpZHRoKGxvZ2ljYWxXaWR0aCk7IH0KLQotICAgIHZvaWQgc2V0U2Nyb2xsYWJsZU92ZXJmbG93
KGNvbnN0IElubGluZVJlY3QmIHJlY3QpIHsgbV9zY3JvbGxhYmxlT3ZlcmZsb3cgPSByZWN0OyB9
Ci0gICAgdm9pZCBzZXRJbmtPdmVyZmxvdyhjb25zdCBJbmxpbmVSZWN0JiByZWN0KSB7IG1faW5r
T3ZlcmZsb3cgPSByZWN0OyB9Ci0KLSAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoSW5saW5lTGF5
b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3QubW92ZUhvcml6b250YWxseShkZWx0YSk7IH0KLQotICAg
IHZvaWQgZXhwYW5kSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0
LmV4cGFuZEhvcml6b250YWxseShkZWx0YSk7IH0KLSAgICB2b2lkIHNocmlua0hvcml6b250YWxs
eShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZEhvcml6b250YWxseSgtZGVsdGEpOyB9
Ci0KLSAgICB2b2lkIGV4cGFuZFZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBt
X3JlY3QuZXhwYW5kVmVydGljYWxseShkZWx0YSk7IH0KLSAgICB2b2lkIHNocmlua1ZlcnRpY2Fs
bHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRWZXJ0aWNhbGx5KC1kZWx0YSk7IH0K
LQotICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwjaW5saW5l
LWZvcm1hdHRpbmcKLSAgICAvLyBMaW5lIGJveGVzIHRoYXQgY29udGFpbiBubyB0ZXh0LCBubyBw
cmVzZXJ2ZWQgd2hpdGUgc3BhY2UsIG5vIGlubGluZSBlbGVtZW50cyB3aXRoIG5vbi16ZXJvIG1h
cmdpbnMsIHBhZGRpbmcsIG9yIGJvcmRlcnMsCi0gICAgLy8gYW5kIG5vIG90aGVyIGluLWZsb3cg
Y29udGVudCAoc3VjaCBhcyBpbWFnZXMsIGlubGluZSBibG9ja3Mgb3IgaW5saW5lIHRhYmxlcyks
IGFuZCBkbyBub3QgZW5kIHdpdGggYSBwcmVzZXJ2ZWQgbmV3bGluZQotICAgIC8vIG11c3QgYmUg
dHJlYXRlZCBhcyB6ZXJvLWhlaWdodCBsaW5lIGJveGVzIGZvciB0aGUgcHVycG9zZXMgb2YgZGV0
ZXJtaW5pbmcgdGhlIHBvc2l0aW9ucyBvZiBhbnkgZWxlbWVudHMgaW5zaWRlIG9mIHRoZW0sCi0g
ICAgLy8gYW5kIG11c3QgYmUgdHJlYXRlZCBhcyBub3QgZXhpc3RpbmcgZm9yIGFueSBvdGhlciBw
dXJwb3NlLgotICAgIC8vIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHZp
c3VhbGx5IG5vbi1lbXB0eSBsaW5lLiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAwcHgiPnRoaXMg
aXMgc3RpbGwgY29uc2lkZXJlZCBub24tZW1wdHk8L3NwYW4+CisgICAgLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLSAgICAgICBsaW5lIGJvdHRvbSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
SW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZWxp
bmVPZmZzZXQ7IH0KICAgICBib29sIGlzQ29uc2lkZXJlZEVtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnNpZGVyZWRFbXB0eTsgfQotICAgIHZvaWQgc2V0SXNDb25zaWRlcmVkRW1wdHkoKSB7
IG1faXNDb25zaWRlcmVkRW1wdHkgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRO
b25FbXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgeyBmYWxzZSB9OwotI2VuZGlmCiAg
ICAgSW5saW5lUmVjdCBtX3JlY3Q7CiAgICAgSW5saW5lUmVjdCBtX3Njcm9sbGFibGVPdmVyZmxv
dzsKICAgICBJbmxpbmVSZWN0IG1faW5rT3ZlcmZsb3c7CiAgICAgQmFzZWxpbmUgbV9iYXNlbGlu
ZTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmVPZmZzZXQ7CisgICAgSW5saW5lTGF5
b3V0VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0IHsgMCB9OwogICAgIGJvb2wgbV9pc0NvbnNpZGVyZWRF
bXB0eSB7IHRydWUgfTsKIH07CiAKLWlubGluZSBMaW5lQm94OjpMaW5lQm94KGNvbnN0IElubGlu
ZVJlY3QmIHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBi
YXNlbGluZU9mZnNldCkKK2lubGluZSBMaW5lQm94OjpMaW5lQm94KGNvbnN0IElubGluZVJlY3Qm
IHJlY3QsIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3QgSW5saW5l
UmVjdCYgaW5rT3ZlcmZsb3csIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0
VW5pdCBiYXNlbGluZU9mZnNldCwgYm9vbCBpc0NvbnNpZGVyZWRFbXB0eSkKICAgICA6IG1fcmVj
dChyZWN0KQorICAgICwgbV9zY3JvbGxhYmxlT3ZlcmZsb3coc2Nyb2xsYWJsZU92ZXJmbG93KQor
ICAgICwgbV9pbmtPdmVyZmxvdyhpbmtPdmVyZmxvdykKICAgICAsIG1fYmFzZWxpbmUoYmFzZWxp
bmUpCiAgICAgLCBtX2Jhc2VsaW5lT2Zmc2V0KGJhc2VsaW5lT2Zmc2V0KQorICAgICwgbV9pc0Nv
bnNpZGVyZWRFbXB0eShpc0NvbnNpZGVyZWRFbXB0eSkKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIG1faGFzVmFsaWRCYXNlbGluZSA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zm
c2V0ID0gdHJ1ZTsKLSNlbmRpZgotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRMb2dpY2Fs
SGVpZ2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCkKLXsKLSAgICBp
ZiAobG9naWNhbEhlaWdodCA8PSBtX3JlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOwotfQotCi1pbmxpbmUgY29uc3QgTGlu
ZUJveDo6QmFzZWxpbmUmIExpbmVCb3g6OmJhc2VsaW5lKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9oYXNWYWxpZEJhc2VsaW5lKTsKLSAgICByZXR1cm4gbV9iYXNlbGluZTsKLX0KLQotaW5saW5l
IHZvaWQgTGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5p
dCBiYXNlbGluZU9mZnNldCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRC
YXNlbGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jhc2VsaW5lT2Zmc2V0ID0gc3Rk
OjptYXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQpOwotfQotCi1pbmxpbmUgdm9p
ZCBMaW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQpCi17
Ci0gICAgaWYgKGFzY2VudCA8IG1fYmFzZWxpbmUuYXNjZW50KCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihhc2NlbnQpOwotICAgIG1fYmFzZWxpbmUu
c2V0QXNjZW50KGFzY2VudCk7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3g6OnNldERlc2NlbnRJ
ZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQotewotICAgIGlmIChkZXNjZW50IDwg
bV9iYXNlbGluZS5kZXNjZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Jhc2VsaW5lLnNl
dERlc2NlbnQoZGVzY2VudCk7Ci19Ci0KLWlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3g6
OmJhc2VsaW5lT2Zmc2V0KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5l
T2Zmc2V0KTsKLSAgICByZXR1cm4gbV9iYXNlbGluZU9mZnNldDsKLX0KLQotaW5saW5lIHZvaWQg
TGluZUJveDo6cmVzZXRCYXNlbGluZSgpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hh
c1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9iYXNlbGluZU9mZnNl
dCA9IDBfbHU7Ci0gICAgbV9iYXNlbGluZS5yZXNldCgpOwogfQogCiBpbmxpbmUgTGluZUJveDo6
QmFzZWxpbmU6OkJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlvdXRV
bml0IGRlc2NlbnQpCiAgICAgOiBtX2FzY2VudChhc2NlbnQpCiAgICAgLCBtX2Rlc2NlbnQoZGVz
Y2VudCkKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVl
OwotICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotfQotCi1pbmxpbmUgdm9p
ZCBMaW5lQm94OjpCYXNlbGluZTo6c2V0QXNjZW50KElubGluZUxheW91dFVuaXQgYXNjZW50KQot
ewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0jZW5k
aWYKLSAgICBtX2FzY2VudCA9IGFzY2VudDsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6QmFz
ZWxpbmU6OnNldERlc2NlbnQoSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQotewotI2lmIEFTU0VS
VF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9k
ZXNjZW50ID0gZGVzY2VudDsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnJl
c2V0KCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVl
OwotICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYXNjZW50ID0g
MF9sdTsKLSAgICBtX2Rlc2NlbnQgPSAwX2x1OwotfQotCi1pbmxpbmUgSW5saW5lTGF5b3V0VW5p
dCBMaW5lQm94OjpCYXNlbGluZTo6YXNjZW50KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9oYXNW
YWxpZEFzY2VudCk7Ci0gICAgcmV0dXJuIG1fYXNjZW50OwotfQotCi1pbmxpbmUgSW5saW5lTGF5
b3V0VW5pdCBMaW5lQm94OjpCYXNlbGluZTo6ZGVzY2VudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1faGFzVmFsaWREZXNjZW50KTsKLSAgICByZXR1cm4gbV9kZXNjZW50OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNw
cAppbmRleCA0MmMyMTIwNTE4Y2FkNjZlMWZlZDFmZDk2ZDZiN2FjZTEyMjIzNTBlLi41NmNkNTlh
NTQzYmE3OTgwMWYwNmE2YzJjNTE1NmVkZWIwZGM4NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTEyOSw5ICsx
MjksOSBAQCBzdGF0aWMgdm9pZCBwYWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBMYXlvdXRQb2ludCBhYnNvbHV0ZU9mZgogICAgICAgICAgICAgYXV0byBhYnNvbHV0
ZUxlZnQgPSBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgpOwogICAgICAgICAgICAgLy8g
RklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRpbmcKICAgICAgICAgICAgIGF1dG8m
IGxpbmVCb3ggPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUJveEZvclJ1bihydW4pOwotICAg
ICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IGFic29sdXRlT2Zmc2V0LnkoKSArIGxpbmVC
b3gubG9naWNhbFRvcCgpICsgbGluZUJveC5iYXNlbGluZU9mZnNldCgpOworICAgICAgICAgICAg
YXV0byBiYXNlbGluZU9mZnNldCA9IGFic29sdXRlT2Zmc2V0LnkoKSArIGxpbmVCb3gudG9wKCkg
KyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CiAgICAgICAgICAgICBhdXRvIGV4cGFuc2lvbkNv
bnRleHQgPSB0ZXh0Q29udGV4dC0+ZXhwYW5zaW9uKCk7Ci0gICAgICAgICAgICBhdXRvIHRleHRS
dW4gPSBUZXh0UnVuIHsgdGV4dENvbnRleHQtPmNvbnRlbnQoKSwgcnVuLmxlZnQoKSAtIGxpbmVC
b3gubG9naWNhbExlZnQoKSwKKyAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0
ZXh0Q29udGV4dC0+Y29udGVudCgpLCBydW4ubGVmdCgpIC0gbGluZUJveC5sZWZ0KCksCiAgICAg
ICAgICAgICAgICAgZXhwYW5zaW9uQ29udGV4dCA/IGV4cGFuc2lvbkNvbnRleHQtPmhvcml6b250
YWxFeHBhbnNpb24gOiAwLAogICAgICAgICAgICAgICAgIGV4cGFuc2lvbkNvbnRleHQgPyBleHBh
bnNpb25Db250ZXh0LT5iZWhhdmlvciA6IERlZmF1bHRFeHBhbnNpb24gfTsKICAgICAgICAgICAg
IHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRh
YlNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNzhjODE0
NWQwMmEwNjUyNTI4OTRkY2E2OTg5NTRmNzRhYTFlMWM1ZS4uZmYyNmZlNmM2NDhhOTk4OGYyZjNi
OTUxNDcwNmRlZjhjMmZkMjdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtNDI0LDYgKzQyNCw3IEBAIExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6CiB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKGNvbnN0IExpbmVMYXlv
dXRDb250ZXh0OjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdT
dGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOworICAgIGF1dG8mIGxpbmVCb3ggPSBsaW5l
Q29udGVudC5saW5lQm94OwogCiAgICAgaWYgKCFsaW5lQ29udGVudC5mbG9hdHMuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgcm9v
dCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSB9OwpAQCAtNDMyLDcg
KzQzMyw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0Zv
ckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgICAgICAgICBhdXRvJiBmbG9h
dEJveCA9IGZsb2F0SXRlbS0+bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5
Qm94ID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlCb3goZmxvYXRCb3gpOwogICAgICAgICAgICAg
Ly8gU2V0IHN0YXRpYyBwb3NpdGlvbiBmaXJzdC4KLSAgICAgICAgICAgIGF1dG8mIGxpbmVCb3gg
PSBsaW5lQ29udGVudC5saW5lQm94OwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0
KHsgbGluZUJveC5sb2dpY2FsTGVmdCgpLCBsaW5lQm94LmxvZ2ljYWxUb3AoKSB9KTsKICAgICAg
ICAgICAgIC8vIEZsb2F0IGl0LgogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGZs
b2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvckZsb2F0KGZsb2F0Qm94KSk7CkBAIC00NDgsOCArNDQ4
LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGlu
ZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgaW5pdGlhbENvbnRhaW5nQmxv
Y2tTaXplID0gZ2VvbWV0cnlGb3JCb3gocm9vdCgpLmluaXRpYWxDb250YWluaW5nQmxvY2soKSwg
RXNjYXBlUmVhc29uOjpTdHJva2VPdmVyZmxvd05lZWRzVmlld3BvcnRHZW9tZXRyeSkuY29udGVu
dEJveCgpLnNpemUoKTsKICAgICBhdXRvJiBpbmxpbmVDb250ZW50ID0gZm9ybWF0dGluZ1N0YXRl
LmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7CiAgICAgYXV0byBsaW5lSW5kZXggPSBpbmxp
bmVDb250ZW50LmxpbmVCb3hlcy5zaXplKCk7Ci0gICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMu
YXBwZW5kKGxpbmVDb250ZW50LmxpbmVCb3gpOwotICAgIGF1dG8gbGluZUlua092ZXJmbG93ID0g
bGluZUNvbnRlbnQubGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKTsKKyAgICBhdXRvIGxpbmVJ
bmtPdmVyZmxvdyA9IGxpbmVCb3guc2Nyb2xsYWJsZU92ZXJmbG93KCk7CiAgICAgT3B0aW9uYWw8
dW5zaWduZWQ+IGxhc3RUZXh0SXRlbUluZGV4OwogICAgIC8vIENvbXB1dGUgYm94IGZpbmFsIGdl
b21ldHJ5LgogICAgIGF1dG8mIGxpbmVSdW5zID0gbGluZUNvbnRlbnQucnVuTGlzdDsKQEAgLTU0
MCw3ICs1MzksOSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94
ZXNGb3JMaW5lKGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaQogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgdHJhaWxpbmcgdGV4dCBydW4gZ2V0cyBhIGh5cGhlbiB3aGVuIGl0IG5lZWRzIG9uZS4KICAg
ICBpZiAobGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQgJiYgbGluZUNvbnRlbnQucGFydGlhbENv
bnRlbnQtPnRyYWlsaW5nQ29udGVudE5lZWRzSHlwaGVuKQogICAgICAgICBpbmxpbmVDb250ZW50
LnJ1bnNbKmxhc3RUZXh0SXRlbUluZGV4XS50ZXh0Q29udGV4dCgpLT5zZXROZWVkc0h5cGhlbigp
OwotICAgIGlubGluZUNvbnRlbnQubGluZUJveGVzLmxhc3QoKS5zZXRJbmtPdmVyZmxvdyhsaW5l
SW5rT3ZlcmZsb3cpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoZSBsb2dpY2FsIHRv
IHBoeXNpY2FsIHRyYW5zbGF0ZSBzaG91bGQgaGFwcGVuLgorICAgIGF1dG8mIGJhc2VsaW5lID0g
bGluZUJveC5iYXNlbGluZSgpOworICAgIGlubGluZUNvbnRlbnQubGluZUJveGVzLmFwcGVuZCh7
IGxpbmVCb3gubG9naWNhbFJlY3QoKSwgbGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKSwgbGlu
ZUlua092ZXJmbG93LCB7IGJhc2VsaW5lLmFzY2VudCgpLCBiYXNlbGluZS5kZXNjZW50KCkgfSwg
bGluZUJveC5iYXNlbGluZU9mZnNldCgpLCBsaW5lQm94LmlzQ29uc2lkZXJlZEVtcHR5KCkgfSk7
CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5n
U3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IDQ5MzY0ZmU4MjM1NTgyYTIxZDIyMGQzNTRmMmU3
ZWQ3ODFmNTAxMjguLmNlZTExN2E2ZDkyZGZkM2Y3ZjE0Y2NlZDlkYjA4YTgxZThhYTEyNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTgzLDEy
ICs4MywxMiBAQCBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHM6OkhlaWdodEFuZEJhc2VsaW5lIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbgogICAgIGF1dG8gbGluZUhlaWdodCA9
IGZvcm1hdHRpbmdSb290LnN0eWxlKCkubGluZUhlaWdodCgpOwogICAgIGlmIChsaW5lSGVpZ2h0
LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5l
T2Zmc2V0ID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5nUm9vdC5z
dHlsZSgpLmZvbnRNZXRyaWNzKCksIDBfbHUpLmFzY2VudCgpOwotICAgICAgICByZXR1cm4geyBp
bml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxCYXNlbGluZU9mZnNldCwgRGlzcGxheTo6TGlu
ZUJveDo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0
QmFzZWxpbmVPZmZzZXQgfSB9OworICAgICAgICByZXR1cm4geyBpbml0aWFsQmFzZWxpbmVPZmZz
ZXQsIGluaXRpYWxCYXNlbGluZU9mZnNldCwgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lIHsgc3Ry
dXRCYXNlbGluZU9mZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2VsaW5lT2Zmc2V0IH0gfTsK
ICAgICB9CiAgICAgLy8gRklYTUU6IFRoZSBvbmx5IHJlYXNvbiB3aHkgd2UgdXNlIGludFZhbHVl
KCkgaGVyZSBpcyB0byBtYXRjaCBjdXJyZW50IGlubGluZSB0cmVlIChpbnRlZ3JhbCliZWhhdmlv
ci4KICAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxMaW5lSGVpZ2h0ID0gbGluZUhlaWdodC5p
bnRWYWx1ZSgpOwogICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5lT2Zmc2V0ID0gTGluZUJ1aWxkZXI6
OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCks
IGluaXRpYWxMaW5lSGVpZ2h0KS5hc2NlbnQoKTsKLSAgICByZXR1cm4geyBpbml0aWFsTGluZUhl
aWdodCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBEaXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZSB7
IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0cnV0SGVpZ2h0IC0gc3RydXRCYXNlbGluZU9mZnNldCB9
IH07CisgICAgcmV0dXJuIHsgaW5pdGlhbExpbmVIZWlnaHQsIGluaXRpYWxCYXNlbGluZU9mZnNl
dCwgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lIHsgc3RydXRCYXNlbGluZU9mZnNldCwgc3RydXRI
ZWlnaHQgLSBzdHJ1dEJhc2VsaW5lT2Zmc2V0IH0gfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveEJ1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3hC
dWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA1MDk4ZGIwNTk3NjEwZmYwNGQyMTdmN2JjY2EyMDIwYTFk
N2Q4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKQEAgLTAsMCArMSwyNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQorCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgorI2luY2x1ZGUgIkRpc3BsYXlJbmxpbmVSZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBM
aW5lQm94QnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RydWN0IEJhc2VsaW5lIHsKKyAgICAgICAgQmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBh
c2NlbnQsIElubGluZUxheW91dFVuaXQgZGVzY2VudCk7CisgICAgICAgIEJhc2VsaW5lKCkgPSBk
ZWZhdWx0OworCisgICAgICAgIHZvaWQgc2V0QXNjZW50KElubGluZUxheW91dFVuaXQpOworICAg
ICAgICB2b2lkIHNldERlc2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7CisKKyAgICAgICAgdm9pZCBy
ZXNldCgpOworCisgICAgICAgIElubGluZUxheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gYXNjZW50KCkgKyBkZXNjZW50KCk7IH0KKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2Nl
bnQoKSBjb25zdDsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KCkgY29uc3Q7CisK
KyAgICBwcml2YXRlOgorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGJvb2wgbV9oYXNWYWxp
ZEFzY2VudCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9oYXNWYWxpZERlc2NlbnQgeyBmYWxz
ZSB9OworI2VuZGlmCisgICAgICAgIElubGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07Cisg
ICAgICAgIElubGluZUxheW91dFVuaXQgbV9kZXNjZW50IHsgMCB9OworICAgIH07CisKKyAgICBM
aW5lQm94QnVpbGRlcihjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgY29uc3QgQmFzZWxpbmUm
LCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KTsKKyAgICBMaW5lQm94QnVpbGRlcigp
ID0gZGVmYXVsdDsKKworICAgIGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIGxvZ2ljYWxSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVj
dCYgc2Nyb2xsYWJsZU92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlT3ZlcmZs
b3c7IH0KKworICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVy
biBtX3JlY3QubGVmdCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JlY3QucmlnaHQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgbG9n
aWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50b3AoKTsgfQorICAgIElubGluZUxheW91
dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0b20oKTsgfQor
CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Qud2lkdGgoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorCisgICAgY29uc3QgQmFzZWxpbmUmIGJhc2Vs
aW5lKCkgY29uc3Q7CisgICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZyb20gbGluZSBsb2dpY2FsIHRv
cC4gTm90ZSB0aGF0IG9mZnNldCBkb2VzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBhc2NlbnQu
CisgICAgLy8KKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCB0b3Ag
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gKHRvcCBhbGlnbikKKyAgICAvLyAgICAgICAgICAgICBe
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAvLyAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg
IHwKKyAgICAvLyAgIF4gICAgICAgICB8IGJhc2VsaW5lIG9mZnNldCAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgIHwgYmFzZWxpbmUgb2Zmc2V0CisgICAgLy8gICB8ICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8CisgICAgLy8gICB8IGFz
Y2VudCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzY2VudCAgICB8Cisg
ICAgLy8gICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAg
ICAgICAgICB2CisgICAgLy8gICB2ICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lCisgICAgLy8gICAtLS0tLS0tLS0tLS0t
LS0tLSBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBeCisgICAgLy8gICBeICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NlbnQKKyAgICAvLyAgIHwgZGVz
Y2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAvLyAgIHYKKyAg
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCBib3R0b20gIC0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsK
KyAgICB2b2lkIHNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKKyAgICB2b2lk
IHNldERlc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7CisKKyAgICB2b2lkIHJlc2V0
QmFzZWxpbmUoKTsKKyAgICB2b2lkIHJlc2V0RGVzY2VudCgpIHsgbV9iYXNlbGluZS5zZXREZXNj
ZW50KDBfbHUpOyB9CisKKyAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0KSB7IG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KKwor
ICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKKyAg
ICB2b2lkIHNldExvZ2ljYWxXaWR0aChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkgeyBt
X3JlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsgfQorCisgICAgdm9pZCBzZXRTY3JvbGxhYmxl
T3ZlcmZsb3coY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgcmVjdCkgeyBtX3Njcm9sbGFibGVP
dmVyZmxvdyA9IHJlY3Q7IH0KKworICAgIHZvaWQgbW92ZUhvcml6b250YWxseShJbmxpbmVMYXlv
dXRVbml0IGRlbHRhKSB7IG1fcmVjdC5tb3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQorCisgICAg
dm9pZCBleHBhbmRIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3Qu
ZXhwYW5kSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQorICAgIHZvaWQgc2hyaW5rSG9yaXpvbnRhbGx5
KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kSG9yaXpvbnRhbGx5KC1kZWx0YSk7IH0K
KworICAgIHZvaWQgZXhwYW5kVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1f
cmVjdC5leHBhbmRWZXJ0aWNhbGx5KGRlbHRhKTsgfQorICAgIHZvaWQgc2hyaW5rVmVydGljYWxs
eShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZFZlcnRpY2FsbHkoLWRlbHRhKTsgfQor
CisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRtbCNpbmxpbmUt
Zm9ybWF0dGluZworICAgIC8vIExpbmUgYm94ZXMgdGhhdCBjb250YWluIG5vIHRleHQsIG5vIHBy
ZXNlcnZlZCB3aGl0ZSBzcGFjZSwgbm8gaW5saW5lIGVsZW1lbnRzIHdpdGggbm9uLXplcm8gbWFy
Z2lucywgcGFkZGluZywgb3IgYm9yZGVycywKKyAgICAvLyBhbmQgbm8gb3RoZXIgaW4tZmxvdyBj
b250ZW50IChzdWNoIGFzIGltYWdlcywgaW5saW5lIGJsb2NrcyBvciBpbmxpbmUgdGFibGVzKSwg
YW5kIGRvIG5vdCBlbmQgd2l0aCBhIHByZXNlcnZlZCBuZXdsaW5lCisgICAgLy8gbXVzdCBiZSB0
cmVhdGVkIGFzIHplcm8taGVpZ2h0IGxpbmUgYm94ZXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBkZXRl
cm1pbmluZyB0aGUgcG9zaXRpb25zIG9mIGFueSBlbGVtZW50cyBpbnNpZGUgb2YgdGhlbSwKKyAg
ICAvLyBhbmQgbXVzdCBiZSB0cmVhdGVkIGFzIG5vdCBleGlzdGluZyBmb3IgYW55IG90aGVyIHB1
cnBvc2UuCisgICAgLy8gTm90ZSB0aGF0IGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdmlz
dWFsbHkgbm9uLWVtcHR5IGxpbmUuIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDBweCI+dGhpcyBp
cyBzdGlsbCBjb25zaWRlcmVkIG5vbi1lbXB0eTwvc3Bhbj4KKyAgICBib29sIGlzQ29uc2lkZXJl
ZEVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnNpZGVyZWRFbXB0eTsgfQorICAgIHZvaWQg
c2V0SXNDb25zaWRlcmVkRW1wdHkoKSB7IG1faXNDb25zaWRlcmVkRW1wdHkgPSB0cnVlOyB9Cisg
ICAgdm9pZCBzZXRJc0NvbnNpZGVyZWROb25FbXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9
IGZhbHNlOyB9CisKK3ByaXZhdGU6CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIG1faGFz
VmFsaWRCYXNlbGluZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZz
ZXQgeyBmYWxzZSB9OworI2VuZGlmCisgICAgRGlzcGxheTo6SW5saW5lUmVjdCBtX3JlY3Q7Cisg
ICAgRGlzcGxheTo6SW5saW5lUmVjdCBtX3Njcm9sbGFibGVPdmVyZmxvdzsKKyAgICBCYXNlbGlu
ZSBtX2Jhc2VsaW5lOworICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZU9mZnNldCB7IDAg
fTsKKyAgICBib29sIG1faXNDb25zaWRlcmVkRW1wdHkgeyB0cnVlIH07Cit9OworCitpbmxpbmUg
TGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0IERpc3BsYXk6OklubGluZVJlY3Qm
IHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCkKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkK
KyAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmUgPSB0cnVlOworICAgIG1faGFzVmFsaWRCYXNl
bGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0KQoreworICAgIGlmIChsb2dpY2FsSGVpZ2h0IDw9IG1fcmVjdC5oZWlnaHQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7Cit9CisKK2lu
bGluZSBjb25zdCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUmIExpbmVCb3hCdWlsZGVyOjpiYXNl
bGluZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7CisgICAgcmV0
dXJuIG1fYmFzZWxpbmU7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRCYXNl
bGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQorewor
I2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsK
KyNlbmRpZgorICAgIG1fYmFzZWxpbmVPZmZzZXQgPSBzdGQ6Om1heChiYXNlbGluZU9mZnNldCwg
bV9iYXNlbGluZU9mZnNldCk7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRB
c2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQpCit7CisgICAgaWYgKGFzY2Vu
dCA8IG1fYmFzZWxpbmUuYXNjZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBzZXRCYXNlbGlu
ZU9mZnNldElmR3JlYXRlcihhc2NlbnQpOworICAgIG1fYmFzZWxpbmUuc2V0QXNjZW50KGFzY2Vu
dCk7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXREZXNjZW50SWZHcmVhdGVy
KElubGluZUxheW91dFVuaXQgZGVzY2VudCkKK3sKKyAgICBpZiAoZGVzY2VudCA8IG1fYmFzZWxp
bmUuZGVzY2VudCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9iYXNlbGluZS5zZXREZXNjZW50
KGRlc2NlbnQpOworfQorCitpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94QnVpbGRlcjo6
YmFzZWxpbmVPZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmVP
ZmZzZXQpOworICAgIHJldHVybiBtX2Jhc2VsaW5lT2Zmc2V0OworfQorCitpbmxpbmUgdm9pZCBM
aW5lQm94QnVpbGRlcjo6cmVzZXRCYXNlbGluZSgpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlmCisgICAgbV9iYXNlbGlu
ZU9mZnNldCA9IDBfbHU7CisgICAgbV9iYXNlbGluZS5yZXNldCgpOworfQorCitpbmxpbmUgTGlu
ZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQorICAgIDogbV9hc2NlbnQoYXNjZW50KQorICAgICwg
bV9kZXNjZW50KGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlk
QXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5kaWYKK30K
KworaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpzZXRBc2NlbnQoSW5saW5l
TGF5b3V0VW5pdCBhc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlk
QXNjZW50ID0gdHJ1ZTsKKyNlbmRpZgorICAgIG1fYXNjZW50ID0gYXNjZW50OworfQorCitpbmxp
bmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OnNldERlc2NlbnQoSW5saW5lTGF5b3V0
VW5pdCBkZXNjZW50KQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZERlc2Nl
bnQgPSB0cnVlOworI2VuZGlmCisgICAgbV9kZXNjZW50ID0gZGVzY2VudDsKK30KKworaW5saW5l
IHZvaWQgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpyZXNldCgpCit7CisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2Vu
dCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2FzY2VudCA9IDBfbHU7CisgICAgbV9kZXNjZW50ID0g
MF9sdTsKK30KKworaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveEJ1aWxkZXI6OkJhc2Vs
aW5lOjphc2NlbnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkQXNjZW50KTsKKyAg
ICByZXR1cm4gbV9hc2NlbnQ7Cit9CisKK2lubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hC
dWlsZGVyOjpCYXNlbGluZTo6ZGVzY2VudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFs
aWREZXNjZW50KTsKKyAgICByZXR1cm4gbV9kZXNjZW50OworfQorCit9Cit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDg0M2U2YTg3M2NmMzM1YTA1MTA3MTQxMjQ0OWU0
ZmNmMGQ5Yjg2ZTguLmYyNGQwMjNlNGQyMWFhNTk2NGM2OTg4N2YxZWNiNDA2ZmZkNmQzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBMaW5lQnVpbGRl
cjo6aW5pdGlhbGl6ZShjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiAgICAgICAgIG1f
aW5pdGlhbFN0cnV0ID0geyB9OwogCiAgICAgYXV0byBsaW5lUmVjdCA9IERpc3BsYXk6OklubGlu
ZVJlY3QgeyBjb25zdHJhaW50cy5sb2dpY2FsVG9wTGVmdCwgMF9sdSwgaW5pdGlhbExpbmVIZWln
aHQgfTsKLSAgICBhdXRvIGJhc2VsaW5lID0gRGlzcGxheTo6TGluZUJveDo6QmFzZWxpbmUgeyBp
bml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxMaW5lSGVpZ2h0IC0gaW5pdGlhbEJhc2VsaW5l
T2Zmc2V0IH07Ci0gICAgbV9saW5lQm94ID0gRGlzcGxheTo6TGluZUJveCB7IGxpbmVSZWN0LCBi
YXNlbGluZSwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0IH07CisgICAgYXV0byBiYXNlbGluZSA9IExp
bmVCb3hCdWlsZGVyOjpCYXNlbGluZSB7IGluaXRpYWxCYXNlbGluZU9mZnNldCwgaW5pdGlhbExp
bmVIZWlnaHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKKyAgICBtX2xpbmVCb3ggPSBMaW5l
Qm94QnVpbGRlciB7IGxpbmVSZWN0LCBiYXNlbGluZSwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0IH07
CiAgICAgbV9saW5lTG9naWNhbFdpZHRoID0gY29uc3RyYWludHMuYXZhaWxhYmxlTG9naWNhbFdp
ZHRoOwogICAgIG1faGFzSW50cnVzaXZlRmxvYXQgPSBjb25zdHJhaW50cy5saW5lSXNDb25zdHJh
aW5lZEJ5RmxvYXQ7CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCBMaW5lQnVpbGRlcjo6UnVuTGlzdCBM
aW5lQnVpbGRlcjo6Y2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IGlzTGFzdExpbmVX
aQogICAgICAgICB9CiAgICAgICAgIGlmIChpc1Zpc3VhbGx5RW1wdHkoKSkgewogICAgICAgICAg
ICAgbV9saW5lQm94LnJlc2V0QmFzZWxpbmUoKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5zZXRM
b2dpY2FsSGVpZ2h0KDBfbHUpOworICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWln
aHQoeyB9KTsKICAgICAgICAgfQogICAgICAgICAvLyBSZW1vdmUgZGVzY2VudCB3aGVuIGFsbCBj
b250ZW50IGlzIGJhc2VsaW5lIGFsaWduZWQgYnV0IG5vbmUgb2YgdGhlbSBoYXZlIGRlc2NlbnQu
CiAgICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygpLmxpbmVEZXNjZW50TmVl
ZHNDb2xsYXBzaW5nKG1fcnVucykpIHsKQEAgLTY1OCw3ICs2NTgsNyBAQCBib29sIExpbmVCdWls
ZGVyOjppc1Zpc3VhbGx5Tm9uRW1wdHkoY29uc3QgUnVuJiBydW4pIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1EaXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZSBMaW5lQnVpbGRlcjo6aGFs
ZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgSW5saW5lTGF5
b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCkKK0xpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSBMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmlj
cywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCkKIHsKICAgICBhdXRvIGFzY2Vu
dCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwogICAgIGF1dG8gZGVzY2VudCA9IGZvbnRNZXRyaWNz
LmRlc2NlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDRkNWMyNTBkOGY0YTU2YWE5NDUw
OTk4ZjY0ZjIzMTgzYTQzMTY4ZmQuLmNhM2EyNGY5MjZmNjJiM2ZhNzU2ZWZhNTU4NGYzOWU0YTc3
MzYyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5TGluZUJv
eC5oIgogI2luY2x1ZGUgIkRpc3BsYXlSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCisj
aW5jbHVkZSAiSW5saW5lTGluZUJveEJ1aWxkZXIuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRl
bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RydWN0IEhlaWdodEFuZEJhc2VsaW5lIHsKICAgICAgICAgICAgIElubGluZUxheW91
dFVuaXQgaGVpZ2h0IHsgMCB9OwogICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCB7IDAgfTsKLSAgICAgICAgICAgIE9wdGlvbmFsPERpc3BsYXk6OkxpbmVCb3g6OkJh
c2VsaW5lPiBzdHJ1dDsKKyAgICAgICAgICAgIE9wdGlvbmFsPExpbmVCb3hCdWlsZGVyOjpCYXNl
bGluZT4gc3RydXQ7CiAgICAgICAgIH07CiAgICAgICAgIE9wdGlvbmFsPEhlaWdodEFuZEJhc2Vs
aW5lPiBoZWlnaHRBbmRCYXNlbGluZTsKICAgICB9OwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgSW5saW5lTGF5b3V0VW5pdCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJvb2wgaXNU
cmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFp
bGluZ0NvbnRlbnQuaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAgIGNvbnN0
IERpc3BsYXk6OkxpbmVCb3gmIGxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3g7IH0K
KyAgICBjb25zdCBMaW5lQm94QnVpbGRlciYgbGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZUJveDsgfQogICAgIHZvaWQgbW92ZUxvZ2ljYWxMZWZ0KElubGluZUxheW91dFVuaXQpOwogICAg
IHZvaWQgbW92ZUxvZ2ljYWxSaWdodChJbmxpbmVMYXlvdXRVbml0KTsKICAgICB2b2lkIHNldEhh
c0ludHJ1c2l2ZUZsb2F0KCkgeyBtX2hhc0ludHJ1c2l2ZUZsb2F0ID0gdHJ1ZTsgfQpAQCAtMTQz
LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIElzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudCB7IE5vLCBZZXMgfTsKICAgICBSdW5MaXN0IGNsb3NlKElzTGFzdExpbmVXaXRoSW5s
aW5lQ29udGVudCA9IElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudDo6Tm8pOwogCi0gICAgc3Rh
dGljIERpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lIGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBG
b250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIHN0
YXRpYyBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZv
bnRNZXRyaWNzJiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7CiAKIHByaXZh
dGU6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lQm94LmxvZ2ljYWxUb3AoKTsgfQpAQCAtMjExLDEyICsyMTEsMTIgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDsKICAgICBSdW5MaXN0IG1fcnVuczsKICAgICBUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgbV90
cmltbWFibGVUcmFpbGluZ0NvbnRlbnQ7Ci0gICAgT3B0aW9uYWw8RGlzcGxheTo6TGluZUJveDo6
QmFzZWxpbmU+IG1faW5pdGlhbFN0cnV0OworICAgIE9wdGlvbmFsPExpbmVCb3hCdWlsZGVyOjpC
YXNlbGluZT4gbV9pbml0aWFsU3RydXQ7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2xpbmVMb2dp
Y2FsV2lkdGggeyAwIH07CiAgICAgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gbV9ob3Jpem9udGFs
QWxpZ25tZW50OwogICAgIGJvb2wgbV9pc0ludHJpbnNpY1NpemluZyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc0ludHJ1c2l2ZUZsb2F0IHsgZmFsc2UgfTsKLSAgICBEaXNwbGF5OjpMaW5lQm94
IG1fbGluZUJveDsKKyAgICBMaW5lQm94QnVpbGRlciBtX2xpbmVCb3g7CiAgICAgT3B0aW9uYWw8
Ym9vbD4gbV9saW5lSXNWaXN1YWxseUVtcHR5QmVmb3JlVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50
OwogICAgIGJvb2wgbV9zaG91bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcgeyBmYWxzZSB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0xpbmVMYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCmluZGV4IDlmMGVkZDhiMmZkNGM0MTJkNmQ5ZGIzYzc1
N2RlZTk1Y2JlZjcxZjguLjIzZDhmNzE5ZjMxNTU2OWFkNDkwYmMzNTBjYzk5YWVlZTE2ODNlMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVM
YXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZUxheW91dENvbnRleHQuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IE9wdGlvbmFsPFBhcnRpYWxDb250ZW50PiBwYXJ0aWFsQ29udGVudDsKICAgICAgICAgVmVjdG9y
PGNvbnN0IElubGluZUl0ZW0qPiBmbG9hdHM7CiAgICAgICAgIGNvbnN0IExpbmVCdWlsZGVyOjpS
dW5MaXN0IHJ1bkxpc3Q7Ci0gICAgICAgIGNvbnN0IERpc3BsYXk6OkxpbmVCb3ggbGluZUJveDsK
KyAgICAgICAgY29uc3QgTGluZUJveEJ1aWxkZXIgbGluZUJveDsKICAgICB9OwogICAgIHN0cnVj
dCBJbmxpbmVJdGVtUmFuZ2UgewogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBzdGFydCA9PSBlbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXgg
MjM4ODY5YzZkNjI0MDgyMDRjZjFhMTk4YjllMjBkNzc5ODRmZTQ1ZC4uNTc4ZDRkZDA4ODA3OWM5
NGRlN2M2ZmQzNjI1ZjM2NTVjYjliN2FhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiBMYXlv
dXRVbml0IExpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKIHsKICAgICBh
dXRvJiBsaW5lQm94ZXMgPSBkaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7Ci0gICAg
cmV0dXJuIExheW91dFVuaXQgeyBsaW5lQm94ZXMubGFzdCgpLmxvZ2ljYWxCb3R0b20oKSAtIGxp
bmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKSB9OworICAgIHJldHVybiBMYXlvdXRVbml0IHsg
bGluZUJveGVzLmxhc3QoKS5ib3R0b20oKSAtIGxpbmVCb3hlcy5maXJzdCgpLnRvcCgpIH07CiB9
CiAKIHNpemVfdCBMaW5lTGF5b3V0OjpsaW5lQ291bnQoKSBjb25zdApAQCAtMTM3LDcgKzEzNyw3
IEBAIExheW91dFVuaXQgTGluZUxheW91dDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAg
IH0KIAogICAgIGF1dG8mIGZpcnN0TGluZUJveCA9IGlubGluZUNvbnRlbnQtPmxpbmVCb3hlcy5m
aXJzdCgpOwotICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChmaXJzdExpbmVCb3gubG9n
aWNhbFRvcCgpICsgZmlyc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkpOworICAgIHJldHVybiBM
YXlvdXQ6OnRvTGF5b3V0VW5pdChmaXJzdExpbmVCb3gudG9wKCkgKyBmaXJzdExpbmVCb3guYmFz
ZWxpbmVPZmZzZXQoKSk7CiB9CiAKIExheW91dFVuaXQgTGluZUxheW91dDo6bGFzdExpbmVCYXNl
bGluZSgpIGNvbnN0CkBAIC0xNDksNyArMTQ5LDcgQEAgTGF5b3V0VW5pdCBMaW5lTGF5b3V0Ojps
YXN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAgICBhdXRvJiBsYXN0TGluZUJveCA9
IGlubGluZUNvbnRlbnQtPmxpbmVCb3hlcy5sYXN0KCk7Ci0gICAgcmV0dXJuIExheW91dDo6dG9M
YXlvdXRVbml0KGxhc3RMaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxhc3RMaW5lQm94LmJhc2VsaW5l
T2Zmc2V0KCkpOworICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChsYXN0TGluZUJveC50
b3AoKSArIGxhc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkpOwogfQogCiB2b2lkIExpbmVMYXlv
dXQ6OmNvbGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCkBAIC0yNTgsNyArMjU4
LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICB9CiAKICAgICAgICAgYXV0byYgbGlu
ZUJveCA9IGlubGluZUNvbnRlbnQubGluZUJveEZvclJ1bihydW4pOwotICAgICAgICBhdXRvIGJh
c2VsaW5lT2Zmc2V0ID0gcGFpbnRPZmZzZXQueSgpICsgbGluZUJveC5sb2dpY2FsVG9wKCkgKyBs
aW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisgICAgICAgIGF1dG8gYmFzZWxpbmVPZmZzZXQgPSBw
YWludE9mZnNldC55KCkgKyBsaW5lQm94LnRvcCgpICsgbGluZUJveC5iYXNlbGluZU9mZnNldCgp
OwogCiAgICAgICAgIGF1dG8gYmVoYXZpb3IgPSB0ZXh0Q29udGV4dC5leHBhbnNpb24oKSA/IHRl
eHRDb250ZXh0LmV4cGFuc2lvbigpLT5iZWhhdmlvciA6IERlZmF1bHRFeHBhbnNpb247CiAgICAg
ICAgIGF1dG8gaG9yaXpvbnRhbEV4cGFuc2lvbiA9IHRleHRDb250ZXh0LmV4cGFuc2lvbigpID8g
dGV4dENvbnRleHQuZXhwYW5zaW9uKCktPmhvcml6b250YWxFeHBhbnNpb24gOiAwOwpAQCAtMjY2
LDcgKzI2Niw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgU3RyaW5nIHRleHRXaXRo
SHlwaGVuOwogICAgICAgICBpZiAodGV4dENvbnRleHQubmVlZHNIeXBoZW4oKSkKICAgICAgICAg
ICAgIHRleHRXaXRoSHlwaGVuID0gbWFrZVN0cmluZyh0ZXh0Q29udGV4dC5jb250ZW50KCksIHN0
eWxlLmh5cGhlblN0cmluZygpKTsKLSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgIXRleHRXaXRo
SHlwaGVuLmlzRW1wdHkoKSA/IHRleHRXaXRoSHlwaGVuIDogdGV4dENvbnRleHQuY29udGVudCgp
LCBydW4ubGVmdCgpIC0gbGluZUJveC5sb2dpY2FsTGVmdCgpLCBob3Jpem9udGFsRXhwYW5zaW9u
LCBiZWhhdmlvciB9OworICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4u
aXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGV4dC5jb250ZW50KCksIHJ1bi5s
ZWZ0KCkgLSBsaW5lQm94LmxlZnQoKSwgaG9yaXpvbnRhbEV4cGFuc2lvbiwgYmVoYXZpb3IgfTsK
ICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwg
c3R5bGUudGFiU2l6ZSgpKTsKICAgICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54
KCkgKyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZU9mZnNldCwg
ZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCAyZmJiYjljNDQ0NmEwZmRi
YjkyN2JkZTAyOTdiOTM5MDAxYzMyZmY0Li5jMTQ2MjJlOTBjMzlmNzQzMjQwOTFiMWVjZDY4MWZk
NjkxOWI0NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIHZvaWQg
b3V0cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwKIAogICAgIHN0cmVhbSA8PCAibGluZXMgYXJlIC0+ICI7CiAgICAgZm9yIChh
dXRvJiBsaW5lQm94IDogbGluZUJveGVzKQotICAgICAgICBzdHJlYW0gPDwgIlsiIDw8IGxpbmVC
b3gubG9naWNhbExlZnQoKSA8PCAiLCIgPDwgbGluZUJveC5sb2dpY2FsVG9wKCkgPDwgIiAiIDw8
IGxpbmVCb3gubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGxpbmVCb3gubG9naWNhbEhlaWdodCgp
IDw8ICJdICI7CisgICAgICAgIHN0cmVhbSA8PCAiWyIgPDwgbGluZUJveC5sZWZ0KCkgPDwgIiwi
IDw8IGxpbmVCb3gudG9wKCkgPDwgIiAiIDw8IGxpbmVCb3gud2lkdGgoKSA8PCAieCIgPDwgbGlu
ZUJveC5oZWlnaHQoKSA8PCAiXSAiOwogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogCiAgICAgZm9y
IChhdXRvJiBkaXNwbGF5UnVuIDogZGlzcGxheVJ1bnMpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>