<?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>200224</bug_id>
          
          <creation_ts>2019-07-29 07:58:06 -0700</creation_ts>
          <short_desc>[LFC] Remove formatting context type leaf classes</short_desc>
          <delta_ts>2019-08-03 09:09:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>ews-watchlist</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>1556558</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-07-29 07:58:06 -0700</bug_when>
    <thetext>InlineBox LineBreakBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556559</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-29 07:58:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/53661907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556560</commentid>
    <comment_count>2</comment_count>
      <attachid>375075</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-07-29 08:02:11 -0700</bug_when>
    <thetext>Created attachment 375075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558284</commentid>
    <comment_count>3</comment_count>
      <attachid>375485</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-08-03 08:27:34 -0700</bug_when>
    <thetext>Created attachment 375485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558285</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-03 08:30:20 -0700</bug_when>
    <thetext>Attachment 375485 did not pass style-queue:


ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:419:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558287</commentid>
    <comment_count>5</comment_count>
      <attachid>375485</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-03 09:09:55 -0700</bug_when>
    <thetext>Comment on attachment 375485
Patch

Clearing flags on attachment: 375485

Committed r248200: &lt;https://trac.webkit.org/changeset/248200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558288</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-03 09:09:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375075</attachid>
            <date>2019-07-29 08:02:11 -0700</date>
            <delta_ts>2019-08-03 08:27:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200224-20190729080207.patch</filename>
            <type>text/plain</type>
            <size>47223</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3ODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIyNjU0NThiYjcxZDBm
NTI1OGY0NmJmNWVmZWI2MTVmMDE2MjgzNS4uYWU3ZjIzNzQ2NDIxYzA5YmZiOTMzY2M5MWM2MjM2
MTdjMjE1ZjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE5LTA3LTI5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gUmVtb3ZlIGZvcm1h
dHRpbmcgY29udGV4dCB0eXBlIGxlYWYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MzY2MTkwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBMZXQncyBrZWVwIHRoZSBsYXlvdXQgdHJlZSBmb3JtYXR0aW5nIGNvbnRleHQgdHlwZSBpbmRl
cGVuZGVudC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmlj
SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiBsYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmlubGluZUl0ZW1XaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXQ6OnBsYWNlSW5saW5lSXRlbSk6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmlubGluZUJveCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRp
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjp3aWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjpzcGxpdCk6CisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5oOgorICAgICAgICAqIGxheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6Qm94
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojp+Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Qm94Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCb3g6OnNldFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Qm94OjpoYXNUZXh0Q29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJveDo6dGV4dENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OnJlcGxhY2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojpy
ZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6cmFyZURhdGFNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OnJhcmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Qm94OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6cmVtb3ZlUmFyZURhdGEpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzTGluZUJy
ZWFrQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpoYXNSYXJlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6c2V0SGFzUmFyZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW5saW5lQm94IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpyZXBsYWNlZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6cmVwbGFjZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6OmZpcnN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6Omxhc3RDaGlsZCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRhaW5lcjo6aGFzQ2hpbGQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6Omhh
c0luRmxvd0NoaWxkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Q29udGFpbmVyOjpoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6Om91dE9mRmxvd0Rlc2NlbmRhbnRzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVC
b3guY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dElubGlu
ZUJveC5oOiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVC
cmVha0JveC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
TGluZUJyZWFrQm94Lmg6IFJlbW92ZWQuCisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRl
cjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5
b3V0Qm94KToKKwogMjAxOS0wNy0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdIFJlbW92ZSBmb3JtYXR0aW5nIGNvbnRleHQgdHlwZSBjb250YWluZXIg
Y2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggM2Y4OGI4MzMwZGIxZWUzZTgzZjE1ZWRiZTBjY2Ji
N2Y0ZDM5NDIyOS4uOTQyNjc0MzFkNDlmY2RlODUxYWY5YWI3OGMxM2M2NGUyN2FhYjE1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTE0MTEsOCArMTQxMSw2IEBAIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZVRleHRJdGVtLmNwcAogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRp
bC5jcHAKIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dENvbnRhaW5lci5jcHAKLWxheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZUJveC5j
cHAKLWxheW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVCcmVha0JveC5jcHAKIGxheW91dC9sYXlv
dXR0cmVlL0xheW91dFJlcGxhY2VkLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjliZDAxNGI2YmI1ZTMxZTJiZGQ4OGUyYjkzNWI3MGVmNzZmODVmZS4uZjdhMWU0
OGNmYWEwMjg4ZTRhN2M4ODRjYWU0YWJmYmVlMjdjZDc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzk3LDcgKzM5Nyw2IEBA
CiAJCTExOTM0MDk3MUZFRDcxNTUwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckZvcm1Db250
cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5
MzQwOTUxRkVENzE1NTAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmgg
Ki87IH07CiAJCTExOTM0MEEzMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckJs
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTkz
NDBBMTFGRUUwMjQwMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oICovOyB9Owog
CQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTk5RkE0NDIwOEUzNUEzMDAy
MzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTE5OUZBNTMyMDhFMzhEMzAwMjM1OENDIC8qIExheW91dElu
bGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTE5OUZBNTEyMDhFMzhEMzAwMjM1OENDIC8qIExheW91dElubGluZUJveC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTExOTlGQTVCMjA4RTNDN0Yw
MDIzNThDQyAvKiBEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxMTk5RkE1OTIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTExQ0IyNzg5
MjAzQkE1NzAwMDRBMURDOSAvKiBSZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExQ0IyNzg3MjAzQkE1NzAw
MDRBMURDOSAvKiBSZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJMTFFMDY3
RUUxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFFMDY3RUQxRTYyNDZFNTAw
MTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMDI3LDcgKzIwMjYsNiBAQAogCQk2RkQ5
Q0Q1NDIyN0UyMUM4MDBFNTM5NTcgLyogRGlzcGxheVJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRDlDRDUyMjI3RTIxQzgwMEU1Mzk1NyAvKiBE
aXNwbGF5UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZFMTk4MTUyMTc4
Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZFN0NGQTIyMTc3RUVGMjAwNUIxNTczIC8q
IElubGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGRTdDRkEwMjE3N0VFRjEwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggKi87IH07Ci0JCTZG
RTdDRkE0MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRTdDRkEzMjE3N0VGMTAwMDVC
MTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkZEQzQ0MjIxMkVGRjE3MDBBOUNBOTEgLyogRmxvYXRB
dm9pZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RkZEQzQ0MDIxMkVGRjE2MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzA5QTAxRkUxRTNEMEJERDAwNkIw
RDRDIC8qIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUEwMUZEMUUzRDBCQ0MwMDZCMEQ0QyAvKiBNb2R1bGVG
ZXRjaEZhaWx1cmVLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzEwMjVFQ0QxRjk5RjBDRTAwNEEyNTBDIC8qIEFuaW1hdGlvblRpbWVsaW5l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTAyNUVD
NzFGOTlGMDk2MDA0QTI1MEMgLyogQW5pbWF0aW9uVGltZWxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgzOCw4ICs1ODM2LDYgQEAKIAkJ
MTE5MzQwQTExRkVFMDI0MDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyQmxvY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxMTk5RkE0NDIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExheW91dENvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxMTk5RkE0NTIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dENvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTExOTlGQTUxMjA4RTM4RDMwMDIzNThDQyAvKiBMYXlvdXRJbmxpbmVCb3gu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTExOTlGQTUyMjA4RTM4RDMwMDIzNThDQyAvKiBMYXlvdXRJbmxpbmVCb3guY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0SW5saW5lQm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTE5OUZBNTkyMDhFM0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxMTk5RkE1QTIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEaXNwbGF5Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTFC
MDQyRkIyMEIwRTIxNDAwODI4QTZCIC8qIExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkxODgsOCArOTE4NCw2IEBACiAJCTZGRTE5
ODE1MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lQnJlYWtlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFyZ2luVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk2RkU3Q0ZBMzIxNzdFRjEwMDA1QjE1NzMgLyogTGF5b3V0TGluZUJyZWFrQm94Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dExpbmVCcmVha0JveC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RkU3Q0ZBNTIxNzdGMDY5MDA1QjE1NzMgLyog
TGF5b3V0TGluZUJyZWFrQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExheW91dExpbmVCcmVha0JveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZGRTlGMDkyMjIyMTEwMzUwMDRDNTA4MiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZGREM0M0UyMTJFRkYxNjAwQTlD
QTkxIC8qIEZsb2F0QXZvaWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGbG9hdEF2b2lkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkZE
QzQ0MDIxMkVGRjE2MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZsb2F0QXZvaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYzNzYsMTEgKzE2MzcwLDcgQEAKIAkJCQkxMTk5RkE0NTIwOEUzNUEzMDAyMzU4Q0Mg
LyogTGF5b3V0Q29udGFpbmVyLmNwcCAqLywKIAkJCQkxMTk5RkE0NDIwOEUzNUEzMDAyMzU4Q0Mg
LyogTGF5b3V0Q29udGFpbmVyLmggKi8sCiAJCQkJMTFCMDQyRkIyMEIwRTIxNDAwODI4QTZCIC8q
IExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oICovLAotCQkJCTExOTlGQTUyMjA4RTM4RDMwMDIz
NThDQyAvKiBMYXlvdXRJbmxpbmVCb3guY3BwICovLAotCQkJCTExOTlGQTUxMjA4RTM4RDMwMDIz
NThDQyAvKiBMYXlvdXRJbmxpbmVCb3guaCAqLywKIAkJCQkxMTEwMEZDNzIwOTI3NjRDMDA4MUFB
NkMgLyogTGF5b3V0SXRlcmF0b3IuaCAqLywKLQkJCQk2RkU3Q0ZBNTIxNzdGMDY5MDA1QjE1NzMg
LyogTGF5b3V0TGluZUJyZWFrQm94LmNwcCAqLywKLQkJCQk2RkU3Q0ZBMzIxNzdFRjEwMDA1QjE1
NzMgLyogTGF5b3V0TGluZUJyZWFrQm94LmggKi8sCiAJCQkJMTExQzYxNTcyMEFEMUFFMTAwNUI4
MkZBIC8qIExheW91dFJlcGxhY2VkLmNwcCAqLywKIAkJCQkxMTFDNjE1NjIwQUQxQUUxMDA1Qjgy
RkEgLyogTGF5b3V0UmVwbGFjZWQuaCAqLywKIAkJCQkxMTEwMEZENTIwOTUxNERFMDA4MUFBNkMg
LyogTGF5b3V0VHJlZUJ1aWxkZXIuY3BwICovLApAQCAtMzA1NTAsOSArMzA1NDAsNyBAQAogCQkJ
CTExMzEwQ0Y2MjBCQTRBNTYwMDY1QThEMCAvKiBMYXlvdXRDaGlsZEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGNTIwQkE0QTRDMDA2NUE4RDAgLyogTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkxMTk5RkE1MzIwOEUzOEQz
MDAyMzU4Q0MgLyogTGF5b3V0SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENG
NDIwQkE0QTNEMDA2NUE4RDAgLyogTGF5b3V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTZGRTdDRkE0MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMUQ3MkY2MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDUxMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRQ
b2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMwNTMxNjQ4MzRCOTAwMzcxRTVBIC8qIExh
eW91dFJlY3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IGNhMWYwY2E4NGYzODM1ZTkzZWYxOTE1OGMxNjlkYjBmNmJkNjYyMzQuLjQ1ODdl
ZTNjNWNhYzE1YWZjMjhlMDZlMjIzMGRiYjNhM2MxMGYzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0
SXRlbS5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5l
ci5oIgotI2luY2x1ZGUgIkxheW91dElubGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlRleHR1dGlsLmgiCkBAIC02OCw4
ICs2NywxMSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAog
ICAgIGlmICghaXM8Q29udGFpbmVyPihyb290KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1N0YXJ0
XSAtPiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZy
b290KCkgPDwgIikiKTsKICAgICBhdXRvJiByb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPih0aGlz
LT5yb290KCkpOworICAgIGlmICghcm9vdC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIltTdGFydF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBm
b3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCA8PCAiKSIpOwogICAgIGF1dG8gYXZhaWxhYmxlV2lk
dGggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocm9vdCkuY29udGVudEJv
eFdpZHRoKCk7CiAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBh
dmFpbGFibGVXaWR0aCB9OwogICAgIGF1dG8qIGxheW91dEJveCA9IHJvb3QuZmlyc3RJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKTsKQEAgLTgxLDEwICs4MywxMCBAQCB2b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAogICAgICAgICAgICAgY29tcHV0ZU1hcmdpbkJvcmRl
ckFuZFBhZGRpbmdGb3JJbmxpbmVDb250YWluZXIoZG93bmNhc3Q8Q29udGFpbmVyPigqbGF5b3V0
Qm94KSwgdXNlZFZhbHVlcyk7CiAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC0+aXNSZXBsYWNl
ZCgpKQogICAgICAgICAgICAgY29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVC
b3goKmxheW91dEJveCwgdXNlZFZhbHVlcyk7Ci0gICAgICAgIGVsc2UgaWYgKGlzPElubGluZUJv
eD4oKmxheW91dEJveCkpCi0gICAgICAgICAgICBpbml0aWFsaXplTWFyZ2luQm9yZGVyQW5kUGFk
ZGluZ0ZvckdlbmVyaWNJbmxpbmVCb3goZG93bmNhc3Q8SW5saW5lQm94PigqbGF5b3V0Qm94KSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3gtPmlzSW5saW5lTGV2ZWxCb3go
KSk7CisgICAgICAgICAgICBpbml0aWFsaXplTWFyZ2luQm9yZGVyQW5kUGFkZGluZ0ZvckdlbmVy
aWNJbmxpbmVCb3goKmxheW91dEJveCk7CisgICAgICAgIH0KICAgICAgICAgbGF5b3V0Qm94ID0g
bmV4dEluUHJlT3JkZXIoKmxheW91dEJveCwgcm9vdCk7CiAgICAgfQogCkBAIC05OSwxMSArMTAx
LDE1IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCgpIGNvbnN0CiAKIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXM8Q29udGFpbmVyPihyb290KCkpKTsKLQogICAg
IGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKKyAgICBBU1NFUlQoIWxh
eW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJveChyb290KCkpLmludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMocm9vdCgpKSk7CisKKyAgICBBU1NFUlQoaXM8Q29udGFpbmVyPihyb290KCkpKTsK
ICAgICBhdXRvJiByb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPih0aGlzLT5yb290KCkpOwotICAg
IEFTU0VSVCghbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KHJvb3QpLmludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMocm9vdCkpOworICAgIGlmICghcm9vdC5oYXNJbkZsb3dPckZsb2F0
aW5nQ2hpbGQoKSkgeworICAgICAgICBsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3go
cm9vdCkuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhyb290LCBHZW9tZXRyeTo6Y29uc3Ry
YWluQnlNaW5NYXhXaWR0aChyb290LCB7IDAsIDAgfSkpOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgVmVjdG9yPGNvbnN0IEJveCo+IGZvcm1hdHRpbmdDb250ZXh0Um9vdExpc3Q7CiAg
ICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyB9OwpAQCAtMTQ2LDkg
KzE1Miw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKCkgY29uc3QKICAgICBsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVG
b3JCb3gocm9vdCkuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhyb290LCBpbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5p
dGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmljSW5saW5lQm94KGNvbnN0IElu
bGluZUJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
aW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmljSW5saW5lQm94KGNvbnN0
IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNBbm9ueW1v
dXMoKSB8fCBpczxMaW5lQnJlYWtCb3g+KGxheW91dEJveCkpOworICAgIEFTU0VSVChsYXlvdXRC
b3guaXNBbm9ueW1vdXMoKSB8fCBsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSk7CiAgICAgYXV0
byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIGF1dG8mIGRpc3BsYXlC
b3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKQEAg
LTI2NCwxMSArMjcwLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdp
ZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgQm8KIAogdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogewotICAgIGlm
ICghaXM8Q29udGFpbmVyPihyb290KCkpKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byYgcm9v
dCA9IGRvd25jYXN0PENvbnRhaW5lcj4odGhpcy0+cm9vdCgpKTsKLSAgICBpZiAoIXJvb3QuaGFz
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCi0gICAgICAgIHJldHVybjsKICAgICAvLyBUcmF2ZXJz
ZSB0aGUgdHJlZSBhbmQgY3JlYXRlIGlubGluZSBpdGVtcyBvdXQgb2YgY29udGFpbmVycyBhbmQg
bGVhZiBub2Rlcy4gVGhpcyBlc3NlbnRpYWxseSB0dXJucyB0aGUgdHJlZSBpbmxpbmUgc3RydWN0
dXJlIGludG8gYSBmbGF0IG9uZS4KICAgICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+
PC9zcGFuPiAtPiBbQ29udGFpbmVyU3RhcnRdW0lubGluZUJveF1bQ29udGFpbmVyU3RhcnRdW0Nv
bnRhaW5lckVuZF1bSW5saW5lQm94XVtDb250YWluZXJFbmRdCiAgICAgYXV0byYgZm9ybWF0dGlu
Z1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CkBAIC0yOTUsMTQgKzI5NywxNCBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gaW5saW5lIGNvbnRhaW5lciAo
ZS5nLiA8L3NwYW4+KS4KICAgICAgICAgICAgIGlmICh0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxh
eW91dEJveCkpCiAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0o
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6
OkNvbnRhaW5lckVuZCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXM8TGluZUJyZWFrQm94Pihs
YXlvdXRCb3gpKQorICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94
KCkpCiAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRM
aW5lQnJlYWspKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQogICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVt
KHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBl
OjpGbG9hdCkpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlz
PElubGluZUJveD4obGF5b3V0Qm94KSB8fCBsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKTsK
LSAgICAgICAgICAgICAgICBpZiAoaXM8SW5saW5lQm94PihsYXlvdXRCb3gpICYmIGRvd25jYXN0
PElubGluZUJveD4obGF5b3V0Qm94KS5oYXNUZXh0Q29udGVudCgpKQotICAgICAgICAgICAgICAg
ICAgICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKGZvcm1hdHRpbmdT
dGF0ZS5pbmxpbmVJdGVtcygpLCBkb3duY2FzdDxJbmxpbmVCb3g+KGxheW91dEJveCkpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgpKTsKKyAgICAg
ICAgICAgICAgICBpZiAobGF5b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoZm9ybWF0dGlu
Z1N0YXRlLmlubGluZUl0ZW1zKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1h
a2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBlZDNh
OTJmMmM2ODFhZjQxNTBlOTMxYmEyZDZiZGUzMjg5MmJjYzE3Li4xZTY1NWUwMDVkNTA4NjJlNTIz
Nzg1YzkzMzlhMDg2YmNlZWM1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250
ZXh0Um9vdChjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7CiAgICAgdm9p
ZCBjb21wdXRlSW50cmluc2ljV2lkdGhGb3JGbG9hdEJveChjb25zdCBCb3gmKSBjb25zdDsKICAg
ICB2b2lkIGNvbXB1dGVNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nRm9ySW5saW5lQ29udGFpbmVyKGNv
bnN0IENvbnRhaW5lciYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdDsKLSAgICB2b2lkIGlu
aXRpYWxpemVNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nRm9yR2VuZXJpY0lubGluZUJveChjb25zdCBJ
bmxpbmVCb3gmKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVNYXJnaW5Cb3JkZXJBbmRQYWRk
aW5nRm9yR2VuZXJpY0lubGluZUJveChjb25zdCBCb3gmKSBjb25zdDsKICAgICB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNXaWR0aEZvcklubGluZUJsb2NrKGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZv
aWQgY29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgQm94Jiwg
VXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUhvcml6b250YWxN
YXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKaW5kZXggOGZjMDZm
MGUxOWJhZDUyYWU0ZjkyZWFhYjkyZDAzNWEzOGY0ZWYyYy4uMTIzMTk2Y2JiYjQwMTdiYjM4ZTM3
Y2YwZjk3OWM2ZjMzZGYzNTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBMYXlvdXRVbml0
IGlubGluZUl0ZW1XaWR0aChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IElu
bGluZUl0CiAgICAgaWYgKGlzPElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSkgewogICAgICAg
ICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJ
dGVtKTsKICAgICAgICAgYXV0byBlbmQgPSBpbmxpbmVUZXh0SXRlbS5pc0NvbGxhcHNlZCgpID8g
aW5saW5lVGV4dEl0ZW0uc3RhcnQoKSArIDEgOiBpbmxpbmVUZXh0SXRlbS5lbmQoKTsKLSAgICAg
ICAgcmV0dXJuIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbS5pbmxpbmVCb3goKSwgaW5s
aW5lVGV4dEl0ZW0uc3RhcnQoKSwgZW5kLCBjb250ZW50TG9naWNhbExlZnQpOworICAgICAgICBy
ZXR1cm4gVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLmxheW91dEJveCgpLCBpbmxpbmVU
ZXh0SXRlbS5zdGFydCgpLCBlbmQsIGNvbnRlbnRMb2dpY2FsTGVmdCk7CiAgICAgfQogCiAgICAg
YXV0byYgbGF5b3V0Qm94ID0gaW5saW5lSXRlbS5sYXlvdXRCb3goKTsKQEAgLTIwNiw3ICsyMDYs
NyBAQCBMaW5lTGF5b3V0OjpJc0VuZE9mTGluZSBMaW5lTGF5b3V0OjpwbGFjZUlubGluZUl0ZW0o
Y29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbQogICAgIGlmIChicmVha2luZ0NvbnRleHQuYnJl
YWtpbmdCZWhhdmlvciA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdCZWhhdmlvcjo6U3BsaXQpIHsK
ICAgICAgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNUZXh0KCkpOwogICAgICAgICBhdXRvJiBpbmxp
bmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKTsKLSAgICAg
ICAgYXV0byBzcGxpdERhdGEgPSBUZXh0VXRpbDo6c3BsaXQoaW5saW5lVGV4dEl0ZW0uaW5saW5l
Qm94KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCksIGlubGluZVRleHRJdGVtLmxlbmd0aCgpLCBp
dGVtTG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aCwgY3VycmVudExvZ2ljYWxSaWdodCk7Cisg
ICAgICAgIGF1dG8gc3BsaXREYXRhID0gVGV4dFV0aWw6OnNwbGl0KGlubGluZVRleHRJdGVtLmxh
eW91dEJveCgpLCBpbmxpbmVUZXh0SXRlbS5zdGFydCgpLCBpbmxpbmVUZXh0SXRlbS5sZW5ndGgo
KSwgaXRlbUxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIGN1cnJlbnRMb2dpY2FsUmlnaHQp
OwogICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIHRyYWlsaW5nIGlubGluZSBpdGVtLgog
ICAgICAgICBBU1NFUlQoIW1fdHJhaWxpbmdQYXJ0aWFsSW5saW5lVGV4dEl0ZW0pOwogICAgICAg
ICBtX3RyYWlsaW5nUGFydGlhbElubGluZVRleHRJdGVtID0gaW5saW5lVGV4dEl0ZW0uc3BsaXQo
c3BsaXREYXRhLnN0YXJ0LCBzcGxpdERhdGEubGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRleCA4NWEzZGUzYjU3
ZTM2ZDlmM2U3ODNkYjc5ZjhlNWQwYTgxNGQ2ZWRkLi5iMDAxM2I2ZWQ1NjNiY2JmODI4MTM5MTM0
MWYyZGQ1NjE1ZWM1M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKLSNpbmNs
dWRlICJMYXlvdXRJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRMaW5lQnJlYWtCb3guaCIK
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0
SXRlbS5jcHAKaW5kZXggYmFmNWU3MjhhN2M4MTMzYTMzMzMzYTQzNGY4YjJjNGRkMzQyMzA2My4u
ZjEzMDg5YTcwOGYzZmUzZmY5Yjc3ZjcyMDk2Y2RhNDJlZjM2ZTIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVt
LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQogCiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgotI2luY2x1ZGUgIkxheW91dElubGluZUJv
eC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKQEAgLTg2LDcg
Kzg1LDcgQEAgc3RhdGljIHVuc2lnbmVkIG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbih1bnNp
Z25lZCBzdGFydFBvc2l0aW9uLCBMYXp5TGluZUJyZWEKICAgICByZXR1cm4gdGV4dExlbmd0aCAt
IHN0YXJ0UG9zaXRpb247CiB9CiAKLXZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVu
ZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QgSW5saW5lQm94JiBp
bmxpbmVCb3gpCit2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMo
SW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0IEJveCYgaW5saW5lQm94KQogewogICAg
IGF1dG8gdGV4dCA9IGlubGluZUJveC50ZXh0Q29udGVudCgpOwogICAgIGlmICghdGV4dC5sZW5n
dGgoKSkKQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRB
cHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgfQog
fQogCi1JbmxpbmVUZXh0SXRlbTo6SW5saW5lVGV4dEl0ZW0oY29uc3QgSW5saW5lQm94JiBpbmxp
bmVCb3gsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNXaGl0ZXNwYWNl
LCBib29sIGlzQ29sbGFwc2VkKQorSW5saW5lVGV4dEl0ZW06OklubGluZVRleHRJdGVtKGNvbnN0
IEJveCYgaW5saW5lQm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlz
V2hpdGVzcGFjZSwgYm9vbCBpc0NvbGxhcHNlZCkKICAgICA6IElubGluZUl0ZW0oaW5saW5lQm94
LCBUeXBlOjpUZXh0KQogICAgICwgbV9zdGFydChzdGFydCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKQEAgLTEzMSw3ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IElu
bGluZVRleHRJdGVtOjpzcGxpdCh1bnNpZ25lZCBzcGxpdFBvc2l0aW9uLCB1bgogewogICAgIFJF
TEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRpb24gPj0gdGhpcy0+c3RhcnQoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoc3BsaXRQb3NpdGlvbiArIGxlbmd0aCA8PSBlbmQoKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCgpLCBzcGxpdFBvc2l0aW9u
LCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24s
IGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRl
bS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0
ZW0uaAppbmRleCA2MmU2MmEwMTYzM2EyZTg4MTI0MzQ5ZjdhOWI3ZmEwNDg1YjJmMmIxLi45YTlj
N2M4ODBiMWQ1YTlhNzFhMmQyNjY5ZTk4NzVlZWJlNjA5NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmgKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
Ci0jaW5jbHVkZSAiSW5saW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbS5oIgogCkBAIC0zNiw5ICszNSw5IEBAIG5hbWVzcGFj
ZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVUZXh0SXRlbSA6IHB1YmxpYyBJbmxpbmVJdGVtIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5l
SXRlbXMmLCBjb25zdCBJbmxpbmVCb3gmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBl
bmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmLCBjb25zdCBCb3gmKTsKIAotICAgIElubGluZVRleHRJ
dGVtKGNvbnN0IElubGluZUJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJv
b2wgaXNXaGl0ZXNwYWNlLCBib29sIGlzQ29sbGFwc2VkKTsKKyAgICBJbmxpbmVUZXh0SXRlbShj
b25zdCBCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlzV2hpdGVz
cGFjZSwgYm9vbCBpc0NvbGxhcHNlZCk7CiAKICAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnQ7IH0KICAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBzdGFy
dCgpICsgbGVuZ3RoKCk7IH0KQEAgLTQ3LDggKzQ2LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNX
aGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1doaXRlc3BhY2U7IH0KICAgICBib29sIGlz
Q29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbGxhcHNlZDsgfQogCi0gICAgY29uc3Qg
SW5saW5lQm94JiBpbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVCb3g+
KGxheW91dEJveCgpKTsgfQotCiAgICAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBz
cGxpdCh1bnNpZ25lZCBzcGxpdFBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvdGV4dC9UZXh0VXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy90ZXh0L1RleHRVdGlsLmNwcAppbmRleCAzNTc5NjQ1NzgzOGNhYzI3YTllMzI5ZDc3MzUy
ZGNiODgxYjliMWE4Li4xMzFiYTYyMDZjZmJmNDg0OWNkMmZhYjgxYjdjMmVmZGY2OGE0OWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0L1Rl
eHRVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90
ZXh0L1RleHRVdGlsLmNwcApAQCAtMzksNyArMzksNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gVGV4
dFV0aWw6Omh5cGhlblBvc2l0aW9uQmVmb3JlKGNvbnN0IElubGluZUl0ZW0mLCB1bnNpZ25lZCwg
dQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLUxheW91dFVuaXQgVGV4dFV0aWw6Ondp
ZHRoKGNvbnN0IElubGluZUJveCYgaW5saW5lQm94LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
bywgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpCitMYXlvdXRVbml0IFRleHRVdGlsOjp3
aWR0aChjb25zdCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExh
eW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KQogewogICAgIGF1dG8mIHN0eWxlID0gaW5saW5l
Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CkBAIC05
Nyw3ICs5Nyw3IEBAIGJvb2wgVGV4dFV0aWw6OmlzVHJpbW1hYmxlQ29udGVudChjb25zdCBJbmxp
bmVJdGVtJiBpbmxpbmVJdGVtKQogICAgIHJldHVybiBpbmxpbmVUZXh0SXRlbS5pc1doaXRlc3Bh
Y2UoKSAmJiBpbmxpbmVUZXh0SXRlbS5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwogfQog
Ci1UZXh0VXRpbDo6U3BsaXREYXRhIFRleHRVdGlsOjpzcGxpdChjb25zdCBJbmxpbmVCb3gmIGlu
bGluZUJveCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBMYXlvdXRV
bml0IHRleHRXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgTGF5b3V0VW5pdCBjb250
ZW50TG9naWNhbExlZnQpCitUZXh0VXRpbDo6U3BsaXREYXRhIFRleHRVdGlsOjpzcGxpdChjb25z
dCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3Ro
LCBMYXlvdXRVbml0IHRleHRXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgTGF5b3V0
VW5pdCBjb250ZW50TG9naWNhbExlZnQpCiB7CiAgICAgLy8gRklYTUUgVGhpcyBzaG91bGQgdGFr
ZSBoeXBlbnMgaW50byBhY2NvdW50LgogICAgIEFTU0VSVChhdmFpbGFibGVXaWR0aCA+PSAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQv
VGV4dFV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQv
VGV4dFV0aWwuaAppbmRleCBmNjNjNjA0ODlmOTRmYTBlZjY4OTMyYjkyZWNhYWY3ODhiODViMmM2
Li5mMTUyNjUwYjMxNTRmOWViYzQ1ZTA0MTkwYzcwZmZkZTYzMjNjYjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0L1RleHRVdGlsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5o
CkBAIC0zMiwxMSArMzIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91
dCB7CiAKLWNsYXNzIElubGluZUJveDsKLQogY2xhc3MgVGV4dFV0aWwgewogcHVibGljOgotICAg
IHN0YXRpYyBMYXlvdXRVbml0IHdpZHRoKGNvbnN0IElubGluZUJveCYsIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCk7CisgICAgc3RhdGlj
IExheW91dFVuaXQgd2lkdGgoY29uc3QgQm94JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8s
IExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KTsKICAgICBzdGF0aWMgT3B0aW9uYWw8dW5z
aWduZWQ+IGh5cGhlblBvc2l0aW9uQmVmb3JlKGNvbnN0IElubGluZUl0ZW0mLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBib29sIGlzVHJpbW1hYmxlQ29udGVu
dChjb25zdCBJbmxpbmVJdGVtJik7CiAgICAgc3RydWN0IFNwbGl0RGF0YSB7CkBAIC00NCw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoIHsgMCB9OwogICAgICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxXaWR0aDsKICAgICB9OwotICAgIHN0YXRpYyBTcGxpdERhdGEgc3Bs
aXQoY29uc3QgSW5saW5lQm94JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgbGVu
Z3RoLCBMYXlvdXRVbml0IHRleHRXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgTGF5
b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpOworICAgIHN0YXRpYyBTcGxpdERhdGEgc3BsaXQo
Y29uc3QgQm94JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBMYXlv
dXRVbml0IHRleHRXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgTGF5b3V0VW5pdCBj
b250ZW50TG9naWNhbExlZnQpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBMYXlvdXRVbml0IGZp
eGVkUGl0Y2hXaWR0aChTdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDE1YTBlZmEwMDc4
NDFiMzk0NzJlZmQ3Y2M1MmIwNTQ0NzlmYTY4MzkuLjJhYWE5OWY0NDNlM2RhZmJhOGJhOTMwOTNm
NzNhYTczZWRlYzdkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Qm94LmNwcApAQCAtNDEsOSArNDEsMTAgQEAgQm94OjpCb3goT3B0aW9uYWw8RWxlbWVu
dEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmwK
ICAgICA6IG1fc3R5bGUoV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2VsZW1lbnRBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpCiAgICAgLCBtX2Jhc2VUeXBlRmxhZ3MoYmFzZVR5cGVGbGFncykKKyAgICAs
IG1faGFzUmFyZURhdGEoZmFsc2UpCiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkKLSAgICAgICAg
bV9yZXBsYWNlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKKyAgICAgICAg
ZW5zdXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZWQ+KCp0
aGlzKTsKIH0KIAogQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0
ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCkBAIC01MSw4ICs1MiwxNSBAQCBCb3g6OkJveChPcHRp
b25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
IHsKIH0KIAorQm94OjpCb3goU3RyaW5nIHRleHRDb250ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQorICAgIDogQm94KHsgfSwgV1RGTW92ZShzdHlsZSksIEJhc2VUeXBlRmxhZzo6Qm94RmxhZykK
K3sKKyAgICBzZXRUZXh0Q29udGVudCh0ZXh0Q29udGVudCk7Cit9CisKIEJveDo6fkJveCgpCiB7
CisgICAgcmVtb3ZlUmFyZURhdGEoKTsKIH0KIAogYm9vbCBCb3g6OmVzdGFibGlzaGVzRm9ybWF0
dGluZ0NvbnRleHQoKSBjb25zdApAQCAtMjA4LDcgKzIxNiw3IEBAIGNvbnN0IENvbnRhaW5lciYg
Qm94Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QoKSBjb25zdAogICAgIC8vIFdoaWxlIHRoZSByZWxh
dGl2ZWx5IHBvc2l0aW9uZWQgaW5saW5lIGNvbnRhaW5lciAoc3BhbikgaXMgcGxhY2VkIHJlbGF0
aXZlIHRvIGl0cyBjb250YWluaW5nIGJsb2NrICJvdXRlciIsIGl0IGxpdmVzIGluIHRoZSBpbmxp
bmUKICAgICAvLyBmb3JtYXR0aW5nIGNvbnRleHQgZXN0YWJsaXNoZWQgYnkgImlubmVyIi4KICAg
ICBjb25zdCBDb250YWluZXIqIGFuY2VzdG9yID0gbnVsbHB0cjsKLSAgICBpZiAoaXNJbmxpbmVC
b3goKSAmJiBpc0luRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICBpZiAoaXNJbmxpbmVMZXZlbEJveCgp
ICYmIGlzSW5GbG93UG9zaXRpb25lZCgpKQogICAgICAgICBhbmNlc3RvciA9IHBhcmVudCgpOwog
ICAgIGVsc2UKICAgICAgICAgYW5jZXN0b3IgPSBjb250YWluaW5nQmxvY2soKTsKQEAgLTM1NSw2
ICszNjMsNjUgQEAgYm9vbCBCb3g6OmlzUGFkZGluZ0FwcGxpY2FibGUoKSBjb25zdAogICAgICAg
ICAmJiBlbGVtZW50VHlwZSAhPSBFbGVtZW50VHlwZTo6VGFibGVDb2x1bW47CiB9CiAKK3ZvaWQg
Qm94OjpzZXRUZXh0Q29udGVudChTdHJpbmcgdGV4dENvbnRlbnQpCit7CisgICAgQVNTRVJUKGlz
SW5saW5lTGV2ZWxCb3goKSk7CisgICAgZW5zdXJlUmFyZURhdGEoKS50ZXh0Q29udGVudCA9IHRl
eHRDb250ZW50OworfQorCitib29sIEJveDo6aGFzVGV4dENvbnRlbnQoKSBjb25zdAoreworICAg
IEFTU0VSVChpc0lubGluZUxldmVsQm94KCkpOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYm
ICFyYXJlRGF0YSgpLnRleHRDb250ZW50LmlzTnVsbCgpOworfQorCitTdHJpbmcgQm94Ojp0ZXh0
Q29udGVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOworICAgIEFTU0VS
VChpc0lubGluZUxldmVsQm94KCkpOworICAgIHJldHVybiByYXJlRGF0YSgpLnRleHRDb250ZW50
OworfQorCitjb25zdCBSZXBsYWNlZCogQm94OjpyZXBsYWNlZCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGlzUmVwbGFjZWQoKSk7IAorICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsgCisKKyAgICBy
ZXR1cm4gcmFyZURhdGEoKS5yZXBsYWNlZC5nZXQoKTsKK30KKworUmVwbGFjZWQqIEJveDo6cmVw
bGFjZWQoKQoreworICAgIEFTU0VSVChpc1JlcGxhY2VkKCkpOyAKKyAgICBBU1NFUlQoaGFzUmFy
ZURhdGEoKSk7IAorCisgICAgcmV0dXJuIHJhcmVEYXRhKCkucmVwbGFjZWQuZ2V0KCk7Cit9CisK
K0JveDo6UmFyZURhdGFNYXAmIEJveDo6cmFyZURhdGFNYXAoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSYXJlRGF0YU1hcD4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK2NvbnN0
IEJveDo6Qm94UmFyZURhdGEmIEJveDo6cmFyZURhdGEoKSBjb25zdAoreworICAgIEFTU0VSVCho
YXNSYXJlRGF0YSgpKTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZ2V0KHRoaXMpOworfQor
CitCb3g6OkJveFJhcmVEYXRhJiBCb3g6OmVuc3VyZVJhcmVEYXRhKCkKK3sKKyAgICBzZXRIYXNS
YXJlRGF0YSh0cnVlKTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtd
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52
YWx1ZTsKK30KKwordm9pZCBCb3g6OnJlbW92ZVJhcmVEYXRhKCkKK3sKKyAgICByYXJlRGF0YU1h
cCgpLnJlbW92ZSh0aGlzKTsKKyAgICBzZXRIYXNSYXJlRGF0YShmYWxzZSk7Cit9CisKIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAppbmRleCA1
NmU1ZmM5MmUwN2MxZTVhNTY1ZDE4YzVkMWQ4Njc0YjEwODc0MjlhLi5mNzIxMTc2ZDZhYTc2Y2M2
OTRhNGVkZjYxZTEyNmMzYmIzZWY5ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRh
YmxlRm9vdGVyR3JvdXAsCiAgICAgICAgIEltYWdlLAogICAgICAgICBJRnJhbWUsCisgICAgICAg
IEhhcmRMaW5lQnJlYWssCiAgICAgICAgIEdlbmVyaWNFbGVtZW50CiAgICAgfTsKIApAQCAtNjQs
MTMgKzY1LDEyIEBAIHB1YmxpYzoKIAogICAgIGVudW0gQmFzZVR5cGVGbGFnIHsKICAgICAgICAg
Qm94RmxhZyAgICAgICAgICAgICAgID0gMSA8PCAwLAotICAgICAgICBDb250YWluZXJGbGFnICAg
ICAgICAgPSAxIDw8IDEsCi0gICAgICAgIElubGluZUJveEZsYWcgICAgICAgICA9IDEgPDwgMywK
LSAgICAgICAgTGluZUJyZWFrQm94RmxhZyAgICAgID0gMSA8PCA1CisgICAgICAgIENvbnRhaW5l
ckZsYWcgICAgICAgICA9IDEgPDwgMQogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCYXNl
VHlwZUZsYWdzOwogCiAgICAgQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVy
U3R5bGUmJik7CisgICAgQm94KFN0cmluZyB0ZXh0Q29udGVudCwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+Qm94KCk7CiAKICAgICBib29sIGVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRl
eHQoKSBjb25zdDsKQEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlcGxh
Y2VkKCkgY29uc3QgeyByZXR1cm4gaXNJbWFnZSgpIHx8IGlzSUZyYW1lKCk7IH0KICAgICBib29s
IGlzSUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50QXR0cmlidXRlcyAmJiBtX2VsZW1l
bnRBdHRyaWJ1dGVzLnZhbHVlKCkuZWxlbWVudFR5cGUgPT0gRWxlbWVudFR5cGU6OklGcmFtZTsg
fQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEF0dHJpYnV0ZXMg
JiYgbV9lbGVtZW50QXR0cmlidXRlcy52YWx1ZSgpLmVsZW1lbnRUeXBlID09IEVsZW1lbnRUeXBl
OjpJbWFnZTsgfQorICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnRBdHRyaWJ1dGVzICYmIG1fZWxlbWVudEF0dHJpYnV0ZXMudmFsdWUoKS5lbGVtZW50VHlw
ZSA9PSBFbGVtZW50VHlwZTo6SGFyZExpbmVCcmVhazsgfQogCiAgICAgY29uc3QgQ29udGFpbmVy
KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIGNvbnN0IEJveCogbmV4
dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25leHRTaWJsaW5nOyB9CkBAIC0xMzQsMTcgKzEz
NSwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Jsb2NrQ29udGFpbmVyKCkgY29uc3QgeyByZXR1
cm4gaXNCbG9ja0xldmVsQm94KCkgJiYgaXNDb250YWluZXIoKTsgfQogICAgIGJvb2wgaXNJbmxp
bmVDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBpc0lubGluZUxldmVsQm94KCkgJiYgaXNDb250
YWluZXIoKTsgfQogCi0gICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZVR5cGVGbGFncyAmIElubGluZUJveEZsYWc7IH0KLSAgICBib29sIGlzTGluZUJyZWFrQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlVHlwZUZsYWdzICYgTGluZUJyZWFrQm94RmxhZzsgfQotCiAg
ICAgYm9vbCBpc1BhZGRpbmdBcHBsaWNhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJmbG93
VmlzaWJsZSgpIGNvbnN0OwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHlsZTsgfQogCi0gICAgY29uc3QgUmVwbGFjZWQqIHJlcGxhY2VkKCkgY29u
c3QgeyByZXR1cm4gbV9yZXBsYWNlZC5nZXQoKTsgfQorICAgIGNvbnN0IFJlcGxhY2VkKiByZXBs
YWNlZCgpIGNvbnN0OwogICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgdW50aWwgYWZ0ZXIgaW50cmlu
c2ljIHNpemUgY2hhbmdlIGlzIHRyYWNrZWQgYnkgUmVwbGFjZWQuCi0gICAgUmVwbGFjZWQqIHJl
cGxhY2VkKCkgeyByZXR1cm4gbV9yZXBsYWNlZC5nZXQoKTsgfQorICAgIFJlcGxhY2VkKiByZXBs
YWNlZCgpOworICAgIGJvb2wgaGFzVGV4dENvbnRlbnQoKSBjb25zdDsKKyAgICBTdHJpbmcgdGV4
dENvbnRlbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UGFyZW50KENvbnRhaW5lciYgcGFyZW50
KSB7IG1fcGFyZW50ID0gJnBhcmVudDsgfQogICAgIHZvaWQgc2V0TmV4dFNpYmxpbmcoQm94JiBu
ZXh0U2libGluZykgeyBtX25leHRTaWJsaW5nID0gJm5leHRTaWJsaW5nOyB9CkBAIC0xNTQsNiAr
MTU0LDI3IEBAIHByb3RlY3RlZDoKICAgICBCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+
LCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHNl
dFRleHRDb250ZW50KFN0cmluZyB0ZXh0Q29udGVudCk7CisKKyAgICBjbGFzcyBCb3hSYXJlRGF0
YSB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAg
ICAgQm94UmFyZURhdGEoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgU3RyaW5nIHRleHRDb250ZW50
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVwbGFjZWQ+IHJlcGxhY2VkOworICAgIH07CisK
KyAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YTsgfQor
ICAgIHZvaWQgc2V0SGFzUmFyZURhdGEoYm9vbCBoYXNSYXJlRGF0YSkgeyBtX2hhc1JhcmVEYXRh
ID0gaGFzUmFyZURhdGE7IH0KKyAgICBjb25zdCBCb3hSYXJlRGF0YSYgcmFyZURhdGEoKSBjb25z
dDsKKyAgICBCb3hSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGEoKTsKKyAgICB2b2lkIHJlbW92ZVJh
cmVEYXRhKCk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQm94Kiwgc3RkOjp1bmlxdWVf
cHRyPEJveFJhcmVEYXRhPj4gUmFyZURhdGFNYXA7CisKKyAgICBzdGF0aWMgUmFyZURhdGFNYXAm
IHJhcmVEYXRhTWFwKCk7CisKICAgICBSZW5kZXJTdHlsZSBtX3N0eWxlOwogICAgIE9wdGlvbmFs
PEVsZW1lbnRBdHRyaWJ1dGVzPiBtX2VsZW1lbnRBdHRyaWJ1dGVzOwogCkBAIC0xNjEsOSArMTgy
LDggQEAgcHJpdmF0ZToKICAgICBCb3gqIG1fcHJldmlvdXNTaWJsaW5nIHsgbnVsbHB0ciB9Owog
ICAgIEJveCogbV9uZXh0U2libGluZyB7IG51bGxwdHIgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZXBsYWNlZD4gbV9yZXBsYWNlZDsKLQogICAgIHVuc2lnbmVkIG1fYmFzZVR5cGVGbGFncyA6
IDY7CisgICAgYm9vbCBtX2hhc1JhcmVEYXRhIDogMTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyLmgKaW5kZXggZmQyMWQ1
MTkzYmM1M2VhZDU2NGQ5NWZmZTkxZTNmZDI4NjBlYjU5Yi4uMjdmMzFmYzEwZmI0OGZlNjJkNDI5
NmM2YTc1YTQ4NmVmMWI4NWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q29udGFpbmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUmVuZGVy
U3R5bGU7CiAKIG5hbWVzcGFjZSBMYXlvdXQgewogCi1jbGFzcyBDb250YWluZXIgOiBwdWJsaWMg
Qm94IHsKK2NsYXNzIENvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBCb3ggewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoQ29udGFpbmVyKTsKIHB1YmxpYzoKICAgICBDb250YWluZXIoT3B0aW9u
YWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzID0gQ29u
dGFpbmVyRmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0SW5saW5lQm94LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M5ZGU4
Yjk5MDk4NzY0NzVlNmI4NTQ1Zjc3NGNiMGZjMWIwZjkxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRJbmxpbmVCb3guY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMYXlvdXRJbmxpbmVCb3gu
aCIKLQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotCi0jaW5jbHVkZSAi
UmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQotV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKElubGluZUJveCk7Ci0KLUlubGluZUJveDo6SW5saW5lQm94KE9wdGlvbmFsPEVs
ZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlw
ZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCi0gICAgOiBCb3goYXR0cmlidXRlcywgV1RGTW92ZShzdHls
ZSksIGJhc2VUeXBlRmxhZ3MgfCBJbmxpbmVCb3hGbGFnKQotewotfQotCi19Ci19Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5s
aW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVC
b3guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDliMDA5Y2U4ZTM5NDMyMGMwNzA4
NTM0OTk2ZGViM2RkMzBkYzJiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVC
b3guaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2Mu
aD4KLQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFJlbmRlclN0eWxlOwotCi1uYW1lc3BhY2UgTGF5b3V0IHsKLQot
Y2xhc3MgSW5saW5lQm94IDogcHVibGljIEJveCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChJbmxpbmVCb3gpOwotcHVibGljOgotICAgIElubGluZUJveChPcHRpb25hbDxFbGVtZW50QXR0
cmlidXRlcz4sIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MgPSBJbmxpbmVCb3hGbGFnKTsK
LQotICAgIHZvaWQgc2V0VGV4dENvbnRlbnQoU3RyaW5nIHRleHQpIHsgbV90ZXh0Q29udGVudCA9
IHRleHQ7IH0KLSAgICBib29sIGhhc1RleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gIW1fdGV4
dENvbnRlbnQuaXNOdWxsKCk7IH0KLSAgICBTdHJpbmcgdGV4dENvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3RleHRDb250ZW50OyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fdGV4dENvbnRl
bnQ7Ci19OwotCi19Ci19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTEFZT1VUX0JPWChJbmxp
bmVCb3gsIGlzSW5saW5lQm94KCkpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0TGluZUJyZWFrQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVCcmVha0JveC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZiZTIwYTlkNWE5YTI0MTI2NDYxZjk1Yzg2YTFmZGZhZDZkNjUx
ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0TGluZUJyZWFrQm94LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiTGF5b3V0TGluZUJyZWFrQm94LmgiCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNl
IExheW91dCB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChMaW5lQnJlYWtCb3gpOwot
Ci1MaW5lQnJlYWtCb3g6OkxpbmVCcmVha0JveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4g
YXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKLSAgICA6IElubGluZUJveChhdHRyaWJ1
dGVzLCBXVEZNb3ZlKHN0eWxlKSwgTGluZUJyZWFrQm94RmxhZykKLXsKLX0KLQotfQotfQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRM
aW5lQnJlYWtCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dExp
bmVCcmVha0JveC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWQwOTBhZTk3ZGFk
YWE2MzEwOWMxMDcxYjg4MTFjOTgzMDc2MTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dExpbmVCcmVha0JveC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTGF5b3V0SW5saW5lQm94LmgiCi0jaW5jbHVk
ZSA8d3RmL0lzb01hbGxvYy5oPgotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVuZGVyU3R5bGU7Ci0KLW5hbWVz
cGFjZSBMYXlvdXQgewotCi1jbGFzcyBMaW5lQnJlYWtCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsK
LSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExpbmVCcmVha0JveCk7Ci1wdWJsaWM6Ci0gICAg
TGluZUJyZWFrQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7
Ci19OwotCi19Ci19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTEFZT1VUX0JPWChMaW5lQnJl
YWtCb3gsIGlzTGluZUJyZWFrQm94KCkpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGJjZGYz
OGVjNGYyMjI5ZGRkZWFiMGY1YmY4MWY5NmVkOWY3Yjc5OWQuLjkzM2RkODQ1YTZjM2UxZGU4MWM1
YTU0OWI4ODgwNGJkYTZjMDA4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCi0jaW5jbHVkZSAiTGF5b3V0SW5saW5lQm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2lu
Y2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKQEAgLTExMyw2ICsxMTIsOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgICAgIHJldHVybiBCb3g6OkVsZW1lbnRBdHRy
aWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6SW1hZ2UgfTsKICAgICAgICAgICAgIGlmIChlbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OklGcmFtZSB9
OworICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpiclRhZykp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVs
ZW1lbnRUeXBlOjpIYXJkTGluZUJyZWFrIH07CiAgICAgICAgICAgICByZXR1cm4gQm94OjpFbGVt
ZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OkdlbmVyaWNFbGVtZW50IH07CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTEyMiwxNyArMTIzLDE2IEBA
IHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3Qg
UmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVu
ZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxw
ZXIgZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgp
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUJveD4oT3B0aW9uYWw8Qm94OjpFbGVtZW50
QXR0cmlidXRlcz4oKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkp
KTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRv
d25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lQm94PihPcHRp
b25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzPigpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6
SW5saW5lKSk7Ci0gICAgICAgIGRvd25jYXN0PElubGluZUJveD4oKmNoaWxkTGF5b3V0Qm94KS5z
ZXRUZXh0Q29udGVudChkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5h
bFRleHQoKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVy
ZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOwogICAgICAgICByZXR1cm4gY2hpbGRM
YXlvdXRCb3g7CiAgICAgfQogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJF
bGVtZW50PihjaGlsZFJlbmRlcmVyKTsKICAgICBhdXRvIGRpc3BsYXlUeXBlID0gcmVuZGVyZXIu
c3R5bGUoKS5kaXNwbGF5KCk7CiAgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIp
KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5lQnJlYWtCb3g+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkp
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAKICAg
ICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSkgewogICAgICAgICAvLyBDb25zdHJ1Y3Qg
dGhlIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVyIGJveCAoYW5kIG5vdCB0aGUgdGFibGUgYm94IGl0
c2VsZikuCkBAIC0xNDEsNyArMTQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxk
ZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAg
ICAgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpCbG9jaykKICAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJl
bmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZUJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xv
bmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgeWV0IHN1
cHBvcnQgYWxsIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCB0aGlzIGlzIHRlbXBvcmFyeSBhbnl3YXku
CiAgICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKSkKICAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNTaXplKGRvd25jYXN0PFJlbmRl
clJlcGxhY2VkPihyZW5kZXJlcikuaW50cmluc2ljU2l6ZSgpKTsKQEAgLTI4Niw3ICsyODYsNyBA
QCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBC
b3gmIGxheW91dEJveCwgY29uc3QgRGlzcAogICAgICAgICAgICAgc3RyZWFtIDw8ICJJTUcgcmVw
bGFjZWQgaW5saW5lIGJveCI7CiAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0Fub255bW91
cygpKQogICAgICAgICAgICAgc3RyZWFtIDw8ICJhbm9ueW1vdXMgaW5saW5lIGJveCI7Ci0gICAg
ICAgIGVsc2UgaWYgKGlzPExpbmVCcmVha0JveD4obGF5b3V0Qm94KSkKKyAgICAgICAgZWxzZSBp
ZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgIkJS
IGxpbmUgYnJlYWsiOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdHJlYW0gPDwgImlubGlu
ZSBib3giOwpAQCAtMjk3LDggKzI5Nyw4IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChU
ZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBEaXNwCiAgICAg
aWYgKGRpc3BsYXlCb3gpCiAgICAgICAgIHN0cmVhbSA8PCAiIGF0ICgiIDw8IGRpc3BsYXlCb3gt
PmxlZnQoKSA8PCAiLCIgPDwgZGlzcGxheUJveC0+dG9wKCkgPDwgIikgc2l6ZSAiIDw8IGRpc3Bs
YXlCb3gtPndpZHRoKCkgPDwgIngiIDw8IGRpc3BsYXlCb3gtPmhlaWdodCgpOwogICAgIHN0cmVh
bSA8PCAiIGxheW91dCBib3gtPigiIDw8ICZsYXlvdXRCb3ggPDwgIikiOwotICAgIGlmIChpczxJ
bmxpbmVCb3g+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8SW5saW5lQm94PihsYXlvdXRCb3gpLmhh
c1RleHRDb250ZW50KCkpCi0gICAgICAgIHN0cmVhbSA8PCAiIHRleHQgY29udGVudCBbXCIiIDw8
IGRvd25jYXN0PElubGluZUJveD4obGF5b3V0Qm94KS50ZXh0Q29udGVudCgpLnV0ZjgoKS5kYXRh
KCkgPDwgIlwiXSI7CisgICAgaWYgKGxheW91dEJveC5pc0lubGluZUxldmVsQm94KCkgJiYgbGF5
b3V0Qm94LmlzQW5vbnltb3VzKCkpCisgICAgICAgIHN0cmVhbSA8PCAiIHRleHQgY29udGVudCBb
XCIiIDw8IGxheW91dEJveC50ZXh0Q29udGVudCgpLnV0ZjgoKS5kYXRhKCkgPDwgIlwiXSI7CiAK
ICAgICBzdHJlYW0ubmV4dExpbmUoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375485</attachid>
            <date>2019-08-03 08:27:34 -0700</date>
            <delta_ts>2019-08-03 09:09:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200224-20190803082733.patch</filename>
            <type>text/plain</type>
            <size>52031</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRmNGEyMGE1MzQ4NGFj
OTk4YTVmOTVlNzRiNmQ1Y2RmNWIxNmNiOC4uMmMzNWUwOWM5MTQ2N2U1ZWE2M2FiNTg3Y2M2NDYw
NTQ3MjRiMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE5LTA4LTAzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gUmVtb3ZlIGZvcm1h
dHRpbmcgY29udGV4dCB0eXBlIGxlYWYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MzY2MTkwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICBMZXQncyBrZWVwIHRoZSBsYXlvdXQgdHJlZSBmb3JtYXR0aW5nIGNvbnRleHQgdHlwZSBpbmRl
cGVuZGVudC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmlj
SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiBsYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmlubGluZUl0ZW1XaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXQ6OnBsYWNlSW5saW5lSXRlbSk6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmlubGluZUJveCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRp
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjp3aWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjpzcGxpdCk6CisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5oOgorICAgICAgICAqIGxheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6Qm94
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojp+Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Qm94Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCb3g6OnNldFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Qm94OjpoYXNUZXh0Q29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJveDo6dGV4dENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OnJlcGxhY2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojpy
ZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6cmFyZURhdGFNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OnJhcmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Qm94OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6cmVtb3ZlUmFyZURhdGEpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzTGluZUJy
ZWFrQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpoYXNSYXJlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6c2V0SGFzUmFyZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW5saW5lQm94IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpyZXBsYWNlZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6cmVwbGFjZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6OmZpcnN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6Omxhc3RDaGlsZCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRhaW5lcjo6aGFzQ2hpbGQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6Omhh
c0luRmxvd0NoaWxkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Q29udGFpbmVyOjpoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6Om91dE9mRmxvd0Rlc2NlbmRhbnRzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVC
b3guY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dElubGlu
ZUJveC5oOiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVC
cmVha0JveC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
TGluZUJyZWFrQm94Lmg6IFJlbW92ZWQuCisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRl
cjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5
b3V0Qm94KToKKwogMjAxOS0wOC0wMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdIFJlbW92ZSBmb3JtYXR0aW5nIGNvbnRleHQgdHlwZSBjb250YWluZXIg
Y2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggM2Y4OGI4MzMwZGIxZWUzZTgzZjE1ZWRiZTBjY2Ji
N2Y0ZDM5NDIyOS4uOTQyNjc0MzFkNDlmY2RlODUxYWY5YWI3OGMxM2M2NGUyN2FhYjE1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTE0MTEsOCArMTQxMSw2IEBAIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZVRleHRJdGVtLmNwcAogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRp
bC5jcHAKIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dENvbnRhaW5lci5jcHAKLWxheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZUJveC5j
cHAKLWxheW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVCcmVha0JveC5jcHAKIGxheW91dC9sYXlv
dXR0cmVlL0xheW91dFJlcGxhY2VkLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjliZDAxNGI2YmI1ZTMxZTJiZGQ4OGUyYjkzNWI3MGVmNzZmODVmZS4uZjdhMWU0
OGNmYWEwMjg4ZTRhN2M4ODRjYWU0YWJmYmVlMjdjZDc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzk3LDcgKzM5Nyw2IEBA
CiAJCTExOTM0MDk3MUZFRDcxNTUwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckZvcm1Db250
cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5
MzQwOTUxRkVENzE1NTAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmgg
Ki87IH07CiAJCTExOTM0MEEzMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckJs
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTkz
NDBBMTFGRUUwMjQwMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oICovOyB9Owog
CQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTk5RkE0NDIwOEUzNUEzMDAy
MzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTE5OUZBNTMyMDhFMzhEMzAwMjM1OENDIC8qIExheW91dElu
bGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTE5OUZBNTEyMDhFMzhEMzAwMjM1OENDIC8qIExheW91dElubGluZUJveC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTExOTlGQTVCMjA4RTNDN0Yw
MDIzNThDQyAvKiBEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxMTk5RkE1OTIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTExQ0IyNzg5
MjAzQkE1NzAwMDRBMURDOSAvKiBSZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExQ0IyNzg3MjAzQkE1NzAw
MDRBMURDOSAvKiBSZW5kZXJUcmVlQnVpbGRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJMTFFMDY3
RUUxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFFMDY3RUQxRTYyNDZFNTAw
MTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMDI3LDcgKzIwMjYsNiBAQAogCQk2RkQ5
Q0Q1NDIyN0UyMUM4MDBFNTM5NTcgLyogRGlzcGxheVJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRDlDRDUyMjI3RTIxQzgwMEU1Mzk1NyAvKiBE
aXNwbGF5UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZFMTk4MTUyMTc4
Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZFN0NGQTIyMTc3RUVGMjAwNUIxNTczIC8q
IElubGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGRTdDRkEwMjE3N0VFRjEwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggKi87IH07Ci0JCTZG
RTdDRkE0MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRTdDRkEzMjE3N0VGMTAwMDVC
MTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkZEQzQ0MjIxMkVGRjE3MDBBOUNBOTEgLyogRmxvYXRB
dm9pZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RkZEQzQ0MDIxMkVGRjE2MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzA5QTAxRkUxRTNEMEJERDAwNkIw
RDRDIC8qIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUEwMUZEMUUzRDBCQ0MwMDZCMEQ0QyAvKiBNb2R1bGVG
ZXRjaEZhaWx1cmVLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzEwMjVFQ0QxRjk5RjBDRTAwNEEyNTBDIC8qIEFuaW1hdGlvblRpbWVsaW5l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTAyNUVD
NzFGOTlGMDk2MDA0QTI1MEMgLyogQW5pbWF0aW9uVGltZWxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgzOCw4ICs1ODM2LDYgQEAKIAkJ
MTE5MzQwQTExRkVFMDI0MDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyQmxvY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxMTk5RkE0NDIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExheW91dENvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxMTk5RkE0NTIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dENvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTExOTlGQTUxMjA4RTM4RDMwMDIzNThDQyAvKiBMYXlvdXRJbmxpbmVCb3gu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTExOTlGQTUyMjA4RTM4RDMwMDIzNThDQyAvKiBMYXlvdXRJbmxpbmVCb3guY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0SW5saW5lQm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTE5OUZBNTkyMDhFM0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxMTk5RkE1QTIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEaXNwbGF5Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTFC
MDQyRkIyMEIwRTIxNDAwODI4QTZCIC8qIExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkxODgsOCArOTE4NCw2IEBACiAJCTZGRTE5
ODE1MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lQnJlYWtlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFyZ2luVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk2RkU3Q0ZBMzIxNzdFRjEwMDA1QjE1NzMgLyogTGF5b3V0TGluZUJyZWFrQm94Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dExpbmVCcmVha0JveC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RkU3Q0ZBNTIxNzdGMDY5MDA1QjE1NzMgLyog
TGF5b3V0TGluZUJyZWFrQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExheW91dExpbmVCcmVha0JveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZGRTlGMDkyMjIyMTEwMzUwMDRDNTA4MiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZGREM0M0UyMTJFRkYxNjAwQTlD
QTkxIC8qIEZsb2F0QXZvaWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGbG9hdEF2b2lkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkZE
QzQ0MDIxMkVGRjE2MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZsb2F0QXZvaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYzNzYsMTEgKzE2MzcwLDcgQEAKIAkJCQkxMTk5RkE0NTIwOEUzNUEzMDAyMzU4Q0Mg
LyogTGF5b3V0Q29udGFpbmVyLmNwcCAqLywKIAkJCQkxMTk5RkE0NDIwOEUzNUEzMDAyMzU4Q0Mg
LyogTGF5b3V0Q29udGFpbmVyLmggKi8sCiAJCQkJMTFCMDQyRkIyMEIwRTIxNDAwODI4QTZCIC8q
IExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oICovLAotCQkJCTExOTlGQTUyMjA4RTM4RDMwMDIz
NThDQyAvKiBMYXlvdXRJbmxpbmVCb3guY3BwICovLAotCQkJCTExOTlGQTUxMjA4RTM4RDMwMDIz
NThDQyAvKiBMYXlvdXRJbmxpbmVCb3guaCAqLywKIAkJCQkxMTEwMEZDNzIwOTI3NjRDMDA4MUFB
NkMgLyogTGF5b3V0SXRlcmF0b3IuaCAqLywKLQkJCQk2RkU3Q0ZBNTIxNzdGMDY5MDA1QjE1NzMg
LyogTGF5b3V0TGluZUJyZWFrQm94LmNwcCAqLywKLQkJCQk2RkU3Q0ZBMzIxNzdFRjEwMDA1QjE1
NzMgLyogTGF5b3V0TGluZUJyZWFrQm94LmggKi8sCiAJCQkJMTExQzYxNTcyMEFEMUFFMTAwNUI4
MkZBIC8qIExheW91dFJlcGxhY2VkLmNwcCAqLywKIAkJCQkxMTFDNjE1NjIwQUQxQUUxMDA1Qjgy
RkEgLyogTGF5b3V0UmVwbGFjZWQuaCAqLywKIAkJCQkxMTEwMEZENTIwOTUxNERFMDA4MUFBNkMg
LyogTGF5b3V0VHJlZUJ1aWxkZXIuY3BwICovLApAQCAtMzA1NTAsOSArMzA1NDAsNyBAQAogCQkJ
CTExMzEwQ0Y2MjBCQTRBNTYwMDY1QThEMCAvKiBMYXlvdXRDaGlsZEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGNTIwQkE0QTRDMDA2NUE4RDAgLyogTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkxMTk5RkE1MzIwOEUzOEQz
MDAyMzU4Q0MgLyogTGF5b3V0SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENG
NDIwQkE0QTNEMDA2NUE4RDAgLyogTGF5b3V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTZGRTdDRkE0MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMUQ3MkY2MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDUxMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRQ
b2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMwNTMxNjQ4MzRCOTAwMzcxRTVBIC8qIExh
eW91dFJlY3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDVkMGNkNzU0YTlhNDNiM2VjYmIzYmFhMjFlZDM4M2U3YzM1
ODRlNDUuLjRiZjNlYTVmZWM3NzJhNjc5YTViNWEyMjM2MzhlNDM2NzRjNzcxOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTMwMywxMCArMzAz
LDkgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICAgICAgaWYgKCFzdHlsZS5sb2dpY2Fs
V2lkdGgoKS5pc0F1dG8oKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgaWYg
KGxheW91dEJveC5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHJlcGxhY2VkID0g
KmxheW91dEJveC5yZXBsYWNlZCgpOwotICAgICAgICAgICAgaWYgKHJlcGxhY2VkLmhhc0ludHJp
bnNpY1dpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2VkV2lkdGggPSByZXBs
YWNlZC5pbnRyaW5zaWNXaWR0aCgpOworICAgICAgICBpZiAoYXV0byogcmVwbGFjZWQgPSBsYXlv
dXRCb3gucmVwbGFjZWQoKSkgeworICAgICAgICAgICAgaWYgKHJlcGxhY2VkLT5oYXNJbnRyaW5z
aWNXaWR0aCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlZFdpZHRoID0gcmVwbGFj
ZWQtPmludHJpbnNpY1dpZHRoKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVwbGFjZWRX
aWR0aCwgcmVwbGFjZWRXaWR0aCB9OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDFjYjNlZjk5YTc1MTU1NmJlNWU3
M2Q4ZGEwYzYyOTc4NTNhYTU1MzkuLjA3NTdjNzMyZjRlOWEwMDI5YWQwOGMwYjU5Y2Y5NTMyMjE0
MzNmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIGJv
b2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBz
ZVRocm91Z2goY29uc3QgTGF5b3V0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJ
WE1FOiBCbG9jayByZXBsYWNlZCBib3hlcyBjbGVhcmx5IGRvbid0IGNvbGxhcHNlIHRocm91Z2gg
dGhlaXIgbWFyZ2lucywgYnV0IEkgY291bGRuJ3QgZmluZCBpdCBpbiB0aGUgc3BlYyB5ZXQgKGFu
ZCBubywgaXQncyBub3QgYSBxdWlyaykuCi0gICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkKCkp
CisgICAgaWYgKGxheW91dEJveC5yZXBsYWNlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCBjYTFmMGNhODRmMzgzNWU5M2VmMTkxNThjMTY5ZGIwZjZiZDY2
MjM0Li45OTUzNGZmZGJiM2VkMzMxMGQwZDQ0MWIwMzBiZGFlN2ZkNGI3YTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAi
SW5saW5lVGV4dEl0ZW0uaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlv
dXRDb250YWluZXIuaCIKLSNpbmNsdWRlICJMYXlvdXRJbmxpbmVCb3guaCIKICNpbmNsdWRlICJM
YXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJUZXh0dXRpbC5o
IgpAQCAtNjgsOCArNjcsMTEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
KCkgY29uc3QKICAgICBpZiAoIWlzPENvbnRhaW5lcj4ocm9vdCgpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0g
PDwgIltTdGFydF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJv
b3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiAgICAgYXV0byYgcm9vdCA9IGRvd25jYXN0PENvbnRh
aW5lcj4odGhpcy0+cm9vdCgpKTsKKyAgICBpZiAoIXJvb3QuaGFzSW5GbG93T3JGbG9hdGluZ0No
aWxkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbU3RhcnRdIC0+IGlubGluZSBmb3JtYXR0aW5nIGNv
bnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3QgPDwgIikiKTsKICAgICBhdXRvIGF2
YWlsYWJsZVdpZHRoID0gbGF5b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KHJvb3Qp
LmNvbnRlbnRCb3hXaWR0aCgpOwogICAgIGF1dG8gdXNlZFZhbHVlcyA9IFVzZWRIb3Jpem9udGFs
VmFsdWVzIHsgYXZhaWxhYmxlV2lkdGggfTsKICAgICBhdXRvKiBsYXlvdXRCb3ggPSByb290LmZp
cnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CkBAIC04MSwxMCArODMsMTAgQEAgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KCkgY29uc3QKICAgICAgICAgICAgIGNvbXB1dGVN
YXJnaW5Cb3JkZXJBbmRQYWRkaW5nRm9ySW5saW5lQ29udGFpbmVyKGRvd25jYXN0PENvbnRhaW5l
cj4oKmxheW91dEJveCksIHVzZWRWYWx1ZXMpOwogICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3gt
PmlzUmVwbGFjZWQoKSkKICAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZEhlaWdodEZvclJlcGxh
Y2VkSW5saW5lQm94KCpsYXlvdXRCb3gsIHVzZWRWYWx1ZXMpOwotICAgICAgICBlbHNlIGlmIChp
czxJbmxpbmVCb3g+KCpsYXlvdXRCb3gpKQotICAgICAgICAgICAgaW5pdGlhbGl6ZU1hcmdpbkJv
cmRlckFuZFBhZGRpbmdGb3JHZW5lcmljSW5saW5lQm94KGRvd25jYXN0PElubGluZUJveD4oKmxh
eW91dEJveCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LT5pc0lubGlu
ZUxldmVsQm94KCkpOworICAgICAgICAgICAgaW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRp
bmdGb3JHZW5lcmljSW5saW5lQm94KCpsYXlvdXRCb3gpOworICAgICAgICB9CiAgICAgICAgIGxh
eW91dEJveCA9IG5leHRJblByZU9yZGVyKCpsYXlvdXRCb3gsIHJvb3QpOwogICAgIH0KIApAQCAt
OTksMTEgKzEwMSwxNSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKSBj
b25zdAogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzPENvbnRhaW5lcj4ocm9vdCgp
KSk7Ci0KICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAg
QVNTRVJUKCFsYXlvdXRTdGF0ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gocm9vdCgpKS5pbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKHJvb3QoKSkpOworCisgICAgQVNTRVJUKGlzPENvbnRhaW5lcj4o
cm9vdCgpKSk7CiAgICAgYXV0byYgcm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4odGhpcy0+cm9v
dCgpKTsKLSAgICBBU1NFUlQoIWxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJveChyb290
KS5pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKHJvb3QpKTsKKyAgICBpZiAoIXJvb3QuaGFzSW5G
bG93T3JGbG9hdGluZ0NoaWxkKCkpIHsKKyAgICAgICAgbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0
YXRlRm9yQm94KHJvb3QpLnNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMocm9vdCwgR2VvbWV0
cnk6OmNvbnN0cmFpbkJ5TWluTWF4V2lkdGgocm9vdCwgeyAwLCAwIH0pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIFZlY3Rvcjxjb25zdCBCb3gqPiBmb3JtYXR0aW5nQ29udGV4dFJv
b3RMaXN0OwogICAgIGF1dG8gdXNlZFZhbHVlcyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgfTsK
QEAgLTE0NiwxMSArMTUyLDEwIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKICAgICBsYXlvdXRTdGF0ZS5mb3Jt
YXR0aW5nU3RhdGVGb3JCb3gocm9vdCkuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhyb290
LCBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6aW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmljSW5saW5l
Qm94KGNvbnN0IElubGluZUJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6aW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmljSW5s
aW5lQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewotICAgIEFTU0VSVChsYXlvdXRC
b3guaXNBbm9ueW1vdXMoKSB8fCBpczxMaW5lQnJlYWtCb3g+KGxheW91dEJveCkpOwotICAgIGF1
dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKLSAgICBhdXRvJiBkaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAg
IEFTU0VSVChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSB8fCBsYXlvdXRCb3guaXNMaW5lQnJlYWtC
b3goKSk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlKCkuZGlzcGxheUJveEZv
ckxheW91dEJveChsYXlvdXRCb3gpOwogCiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdp
bih7IHsgfSwgeyB9IH0pOwogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0p
OwpAQCAtMjY0LDExICsyNjksNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlV2lkdGhBbmRIZWlnaHRGb3JSZXBsYWNlZElubGluZUJveChjb25zdCBCbwogCiB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFpczxDb250YWluZXI+KHJvb3QoKSkpCi0gICAgICAgIHJldHVybjsKICAgICBhdXRv
JiByb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPih0aGlzLT5yb290KCkpOwotICAgIGlmICghcm9v
dC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKLSAgICAgICAgcmV0dXJuOwogICAgIC8vIFRy
YXZlcnNlIHRoZSB0cmVlIGFuZCBjcmVhdGUgaW5saW5lIGl0ZW1zIG91dCBvZiBjb250YWluZXJz
IGFuZCBsZWFmIG5vZGVzLiBUaGlzIGVzc2VudGlhbGx5IHR1cm5zIHRoZSB0cmVlIGlubGluZSBz
dHJ1Y3R1cmUgaW50byBhIGZsYXQgb25lLgogICAgIC8vIDxzcGFuPnRleHQ8c3Bhbj48L3NwYW4+
PGltZz48L3NwYW4+IC0+IFtDb250YWluZXJTdGFydF1bSW5saW5lQm94XVtDb250YWluZXJTdGFy
dF1bQ29udGFpbmVyRW5kXVtJbmxpbmVCb3hdW0NvbnRhaW5lckVuZF0KICAgICBhdXRvJiBmb3Jt
YXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKQEAgLTI5NSwxNCArMjk2LDE0
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkg
Y29uc3QKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxpbmUgY29udGFp
bmVyIChlLmcuIDwvc3Bhbj4pLgogICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxpbmVDb250YWlu
ZXIobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5l
SXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6
VHlwZTo6Q29udGFpbmVyRW5kKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpczxMaW5lQnJlYWtC
b3g+KGxheW91dEJveCkpCisgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJl
YWtCb3goKSkKICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShz
dGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6
SGFyZExpbmVCcmVhaykpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGlu
ZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06
OlR5cGU6OkZsb2F0KSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQoaXM8SW5saW5lQm94PihsYXlvdXRCb3gpIHx8IGxheW91dEJveC5pc0lubGluZUJsb2NrQm94
KCkpOwotICAgICAgICAgICAgICAgIGlmIChpczxJbmxpbmVCb3g+KGxheW91dEJveCkgJiYgZG93
bmNhc3Q8SW5saW5lQm94PihsYXlvdXRCb3gpLmhhc1RleHRDb250ZW50KCkpCi0gICAgICAgICAg
ICAgICAgICAgIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoZm9ybWF0
dGluZ1N0YXRlLmlubGluZUl0ZW1zKCksIGRvd25jYXN0PElubGluZUJveD4obGF5b3V0Qm94KSk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0lubGluZUxldmVsQm94KCkpOwor
ICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaGFzVGV4dENvbnRlbnQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhmb3Jt
YXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpC
b3gpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4
IGVkM2E5MmYyYzY4MWFmNDE1MGU5MzFiYTJkNmJkZTMyODkyYmNjMTcuLjFlNjU1ZTAwNWQ1MDg2
MmU1MjM3ODVjOTMzOWEwODZiY2VlYzVmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRSb290KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdDsKICAg
ICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZsb2F0Qm94KGNvbnN0IEJveCYpIGNvbnN0
OwogICAgIHZvaWQgY29tcHV0ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JJbmxpbmVDb250YWlu
ZXIoY29uc3QgQ29udGFpbmVyJiwgVXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0OwotICAgIHZv
aWQgaW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmljSW5saW5lQm94KGNv
bnN0IElubGluZUJveCYpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFu
ZFBhZGRpbmdGb3JHZW5lcmljSW5saW5lQm94KGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQg
Y29tcHV0ZUludHJpbnNpY1dpZHRoRm9ySW5saW5lQmxvY2soY29uc3QgQm94JikgY29uc3Q7CiAg
ICAgdm9pZCBjb21wdXRlV2lkdGhBbmRIZWlnaHRGb3JSZXBsYWNlZElubGluZUJveChjb25zdCBC
b3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlSG9yaXpv
bnRhbE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCAw
YzJmYTA0NDdhYjEzZmMwOWIxOTM2NDY1YjI0ZDhmNmJlODZjNzAwLi5mNzQxZGU0ODllOTQyNDYx
ZDc2OTJlMmU0MDQxNTkzODNiMGM4MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIExheW91
dFVuaXQgaW5saW5lSXRlbVdpZHRoKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgSW5saW5lSXQKICAgICBpZiAoaXM8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pKSB7CiAg
ICAgICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlu
bGluZUl0ZW0pOwogICAgICAgICBhdXRvIGVuZCA9IGlubGluZVRleHRJdGVtLmlzQ29sbGFwc2Vk
KCkgPyBpbmxpbmVUZXh0SXRlbS5zdGFydCgpICsgMSA6IGlubGluZVRleHRJdGVtLmVuZCgpOwot
ICAgICAgICByZXR1cm4gVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLmlubGluZUJveCgp
LCBpbmxpbmVUZXh0SXRlbS5zdGFydCgpLCBlbmQsIGNvbnRlbnRMb2dpY2FsTGVmdCk7CisgICAg
ICAgIHJldHVybiBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0ubGF5b3V0Qm94KCksIGlu
bGluZVRleHRJdGVtLnN0YXJ0KCksIGVuZCwgY29udGVudExvZ2ljYWxMZWZ0KTsKICAgICB9CiAK
ICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJveCgpOwpAQCAtNTksNyAr
NTksNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBpbmxpbmVJdGVtV2lkdGgoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBJbmxpbmVJdAogICAgIGlmIChsYXlvdXRCb3guaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3gubWFyZ2luQm94V2lk
dGgoKTsKIAotICAgIGlmIChsYXlvdXRCb3guaXNSZXBsYWNlZCgpKQorICAgIGlmIChsYXlvdXRC
b3gucmVwbGFjZWQoKSkKICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3gud2lkdGgoKTsKIAogICAg
IGlmIChpbmxpbmVJdGVtLmlzQ29udGFpbmVyU3RhcnQoKSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBM
aW5lTGF5b3V0OjpJc0VuZE9mTGluZSBMaW5lTGF5b3V0OjpwbGFjZUlubGluZUl0ZW0oY29uc3Qg
SW5saW5lSXRlbSYgaW5saW5lSXRlbQogICAgIGlmIChicmVha2luZ0NvbnRleHQuYnJlYWtpbmdC
ZWhhdmlvciA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdCZWhhdmlvcjo6U3BsaXQpIHsKICAgICAg
ICAgQVNTRVJUKGlubGluZUl0ZW0uaXNUZXh0KCkpOwogICAgICAgICBhdXRvJiBpbmxpbmVUZXh0
SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKTsKLSAgICAgICAgYXV0
byBzcGxpdERhdGEgPSBUZXh0VXRpbDo6c3BsaXQoaW5saW5lVGV4dEl0ZW0uaW5saW5lQm94KCks
IGlubGluZVRleHRJdGVtLnN0YXJ0KCksIGlubGluZVRleHRJdGVtLmxlbmd0aCgpLCBpdGVtTG9n
aWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aCwgY3VycmVudExvZ2ljYWxSaWdodCk7CisgICAgICAg
IGF1dG8gc3BsaXREYXRhID0gVGV4dFV0aWw6OnNwbGl0KGlubGluZVRleHRJdGVtLmxheW91dEJv
eCgpLCBpbmxpbmVUZXh0SXRlbS5zdGFydCgpLCBpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSwgaXRl
bUxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogICAg
ICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIHRyYWlsaW5nIGlubGluZSBpdGVtLgogICAgICAg
ICBBU1NFUlQoIW1fdHJhaWxpbmdQYXJ0aWFsSW5saW5lVGV4dEl0ZW0pOwogICAgICAgICBtX3Ry
YWlsaW5nUGFydGlhbElubGluZVRleHRJdGVtID0gaW5saW5lVGV4dEl0ZW0uc3BsaXQoc3BsaXRE
YXRhLnN0YXJ0LCBzcGxpdERhdGEubGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRleCA4NWEzZGUzYjU3ZTM2ZDlm
M2U3ODNkYjc5ZjhlNWQwYTgxNGQ2ZWRkLi5iMDAxM2I2ZWQ1NjNiY2JmODI4MTM5MTM0MWYyZGQ1
NjE1ZWM1M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lSXRlbS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJM
YXlvdXRJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRMaW5lQnJlYWtCb3guaCIKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4
IDE4MDFhOGViMzY2ZWZhNGI4YzM5YjE4MGZiMGI3MGJiYWFhNjQ2MzMuLjhhZGVjMWU3MjliMzFm
MDNlYjA3YTE4YzYxNGQ0OGZmMDk4Y2Y2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCkBAIC0yMDQsNyArMjA0LDcg
QEAgdm9pZCBMaW5lOjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGgpCiAgICAgICAgIHJldHVybiBhcHBlbmRJbmxpbmVDb250YWluZXJT
dGFydChpbmxpbmVJdGVtLCBsb2dpY2FsV2lkdGgpOwogICAgIGlmIChpbmxpbmVJdGVtLmlzQ29u
dGFpbmVyRW5kKCkpCiAgICAgICAgIHJldHVybiBhcHBlbmRJbmxpbmVDb250YWluZXJFbmQoaW5s
aW5lSXRlbSwgbG9naWNhbFdpZHRoKTsKLSAgICBpZiAoaW5saW5lSXRlbS5sYXlvdXRCb3goKS5p
c1JlcGxhY2VkKCkpCisgICAgaWYgKGlubGluZUl0ZW0ubGF5b3V0Qm94KCkucmVwbGFjZWQoKSkK
ICAgICAgICAgcmV0dXJuIGFwcGVuZFJlcGxhY2VkSW5saW5lQm94KGlubGluZUl0ZW0sIGxvZ2lj
YWxXaWR0aCk7CiAgICAgYXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goaW5saW5lSXRlbSwgbG9n
aWNhbFdpZHRoKTsKIH0KQEAgLTQxNSw3ICs0MTUsNyBAQCBMYXlvdXRVbml0IExpbmU6OmlubGlu
ZUl0ZW1Db250ZW50SGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pIGNvbnN0CiAg
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm4g
ZGlzcGxheUJveC5ib3JkZXJCb3hIZWlnaHQoKTsKIAotICAgIGlmIChsYXlvdXRCb3guaXNSZXBs
YWNlZCgpKQorICAgIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSkKICAgICAgICAgcmV0dXJuIGRp
c3BsYXlCb3guYm9yZGVyQm94SGVpZ2h0KCk7CiAKICAgICBpZiAoaW5saW5lSXRlbS5pc0NvbnRh
aW5lclN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0NvbnRhaW5lckVuZCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0u
Y3BwCmluZGV4IGJhZjVlNzI4YTdjODEzM2EzMzMzM2E0MzRmOGIyYzRkZDM0MjMwNjMuLmYxMzA4
OWE3MDhmM2ZlM2ZmOWI3N2Y3MjA5NmNkYTQyZWYzNmUyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAK
QEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
IAogI2luY2x1ZGUgIkJyZWFrTGluZXMuaCIKLSNpbmNsdWRlICJMYXlvdXRJbmxpbmVCb3guaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CkBAIC04Niw3ICs4NSw3
IEBAIHN0YXRpYyB1bnNpZ25lZCBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24odW5zaWduZWQg
c3RhcnRQb3NpdGlvbiwgTGF6eUxpbmVCcmVhCiAgICAgcmV0dXJuIHRleHRMZW5ndGggLSBzdGFy
dFBvc2l0aW9uOwogfQogCi12b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0
SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0IElubGluZUJveCYgaW5saW5l
Qm94KQordm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGlu
ZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdCBCb3gmIGlubGluZUJveCkKIHsKICAgICBhdXRv
IHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRlbnQoKTsKICAgICBpZiAoIXRleHQubGVuZ3RoKCkp
CkBAIC0xMTgsNyArMTE3LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5k
VGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogICAgIH0KIH0KIAot
SW5saW5lVGV4dEl0ZW06OklubGluZVRleHRJdGVtKGNvbnN0IElubGluZUJveCYgaW5saW5lQm94
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlzV2hpdGVzcGFjZSwgYm9v
bCBpc0NvbGxhcHNlZCkKK0lubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBCb3gm
IGlubGluZUJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1doaXRl
c3BhY2UsIGJvb2wgaXNDb2xsYXBzZWQpCiAgICAgOiBJbmxpbmVJdGVtKGlubGluZUJveCwgVHlw
ZTo6VGV4dCkKICAgICAsIG1fc3RhcnQoc3RhcnQpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBA
IC0xMzEsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVU
ZXh0SXRlbTo6c3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgdW4KIHsKICAgICBSRUxFQVNF
X0FTU0VSVChzcGxpdFBvc2l0aW9uID49IHRoaXMtPnN0YXJ0KCkpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHNwbGl0UG9zaXRpb24gKyBsZW5ndGggPD0gZW5kKCkpOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVu
Z3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5n
dGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmgK
aW5kZXggNjJlNjJhMDE2MzNhMmU4ODEyNDM0OWY3YTliN2ZhMDQ4NWIyZjJiMS4uOWE5YzdjODgw
YjFkNWE5YTcxYTJkMjY2OWU5ODc1ZWViZTYwOTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5oCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2lu
Y2x1ZGUgIklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgog
I2luY2x1ZGUgIklubGluZUl0ZW0uaCIKIApAQCAtMzYsOSArMzUsOSBAQCBuYW1lc3BhY2UgTGF5
b3V0IHsKIAogY2xhc3MgSW5saW5lVGV4dEl0ZW0gOiBwdWJsaWMgSW5saW5lSXRlbSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1z
JiwgY29uc3QgSW5saW5lQm94Jik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlQW5kQXBwZW5kVGV4
dEl0ZW1zKElubGluZUl0ZW1zJiwgY29uc3QgQm94Jik7CiAKLSAgICBJbmxpbmVUZXh0SXRlbShj
b25zdCBJbmxpbmVCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlz
V2hpdGVzcGFjZSwgYm9vbCBpc0NvbGxhcHNlZCk7CisgICAgSW5saW5lVGV4dEl0ZW0oY29uc3Qg
Qm94JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1doaXRlc3BhY2Us
IGJvb2wgaXNDb2xsYXBzZWQpOwogCiAgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0OyB9CiAgICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSAr
IGxlbmd0aCgpOyB9CkBAIC00Nyw4ICs0Niw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2hpdGVz
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNXaGl0ZXNwYWNlOyB9CiAgICAgYm9vbCBpc0NvbGxh
cHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQ7IH0KIAotICAgIGNvbnN0IElubGlu
ZUJveCYgaW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5saW5lQm94PihsYXlv
dXRCb3goKSk7IH0KLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gc3BsaXQo
dW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3Rl
eHQvVGV4dFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
dGV4dC9UZXh0VXRpbC5jcHAKaW5kZXggMzU3OTY0NTc4MzhjYWMyN2E5ZTMyOWQ3NzM1MmRjYjg4
MWI5YjFhOC4uMTMxYmE2MjA2Y2ZiZjQ4NDljZDJmYWI4MWI3YzJlZmRmNjhhNDljZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRp
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9U
ZXh0VXRpbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFRleHRVdGls
OjpoeXBoZW5Qb3NpdGlvbkJlZm9yZShjb25zdCBJbmxpbmVJdGVtJiwgdW5zaWduZWQsIHUKICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1MYXlvdXRVbml0IFRleHRVdGlsOjp3aWR0aChj
b25zdCBJbmxpbmVCb3gmIGlubGluZUJveCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExh
eW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KQorTGF5b3V0VW5pdCBUZXh0VXRpbDo6d2lkdGgo
Y29uc3QgQm94JiBpbmxpbmVCb3gsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBMYXlvdXRV
bml0IGNvbnRlbnRMb2dpY2FsTGVmdCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUJveC5z
dHlsZSgpOwogICAgIGF1dG8mIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwpAQCAtOTcsNyAr
OTcsNyBAQCBib29sIFRleHRVdGlsOjppc1RyaW1tYWJsZUNvbnRlbnQoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSkKICAgICByZXR1cm4gaW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkg
JiYgaW5saW5lVGV4dEl0ZW0uc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKIH0KIAotVGV4
dFV0aWw6OlNwbGl0RGF0YSBUZXh0VXRpbDo6c3BsaXQoY29uc3QgSW5saW5lQm94JiBpbmxpbmVC
b3gsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgTGF5b3V0VW5pdCB0
ZXh0V2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIExheW91dFVuaXQgY29udGVudExv
Z2ljYWxMZWZ0KQorVGV4dFV0aWw6OlNwbGl0RGF0YSBUZXh0VXRpbDo6c3BsaXQoY29uc3QgQm94
JiBpbmxpbmVCb3gsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgTGF5
b3V0VW5pdCB0ZXh0V2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIExheW91dFVuaXQg
Y29udGVudExvZ2ljYWxMZWZ0KQogewogICAgIC8vIEZJWE1FIFRoaXMgc2hvdWxkIHRha2UgaHlw
ZW5zIGludG8gYWNjb3VudC4KICAgICBBU1NFUlQoYXZhaWxhYmxlV2lkdGggPj0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0L1RleHRV
dGlsLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0L1RleHRV
dGlsLmgKaW5kZXggZjYzYzYwNDg5Zjk0ZmEwZWY2ODkzMmI5MmVjYWFmNzg4Yjg1YjJjNi4uZjE1
MjY1MGIzMTU0ZjllYmM0NWUwNDE5MGM3MGZmZGU2MzIzY2IzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuaApAQCAt
MzIsMTEgKzMyLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewog
Ci1jbGFzcyBJbmxpbmVCb3g7Ci0KIGNsYXNzIFRleHRVdGlsIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgTGF5b3V0VW5pdCB3aWR0aChjb25zdCBJbmxpbmVCb3gmLCB1bnNpZ25lZCBmcm9tLCB1bnNp
Z25lZCB0bywgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpOworICAgIHN0YXRpYyBMYXlv
dXRVbml0IHdpZHRoKGNvbnN0IEJveCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCk7CiAgICAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVk
PiBoeXBoZW5Qb3NpdGlvbkJlZm9yZShjb25zdCBJbmxpbmVJdGVtJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgYm9vbCBpc1RyaW1tYWJsZUNvbnRlbnQoY29u
c3QgSW5saW5lSXRlbSYpOwogICAgIHN0cnVjdCBTcGxpdERhdGEgewpAQCAtNDQsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKICAgICAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGg7CiAgICAgfTsKLSAgICBzdGF0aWMgU3BsaXREYXRhIHNwbGl0KGNv
bnN0IElubGluZUJveCYsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCwg
TGF5b3V0VW5pdCB0ZXh0V2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIExheW91dFVu
aXQgY29udGVudExvZ2ljYWxMZWZ0KTsKKyAgICBzdGF0aWMgU3BsaXREYXRhIHNwbGl0KGNvbnN0
IEJveCYsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgTGF5b3V0VW5p
dCB0ZXh0V2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIExheW91dFVuaXQgY29udGVu
dExvZ2ljYWxMZWZ0KTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBmaXhlZFBp
dGNoV2lkdGgoU3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvLCBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCA0ZDQ3ZjE0OWE2ZjUxYzE2
ODQ3YmRhZjY0MzZlMTVjNzBjZjFiZTU4Li41Y2NhNjQyZDU0OGVkY2RhMDAwMzg1NTAzYTVjNGY5
ODdiMzc4NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5jcHAKQEAgLTQxLDkgKzQxLDEwIEBAIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRy
aWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsCiAgICAg
OiBtX3N0eWxlKFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9lbGVtZW50QXR0cmlidXRlcyhhdHRy
aWJ1dGVzKQogICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3MpCisgICAgLCBtX2hh
c1JhcmVEYXRhKGZhbHNlKQogewogICAgIGlmIChpc1JlcGxhY2VkKCkpCi0gICAgICAgIG1fcmVw
bGFjZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CisgICAgICAgIGVuc3Vy
ZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7
CiB9CiAKIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQpAQCAtNTEsOCArNTIsMTUgQEAgQm94OjpCb3goT3B0aW9uYWw8
RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiB9
CiAKK0JveDo6Qm94KFN0cmluZyB0ZXh0Q29udGVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKKyAg
ICA6IEJveCh7IH0sIFdURk1vdmUoc3R5bGUpLCBCYXNlVHlwZUZsYWc6OkJveEZsYWcpCit7Cisg
ICAgc2V0VGV4dENvbnRlbnQodGV4dENvbnRlbnQpOworfQorCiBCb3g6On5Cb3goKQogeworICAg
IHJlbW92ZVJhcmVEYXRhKCk7CiB9CiAKIGJvb2wgQm94Ojplc3RhYmxpc2hlc0Zvcm1hdHRpbmdD
b250ZXh0KCkgY29uc3QKQEAgLTIxMiw3ICsyMjAsNyBAQCBjb25zdCBDb250YWluZXImIEJveDo6
Zm9ybWF0dGluZ0NvbnRleHRSb290KCkgY29uc3QKICAgICAvLyBXaGlsZSB0aGUgcmVsYXRpdmVs
eSBwb3NpdGlvbmVkIGlubGluZSBjb250YWluZXIgKHNwYW4pIGlzIHBsYWNlZCByZWxhdGl2ZSB0
byBpdHMgY29udGFpbmluZyBibG9jayAib3V0ZXIiLCBpdCBsaXZlcyBpbiB0aGUgaW5saW5lCiAg
ICAgLy8gZm9ybWF0dGluZyBjb250ZXh0IGVzdGFibGlzaGVkIGJ5ICJpbm5lciIuCiAgICAgY29u
c3QgQ29udGFpbmVyKiBhbmNlc3RvciA9IG51bGxwdHI7Ci0gICAgaWYgKGlzSW5saW5lQm94KCkg
JiYgaXNJbkZsb3dQb3NpdGlvbmVkKCkpCisgICAgaWYgKGlzSW5saW5lTGV2ZWxCb3goKSAmJiBp
c0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgYW5jZXN0b3IgPSBwYXJlbnQoKTsKICAgICBl
bHNlCiAgICAgICAgIGFuY2VzdG9yID0gY29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zNTksNiArMzY3
LDY0IEBAIGJvb2wgQm94Ojppc1BhZGRpbmdBcHBsaWNhYmxlKCkgY29uc3QKICAgICAgICAgJiYg
ZWxlbWVudFR5cGUgIT0gRWxlbWVudFR5cGU6OlRhYmxlQ29sdW1uOwogfQogCit2b2lkIEJveDo6
c2V0VGV4dENvbnRlbnQoU3RyaW5nIHRleHRDb250ZW50KQoreworICAgIEFTU0VSVChpc0lubGlu
ZUxldmVsQm94KCkpOworICAgIGVuc3VyZVJhcmVEYXRhKCkudGV4dENvbnRlbnQgPSB0ZXh0Q29u
dGVudDsKK30KKworYm9vbCBCb3g6Omhhc1RleHRDb250ZW50KCkgY29uc3QKK3sKKyAgICBBU1NF
UlQoaXNJbmxpbmVMZXZlbEJveCgpKTsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiAhcmFy
ZURhdGEoKS50ZXh0Q29udGVudC5pc051bGwoKTsKK30KKworU3RyaW5nIEJveDo6dGV4dENvbnRl
bnQoKSBjb25zdAoreworICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKKyAgICBBU1NFUlQoaXNJ
bmxpbmVMZXZlbEJveCgpKTsKKyAgICByZXR1cm4gcmFyZURhdGEoKS50ZXh0Q29udGVudDsKK30K
KworY29uc3QgUmVwbGFjZWQqIEJveDo6cmVwbGFjZWQoKSBjb25zdAoreworICAgIHJldHVybiBj
b25zdF9jYXN0PEJveCo+KHRoaXMpLT5yZXBsYWNlZCgpOworfQorCitSZXBsYWNlZCogQm94Ojpy
ZXBsYWNlZCgpCit7CisgICAgaWYgKCFpc1JlcGxhY2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFo
YXNSYXJlRGF0YSgpIHx8ICFyYXJlRGF0YSgpLnJlcGxhY2VkLmdldCgpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRh
KCkucmVwbGFjZWQuZ2V0KCkpOworICAgIHJldHVybiByYXJlRGF0YSgpLnJlcGxhY2VkLmdldCgp
OworfQorCitCb3g6OlJhcmVEYXRhTWFwJiBCb3g6OnJhcmVEYXRhTWFwKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmFyZURhdGFNYXA+IG1hcDsKKyAgICByZXR1cm4gbWFwOworfQor
Citjb25zdCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRhKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaGFzUmFyZURhdGEoKSk7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmdldCh0aGlz
KTsKK30KKworQm94OjpCb3hSYXJlRGF0YSYgQm94OjplbnN1cmVSYXJlRGF0YSgpCit7CisgICAg
c2V0SGFzUmFyZURhdGEodHJ1ZSk7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0
aGlzLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5pdGVy
YXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgQm94OjpyZW1vdmVSYXJlRGF0YSgpCit7CisgICAgcmFy
ZURhdGFNYXAoKS5yZW1vdmUodGhpcyk7CisgICAgc2V0SGFzUmFyZURhdGEoZmFsc2UpOworfQor
CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgK
aW5kZXggNTZlNWZjOTJlMDdjMWU1YTU2NWQxOGM1ZDFkODY3NGIxMDg3NDI5YS4uOGVkNDBmY2Uz
OTQ1YzgxNzk5YTQ3MWMxMDE3YzRkMjliNmI3OWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAg
ICAgICBUYWJsZUZvb3Rlckdyb3VwLAogICAgICAgICBJbWFnZSwKICAgICAgICAgSUZyYW1lLAor
ICAgICAgICBIYXJkTGluZUJyZWFrLAogICAgICAgICBHZW5lcmljRWxlbWVudAogICAgIH07CiAK
QEAgLTY0LDEzICs2NSwxMiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIEJhc2VUeXBlRmxhZyB7CiAg
ICAgICAgIEJveEZsYWcgICAgICAgICAgICAgICA9IDEgPDwgMCwKLSAgICAgICAgQ29udGFpbmVy
RmxhZyAgICAgICAgID0gMSA8PCAxLAotICAgICAgICBJbmxpbmVCb3hGbGFnICAgICAgICAgPSAx
IDw8IDMsCi0gICAgICAgIExpbmVCcmVha0JveEZsYWcgICAgICA9IDEgPDwgNQorICAgICAgICBD
b250YWluZXJGbGFnICAgICAgICAgPSAxIDw8IDEKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWdu
ZWQgQmFzZVR5cGVGbGFnczsKIAogICAgIEJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4s
IFJlbmRlclN0eWxlJiYpOworICAgIEJveChTdHJpbmcgdGV4dENvbnRlbnQsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZpcnR1YWwgfkJveCgpOwogCiAgICAgYm9vbCBlc3RhYmxpc2hlc0Zvcm1hdHRp
bmdDb250ZXh0KCkgY29uc3Q7CkBAIC0xMjEsNiArMTIxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNSZXBsYWNlZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW1hZ2UoKSB8fCBpc0lGcmFtZSgpOyB9CiAg
ICAgYm9vbCBpc0lGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEF0dHJpYnV0ZXMgJiYg
bV9lbGVtZW50QXR0cmlidXRlcy52YWx1ZSgpLmVsZW1lbnRUeXBlID09IEVsZW1lbnRUeXBlOjpJ
RnJhbWU7IH0KICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBdHRy
aWJ1dGVzICYmIG1fZWxlbWVudEF0dHJpYnV0ZXMudmFsdWUoKS5lbGVtZW50VHlwZSA9PSBFbGVt
ZW50VHlwZTo6SW1hZ2U7IH0KKyAgICBib29sIGlzTGluZUJyZWFrQm94KCkgY29uc3QgeyByZXR1
cm4gbV9lbGVtZW50QXR0cmlidXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1dGVzLnZhbHVlKCkuZWxl
bWVudFR5cGUgPT0gRWxlbWVudFR5cGU6OkhhcmRMaW5lQnJlYWs7IH0KIAogICAgIGNvbnN0IENv
bnRhaW5lciogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBjb25zdCBC
b3gqIG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZzsgfQpAQCAtMTM0
LDE3ICsxMzUsMTYgQEAgcHVibGljOgogICAgIGJvb2wgaXNCbG9ja0NvbnRhaW5lcigpIGNvbnN0
IHsgcmV0dXJuIGlzQmxvY2tMZXZlbEJveCgpICYmIGlzQ29udGFpbmVyKCk7IH0KICAgICBib29s
IGlzSW5saW5lQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gaXNJbmxpbmVMZXZlbEJveCgpICYm
IGlzQ29udGFpbmVyKCk7IH0KIAotICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVy
biBtX2Jhc2VUeXBlRmxhZ3MgJiBJbmxpbmVCb3hGbGFnOyB9Ci0gICAgYm9vbCBpc0xpbmVCcmVh
a0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVR5cGVGbGFncyAmIExpbmVCcmVha0JveEZsYWc7
IH0KLQogICAgIGJvb2wgaXNQYWRkaW5nQXBwbGljYWJsZSgpIGNvbnN0OwogICAgIGJvb2wgaXNP
dmVyZmxvd1Zpc2libGUoKSBjb25zdDsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KIAotICAgIGNvbnN0IFJlcGxhY2VkKiByZXBsYWNl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGFjZWQuZ2V0KCk7IH0KKyAgICBjb25zdCBSZXBsYWNl
ZCogcmVwbGFjZWQoKSBjb25zdDsKICAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IHVudGlsIGFmdGVy
IGludHJpbnNpYyBzaXplIGNoYW5nZSBpcyB0cmFja2VkIGJ5IFJlcGxhY2VkLgotICAgIFJlcGxh
Y2VkKiByZXBsYWNlZCgpIHsgcmV0dXJuIG1fcmVwbGFjZWQuZ2V0KCk7IH0KKyAgICBSZXBsYWNl
ZCogcmVwbGFjZWQoKTsKKyAgICBib29sIGhhc1RleHRDb250ZW50KCkgY29uc3Q7CisgICAgU3Ry
aW5nIHRleHRDb250ZW50KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFBhcmVudChDb250YWluZXIm
IHBhcmVudCkgeyBtX3BhcmVudCA9ICZwYXJlbnQ7IH0KICAgICB2b2lkIHNldE5leHRTaWJsaW5n
KEJveCYgbmV4dFNpYmxpbmcpIHsgbV9uZXh0U2libGluZyA9ICZuZXh0U2libGluZzsgfQpAQCAt
MTU0LDYgKzE1NCwyNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRy
aWJ1dGVzPiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAKIHByaXZhdGU6CisgICAg
dm9pZCBzZXRUZXh0Q29udGVudChTdHJpbmcpOworCisgICAgY2xhc3MgQm94UmFyZURhdGEgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIEJv
eFJhcmVEYXRhKCkgPSBkZWZhdWx0OworCisgICAgICAgIFN0cmluZyB0ZXh0Q29udGVudDsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlcGxhY2VkPiByZXBsYWNlZDsKKyAgICB9OworCisgICAg
Ym9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGE7IH0KKyAgICB2
b2lkIHNldEhhc1JhcmVEYXRhKGJvb2wgaGFzUmFyZURhdGEpIHsgbV9oYXNSYXJlRGF0YSA9IGhh
c1JhcmVEYXRhOyB9CisgICAgY29uc3QgQm94UmFyZURhdGEmIHJhcmVEYXRhKCkgY29uc3Q7Cisg
ICAgQm94UmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCk7CisgICAgdm9pZCByZW1vdmVSYXJlRGF0
YSgpOworCisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0cjxC
b3hSYXJlRGF0YT4+IFJhcmVEYXRhTWFwOworCisgICAgc3RhdGljIFJhcmVEYXRhTWFwJiByYXJl
RGF0YU1hcCgpOworCiAgICAgUmVuZGVyU3R5bGUgbV9zdHlsZTsKICAgICBPcHRpb25hbDxFbGVt
ZW50QXR0cmlidXRlcz4gbV9lbGVtZW50QXR0cmlidXRlczsKIApAQCAtMTYxLDkgKzE4Miw4IEBA
IHByaXZhdGU6CiAgICAgQm94KiBtX3ByZXZpb3VzU2libGluZyB7IG51bGxwdHIgfTsKICAgICBC
b3gqIG1fbmV4dFNpYmxpbmcgeyBudWxscHRyIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVw
bGFjZWQ+IG1fcmVwbGFjZWQ7Ci0KICAgICB1bnNpZ25lZCBtX2Jhc2VUeXBlRmxhZ3MgOiA2Owor
ICAgIGJvb2wgbV9oYXNSYXJlRGF0YSA6IDE7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCmluZGV4IGZkMjFkNTE5M2Jj
NTNlYWQ1NjRkOTVmZmU5MWUzZmQyODYwZWI1OWIuLjI3ZjMxZmMxMGZiNDhmZTYyZDQyOTZjNmE3
NWE0ODZlZjFiODVmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dENvbnRhaW5lci5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3MgQ29udGFpbmVyIDogcHVibGljIEJveCB7
CitjbGFzcyBDb250YWluZXIgZmluYWwgOiBwdWJsaWMgQm94IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKENvbnRhaW5lcik7CiBwdWJsaWM6CiAgICAgQ29udGFpbmVyKE9wdGlvbmFsPEVs
ZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyA9IENvbnRhaW5l
ckZsYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dElubGluZUJveC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjOWRlOGI5OTA5
ODc2NDc1ZTZiODU0NWY3NzRjYjBmYzFiMGY5MWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0SW5saW5lQm94LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGF5b3V0SW5saW5lQm94LmgiCi0K
LSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChJbmxpbmVCb3gpOwotCi1JbmxpbmVCb3g6OklubGluZUJveChPcHRpb25hbDxFbGVtZW50
QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFn
cyBiYXNlVHlwZUZsYWdzKQotICAgIDogQm94KGF0dHJpYnV0ZXMsIFdURk1vdmUoc3R5bGUpLCBi
YXNlVHlwZUZsYWdzIHwgSW5saW5lQm94RmxhZykKLXsKLX0KLQotfQotfQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZUJv
eC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lQm94LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YjAwOWNlOGUzOTQzMjBjMDcwODUzNDk5
NmRlYjNkZDMwZGMyYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lQm94LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+Ci0K
LSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBSZW5kZXJTdHlsZTsKLQotbmFtZXNwYWNlIExheW91dCB7Ci0KLWNsYXNz
IElubGluZUJveCA6IHB1YmxpYyBCb3ggewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5s
aW5lQm94KTsKLXB1YmxpYzoKLSAgICBJbmxpbmVCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0
ZXM+LCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzID0gSW5saW5lQm94RmxhZyk7Ci0KLSAg
ICB2b2lkIHNldFRleHRDb250ZW50KFN0cmluZyB0ZXh0KSB7IG1fdGV4dENvbnRlbnQgPSB0ZXh0
OyB9Ci0gICAgYm9vbCBoYXNUZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuICFtX3RleHRDb250
ZW50LmlzTnVsbCgpOyB9Ci0gICAgU3RyaW5nIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0Q29udGVudDsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3RleHRDb250ZW50Owot
fTsKLQotfQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0xBWU9VVF9CT1goSW5saW5lQm94
LCBpc0lubGluZUJveCgpKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVCcmVha0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRMaW5lQnJlYWtCb3guY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYmUyMGE5ZDVhOWEyNDEyNjQ2MWY5NWM4NmExZmRmYWQ2ZDY1MTg1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVCcmVha0JveC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkxheW91dExpbmVCcmVha0JveC5oIgotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCi0KLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMYXlv
dXQgewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGluZUJyZWFrQm94KTsKLQotTGlu
ZUJyZWFrQm94OjpMaW5lQnJlYWtCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJp
YnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCi0gICAgOiBJbmxpbmVCb3goYXR0cmlidXRlcywg
V1RGTW92ZShzdHlsZSksIExpbmVCcmVha0JveEZsYWcpCi17Ci19Ci0KLX0KLX0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0TGluZUJy
ZWFrQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRMaW5lQnJl
YWtCb3guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFkMDkwYWU5N2RhZGFhNjMx
MDljMTA3MWI4ODExYzk4MzA3NjE3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRMaW5l
QnJlYWtCb3guaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkxheW91dElubGluZUJveC5oIgotI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2MuaD4KLQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlbmRlclN0eWxlOwotCi1uYW1lc3BhY2Ug
TGF5b3V0IHsKLQotY2xhc3MgTGluZUJyZWFrQm94IDogcHVibGljIElubGluZUJveCB7Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChMaW5lQnJlYWtCb3gpOwotcHVibGljOgotICAgIExpbmVC
cmVha0JveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYpOwotfTsK
LQotfQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0xBWU9VVF9CT1goTGluZUJyZWFrQm94
LCBpc0xpbmVCcmVha0JveCgpKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCAzNGEzNDAyYjVh
NGM5MWNmZjNmMmExMWU1MGQ1YzQxNjE0ZGE1MzUwLi45YWRhYjg1M2ZhNTQ3ZGM3ZGQ4ODI0ZWNj
OGRiODhhNzE5MDk1ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVk
ZSAiTGF5b3V0Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgog
I2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkxheW91dElu
bGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxv
Y2suaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCkBAIC0xMjMsNiArMTIyLDkg
QEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25z
dCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAgICAgICByZXR1cm4gQm94OjpF
bGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OkltYWdlIH07CiAgICAgICAgICAg
ICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBl
OjpJRnJhbWUgfTsKKyAgICAgICAgICAgIC8vIEZJWE1FIHdiciBzaG91bGQgbm90IGJlIGNvbnNp
ZGVyZWQgYXMgaGFyZCBsaW5lYnJlYWsuCisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmJyVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
d2JyVGFnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQm94OjpFbGVtZW50QXR0cmlidXRlcyB7
IEJveDo6RWxlbWVudFR5cGU6OkhhcmRMaW5lQnJlYWsgfTsKICAgICAgICAgICAgIHJldHVybiBC
b3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6R2VuZXJpY0VsZW1lbnQg
fTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTMyLDE3ICsx
MzQsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJv
eChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICBpZiAoaXM8UmVuZGVyVGV4dD4o
Y2hpbGRSZW5kZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IENsZWFybHkgdGhlcmUgbXVzdCBi
ZSBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhpcy4KICAgICAgICAgaWYgKHBhcmVudFJlbmRlcmVy
LnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lQm94PihPcHRpb25hbDxCb3g6
OkVsZW1lbnRBdHRyaWJ1dGVzPigpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIu
c3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVl
PEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCks
IFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVC
b3g+KE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+KCksIFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3Bs
YXlUeXBlOjpJbmxpbmUpKTsKLSAgICAgICAgZG93bmNhc3Q8SW5saW5lQm94PigqY2hpbGRMYXlv
dXRCb3gpLnNldFRleHRDb250ZW50KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIp
Lm9yaWdpbmFsVGV4dCgpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFs
VGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJl
bnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVy
biBjaGlsZExheW91dEJveDsKICAgICB9CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSBy
ZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsKICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihy
ZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmVCcmVha0JveD4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkp
KTsKIAogICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIENv
bnN0cnVjdCB0aGUgcHJpbmNpcGFsIHRhYmxlIHdyYXBwZXIgYm94IChhbmQgbm90IHRoZSB0YWJs
ZSBib3ggaXRzZWxmKS4KQEAgLTE1MSw3ICsxNTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBU
cmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJl
bgogICAgICAgICBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OkJsb2NrKQogICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5saW5lQm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpj
bG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0
ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0
eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24n
dCB5ZXQgc3VwcG9ydCBhbGwgcmVwbGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMgdGVtcG9yYXJ5
IGFueXdheS4KICAgICAgICAgaWYgKGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpKQogICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCktPnNldEludHJpbnNpY1NpemUoZG93bmNh
c3Q8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwpAQCAtMjkwLDcg
KzI5MSw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0s
IGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBEaXNwCiAgICAgICAgICAgICBzdHJlYW0gPDwg
IklNRyByZXBsYWNlZCBpbmxpbmUgYm94IjsKICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94Lmlz
QW5vbnltb3VzKCkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgImFub255bW91cyBpbmxpbmUgYm94
IjsKLSAgICAgICAgZWxzZSBpZiAoaXM8TGluZUJyZWFrQm94PihsYXlvdXRCb3gpKQorICAgICAg
ICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkKICAgICAgICAgICAgIHN0cmVh
bSA8PCAiQlIgbGluZSBicmVhayI7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmVhbSA8
PCAiaW5saW5lIGJveCI7CkBAIC0zMDMsOCArMzA0LDggQEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5
b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IERp
c3AKICAgICBpZiAoZGlzcGxheUJveCkKICAgICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgZGlz
cGxheUJveC0+bGVmdCgpIDw8ICIsIiA8PCBkaXNwbGF5Qm94LT50b3AoKSA8PCAiKSBzaXplICIg
PDwgZGlzcGxheUJveC0+d2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheUJveC0+aGVpZ2h0KCk7CiAg
ICAgc3RyZWFtIDw8ICIgbGF5b3V0IGJveC0+KCIgPDwgJmxheW91dEJveCA8PCAiKSI7Ci0gICAg
aWYgKGlzPElubGluZUJveD4obGF5b3V0Qm94KSAmJiBkb3duY2FzdDxJbmxpbmVCb3g+KGxheW91
dEJveCkuaGFzVGV4dENvbnRlbnQoKSkKLSAgICAgICAgc3RyZWFtIDw8ICIgdGV4dCBjb250ZW50
IFtcIiIgPDwgZG93bmNhc3Q8SW5saW5lQm94PihsYXlvdXRCb3gpLnRleHRDb250ZW50KCkudXRm
OCgpLmRhdGEoKSA8PCAiXCJdIjsKKyAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3go
KSAmJiBsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgc3RyZWFtIDw8ICIgdGV4dCBj
b250ZW50IFtcIiIgPDwgbGF5b3V0Qm94LnRleHRDb250ZW50KCkudXRmOCgpLmRhdGEoKSA8PCAi
XCJdIjsKIAogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5
b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQgYi9Ub29scy9MYXlvdXRSZWxv
YWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dAppbmRleCBlZTg5OTkzMmM1ZDM4NjEyNTM2
OWU2YzQ1OTY5MGNkZDg4NGIxNzQwLi5kYWI5NWRkN2EzZGMwNDYxNWRlNTg4MDg1ZTZiMzQwMGUy
NThlMTBjIDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5n
LXRlc3RzLnR4dAorKysgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRl
c3RzLnR4dApAQCAtOTQwLDcgKzk0MCw2IEBAIGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250
cy9zaGFkb3ctcG9zdHNjcmlwdC1mYW1pbHktZGlzYWJsZS5odG1sCiBmYXN0L3RleHQvdXNlci1p
bnN0YWxsZWQtZm9udHMvc2hhZG93LXBvc3RzY3JpcHQtZmFtaWx5Lmh0bWwKIGZhc3QvdGV4dC91
c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctcG9zdHNjcmlwdC5odG1sCiBmYXN0L3RleHQvdXNl
ci1pbnN0YWxsZWQtZm9udHMvc2hhZG93Lmh0bWwKLWZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1m
b250cy9zeXN0ZW0tdWkuaHRtbAogZmFzdC90ZXh0L3ZhcmlhdGlvbnMvYWR2YW5jZXMuaHRtbAog
ZmFzdC90ZXh0L3ZhcmlhdGlvbnMvY2FsYy5odG1sCiBmYXN0L3RleHQvdmFyaWF0aW9ucy9jYXNl
LWF4aXMtbmFtZXMuaHRtbApAQCAtMTUzMCw4ICsxNTI5LDYgQEAgY3NzMi4xL3RhYmxlcy90YWJs
ZS1hbm9ueW1vdXMtb2JqZWN0cy0xMjEueGh0CiBjc3MyLjEvdGFibGVzL3RhYmxlLWFub255bW91
cy1vYmplY3RzLTEyMi54aHQKIGNzczMvYXV0b2Nsb3NlLWJyYWNlcy1hbmQtcGFyZW50aGVzZXMu
aHRtbAogY3NzMy9jYWxjdWxhdGVkLXdvcmQtc3BhY2luZy5odG1sCi1jc3MzL2NzczMtbW9kc2Vs
LTM2Lmh0bWwKLWNzczMvY3NzMy1tb2RzZWwtMzcuaHRtbAogY3NzMy9jc3MtdmFyaWFibGUtZGVm
aW5pdGlvbi5odG1sCiBjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy1jYWxjLmh0bWwKIGNzczMv
Zm9udC1mZWF0dXJlLXNldHRpbmdzLWZvbnQtZmFjZS1yZW5kZXJpbmcuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>