<?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>226435</bug_id>
          
          <creation_ts>2021-05-30 06:57:58 -0700</creation_ts>
          <short_desc>[LFC] Tighten the constraint classes (ConstraintsForInFlowContent/ConstraintsForOutOfFlowContent)</short_desc>
          <delta_ts>2021-05-31 19:42:16 -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>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>1765206</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-05-30 06:57:58 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765207</commentid>
    <comment_count>1</comment_count>
      <attachid>430134</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-30 07:07:00 -0700</bug_when>
    <thetext>Created attachment 430134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765412</commentid>
    <comment_count>2</comment_count>
      <attachid>430134</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-31 07:38:59 -0700</bug_when>
    <thetext>Comment on attachment 430134
Patch

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

&gt; Source/WebCore/layout/formattingContexts/table/TableFormattingContext.cpp:59
&gt; +    auto availableVerticalSpace = ((const ConstraintsForTableContent&amp;)constraints).availableVerticalSpaceForContent;

What&apos;s up with the C cast here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765457</commentid>
    <comment_count>3</comment_count>
      <attachid>430216</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-31 16:54:00 -0700</bug_when>
    <thetext>Created attachment 430216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765458</commentid>
    <comment_count>4</comment_count>
      <attachid>430217</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-31 17:00:59 -0700</bug_when>
    <thetext>Created attachment 430217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765491</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-31 19:16:33 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 430217 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765492</commentid>
    <comment_count>6</comment_count>
      <attachid>430224</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-31 19:26:24 -0700</bug_when>
    <thetext>Created attachment 430224
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765496</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-31 19:41:08 -0700</bug_when>
    <thetext>Committed r278292 (238329@main): &lt;https://commits.webkit.org/238329@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430224.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765497</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-31 19:42:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78697838&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430134</attachid>
            <date>2021-05-30 07:07:00 -0700</date>
            <delta_ts>2021-05-31 16:53:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226435-20210530070659.patch</filename>
            <type>text/plain</type>
            <size>31141</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmOTI1N2Q4M2Y5OGUy
MjE5YWIxNDM1NmIxZjhmOTQyNWFjMjdlOC4uYjQ2NDRkZTAzNzEyMTMxYzMwOWVhOTRkYWMxZTI2
N2QzZDg1MDAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA1LTMwICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBUaWdodGVuIHRoZSBj
b25zdHJhaW50IGNsYXNzZXMgKENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudC9Db25zdHJhaW50
c0Zvck91dE9mRmxvd0NvbnRlbnQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGlsZSBsb2dpY2FsIGhlaWdodCBzaG91bGQgYWx3YXlzIGJlIGF2YWls
YWJsZSBmb3Igb3V0IG9mIGZsb3cgY29udGVudCBieSBkZXNpZ24sCisgICAgICAgIHRoZSBiYXNl
IGluZmxvdyBsYXlvdXQgY2FuJ3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBpdC4gVGhpcyBoZWlnaHQg
Y29uc3RyYWludCBpcyBub3QgZXZlbiByZXF1aXJlZC91c2VkIGluIG1vc3Qgb2YgdGhlIGxheW91
dCBzeXN0ZW1zLAorICAgICAgICBzbyBsZXQncyBtb3ZlIGl0IHRvIHRoZSBkZXJpdmVkIGNsYXNz
KGVzKS4KKworICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0
cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoKKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdl
b21ldHJ5KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVw
bGFjZWRDb250ZW50V2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJl
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nR2Vv
bWV0cnk6OnN0YXRpY1Bvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Lmg6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdDb250ZXh0OjpzaXplQW5kUGxh
Y2VGbGV4SXRlbXMpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxv
d0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2Vs
bCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUxheW91dDo6bGF5b3V0KToKKwogMjAyMS0wNS0yOSAgQWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bVEZDXSBNb3ZlIGVuc3VyZVRhYmxlR3JpZCB0
byBUYWJsZUZvcm1hdHRpbmdTdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQu
Y3BwCmluZGV4IGI5MGExN2Y2ODNkNTY3YzFlYWQxMDA1NzU4YzE0NjViNzUyNDEwYmYuLjc5Yjll
Y2Q2ODI3NGMwMGM0NTFhMGJlMGIzOGVkNjJhMzkxNjU1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0Q29udGV4dC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIExheW91dENvbnRl
eHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbgogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5nZW9tZXRyeUZv
ckJveChmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0
Um9vdC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICBhdXRvIGNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCA9IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7IHsgYm94
R2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkg
fSwgeyBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIHsgfSB9IH07CisgICAgICAgIGF1dG8g
Y29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50
IHsgeyBib3hHZW9tZXRyeS5jb250ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94
V2lkdGgoKSB9LCBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCkgfTsKICAgICAgICAgZm9ybWF0
dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRV
bml0cy5oCmluZGV4IDdiY2M1YmZlZjIzNmNjZTcxODBjMzczNTk5OWM3YjEyMmM1MzViYjEuLjAy
YTcwZTI5NWM1ZTQ2ZjRmNGE3ZjFmMDk3NzljM2E2ODE1MGNjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRVbml0cy5oCkBAIC0xNjYsMTIgKzE2NiwxNiBAQCBzdHJ1Y3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzIHsKIAogc3RydWN0IFZlcnRpY2FsQ29uc3RyYWludHMgewogICAgIExheW91dFVu
aXQgbG9naWNhbFRvcDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0Owor
ICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodDsKIH07CiAKIHN0cnVjdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQgewogICAgIEhvcml6b250YWxDb25zdHJhaW50cyBob3Jpem9udGFsOwot
ICAgIFZlcnRpY2FsQ29uc3RyYWludHMgdmVydGljYWw7CisgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wOworfTsKKworc3RydWN0IENvbnN0cmFpbnRzRm9yVGFibGVDb250ZW50IDogcHVibGljIENv
bnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZh
aWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQ7CiB9OwogCiBzdHJ1Y3QgQ29uc3RyYWludHNG
b3JPdXRPZkZsb3dDb250ZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYzZi
MzBjNGU3ODAxNzE1OTBjNjYwNDA5OWNiODEzZWQ1ODBlMzE2ZC4uYzU0ODM2ZDI0N2FmODI3MzJj
YmY4NDEwNGMxYzlkOTc2ZWZiOTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTEwNiw3ICsxMDYsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93
VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgYwogICAgICAgICByZXR1cm4g
Zm9ybWF0dGluZ0dlb21ldHJ5KCkub3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShsYXlvdXRCb3gs
IGNvbnN0cmFpbnRzLmhvcml6b250YWwsIGNvbnN0cmFpbnRzLnZlcnRpY2FsLCB7IHVzZWRIZWln
aHQgfSk7CiAgICAgfTsKIAotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKmNvbnN0
cmFpbnRzLnZlcnRpY2FsLmxvZ2ljYWxIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tI
ZWlnaHQgPSBjb25zdHJhaW50cy52ZXJ0aWNhbC5sb2dpY2FsSGVpZ2h0OwogICAgIGF1dG8gdmVy
dGljYWxHZW9tZXRyeSA9IGNvbXB1dGUoeyB9KTsKICAgICBpZiAoYXV0byBtYXhIZWlnaHQgPSBm
b3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZE1heEhlaWdodChsYXlvdXRCb3gsIGNvbnRhaW5p
bmdCbG9ja0hlaWdodCkpIHsKICAgICAgICAgYXV0byBtYXhWZXJ0aWNhbEdlb21ldHJ5ID0gY29t
cHV0ZShtYXhIZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IGFkODAz
MjY5MGMzMTNmOThlY2I2MGQ0MDFhZTU2YjhmNDNkZTg5YTYuLmMxMWNjYTMzODM5ZmEzMjQ1YjM2
NjIzYmUwNDQ5NGJiM2NkMDkwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAg
LTMyNCw3ICszMjQsNiBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdHZW9tZXRyeTo6c2hyaW5rVG9G
aXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdAogVmVydGljYWxHZW9tZXRy
eSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRy
eShjb25zdCBDb250YWluZXJCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZl
cnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYgb3ZlcnJp
ZGRlblZlcnRpY2FsVmFsdWVzKSBjb25zdAogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpOwotICAgIEFT
U0VSVCh2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8gMTAuNi40
IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KQEAg
LTM1Myw3ICszNTIsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0
T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0CiAgICAgYXV0byYgZm9ybWF0
dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0eWxl
ID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5n
Q29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmluZ0Js
b2NrSGVpZ2h0ID0gKnZlcnRpY2FsQ29uc3RyYWludHMubG9naWNhbEhlaWdodDsKKyAgICBhdXRv
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IHZlcnRpY2FsQ29uc3RyYWludHMubG9naWNhbEhlaWdo
dDsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRz
LmxvZ2ljYWxXaWR0aDsKIAogICAgIGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dp
Y2FsVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTU4Niw3ICs1ODUsNiBAQCBIb3Jp
em9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhv
cml6b250YWxHZW9tZXRyeShjbwogVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6
Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBSZXBsYWNlZEJveCYgcmVw
bGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25z
dCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29u
c3QKIHsKICAgICBBU1NFUlQocmVwbGFjZWRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwot
ICAgIEFTU0VSVCh2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8g
MTAuNi41IEFic29sdXRlbHkgcG9zaXRpb25lZCwgcmVwbGFjZWQgZWxlbWVudHMKICAgICAvLwpA
QCAtNjAxLDcgKzU5OSw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5Ojpv
dXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgUmVwCiAgICAgYXV0byYgZm9y
bWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0
eWxlID0gcmVwbGFjZWRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1h
dHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KHJlcGxhY2VkQm94KTsKLSAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja0hlaWdodCA9ICp2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7Cisg
ICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSB2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2lj
YWxIZWlnaHQ7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGhvcml6b250YWxDb25z
dHJhaW50cy5sb2dpY2FsV2lkdGg7CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWUoc3R5
bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC05MjEsNyArOTE5LDcg
QEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZVJlcGxh
Y2VkQ29udGVudEhlaWdodEFuZE1hcmdpbigKICAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9
IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIu
dmFsdWVfb3IoMCkgfTsKICAgICBhdXRvJiBzdHlsZSA9IHJlcGxhY2VkQm94LnN0eWxlKCk7CiAK
LSAgICBhdXRvIGhlaWdodCA9IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVy
cmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodChyZXBs
YWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWludHMtPmxvZ2lj
YWxIZWlnaHQgOiBzdGQ6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZl
cnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFs
dWUoKSA6IGNvbXB1dGVkSGVpZ2h0KHJlcGxhY2VkQm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzID8g
T3B0aW9uYWw8TGF5b3V0VW5pdD4odmVydGljYWxDb25zdHJhaW50cy0+bG9naWNhbEhlaWdodCkg
OiBzdGQ6Om51bGxvcHQpOwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gIW92ZXJyaWRkZW5WZXJ0
aWNhbFZhbHVlcy5oZWlnaHQgJiYgaXNIZWlnaHRBdXRvKHJlcGxhY2VkQm94KTsKICAgICBhdXRv
IHdpZHRoSXNBdXRvID0gc3R5bGUubG9naWNhbFdpZHRoKCkuaXNBdXRvKCk7CiAKQEAgLTk4Myw3
ICs5ODEsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5Ojppbmxp
bmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjbwogCiAgICAgYXV0byB3aWR0aCA9IG92
ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoID8gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1
ZXMud2lkdGggOiBjb21wdXRlZFdpZHRoKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMubG9naWNhbFdpZHRoKTsKICAgICBhdXRvIGhlaWdodElzQXV0byA9IGlzSGVpZ2h0QXV0byhy
ZXBsYWNlZEJveCk7Ci0gICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZEhlaWdodChyZXBsYWNlZEJv
eCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWludHMtPmxvZ2ljYWxIZWln
aHQgOiBzdGQ6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0ID0gY29tcHV0ZWRIZWlnaHQocmVw
bGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyBPcHRpb25hbDxMYXlvdXRVbml0Pih2ZXJ0
aWNhbENvbnN0cmFpbnRzLT5sb2dpY2FsSGVpZ2h0KSA6IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBp
ZiAoIXdpZHRoICYmIGhlaWdodElzQXV0byAmJiByZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNXaWR0
aCgpKSB7CiAgICAgICAgIC8vICMxCkBAIC0xMTY4LDcgKzExNjYsNyBAQCBDb25zdHJhaW50c0Zv
ck91dE9mRmxvd0NvbnRlbnQgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJhaW50c0Zvck91dE9m
Rmxvd0NvbnRlbgogQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IEZvcm1hdHRpbmdHZW9tZXRy
eTo6Y29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYgY29udGFp
bmVyQm94LCBPcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uPiBlc2NhcGVS
ZWFzb24pIGNvbnN0CiB7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4
dCgpLmdlb21ldHJ5Rm9yQm94KGNvbnRhaW5lckJveCwgZXNjYXBlUmVhc29uKTsKLSAgICByZXR1
cm4geyB7IGJveEdlb21ldHJ5LmNvbnRlbnRCb3hMZWZ0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRC
b3hXaWR0aCgpIH0sIHsgYm94R2VvbWV0cnkuY29udGVudEJveFRvcCgpLCBjb21wdXRlZEhlaWdo
dChjb250YWluZXJCb3gpIH0gfTsKKyAgICByZXR1cm4geyB7IGJveEdlb21ldHJ5LmNvbnRlbnRC
b3hMZWZ0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH0sIGJveEdlb21ldHJ5LmNv
bnRlbnRCb3hUb3AoKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCBjOWI4ZTk1NDMzOWQ0OTRmMWFmN2Q5NGE2ODMxYzZjNmVj
NDNjZTdmLi44N2VkZjYyNDhkNGU5NDkzMWM2ZTg3MWNlYjExODkzZDAzYTllMWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQo
SW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvbgogICAgICAgICAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzRm9yTGF5b3V0Qm94KGxheW91dEJveCk7
CiAKICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCwgY29udGFp
bmluZ0Jsb2NrQ29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICBjb21wdXRlU3Rh
dGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRz
LnZlcnRpY2FsKTsKKyAgICAgICAgICAgIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxh
eW91dEJveCwgY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMubG9naWNhbFRvcCk7CiAgICAgICAg
ICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gsIHsg
Y29uc3RyYWludHMsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzIH0pOwogICAgICAgICAgICAg
Y29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9j
a0NvbnN0cmFpbnRzLmhvcml6b250YWwpOwogICAgICAgICAgICAgY29tcHV0ZVBvc2l0aW9uVG9B
dm9pZEZsb2F0cyhmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCwgeyBjb25zdHJhaW50cywgY29u
dGFpbmluZ0Jsb2NrQ29uc3RyYWludHMgfSk7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRl
JiBpbnZhbGlkYXRpb24KICAgICAgICAgICAgICAgICBpZiAoIWxheW91dEJveC5pc0Zsb2F0QXZv
aWRlcigpIHx8IGZsb2F0aW5nQ29udGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdl
b21ldHJ5KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExv
Z2ljYWxUb3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4obGF5b3V0Qm94LCBmb3JtYXR0aW5n
U3RhdGUudXNlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCksIGNvbnRhaW5pbmdCbG9ja0NvbnN0
cmFpbnRzLnZlcnRpY2FsKSk7CisgICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExv
Z2ljYWxUb3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4obGF5b3V0Qm94LCBmb3JtYXR0aW5n
U3RhdGUudXNlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCksIGNvbnRhaW5pbmdCbG9ja0NvbnN0
cmFpbnRzLmxvZ2ljYWxUb3ApKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBhdXRvIGVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQgPSBsYXlvdXRCb3gu
ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpOyAKQEAgLTI2Nyw5ICsyNjcsOSBAQCB2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNv
bnN0IENvbnRhaW5lckJveCYgYwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4
dExheW91dCwgc3RyZWFtIDw8ICJFbmQ6IG1vdmUgaW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVu
IC0+IHBhcmVudDogIiA8PCAmY29udGFpbmVyQm94KTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykKK3Zv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrQ29udGVudEJv
eFRvcCkKIHsKLSAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpLnNl
dExvZ2ljYWxUb3AoZm9ybWF0dGluZ0dlb21ldHJ5KCkuc3RhdGljVmVydGljYWxQb3NpdGlvbihs
YXlvdXRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMpKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5i
b3hHZW9tZXRyeShsYXlvdXRCb3gpLnNldExvZ2ljYWxUb3AoZm9ybWF0dGluZ0dlb21ldHJ5KCku
c3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRC
b3hUb3ApKTsKIH0KIAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGlj
SG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykKQEAgLTMwNyw3ICszMDcsNyBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9y
Qm94QW5kQW5jZXN0b3JzKGNvbnN0CiAKICAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuc2V0VXNl
ZFZlcnRpY2FsTWFyZ2luKCphbmNlc3RvciwgdmVydGljYWxNYXJnaW4pOwogICAgICAgICBib3hH
ZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1hcmdpbiks
IG1hcmdpbkFmdGVyKHZlcnRpY2FsTWFyZ2luKSB9KTsKLSAgICAgICAgYm94R2VvbWV0cnkuc2V0
TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbigqYW5jZXN0b3IsIHZlcnRpY2Fs
TWFyZ2luLCBjb25zdHJhaW50c0ZvckFuY2VzdG9yLnZlcnRpY2FsKSk7CisgICAgICAgIGJveEdl
b21ldHJ5LnNldExvZ2ljYWxUb3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4oKmFuY2VzdG9y
LCB2ZXJ0aWNhbE1hcmdpbiwgY29uc3RyYWludHNGb3JBbmNlc3Rvci5sb2dpY2FsVG9wKSk7CiAj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgc2V0UHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoKmFu
Y2VzdG9yLCBwcmVjb21wdXRlZE1hcmdpbkJlZm9yZSk7CiAgICAgICAgIGJveEdlb21ldHJ5LnNl
dEhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCk7CkBAIC01MDMsNyArNTAzLDcgQEAgSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJp
bnNpY1dpZHRoQ29uc3RyYWkKICAgICByZXR1cm4gY29uc3RyYWludHM7CiB9CiAKLUxheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbiYgdmVydGljYWxNYXJn
aW4sICBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzKSBjb25z
dAorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiB2
ZXJ0aWNhbE1hcmdpbiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wKSBj
b25zdAogewogICAgIEFTU0VSVCghbGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsK
ICAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBjb21wdXRlZCB0aGUgZmluYWwgbWFyZ2luIGJlZm9yZSwg
bGV0J3Mgc2hpZnQgdGhlIGJveCdzIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG5lZWRlZC4KQEAgLTUz
Miw3ICs1MzIsNiBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnZlcnRpY2Fs
UG9zaXRpb25XaXRoTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0QgogICAgICAgICBjdXJyZW50TGF5
b3V0Qm94ID0gJnByZXZpb3VzSW5GbG93U2libGluZzsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja0NvbnRlbnRCb3hUb3AgPSB2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxUb3A7
CiAgICAgLy8gQWRqdXN0IHZlcnRpY2FsIHBvc2l0aW9uIGRlcGVuZGluZyB3aGV0aGVyIHRoaXMg
Ym94IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgYWRqb2lucyB3aXRoIGl0cyBwYXJlbnQuCiAgICAg
YXV0byBkaXJlY3RseUFkam9pbnNQYXJlbnQgPSAhbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2li
bGluZygpOwogICAgIGlmIChkaXJlY3RseUFkam9pbnNQYXJlbnQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYThmZDlmNWE4NjU5NWVjMjljMzFk
MmEwYWQxNzJjM2YzMjY2Y2EwMi4uODNmMzQ4ZDJiNjBmZDhjMmRkZDBiYWY5MTY2NjJhMDA3ZDE1
YzE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY29tcHV0ZUhlaWdodEFuZE1hcmdp
bihjb25zdCBCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKTsKIAogICAg
IHZvaWQgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihjb25zdCBCb3gmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmKTsKLSAgICB2b2lkIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBv
c2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKTsKKyAgICB2b2lk
IGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29u
dGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCk7CiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25Ub0F2
b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYsIGNvbnN0IENvbnN0
cmFpbnRzUGFpciYpOwogICAgIHZvaWQgY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENs
ZWFyKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpOwogCkBAIC03Nyw3ICs3Nyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgb3ZlcnJpZGU7CiAKLSAgICBMYXlvdXRVbml0IHZl
cnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRWZXJ0aWNhbE1h
cmdpbiYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBjb25zdDsKKyAgICBMYXlvdXRVbml0
IHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRWZXJ0aWNh
bE1hcmdpbiYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCkgY29uc3Q7
CiAKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2
b2lkZXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWlu
dHNQYWlyJik7CiAgICAgdm9pZCB1cGRhdGVNYXJnaW5BZnRlckZvclByZXZpb3VzU2libGluZyhj
b25zdCBCb3gmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRy
eS5jcHAKaW5kZXggNTU5ZmUzNjM2ZjQ5OTg5Njc3ODUzODZhZDY2ZTE0ZDQ2ZGU0YmQxNS4uODM1
YjI4OTUzY2U3NDE0NjA1NjgyZjhhNTVjMzMyOGZkZTYzM2M3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBD
b250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmluRmxvd1JlcGxh
Y2VkQ29udGVudFdpZHRoQW5kTWFyZwogICAgIHJldHVybiB7IHVzZWRXaWR0aCwgbm9uUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luIH07CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpIGNvbnN0
CitMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRCb3hUb3ApIGNvbnN0CiB7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zp
c3VyZW4uaHRtbCNibG9jay1mb3JtYXR0aW5nCiAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5n
IGNvbnRleHQsIGJveGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgdGhlIG90aGVyLCB2ZXJ0aWNh
bGx5LCBiZWdpbm5pbmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5pbmcgYmxvY2suCkBAIC0yNDcs
NyArMjQ3LDcgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljVmVy
dGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwKICAgICAgICAgYXV0byYgcHJldmlv
dXNJbkZsb3dCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3go
KnByZXZpb3VzSW5GbG93U2libGluZyk7CiAgICAgICAgIHJldHVybiBCb3hHZW9tZXRyeTo6Ym9y
ZGVyQm94UmVjdChwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5KS5ib3R0b20oKSArIHByZXZpb3Vz
SW5GbG93Qm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKTsKICAgICB9Ci0gICAgcmV0dXJuIHZlcnRp
Y2FsQ29uc3RyYWludHMubG9naWNhbFRvcDsKKyAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29u
dGVudEJveFRvcDsKIH0KIAogTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3Rh
dGljSG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykgY29uc3QKQEAgLTI1NywxMSAr
MjU3LDYgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljSG9yaXpv
bnRhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm8KICAgICByZXR1cm4gaG9yaXpvbnRhbENv
bnN0cmFpbnRzLmxvZ2ljYWxMZWZ0ICsgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJv
eChsYXlvdXRCb3gpLm1hcmdpblN0YXJ0KCk7CiB9CiAKLVBvaW50IEJsb2NrRm9ybWF0dGluZ0dl
b21ldHJ5OjpzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29u
c3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgc3Rh
dGljSG9yaXpvbnRhbFBvc2l0aW9uKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSwg
c3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMpIH07
Ci19Ci0KIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6Omlu
Rmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlk
ZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAg
ICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRy
eS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IDNmYThmYWZiNjI1N2FkYjZjZmQ5OGU3NjA4NTdi
YmNiOTM1OTA4NjkuLmRiODM5MTQ2NjhlZmI5ODQxYTYyYmEwMDU3ZGE2NTMzOGQ1MDY0YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2sv
QmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmgKQEAgLTQ0LDgg
KzQ0LDcgQEAgcHVibGljOgogICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5GbG93Q29udGVu
dEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
LCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lk
dGhBbmRNYXJnaW4gaW5GbG93Q29udGVudFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVz
JikgY29uc3Q7CiAKLSAgICBQb2ludCBzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJikgY29uc3Q7
Ci0gICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0
IFZlcnRpY2FsQ29uc3RyYWludHMmKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IHN0YXRpY1ZlcnRp
Y2FsUG9zaXRpb24oY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50
Qm94VG9wKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbihj
b25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKSBjb25zdDsKIAogICAgIElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBC
b3gmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5k
ZXggOGU0YjczMjYxMWM4M2NmMDI0ZDUyNjRjMmM4NGZjYTMxZTBjMDRlZS4uNWNjNWRiY2RiMzUw
OGRkZTY3OWZhM2ZkNTI5OWQ1NDU5NTdjOGJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTczLDEzICs3MywxNSBAQCB2b2lkIFRhYmxlV3JhcHBlckJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQm94KGNvbnN0IENvbnRhaW5lckJveCYg
dGFibAogICAgIGxheW91dFN0YXRlKCkuZW5zdXJlVGFibGVGb3JtYXR0aW5nU3RhdGUodGFibGVC
b3gpOwogCiAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmdGb3JUYWJsZUJveCh0YWJsZUJveCwg
Y29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRp
b24odGFibGVCb3gsIGNvbnN0cmFpbnRzLnZlcnRpY2FsKTsKKyAgICBjb21wdXRlU3RhdGljVmVy
dGljYWxQb3NpdGlvbih0YWJsZUJveCwgY29uc3RyYWludHMubG9naWNhbFRvcCk7CiAgICAgY29t
cHV0ZVdpZHRoQW5kTWFyZ2luRm9yVGFibGVCb3godGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwpOwogICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24odGFibGVCb3gsIGNv
bnN0cmFpbnRzLmhvcml6b250YWwpOwogCiAgICAgaWYgKHRhYmxlQm94Lmhhc0NoaWxkKCkpIHsK
KyAgICAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gdGhpcy0+Zm9ybWF0dGluZ0dlb21l
dHJ5KCk7CiAgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBJbnZhbGlkYXRpb25TdGF0
ZSB7IH07Ci0gICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KHRh
YmxlQm94LCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25T
dGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KHRh
YmxlQm94KSk7CisgICAgICAgIGF1dG8gY29uc3RyYWludHMgPSBDb25zdHJhaW50c0ZvclRhYmxl
Q29udGVudCB7IHsgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCh0YWJsZUJveCkgfSwgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkSGVpZ2h0KHRhYmxlQm94
KSB9OworICAgICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCh0YWJs
ZUJveCwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3Rh
dGUsIGNvbnN0cmFpbnRzKTsKICAgICB9CiAKICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9y
VGFibGVCb3godGFibGVCb3gsIGNvbnN0cmFpbnRzKTsKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lk
IFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJn
aW5Gb3JUYWJsZUJveChjb25zdAogICAgIGZvcm1hdHRpbmdTdGF0ZSgpLnNldFVzZWRWZXJ0aWNh
bE1hcmdpbih0YWJsZUJveCwgdmVydGljYWxNYXJnaW4pOwogCiAgICAgYXV0byYgYm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeSh0YWJsZUJveCk7Ci0gICAgYm94R2Vv
bWV0cnkuc2V0TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbih0YWJsZUJveCwg
dmVydGljYWxNYXJnaW4sIGNvbnN0cmFpbnRzLnZlcnRpY2FsKSk7CisgICAgYm94R2VvbWV0cnku
c2V0TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbih0YWJsZUJveCwgdmVydGlj
YWxNYXJnaW4sIGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3ApKTsKICAgICBib3hHZW9tZXRyeS5zZXRD
b250ZW50Qm94SGVpZ2h0KGhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0KTsKICAgICBib3hH
ZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1hcmdpbiks
IG1hcmdpbkFmdGVyKHZlcnRpY2FsTWFyZ2luKSB9KTsKICAgICAvLyBBZGp1c3QgdGhlIHByZXZp
b3VzIHNpYmxpbmcncyBtYXJnaW4gYm90dG9tIG5vdyB0aGF0IHRoaXMgYm94J3MgdmVydGljYWwg
bWFyZ2luIGlzIGNvbXB1dGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250
ZXh0LmNwcAppbmRleCBlZmU5NzgyMDRlY2M2MWNkMjc1NmE0ODMzMDMyMDk2MTQwYjUxMGZhLi5i
ODY3MDAwMDA2YzQ1ZTAyMDZiMDQ5MWMyMmRiODVhNzU1M2Y1MzFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEZs
ZXhGb3JtYXR0aW5nQ29udGV4dDo6c2l6ZUFuZFBsYWNlRmxleEl0ZW1zKGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udAogICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IHRoaXMtPmZv
cm1hdHRpbmdHZW9tZXRyeSgpOwogICAgIGF1dG8gZmxleEl0ZW1NYWluQXhpc1N0YXJ0ID0gY29u
c3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsTGVmdDsKICAgICBhdXRvIGZsZXhJdGVtTWFpbkF4
aXNFbmQgPSBmbGV4SXRlbU1haW5BeGlzU3RhcnQ7Ci0gICAgYXV0byBmbGV4SXRlbUNyb3NBeGlz
U3RhcnQgPSBjb25zdHJhaW50cy52ZXJ0aWNhbC5sb2dpY2FsVG9wOworICAgIGF1dG8gZmxleEl0
ZW1Dcm9zQXhpc1N0YXJ0ID0gY29uc3RyYWludHMubG9naWNhbFRvcDsKICAgICBhdXRvIGZsZXhJ
dGVtQ3Jvc0F4aXNFbmQgPSBmbGV4SXRlbUNyb3NBeGlzU3RhcnQ7CiAgICAgZm9yIChhdXRvJiBm
bGV4SXRlbSA6IGNoaWxkcmVuT2ZUeXBlPENvbnRhaW5lckJveD4ocm9vdCgpKSkgewogICAgICAg
ICBBU1NFUlQoZmxleEl0ZW0uZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBlZTgx
YTE3MTE3Mzg4Y2NmMWY4ODZhYjZjYWQ4Yjk2NDU5ZjM2NTRkLi45ZGM0MDE2MmU2NDg2MDEzZDky
ZWE0NzlhZjZiOGIzNTQxYWI2ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVC
dWlsZGVyOjoKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5n
U3RhdGUoKTsKICAgICBmb3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLnNpemUoKSk7Ci0gICAgSW5saW5l
TGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCA9IGNvbnN0cmFpbnRzLnZlcnRpY2FsLmxvZ2ljYWxU
b3A7CisgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCA9IGNvbnN0cmFpbnRzLmxv
Z2ljYWxUb3A7CiAgICAgc3RydWN0IFByZXZpb3VzTGluZSB7CiAgICAgICAgIExpbmVCdWlsZGVy
OjpJbmxpbmVJdGVtUmFuZ2UgcmFuZ2U7CiAgICAgICAgIHNpemVfdCBvdmVyZmxvd0NvbnRlbnRM
ZW5ndGggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAppbmRleCA3ODQ3ZWU2MzJhMDE3NjE2YWZkMTk4ZDdkMjM1ZDZkOTVjZGRjNjI4Li5lMWZi
Y2VlYzRmZDYyNmI0NDk1MDQ4Mjg5MTM4ZjlkMzg5OThiYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgVGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJC
b3gmIGZvcm1hdHRpbmdDb24KIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5G
bG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCYgY29uc3RyYWludHMpCiB7CiAgICAgYXV0byBhdmFpbGFibGVIb3Jpem9udGFsU3Bh
Y2UgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsLmxvZ2ljYWxXaWR0aDsKLSAgICBhdXRvIGF2YWls
YWJsZVZlcnRpY2FsU3BhY2UgPSBjb25zdHJhaW50cy52ZXJ0aWNhbC5sb2dpY2FsSGVpZ2h0Owor
ICAgIGF1dG8gYXZhaWxhYmxlVmVydGljYWxTcGFjZSA9ICgoY29uc3QgQ29uc3RyYWludHNGb3JU
YWJsZUNvbnRlbnQmKWNvbnN0cmFpbnRzKS5hdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVu
dDsKICAgICAvLyAxLiBDb21wdXRlIHdpZHRoIGFuZCBoZWlnaHQgZm9yIHRoZSBncmlkLgogICAg
IGNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFTcGFjZShhdmFpbGFibGVIb3Jpem9udGFsU3BhY2Us
IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpOwogICAgIC8vIDIuIEZpbmFsaXplIGNlbGxzLgpAQCAt
OTksNyArOTksNyBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRy
eUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbgogICAgICAgICBmb3IgKHNpemVf
dCByb3dJbmRleCA9IGNlbGwtPnN0YXJ0Um93KCkgKyAxOyByb3dJbmRleCA8IGNlbGwtPmVuZFJv
dygpOyArK3Jvd0luZGV4KQogICAgICAgICAgICAgYXZhaWxhYmxlVmVydGljYWxTcGFjZSArPSBy
b3dMaXN0W3Jvd0luZGV4XS5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIGF2YWlsYWJsZVZlcnRp
Y2FsU3BhY2UgKz0gKGNlbGwtPnJvd1NwYW4oKSAtIDEpICogZ3JpZC52ZXJ0aWNhbFNwYWNpbmco
KTsKLSAgICAgICAgbGF5b3V0Q2VsbCgqY2VsbCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBh
dmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKKyAgICAgICAgbGF5b3V0Q2VsbCgqY2VsbCwgYXZhaWxh
YmxlSG9yaXpvbnRhbFNwYWNlKTsKIAogICAgICAgICBhdXRvIGNvbXB1dGVJbnRyaW5zaWNWZXJ0
aWNhbFBhZGRpbmdGb3JDZWxsID0gWyZdIHsKICAgICAgICAgICAgIC8vIEludHJpbnNpYyBwYWRk
aW5nIGlzIHRoZSBleHRyYSBwYWRkaW5nIGZvciB0aGUgY2VsbCBib3ggd2hlbiBpdCBpcyBzaG9y
dGVyIHRoYW4gdGhlIHJvdy4gQ2VsbCBib3hlcyBoYXZlIHRvCkBAIC0yNDYsNyArMjQ2LDcgQEAg
dm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhj
b25zdCBDb25zdHJhaW50c0ZvckluRmwKICAgICBhdXRvJiBncmlkID0gZm9ybWF0dGluZ1N0YXRl
KCkudGFibGVHcmlkKCk7CiAgICAgYXV0byYgdGFibGVCb3ggPSByb290KCk7CiAgICAgYXV0byBz
ZWN0aW9uV2lkdGggPSBncmlkLmNvbHVtbnMoKS5sb2dpY2FsV2lkdGgoKSArIDIgKiBncmlkLmhv
cml6b250YWxTcGFjaW5nKCk7Ci0gICAgYXV0byBsb2dpY2FsVG9wID0gY29uc3RyYWludHMudmVy
dGljYWwubG9naWNhbFRvcDsKKyAgICBhdXRvIGxvZ2ljYWxUb3AgPSBjb25zdHJhaW50cy5sb2dp
Y2FsVG9wOwogICAgIGF1dG8gdmVydGljYWxTcGFjaW5nID0gZ3JpZC52ZXJ0aWNhbFNwYWNpbmco
KTsKICAgICBhdXRvIHBhZGRpbmdCZWZvcmUgPSBPcHRpb25hbDxMYXlvdXRVbml0PiB7IHZlcnRp
Y2FsU3BhY2luZyB9OwogICAgIGF1dG8gcGFkZGluZ0FmdGVyID0gdmVydGljYWxTcGFjaW5nOwpA
QCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdl
b21ldHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgfQogfQogCi12
b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpD
ZWxsJiBjZWxsLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQpCit2b2lkIFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiBjZWxs
LCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSkKIHsKICAgICBBU1NFUlQoY2Vs
bC5ib3goKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAKQEAgLTMwNSwx
MCArMzA1LDggQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRDZWxsKGNvbnN0
IFRhYmxlR3JpZDo6Q2VsbCYgY2VsbCwgTGF5b3V0VW5pdAogCiAgICAgaWYgKGNlbGxCb3guaGFz
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpIHsKICAgICAgICAgYXV0byBjb25zdHJhaW50c0ZvckNl
bGxDb250ZW50ID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dChjZWxsQm94KTsKLSAgICAgICAgY29uc3RyYWludHNGb3JDZWxsQ29udGVudC52ZXJ0aWNhbC5s
b2dpY2FsSGVpZ2h0ID0gYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQ7CiAgICAgICAg
IGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBJbnZhbGlkYXRpb25TdGF0ZSB7IH07Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBwYXJ0IG9mIHRoZSBpbnZhbGlkYXRp
b24gc3RhdGUgdG8gaW5kaWNhdGUgd2hlbiB3ZSByZS1sYXlvdXQgdGhlIGNlbGwKLSAgICAgICAg
Ly8gbXVsdGlwbGUgdGltZXMgYXMgcGFydCBvZiB0aGUgbXVsdGktcGFzcyB0YWJsZSBhbGdvcml0
aG0uCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBwYXJ0IG9mIHRo
ZSBpbnZhbGlkYXRpb24gc3RhdGUgdG8gaW5kaWNhdGUgd2hlbiB3ZSByZS1sYXlvdXQgdGhlIGNl
bGwgbXVsdGlwbGUgdGltZXMgYXMgcGFydCBvZiB0aGUgbXVsdGktcGFzcyB0YWJsZSBhbGdvcml0
aG0uCiAgICAgICAgIGF1dG8mIGZsb2F0aW5nU3RhdGVGb3JDZWxsQ29udGVudCA9IGxheW91dFN0
YXRlKCkuZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUoY2VsbEJveCkuZmxvYXRpbmdTdGF0ZSgp
OwogICAgICAgICBmbG9hdGluZ1N0YXRlRm9yQ2VsbENvbnRlbnQuY2xlYXIoKTsKICAgICAgICAg
TGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbEJveCwgbGF5b3V0U3Rh
dGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFpbnRz
Rm9yQ2VsbENvbnRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaAppbmRleCAxOWQ2M2FkNDgyYjUxYjdkNDEzY2E0YjMxZjQ2MTcxMTkyM2EyNjcyLi43NTFl
ODE1Njk5MDUxZWQwOTY2NmZiMjExZDgyMmQ4YTUxM2UzZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
ICAgIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KCkgY29u
c3QgeyByZXR1cm4gVGFibGVMYXlvdXQoKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLnRhYmxlR3Jp
ZCgpKTsgfQogCiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxheW91dENlbGwoY29uc3Qg
VGFibGVHcmlkOjpDZWxsJiwgTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gc3Rk
OjpudWxsb3B0KTsKKyAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiwg
TGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdl
b21ldHJ5Rm9yQ2VsbHMoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpOwogICAg
IHZvaWQgc2V0VXNlZEdlb21ldHJ5Rm9yUm93cyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250
YWxTcGFjZSk7CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAKaW5kZXggNjgyMGIwZmFhYTY5ZDQ1NGQ5OTJiZDlkMGZiYjA3YWExYzJlNTQ3Zi4uZjUwYjJi
MWYzMzRhNjI5MmMwMGMxMzdiY2M3NTQxY2M4YWU4MWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKQEAgLTIxNiw5ICsyMTYsOCBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91
dCgpCiAKICAgICBhdXRvIGludmFsaWRhdGlvblN0YXRlID0gTGF5b3V0OjpJbnZhbGlkYXRpb25T
dGF0ZSB7IH07CiAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBMYXlvdXQ6Okhvcml6
b250YWxDb25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSwgZmxvdygp
LmNvbnRlbnRTaXplKCkud2lkdGgoKSB9OwotICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9
IExheW91dDo6VmVydGljYWxDb25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVm
b3JlKCksIHsgfSB9OwogCi0gICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGluZUxheW91dEZv
ckludGVyZ3JhdGlvbihpbnZhbGlkYXRpb25TdGF0ZSwgeyBob3Jpem9udGFsQ29uc3RyYWludHMs
IHZlcnRpY2FsQ29uc3RyYWludHMgfSk7CisgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGlu
ZUxheW91dEZvckludGVyZ3JhdGlvbihpbnZhbGlkYXRpb25TdGF0ZSwgeyBob3Jpem9udGFsQ29u
c3RyYWludHMsIGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgfSk7CiAKICAgICBjb25z
dHJ1Y3RDb250ZW50KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430216</attachid>
            <date>2021-05-31 16:54:00 -0700</date>
            <delta_ts>2021-05-31 17:10:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226435-20210531165400.patch</filename>
            <type>text/plain</type>
            <size>60518</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJkMzJkNjNiYzM0OTk2
NTU3Njk1NjgxMTcxZDkwN2NmNjZiMjA3ZS4uY2VlN2UwN2NiNmIzOTllM2QzZjM1YTI5MTdkM2Yx
MDRiNjE1NzU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA1LTMxICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBUaWdodGVuIHRoZSBj
b25zdHJhaW50IGNsYXNzZXMgKENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudC9Db25zdHJhaW50
c0Zvck91dE9mRmxvd0NvbnRlbnQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBXaGlsZSBsb2dpY2FsIGhlaWdodCBzaG91bGQgYWx3YXlzIGJlIGF2YWls
YWJsZSBmb3Igb3V0IG9mIGZsb3cgY29udGVudCBieSBkZXNpZ24sCisgICAgICAgIHRoZSBiYXNl
IGluZmxvdyBsYXlvdXQgY2FuJ3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBpdC4gVGhpcyBoZWlnaHQg
Y29uc3RyYWludCBpcyBub3QgZXZlbiByZXF1aXJlZC91c2VkIGluIG1vc3Qgb2YgdGhlIGxheW91
dCBzeXN0ZW1zLAorICAgICAgICBzbyBsZXQncyBtb3ZlIGl0IHRvIHRoZSBkZXJpdmVkIGNsYXNz
KGVzKS4KKworICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0
cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoKKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdl
b21ldHJ5KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVw
bGFjZWRDb250ZW50V2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJl
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nR2Vv
bWV0cnk6OnN0YXRpY1Bvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Lmg6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdDb250ZXh0OjpzaXplQW5kUGxh
Y2VGbGV4SXRlbXMpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxv
d0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2Vs
bCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUxheW91dDo6bGF5b3V0KToKKwogMjAyMS0wNC0yOSAgU2VyZ2lvIFZpbGxhciBTZW5p
biAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBFbmFibGUgPHN1bW1hcnk+IHRvIGJl
IGEgZmxleCBjb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxOTIyZTJiYzE2YmQ2MmZmODNmZjljODI5MjYzY2IzM2Vm
NDdkYjllLi45OTMwMmI5ZmFlYWQ5MWFkNDMyMGUzYTZjMjM1NTIyZGZlMmMzMDcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTM0LDYgKzIxMzQsOCBAQAogCQk2RjE1NTIyMTI2NDc2QjVDMDBFMzUzQzYgLyogVGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RjE1NTIyMDI2NDc2QjVCMDBFMzUzQzYgLyogVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkYxNzI2NEYyNDcwQzYwQjAwNTE4Qzk2IC8qIFRhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGMTcyNjRFMjQ3MEM2MEEwMDUxOEM5NiAvKiBUYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8qIElubGluZVRleHRJ
dGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjFD
QzFERDIyNUY4QjQyMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2RjFFODNBMjI2NjU4ODRDMDAyRTlE
MjggLyogVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMUU4M0EwMjY2NTg4NEMwMDJFOUQyOCAvKiBUYWJs
ZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTZGMUU4M0E2MjY2NTg4OEMwMDJFOUQyOCAvKiBGb3JtYXR0aW5n
Q29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGMUU4M0E1MjY2NTg4OEMwMDJFOUQyOCAvKiBGb3JtYXR0aW5nQ29uc3RyYWludHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RjI2QkI2
QzIzMzQzRTZGMDAyRjJCRUEgLyogTGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYyNkJCNkIyMzM0M0U1QjAwMkYyQkVBIC8qIExh
eW91dENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGluZUJ1aWxkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMjZFQjQ2MjM0
MDA0QTUwMDY5MDZFMiAvKiBJbmxpbmVMaW5lQnVpbGRlci5oICovOyB9OwogCQk2RjM2MEU1MDIz
OTk5NDIxMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMzYwRTRFMjM5OTk0MjAwMDE1MTJB
NyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05OTk0LDYgKzk5OTYsOCBAQAogCQk2RjE3MjY0RTI0
NzBDNjBBMDA1MThDOTYgLyogVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMUNDMURDMjI1RjhC
NDEwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxp
bmVUZXh0SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMUNDMUREMjI1
RjhCNDIwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVU
ZXh0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RjFFODNBMDI2NjU4ODRD
MDAyRTlEMjggLyogVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkYxRTgzQTUyNjY1ODg4QzAwMkU5RDI4IC8qIEZvcm1hdHRp
bmdDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXR0
aW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYyMjJCNzQx
QUI1MkQ2NDAwOTQ2NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGMjIyQjc1MUFCNTJEOEEwMDk0NjUxQSAvKiBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTFZl
cnRleEFycmF5T2JqZWN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZG
MjVCMjAwMjIwQTg1QUIwMDAwMDExQiAvKiBJbmxpbmVMaW5lQnVpbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmxpbmVMaW5lQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMjczNiw2ICsyMjc0MCw3IEBACiAJCQkJNkZCN0QyRDUyNTBGRDdCNTAwMDIwN0FB
IC8qIGZsZXggKi8sCiAJCQkJMTE1Q0ZBOUEyMDhCQzE0MDAwMUU2OTkxIC8qIGlubGluZSAqLywK
IAkJCQk2RkM1Q0E5MTIyRTM1OTMzMDBCMTNFMTEgLyogdGFibGUgKi8sCisJCQkJNkYxRTgzQTUy
NjY1ODg4QzAwMkU5RDI4IC8qIEZvcm1hdHRpbmdDb25zdHJhaW50cy5oICovLAogCQkJCTExNUNG
QTY5MjA4QUY3RDAwMDFFNjk5MSAvKiBGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJMTE1
Q0ZBNjgyMDhBRjdEMDAwMUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggKi8sCiAJCQkJNkZC
Qjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgKi8sCkBAIC0y
Mjc3Myw2ICsyMjc3OCw3IEBACiAJCTZGQzVDQTkxMjJFMzU5MzMwMEIxM0UxMSAvKiB0YWJsZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNkYxRTgzQTAy
NjY1ODg0QzAwMkU5RDI4IC8qIFRhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmggKi8sCiAJCQkJ
NkZDNUNBOTQyMkUzNTk5NDAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwICov
LAogCQkJCTZGQzVDQTk1MjJFMzU5OTQwMEIxM0UxMSAvKiBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
LmggKi8sCiAJCQkJMTFEMTlDMkUyMzE1OUJBRTAwOEYyNEQzIC8qIFRhYmxlRm9ybWF0dGluZ0dl
b21ldHJ5LmNwcCAqLywKQEAgLTMyMTk4LDYgKzMyMjA0LDcgQEAKIAkJCQlCQ0YxNjQ1OTI2NjJB
MUU5MDAwMkY3RUYgLyogQ1NTQ2FsY05lZ2F0ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RjE2NDYxMjY2MkEyOEQwMDAyRjdFRiAvKiBDU1NDYWxjT3BlcmF0aW9uTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNGMTY0NTUyNjYyQTEyMjAwMDJGN0VGIC8qIENTU0NhbGNQcmltaXRpdmVW
YWx1ZU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNzA5REUwMjY2MzIzQ0YwMEI5QTIxQyAv
KiBDU1NDYWxjU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUUyRDhGMTM0RUU1
MEMwMDcyOTIwQSAvKiBDU1NDYWxjVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjA0OUND
MERCNTYwQzIwMDIwNDczOSAvKiBDU1NDYW52YXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ3OTAwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMjczMyw2ICszMjc0MCw3IEBACiAJCQkJNEEwREEyRkYxMjlC
MjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDA1Q0VEMkEwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NFNkNCRkIxODdGMzcwNzAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkYxRTgzQTYyNjY1ODg4QzAwMkU5RDI4IC8qIEZvcm1h
dHRpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE1Q0ZBNkEyMDhBRjdEMDAw
MUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzVDODlB
NDI2NTBBQzNDMDBGM0I0NTYgLyogRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RjU2QjQ0NzI2NDc5RTYyMDBBQUUyNTcgLyogRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNDY3NCw3ICszNDY4Miw2IEBACiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAw
MTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkM3MDlERTAyNjYzMjNDRjAwQjlBMjFDIC8q
IENTU0NhbGNTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxOTUxRDU0RjVG
QjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI2RDU2
RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENzcwNUM3MjU1Mjc2Q0QwMDFEMEM5NCAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM1NjU0LDYgKzM1NjYxLDcgQEAKIAkJCQlFM0MwNDEzODI1NENCMzBEMDAy
MUQwRTYgLyogU3lzdGVtU291bmREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNDMDQx
MkYyNTRDQTI5QjAwMjFEMEU2IC8qIFN5c3RlbVNvdW5kTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTZGMUU4M0EyMjY2NTg4NEMwMDJFOUQyOCAvKiBUYWJsZUZvcm1hdHRpbmdD
b25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDdGQTk3MDAyNjUwOTgyQjAwODQxNDE2
IC8qIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjQ5QzNF
NzI2NDc5QjNDMDA1MTk1M0QgLyogVGFibGVGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IGI5MGEx
N2Y2ODNkNTY3YzFlYWQxMDA1NzU4YzE0NjViNzUyNDEwYmYuLjc5YjllY2Q2ODI3NGMwMGM0NTFh
MGJlMGIzOGVkNjJhMzkxNjU1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4
dC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIExheW91dENvbnRleHQ6OmxheW91dEZvcm1h
dHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbgogICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5nZW9tZXRyeUZvckJveChmb3JtYXR0aW5n
Q29udGV4dFJvb3QpOwogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5oYXNJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICBhdXRvIGNvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dGVudCA9IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7IHsgYm94R2VvbWV0cnkuY29udGVu
dEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkgfSwgeyBib3hHZW9tZXRy
eS5jb250ZW50Qm94VG9wKCksIHsgfSB9IH07CisgICAgICAgIGF1dG8gY29uc3RyYWludHNGb3JJ
bkZsb3dDb250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsgeyBib3hHZW9tZXRy
eS5jb250ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSB9LCBib3hH
ZW9tZXRyeS5jb250ZW50Qm94VG9wKCkgfTsKICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxh
eW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IGY5
MGJjZjAwODNkOWNiMjEyOTIwMWFjNmQ5MGZkYzg3MTY1YjdjMmEuLmY1YmVhMGNkMjljZjUzNTE4
Zjc4YzdkNWJiYjljZGM5YmIyZTZkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5o
CkBAIC0xNTcsNDEgKzE1Nyw2IEBAIHN0cnVjdCBWZXJ0aWNhbEdlb21ldHJ5IHsKICAgICBDb250
ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW47CiB9OwogCi1zdHJ1Y3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGxvZ2ljYWxMZWZ0ICsgbG9naWNhbFdpZHRoOyB9Ci0KLSAgICBMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0OwotICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoOwotfTsKLQotc3Ry
dWN0IFZlcnRpY2FsQ29uc3RyYWludHMgewotICAgIExheW91dFVuaXQgbG9naWNhbFRvcDsKLSAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQ7Ci19OwotCi1zdHJ1Y3Qg
Q29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsKLSAgICBIb3Jpem9udGFsQ29uc3RyYWludHMg
aG9yaXpvbnRhbDsKLSAgICBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2FsOwotfTsKLQotc3Ry
dWN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCB7Ci0gICAgSG9yaXpvbnRhbENvbnN0
cmFpbnRzIGhvcml6b250YWw7Ci0gICAgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNhbDsKLSAg
ICAvLyBCb3JkZXJzIGFuZCBwYWRkaW5nIGFyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSBjb250YWlu
aW5nIGJsb2NrJ3MgY29udGVudCBib3ggYXMgaWYgdGhlIGJveCB3YXMgYW4gaW4tZmxvdyBib3gu
Ci0gICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nQ29uc3RyYWludHM7Ci19OwotCi1zdHJ1
Y3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7Ci0gICAgdm9pZCBleHBhbmQoTGF5b3V0VW5p
dCBob3Jpem9udGFsVmFsdWUpOwotICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIG9wZXJh
dG9yKz0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYpOwotICAgIEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMmIG9wZXJhdG9yKz0oTGF5b3V0VW5pdCk7Ci0gICAgSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyYgb3BlcmF0b3ItPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
Jik7Ci0gICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3BlcmF0b3ItPShMYXlvdXRVbml0
KTsKLQotICAgIExheW91dFVuaXQgbWluaW11bTsKLSAgICBMYXlvdXRVbml0IG1heGltdW07Ci19
OwotCiBzdHJ1Y3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMgewogICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gd2lkdGg7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VkSG9yaXpvbnRhbE1h
cmdpbj4gbWFyZ2luOwpAQCAtMjMxLDM4ICsxOTYsNiBAQCBpbmxpbmUgSW5saW5lTGF5b3V0VW5p
dCBtYXhJbmxpbmVMYXlvdXRVbml0KCkKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzOjpleHBhbmQoTGF5b3V0VW5pdCBob3Jpem9udGFsVmFsdWUpCi17
Ci0gICAgbWluaW11bSArPSBob3Jpem9udGFsVmFsdWU7Ci0gICAgbWF4aW11bSArPSBob3Jpem9u
dGFsVmFsdWU7Ci19Ci0KLWlubGluZSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvcis9KGNvbnN0IEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMmIG90aGVyKQotewotICAgIG1pbmltdW0gKz0gb3RoZXIubWluaW11bTsKLSAgICBtYXhp
bXVtICs9IG90aGVyLm1heGltdW07Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgSW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0
b3IrPShMYXlvdXRVbml0IHZhbHVlKQotewotICAgIGV4cGFuZCh2YWx1ZSk7Ci0gICAgcmV0dXJu
ICp0aGlzOwotfQotCi1pbmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2lj
V2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3ItPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzJiBvdGhlcikKLXsKLSAgICBtaW5pbXVtIC09IG90aGVyLm1pbmltdW07Ci0gICAgbWF4aW11
bSAtPSBvdGhlci5tYXhpbXVtOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotaW5saW5lIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9y
LT0oTGF5b3V0VW5pdCB2YWx1ZSkKLXsKLSAgICBleHBhbmQoLXZhbHVlKTsKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KIHN0cnVjdCBTbG90UG9zaXRpb24gewogICAgIFNsb3RQb3NpdGlvbigpID0g
ZGVmYXVsdDsKICAgICBTbG90UG9zaXRpb24oc2l6ZV90IGNvbHVtbiwgc2l6ZV90IHJvdyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDI0ODEwMWEwMDlkNzI1NjFjZGU5MDliMjY5
ZmZmN2I2ZmUzZGI4OGEuLmZhM2NmNDc3YzM4ODNkYmY1ZWMwZmY1OGI5NDdkYzM3YzI5Y2E2Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGMKICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLm91
dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFs
LCBjb25zdHJhaW50cy52ZXJ0aWNhbCwgeyB1c2VkSGVpZ2h0IH0pOwogICAgIH07CiAKLSAgICBh
dXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICpjb25zdHJhaW50cy52ZXJ0aWNhbC5sb2dpY2Fs
SGVpZ2h0OworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29uc3RyYWludHMudmVy
dGljYWwubG9naWNhbEhlaWdodDsKICAgICBhdXRvIHZlcnRpY2FsR2VvbWV0cnkgPSBjb21wdXRl
KHsgfSk7CiAgICAgaWYgKGF1dG8gbWF4SGVpZ2h0ID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29t
cHV0ZWRNYXhIZWlnaHQobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tIZWlnaHQpKSB7CiAgICAg
ICAgIGF1dG8gbWF4VmVydGljYWxHZW9tZXRyeSA9IGNvbXB1dGUobWF4SGVpZ2h0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuaAppbmRleCBjNjZhZjUzN2JiOTNjNGMyYmNhYzQ1Mzk3MjllMDdlN2Vj
MTVmYTc0Li5lOTQ5NjlhOWMyZjZjN2Y2MDU5ZmIzMThmMzRjMWU1ZjZmZjFjNTcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUgIkZvcm1hdHRpbmdDb25zdHJhaW50cy5o
IgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQu
aCIKICNpbmNsdWRlICJMYXlvdXRVbml0cy5oIgpAQCAtNDIsOSArNDMsMTMgQEAgbmFtZXNwYWNl
IExheW91dCB7CiAKIGNsYXNzIEJveEdlb21ldHJ5OwogY2xhc3MgQ29udGFpbmVyQm94Oworc3Ry
dWN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudDsKK3N0cnVjdCBDb25zdHJhaW50c0Zvck91
dE9mRmxvd0NvbnRlbnQ7CitzdHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzOwogY2xhc3MgRm9y
bWF0dGluZ0dlb21ldHJ5OwogY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgRm9ybWF0dGlu
Z1F1aXJrczsKK3N0cnVjdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwogY2xhc3MgSW52YWxp
ZGF0aW9uU3RhdGU7CiBjbGFzcyBMYXlvdXRTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0
cnkuY3BwCmluZGV4IGYyOWUyMThiZmQ0ZTg1M2UzODhhMzUyM2MzZGY4Yzc1MDZmYWMyMzUuLjRi
OGVkMmNmNGRmNTE5NGY1YzkwMTIwNzhjNTQ2YzQ1YTJjZjZiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRp
bmdHZW9tZXRyeS5jcHAKQEAgLTMyNCw3ICszMjQsNiBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdH
ZW9tZXRyeTo6c2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dAogVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxh
Y2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBDb250YWluZXJCb3gmIGxheW91dEJveCwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRp
Y2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5WZXJ0
aWNhbFZhbHVlcyYgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKSBjb25zdAogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5pc1JlcGxh
Y2VkQm94KCkpOwotICAgIEFTU0VSVCh2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQp
OwogCiAgICAgLy8gMTAuNi40IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVs
ZW1lbnRzCiAgICAgLy8KQEAgLTM1Myw3ICszNTIsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1h
dHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0
CiAgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgp
OwogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2Vv
bWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKnZlcnRpY2FsQ29uc3RyYWludHMubG9naWNh
bEhlaWdodDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IHZlcnRpY2FsQ29uc3Ry
YWludHMubG9naWNhbEhlaWdodDsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gaG9y
aXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKIAogICAgIGF1dG8gdG9wID0gY29tcHV0
ZWRWYWx1ZShzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTU4
Niw3ICs1ODUsNiBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRP
ZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjbwogVmVydGljYWxHZW9tZXRyeSBG
b3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25z
dCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNh
bENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5W
ZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQocmVwbGFjZWRCb3guaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpOwotICAgIEFTU0VSVCh2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxI
ZWlnaHQpOwogCiAgICAgLy8gMTAuNi41IEFic29sdXRlbHkgcG9zaXRpb25lZCwgcmVwbGFjZWQg
ZWxlbWVudHMKICAgICAvLwpAQCAtNjAxLDcgKzU5OSw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9y
bWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3Qg
UmVwCiAgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4
dCgpOwogICAgIGF1dG8mIHN0eWxlID0gcmVwbGFjZWRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBi
b3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KHJlcGxhY2VkQm94
KTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp2ZXJ0aWNhbENvbnN0cmFpbnRz
LmxvZ2ljYWxIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSB2ZXJ0aWNh
bENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0
aCA9IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7CiAKICAgICBhdXRvIHRvcCA9
IGNvbXB1dGVkVmFsdWUoc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7
CkBAIC05MjEsNyArOTE5LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nR2Vv
bWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbigKICAgICBhdXRvIHVz
ZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVz
IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICBhdXRvJiBzdHlsZSA9IHJlcGxh
Y2VkQm94LnN0eWxlKCk7CiAKLSAgICBhdXRvIGhlaWdodCA9IG92ZXJyaWRkZW5WZXJ0aWNhbFZh
bHVlcy5oZWlnaHQgPyBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBj
b21wdXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2Fs
Q29uc3RyYWludHMtPmxvZ2ljYWxIZWlnaHQgOiBzdGQ6Om51bGxvcHQpOworICAgIGF1dG8gaGVp
Z2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNh
bFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KHJlcGxhY2VkQm94LCB2ZXJ0
aWNhbENvbnN0cmFpbnRzID8gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pih2ZXJ0aWNhbENvbnN0
cmFpbnRzLT5sb2dpY2FsSGVpZ2h0KSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgYXV0byBoZWlnaHRJ
c0F1dG8gPSAhb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCAmJiBpc0hlaWdodEF1dG8o
cmVwbGFjZWRCb3gpOwogICAgIGF1dG8gd2lkdGhJc0F1dG8gPSBzdHlsZS5sb2dpY2FsV2lkdGgo
KS5pc0F1dG8oKTsKIApAQCAtOTgzLDcgKzk4MSw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBG
b3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKGNv
CiAKICAgICBhdXRvIHdpZHRoID0gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggPyBv
dmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkV2lkdGgocmVwbGFjZWRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0
SXNBdXRvID0gaXNIZWlnaHRBdXRvKHJlcGxhY2VkQm94KTsKLSAgICBhdXRvIGhlaWdodCA9IGNv
bXB1dGVkSGVpZ2h0KHJlcGxhY2VkQm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzID8gdmVydGljYWxD
b25zdHJhaW50cy0+bG9naWNhbEhlaWdodCA6IHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0byBoZWln
aHQgPSBjb21wdXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4odmVydGljYWxDb25zdHJhaW50cy0+bG9naWNhbEhlaWdo
dCkgOiBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKCF3aWR0aCAmJiBoZWlnaHRJc0F1dG8gJiYg
cmVwbGFjZWRCb3guaGFzSW50cmluc2ljV2lkdGgoKSkgewogICAgICAgICAvLyAjMQpAQCAtMTE2
OCw3ICsxMTY2LDcgQEAgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50IEZvcm1hdHRpbmdH
ZW9tZXRyeTo6Y29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW4KIENvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dChjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJveCwgc3RkOjpvcHRpb25hbDxGb3JtYXR0
aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uPiBlc2NhcGVSZWFzb24pIGNvbnN0CiB7CiAgICAgYXV0
byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGNvbnRh
aW5lckJveCwgZXNjYXBlUmVhc29uKTsKLSAgICByZXR1cm4geyB7IGJveEdlb21ldHJ5LmNvbnRl
bnRCb3hMZWZ0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH0sIHsgYm94R2VvbWV0
cnkuY29udGVudEJveFRvcCgpLCBjb21wdXRlZEhlaWdodChjb250YWluZXJCb3gpIH0gfTsKKyAg
ICByZXR1cm4geyB7IGJveEdlb21ldHJ5LmNvbnRlbnRCb3hMZWZ0KCksIGJveEdlb21ldHJ5LmNv
bnRlbnRCb3hXaWR0aCgpIH0sIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hUb3AoKSB9OwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCAwNDk0ODEzMTU3ZjUzNzY0NGQ3YTBkMTkw
MmRhNjE1NzNmM2M2MzZjLi40OTY5NGJmNjgzOTg1NDY1ZmI1OWNiNzQ5N2RiNWQxYWFmOTNhMzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgTGF5b3V0VW5p
dCBGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dp
dGhGaXhlZEhlaWdodCgKICAgICAgICAgLy8gLWFuZCBpdCdzIHRvdGFsbHkgaW5zYW5lIGJlY2F1
c2Ugbm93IHdlIGZyZWVseSB0cmF2ZWwgYWNyb3NzIGZvcm1hdHRpbmcgY29udGV4dCBib3VuZGFy
aWVzIGFuZCBjb21wdXRlZCBtYXJnaW5zIGFyZSBub25leGlzdGVudC4KICAgICAgICAgaWYgKGNv
bnRhaW5pbmdCbG9jay0+aXNCb2R5Qm94KCkgfHwgY29udGFpbmluZ0Jsb2NrLT5pc0RvY3VtZW50
Qm94KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IGZvcm1hdHRp
bmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpOwotICAgICAgICAgICAgYXV0byBob3Jpem9u
dGFsQ29uc3RyYWludHMgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50KGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCksIEZvcm1hdHRpbmdDb250
ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspLmhvcml6b250
YWw7CisgICAgICAgICAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdH
ZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29udGFpbmluZ0Jsb2NrLT5jb250
YWluaW5nQmxvY2soKSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZpeGVk
SGVpZ2h0QW5jZXN0b3JRdWlyaykuaG9yaXpvbnRhbCgpOwogICAgICAgICAgICAgYXV0byB2ZXJ0
aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFyZ2luKCpj
b250YWluaW5nQmxvY2ssIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAKICAgICAgICAgICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmNvbnRh
aW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZpeGVkSGVp
Z2h0QW5jZXN0b3JRdWlyayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcAppbmRleCBmODIyODA0ZTEwN2ZjOWJhYzEwMjJhN2ZhZTBlY2QzY2QzNGMyOGYw
Li42ODgxMjI2MGI4OTc1NzBiYmY2MWQ2ZDUwOGRmYTE5NWRkZTI4NWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTExNiwxMCArMTE2LDEw
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZh
bGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uCiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3gg
PSAqbGF5b3V0UXVldWUubGFzdCgpOwogICAgICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tD
b25zdHJhaW50cyA9IGNvbnN0cmFpbnRzRm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKLSAgICAg
ICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCwgY29udGFpbmluZ0Jsb2Nr
Q29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICBjb21wdXRlU3RhdGljVmVydGlj
YWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLnZlcnRpY2Fs
KTsKKyAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCwgY29udGFp
bmluZ0Jsb2NrQ29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKKyAgICAgICAgICAgIGNvbXB1dGVT
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrQ29uc3RyYWlu
dHMubG9naWNhbFRvcCgpKTsKICAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihmbG9h
dGluZ0NvbnRleHQsIGxheW91dEJveCwgeyBjb25zdHJhaW50cywgY29udGFpbmluZ0Jsb2NrQ29u
c3RyYWludHMgfSk7Ci0gICAgICAgICAgICBjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0aW9u
KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAg
ICAgICAgICBjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGxheW91dEJveCwgY29udGFp
bmluZ0Jsb2NrQ29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAgICAgICAgICAgIGNvbXB1dGVQ
b3NpdGlvblRvQXZvaWRGbG9hdHMoZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gsIHsgY29uc3Ry
YWludHMsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzIH0pOwogCiAgICAgICAgICAgICBpZiAo
bGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkgewpAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJ
bnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIC8vIExh
eW91dCB0aGUgaW5mbG93IGRlc2NlbmRhbnRzIG9mIHRoaXMgZm9ybWF0dGluZyBjb250ZXh0IHJv
b3QuCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRD
b250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb250YWluZXJCb3gsIGxheW91dFN0YXRl
KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyQm94LmlzVGFibGVXcmFwcGVy
Qm94KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxUYWJsZVdyYXBwZXJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0PigqZm9ybWF0dGluZ0NvbnRleHQpLnNldEhvcml6b250YWxDb25z
dHJhaW50c0lnbm9yaW5nRmxvYXRzKGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250
YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8VGFibGVXcmFwcGVyQmxvY2tG
b3JtYXR0aW5nQ29udGV4dD4oKmZvcm1hdHRpbmdDb250ZXh0KS5zZXRIb3Jpem9udGFsQ29uc3Ry
YWludHNJZ25vcmluZ0Zsb2F0cyhjb250YWluaW5nQmxvY2tDb25zdHJhaW50cy5ob3Jpem9udGFs
KCkpOwogICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93
Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50KGNvbnRhaW5lckJveCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFs
aWRhdGlvbgogICAgICAgICAgICAgICAgIGlmICghbGF5b3V0Qm94LmlzRmxvYXRBdm9pZGVyKCkg
fHwgZmxvYXRpbmdDb250ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRv
JiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnko
bGF5b3V0Qm94KTsKLSAgICAgICAgICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRv
cCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbihsYXlvdXRCb3gsIGZvcm1hdHRpbmdTdGF0ZS51
c2VkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KSwgY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMu
dmVydGljYWwpKTsKKyAgICAgICAgICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRv
cCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbihsYXlvdXRCb3gsIGZvcm1hdHRpbmdTdGF0ZS51
c2VkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KSwgY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMu
bG9naWNhbFRvcCgpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYXV0byBlc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0ID0gbGF5b3V0Qm94LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKTsgCkBAIC0xNjgsMTQgKzE2OCwxNCBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICghZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCAmJiBpczxDb250YWluZXJC
b3g+KGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAgcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hp
bGRyZW4oZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLCBjb250YWluaW5nQmxvY2tD
b25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICAgICAgICAgICAgICBwbGFjZUluRmxvd1Bvc2l0
aW9uZWRDaGlsZHJlbihkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCksIGNvbnRhaW5p
bmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAKICAgICAgICAgICAgIGlmIChhcHBl
bmROZXh0VG9MYXlvdXRRdWV1ZShsYXlvdXRCb3gsIExheW91dERpcmVjdGlvbjo6U2libGluZykp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gUGxhY2Ug
dGhlIGluZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuLgotICAgIHBsYWNlSW5GbG93UG9zaXRpb25l
ZENoaWxkcmVuKGZvcm1hdHRpbmdSb290LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICBw
bGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihmb3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMu
aG9yaXpvbnRhbCgpKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1h
dHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKIH0KIApAQCAtMjQ3LDExICsyNDcsMTEg
QEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2Vk
QXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2kKICAgICBpZiAoIWNvbnN0cmFpbnRzLmxlZnQgJiYg
IWNvbnN0cmFpbnRzLnJpZ2h0KQogICAgICAgICByZXR1cm4geyB9OwogICAgIC8vIFNocmluayB0
aGUgYXZhaWxhYmxlIHNwYWNlIGlmIHRoZSBmbG9hdHMgYXJlIGFjdHVhbGx5IGludHJ1ZGluZyBh
dCB0aGlzIHZlcnRpY2FsIHBvc2l0aW9uLgotICAgIGF1dG8gYXZhaWxhYmxlV2lkdGggPSBjb25z
dHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwubG9naWNhbFdpZHRoOworICAg
IGF1dG8gYXZhaWxhYmxlV2lkdGggPSBjb25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhv
cml6b250YWwoKS5sb2dpY2FsV2lkdGg7CiAgICAgaWYgKGNvbnN0cmFpbnRzLmxlZnQpCiAgICAg
ICAgIGF2YWlsYWJsZVdpZHRoIC09IGNvbnN0cmFpbnRzLmxlZnQtPng7CiAgICAgaWYgKGNvbnN0
cmFpbnRzLnJpZ2h0KQotICAgICAgICBhdmFpbGFibGVXaWR0aCAtPSBzdGQ6Om1heCgwX2x1LCBj
b25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwubG9naWNhbFJpZ2h0KCkg
LSBjb25zdHJhaW50cy5yaWdodC0+eCk7CisgICAgICAgIGF2YWlsYWJsZVdpZHRoIC09IHN0ZDo6
bWF4KDBfbHUsIGNvbnN0cmFpbnRzUGFpci5jb250YWluaW5nQmxvY2suaG9yaXpvbnRhbCgpLmxv
Z2ljYWxSaWdodCgpIC0gY29uc3RyYWludHMucmlnaHQtPngpOwogICAgIHJldHVybiBhdmFpbGFi
bGVXaWR0aDsKIH0KIApAQCAtMjY3LDkgKzI2Nyw5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQ29udGFpbmVyQm94JiBj
CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IkVuZDogbW92ZSBpbi1mbG93IHBvc2l0aW9uZWQgY2hpbGRyZW4gLT4gcGFyZW50OiAiIDw8ICZj
b250YWluZXJCb3gpOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVT
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBWZXJ0aWNh
bENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzKQordm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJv
eCwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wKQogewotICAgIGZvcm1h
dHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCkuc2V0TG9naWNhbFRvcChmb3JtYXR0
aW5nR2VvbWV0cnkoKS5zdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCwgdmVydGljYWxD
b25zdHJhaW50cykpOworICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJv
eCkuc2V0TG9naWNhbFRvcChmb3JtYXR0aW5nR2VvbWV0cnkoKS5zdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uKGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCkpOwogfQogCiB2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpv
bnRhbENvbnN0cmFpbnRzKQpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMoY29u
c3QKICAgICAgICAgICAgIHJldHVybiAmY29udGFpbmluZ0Jsb2NrID09ICZyb290KCkgPyBjb25z
dHJhaW50c1BhaXIuZm9ybWF0dGluZ0NvbnRleHRSb290IDogZm9ybWF0dGluZ0dlb21ldHJ5LmNv
bnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb250YWluaW5nQmxvY2spOwogICAgICAgICB9KCk7
CiAKLSAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21l
dHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oKmFuY2VzdG9yLCBjb25zdHJhaW50c0ZvckFuY2Vz
dG9yLmhvcml6b250YWwpOworICAgICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBm
b3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbigqYW5jZXN0b3IsIGNvbnN0
cmFpbnRzRm9yQW5jZXN0b3IuaG9yaXpvbnRhbCgpKTsKICAgICAgICAgYXV0byB1c2VkTm9uQ29s
bGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBhdXRvIHByZWNvbXB1dGVkTWFy
Z2luQmVmb3JlID0gbWFyZ2luQ29sbGFwc2UoKS5wcmVjb21wdXRlZE1hcmdpbkJlZm9yZSgqYW5j
ZXN0b3IsIHVzZWROb25Db2xsYXBzZWRNYXJnaW4sIGZvcm1hdHRpbmdHZW9tZXRyeSk7CiAKQEAg
LTMwNyw3ICszMDcsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVW
ZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKGNvbnN0CiAKICAgICAgICAgZm9ybWF0
dGluZ1N0YXRlKCkuc2V0VXNlZFZlcnRpY2FsTWFyZ2luKCphbmNlc3RvciwgdmVydGljYWxNYXJn
aW4pOwogICAgICAgICBib3hHZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IG1hcmdpbkJlZm9y
ZSh2ZXJ0aWNhbE1hcmdpbiksIG1hcmdpbkFmdGVyKHZlcnRpY2FsTWFyZ2luKSB9KTsKLSAgICAg
ICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbigq
YW5jZXN0b3IsIHZlcnRpY2FsTWFyZ2luLCBjb25zdHJhaW50c0ZvckFuY2VzdG9yLnZlcnRpY2Fs
KSk7CisgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3AodmVydGljYWxQb3NpdGlvbldp
dGhNYXJnaW4oKmFuY2VzdG9yLCB2ZXJ0aWNhbE1hcmdpbiwgY29uc3RyYWludHNGb3JBbmNlc3Rv
ci5sb2dpY2FsVG9wKCkpKTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBzZXRQcmVjb21w
dXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IsIHByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKTsKICAg
ICAgICAgYm94R2VvbWV0cnkuc2V0SGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoKTsKQEAgLTMy
NSw3ICszMjUsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVQb3NpdGlv
blRvQXZvaWRGbG9hdHMoY29uc3QgRmxvYXRpbmdDb250ZXh0JgogICAgIC8vIEhvd2V2ZXIgYWNj
b3JkaW5nIHRvIHRoZSBCRkMgcnVsZXMsIGF0IHRoaXMgcG9pbnQgb2YgdGhlIGxheW91dCBmbG93
IHdlIGRvbid0IHlldCBoYXZlIGNvbXB1dGVkIHZlcnRpY2FsIHBvc2l0aW9ucyBmb3IgdGhlIGFu
Y2VzdG9ycy4KICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpIHsKICAg
ICAgICAgcHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMobGF5b3V0
Qm94LCBjb25zdHJhaW50c1BhaXIpOwotICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9t
ZXRyeShsYXlvdXRCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZsb2F0aW5nQ29udGV4dC5wb3NpdGlv
bkZvckZsb2F0KGxheW91dEJveCwgY29uc3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jp
em9udGFsKSk7CisgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJv
eCkuc2V0TG9naWNhbFRvcExlZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yRmxvYXQobGF5
b3V0Qm94LCBjb25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIE5vbi1mbG9hdCBwb3NpdGlvbmVkIGZsb2F0
IGF2b2lkZXJzIChmb3JtYXR0aW5nIGNvbnRleHQgcm9vdHMgYW5kIGNsZWFyIGJveGVzKSBzaG91
bGQgYmUgZmluZSB1bmxlc3MgdGhlcmUgYXJlIGZsb2F0cyBpbiB0aGlzIGNvbnRleHQuCkBAIC0z
MzYsNyArMzM2LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRp
b25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYKICAgICAgICAgcmV0dXJuIGNv
bXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihmbG9hdGluZ0NvbnRleHQsIGxheW91
dEJveCk7CiAKICAgICBBU1NFUlQobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRl
eHQoKSk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGF5b3V0Qm94KS5zZXRM
b2dpY2FsVG9wTGVmdChmbG9hdGluZ0NvbnRleHQucG9zaXRpb25Gb3JOb25GbG9hdGluZ0Zsb2F0
QXZvaWRlcihsYXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFpci5jb250YWluaW5nQmxvY2suaG9yaXpv
bnRhbCkpOworICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCkuc2V0
TG9naWNhbFRvcExlZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yTm9uRmxvYXRpbmdGbG9h
dEF2b2lkZXIobGF5b3V0Qm94LCBjb25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6
b250YWwoKSkpOwogfQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVWZXJ0
aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5n
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgRmxvYXRp
bmdDb250ZXh0JiBmbG9hdGkKICAgICAgICAgLy8gRmxvYXQgYXZvaWRlcnMnIGF2YWlsYWJsZSB3
aWR0aCBtaWdodCBiZSBzaHJ1bmsgYnkgZXhpc3RpbmcgZmxvYXRzIGluIHRoZSBjb250ZXh0Lgog
ICAgICAgICBhdmFpbGFibGVXaWR0aEZsb2F0QXZvaWRlciA9IHVzZWRBdmFpbGFibGVXaWR0aEZv
ckZsb2F0QXZvaWRlcihmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCwgY29uc3RyYWludHNQYWly
KTsKICAgICB9Ci0gICAgYXV0byBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBmb3JtYXR0aW5nR2Vv
bWV0cnkoKS5jb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGNvbnN0cmFp
bnRzUGFpci5jb250YWluaW5nQmxvY2suaG9yaXpvbnRhbCwgYXZhaWxhYmxlV2lkdGhGbG9hdEF2
b2lkZXIpOworICAgIGF1dG8gY29udGVudFdpZHRoQW5kTWFyZ2luID0gZm9ybWF0dGluZ0dlb21l
dHJ5KCkuY29tcHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50
c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwoKSwgYXZhaWxhYmxlV2lkdGhGbG9hdEF2
b2lkZXIpOwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2Vv
bWV0cnkobGF5b3V0Qm94KTsKICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoY29u
dGVudFdpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCk7CiAgICAgYm94R2VvbWV0cnkuc2V0SG9y
aXpvbnRhbE1hcmdpbih7IGNvbnRlbnRXaWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLnN0YXJ0LCBj
b250ZW50V2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbi5lbmQgfSk7CkBAIC0zNzMsMTAgKzM3Mywx
MCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0CiB7CiAgICAgYXV0byBjb21wdXRlID0gWyZdKHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkgLT4gQ29udGVudEhlaWdodEFuZE1h
cmdpbiB7CiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbkZsb3coKSkKLSAgICAgICAgICAgIHJl
dHVybiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGxh
eW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCwgeyB1c2VkSGVpZ2h0IH0pOworICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluRmxvd0NvbnRlbnRIZWlnaHRBbmRN
YXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIHsgdXNlZEhlaWdodCB9
KTsKIAogICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkuZmxvYXRpbmdDb250ZW50SGVpZ2h0
QW5kTWFyZ2luKGxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCwgeyB1c2VkSGVpZ2h0
IH0pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmZsb2F0aW5nQ29u
dGVudEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSwg
eyB1c2VkSGVpZ2h0IH0pOwogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4geyB9OwpAQCAtNTAzLDcgKzUwMyw3IEBAIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFp
CiAgICAgcmV0dXJuIGNvbnN0cmFpbnRzOwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHZlcnRpY2FsTWFyZ2luLCAgY29uc3QgVmVydGlj
YWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykgY29uc3QKK0xheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4oY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbiYgdmVydGljYWxNYXJnaW4sIExh
eW91dFVuaXQgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCkgY29uc3QKIHsKICAgICBBU1NF
UlQoIWxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAgICAgLy8gTm93IHRoYXQg
d2UndmUgY29tcHV0ZWQgdGhlIGZpbmFsIG1hcmdpbiBiZWZvcmUsIGxldCdzIHNoaWZ0IHRoZSBi
b3gncyB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBuZWVkZWQuCkBAIC01MzIsNyArNTMyLDYgQEAgTGF5
b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEIKICAgICAgICAgY3VycmVudExheW91dEJveCA9ICZwcmV2aW91
c0luRmxvd1NpYmxpbmc7CiAgICAgfQogCi0gICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50
Qm94VG9wID0gdmVydGljYWxDb25zdHJhaW50cy5sb2dpY2FsVG9wOwogICAgIC8vIEFkanVzdCB2
ZXJ0aWNhbCBwb3NpdGlvbiBkZXBlbmRpbmcgd2hldGhlciB0aGlzIGJveCBkaXJlY3RseSBvciBp
bmRpcmVjdGx5IGFkam9pbnMgd2l0aCBpdHMgcGFyZW50LgogICAgIGF1dG8gZGlyZWN0bHlBZGpv
aW5zUGFyZW50ID0gIWxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKICAgICBpZiAo
ZGlyZWN0bHlBZGpvaW5zUGFyZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IDFkNzg3MWMzNTgyMWMwZmQ4YmIxMjVlOTU4OGNlYmE0NDc0NWFl
OGEuLjE0ZTIzNGM1MzYxODVhNzliYzhjY2MyOTE2MmE4OGZkYzhiNGQ2MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02OSw3ICs2OSw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29u
c3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CiAKICAgICB2b2lkIGNvbXB1dGVTdGF0
aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJik7Ci0gICAgdm9pZCBjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gm
LCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CisgICAgdm9pZCBjb21wdXRlU3RhdGljVmVy
dGljYWxQb3NpdGlvbihjb25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRCb3hUb3ApOwogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBG
bG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmLCBjb25zdCBDb25zdHJhaW50c1BhaXImKTsKICAg
ICB2b2lkIGNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBGbG9hdGlu
Z0NvbnRleHQmLCBjb25zdCBCb3gmKTsKIApAQCAtNzcsNyArNzcsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cygpIG92ZXJyaWRlOwogCi0gICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0aW9uV2l0
aE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mLCBjb25zdCBWZXJ0
aWNhbENvbnN0cmFpbnRzJikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0aW9u
V2l0aE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mLCBMYXlvdXRV
bml0IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3ApIGNvbnN0OwogCiAgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3Qg
RmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7CiAg
ICAgdm9pZCB1cGRhdGVNYXJnaW5BZnRlckZvclByZXZpb3VzU2libGluZyhjb25zdCBCb3gmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXgg
OGM3ZjM2OTkxYTFiMWNjY2NmZTFmMzUwOTRkNDM2MGQ5MjRlOGQ0Zi4uMmQwMDA0YzI2MmJjNGY1
NzJhNDI2Nzg3ZDA5ZTNmMjc0ZGE3Njc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBDb250ZW50V2lkdGhB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkQ29udGVudFdp
ZHRoQW5kTWFyZwogICAgIHJldHVybiB7IHVzZWRXaWR0aCwgbm9uUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbi51c2VkTWFyZ2luIH07CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nR2VvbWV0
cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFZl
cnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpIGNvbnN0CitMYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3ApIGNv
bnN0CiB7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRtbCNi
bG9jay1mb3JtYXR0aW5nCiAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQsIGJv
eGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgdGhlIG90aGVyLCB2ZXJ0aWNhbGx5LCBiZWdpbm5p
bmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5pbmcgYmxvY2suCkBAIC0yNDcsNyArMjQ3LDcgQEAg
TGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlv
bihjb25zdCBCb3gmIGxheW91dEJveCwKICAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dCb3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKnByZXZpb3VzSW5G
bG93U2libGluZyk7CiAgICAgICAgIHJldHVybiBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChw
cmV2aW91c0luRmxvd0JveEdlb21ldHJ5KS5ib3R0b20oKSArIHByZXZpb3VzSW5GbG93Qm94R2Vv
bWV0cnkubWFyZ2luQWZ0ZXIoKTsKICAgICB9Ci0gICAgcmV0dXJuIHZlcnRpY2FsQ29uc3RyYWlu
dHMubG9naWNhbFRvcDsKKyAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcDsK
IH0KIAogTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRh
bFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmIGhvcml6b250YWxDb25zdHJhaW50cykgY29uc3QKQEAgLTI1NywxMSArMjU3LDYgQEAgTGF5
b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9u
KGNvbnN0IEJveCYgbGF5b3V0Qm8KICAgICByZXR1cm4gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxv
Z2ljYWxMZWZ0ICsgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gp
Lm1hcmdpblN0YXJ0KCk7CiB9CiAKLVBvaW50IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0
aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZl
cnRpY2FsQ29uc3RyYWludHMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgc3RhdGljSG9yaXpvbnRh
bFBvc2l0aW9uKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSwgc3RhdGljVmVydGlj
YWxQb3NpdGlvbihsYXlvdXRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMpIH07Ci19Ci0KIENvbnRl
bnRIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmluRmxvd0NvbnRlbnRI
ZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5
b3V0Qm94LmlzSW5GbG93KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdH
ZW9tZXRyeS5oCmluZGV4IDVkM2IyNGFiOTY2NWQ2ZTM2MWU2ODc0MTYwMjYwMWM3MTEzNDAwYmIu
LjYxNDU3ZTAyYWRhNTg5ZDFiNDFjZWQ5NDQ4ZWUyZmM4ZWRkYzZjY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmgKQEAgLTQ0LDggKzQ0LDcgQEAgcHVi
bGljOgogICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5GbG93Q29udGVudEhlaWdodEFuZE1h
cmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVy
cmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4g
aW5GbG93Q29udGVudFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJikgY29uc3Q7CiAK
LSAgICBQb2ludCBzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJikgY29uc3Q7Ci0gICAgTGF5b3V0
VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0IFZlcnRpY2FsQ29u
c3RyYWludHMmKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb24o
Y29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wKSBjb25z
dDsKICAgICBMYXlvdXRVbml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbihjb25zdCBCb3gmLCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKSBjb25zdDsKIAogICAgIEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBCb3gmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCBlYjUz
NDI2NDQ4YmE5OWJlMzk5MTRlOTVlN2U0MjUzZDZmNGM5MDU0Li4zMWNiZjdhNDYyMzYzOGUxNDEw
NDc5MGIwOGY3N2VkNmY4NDM5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdRdWlya3MuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHRJZkFwcGxpY2Fi
CiAgICAgLy8gSG93ZXZlciB0aGUgbm9uLWluLWZsb3cgZG9jdW1lbnQgYm94J3MgdmVydGljYWwg
bWFyZ2lucyBhcmUgaWdub3JlZC4gVGhleSBkb24ndCBhZmZlY3QgdGhlIGJvZHkgYm94J3MgY29u
dGVudCBoZWlnaHQuCiAgICAgaWYgKGRvY3VtZW50Qm94LmlzSW5GbG93KCkpIHsKICAgICAgICAg
YXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ0dl
b21ldHJ5KCk7Ci0gICAgICAgIGF1dG8gcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJn
aW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihkb2N1bWVudEJv
eCwgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChpbml0aWFs
Q29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpCb2R5U3Ry
ZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5ob3Jpem9udGFsKTsKKyAgICAgICAgYXV0byBwcmVjb21w
dXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRl
ZFZlcnRpY2FsTWFyZ2luKGRvY3VtZW50Qm94LCBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50KGluaXRpYWxDb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250
ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlTdHJldGNoZXNUb1ZpZXdwb3J0UXVpcmspLmhvcml6b250
YWwoKSk7CiAgICAgICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IHByZWNvbXB1dGVEb2N1bWVu
dEJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSArIHByZWNvbXB1dGVEb2N1bWVu
dEJveFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApOwogICAgIH0KICAgICByZXR1cm4g
c3RkOjptYXgoY29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0LCAgYm9keUJveENv
bnRlbnRIZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJs
b2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IGZiYTI1ZDQ1ZTA4NjhlNGIyMzg0ZjY4MzY2MjJi
YjQ2NzE0MThjODkuLjQ5YWI5NDMzYzY3OTFlZmNmNTk5NGRmYzkyZjJjMDE5M2U4NWJjMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2sv
UHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xs
YXBzZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFu
ZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIEJsb2NrTWFyZ2luQ29sbGFwc2U6OnByZWNvbXAKICAgICBp
ZiAoYmxvY2tGb3JtYXR0aW5nU3RhdGUuaGFzVXNlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCkp
CiAgICAgICAgIHJldHVybiBibG9ja0Zvcm1hdHRpbmdTdGF0ZS51c2VkVmVydGljYWxNYXJnaW4o
bGF5b3V0Qm94KS5wb3NpdGl2ZUFuZE5lZ2F0aXZlVmFsdWVzLmJlZm9yZTsKIAotICAgIGF1dG8g
aG9yaXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmhvcml6b250YWw7Cisg
ICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50KGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuaG9yaXpv
bnRhbCgpOwogICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9t
ZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzKTsKICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6
Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVf
b3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICBy
ZXR1cm4gcHJlY29tcHV0ZWRQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dEJveCwg
bm9uQ29sbGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5nR2VvbWV0cnkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIv
VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA5ZjAwODEyZWJmNGNmNmI4Njc4MWE5N2Q4
NDA1YTIzNDAxNTA4ZDJkLi5iYzg5YWQyZjk1YjczZTNjNzU5NzA5OGQ4NzhhMjAzMDlhMjdjMWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxl
d3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlv
dXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgor
I2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgiCkBAIC03MiwxNCAr
NzMsMTYgQEAgdm9pZCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRU
YWJsZUJveChjb25zdCBDb250YWluZXJCb3gmIHRhYmwKIHsKICAgICBsYXlvdXRTdGF0ZSgpLmVu
c3VyZVRhYmxlRm9ybWF0dGluZ1N0YXRlKHRhYmxlQm94KTsKIAotICAgIGNvbXB1dGVCb3JkZXJB
bmRQYWRkaW5nRm9yVGFibGVCb3godGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwot
ICAgIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKHRhYmxlQm94LCBjb25zdHJhaW50cy52
ZXJ0aWNhbCk7Ci0gICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luRm9yVGFibGVCb3godGFibGVCb3gs
IGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9z
aXRpb24odGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAgIGNvbXB1dGVCb3Jk
ZXJBbmRQYWRkaW5nRm9yVGFibGVCb3godGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwo
KSk7CisgICAgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24odGFibGVCb3gsIGNvbnN0cmFp
bnRzLmxvZ2ljYWxUb3AoKSk7CisgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luRm9yVGFibGVCb3go
dGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CisgICAgY29tcHV0ZVN0YXRpY0hv
cml6b250YWxQb3NpdGlvbih0YWJsZUJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKIAog
ICAgIGlmICh0YWJsZUJveC5oYXNDaGlsZCgpKSB7CisgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdH
ZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOwogICAgICAgICBhdXRvIGludmFs
aWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwotICAgICAgICBMYXlvdXRDb250
ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCh0YWJsZUJveCwgbGF5b3V0U3RhdGUoKSktPmxh
eW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeSgp
LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCh0YWJsZUJveCkpOworICAgICAgICBhdXRvIGNv
bnN0cmFpbnRzID0gQ29uc3RyYWludHNGb3JUYWJsZUNvbnRlbnQgeyBmb3JtYXR0aW5nR2VvbWV0
cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KHRhYmxlQm94KSwgZm9ybWF0dGluZ0dlb21l
dHJ5LmNvbXB1dGVkSGVpZ2h0KHRhYmxlQm94KSB9OworICAgICAgICBMYXlvdXRDb250ZXh0Ojpj
cmVhdGVGb3JtYXR0aW5nQ29udGV4dCh0YWJsZUJveCwgbGF5b3V0U3RhdGUoKSktPmxheW91dElu
Rmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFpbnRzKTsKICAgICB9CiAKICAg
ICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVCb3godGFibGVCb3gsIGNvbnN0cmFpbnRz
KTsKQEAgLTIyOSwxMyArMjMyLDEzIEBAIHZvaWQgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KGNvbnN0CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfSgpOwogCi0gICAgYXV0byBoZWlnaHRBbmRNYXJnaW4gPSBmb3Jt
YXR0aW5nR2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFyZ2luKHRhYmxlQm94LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsLCB7IG92ZXJyaWRkZW5UYWJsZUhlaWdodCB9KTsKKyAgICBh
dXRvIGhlaWdodEFuZE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluRmxvd0NvbnRlbnRI
ZWlnaHRBbmRNYXJnaW4odGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSwgeyBvdmVy
cmlkZGVuVGFibGVIZWlnaHQgfSk7CiAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IG1hcmdpbkNv
bGxhcHNlKCkuY29sbGFwc2VkVmVydGljYWxWYWx1ZXModGFibGVCb3gsIGhlaWdodEFuZE1hcmdp
bi5ub25Db2xsYXBzZWRNYXJnaW4pOwogICAgIC8vIENhY2hlIHRoZSBjb21wdXRlZCBwb3NpdGl2
ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlIHBhaXIuCiAgICAgZm9ybWF0dGluZ1N0YXRlKCku
c2V0VXNlZFZlcnRpY2FsTWFyZ2luKHRhYmxlQm94LCB2ZXJ0aWNhbE1hcmdpbik7CiAKICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KHRhYmxlQm94
KTsKLSAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFy
Z2luKHRhYmxlQm94LCB2ZXJ0aWNhbE1hcmdpbiwgY29uc3RyYWludHMudmVydGljYWwpKTsKKyAg
ICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKHRh
YmxlQm94LCB2ZXJ0aWNhbE1hcmdpbiwgY29uc3RyYWludHMubG9naWNhbFRvcCgpKSk7CiAgICAg
Ym94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJnaW4uY29udGVudEhl
aWdodCk7CiAgICAgYm94R2VvbWV0cnkuc2V0VmVydGljYWxNYXJnaW4oeyBtYXJnaW5CZWZvcmUo
dmVydGljYWxNYXJnaW4pLCBtYXJnaW5BZnRlcih2ZXJ0aWNhbE1hcmdpbikgfSk7CiAgICAgLy8g
QWRqdXN0IHRoZSBwcmV2aW91cyBzaWJsaW5nJ3MgbWFyZ2luIGJvdHRvbSBub3cgdGhhdCB0aGlz
IGJveCdzIHZlcnRpY2FsIG1hcmdpbiBpcyBjb21wdXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZWZlOTc4MjA0ZWNjNjFjZDI3NTZhNDgzMzAz
MjA5NjE0MGI1MTBmYS4uZWMwMGUyZDQ4M2Y4ZDJjNjAzODYyM2U2ODcyM2YxZGU0MmY2MGFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4
L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTcwLDE1
ICs3MCwxNSBAQCB2b2lkIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6c2l6ZUFuZFBsYWNlRmxleEl0
ZW1zKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udAogewogICAgIGF1dG8mIGZvcm1hdHRp
bmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGF1dG8mIGZvcm1hdHRpbmdH
ZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOwotICAgIGF1dG8gZmxleEl0ZW1N
YWluQXhpc1N0YXJ0ID0gY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsTGVmdDsKKyAgICBh
dXRvIGZsZXhJdGVtTWFpbkF4aXNTdGFydCA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dp
Y2FsTGVmdDsKICAgICBhdXRvIGZsZXhJdGVtTWFpbkF4aXNFbmQgPSBmbGV4SXRlbU1haW5BeGlz
U3RhcnQ7Ci0gICAgYXV0byBmbGV4SXRlbUNyb3NBeGlzU3RhcnQgPSBjb25zdHJhaW50cy52ZXJ0
aWNhbC5sb2dpY2FsVG9wOworICAgIGF1dG8gZmxleEl0ZW1Dcm9zQXhpc1N0YXJ0ID0gY29uc3Ry
YWludHMubG9naWNhbFRvcCgpOwogICAgIGF1dG8gZmxleEl0ZW1Dcm9zQXhpc0VuZCA9IGZsZXhJ
dGVtQ3Jvc0F4aXNTdGFydDsKICAgICBmb3IgKGF1dG8mIGZsZXhJdGVtIDogY2hpbGRyZW5PZlR5
cGU8Q29udGFpbmVyQm94Pihyb290KCkpKSB7CiAgICAgICAgIEFTU0VSVChmbGV4SXRlbS5lc3Rh
Ymxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBq
dXN0IGEgc2ltcGxlLCBsZXQncyBsYXlvdXQgdGhlIGZsZXggaXRlbXMgYW5kIHBsYWNlIHRoZW0g
bmV4dCB0byBlYWNoIG90aGVyIHNldHVwLgogICAgICAgICBhdXRvIGludHJpbnNpY1dpZHRocyA9
IGZvcm1hdHRpbmdTdGF0ZS5pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94KGZsZXhJdGVt
KTsKLSAgICAgICAgYXV0byBmbGV4SXRlbUxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKHN0ZDo6bWF4
KGludHJpbnNpY1dpZHRocy0+bWluaW11bSwgY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2Fs
V2lkdGgpLCBpbnRyaW5zaWNXaWR0aHMtPm1heGltdW0pOworICAgICAgICBhdXRvIGZsZXhJdGVt
TG9naWNhbFdpZHRoID0gc3RkOjptaW4oc3RkOjptYXgoaW50cmluc2ljV2lkdGhzLT5taW5pbXVt
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoKSwgaW50cmluc2ljV2lkdGhz
LT5tYXhpbXVtKTsKICAgICAgICAgYXV0byBmbGV4SXRlbUNvbnN0cmFpbnRzID0gQ29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50IHsgeyB7IH0sIGZsZXhJdGVtTG9naWNhbFdpZHRoIH0sIHsgfSB9
OwogCiAgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBJbnZhbGlkYXRpb25TdGF0ZSB7
IH07CkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnNpemVB
bmRQbGFjZUZsZXhJdGVtcyhjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnQKICAgICAgICAg
ICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoTGF5b3V0UG9pbnQgeyBmbGV4
SXRlbU1haW5BeGlzRW5kLCBmbGV4SXRlbUNyb3NBeGlzU3RhcnQgfSk7CiAKICAgICAgICAgICAg
IGZsZXhJdGVtR2VvbWV0cnkuc2V0Qm9yZGVyKGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZEJv
cmRlcihmbGV4SXRlbSkpOwotICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRQYWRkaW5n
KGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFBhZGRpbmcoZmxleEl0ZW0sIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwubG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBmbGV4SXRlbUdlb21ldHJ5
LnNldFBhZGRpbmcoZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkUGFkZGluZyhmbGV4SXRlbSwg
Y29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCkpOwogCi0gICAgICAgICAgICBh
dXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRl
ZEhvcml6b250YWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAg
ICAgICAgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0
cnkuY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGZsZXhJdGVtLCBjb25zdHJhaW50cy5ob3Jpem9u
dGFsKCkpOwogICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2lu
KHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDBfbHUpLCBjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29yKDBfbHUpIH0pOwogCi0gICAgICAgICAgICBh
dXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbihmbGV4SXRlbSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAgICAg
ICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbihmbGV4SXRlbSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsK
ICAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0VmVydGljYWxNYXJnaW4oeyBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwX2x1KSwgY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbi5hZnRlci52YWx1ZV9vcigwX2x1KSB9KTsKIAogICAgICAgICAgICAgZmxleEl0ZW1HZW9t
ZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGZvcm1hdHRpbmdHZW9tZXRyeS5jb250ZW50SGVpZ2h0
Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGZsZXhJdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNzg2NGFlY2Q3MjE2ZmRjMjAy
MDJlZDdiNzlmZDIyMGY3NzE3MDUwMC4uYWZiNTMyMjQ3OGE4ZjY3ZGNjMmUyY2M0MWFkYTNjZGEy
MTM5Y2ZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtOTgsMjIgKzk4LDIyIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvCiAgICAg
ICAgICAgICBpZiAoaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpICYmIGxheW91dEJveC0+ZXN0
YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGxh
eW91dEJveC0+aXNJbmxpbmVCbG9ja0JveCgpIHx8IGxheW91dEJveC0+aXNJbmxpbmVUYWJsZUJv
eCgpIHx8IGxheW91dEJveC0+aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAgICAgICAgICAgICAg
ICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KCpsYXlvdXRC
b3gpOwotICAgICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGZvcm1hdHRpbmdS
b290LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKLSAgICAgICAgICAgICAgICBjb21wdXRlV2lk
dGhBbmRNYXJnaW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAg
ICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGZvcm1hdHRpbmdSb290LCBjb25z
dHJhaW50cy5ob3Jpem9udGFsKCkpOworICAgICAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1h
cmdpbihmb3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKIAogICAgICAg
ICAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdC5oYXNDaGlsZCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3Jt
YXR0aW5nQ29udGV4dChmb3JtYXR0aW5nUm9vdCwgbGF5b3V0U3RhdGUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dD
b250ZW50KGludmFsaWRhdGlvblN0YXRlLCBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1Jvb3QpKTsKLSAgICAgICAgICAgICAgICAgICAg
Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihmb3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpv
bnRhbCk7CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oZm9ybWF0
dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0
YXRlLCBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQo
Zm9ybWF0dGluZ1Jvb3QpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihmb3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMu
aG9yaXpvbnRhbCk7CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4o
Zm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFJlcGxhY2VkIGFuZCBvdGhlciB0eXBlIG9mIGxl
YWYgYXRvbWljIGlubGluZSBib3hlcy4KLSAgICAgICAgICAgICAgICBjb21wdXRlQm9yZGVyQW5k
UGFkZGluZygqbGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKLSAgICAgICAgICAg
ICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpv
bnRhbCk7Ci0gICAgICAgICAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbigqbGF5b3V0Qm94
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICAgICAgICAgICAgICBjb21wdXRlQm9yZGVy
QW5kUGFkZGluZygqbGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOworICAgICAg
ICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbigqbGF5b3V0Qm94LCBjb25zdHJhaW50cy5o
b3Jpem9udGFsKCkpOworICAgICAgICAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oKmxh
eW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIGlmIChsYXlvdXRCb3gtPmlzTGluZUJyZWFrQm94KCkpIHsKICAgICAgICAgICAg
IGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkoKmxheW91
dEJveCk7CkBAIC0xMjYsOCArMTI2LDggQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW8KICAgICAg
ICAgICAgIC8vIFRleHQgd3JhcHBlciBib3hlcyAoYW5vbnltb3VzIGlubGluZSBsZXZlbCBib3hl
cykgZG9uJ3QgaGF2ZSBib3ggZ2VvbWV0cmllcyAodGhleSBvbmx5IGdlbmVyYXRlIHJ1bnMpLgog
ICAgICAgICAgICAgaWYgKCFsYXlvdXRCb3gtPmlzSW5saW5lVGV4dEJveCgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gSW5saW5lIGJveGVzICg8c3Bhbj4pIGNhbid0IGdldCBzaXplZC9wb3NpdGlv
bmVkIHlldC4gQXQgdGhpcyBwb2ludCB3ZSBjYW4gb25seSBjb21wdXRlIHRoZWlyIG1hcmdpbnMs
IGJvcmRlcnMgYW5kIHBhZGRpbmcuCi0gICAgICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBh
ZGRpbmcoKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICAg
ICAgY29tcHV0ZUhvcml6b250YWxNYXJnaW4oKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpv
bnRhbCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKmxheW91dEJv
eCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKKyAgICAgICAgICAgICAgICBjb21wdXRlSG9y
aXpvbnRhbE1hcmdpbigqbGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwogICAg
ICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KCpsYXlvdXRCb3gpLnNl
dFZlcnRpY2FsTWFyZ2luKHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQpAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQo
SW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiB7CiAgICAgYXV0byYgZm9y
bWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgZm9ybWF0dGluZ1N0
YXRlLmxpbmVSdW5zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmb3JtYXR0aW5nU3RhdGUuaW5s
aW5lSXRlbXMoKS5zaXplKCkpOwotICAgIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxUb3Ag
PSBjb25zdHJhaW50cy52ZXJ0aWNhbC5sb2dpY2FsVG9wOworICAgIElubGluZUxheW91dFVuaXQg
bGluZUxvZ2ljYWxUb3AgPSBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCk7CiAgICAgc3RydWN0IFBy
ZXZpb3VzTGluZSB7CiAgICAgICAgIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UgcmFuZ2U7
CiAgICAgICAgIHNpemVfdCBvdmVyZmxvd0NvbnRlbnRMZW5ndGggeyAwIH07CkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMsIExpbmVCdWlsZGVyOjoKICAgICBhdXRvIGZsb2F0aW5nQ29udGV4
dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0YXRlIH07CiAgICAgYXV0byBp
c0ZpcnN0TGluZSA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLmlzRW1wdHkoKTsKIAotICAgIGF1
dG8gbGluZUJ1aWxkZXIgPSBMaW5lQnVpbGRlciB7ICp0aGlzLCBmbG9hdGluZ1N0YXRlLCBjb25z
dHJhaW50cy5ob3Jpem9udGFsLCBpbmxpbmVJdGVtcyB9OworICAgIGF1dG8gbGluZUJ1aWxkZXIg
PSBMaW5lQnVpbGRlciB7ICp0aGlzLCBmbG9hdGluZ1N0YXRlLCBjb25zdHJhaW50cy5ob3Jpem9u
dGFsKCksIGlubGluZUl0ZW1zIH07CiAgICAgd2hpbGUgKCFuZWVkc0xheW91dFJhbmdlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBUdXJuIHByZXZpb3VzIGxpbmUncyBvdmVyZmxvdyBjb250ZW50
IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBsZWFkaW5nIGNvbnRlbnQgcGFydGlhbCBsZW5n
dGguCiAgICAgICAgIC8vICJzcFs8LWxpbmUgYnJlYWstPl1saXRfY29udGVudCIgLT4gb3ZlcmZs
b3cgbGVuZ3RoOiAxMSAtPiBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBsZW5ndGg6IDExLgpAQCAt
MjAwLDkgKzIwMCw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQo
SW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHJvb3QoKS5zdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwogICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdHRpbmdRdWlya3MoKS5pbml0aWFsTGluZUhlaWdodCgpOwogICAgICAgICB9
KCk7Ci0gICAgICAgIGF1dG8gaW5pdGlhbExpbmVDb25zdHJhaW50cyA9IElubGluZVJlY3QgeyBs
aW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsTGVmdCwgY29uc3Ry
YWludHMuaG9yaXpvbnRhbC5sb2dpY2FsV2lkdGgsIGluaXRpYWxMaW5lSGVpZ2h0IH07CisgICAg
ICAgIGF1dG8gaW5pdGlhbExpbmVDb25zdHJhaW50cyA9IElubGluZVJlY3QgeyBsaW5lTG9naWNh
bFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5o
b3Jpem9udGFsKCkubG9naWNhbFdpZHRoLCBpbml0aWFsTGluZUhlaWdodCB9OwogICAgICAgICBh
dXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudChuZWVkc0xh
eW91dFJhbmdlLCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIGxlYWRpbmdMb2dpY2FsV2lk
dGgsIGluaXRpYWxMaW5lQ29uc3RyYWludHMsIGlzRmlyc3RMaW5lKTsKLSAgICAgICAgYXV0byBs
aW5lTG9naWNhbFJlY3QgPSBjb21wdXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChsaW5lQ29udGVu
dCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0
ID0gY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQobGluZUNvbnRlbnQsIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKSk7CiAKICAgICAgICAgYXV0byBsaW5lQ29udGVudFJhbmdlID0gbGluZUNv
bnRlbnQuaW5saW5lSXRlbVJhbmdlOwogICAgICAgICBpZiAoIWxpbmVDb250ZW50UmFuZ2UuaXNF
bXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCAyOWE2YjczMDIxZGI0MmI5ZTU0Zjc3NzIzNzg2ZGNmZDhhYjIzNDMyLi5lYzI2YTFj
Yjc4N2VjZWUxOTJlMmE2MWE2NGY5NjQ0NjA4NmEyZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFi
bGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2lu
Y2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKKyNpbmNsdWRlICJUYWJsZUZv
cm1hdHRpbmdDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNTUsOCArNTYsOCBAQCBU
YWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRh
aW5lckJveCYgZm9ybWF0dGluZ0NvbgogCiB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Omxh
eW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewotICAgIGF1dG8gYXZhaWxhYmxlSG9yaXpv
bnRhbFNwYWNlID0gY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsV2lkdGg7Ci0gICAgYXV0
byBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlID0gY29uc3RyYWludHMudmVydGljYWwubG9naWNhbEhl
aWdodDsKKyAgICBhdXRvIGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSA9IGNvbnN0cmFpbnRzLmhv
cml6b250YWwoKS5sb2dpY2FsV2lkdGg7CisgICAgYXV0byBhdmFpbGFibGVWZXJ0aWNhbFNwYWNl
ID0gZG93bmNhc3Q8Q29uc3RyYWludHNGb3JUYWJsZUNvbnRlbnQ+KGNvbnN0cmFpbnRzKS5hdmFp
bGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVudCgpOwogICAgIC8vIDEuIENvbXB1dGUgd2lkdGgg
YW5kIGhlaWdodCBmb3IgdGhlIGdyaWQuCiAgICAgY29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYVNw
YWNlKGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgYXZhaWxhYmxlVmVydGljYWxTcGFjZSk7CiAg
ICAgLy8gMi4gRmluYWxpemUgY2VsbHMuCkBAIC05OSw3ICsxMDAsNyBAQCB2b2lkIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxh
YmxlSG9yaXpvbgogICAgICAgICBmb3IgKHNpemVfdCByb3dJbmRleCA9IGNlbGwtPnN0YXJ0Um93
KCkgKyAxOyByb3dJbmRleCA8IGNlbGwtPmVuZFJvdygpOyArK3Jvd0luZGV4KQogICAgICAgICAg
ICAgYXZhaWxhYmxlVmVydGljYWxTcGFjZSArPSByb3dMaXN0W3Jvd0luZGV4XS5sb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UgKz0gKGNlbGwtPnJvd1NwYW4o
KSAtIDEpICogZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKLSAgICAgICAgbGF5b3V0Q2VsbCgqY2Vs
bCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKKyAg
ICAgICAgbGF5b3V0Q2VsbCgqY2VsbCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlKTsKIAogICAg
ICAgICBhdXRvIGNvbXB1dGVJbnRyaW5zaWNWZXJ0aWNhbFBhZGRpbmdGb3JDZWxsID0gWyZdIHsK
ICAgICAgICAgICAgIC8vIEludHJpbnNpYyBwYWRkaW5nIGlzIHRoZSBleHRyYSBwYWRkaW5nIGZv
ciB0aGUgY2VsbCBib3ggd2hlbiBpdCBpcyBzaG9ydGVyIHRoYW4gdGhlIHJvdy4gQ2VsbCBib3hl
cyBoYXZlIHRvCkBAIC0yNDYsNyArMjQ3LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25zdHJhaW50c0ZvckluRmwKICAg
ICBhdXRvJiBncmlkID0gZm9ybWF0dGluZ1N0YXRlKCkudGFibGVHcmlkKCk7CiAgICAgYXV0byYg
dGFibGVCb3ggPSByb290KCk7CiAgICAgYXV0byBzZWN0aW9uV2lkdGggPSBncmlkLmNvbHVtbnMo
KS5sb2dpY2FsV2lkdGgoKSArIDIgKiBncmlkLmhvcml6b250YWxTcGFjaW5nKCk7Ci0gICAgYXV0
byBsb2dpY2FsVG9wID0gY29uc3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKKyAgICBhdXRv
IGxvZ2ljYWxUb3AgPSBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCk7CiAgICAgYXV0byB2ZXJ0aWNh
bFNwYWNpbmcgPSBncmlkLnZlcnRpY2FsU3BhY2luZygpOwogICAgIGF1dG8gcGFkZGluZ0JlZm9y
ZSA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4geyB2ZXJ0aWNhbFNwYWNpbmcgfTsKICAgICBh
dXRvIHBhZGRpbmdBZnRlciA9IHZlcnRpY2FsU3BhY2luZzsKQEAgLTI3MCwxNCArMjcxLDE0IEBA
IHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMo
Y29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgICAgIH0KICAgICAgICAgc2VjdGlvbkNvbnRl
bnRIZWlnaHQgKz0gdmVydGljYWxTcGFjaW5nICogKHJvd0NvdW50IC0gMSk7CiAgICAgICAgIHNl
Y3Rpb25Cb3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KHNlY3Rpb25Db250ZW50SGVpZ2h0
KTsKLSAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldExvZ2ljYWxMZWZ0KGNvbnN0cmFpbnRz
Lmhvcml6b250YWwubG9naWNhbExlZnQpOworICAgICAgICBzZWN0aW9uQm94R2VvbWV0cnkuc2V0
TG9naWNhbExlZnQoY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0KTsKICAgICAg
ICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3AobG9naWNhbFRvcCk7CiAKICAgICAg
ICAgbG9naWNhbFRvcCArPSBzZWN0aW9uQm94R2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0KCk7CiAg
ICAgfQogfQogCi12b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dENlbGwoY29uc3Qg
VGFibGVHcmlkOjpDZWxsJiBjZWxsLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFj
ZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29u
dGVudCkKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJs
ZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlKQog
ewogICAgIEFTU0VSVChjZWxsLmJveCgpLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCgpKTsKIApAQCAtMzA1LDEwICszMDYsOCBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiBjZWxsLCBMYXlvdXRVbml0CiAKICAg
ICBpZiAoY2VsbEJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewogICAgICAgICBhdXRv
IGNvbnN0cmFpbnRzRm9yQ2VsbENvbnRlbnQgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50KGNlbGxCb3gpOwotICAgICAgICBjb25zdHJhaW50c0ZvckNlbGxD
b250ZW50LnZlcnRpY2FsLmxvZ2ljYWxIZWlnaHQgPSBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9y
Q29udGVudDsKICAgICAgICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IEludmFsaWRhdGlvblN0
YXRlIHsgfTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHBhcnQg
b2YgdGhlIGludmFsaWRhdGlvbiBzdGF0ZSB0byBpbmRpY2F0ZSB3aGVuIHdlIHJlLWxheW91dCB0
aGUgY2VsbAotICAgICAgICAvLyBtdWx0aXBsZSB0aW1lcyBhcyBwYXJ0IG9mIHRoZSBtdWx0aS1w
YXNzIHRhYmxlIGFsZ29yaXRobS4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2Jh
Ymx5IGJlIHBhcnQgb2YgdGhlIGludmFsaWRhdGlvbiBzdGF0ZSB0byBpbmRpY2F0ZSB3aGVuIHdl
IHJlLWxheW91dCB0aGUgY2VsbCBtdWx0aXBsZSB0aW1lcyBhcyBwYXJ0IG9mIHRoZSBtdWx0aS1w
YXNzIHRhYmxlIGFsZ29yaXRobS4KICAgICAgICAgYXV0byYgZmxvYXRpbmdTdGF0ZUZvckNlbGxD
b250ZW50ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVCbG9ja0Zvcm1hdHRpbmdTdGF0ZShjZWxsQm94
KS5mbG9hdGluZ1N0YXRlKCk7CiAgICAgICAgIGZsb2F0aW5nU3RhdGVGb3JDZWxsQ29udGVudC5j
bGVhcigpOwogICAgICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChj
ZWxsQm94LCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25T
dGF0ZSwgY29uc3RyYWludHNGb3JDZWxsQ29udGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDkyNGIxMjQzMDdjMzA3Mjk3MDRhZjI4NmY0Nzkx
N2YxMTljNzAyYzEuLjhiYzIzMDlkMGMwZDRlODA3NDY2NWM0OWI1NDQyYzQ4YWFmZmNiMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Miw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQg
dGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBUYWJsZUxheW91dCgqdGhpcywgZm9ybWF0dGlu
Z1N0YXRlKCkudGFibGVHcmlkKCkpOyB9CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQg
bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhv
cml6b250YWxTcGFjZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNh
bFNwYWNlRm9yQ29udGVudCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsYXlvdXRDZWxsKGNv
bnN0IFRhYmxlR3JpZDo6Q2VsbCYsIExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNl
KTsKICAgICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxl
SG9yaXpvbnRhbFNwYWNlKTsKICAgICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvclJvd3MoTGF5b3V0
VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdlb21ldHJ5
Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IGQ1M2I1ZGNiMTM5ZWRiOTA0MDk3ZmJjY2Nj
M2JkYWUxZjg2ZjVkYTYuLjkyYTBiMWQzMDRjY2E5YWIwMTcwZDEzNWU4Yzk1MzdmNjVmNDY5ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0yMTYsOSArMjE2LDggQEAg
dm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQoKQogCiAgICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9
IExheW91dDo6SW52YWxpZGF0aW9uU3RhdGUgeyB9OwogICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0
cmFpbnRzID0gTGF5b3V0OjpIb3Jpem9udGFsQ29uc3RyYWludHMgeyBmbG93KCkuYm9yZGVyQW5k
UGFkZGluZ1N0YXJ0KCksIGZsb3coKS5jb250ZW50U2l6ZSgpLndpZHRoKCkgfTsKLSAgICBhdXRv
IHZlcnRpY2FsQ29uc3RyYWludHMgPSBMYXlvdXQ6OlZlcnRpY2FsQ29uc3RyYWludHMgeyBmbG93
KCkuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpLCB7IH0gfTsKIAotICAgIGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LmxpbmVMYXlvdXRGb3JJbnRlcmdyYXRpb24oaW52YWxpZGF0aW9uU3RhdGUsIHsg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzIH0pOworICAgIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmxpbmVMYXlvdXRGb3JJbnRlcmdyYXRpb24oaW52YWxpZGF0aW9u
U3RhdGUsIHsgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBmbG93KCkuYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpIH0pOwogCiAgICAgY29uc3RydWN0Q29udGVudCgpOwogfQo=
</data>
<flag name="commit-queue"
          id="451607"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430217</attachid>
            <date>2021-05-31 17:00:59 -0700</date>
            <delta_ts>2021-05-31 19:26:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226435-20210531170058.patch</filename>
            <type>text/plain</type>
            <size>68686</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJkMzJkNjNiYzM0OTk2
NTU3Njk1NjgxMTcxZDkwN2NmNjZiMjA3ZS4uY2VlN2UwN2NiNmIzOTllM2QzZjM1YTI5MTdkM2Yx
MDRiNjE1NzU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA1LTMxICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBUaWdodGVuIHRoZSBj
b25zdHJhaW50IGNsYXNzZXMgKENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudC9Db25zdHJhaW50
c0Zvck91dE9mRmxvd0NvbnRlbnQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBXaGlsZSBsb2dpY2FsIGhlaWdodCBzaG91bGQgYWx3YXlzIGJlIGF2YWls
YWJsZSBmb3Igb3V0IG9mIGZsb3cgY29udGVudCBieSBkZXNpZ24sCisgICAgICAgIHRoZSBiYXNl
IGluZmxvdyBsYXlvdXQgY2FuJ3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBpdC4gVGhpcyBoZWlnaHQg
Y29uc3RyYWludCBpcyBub3QgZXZlbiByZXF1aXJlZC91c2VkIGluIG1vc3Qgb2YgdGhlIGxheW91
dCBzeXN0ZW1zLAorICAgICAgICBzbyBsZXQncyBtb3ZlIGl0IHRvIHRoZSBkZXJpdmVkIGNsYXNz
KGVzKS4KKworICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0
cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoKKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdl
b21ldHJ5KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVw
bGFjZWRDb250ZW50V2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJl
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nR2Vv
bWV0cnk6OnN0YXRpY1Bvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Lmg6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdDb250ZXh0OjpzaXplQW5kUGxh
Y2VGbGV4SXRlbXMpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxv
d0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2Vs
bCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUxheW91dDo6bGF5b3V0KToKKwogMjAyMS0wNC0yOSAgU2VyZ2lvIFZpbGxhciBTZW5p
biAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBFbmFibGUgPHN1bW1hcnk+IHRvIGJl
IGEgZmxleCBjb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxOTIyZTJiYzE2YmQ2MmZmODNmZjljODI5MjYzY2IzM2Vm
NDdkYjllLi45OTMwMmI5ZmFlYWQ5MWFkNDMyMGUzYTZjMjM1NTIyZGZlMmMzMDcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTM0LDYgKzIxMzQsOCBAQAogCQk2RjE1NTIyMTI2NDc2QjVDMDBFMzUzQzYgLyogVGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RjE1NTIyMDI2NDc2QjVCMDBFMzUzQzYgLyogVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkYxNzI2NEYyNDcwQzYwQjAwNTE4Qzk2IC8qIFRhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGMTcyNjRFMjQ3MEM2MEEwMDUxOEM5NiAvKiBUYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8qIElubGluZVRleHRJ
dGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjFD
QzFERDIyNUY4QjQyMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2RjFFODNBMjI2NjU4ODRDMDAyRTlE
MjggLyogVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMUU4M0EwMjY2NTg4NEMwMDJFOUQyOCAvKiBUYWJs
ZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTZGMUU4M0E2MjY2NTg4OEMwMDJFOUQyOCAvKiBGb3JtYXR0aW5n
Q29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGMUU4M0E1MjY2NTg4OEMwMDJFOUQyOCAvKiBGb3JtYXR0aW5nQ29uc3RyYWludHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RjI2QkI2
QzIzMzQzRTZGMDAyRjJCRUEgLyogTGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYyNkJCNkIyMzM0M0U1QjAwMkYyQkVBIC8qIExh
eW91dENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGluZUJ1aWxkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMjZFQjQ2MjM0
MDA0QTUwMDY5MDZFMiAvKiBJbmxpbmVMaW5lQnVpbGRlci5oICovOyB9OwogCQk2RjM2MEU1MDIz
OTk5NDIxMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMzYwRTRFMjM5OTk0MjAwMDE1MTJB
NyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05OTk0LDYgKzk5OTYsOCBAQAogCQk2RjE3MjY0RTI0
NzBDNjBBMDA1MThDOTYgLyogVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMUNDMURDMjI1RjhC
NDEwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxp
bmVUZXh0SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMUNDMUREMjI1
RjhCNDIwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVU
ZXh0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RjFFODNBMDI2NjU4ODRD
MDAyRTlEMjggLyogVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkYxRTgzQTUyNjY1ODg4QzAwMkU5RDI4IC8qIEZvcm1hdHRp
bmdDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXR0
aW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYyMjJCNzQx
QUI1MkQ2NDAwOTQ2NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGMjIyQjc1MUFCNTJEOEEwMDk0NjUxQSAvKiBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTFZl
cnRleEFycmF5T2JqZWN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZG
MjVCMjAwMjIwQTg1QUIwMDAwMDExQiAvKiBJbmxpbmVMaW5lQnVpbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmxpbmVMaW5lQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMjczNiw2ICsyMjc0MCw3IEBACiAJCQkJNkZCN0QyRDUyNTBGRDdCNTAwMDIwN0FB
IC8qIGZsZXggKi8sCiAJCQkJMTE1Q0ZBOUEyMDhCQzE0MDAwMUU2OTkxIC8qIGlubGluZSAqLywK
IAkJCQk2RkM1Q0E5MTIyRTM1OTMzMDBCMTNFMTEgLyogdGFibGUgKi8sCisJCQkJNkYxRTgzQTUy
NjY1ODg4QzAwMkU5RDI4IC8qIEZvcm1hdHRpbmdDb25zdHJhaW50cy5oICovLAogCQkJCTExNUNG
QTY5MjA4QUY3RDAwMDFFNjk5MSAvKiBGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJMTE1
Q0ZBNjgyMDhBRjdEMDAwMUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggKi8sCiAJCQkJNkZC
Qjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgKi8sCkBAIC0y
Mjc3Myw2ICsyMjc3OCw3IEBACiAJCTZGQzVDQTkxMjJFMzU5MzMwMEIxM0UxMSAvKiB0YWJsZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNkYxRTgzQTAy
NjY1ODg0QzAwMkU5RDI4IC8qIFRhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmggKi8sCiAJCQkJ
NkZDNUNBOTQyMkUzNTk5NDAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwICov
LAogCQkJCTZGQzVDQTk1MjJFMzU5OTQwMEIxM0UxMSAvKiBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
LmggKi8sCiAJCQkJMTFEMTlDMkUyMzE1OUJBRTAwOEYyNEQzIC8qIFRhYmxlRm9ybWF0dGluZ0dl
b21ldHJ5LmNwcCAqLywKQEAgLTMyMTk4LDYgKzMyMjA0LDcgQEAKIAkJCQlCQ0YxNjQ1OTI2NjJB
MUU5MDAwMkY3RUYgLyogQ1NTQ2FsY05lZ2F0ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RjE2NDYxMjY2MkEyOEQwMDAyRjdFRiAvKiBDU1NDYWxjT3BlcmF0aW9uTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNGMTY0NTUyNjYyQTEyMjAwMDJGN0VGIC8qIENTU0NhbGNQcmltaXRpdmVW
YWx1ZU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNzA5REUwMjY2MzIzQ0YwMEI5QTIxQyAv
KiBDU1NDYWxjU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUUyRDhGMTM0RUU1
MEMwMDcyOTIwQSAvKiBDU1NDYWxjVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjA0OUND
MERCNTYwQzIwMDIwNDczOSAvKiBDU1NDYW52YXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ3OTAwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMjczMyw2ICszMjc0MCw3IEBACiAJCQkJNEEwREEyRkYxMjlC
MjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDA1Q0VEMkEwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NFNkNCRkIxODdGMzcwNzAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkYxRTgzQTYyNjY1ODg4QzAwMkU5RDI4IC8qIEZvcm1h
dHRpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE1Q0ZBNkEyMDhBRjdEMDAw
MUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzVDODlB
NDI2NTBBQzNDMDBGM0I0NTYgLyogRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RjU2QjQ0NzI2NDc5RTYyMDBBQUUyNTcgLyogRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNDY3NCw3ICszNDY4Miw2IEBACiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAw
MTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkM3MDlERTAyNjYzMjNDRjAwQjlBMjFDIC8q
IENTU0NhbGNTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxOTUxRDU0RjVG
QjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI2RDU2
RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENzcwNUM3MjU1Mjc2Q0QwMDFEMEM5NCAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM1NjU0LDYgKzM1NjYxLDcgQEAKIAkJCQlFM0MwNDEzODI1NENCMzBEMDAy
MUQwRTYgLyogU3lzdGVtU291bmREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNDMDQx
MkYyNTRDQTI5QjAwMjFEMEU2IC8qIFN5c3RlbVNvdW5kTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTZGMUU4M0EyMjY2NTg4NEMwMDJFOUQyOCAvKiBUYWJsZUZvcm1hdHRpbmdD
b25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDdGQTk3MDAyNjUwOTgyQjAwODQxNDE2
IC8qIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjQ5QzNF
NzI2NDc5QjNDMDA1MTk1M0QgLyogVGFibGVGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IGI5MGEx
N2Y2ODNkNTY3YzFlYWQxMDA1NzU4YzE0NjViNzUyNDEwYmYuLjc5YjllY2Q2ODI3NGMwMGM0NTFh
MGJlMGIzOGVkNjJhMzkxNjU1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4
dC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIExheW91dENvbnRleHQ6OmxheW91dEZvcm1h
dHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbgogICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5nZW9tZXRyeUZvckJveChmb3JtYXR0aW5n
Q29udGV4dFJvb3QpOwogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5oYXNJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICBhdXRvIGNvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dGVudCA9IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7IHsgYm94R2VvbWV0cnkuY29udGVu
dEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkgfSwgeyBib3hHZW9tZXRy
eS5jb250ZW50Qm94VG9wKCksIHsgfSB9IH07CisgICAgICAgIGF1dG8gY29uc3RyYWludHNGb3JJ
bkZsb3dDb250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsgeyBib3hHZW9tZXRy
eS5jb250ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSB9LCBib3hH
ZW9tZXRyeS5jb250ZW50Qm94VG9wKCkgfTsKICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxh
eW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IGY5
MGJjZjAwODNkOWNiMjEyOTIwMWFjNmQ5MGZkYzg3MTY1YjdjMmEuLmY1YmVhMGNkMjljZjUzNTE4
Zjc4YzdkNWJiYjljZGM5YmIyZTZkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5o
CkBAIC0xNTcsNDEgKzE1Nyw2IEBAIHN0cnVjdCBWZXJ0aWNhbEdlb21ldHJ5IHsKICAgICBDb250
ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW47CiB9OwogCi1zdHJ1Y3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGxvZ2ljYWxMZWZ0ICsgbG9naWNhbFdpZHRoOyB9Ci0KLSAgICBMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0OwotICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoOwotfTsKLQotc3Ry
dWN0IFZlcnRpY2FsQ29uc3RyYWludHMgewotICAgIExheW91dFVuaXQgbG9naWNhbFRvcDsKLSAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQ7Ci19OwotCi1zdHJ1Y3Qg
Q29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsKLSAgICBIb3Jpem9udGFsQ29uc3RyYWludHMg
aG9yaXpvbnRhbDsKLSAgICBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2FsOwotfTsKLQotc3Ry
dWN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCB7Ci0gICAgSG9yaXpvbnRhbENvbnN0
cmFpbnRzIGhvcml6b250YWw7Ci0gICAgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNhbDsKLSAg
ICAvLyBCb3JkZXJzIGFuZCBwYWRkaW5nIGFyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSBjb250YWlu
aW5nIGJsb2NrJ3MgY29udGVudCBib3ggYXMgaWYgdGhlIGJveCB3YXMgYW4gaW4tZmxvdyBib3gu
Ci0gICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nQ29uc3RyYWludHM7Ci19OwotCi1zdHJ1
Y3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7Ci0gICAgdm9pZCBleHBhbmQoTGF5b3V0VW5p
dCBob3Jpem9udGFsVmFsdWUpOwotICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIG9wZXJh
dG9yKz0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYpOwotICAgIEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMmIG9wZXJhdG9yKz0oTGF5b3V0VW5pdCk7Ci0gICAgSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyYgb3BlcmF0b3ItPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
Jik7Ci0gICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3BlcmF0b3ItPShMYXlvdXRVbml0
KTsKLQotICAgIExheW91dFVuaXQgbWluaW11bTsKLSAgICBMYXlvdXRVbml0IG1heGltdW07Ci19
OwotCiBzdHJ1Y3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMgewogICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gd2lkdGg7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VkSG9yaXpvbnRhbE1h
cmdpbj4gbWFyZ2luOwpAQCAtMjMxLDM4ICsxOTYsNiBAQCBpbmxpbmUgSW5saW5lTGF5b3V0VW5p
dCBtYXhJbmxpbmVMYXlvdXRVbml0KCkKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzOjpleHBhbmQoTGF5b3V0VW5pdCBob3Jpem9udGFsVmFsdWUpCi17
Ci0gICAgbWluaW11bSArPSBob3Jpem9udGFsVmFsdWU7Ci0gICAgbWF4aW11bSArPSBob3Jpem9u
dGFsVmFsdWU7Ci19Ci0KLWlubGluZSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvcis9KGNvbnN0IEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMmIG90aGVyKQotewotICAgIG1pbmltdW0gKz0gb3RoZXIubWluaW11bTsKLSAgICBtYXhp
bXVtICs9IG90aGVyLm1heGltdW07Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgSW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0
b3IrPShMYXlvdXRVbml0IHZhbHVlKQotewotICAgIGV4cGFuZCh2YWx1ZSk7Ci0gICAgcmV0dXJu
ICp0aGlzOwotfQotCi1pbmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2lj
V2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3ItPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzJiBvdGhlcikKLXsKLSAgICBtaW5pbXVtIC09IG90aGVyLm1pbmltdW07Ci0gICAgbWF4aW11
bSAtPSBvdGhlci5tYXhpbXVtOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotaW5saW5lIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9y
LT0oTGF5b3V0VW5pdCB2YWx1ZSkKLXsKLSAgICBleHBhbmQoLXZhbHVlKTsKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KIHN0cnVjdCBTbG90UG9zaXRpb24gewogICAgIFNsb3RQb3NpdGlvbigpID0g
ZGVmYXVsdDsKICAgICBTbG90UG9zaXRpb24oc2l6ZV90IGNvbHVtbiwgc2l6ZV90IHJvdyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nQ29uc3RyYWludHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDk3MDhhMjhmNjkzN2Rk
MDkyNTIxMTRiZTY0MjA1NjM5NTJkMmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29uc3RyYWludHMuaApAQCAt
MCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJMYXlvdXRVbml0LmgiCisjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
TGF5b3V0IHsKKworc3RydWN0IEhvcml6b250YWxDb25zdHJhaW50cyB7CisgICAgTGF5b3V0VW5p
dCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCArIGxvZ2ljYWxXaWR0
aDsgfQorCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdDsKKyAgICBMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aDsKK307CisKK3N0cnVjdCBWZXJ0aWNhbENvbnN0cmFpbnRzIHsKKyAgICBMYXlvdXRV
bml0IGxvZ2ljYWxUb3A7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0OworfTsKKworc3Ry
dWN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7CisgICAgQ29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50KEhvcml6b250YWxDb25zdHJhaW50cywgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKTsK
KworICAgIEhvcml6b250YWxDb25zdHJhaW50cyBob3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4g
bV9ob3Jpem9udGFsOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1
cm4gbV9sb2dpY2FsVG9wOyB9CisKKyAgICBlbnVtIEJhc2VUeXBlRmxhZyA6IHVpbnQ4X3Qgewor
ICAgICAgICBHZW5lcmljQ29udGVudCA9IDEgPDwgMCwKKyAgICAgICAgVGFibGVDb250ZW50ICAg
PSAxIDw8IDEKKyAgICB9OworICAgIGJvb2wgaXNDb25zdHJhaW50c0ZvclRhYmxlQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIGJhc2VUeXBlRmxhZ3MoKS5jb250YWlucyhUYWJsZUNvbnRlbnQpOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoSG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIE9wdGlvblNldDxCYXNlVHlwZUZs
YWc+KTsKKworcHJpdmF0ZToKKyAgICBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPiBiYXNlVHlwZUZs
YWdzKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz46OmZyb21SYXcobV9i
YXNlVHlwZUZsYWdzKTsgfQorCisgICAgdW5zaWduZWQgbV9iYXNlVHlwZUZsYWdzIDogMjsgLy8g
T3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4KKyAgICBIb3Jpem9udGFsQ29uc3RyYWludHMgbV9ob3Jp
em9udGFsOworICAgIExheW91dFVuaXQgbV9sb2dpY2FsVG9wOworfTsKKworc3RydWN0IENvbnN0
cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCB7CisgICAgSG9yaXpvbnRhbENvbnN0cmFpbnRzIGhv
cml6b250YWw7CisgICAgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNhbDsKKyAgICAvLyBCb3Jk
ZXJzIGFuZCBwYWRkaW5nIGFyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSBjb250YWluaW5nIGJsb2Nr
J3MgY29udGVudCBib3ggYXMgaWYgdGhlIGJveCB3YXMgYW4gaW4tZmxvdyBib3guCisgICAgTGF5
b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nQ29uc3RyYWludHM7Cit9OworCitpbmxpbmUgQ29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50OjpDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoSG9yaXpv
bnRhbENvbnN0cmFpbnRzIGhvcml6b250YWwsIExheW91dFVuaXQgbG9naWNhbFRvcCwgT3B0aW9u
U2V0PEJhc2VUeXBlRmxhZz4gYmFzZVR5cGVGbGFncykKKyAgICA6IG1fYmFzZVR5cGVGbGFncyhi
YXNlVHlwZUZsYWdzLnRvUmF3KCkpCisgICAgLCBtX2hvcml6b250YWwoaG9yaXpvbnRhbCkKKyAg
ICAsIG1fbG9naWNhbFRvcChsb2dpY2FsVG9wKQoreworfQorCitpbmxpbmUgQ29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50OjpDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoSG9yaXpvbnRhbENv
bnN0cmFpbnRzIGhvcml6b250YWwsIExheW91dFVuaXQgbG9naWNhbFRvcCkKKyAgICA6IENvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudChob3Jpem9udGFsLCBsb2dpY2FsVG9wLCBHZW5lcmljQ29u
dGVudCkKK3sKK30KKworc3RydWN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeworICAgIHZv
aWQgZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRhbFZhbHVlKTsKKyAgICBJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzJiBvcGVyYXRvcis9KGNvbnN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMm
KTsKKyAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvcis9KExheW91dFVuaXQp
OworICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIG9wZXJhdG9yLT0oY29uc3QgSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyYpOworICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIG9w
ZXJhdG9yLT0oTGF5b3V0VW5pdCk7CisKKyAgICBMYXlvdXRVbml0IG1pbmltdW07CisgICAgTGF5
b3V0VW5pdCBtYXhpbXVtOworfTsKKworaW5saW5lIHZvaWQgSW50cmluc2ljV2lkdGhDb25zdHJh
aW50czo6ZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRhbFZhbHVlKQoreworICAgIG1pbmltdW0g
Kz0gaG9yaXpvbnRhbFZhbHVlOworICAgIG1heGltdW0gKz0gaG9yaXpvbnRhbFZhbHVlOworfQor
CitpbmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2ljV2lkdGhDb25zdHJh
aW50czo6b3BlcmF0b3IrPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvdGhlcikK
K3sKKyAgICBtaW5pbXVtICs9IG90aGVyLm1pbmltdW07CisgICAgbWF4aW11bSArPSBvdGhlci5t
YXhpbXVtOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yKz0oTGF5b3V0VW5p
dCB2YWx1ZSkKK3sKKyAgICBleHBhbmQodmFsdWUpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
aW5saW5lIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHM6Om9wZXJhdG9yLT0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3RoZXIpCit7
CisgICAgbWluaW11bSAtPSBvdGhlci5taW5pbXVtOworICAgIG1heGltdW0gLT0gb3RoZXIubWF4
aW11bTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzJiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvci09KExheW91dFVuaXQg
dmFsdWUpCit7CisgICAgZXhwYW5kKC12YWx1ZSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCit9
Cit9CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19MQVlPVVRfRk9STUFUVElOR19D
T05TVFJBSU5UUyhUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpMYXlvdXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCYgY29uc3RyYWludHMpIHsgcmV0dXJuIGNvbnN0cmFpbnRzLnByZWRpY2F0ZTsg
fSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCAyNDgxMDFhMDA5ZDcyNTYxY2RlOTA5YjI2OWZmZjdiNmZlM2Ri
ODhhLi5mYTNjZjQ3N2MzODgzZGJmNWVjMGZmNThiOTQ3ZGMzN2MyOWNhNjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjCiAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5vdXRPZkZsb3dWZXJ0
aWNhbEdlb21ldHJ5KGxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCwgY29uc3RyYWlu
dHMudmVydGljYWwsIHsgdXNlZEhlaWdodCB9KTsKICAgICB9OwogCi0gICAgYXV0byBjb250YWlu
aW5nQmxvY2tIZWlnaHQgPSAqY29uc3RyYWludHMudmVydGljYWwubG9naWNhbEhlaWdodDsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnN0cmFpbnRzLnZlcnRpY2FsLmxvZ2lj
YWxIZWlnaHQ7CiAgICAgYXV0byB2ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh7IH0pOwogICAg
IGlmIChhdXRvIG1heEhlaWdodCA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkTWF4SGVp
Z2h0KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KSkgewogICAgICAgICBhdXRvIG1h
eFZlcnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKG1heEhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250
ZXh0LmgKaW5kZXggYzY2YWY1MzdiYjkzYzRjMmJjYWM0NTM5NzI5ZTA3ZTdlYzE1ZmE3NC4uZTk0
OTY5YTljMmY2YzdmNjA1OWZiMzE4ZjM0YzFlNWY2ZmYxYzU3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0Nv
bnRleHQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCiAKKyNpbmNsdWRlICJGb3JtYXR0aW5nQ29uc3RyYWludHMuaCIKICNpbmNsdWRl
ICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0VW5pdHMuaCIKQEAgLTQyLDkgKzQzLDEzIEBAIG5hbWVzcGFjZSBMYXlvdXQgewog
CiBjbGFzcyBCb3hHZW9tZXRyeTsKIGNsYXNzIENvbnRhaW5lckJveDsKK3N0cnVjdCBDb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQ7CitzdHJ1Y3QgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250
ZW50Oworc3RydWN0IEhvcml6b250YWxDb25zdHJhaW50czsKIGNsYXNzIEZvcm1hdHRpbmdHZW9t
ZXRyeTsKIGNsYXNzIEZvcm1hdHRpbmdTdGF0ZTsKIGNsYXNzIEZvcm1hdHRpbmdRdWlya3M7Citz
dHJ1Y3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50czsKIGNsYXNzIEludmFsaWRhdGlvblN0YXRl
OwogY2xhc3MgTGF5b3V0U3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRl
eCBmMjllMjE4YmZkNGU4NTNlMzg4YTM1MjNjM2RmOGM3NTA2ZmFjMjM1Li40YjhlZDJjZjRkZjUx
OTRmNWM5MDEyMDc4YzU0NmM0NWEyY2Y2YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnku
Y3BwCkBAIC0zMjQsNyArMzI0LDYgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nR2VvbWV0cnk6OnNo
cmlua1RvRml0V2lkdGgoY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QKIFZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2Fs
R2VvbWV0cnkoY29uc3QgQ29udGFpbmVyQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFp
bnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMm
IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKTsK
LSAgICBBU1NFUlQodmVydGljYWxDb25zdHJhaW50cy5sb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8v
IDEwLjYuNCBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIG5vbi1yZXBsYWNlZCBlbGVtZW50cwogICAg
IC8vCkBAIC0zNTMsNyArMzUyLDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0
cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdAogICAgIGF1dG8m
IGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKICAgICBhdXRv
JiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9y
bWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja0hlaWdodCA9ICp2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7Cisg
ICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSB2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2lj
YWxIZWlnaHQ7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGhvcml6b250YWxDb25z
dHJhaW50cy5sb2dpY2FsV2lkdGg7CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWUoc3R5
bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC01ODYsNyArNTg1LDYg
QEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVw
bGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY28KIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dl
b21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgUmVwbGFjZWRC
b3gmIHJlcGxhY2VkQm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxD
b25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50
cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZGVuVmVydGljYWxWYWx1
ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlcGxhY2VkQm94LmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKTsKLSAgICBBU1NFUlQodmVydGljYWxDb25zdHJhaW50cy5sb2dpY2FsSGVpZ2h0KTsKIAog
ICAgIC8vIDEwLjYuNSBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJlcGxhY2VkIGVsZW1lbnRzCiAg
ICAgLy8KQEAgLTYwMSw3ICs1OTksNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9t
ZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IFJlcAogICAgIGF1
dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKICAgICBh
dXRvJiBzdHlsZSA9IHJlcGxhY2VkQm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChyZXBsYWNlZEJveCk7Ci0gICAgYXV0
byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSAqdmVydGljYWxDb25zdHJhaW50cy5sb2dpY2FsSGVp
Z2h0OworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gdmVydGljYWxDb25zdHJhaW50
cy5sb2dpY2FsSGVpZ2h0OwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBob3Jpem9u
dGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoOwogCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZh
bHVlKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwpAQCAtOTIxLDcg
KzkxOSw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5Ojppbmxp
bmVSZXBsYWNlZENvbnRlbnRIZWlnaHRBbmRNYXJnaW4oCiAgICAgYXV0byB1c2VkVmVydGljYWxN
YXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVk
VmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
LmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAgYXV0byYgc3R5bGUgPSByZXBsYWNlZEJveC5zdHls
ZSgpOwogCi0gICAgYXV0byBoZWlnaHQgPSBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0
ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWln
aHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyB2ZXJ0aWNhbENvbnN0cmFpbnRz
LT5sb2dpY2FsSGVpZ2h0IDogc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIGhlaWdodCA9IG92ZXJy
aWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVp
Z2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJh
aW50cyA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4odmVydGljYWxDb25zdHJhaW50cy0+bG9n
aWNhbEhlaWdodCkgOiBzdGQ6Om51bGxvcHQpOwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gIW92
ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQgJiYgaXNIZWlnaHRBdXRvKHJlcGxhY2VkQm94
KTsKICAgICBhdXRvIHdpZHRoSXNBdXRvID0gc3R5bGUubG9naWNhbFdpZHRoKCkuaXNBdXRvKCk7
CiAKQEAgLTk4Myw3ICs5ODEsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjbwogCiAgICAgYXV0
byB3aWR0aCA9IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoID8gb3ZlcnJpZGRlbkhv
cml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRlZFdpZHRoKHJlcGxhY2VkQm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICBhdXRvIGhlaWdodElzQXV0byA9IGlz
SGVpZ2h0QXV0byhyZXBsYWNlZEJveCk7Ci0gICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZEhlaWdo
dChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWludHMt
PmxvZ2ljYWxIZWlnaHQgOiBzdGQ6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0ID0gY29tcHV0
ZWRIZWlnaHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+KHZlcnRpY2FsQ29uc3RyYWludHMtPmxvZ2ljYWxIZWlnaHQpIDogc3RkOjpu
dWxsb3B0KTsKIAogICAgIGlmICghd2lkdGggJiYgaGVpZ2h0SXNBdXRvICYmIHJlcGxhY2VkQm94
Lmhhc0ludHJpbnNpY1dpZHRoKCkpIHsKICAgICAgICAgLy8gIzEKQEAgLTExNjgsNyArMTE2Niw3
IEBAIENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNv
bnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVuCiBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQg
Rm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29u
dGFpbmVyQm94JiBjb250YWluZXJCb3gsIHN0ZDo6b3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6
OkVzY2FwZVJlYXNvbj4gZXNjYXBlUmVhc29uKSBjb25zdAogewogICAgIGF1dG8mIGJveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChjb250YWluZXJCb3gsIGVz
Y2FwZVJlYXNvbik7Ci0gICAgcmV0dXJuIHsgeyBib3hHZW9tZXRyeS5jb250ZW50Qm94TGVmdCgp
LCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSB9LCB7IGJveEdlb21ldHJ5LmNvbnRlbnRC
b3hUb3AoKSwgY29tcHV0ZWRIZWlnaHQoY29udGFpbmVyQm94KSB9IH07CisgICAgcmV0dXJuIHsg
eyBib3hHZW9tZXRyeS5jb250ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lk
dGgoKSB9LCBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCkgfTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVp
cmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0
dGluZ1F1aXJrcy5jcHAKaW5kZXggMDQ5NDgxMzE1N2Y1Mzc2NDRkN2EwZDE5MDJkYTYxNTczZjNj
NjM2Yy4uNDk2OTRiZjY4Mzk4NTQ2NWZiNTljYjc0OTdkYjVkMWFhZjkzYTMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVp
cmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdRdWlya3MuY3BwCkBAIC01OCw3ICs1OCw3IEBAIExheW91dFVuaXQgRm9ybWF0dGlu
Z1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWln
aHQoCiAgICAgICAgIC8vIC1hbmQgaXQncyB0b3RhbGx5IGluc2FuZSBiZWNhdXNlIG5vdyB3ZSBm
cmVlbHkgdHJhdmVsIGFjcm9zcyBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcmllcyBhbmQgY29t
cHV0ZWQgbWFyZ2lucyBhcmUgbm9uZXhpc3RlbnQuCiAgICAgICAgIGlmIChjb250YWluaW5nQmxv
Y2stPmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNEb2N1bWVudEJveCgpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5m
b3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFp
bnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb250
YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBl
UmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKS5ob3Jpem9udGFsOworICAgICAg
ICAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2Nr
KCksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2Vz
dG9yUXVpcmspLmhvcml6b250YWwoKTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4g
PSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbigqY29udGFpbmluZ0Js
b2NrLCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAgICAgICAgICBhdXRvJiBib3hHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpjb250YWluaW5nQmxvY2ss
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9y
UXVpcmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
aW5kZXggZjgyMjgwNGUxMDdmYzliYWMxMDIyYTdmYWUwZWNkM2NkMzRjMjhmMC4uNjg4MTIyNjBi
ODk3NTcwYmJmNjFkNmQ1MDhkZmExOTVkZGUyODVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvbgogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dFF1
ZXVlLmxhc3QoKTsKICAgICAgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMg
PSBjb25zdHJhaW50c0ZvckxheW91dEJveChsYXlvdXRCb3gpOwogCi0gICAgICAgICAgICBjb21w
dXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRz
Lmhvcml6b250YWwpOwotICAgICAgICAgICAgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24o
bGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tDb25zdHJhaW50cy52ZXJ0aWNhbCk7CisgICAgICAg
ICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0Nv
bnN0cmFpbnRzLmhvcml6b250YWwoKSk7CisgICAgICAgICAgICBjb21wdXRlU3RhdGljVmVydGlj
YWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmxvZ2ljYWxU
b3AoKSk7CiAgICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oZmxvYXRpbmdDb250ZXh0
LCBsYXlvdXRCb3gsIHsgY29uc3RyYWludHMsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzIH0p
OwotICAgICAgICAgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gs
IGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAgICAgICAgICAgY29t
cHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0Nv
bnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAgICAgICAgICAgICBjb21wdXRlUG9zaXRpb25Ub0F2
b2lkRmxvYXRzKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94LCB7IGNvbnN0cmFpbnRzLCBjb250
YWluaW5nQmxvY2tDb25zdHJhaW50cyB9KTsKIAogICAgICAgICAgICAgaWYgKGxheW91dEJveC5l
c3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9u
U3RhdGUmIGludmFsaWRhdGlvbgogICAgICAgICAgICAgICAgICAgICAvLyBMYXlvdXQgdGhlIGlu
ZmxvdyBkZXNjZW5kYW50cyBvZiB0aGlzIGZvcm1hdHRpbmcgY29udGV4dCByb290LgogICAgICAg
ICAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3Jl
YXRlRm9ybWF0dGluZ0NvbnRleHQoY29udGFpbmVyQm94LCBsYXlvdXRTdGF0ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJveC5pc1RhYmxlV3JhcHBlckJveCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dD4oKmZvcm1hdHRpbmdDb250ZXh0KS5zZXRIb3Jpem9udGFsQ29uc3RyYWludHNJZ25v
cmluZ0Zsb2F0cyhjb250YWluaW5nQmxvY2tDb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ+KCpmb3JtYXR0aW5nQ29udGV4dCkuc2V0SG9yaXpvbnRhbENvbnN0cmFpbnRzSWdub3Jp
bmdGbG9hdHMoY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52
YWxpZGF0aW9uU3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudChjb250YWluZXJCb3gpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb24KICAg
ICAgICAgICAgICAgICBpZiAoIWxheW91dEJveC5pc0Zsb2F0QXZvaWRlcigpIHx8IGZsb2F0aW5n
Q29udGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGlu
Z1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7
Ci0gICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3AodmVydGljYWxQ
b3NpdGlvbldpdGhNYXJnaW4obGF5b3V0Qm94LCBmb3JtYXR0aW5nU3RhdGUudXNlZFZlcnRpY2Fs
TWFyZ2luKGxheW91dEJveCksIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLnZlcnRpY2FsKSk7
CisgICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3AodmVydGljYWxQ
b3NpdGlvbldpdGhNYXJnaW4obGF5b3V0Qm94LCBmb3JtYXR0aW5nU3RhdGUudXNlZFZlcnRpY2Fs
TWFyZ2luKGxheW91dEJveCksIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmxvZ2ljYWxUb3Ao
KSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8g
ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCA9IGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1h
dHRpbmdDb250ZXh0KCk7IApAQCAtMTY4LDE0ICsxNjgsMTQgQEAgdm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlk
YXRpb24KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
IWVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQgJiYgaXM8Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpKQotICAgICAgICAgICAgICAgIHBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGRvd25j
YXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSwgY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMu
aG9yaXpvbnRhbCk7CisgICAgICAgICAgICAgICAgcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRy
ZW4oZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLCBjb250YWluaW5nQmxvY2tDb25z
dHJhaW50cy5ob3Jpem9udGFsKCkpOwogCiAgICAgICAgICAgICBpZiAoYXBwZW5kTmV4dFRvTGF5
b3V0UXVldWUobGF5b3V0Qm94LCBMYXlvdXREaXJlY3Rpb246OlNpYmxpbmcpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIC8vIFBsYWNlIHRoZSBpbmZsb3cg
cG9zaXRpb25lZCBjaGlsZHJlbi4KLSAgICBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihm
b3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAgcGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwo
KSk7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0g
PDwgIltFbmRdIC0+IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3Qo
IiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKQEAgLTI0NywxMSArMjQ3LDExIEBAIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdp
ZHRoRm9yRmxvYXRBdm9pCiAgICAgaWYgKCFjb25zdHJhaW50cy5sZWZ0ICYmICFjb25zdHJhaW50
cy5yaWdodCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBTaHJpbmsgdGhlIGF2YWlsYWJs
ZSBzcGFjZSBpZiB0aGUgZmxvYXRzIGFyZSBhY3R1YWxseSBpbnRydWRpbmcgYXQgdGhpcyB2ZXJ0
aWNhbCBwb3NpdGlvbi4KLSAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0gY29uc3RyYWludHNQYWly
LmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsLmxvZ2ljYWxXaWR0aDsKKyAgICBhdXRvIGF2YWls
YWJsZVdpZHRoID0gY29uc3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsKCku
bG9naWNhbFdpZHRoOwogICAgIGlmIChjb25zdHJhaW50cy5sZWZ0KQogICAgICAgICBhdmFpbGFi
bGVXaWR0aCAtPSBjb25zdHJhaW50cy5sZWZ0LT54OwogICAgIGlmIChjb25zdHJhaW50cy5yaWdo
dCkKLSAgICAgICAgYXZhaWxhYmxlV2lkdGggLT0gc3RkOjptYXgoMF9sdSwgY29uc3RyYWludHNQ
YWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsLmxvZ2ljYWxSaWdodCgpIC0gY29uc3RyYWlu
dHMucmlnaHQtPngpOworICAgICAgICBhdmFpbGFibGVXaWR0aCAtPSBzdGQ6Om1heCgwX2x1LCBj
b25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwoKS5sb2dpY2FsUmlnaHQo
KSAtIGNvbnN0cmFpbnRzLnJpZ2h0LT54KTsKICAgICByZXR1cm4gYXZhaWxhYmxlV2lkdGg7CiB9
CiAKQEAgLTI2Nyw5ICsyNjcsOSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNl
SW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IENvbnRhaW5lckJveCYgYwogICAgIExPR19X
SVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJFbmQ6IG1vdmUg
aW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuIC0+IHBhcmVudDogIiA8PCAmY29udGFpbmVyQm94
KTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljVmVydGlj
YWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVmVydGljYWxDb25zdHJhaW50
cyYgdmVydGljYWxDb25zdHJhaW50cykKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gsIExheW91dFVu
aXQgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCkKIHsKLSAgICBmb3JtYXR0aW5nU3RhdGUo
KS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpLnNldExvZ2ljYWxUb3AoZm9ybWF0dGluZ0dlb21ldHJ5
KCkuc3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMp
KTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpLnNldExvZ2lj
YWxUb3AoZm9ybWF0dGluZ0dlb21ldHJ5KCkuc3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRC
b3gsIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3ApKTsKIH0KIAogdm9pZCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJh
aW50cykKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnBy
ZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKGNvbnN0CiAgICAgICAg
ICAgICByZXR1cm4gJmNvbnRhaW5pbmdCbG9jayA9PSAmcm9vdCgpID8gY29uc3RyYWludHNQYWly
LmZvcm1hdHRpbmdDb250ZXh0Um9vdCA6IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQoY29udGFpbmluZ0Jsb2NrKTsKICAgICAgICAgfSgpOwogCi0gICAgICAg
IGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRl
ZFZlcnRpY2FsTWFyZ2luKCphbmNlc3RvciwgY29uc3RyYWludHNGb3JBbmNlc3Rvci5ob3Jpem9u
dGFsKTsKKyAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dl
b21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oKmFuY2VzdG9yLCBjb25zdHJhaW50c0ZvckFu
Y2VzdG9yLmhvcml6b250YWwoKSk7CiAgICAgICAgIGF1dG8gdXNlZE5vbkNvbGxhcHNlZE1hcmdp
biA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0
ZXIudmFsdWVfb3IoMCkgfTsKICAgICAgICAgYXV0byBwcmVjb21wdXRlZE1hcmdpbkJlZm9yZSA9
IG1hcmdpbkNvbGxhcHNlKCkucHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yLCB1c2Vk
Tm9uQ29sbGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5nR2VvbWV0cnkpOwogCkBAIC0zMDcsNyArMzA3
LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpwcmVjb21wdXRlVmVydGljYWxQb3Np
dGlvbkZvckJveEFuZEFuY2VzdG9ycyhjb25zdAogCiAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgp
LnNldFVzZWRWZXJ0aWNhbE1hcmdpbigqYW5jZXN0b3IsIHZlcnRpY2FsTWFyZ2luKTsKICAgICAg
ICAgYm94R2VvbWV0cnkuc2V0VmVydGljYWxNYXJnaW4oeyBtYXJnaW5CZWZvcmUodmVydGljYWxN
YXJnaW4pLCBtYXJnaW5BZnRlcih2ZXJ0aWNhbE1hcmdpbikgfSk7Ci0gICAgICAgIGJveEdlb21l
dHJ5LnNldExvZ2ljYWxUb3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4oKmFuY2VzdG9yLCB2
ZXJ0aWNhbE1hcmdpbiwgY29uc3RyYWludHNGb3JBbmNlc3Rvci52ZXJ0aWNhbCkpOworICAgICAg
ICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKCph
bmNlc3RvciwgdmVydGljYWxNYXJnaW4sIGNvbnN0cmFpbnRzRm9yQW5jZXN0b3IubG9naWNhbFRv
cCgpKSk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgc2V0UHJlY29tcHV0ZWRNYXJnaW5C
ZWZvcmUoKmFuY2VzdG9yLCBwcmVjb21wdXRlZE1hcmdpbkJlZm9yZSk7CiAgICAgICAgIGJveEdl
b21ldHJ5LnNldEhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCk7CkBAIC0zMjUsNyArMzI1LDcg
QEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxv
YXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYKICAgICAvLyBIb3dldmVyIGFjY29yZGluZyB0byB0
aGUgQkZDIHJ1bGVzLCBhdCB0aGlzIHBvaW50IG9mIHRoZSBsYXlvdXQgZmxvdyB3ZSBkb24ndCB5
ZXQgaGF2ZSBjb21wdXRlZCB2ZXJ0aWNhbCBwb3NpdGlvbnMgZm9yIHRoZSBhbmNlc3RvcnMuCiAg
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKSB7CiAgICAgICAgIHByZWNv
bXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKGxheW91dEJveCwgY29uc3Ry
YWludHNQYWlyKTsKLSAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGF5b3V0
Qm94KS5zZXRMb2dpY2FsVG9wTGVmdChmbG9hdGluZ0NvbnRleHQucG9zaXRpb25Gb3JGbG9hdChs
YXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFpci5jb250YWluaW5nQmxvY2suaG9yaXpvbnRhbCkpOwor
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpLnNldExvZ2lj
YWxUb3BMZWZ0KGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvckZsb2F0KGxheW91dEJveCwgY29u
c3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsKCkpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAvLyBOb24tZmxvYXQgcG9zaXRpb25lZCBmbG9hdCBhdm9pZGVycyAo
Zm9ybWF0dGluZyBjb250ZXh0IHJvb3RzIGFuZCBjbGVhciBib3hlcykgc2hvdWxkIGJlIGZpbmUg
dW5sZXNzIHRoZXJlIGFyZSBmbG9hdHMgaW4gdGhpcyBjb250ZXh0LgpAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZs
b2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiAgICAgICAgIHJldHVybiBjb21wdXRlVmVydGlj
YWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gpOwogCiAg
ICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwotICAg
IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCkuc2V0TG9naWNhbFRvcExl
ZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yTm9uRmxvYXRpbmdGbG9hdEF2b2lkZXIobGF5
b3V0Qm94LCBjb25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwpKTsKKyAg
ICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpLnNldExvZ2ljYWxUb3BM
ZWZ0KGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvck5vbkZsb2F0aW5nRmxvYXRBdm9pZGVyKGxh
eW91dEJveCwgY29uc3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsKCkpKTsK
IH0KIAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVydGljYWxQb3NpdGlv
bkZvckZsb2F0Q2xlYXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYg
ZmxvYXRpCiAgICAgICAgIC8vIEZsb2F0IGF2b2lkZXJzJyBhdmFpbGFibGUgd2lkdGggbWlnaHQg
YmUgc2hydW5rIGJ5IGV4aXN0aW5nIGZsb2F0cyBpbiB0aGUgY29udGV4dC4KICAgICAgICAgYXZh
aWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIgPSB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lk
ZXIoZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFpcik7CiAgICAgfQot
ICAgIGF1dG8gY29udGVudFdpZHRoQW5kTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29t
cHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50c1BhaXIuY29u
dGFpbmluZ0Jsb2NrLmhvcml6b250YWwsIGF2YWlsYWJsZVdpZHRoRmxvYXRBdm9pZGVyKTsKKyAg
ICBhdXRvIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1
dGVkQ29udGVudFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgY29uc3RyYWludHNQYWlyLmNvbnRh
aW5pbmdCbG9jay5ob3Jpem9udGFsKCksIGF2YWlsYWJsZVdpZHRoRmxvYXRBdm9pZGVyKTsKICAg
ICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91
dEJveCk7CiAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGNvbnRlbnRXaWR0aEFu
ZE1hcmdpbi5jb250ZW50V2lkdGgpOwogICAgIGJveEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJn
aW4oeyBjb250ZW50V2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbi5zdGFydCwgY29udGVudFdpZHRo
QW5kTWFyZ2luLnVzZWRNYXJnaW4uZW5kIH0pOwpAQCAtMzczLDEwICszNzMsMTAgQEAgdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBjb25zdAogewogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRIZWlnaHQpIC0+IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gewogICAg
ICAgICBpZiAobGF5b3V0Qm94LmlzSW5GbG93KCkpCi0gICAgICAgICAgICByZXR1cm4gZm9ybWF0
dGluZ0dlb21ldHJ5KCkuaW5GbG93Q29udGVudEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGNv
bnN0cmFpbnRzLmhvcml6b250YWwsIHsgdXNlZEhlaWdodCB9KTsKKyAgICAgICAgICAgIHJldHVy
biBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGxheW91
dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCB7IHVzZWRIZWlnaHQgfSk7CiAKICAgICAg
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgcmV0
dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmZsb2F0aW5nQ29udGVudEhlaWdodEFuZE1hcmdpbihs
YXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwsIHsgdXNlZEhlaWdodCB9KTsKKyAgICAg
ICAgICAgIHJldHVybiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5mbG9hdGluZ0NvbnRlbnRIZWlnaHRB
bmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIHsgdXNlZEhlaWdo
dCB9KTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTUwMyw3ICs1MDMsNyBAQCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaQogICAgIHJldHVy
biBjb25zdHJhaW50czsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2
ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNl
ZFZlcnRpY2FsTWFyZ2luJiB2ZXJ0aWNhbE1hcmdpbiwgIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWlu
dHMmIHZlcnRpY2FsQ29uc3RyYWludHMpIGNvbnN0CitMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHZlcnRpY2FsTWFyZ2luLCBMYXlvdXRVbml0IGNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3ApIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFsYXlvdXRC
b3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAgIC8vIE5vdyB0aGF0IHdlJ3ZlIGNvbXB1
dGVkIHRoZSBmaW5hbCBtYXJnaW4gYmVmb3JlLCBsZXQncyBzaGlmdCB0aGUgYm94J3MgdmVydGlj
YWwgcG9zaXRpb24gaWYgbmVlZGVkLgpAQCAtNTMyLDcgKzUzMiw2IEBAIExheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4oY29uc3QgQm94
JiBsYXlvdXRCCiAgICAgICAgIGN1cnJlbnRMYXlvdXRCb3ggPSAmcHJldmlvdXNJbkZsb3dTaWJs
aW5nOwogICAgIH0KIAotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCA9IHZl
cnRpY2FsQ29uc3RyYWludHMubG9naWNhbFRvcDsKICAgICAvLyBBZGp1c3QgdmVydGljYWwgcG9z
aXRpb24gZGVwZW5kaW5nIHdoZXRoZXIgdGhpcyBib3ggZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBh
ZGpvaW5zIHdpdGggaXRzIHBhcmVudC4KICAgICBhdXRvIGRpcmVjdGx5QWRqb2luc1BhcmVudCA9
ICFsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CiAgICAgaWYgKGRpcmVjdGx5QWRq
b2luc1BhcmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aAppbmRleCAxZDc4NzFjMzU4MjFjMGZkOGJiMTI1ZTk1ODhjZWJhNDQ3NDVhZThhLi4xNGUyMzRj
NTM2MTg1YTc5YmM4Y2NjMjkxNjJhODhmZGM4YjRkNjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCYpOwogCiAgICAgdm9pZCBjb21wdXRlU3RhdGljSG9yaXpvbnRh
bFBvc2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOwotICAg
IHZvaWQgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgVmVy
dGljYWxDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRp
b24oY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wKTsK
ICAgICB2b2lkIGNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgRmxvYXRpbmdDb250
ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7CiAgICAgdm9pZCBjb21w
dXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoY29uc3QgRmxvYXRpbmdDb250ZXh0Jiwg
Y29uc3QgQm94Jik7CiAKQEAgLTc3LDcgKzc3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBv
dmVycmlkZTsKIAotICAgIExheW91dFVuaXQgdmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4oY29u
c3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiwgY29uc3QgVmVydGljYWxDb25zdHJh
aW50cyYpIGNvbnN0OworICAgIExheW91dFVuaXQgdmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiwgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tDb250ZW50Qm94VG9wKSBjb25zdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYsIGNvbnN0IEJveCYsIGNvbnN0IENvbnN0cmFpbnRzUGFpciYpOwogICAgIHZvaWQgdXBk
YXRlTWFyZ2luQWZ0ZXJGb3JQcmV2aW91c1NpYmxpbmcoY29uc3QgQm94Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDhjN2YzNjk5MWEx
YjFjY2NjZmUxZjM1MDk0ZDQzNjBkOTI0ZThkNGYuLjJkMDAwNGMyNjJiYzRmNTcyYTQyNjc4N2Qw
OWUzZjI3NGRhNzY3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJs
b2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmcK
ICAgICByZXR1cm4geyB1c2VkV2lkdGgsIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4udXNlZE1h
cmdpbiB9OwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNW
ZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBWZXJ0aWNhbENvbnN0
cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzKSBjb25zdAorTGF5b3V0VW5pdCBCbG9ja0Zvcm1h
dHRpbmdHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJv
eCwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wKSBjb25zdAogewogICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwjYmxvY2stZm9ybWF0
dGluZwogICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LCBib3hlcyBhcmUgbGFp
ZCBvdXQgb25lIGFmdGVyIHRoZSBvdGhlciwgdmVydGljYWxseSwgYmVnaW5uaW5nIGF0IHRoZSB0
b3Agb2YgYSBjb250YWluaW5nIGJsb2NrLgpAQCAtMjQ3LDcgKzI0Nyw3IEBAIExheW91dFVuaXQg
QmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94
JiBsYXlvdXRCb3gsCiAgICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93Qm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcp
OwogICAgICAgICByZXR1cm4gQm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QocHJldmlvdXNJbkZs
b3dCb3hHZW9tZXRyeSkuYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5Lm1hcmdp
bkFmdGVyKCk7CiAgICAgfQotICAgIHJldHVybiB2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxU
b3A7CisgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3A7CiB9CiAKIExheW91
dFVuaXQgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRpY0hvcml6b250YWxQb3NpdGlvbihj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9u
dGFsQ29uc3RyYWludHMpIGNvbnN0CkBAIC0yNTcsMTEgKzI1Nyw2IEBAIExheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRpY0hvcml6b250YWxQb3NpdGlvbihjb25zdCBCb3gm
IGxheW91dEJvCiAgICAgcmV0dXJuIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsTGVmdCAr
IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KS5tYXJnaW5TdGFy
dCgpOwogfQogCi1Qb2ludCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0
cmFpbnRzKSBjb25zdAotewotICAgIHJldHVybiB7IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbihs
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyksIHN0YXRpY1ZlcnRpY2FsUG9zaXRpb24o
bGF5b3V0Qm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKSB9OwotfQotCiBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFy
Z2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhv
cml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVy
cmlkZGVuVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0lu
RmxvdygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaApp
bmRleCA1ZDNiMjRhYjk2NjVkNmUzNjFlNjg3NDE2MDI2MDFjNzExMzQwMGJiLi42MTQ1N2UwMmFk
YTU4OWQxYjQxY2VkOTQ0OGVlMmZjOGVkZGM2Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC00NCw4ICs0NCw3IEBAIHB1YmxpYzoKICAgICBD
b250ZW50SGVpZ2h0QW5kTWFyZ2luIGluRmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
Qm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlblZlcnRp
Y2FsVmFsdWVzJikgY29uc3Q7CiAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd0NvbnRl
bnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
LCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpIGNvbnN0OwogCi0gICAgUG9pbnQg
c3RhdGljUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwg
Y29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpIGNvbnN0OwotICAgIExheW91dFVuaXQgc3RhdGlj
VmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJikg
Y29uc3Q7CisgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYs
IExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCkgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94JikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggZWI1MzQyNjQ0OGJhOTli
ZTM5OTE0ZTk1ZTdlNDI1M2Q2ZjRjOTA1NC4uMzFjYmY3YTQ2MjM2MzhlMTQxMDQ3OTBiMDhmNzdl
ZDZmODQzOWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtz
LmNwcApAQCAtOTksNyArOTksNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrRm9y
bWF0dGluZ1F1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0SWZBcHBsaWNhYgogICAgIC8vIEhv
d2V2ZXIgdGhlIG5vbi1pbi1mbG93IGRvY3VtZW50IGJveCdzIHZlcnRpY2FsIG1hcmdpbnMgYXJl
IGlnbm9yZWQuIFRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBib2R5IGJveCdzIGNvbnRlbnQgaGVpZ2h0
LgogICAgIGlmIChkb2N1bWVudEJveC5pc0luRmxvdygpKSB7CiAgICAgICAgIGF1dG8mIGZvcm1h
dHRpbmdHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpOwot
ICAgICAgICBhdXRvIHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0
dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oZG9jdW1lbnRCb3gsIGZvcm1hdHRp
bmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoaW5pdGlhbENvbnRhaW5pbmdC
bG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmll
d3BvcnRRdWlyaykuaG9yaXpvbnRhbCk7CisgICAgICAgIGF1dG8gcHJlY29tcHV0ZURvY3VtZW50
Qm94VmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbihkb2N1bWVudEJveCwgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBl
UmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5ob3Jpem9udGFsKCkpOwogICAg
ICAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCkgKyBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNh
bE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKTsKICAgICB9CiAgICAgcmV0dXJuIHN0ZDo6bWF4KGNv
bnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCwgIGJvZHlCb3hDb250ZW50SGVpZ2h0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNv
bGxhcHNlLmNwcAppbmRleCBmYmEyNWQ0NWUwODY4ZTRiMjM4NGY2ODM2NjIyYmI0NjcxNDE4Yzg5
Li40OWFiOTQzM2M2NzkxZWZjZjU5OTRkZmM5MmYyYzAxOTNlODViYzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVk
QmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBh
aXI6OlZhbHVlcyBCbG9ja01hcmdpbkNvbGxhcHNlOjpwcmVjb21wCiAgICAgaWYgKGJsb2NrRm9y
bWF0dGluZ1N0YXRlLmhhc1VzZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpKQogICAgICAgICBy
ZXR1cm4gYmxvY2tGb3JtYXR0aW5nU3RhdGUudXNlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCku
cG9zaXRpdmVBbmROZWdhdGl2ZVZhbHVlcy5iZWZvcmU7CiAKLSAgICBhdXRvIGhvcml6b250YWxD
b25zdHJhaW50cyA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5ob3Jpem9udGFsOworICAgIGF1dG8gaG9y
aXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmhvcml6b250YWwoKTsKICAg
ICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAg
YXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNl
ZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAgcmV0dXJuIHByZWNv
bXB1dGVkUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRCb3gsIG5vbkNvbGxhcHNl
ZE1hcmdpbiwgZm9ybWF0dGluZ0dlb21ldHJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5jcHAKaW5kZXggOWYwMDgxMmViZjRjZjZiODY3ODFhOTdkODQwNWEyMzQwMTUw
OGQyZC4uYmM4OWFkMmY5NWI3M2UzYzc1OTcwOThkODc4YTIwMzA5YTI3YzFiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdy
YXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5o
IgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKKyNpbmNsdWRlICJU
YWJsZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlRh
YmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIgpAQCAtNzIsMTQgKzczLDE2IEBAIHZv
aWQgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0VGFibGVCb3goY29u
c3QgQ29udGFpbmVyQm94JiB0YWJsCiB7CiAgICAgbGF5b3V0U3RhdGUoKS5lbnN1cmVUYWJsZUZv
cm1hdHRpbmdTdGF0ZSh0YWJsZUJveCk7CiAKLSAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZ0Zv
clRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKLSAgICBjb21wdXRl
U3RhdGljVmVydGljYWxQb3NpdGlvbih0YWJsZUJveCwgY29uc3RyYWludHMudmVydGljYWwpOwot
ICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbkZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50
cy5ob3Jpem9udGFsKTsKLSAgICBjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKHRhYmxl
Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGlu
Z0ZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOworICAgIGNv
bXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKHRhYmxlQm94LCBjb25zdHJhaW50cy5sb2dpY2Fs
VG9wKCkpOworICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbkZvclRhYmxlQm94KHRhYmxlQm94LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsKCkpOworICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9z
aXRpb24odGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAKICAgICBpZiAodGFi
bGVCb3guaGFzQ2hpbGQoKSkgeworICAgICAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0
aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKICAgICAgICAgYXV0byBpbnZhbGlkYXRpb25TdGF0
ZSA9IEludmFsaWRhdGlvblN0YXRlIHsgfTsKLSAgICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkpLT5sYXlvdXRJbkZsb3dD
b250ZW50KGludmFsaWRhdGlvblN0YXRlLCBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQodGFibGVCb3gpKTsKKyAgICAgICAgYXV0byBjb25zdHJhaW50cyA9
IENvbnN0cmFpbnRzRm9yVGFibGVDb250ZW50IHsgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCh0YWJsZUJveCksIGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRl
ZEhlaWdodCh0YWJsZUJveCkgfTsKKyAgICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0
dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkpLT5sYXlvdXRJbkZsb3dDb250ZW50
KGludmFsaWRhdGlvblN0YXRlLCBjb25zdHJhaW50cyk7CiAgICAgfQogCiAgICAgY29tcHV0ZUhl
aWdodEFuZE1hcmdpbkZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50cyk7CkBAIC0yMjks
MTMgKzIzMiwxMyBAQCB2b2lkIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJsZUJveChjb25zdAogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0oKTsKIAotICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gZm9ybWF0dGluZ0dlb21l
dHJ5KCkuaW5GbG93Q29udGVudEhlaWdodEFuZE1hcmdpbih0YWJsZUJveCwgY29uc3RyYWludHMu
aG9yaXpvbnRhbCwgeyBvdmVycmlkZGVuVGFibGVIZWlnaHQgfSk7CisgICAgYXV0byBoZWlnaHRB
bmRNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFy
Z2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIHsgb3ZlcnJpZGRlblRhYmxl
SGVpZ2h0IH0pOwogICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBtYXJnaW5Db2xsYXBzZSgpLmNv
bGxhcHNlZFZlcnRpY2FsVmFsdWVzKHRhYmxlQm94LCBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFw
c2VkTWFyZ2luKTsKICAgICAvLyBDYWNoZSB0aGUgY29tcHV0ZWQgcG9zaXRpdmUgYW5kIG5lZ2F0
aXZlIG1hcmdpbiB2YWx1ZSBwYWlyLgogICAgIGZvcm1hdHRpbmdTdGF0ZSgpLnNldFVzZWRWZXJ0
aWNhbE1hcmdpbih0YWJsZUJveCwgdmVydGljYWxNYXJnaW4pOwogCiAgICAgYXV0byYgYm94R2Vv
bWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeSh0YWJsZUJveCk7Ci0gICAgYm94
R2VvbWV0cnkuc2V0TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbih0YWJsZUJv
eCwgdmVydGljYWxNYXJnaW4sIGNvbnN0cmFpbnRzLnZlcnRpY2FsKSk7CisgICAgYm94R2VvbWV0
cnkuc2V0TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbih0YWJsZUJveCwgdmVy
dGljYWxNYXJnaW4sIGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSkpOwogICAgIGJveEdlb21ldHJ5
LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQpOwogICAg
IGJveEdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHsgbWFyZ2luQmVmb3JlKHZlcnRpY2FsTWFy
Z2luKSwgbWFyZ2luQWZ0ZXIodmVydGljYWxNYXJnaW4pIH0pOwogICAgIC8vIEFkanVzdCB0aGUg
cHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0b20gbm93IHRoYXQgdGhpcyBib3gncyB2ZXJ0
aWNhbCBtYXJnaW4gaXMgY29tcHV0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGlu
Z0NvbnRleHQuY3BwCmluZGV4IGVmZTk3ODIwNGVjYzYxY2QyNzU2YTQ4MzMwMzIwOTYxNDBiNTEw
ZmEuLmVjMDBlMmQ0ODNmOGQyYzYwMzg2MjNlNjg3MjNmMWRlNDJmNjBhZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC03MCwxNSArNzAsMTUgQEAg
dm9pZCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJdGVtcyhjb25zdCBD
b25zdHJhaW50c0ZvckluRmxvd0NvbnQKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0
aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0
aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICBhdXRvIGZsZXhJdGVtTWFpbkF4aXNTdGFy
dCA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNhbExlZnQ7CisgICAgYXV0byBmbGV4SXRl
bU1haW5BeGlzU3RhcnQgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQ7CiAg
ICAgYXV0byBmbGV4SXRlbU1haW5BeGlzRW5kID0gZmxleEl0ZW1NYWluQXhpc1N0YXJ0OwotICAg
IGF1dG8gZmxleEl0ZW1Dcm9zQXhpc1N0YXJ0ID0gY29uc3RyYWludHMudmVydGljYWwubG9naWNh
bFRvcDsKKyAgICBhdXRvIGZsZXhJdGVtQ3Jvc0F4aXNTdGFydCA9IGNvbnN0cmFpbnRzLmxvZ2lj
YWxUb3AoKTsKICAgICBhdXRvIGZsZXhJdGVtQ3Jvc0F4aXNFbmQgPSBmbGV4SXRlbUNyb3NBeGlz
U3RhcnQ7CiAgICAgZm9yIChhdXRvJiBmbGV4SXRlbSA6IGNoaWxkcmVuT2ZUeXBlPENvbnRhaW5l
ckJveD4ocm9vdCgpKSkgewogICAgICAgICBBU1NFUlQoZmxleEl0ZW0uZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHNpbXBs
ZSwgbGV0J3MgbGF5b3V0IHRoZSBmbGV4IGl0ZW1zIGFuZCBwbGFjZSB0aGVtIG5leHQgdG8gZWFj
aCBvdGhlciBzZXR1cC4KICAgICAgICAgYXV0byBpbnRyaW5zaWNXaWR0aHMgPSBmb3JtYXR0aW5n
U3RhdGUuaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChmbGV4SXRlbSk7Ci0gICAgICAg
IGF1dG8gZmxleEl0ZW1Mb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihzdGQ6Om1heChpbnRyaW5zaWNX
aWR0aHMtPm1pbmltdW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNhbFdpZHRoKSwgaW50
cmluc2ljV2lkdGhzLT5tYXhpbXVtKTsKKyAgICAgICAgYXV0byBmbGV4SXRlbUxvZ2ljYWxXaWR0
aCA9IHN0ZDo6bWluKHN0ZDo6bWF4KGludHJpbnNpY1dpZHRocy0+bWluaW11bSwgY29uc3RyYWlu
dHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCksIGludHJpbnNpY1dpZHRocy0+bWF4aW11bSk7
CiAgICAgICAgIGF1dG8gZmxleEl0ZW1Db25zdHJhaW50cyA9IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCB7IHsgeyB9LCBmbGV4SXRlbUxvZ2ljYWxXaWR0aCB9LCB7IH0gfTsKIAogICAgICAg
ICBhdXRvIGludmFsaWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwpAQCAtOTAs
MTIgKzkwLDEyIEBAIHZvaWQgRmxleEZvcm1hdHRpbmdDb250ZXh0OjpzaXplQW5kUGxhY2VGbGV4
SXRlbXMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250CiAgICAgICAgICAgICBmbGV4SXRl
bUdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KExheW91dFBvaW50IHsgZmxleEl0ZW1NYWluQXhp
c0VuZCwgZmxleEl0ZW1Dcm9zQXhpc1N0YXJ0IH0pOwogCiAgICAgICAgICAgICBmbGV4SXRlbUdl
b21ldHJ5LnNldEJvcmRlcihmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRCb3JkZXIoZmxleEl0
ZW0pKTsKLSAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0UGFkZGluZyhmb3JtYXR0aW5n
R2VvbWV0cnkuY29tcHV0ZWRQYWRkaW5nKGZsZXhJdGVtLCBjb25zdHJhaW50cy5ob3Jpem9udGFs
LmxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRQYWRkaW5n
KGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFBhZGRpbmcoZmxleEl0ZW0sIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpKTsKIAotICAgICAgICAgICAgYXV0byBjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luKGZsZXhJdGVtLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICAgICAgICAgIGF1
dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbihmbGV4SXRlbSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAg
ICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih7IGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwX2x1KSwgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1KSB9KTsKIAotICAgICAgICAgICAgYXV0byBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJn
aW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAgICAgICAgICAgYXV0byBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGlj
YWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAgICAgICAgICAg
ICBmbGV4SXRlbUdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHsgY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbi5iZWZvcmUudmFsdWVfb3IoMF9sdSksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIu
dmFsdWVfb3IoMF9sdSkgfSk7CiAKICAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0Q29u
dGVudEJveEhlaWdodChmb3JtYXR0aW5nR2VvbWV0cnkuY29udGVudEhlaWdodEZvckZvcm1hdHRp
bmdDb250ZXh0Um9vdChmbGV4SXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDc4NjRhZWNkNzIxNmZkYzIwMjAyZWQ3Yjc5ZmQy
MjBmNzcxNzA1MDAuLmFmYjUzMjI0NzhhOGY2N2RjYzJlMmNjNDFhZGEzY2RhMjEzOWNmZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTk4LDIyICs5OCwyMiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZs
b3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpbwogICAgICAgICAgICAgaWYg
KGlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSAmJiBsYXlvdXRCb3gtPmVzdGFibGlzaGVzRm9y
bWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3gtPmlz
SW5saW5lQmxvY2tCb3goKSB8fCBsYXlvdXRCb3gtPmlzSW5saW5lVGFibGVCb3goKSB8fCBsYXlv
dXRCb3gtPmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpOwogICAgICAgICAgICAgICAgIGF1dG8mIGZv
cm1hdHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94PigqbGF5b3V0Qm94KTsKLSAgICAg
ICAgICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhmb3JtYXR0aW5nUm9vdCwgY29uc3Ry
YWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICAgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2lu
KGZvcm1hdHRpbmdSb290LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICAgICAgICAgICAg
ICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhmb3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9y
aXpvbnRhbCgpKTsKKyAgICAgICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oZm9ybWF0
dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAoZm9ybWF0dGluZ1Jvb3QuaGFzQ2hpbGQoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRv
IGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRl
eHQoZm9ybWF0dGluZ1Jvb3QsIGxheW91dFN0YXRlKCkpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoZm9ybWF0dGluZ1Jvb3QuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudChpbnZh
bGlkYXRpb25TdGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50KGZvcm1hdHRpbmdSb290KSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVIZWln
aHRBbmRNYXJnaW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAg
ICAgICAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGZvcm1hdHRpbmdSb290LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwogICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5n
Q29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0
dGluZ0dlb21ldHJ5KCkuY29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdS
b290KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbXB1
dGVIZWlnaHRBbmRNYXJnaW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwp
OworICAgICAgICAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGZvcm1hdHRpbmdS
b290LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAvLyBSZXBsYWNlZCBhbmQgb3RoZXIgdHlwZSBvZiBsZWFmIGF0b21pYyBp
bmxpbmUgYm94ZXMuCi0gICAgICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKmxh
eW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICAgICAgY29tcHV0
ZVdpZHRoQW5kTWFyZ2luKCpsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAg
ICAgICAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oKmxheW91dEJveCwgY29uc3RyYWlu
dHMuaG9yaXpvbnRhbCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmco
KmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKKyAgICAgICAgICAgICAgICBj
b21wdXRlV2lkdGhBbmRNYXJnaW4oKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgp
KTsKKyAgICAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKCpsYXlvdXRCb3gsIGNv
bnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAobGF5b3V0Qm94LT5pc0xpbmVCcmVha0JveCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBib3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KCpsYXlvdXRCb3gpOwpAQCAt
MTI2LDggKzEyNiw4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxv
d0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvCiAgICAgICAgICAgICAvLyBU
ZXh0IHdyYXBwZXIgYm94ZXMgKGFub255bW91cyBpbmxpbmUgbGV2ZWwgYm94ZXMpIGRvbid0IGhh
dmUgYm94IGdlb21ldHJpZXMgKHRoZXkgb25seSBnZW5lcmF0ZSBydW5zKS4KICAgICAgICAgICAg
IGlmICghbGF5b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIC8v
IElubGluZSBib3hlcyAoPHNwYW4+KSBjYW4ndCBnZXQgc2l6ZWQvcG9zaXRpb25lZCB5ZXQuIEF0
IHRoaXMgcG9pbnQgd2UgY2FuIG9ubHkgY29tcHV0ZSB0aGVpciBtYXJnaW5zLCBib3JkZXJzIGFu
ZCBwYWRkaW5nLgotICAgICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKCpsYXlv
dXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAgICAgICAgIGNvbXB1dGVI
b3Jpem9udGFsTWFyZ2luKCpsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAg
ICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKCpsYXlvdXRCb3gsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKSk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUhvcml6b250YWxNYXJn
aW4oKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAgICAgICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeSgqbGF5b3V0Qm94KS5zZXRWZXJ0aWNhbE1h
cmdpbih7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAgLTE3OCw3ICsxNzgs
NyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1z
JiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OgogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5saW5lUnVu
cygpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCku
c2l6ZSgpKTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsVG9wID0gY29uc3RyYWlu
dHMudmVydGljYWwubG9naWNhbFRvcDsKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2Fs
VG9wID0gY29uc3RyYWludHMubG9naWNhbFRvcCgpOwogICAgIHN0cnVjdCBQcmV2aW91c0xpbmUg
ewogICAgICAgICBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIHJhbmdlOwogICAgICAgICBz
aXplX3Qgb3ZlcmZsb3dDb250ZW50TGVuZ3RoIHsgMCB9OwpAQCAtMTg5LDcgKzE4OSw3IEBAIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGlu
ZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGlu
Z0NvbnRleHQgeyAqdGhpcywgZmxvYXRpbmdTdGF0ZSB9OwogICAgIGF1dG8gaXNGaXJzdExpbmUg
PSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5pc0VtcHR5KCk7CiAKLSAgICBhdXRvIGxpbmVCdWls
ZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgZmxvYXRpbmdTdGF0ZSwgY29uc3RyYWludHMuaG9y
aXpvbnRhbCwgaW5saW5lSXRlbXMgfTsKKyAgICBhdXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxk
ZXIgeyAqdGhpcywgZmxvYXRpbmdTdGF0ZSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCBpbmxp
bmVJdGVtcyB9OwogICAgIHdoaWxlICghbmVlZHNMYXlvdXRSYW5nZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gVHVybiBwcmV2aW91cyBsaW5lJ3Mgb3ZlcmZsb3cgY29udGVudCBsZW5ndGggaW50
byB0aGUgbmV4dCBsaW5lJ3MgbGVhZGluZyBjb250ZW50IHBhcnRpYWwgbGVuZ3RoLgogICAgICAg
ICAvLyAic3BbPC1saW5lIGJyZWFrLT5dbGl0X2NvbnRlbnQiIC0+IG92ZXJmbG93IGxlbmd0aDog
MTEgLT4gbGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3RoOiAxMS4KQEAgLTIwMCw5ICsyMDAs
OSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1z
JiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OgogICAgICAgICAgICAgICAgIHJldHVybiByb290
KCkuc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICAgICAgICAgIHJldHVybiBmb3Jt
YXR0aW5nUXVpcmtzKCkuaW5pdGlhbExpbmVIZWlnaHQoKTsKICAgICAgICAgfSgpOwotICAgICAg
ICBhdXRvIGluaXRpYWxMaW5lQ29uc3RyYWludHMgPSBJbmxpbmVSZWN0IHsgbGluZUxvZ2ljYWxU
b3AsIGNvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwubG9naWNhbFdpZHRoLCBpbml0aWFsTGluZUhlaWdodCB9OworICAgICAgICBhdXRvIGlu
aXRpYWxMaW5lQ29uc3RyYWludHMgPSBJbmxpbmVSZWN0IHsgbGluZUxvZ2ljYWxUb3AsIGNvbnN0
cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgp
LmxvZ2ljYWxXaWR0aCwgaW5pdGlhbExpbmVIZWlnaHQgfTsKICAgICAgICAgYXV0byBsaW5lQ29u
dGVudCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNvbnRlbnQobmVlZHNMYXlvdXRSYW5nZSwg
cGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBsZWFkaW5nTG9naWNhbFdpZHRoLCBpbml0aWFs
TGluZUNvbnN0cmFpbnRzLCBpc0ZpcnN0TGluZSk7Ci0gICAgICAgIGF1dG8gbGluZUxvZ2ljYWxS
ZWN0ID0gY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQobGluZUNvbnRlbnQsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwpOworICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNvbXB1dGVH
ZW9tZXRyeUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkpOwogCiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnRSYW5nZSA9IGxpbmVDb250ZW50LmlubGlu
ZUl0ZW1SYW5nZTsKICAgICAgICAgaWYgKCFsaW5lQ29udGVudFJhbmdlLmlzRW1wdHkoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNkYjFmMGRmMDA4NDRiNmY3ZmZjODQ4YjY4MmI3NTM2MDlkNGU1MTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CisKKyNpbmNsdWRlICJGb3JtYXR0aW5nQ29uc3RyYWludHMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0cnVjdCBDb25zdHJhaW50c0ZvclRhYmxlQ29u
dGVudCA6IHB1YmxpYyBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgeworICAgIENvbnN0cmFp
bnRzRm9yVGFibGVDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQp
OworCisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNl
Rm9yQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNv
bnRlbnQ7IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fYXZh
aWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQ7Cit9OworCitpbmxpbmUgQ29uc3RyYWludHNG
b3JUYWJsZUNvbnRlbnQ6OkNvbnN0cmFpbnRzRm9yVGFibGVDb250ZW50KGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCYgaW5GbG93Q29udHJhaW50cywgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVudCkKKyAgICA6IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudChpbkZsb3dDb250cmFpbnRzLmhvcml6b250YWwoKSwgaW5GbG93
Q29udHJhaW50cy5sb2dpY2FsVG9wKCksIFRhYmxlQ29udGVudCkKKyAgICAsIG1fYXZhaWxhYmxl
VmVydGljYWxTcGFjZUZvckNvbnRlbnQoYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQp
Cit7Cit9CisKK30KK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19MQVlPVVRfRk9STUFUVElO
R19DT05TVFJBSU5UUyhDb25zdHJhaW50c0ZvclRhYmxlQ29udGVudCwgaXNDb25zdHJhaW50c0Zv
clRhYmxlQ29udGVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9y
bWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDI5YTZiNzMwMjFkYjQyYjllNTRmNzc3MjM3ODZkY2Zk
OGFiMjM0MzIuLmVjMjZhMWNiNzg3ZWNlZTE5MmUyYTYxYTY0Zjk2NDQ2MDg2YTJlYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlv
dXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgor
I2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiVGFibGVG
b3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBA
IC01NSw4ICs1Niw4IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29uCiAKIHZvaWQgVGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCiB7Ci0gICAgYXV0
byBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsLmxvZ2lj
YWxXaWR0aDsKLSAgICBhdXRvIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UgPSBjb25zdHJhaW50cy52
ZXJ0aWNhbC5sb2dpY2FsSGVpZ2h0OworICAgIGF1dG8gYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNl
ID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aDsKKyAgICBhdXRvIGF2YWls
YWJsZVZlcnRpY2FsU3BhY2UgPSBkb3duY2FzdDxDb25zdHJhaW50c0ZvclRhYmxlQ29udGVudD4o
Y29uc3RyYWludHMpLmF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50KCk7CiAgICAgLy8g
MS4gQ29tcHV0ZSB3aWR0aCBhbmQgaGVpZ2h0IGZvciB0aGUgZ3JpZC4KICAgICBjb21wdXRlQW5k
RGlzdHJpYnV0ZUV4dHJhU3BhY2UoYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBhdmFpbGFibGVW
ZXJ0aWNhbFNwYWNlKTsKICAgICAvLyAyLiBGaW5hbGl6ZSBjZWxscy4KQEAgLTk5LDcgKzEwMCw3
IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMo
TGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9uCiAgICAgICAgIGZvciAoc2l6ZV90IHJvd0luZGV4
ID0gY2VsbC0+c3RhcnRSb3coKSArIDE7IHJvd0luZGV4IDwgY2VsbC0+ZW5kUm93KCk7ICsrcm93
SW5kZXgpCiAgICAgICAgICAgICBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlICs9IHJvd0xpc3Rbcm93
SW5kZXhdLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgYXZhaWxhYmxlVmVydGljYWxTcGFjZSAr
PSAoY2VsbC0+cm93U3BhbigpIC0gMSkgKiBncmlkLnZlcnRpY2FsU3BhY2luZygpOwotICAgICAg
ICBsYXlvdXRDZWxsKCpjZWxsLCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIGF2YWlsYWJsZVZl
cnRpY2FsU3BhY2UpOworICAgICAgICBsYXlvdXRDZWxsKCpjZWxsLCBhdmFpbGFibGVIb3Jpem9u
dGFsU3BhY2UpOwogCiAgICAgICAgIGF1dG8gY29tcHV0ZUludHJpbnNpY1ZlcnRpY2FsUGFkZGlu
Z0ZvckNlbGwgPSBbJl0gewogICAgICAgICAgICAgLy8gSW50cmluc2ljIHBhZGRpbmcgaXMgdGhl
IGV4dHJhIHBhZGRpbmcgZm9yIHRoZSBjZWxsIGJveCB3aGVuIGl0IGlzIHNob3J0ZXIgdGhhbiB0
aGUgcm93LiBDZWxsIGJveGVzIGhhdmUgdG8KQEAgLTI0Niw3ICsyNDcsNyBAQCB2b2lkIFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5GbAogICAgIGF1dG8mIGdyaWQgPSBmb3JtYXR0aW5nU3RhdGUoKS50YWJsZUdy
aWQoKTsKICAgICBhdXRvJiB0YWJsZUJveCA9IHJvb3QoKTsKICAgICBhdXRvIHNlY3Rpb25XaWR0
aCA9IGdyaWQuY29sdW1ucygpLmxvZ2ljYWxXaWR0aCgpICsgMiAqIGdyaWQuaG9yaXpvbnRhbFNw
YWNpbmcoKTsKLSAgICBhdXRvIGxvZ2ljYWxUb3AgPSBjb25zdHJhaW50cy52ZXJ0aWNhbC5sb2dp
Y2FsVG9wOworICAgIGF1dG8gbG9naWNhbFRvcCA9IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKTsK
ICAgICBhdXRvIHZlcnRpY2FsU3BhY2luZyA9IGdyaWQudmVydGljYWxTcGFjaW5nKCk7CiAgICAg
YXV0byBwYWRkaW5nQmVmb3JlID0gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7IHZlcnRpY2Fs
U3BhY2luZyB9OwogICAgIGF1dG8gcGFkZGluZ0FmdGVyID0gdmVydGljYWxTcGFjaW5nOwpAQCAt
MjcwLDE0ICsyNzEsMTQgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2Vv
bWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25zdHJhaW50c0ZvckluRmwKICAgICAgICAgfQogICAg
ICAgICBzZWN0aW9uQ29udGVudEhlaWdodCArPSB2ZXJ0aWNhbFNwYWNpbmcgKiAocm93Q291bnQg
LSAxKTsKICAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoc2Vj
dGlvbkNvbnRlbnRIZWlnaHQpOwotICAgICAgICBzZWN0aW9uQm94R2VvbWV0cnkuc2V0TG9naWNh
bExlZnQoY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsTGVmdCk7CisgICAgICAgIHNlY3Rp
b25Cb3hHZW9tZXRyeS5zZXRMb2dpY2FsTGVmdChjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9n
aWNhbExlZnQpOwogICAgICAgICBzZWN0aW9uQm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcChsb2dp
Y2FsVG9wKTsKIAogICAgICAgICBsb2dpY2FsVG9wICs9IHNlY3Rpb25Cb3hHZW9tZXRyeS5ib3Jk
ZXJCb3hIZWlnaHQoKTsKICAgICB9CiB9CiAKLXZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQgYXZhaWxh
YmxlSG9yaXpvbnRhbFNwYWNlLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZl
cnRpY2FsU3BhY2VGb3JDb250ZW50KQordm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlv
dXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYgY2VsbCwgTGF5b3V0VW5pdCBhdmFpbGFibGVI
b3Jpem9udGFsU3BhY2UpCiB7CiAgICAgQVNTRVJUKGNlbGwuYm94KCkuZXN0YWJsaXNoZXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogCkBAIC0zMDUsMTAgKzMwNiw4IEBAIHZvaWQgVGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGws
IExheW91dFVuaXQKIAogICAgIGlmIChjZWxsQm94Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgp
KSB7CiAgICAgICAgIGF1dG8gY29uc3RyYWludHNGb3JDZWxsQ29udGVudCA9IGZvcm1hdHRpbmdH
ZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY2VsbEJveCk7Ci0gICAgICAgIGNv
bnN0cmFpbnRzRm9yQ2VsbENvbnRlbnQudmVydGljYWwubG9naWNhbEhlaWdodCA9IGF2YWlsYWJs
ZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50OwogICAgICAgICBhdXRvIGludmFsaWRhdGlvblN0YXRl
ID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgYmUgcGFydCBvZiB0aGUgaW52YWxpZGF0aW9uIHN0YXRlIHRvIGluZGljYXRlIHdo
ZW4gd2UgcmUtbGF5b3V0IHRoZSBjZWxsCi0gICAgICAgIC8vIG11bHRpcGxlIHRpbWVzIGFzIHBh
cnQgb2YgdGhlIG11bHRpLXBhc3MgdGFibGUgYWxnb3JpdGhtLgorICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcGFydCBvZiB0aGUgaW52YWxpZGF0aW9uIHN0YXRlIHRv
IGluZGljYXRlIHdoZW4gd2UgcmUtbGF5b3V0IHRoZSBjZWxsIG11bHRpcGxlIHRpbWVzIGFzIHBh
cnQgb2YgdGhlIG11bHRpLXBhc3MgdGFibGUgYWxnb3JpdGhtLgogICAgICAgICBhdXRvJiBmbG9h
dGluZ1N0YXRlRm9yQ2VsbENvbnRlbnQgPSBsYXlvdXRTdGF0ZSgpLmVuc3VyZUJsb2NrRm9ybWF0
dGluZ1N0YXRlKGNlbGxCb3gpLmZsb2F0aW5nU3RhdGUoKTsKICAgICAgICAgZmxvYXRpbmdTdGF0
ZUZvckNlbGxDb250ZW50LmNsZWFyKCk7CiAgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KGNlbGxCb3gsIGxheW91dFN0YXRlKCkpLT5sYXlvdXRJbkZsb3dDb250
ZW50KGludmFsaWRhdGlvblN0YXRlLCBjb25zdHJhaW50c0ZvckNlbGxDb250ZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggOTI0YjEyNDMwN2Mz
MDcyOTcwNGFmMjg2ZjQ3OTE3ZjExOWM3MDJjMS4uOGJjMjMwOWQwYzBkNGU4MDc0NjY1YzQ5YjU0
NDJjNDhhYWZmY2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIFRhYmxlTGF5b3V0
KCp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS50YWJsZUdyaWQoKSk7IH0KIAogICAgIEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBsYXlvdXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYsIExheW91
dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiwgTGF5b3V0VW5pdCBhdmFpbGFi
bGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMoTGF5
b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdlb21l
dHJ5Rm9yUm93cyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSk7CiAgICAgdm9p
ZCBzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0Nv
bnRlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggZDUzYjVkY2Ix
MzllZGI5MDQwOTdmYmNjY2MzYmRhZTFmODZmNWRhNi4uOTJhMGIxZDMwNGNjYTlhYjAxNzBkMTM1
ZThjOTUzN2Y2NWY0NjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAg
LTIxNiw5ICsyMTYsOCBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiAKICAgICBhdXRvIGlu
dmFsaWRhdGlvblN0YXRlID0gTGF5b3V0OjpJbnZhbGlkYXRpb25TdGF0ZSB7IH07CiAgICAgYXV0
byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBMYXlvdXQ6Okhvcml6b250YWxDb25zdHJhaW50cyB7
IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSwgZmxvdygpLmNvbnRlbnRTaXplKCkud2lk
dGgoKSB9OwotICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9IExheW91dDo6VmVydGljYWxD
b25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCksIHsgfSB9OwogCi0g
ICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGluZUxheW91dEZvckludGVyZ3JhdGlvbihpbnZh
bGlkYXRpb25TdGF0ZSwgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWlu
dHMgfSk7CisgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGluZUxheW91dEZvckludGVyZ3Jh
dGlvbihpbnZhbGlkYXRpb25TdGF0ZSwgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIGZsb3coKS5i
b3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgfSk7CiAKICAgICBjb25zdHJ1Y3RDb250ZW50KCk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430224</attachid>
            <date>2021-05-31 19:26:24 -0700</date>
            <delta_ts>2021-05-31 19:41:08 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-226435-20210531192623.patch</filename>
            <type>text/plain</type>
            <size>67672</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3OWE0MDc2NjgwMTU1
ZWYwNWE1MGM2YTk0NTlmYmEyZTc5OGVkMi4uMDk2NDg0Y2ViMzg5MzlkNmNlNTZmMDQ1NGYwZGQ1
YzA2NTg1NzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA1LTMxICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBUaWdodGVuIHRoZSBj
b25zdHJhaW50IGNsYXNzZXMgKENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudC9Db25zdHJhaW50
c0Zvck91dE9mRmxvd0NvbnRlbnQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBXaGlsZSBsb2dpY2FsIGhlaWdodCBzaG91bGQgYWx3YXlzIGJlIGF2YWls
YWJsZSBmb3Igb3V0IG9mIGZsb3cgY29udGVudCBieSBkZXNpZ24sCisgICAgICAgIHRoZSBiYXNl
IGluZmxvdyBsYXlvdXQgY2FuJ3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBpdC4gVGhpcyBoZWlnaHQg
Y29uc3RyYWludCBpcyBub3QgZXZlbiByZXF1aXJlZC91c2VkIGluIG1vc3Qgb2YgdGhlIGxheW91
dCBzeXN0ZW1zLAorICAgICAgICBzbyBsZXQncyBtb3ZlIGl0IHRvIHRoZSBkZXJpdmVkIGNsYXNz
KGVzKS4KKworICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0
cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoKKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdl
b21ldHJ5KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVw
bGFjZWRDb250ZW50V2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJl
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nR2Vv
bWV0cnk6OnN0YXRpY1Bvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Lmg6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdDb250ZXh0OjpzaXplQW5kUGxh
Y2VGbGV4SXRlbXMpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxv
d0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2Vs
bCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUxheW91dDo6bGF5b3V0KToKKwogMjAyMS0wNS0zMSAgQWFrYXNoIEphaW4gIDxhYWth
c2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjc4MjYxKTogQnJva2Ug
d2luZG93cyBidWlsZCAtIGZvbGxvdy11cCBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YzNmMzA0OGI2OWEzMWNkMTFiOTNl
NjhjYTEzNmQ5YTI1NGViMjkzLi5jOTliZmNiOTNiNTQ0ZmJmYmUyNDM2ZjRlZTk0NGI1ZjJjYTlj
ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTM0LDYgKzIxMzQsOCBAQAogCQk2RjE1NTIyMTI2NDc2QjVDMDBFMzUzQzYg
LyogVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjE1NTIyMDI2NDc2QjVCMDBFMzUzQzYgLyog
VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkYxNzI2NEYyNDcwQzYwQjAwNTE4Qzk2IC8q
IFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMTcyNjRFMjQ3MEM2MEEwMDUxOEM5NiAvKiBU
YWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8q
IElubGluZVRleHRJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RjFDQzFERDIyNUY4QjQyMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2RjFFODNBMjI2
NjU4ODRDMDAyRTlEMjggLyogVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMUU4M0EwMjY2NTg4NEMwMDJF
OUQyOCAvKiBUYWJsZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZGMUU4M0E2MjY2NTg4OEMwMDJFOUQyOCAv
KiBGb3JtYXR0aW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGMUU4M0E1MjY2NTg4OEMwMDJFOUQyOCAvKiBGb3JtYXR0aW5nQ29u
c3RyYWludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RjI2QkI2QzIzMzQzRTZGMDAyRjJCRUEgLyogTGF5b3V0Q29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYyNkJCNkIyMzM0M0U1QjAw
MkYyQkVBIC8qIExheW91dENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGlu
ZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGMjZFQjQ2MjM0MDA0QTUwMDY5MDZFMiAvKiBJbmxpbmVMaW5lQnVpbGRlci5oICovOyB9Owog
CQk2RjM2MEU1MDIzOTk5NDIxMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMzYwRTRFMjM5
OTk0MjAwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05OTkzLDYgKzk5OTUsOCBAQAog
CQk2RjE3MjY0RTI0NzBDNjBBMDA1MThDOTYgLyogVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZG
MUNDMURDMjI1RjhCNDEwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmxpbmVUZXh0SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZGMUNDMUREMjI1RjhCNDIwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbmxpbmVUZXh0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RjFF
ODNBMDI2NjU4ODRDMDAyRTlEMjggLyogVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nQ29uc3RyYWludHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkYxRTgzQTUyNjY1ODg4QzAwMkU5RDI4
IC8qIEZvcm1hdHRpbmdDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb3JtYXR0aW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkYyMjJCNzQxQUI1MkQ2NDAwOTQ2NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMjIyQjc1MUFCNTJEOEEwMDk0NjUxQSAvKiBXZWJHTFZl
cnRleEFycmF5T2JqZWN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGMjVCMjAwMjIwQTg1QUIwMDAwMDExQiAvKiBJbmxpbmVMaW5lQnVpbGRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVMaW5lQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMjczMyw2ICsyMjczNyw3IEBACiAJCQkJNkZCN0QyRDUyNTBG
RDdCNTAwMDIwN0FBIC8qIGZsZXggKi8sCiAJCQkJMTE1Q0ZBOUEyMDhCQzE0MDAwMUU2OTkxIC8q
IGlubGluZSAqLywKIAkJCQk2RkM1Q0E5MTIyRTM1OTMzMDBCMTNFMTEgLyogdGFibGUgKi8sCisJ
CQkJNkYxRTgzQTUyNjY1ODg4QzAwMkU5RDI4IC8qIEZvcm1hdHRpbmdDb25zdHJhaW50cy5oICov
LAogCQkJCTExNUNGQTY5MjA4QUY3RDAwMDFFNjk5MSAvKiBGb3JtYXR0aW5nQ29udGV4dC5jcHAg
Ki8sCiAJCQkJMTE1Q0ZBNjgyMDhBRjdEMDAwMUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0Lmgg
Ki8sCiAJCQkJNkZCQjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdHZW9tZXRyeS5j
cHAgKi8sCkBAIC0yMjc3MCw2ICsyMjc3NSw3IEBACiAJCTZGQzVDQTkxMjJFMzU5MzMwMEIxM0Ux
MSAvKiB0YWJsZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNkYxRTgzQTAyNjY1ODg0QzAwMkU5RDI4IC8qIFRhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRz
LmggKi8sCiAJCQkJNkZDNUNBOTQyMkUzNTk5NDAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuY3BwICovLAogCQkJCTZGQzVDQTk1MjJFMzU5OTQwMEIxM0UxMSAvKiBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmggKi8sCiAJCQkJMTFEMTlDMkUyMzE1OUJBRTAwOEYyNEQzIC8qIFRhYmxl
Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAqLywKQEAgLTMyNzI4LDYgKzMyNzM0LDcgQEAKIAkJCQk0
QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEMDVDRUQyQTBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U2Q0JGQjE4N0YzNzA3MDBENDZCRjUgLyogRm9y
bWF0Q29udmVydGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RjFFODNBNjI2NjU4ODhDMDAyRTlE
MjggLyogRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE2
QTIwOEFGN0QwMDAxRTY5OTEgLyogRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ3NUM4OUE0MjY1MEFDM0MwMEYzQjQ1NiAvKiBGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTZGNTZCNDQ3MjY0NzlFNjIwMEFBRTI1NyAvKiBGb3JtYXR0aW5nUXVp
cmtzLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NjQ4LDYgKzM1NjU1LDcgQEAKIAkJCQlFM0MwNDEz
ODI1NENCMzBEMDAyMUQwRTYgLyogU3lzdGVtU291bmREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTNDMDQxMkYyNTRDQTI5QjAwMjFEMEU2IC8qIFN5c3RlbVNvdW5kTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTZGMUU4M0EyMjY2NTg4NEMwMDJFOUQyOCAvKiBUYWJs
ZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDdGQTk3MDAyNjUw
OTgyQjAwODQxNDE2IC8qIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RjQ5QzNFNzI2NDc5QjNDMDA1MTk1M0QgLyogVGFibGVGb3JtYXR0aW5nUXVpcmtzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlv
dXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3Bw
CmluZGV4IGI5MGExN2Y2ODNkNTY3YzFlYWQxMDA1NzU4YzE0NjViNzUyNDEwYmYuLjc5YjllY2Q2
ODI3NGMwMGM0NTFhMGJlMGIzOGVkNjJhMzkxNjU1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0Q29udGV4dC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIExheW91dENvbnRleHQ6
OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1h
dHRpbgogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5nZW9tZXRyeUZvckJv
eChmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9v
dC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICBhdXRvIGNvbnN0cmFpbnRz
Rm9ySW5GbG93Q29udGVudCA9IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7IHsgYm94R2Vv
bWV0cnkuY29udGVudEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkgfSwg
eyBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIHsgfSB9IH07CisgICAgICAgIGF1dG8gY29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsg
eyBib3hHZW9tZXRyeS5jb250ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lk
dGgoKSB9LCBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCkgfTsKICAgICAgICAgZm9ybWF0dGlu
Z0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0
cy5oCmluZGV4IGY5MGJjZjAwODNkOWNiMjEyOTIwMWFjNmQ5MGZkYzg3MTY1YjdjMmEuLmY1YmVh
MGNkMjljZjUzNTE4Zjc4YzdkNWJiYjljZGM5YmIyZTZkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRVbml0cy5oCkBAIC0xNTcsNDEgKzE1Nyw2IEBAIHN0cnVjdCBWZXJ0aWNhbEdlb21ldHJ5
IHsKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW47CiB9
OwogCi1zdHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsKLSAgICBMYXlvdXRVbml0IGxvZ2lj
YWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxMZWZ0ICsgbG9naWNhbFdpZHRoOyB9Ci0K
LSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0OwotICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRo
OwotfTsKLQotc3RydWN0IFZlcnRpY2FsQ29uc3RyYWludHMgewotICAgIExheW91dFVuaXQgbG9n
aWNhbFRvcDsKLSAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQ7Ci19
OwotCi1zdHJ1Y3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsKLSAgICBIb3Jpem9udGFs
Q29uc3RyYWludHMgaG9yaXpvbnRhbDsKLSAgICBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2Fs
OwotfTsKLQotc3RydWN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCB7Ci0gICAgSG9y
aXpvbnRhbENvbnN0cmFpbnRzIGhvcml6b250YWw7Ci0gICAgVmVydGljYWxDb25zdHJhaW50cyB2
ZXJ0aWNhbDsKLSAgICAvLyBCb3JkZXJzIGFuZCBwYWRkaW5nIGFyZSByZXNvbHZlZCBhZ2FpbnN0
IHRoZSBjb250YWluaW5nIGJsb2NrJ3MgY29udGVudCBib3ggYXMgaWYgdGhlIGJveCB3YXMgYW4g
aW4tZmxvdyBib3guCi0gICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nQ29uc3RyYWludHM7
Ci19OwotCi1zdHJ1Y3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7Ci0gICAgdm9pZCBleHBh
bmQoTGF5b3V0VW5pdCBob3Jpem9udGFsVmFsdWUpOwotICAgIEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMmIG9wZXJhdG9yKz0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYpOwotICAg
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIG9wZXJhdG9yKz0oTGF5b3V0VW5pdCk7Ci0gICAg
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3BlcmF0b3ItPShjb25zdCBJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzJik7Ci0gICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3BlcmF0b3It
PShMYXlvdXRVbml0KTsKLQotICAgIExheW91dFVuaXQgbWluaW11bTsKLSAgICBMYXlvdXRVbml0
IG1heGltdW07Ci19OwotCiBzdHJ1Y3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMgewogICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGg7CiAgICAgc3RkOjpvcHRpb25hbDxVc2Vk
SG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2luOwpAQCAtMjMxLDM4ICsxOTYsNiBAQCBpbmxpbmUgSW5s
aW5lTGF5b3V0VW5pdCBtYXhJbmxpbmVMYXlvdXRVbml0KCkKICNlbmRpZgogfQogCi1pbmxpbmUg
dm9pZCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpleHBhbmQoTGF5b3V0VW5pdCBob3Jpem9u
dGFsVmFsdWUpCi17Ci0gICAgbWluaW11bSArPSBob3Jpem9udGFsVmFsdWU7Ci0gICAgbWF4aW11
bSArPSBob3Jpem9udGFsVmFsdWU7Ci19Ci0KLWlubGluZSBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzJiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvcis9KGNvbnN0IEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMmIG90aGVyKQotewotICAgIG1pbmltdW0gKz0gb3RoZXIubWluaW11
bTsKLSAgICBtYXhpbXVtICs9IG90aGVyLm1heGltdW07Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci1pbmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2ljV2lkdGhDb25zdHJh
aW50czo6b3BlcmF0b3IrPShMYXlvdXRVbml0IHZhbHVlKQotewotICAgIGV4cGFuZCh2YWx1ZSk7
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyYgSW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3ItPShjb25zdCBJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzJiBvdGhlcikKLXsKLSAgICBtaW5pbXVtIC09IG90aGVyLm1pbmltdW07
Ci0gICAgbWF4aW11bSAtPSBvdGhlci5tYXhpbXVtOwotICAgIHJldHVybiAqdGhpczsKLX0KLQot
aW5saW5lIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHM6Om9wZXJhdG9yLT0oTGF5b3V0VW5pdCB2YWx1ZSkKLXsKLSAgICBleHBhbmQoLXZhbHVlKTsK
LSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIHN0cnVjdCBTbG90UG9zaXRpb24gewogICAgIFNsb3RQ
b3NpdGlvbigpID0gZGVmYXVsdDsKICAgICBTbG90UG9zaXRpb24oc2l6ZV90IGNvbHVtbiwgc2l6
ZV90IHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL0Zvcm1hdHRpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29uc3RyYWludHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDk3
MDhhMjhmNjkzN2RkMDkyNTIxMTRiZTY0MjA1NjM5NTJkMmUxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29uc3Ry
YWludHMuaApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJMYXlvdXRV
bml0LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgTGF5b3V0IHsKKworc3RydWN0IEhvcml6b250YWxDb25zdHJhaW50cyB7Cisg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCAr
IGxvZ2ljYWxXaWR0aDsgfQorCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdDsKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxXaWR0aDsKK307CisKK3N0cnVjdCBWZXJ0aWNhbENvbnN0cmFpbnRzIHsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3A7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
OworfTsKKworc3RydWN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7CisgICAgQ29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50KEhvcml6b250YWxDb25zdHJhaW50cywgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wKTsKKworICAgIEhvcml6b250YWxDb25zdHJhaW50cyBob3Jpem9udGFsKCkgY29u
c3QgeyByZXR1cm4gbV9ob3Jpem9udGFsOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dpY2FsVG9wOyB9CisKKyAgICBlbnVtIEJhc2VUeXBlRmxhZyA6
IHVpbnQ4X3QgeworICAgICAgICBHZW5lcmljQ29udGVudCA9IDEgPDwgMCwKKyAgICAgICAgVGFi
bGVDb250ZW50ICAgPSAxIDw8IDEKKyAgICB9OworICAgIGJvb2wgaXNDb25zdHJhaW50c0ZvclRh
YmxlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VUeXBlRmxhZ3MoKS5jb250YWlucyhUYWJs
ZUNvbnRlbnQpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQoSG9yaXpvbnRhbENvbnN0cmFpbnRzLCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIE9wdGlvblNl
dDxCYXNlVHlwZUZsYWc+KTsKKworcHJpdmF0ZToKKyAgICBPcHRpb25TZXQ8QmFzZVR5cGVGbGFn
PiBiYXNlVHlwZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz46
OmZyb21SYXcobV9iYXNlVHlwZUZsYWdzKTsgfQorCisgICAgdW5zaWduZWQgbV9iYXNlVHlwZUZs
YWdzIDogMjsgLy8gT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4KKyAgICBIb3Jpem9udGFsQ29uc3Ry
YWludHMgbV9ob3Jpem9udGFsOworICAgIExheW91dFVuaXQgbV9sb2dpY2FsVG9wOworfTsKKwor
c3RydWN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCB7CisgICAgSG9yaXpvbnRhbENv
bnN0cmFpbnRzIGhvcml6b250YWw7CisgICAgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNhbDsK
KyAgICAvLyBCb3JkZXJzIGFuZCBwYWRkaW5nIGFyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSBjb250
YWluaW5nIGJsb2NrJ3MgY29udGVudCBib3ggYXMgaWYgdGhlIGJveCB3YXMgYW4gaW4tZmxvdyBi
b3guCisgICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nQ29uc3RyYWludHM7Cit9OworCitp
bmxpbmUgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50OjpDb25zdHJhaW50c0ZvckluRmxvd0Nv
bnRlbnQoSG9yaXpvbnRhbENvbnN0cmFpbnRzIGhvcml6b250YWwsIExheW91dFVuaXQgbG9naWNh
bFRvcCwgT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4gYmFzZVR5cGVGbGFncykKKyAgICA6IG1fYmFz
ZVR5cGVGbGFncyhiYXNlVHlwZUZsYWdzLnRvUmF3KCkpCisgICAgLCBtX2hvcml6b250YWwoaG9y
aXpvbnRhbCkKKyAgICAsIG1fbG9naWNhbFRvcChsb2dpY2FsVG9wKQoreworfQorCitpbmxpbmUg
Q29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50OjpDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQo
SG9yaXpvbnRhbENvbnN0cmFpbnRzIGhvcml6b250YWwsIExheW91dFVuaXQgbG9naWNhbFRvcCkK
KyAgICA6IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChob3Jpem9udGFsLCBsb2dpY2FsVG9w
LCBHZW5lcmljQ29udGVudCkKK3sKK30KKworc3RydWN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgeworICAgIHZvaWQgZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRhbFZhbHVlKTsKKyAgICBJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvcis9KGNvbnN0IEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMmKTsKKyAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvcis9
KExheW91dFVuaXQpOworICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIG9wZXJhdG9yLT0o
Y29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYpOworICAgIEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMmIG9wZXJhdG9yLT0oTGF5b3V0VW5pdCk7CisKKyAgICBMYXlvdXRVbml0IG1pbmlt
dW07CisgICAgTGF5b3V0VW5pdCBtYXhpbXVtOworfTsKKworaW5saW5lIHZvaWQgSW50cmluc2lj
V2lkdGhDb25zdHJhaW50czo6ZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRhbFZhbHVlKQorewor
ICAgIG1pbmltdW0gKz0gaG9yaXpvbnRhbFZhbHVlOworICAgIG1heGltdW0gKz0gaG9yaXpvbnRh
bFZhbHVlOworfQorCitpbmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2lj
V2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3IrPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzJiBvdGhlcikKK3sKKyAgICBtaW5pbXVtICs9IG90aGVyLm1pbmltdW07CisgICAgbWF4aW11
bSArPSBvdGhlci5tYXhpbXVtOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9y
Kz0oTGF5b3V0VW5pdCB2YWx1ZSkKK3sKKyAgICBleHBhbmQodmFsdWUpOworICAgIHJldHVybiAq
dGhpczsKK30KKworaW5saW5lIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yLT0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyYgb3RoZXIpCit7CisgICAgbWluaW11bSAtPSBvdGhlci5taW5pbXVtOworICAgIG1heGltdW0g
LT0gb3RoZXIubWF4aW11bTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzJiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvci09
KExheW91dFVuaXQgdmFsdWUpCit7CisgICAgZXhwYW5kKC12YWx1ZSk7CisgICAgcmV0dXJuICp0
aGlzOworfQorCit9Cit9CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19MQVlPVVRf
Rk9STUFUVElOR19DT05TVFJBSU5UUyhUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpMYXlvdXQ6OlRvVmFsdWVUeXBlTmFt
ZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpMYXlvdXQ6OkNvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpIHsgcmV0dXJuIGNvbnN0cmFpbnRz
LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3Jt
YXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAyNDgxMDFhMDA5ZDcyNTYxY2RlOTA5YjI2
OWZmZjdiNmZlM2RiODhhLi5mYTNjZjQ3N2MzODgzZGJmNWVjMGZmNThiOTQ3ZGMzN2MyOWNhNjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQg
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjCiAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5v
dXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRh
bCwgY29uc3RyYWludHMudmVydGljYWwsIHsgdXNlZEhlaWdodCB9KTsKICAgICB9OwogCi0gICAg
YXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSAqY29uc3RyYWludHMudmVydGljYWwubG9naWNh
bEhlaWdodDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnN0cmFpbnRzLnZl
cnRpY2FsLmxvZ2ljYWxIZWlnaHQ7CiAgICAgYXV0byB2ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0
ZSh7IH0pOwogICAgIGlmIChhdXRvIG1heEhlaWdodCA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNv
bXB1dGVkTWF4SGVpZ2h0KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KSkgewogICAg
ICAgICBhdXRvIG1heFZlcnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKG1heEhlaWdodCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYzY2YWY1MzdiYjkzYzRjMmJjYWM0NTM5NzI5ZTA3ZTdl
YzE1ZmE3NC4uZTk0OTY5YTljMmY2YzdmNjA1OWZiMzE4ZjM0YzFlNWY2ZmYxYzU3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
Rm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJGb3JtYXR0aW5nQ29uc3RyYWludHMu
aCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRVbml0
LmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdHMuaCIKQEAgLTQyLDkgKzQzLDEzIEBAIG5hbWVzcGFj
ZSBMYXlvdXQgewogCiBjbGFzcyBCb3hHZW9tZXRyeTsKIGNsYXNzIENvbnRhaW5lckJveDsKK3N0
cnVjdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQ7CitzdHJ1Y3QgQ29uc3RyYWludHNGb3JP
dXRPZkZsb3dDb250ZW50Oworc3RydWN0IEhvcml6b250YWxDb25zdHJhaW50czsKIGNsYXNzIEZv
cm1hdHRpbmdHZW9tZXRyeTsKIGNsYXNzIEZvcm1hdHRpbmdTdGF0ZTsKIGNsYXNzIEZvcm1hdHRp
bmdRdWlya3M7CitzdHJ1Y3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50czsKIGNsYXNzIEludmFs
aWRhdGlvblN0YXRlOwogY2xhc3MgTGF5b3V0U3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21l
dHJ5LmNwcAppbmRleCBmMjllMjE4YmZkNGU4NTNlMzg4YTM1MjNjM2RmOGM3NTA2ZmFjMjM1Li40
YjhlZDJjZjRkZjUxOTRmNWM5MDEyMDc4YzU0NmM0NWEyY2Y2YjVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nR2VvbWV0cnkuY3BwCkBAIC0zMjQsNyArMzI0LDYgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5n
R2VvbWV0cnk6OnNocmlua1RvRml0V2lkdGgoY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QKIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBs
YWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQ29udGFpbmVyQm94JiBsYXlvdXRCb3gsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0
aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVy
dGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NF
UlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guaXNSZXBs
YWNlZEJveCgpKTsKLSAgICBBU1NFUlQodmVydGljYWxDb25zdHJhaW50cy5sb2dpY2FsSGVpZ2h0
KTsKIAogICAgIC8vIDEwLjYuNCBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIG5vbi1yZXBsYWNlZCBl
bGVtZW50cwogICAgIC8vCkBAIC0zNTMsNyArMzUyLDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3Jt
YXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25z
dAogICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQo
KTsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8mIGJveEdl
b21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2lj
YWxIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSB2ZXJ0aWNhbENvbnN0
cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGhv
cml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1
dGVkVmFsdWUoc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC01
ODYsNyArNTg1LDYgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0
T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY28KIFZlcnRpY2FsR2VvbWV0cnkg
Rm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29u
c3QgUmVwbGFjZWRCb3gmIHJlcGxhY2VkQm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
IGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGlj
YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZGVu
VmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlcGxhY2VkQm94LmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpKTsKLSAgICBBU1NFUlQodmVydGljYWxDb25zdHJhaW50cy5sb2dpY2Fs
SGVpZ2h0KTsKIAogICAgIC8vIDEwLjYuNSBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJlcGxhY2Vk
IGVsZW1lbnRzCiAgICAgLy8KQEAgLTYwMSw3ICs1OTksNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZv
cm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0
IFJlcAogICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRl
eHQoKTsKICAgICBhdXRvJiBzdHlsZSA9IHJlcGxhY2VkQm94LnN0eWxlKCk7CiAgICAgYXV0byYg
Ym94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChyZXBsYWNlZEJv
eCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSAqdmVydGljYWxDb25zdHJhaW50
cy5sb2dpY2FsSGVpZ2h0OworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gdmVydGlj
YWxDb25zdHJhaW50cy5sb2dpY2FsSGVpZ2h0OwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoOwogCiAgICAgYXV0byB0b3Ag
PSBjb21wdXRlZFZhbHVlKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
OwpAQCAtOTIxLDcgKzkxOSw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRIZWlnaHRBbmRNYXJnaW4oCiAgICAgYXV0byB1
c2VkVmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVl
cyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAgYXV0byYgc3R5bGUgPSByZXBs
YWNlZEJveC5zdHlsZSgpOwogCi0gICAgYXV0byBoZWlnaHQgPSBvdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDog
Y29tcHV0ZWRIZWlnaHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyB2ZXJ0aWNh
bENvbnN0cmFpbnRzLT5sb2dpY2FsSGVpZ2h0IDogc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIGhl
aWdodCA9IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVycmlkZGVuVmVydGlj
YWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVy
dGljYWxDb25zdHJhaW50cyA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4odmVydGljYWxDb25z
dHJhaW50cy0+bG9naWNhbEhlaWdodCkgOiBzdGQ6Om51bGxvcHQpOwogICAgIGF1dG8gaGVpZ2h0
SXNBdXRvID0gIW92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQgJiYgaXNIZWlnaHRBdXRv
KHJlcGxhY2VkQm94KTsKICAgICBhdXRvIHdpZHRoSXNBdXRvID0gc3R5bGUubG9naWNhbFdpZHRo
KCkuaXNBdXRvKCk7CiAKQEAgLTk4Myw3ICs5ODEsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4g
Rm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihj
bwogCiAgICAgYXV0byB3aWR0aCA9IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoID8g
b3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRlZFdpZHRoKHJlcGxhY2Vk
Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICBhdXRvIGhlaWdo
dElzQXV0byA9IGlzSGVpZ2h0QXV0byhyZXBsYWNlZEJveCk7Ci0gICAgYXV0byBoZWlnaHQgPSBj
b21wdXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2Fs
Q29uc3RyYWludHMtPmxvZ2ljYWxIZWlnaHQgOiBzdGQ6Om51bGxvcHQpOworICAgIGF1dG8gaGVp
Z2h0ID0gY29tcHV0ZWRIZWlnaHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KHZlcnRpY2FsQ29uc3RyYWludHMtPmxvZ2ljYWxIZWln
aHQpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIGlmICghd2lkdGggJiYgaGVpZ2h0SXNBdXRvICYm
IHJlcGxhY2VkQm94Lmhhc0ludHJpbnNpY1dpZHRoKCkpIHsKICAgICAgICAgLy8gIzEKQEAgLTEx
NjgsNyArMTE2Niw3IEBAIENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5n
R2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVuCiBDb25zdHJhaW50c0Zvcklu
Rmxvd0NvbnRlbnQgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQoY29uc3QgQ29udGFpbmVyQm94JiBjb250YWluZXJCb3gsIHN0ZDo6b3B0aW9uYWw8Rm9ybWF0
dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gZXNjYXBlUmVhc29uKSBjb25zdAogewogICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChjb250
YWluZXJCb3gsIGVzY2FwZVJlYXNvbik7Ci0gICAgcmV0dXJuIHsgeyBib3hHZW9tZXRyeS5jb250
ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSB9LCB7IGJveEdlb21l
dHJ5LmNvbnRlbnRCb3hUb3AoKSwgY29tcHV0ZWRIZWlnaHQoY29udGFpbmVyQm94KSB9IH07Cisg
ICAgcmV0dXJuIHsgeyBib3hHZW9tZXRyeS5jb250ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5j
b250ZW50Qm94V2lkdGgoKSB9LCBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCkgfTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggMDQ5NDgxMzE1N2Y1Mzc2NDRkN2EwZDE5
MDJkYTYxNTczZjNjNjM2Yy4uNDk2OTRiZjY4Mzk4NTQ2NWZiNTljYjc0OTdkYjVkMWFhZjkzYTMz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC01OCw3ICs1OCw3IEBAIExheW91dFVu
aXQgRm9ybWF0dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tX
aXRoRml4ZWRIZWlnaHQoCiAgICAgICAgIC8vIC1hbmQgaXQncyB0b3RhbGx5IGluc2FuZSBiZWNh
dXNlIG5vdyB3ZSBmcmVlbHkgdHJhdmVsIGFjcm9zcyBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRh
cmllcyBhbmQgY29tcHV0ZWQgbWFyZ2lucyBhcmUgbm9uZXhpc3RlbnQuCiAgICAgICAgIGlmIChj
b250YWluaW5nQmxvY2stPmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNEb2N1bWVu
dEJveCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICAgICAgICAgIGF1dG8gaG9yaXpv
bnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudChjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpLCBGb3JtYXR0aW5nQ29u
dGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKS5ob3Jpem9u
dGFsOworICAgICAgICAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBmb3JtYXR0aW5n
R2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnRhaW5pbmdCbG9jay0+Y29u
dGFpbmluZ0Jsb2NrKCksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhl
ZEhlaWdodEFuY2VzdG9yUXVpcmspLmhvcml6b250YWwoKTsKICAgICAgICAgICAgIGF1dG8gdmVy
dGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbigq
Y29udGFpbmluZ0Jsb2NrLCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAgICAgICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpjb250
YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhl
aWdodEFuY2VzdG9yUXVpcmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggZjgyMjgwNGUxMDdmYzliYWMxMDIyYTdmYWUwZWNkM2NkMzRjMjhm
MC4uNjg4MTIyNjBiODk3NTcwYmJmNjFkNmQ1MDhkZmExOTVkZGUyODVjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMTYsMTAgKzExNiwx
MCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52
YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvbgogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94
ID0gKmxheW91dFF1ZXVlLmxhc3QoKTsKICAgICAgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
Q29uc3RyYWludHMgPSBjb25zdHJhaW50c0ZvckxheW91dEJveChsYXlvdXRCb3gpOwogCi0gICAg
ICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9j
a0NvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAgICAgY29tcHV0ZVN0YXRpY1ZlcnRp
Y2FsUG9zaXRpb24obGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tDb25zdHJhaW50cy52ZXJ0aWNh
bCk7CisgICAgICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gsIGNvbnRh
aW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CisgICAgICAgICAgICBjb21wdXRl
U3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFp
bnRzLmxvZ2ljYWxUb3AoKSk7CiAgICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oZmxv
YXRpbmdDb250ZXh0LCBsYXlvdXRCb3gsIHsgY29uc3RyYWludHMsIGNvbnRhaW5pbmdCbG9ja0Nv
bnN0cmFpbnRzIH0pOwotICAgICAgICAgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlv
bihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAg
ICAgICAgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gsIGNvbnRh
aW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAgICAgICAgICAgICBjb21wdXRl
UG9zaXRpb25Ub0F2b2lkRmxvYXRzKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94LCB7IGNvbnN0
cmFpbnRzLCBjb250YWluaW5nQmxvY2tDb25zdHJhaW50cyB9KTsKIAogICAgICAgICAgICAgaWYg
KGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQo
SW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvbgogICAgICAgICAgICAgICAgICAgICAvLyBM
YXlvdXQgdGhlIGluZmxvdyBkZXNjZW5kYW50cyBvZiB0aGlzIGZvcm1hdHRpbmcgY29udGV4dCBy
b290LgogICAgICAgICAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0
Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29udGFpbmVyQm94LCBsYXlvdXRTdGF0
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJveC5pc1RhYmxlV3JhcHBl
ckJveCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8VGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dD4oKmZvcm1hdHRpbmdDb250ZXh0KS5zZXRIb3Jpem9udGFsQ29u
c3RyYWludHNJZ25vcmluZ0Zsb2F0cyhjb250YWluaW5nQmxvY2tDb25zdHJhaW50cy5ob3Jpem9u
dGFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFRhYmxlV3JhcHBlckJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ+KCpmb3JtYXR0aW5nQ29udGV4dCkuc2V0SG9yaXpvbnRhbENvbnN0
cmFpbnRzSWdub3JpbmdGbG9hdHMoY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMuaG9yaXpvbnRh
bCgpKTsKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxv
d0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudChjb250YWluZXJCb3gpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZh
bGlkYXRpb24KICAgICAgICAgICAgICAgICBpZiAoIWxheW91dEJveC5pc0Zsb2F0QXZvaWRlcigp
IHx8IGZsb2F0aW5nQ29udGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0
byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5
KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxU
b3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4obGF5b3V0Qm94LCBmb3JtYXR0aW5nU3RhdGUu
dXNlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCksIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRz
LnZlcnRpY2FsKSk7CisgICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxU
b3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4obGF5b3V0Qm94LCBmb3JtYXR0aW5nU3RhdGUu
dXNlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCksIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRz
LmxvZ2ljYWxUb3AoKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGF1dG8gZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCA9IGxheW91dEJveC5lc3Rh
Ymxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCk7IApAQCAtMTY4LDE0ICsxNjgsMTQgQEAgdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0
YXRlJiBpbnZhbGlkYXRpb24KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoIWVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQgJiYgaXM8Q29udGFpbmVy
Qm94PihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIHBsYWNlSW5GbG93UG9zaXRpb25lZENo
aWxkcmVuKGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSwgY29udGFpbmluZ0Jsb2Nr
Q29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAgICAgICAgICAgICAgcGxhY2VJbkZsb3dQb3Np
dGlvbmVkQ2hpbGRyZW4oZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLCBjb250YWlu
aW5nQmxvY2tDb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwogCiAgICAgICAgICAgICBpZiAoYXBw
ZW5kTmV4dFRvTGF5b3V0UXVldWUobGF5b3V0Qm94LCBMYXlvdXREaXJlY3Rpb246OlNpYmxpbmcp
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIC8vIFBsYWNl
IHRoZSBpbmZsb3cgcG9zaXRpb25lZCBjaGlsZHJlbi4KLSAgICBwbGFjZUluRmxvd1Bvc2l0aW9u
ZWRDaGlsZHJlbihmb3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAg
cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKSk7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIltFbmRdIC0+IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3Jt
YXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKQEAgLTI0NywxMSArMjQ3LDEx
IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNl
ZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pCiAgICAgaWYgKCFjb25zdHJhaW50cy5sZWZ0ICYm
ICFjb25zdHJhaW50cy5yaWdodCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBTaHJpbmsg
dGhlIGF2YWlsYWJsZSBzcGFjZSBpZiB0aGUgZmxvYXRzIGFyZSBhY3R1YWxseSBpbnRydWRpbmcg
YXQgdGhpcyB2ZXJ0aWNhbCBwb3NpdGlvbi4KLSAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0gY29u
c3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsLmxvZ2ljYWxXaWR0aDsKKyAg
ICBhdXRvIGF2YWlsYWJsZVdpZHRoID0gY29uc3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5o
b3Jpem9udGFsKCkubG9naWNhbFdpZHRoOwogICAgIGlmIChjb25zdHJhaW50cy5sZWZ0KQogICAg
ICAgICBhdmFpbGFibGVXaWR0aCAtPSBjb25zdHJhaW50cy5sZWZ0LT54OwogICAgIGlmIChjb25z
dHJhaW50cy5yaWdodCkKLSAgICAgICAgYXZhaWxhYmxlV2lkdGggLT0gc3RkOjptYXgoMF9sdSwg
Y29uc3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsLmxvZ2ljYWxSaWdodCgp
IC0gY29uc3RyYWludHMucmlnaHQtPngpOworICAgICAgICBhdmFpbGFibGVXaWR0aCAtPSBzdGQ6
Om1heCgwX2x1LCBjb25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwoKS5s
b2dpY2FsUmlnaHQoKSAtIGNvbnN0cmFpbnRzLnJpZ2h0LT54KTsKICAgICByZXR1cm4gYXZhaWxh
YmxlV2lkdGg7CiB9CiAKQEAgLTI2Nyw5ICsyNjcsOSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IENvbnRhaW5lckJveCYg
YwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJFbmQ6IG1vdmUgaW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuIC0+IHBhcmVudDogIiA8PCAm
Y29udGFpbmVyQm94KTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
U3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVmVydGlj
YWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykKK3ZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRC
b3gsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCkKIHsKLSAgICBmb3Jt
YXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpLnNldExvZ2ljYWxUb3AoZm9ybWF0
dGluZ0dlb21ldHJ5KCkuc3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIHZlcnRpY2Fs
Q29uc3RyYWludHMpKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRC
b3gpLnNldExvZ2ljYWxUb3AoZm9ybWF0dGluZ0dlb21ldHJ5KCkuc3RhdGljVmVydGljYWxQb3Np
dGlvbihsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3ApKTsKIH0KIAogdm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0aW9u
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6
b250YWxDb25zdHJhaW50cykKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OnByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKGNv
bnN0CiAgICAgICAgICAgICByZXR1cm4gJmNvbnRhaW5pbmdCbG9jayA9PSAmcm9vdCgpID8gY29u
c3RyYWludHNQYWlyLmZvcm1hdHRpbmdDb250ZXh0Um9vdCA6IGZvcm1hdHRpbmdHZW9tZXRyeS5j
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29udGFpbmluZ0Jsb2NrKTsKICAgICAgICAgfSgp
OwogCi0gICAgICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9t
ZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFyZ2luKCphbmNlc3RvciwgY29uc3RyYWludHNGb3JBbmNl
c3Rvci5ob3Jpem9udGFsKTsKKyAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0g
Zm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oKmFuY2VzdG9yLCBjb25z
dHJhaW50c0ZvckFuY2VzdG9yLmhvcml6b250YWwoKSk7CiAgICAgICAgIGF1dG8gdXNlZE5vbkNv
bGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsg
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICAgICAgYXV0byBwcmVjb21wdXRlZE1h
cmdpbkJlZm9yZSA9IG1hcmdpbkNvbGxhcHNlKCkucHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoKmFu
Y2VzdG9yLCB1c2VkTm9uQ29sbGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5nR2VvbWV0cnkpOwogCkBA
IC0zMDcsNyArMzA3LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpwcmVjb21wdXRl
VmVydGljYWxQb3NpdGlvbkZvckJveEFuZEFuY2VzdG9ycyhjb25zdAogCiAgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZSgpLnNldFVzZWRWZXJ0aWNhbE1hcmdpbigqYW5jZXN0b3IsIHZlcnRpY2FsTWFy
Z2luKTsKICAgICAgICAgYm94R2VvbWV0cnkuc2V0VmVydGljYWxNYXJnaW4oeyBtYXJnaW5CZWZv
cmUodmVydGljYWxNYXJnaW4pLCBtYXJnaW5BZnRlcih2ZXJ0aWNhbE1hcmdpbikgfSk7Ci0gICAg
ICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4o
KmFuY2VzdG9yLCB2ZXJ0aWNhbE1hcmdpbiwgY29uc3RyYWludHNGb3JBbmNlc3Rvci52ZXJ0aWNh
bCkpOworICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wKHZlcnRpY2FsUG9zaXRpb25X
aXRoTWFyZ2luKCphbmNlc3RvciwgdmVydGljYWxNYXJnaW4sIGNvbnN0cmFpbnRzRm9yQW5jZXN0
b3IubG9naWNhbFRvcCgpKSk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgc2V0UHJlY29t
cHV0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yLCBwcmVjb21wdXRlZE1hcmdpbkJlZm9yZSk7CiAg
ICAgICAgIGJveEdlb21ldHJ5LnNldEhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCk7CkBAIC0z
MjUsNyArMzI1LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRp
b25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYKICAgICAvLyBIb3dldmVyIGFj
Y29yZGluZyB0byB0aGUgQkZDIHJ1bGVzLCBhdCB0aGlzIHBvaW50IG9mIHRoZSBsYXlvdXQgZmxv
dyB3ZSBkb24ndCB5ZXQgaGF2ZSBjb21wdXRlZCB2ZXJ0aWNhbCBwb3NpdGlvbnMgZm9yIHRoZSBh
bmNlc3RvcnMuCiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKSB7CiAg
ICAgICAgIHByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKGxheW91
dEJveCwgY29uc3RyYWludHNQYWlyKTsKLSAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuYm94R2Vv
bWV0cnkobGF5b3V0Qm94KS5zZXRMb2dpY2FsVG9wTGVmdChmbG9hdGluZ0NvbnRleHQucG9zaXRp
b25Gb3JGbG9hdChsYXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFpci5jb250YWluaW5nQmxvY2suaG9y
aXpvbnRhbCkpOworICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRC
b3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvckZsb2F0KGxh
eW91dEJveCwgY29uc3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBOb24tZmxvYXQgcG9zaXRpb25lZCBmbG9h
dCBhdm9pZGVycyAoZm9ybWF0dGluZyBjb250ZXh0IHJvb3RzIGFuZCBjbGVhciBib3hlcykgc2hv
dWxkIGJlIGZpbmUgdW5sZXNzIHRoZXJlIGFyZSBmbG9hdHMgaW4gdGhpcyBjb250ZXh0LgpAQCAt
MzM2LDcgKzMzNiw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0
aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiAgICAgICAgIHJldHVybiBj
b21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoZmxvYXRpbmdDb250ZXh0LCBsYXlv
dXRCb3gpOwogCiAgICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250
ZXh0KCkpOwotICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCkuc2V0
TG9naWNhbFRvcExlZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yTm9uRmxvYXRpbmdGbG9h
dEF2b2lkZXIobGF5b3V0Qm94LCBjb25zdHJhaW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6
b250YWwpKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpLnNl
dExvZ2ljYWxUb3BMZWZ0KGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvck5vbkZsb2F0aW5nRmxv
YXRBdm9pZGVyKGxheW91dEJveCwgY29uc3RyYWludHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jp
em9udGFsKCkpKTsKIH0KIAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVy
dGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGlu
Z0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEZsb2F0
aW5nQ29udGV4dCYgZmxvYXRpCiAgICAgICAgIC8vIEZsb2F0IGF2b2lkZXJzJyBhdmFpbGFibGUg
d2lkdGggbWlnaHQgYmUgc2hydW5rIGJ5IGV4aXN0aW5nIGZsb2F0cyBpbiB0aGUgY29udGV4dC4K
ICAgICAgICAgYXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIgPSB1c2VkQXZhaWxhYmxlV2lkdGhG
b3JGbG9hdEF2b2lkZXIoZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFp
cik7CiAgICAgfQotICAgIGF1dG8gY29udGVudFdpZHRoQW5kTWFyZ2luID0gZm9ybWF0dGluZ0dl
b21ldHJ5KCkuY29tcHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJh
aW50c1BhaXIuY29udGFpbmluZ0Jsb2NrLmhvcml6b250YWwsIGF2YWlsYWJsZVdpZHRoRmxvYXRB
dm9pZGVyKTsKKyAgICBhdXRvIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9t
ZXRyeSgpLmNvbXB1dGVkQ29udGVudFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgY29uc3RyYWlu
dHNQYWlyLmNvbnRhaW5pbmdCbG9jay5ob3Jpem9udGFsKCksIGF2YWlsYWJsZVdpZHRoRmxvYXRB
dm9pZGVyKTsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdl
b21ldHJ5KGxheW91dEJveCk7CiAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGNv
bnRlbnRXaWR0aEFuZE1hcmdpbi5jb250ZW50V2lkdGgpOwogICAgIGJveEdlb21ldHJ5LnNldEhv
cml6b250YWxNYXJnaW4oeyBjb250ZW50V2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbi5zdGFydCwg
Y29udGVudFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uZW5kIH0pOwpAQCAtMzczLDEwICszNzMs
MTAgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdAogewogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQpIC0+IENvbnRlbnRIZWlnaHRBbmRN
YXJnaW4gewogICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5GbG93KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5GbG93Q29udGVudEhlaWdodEFuZE1hcmdpbihs
YXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwsIHsgdXNlZEhlaWdodCB9KTsKKyAgICAg
ICAgICAgIHJldHVybiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0QW5k
TWFyZ2luKGxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCB7IHVzZWRIZWlnaHQg
fSk7CiAKICAgICAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmZsb2F0aW5nQ29udGVudEhlaWdo
dEFuZE1hcmdpbihsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwsIHsgdXNlZEhlaWdo
dCB9KTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5mbG9hdGluZ0Nv
bnRlbnRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCks
IHsgdXNlZEhlaWdodCB9KTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTUwMyw3ICs1MDMsNyBAQCBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJh
aQogICAgIHJldHVybiBjb25zdHJhaW50czsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiB2ZXJ0aWNhbE1hcmdpbiwgIGNvbnN0IFZlcnRp
Y2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpIGNvbnN0CitMYXlvdXRVbml0IEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHZlcnRpY2FsTWFyZ2luLCBM
YXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3ApIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAgIC8vIE5vdyB0aGF0
IHdlJ3ZlIGNvbXB1dGVkIHRoZSBmaW5hbCBtYXJnaW4gYmVmb3JlLCBsZXQncyBzaGlmdCB0aGUg
Ym94J3MgdmVydGljYWwgcG9zaXRpb24gaWYgbmVlZGVkLgpAQCAtNTMyLDcgKzUzMiw2IEBAIExh
eW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCCiAgICAgICAgIGN1cnJlbnRMYXlvdXRCb3ggPSAmcHJldmlv
dXNJbkZsb3dTaWJsaW5nOwogICAgIH0KIAotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrQ29udGVu
dEJveFRvcCA9IHZlcnRpY2FsQ29uc3RyYWludHMubG9naWNhbFRvcDsKICAgICAvLyBBZGp1c3Qg
dmVydGljYWwgcG9zaXRpb24gZGVwZW5kaW5nIHdoZXRoZXIgdGhpcyBib3ggZGlyZWN0bHkgb3Ig
aW5kaXJlY3RseSBhZGpvaW5zIHdpdGggaXRzIHBhcmVudC4KICAgICBhdXRvIGRpcmVjdGx5QWRq
b2luc1BhcmVudCA9ICFsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CiAgICAgaWYg
KGRpcmVjdGx5QWRqb2luc1BhcmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQuaAppbmRleCAxZDc4NzFjMzU4MjFjMGZkOGJiMTI1ZTk1ODhjZWJhNDQ3NDVh
ZThhLi4xNGUyMzRjNTM2MTg1YTc5YmM4Y2NjMjkxNjJhODhmZGM4YjRkNjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjksNyArNjksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpOwogCiAgICAgdm9pZCBjb21wdXRlU3Rh
dGljSG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYpOwotICAgIHZvaWQgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94
JiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Zl
cnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250
ZW50Qm94VG9wKTsKICAgICB2b2lkIGNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3Qg
RmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7CiAg
ICAgdm9pZCBjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoY29uc3QgRmxvYXRp
bmdDb250ZXh0JiwgY29uc3QgQm94Jik7CiAKQEAgLTc3LDcgKzc3LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMoKSBvdmVycmlkZTsKIAotICAgIExheW91dFVuaXQgdmVydGljYWxQb3NpdGlvbldp
dGhNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiwgY29uc3QgVmVy
dGljYWxDb25zdHJhaW50cyYpIGNvbnN0OworICAgIExheW91dFVuaXQgdmVydGljYWxQb3NpdGlv
bldpdGhNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiwgTGF5b3V0
VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wKSBjb25zdDsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGNvbnN0
IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYsIGNvbnN0IENvbnN0cmFpbnRzUGFpciYpOwog
ICAgIHZvaWQgdXBkYXRlTWFyZ2luQWZ0ZXJGb3JQcmV2aW91c1NpYmxpbmcoY29uc3QgQm94Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4
IDhjN2YzNjk5MWExYjFjY2NjZmUxZjM1MDk0ZDQzNjBkOTI0ZThkNGYuLjJkMDAwNGMyNjJiYzRm
NTcyYTQyNjc4N2QwOWUzZjI3NGRhNzY3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgQ29udGVudFdpZHRo
QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dSZXBsYWNlZENvbnRlbnRX
aWR0aEFuZE1hcmcKICAgICByZXR1cm4geyB1c2VkV2lkdGgsIG5vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4udXNlZE1hcmdpbiB9OwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0dlb21l
dHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBW
ZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzKSBjb25zdAorTGF5b3V0VW5p
dCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBC
b3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wKSBj
b25zdAogewogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwj
YmxvY2stZm9ybWF0dGluZwogICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LCBi
b3hlcyBhcmUgbGFpZCBvdXQgb25lIGFmdGVyIHRoZSBvdGhlciwgdmVydGljYWxseSwgYmVnaW5u
aW5nIGF0IHRoZSB0b3Agb2YgYSBjb250YWluaW5nIGJsb2NrLgpAQCAtMjQ3LDcgKzI0Nyw3IEBA
IExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRp
b24oY29uc3QgQm94JiBsYXlvdXRCb3gsCiAgICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93Qm94
R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpwcmV2aW91c0lu
Rmxvd1NpYmxpbmcpOwogICAgICAgICByZXR1cm4gQm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3Qo
cHJldmlvdXNJbkZsb3dCb3hHZW9tZXRyeSkuYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0JveEdl
b21ldHJ5Lm1hcmdpbkFmdGVyKCk7CiAgICAgfQotICAgIHJldHVybiB2ZXJ0aWNhbENvbnN0cmFp
bnRzLmxvZ2ljYWxUb3A7CisgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hUb3A7
CiB9CiAKIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRpY0hvcml6b250
YWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpIGNvbnN0CkBAIC0yNTcsMTEgKzI1Nyw2IEBAIExh
eW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRpY0hvcml6b250YWxQb3NpdGlv
bihjb25zdCBCb3gmIGxheW91dEJvCiAgICAgcmV0dXJuIGhvcml6b250YWxDb25zdHJhaW50cy5s
b2dpY2FsTGVmdCArIGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
KS5tYXJnaW5TdGFydCgpOwogfQogCi1Qb2ludCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6c3Rh
dGljUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2
ZXJ0aWNhbENvbnN0cmFpbnRzKSBjb25zdAotewotICAgIHJldHVybiB7IHN0YXRpY0hvcml6b250
YWxQb3NpdGlvbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyksIHN0YXRpY1ZlcnRp
Y2FsUG9zaXRpb24obGF5b3V0Qm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKSB9OwotfQotCiBDb250
ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dDb250ZW50
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2Fs
VmFsdWVzJiBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxh
eW91dEJveC5pc0luRmxvdygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
R2VvbWV0cnkuaAppbmRleCA1ZDNiMjRhYjk2NjVkNmUzNjFlNjg3NDE2MDI2MDFjNzExMzQwMGJi
Li42MTQ1N2UwMmFkYTU4OWQxYjQxY2VkOTQ0OGVlMmZjOGVkZGM2Y2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC00NCw4ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGluRmxvd0NvbnRlbnRIZWlnaHRBbmRN
YXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3Zl
cnJpZGRlblZlcnRpY2FsVmFsdWVzJikgY29uc3Q7CiAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2lu
IGluRmxvd0NvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpIGNvbnN0Owog
Ci0gICAgUG9pbnQgc3RhdGljUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpIGNvbnN0OwotICAgIExheW91
dFVuaXQgc3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmLCBjb25zdCBWZXJ0aWNhbENv
bnN0cmFpbnRzJikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
KGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94Jiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKICAgICBJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94JikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggZWI1
MzQyNjQ0OGJhOTliZTM5OTE0ZTk1ZTdlNDI1M2Q2ZjRjOTA1NC4uMzFjYmY3YTQ2MjM2MzhlMTQx
MDQ3OTBiMDhmNzdlZDZmODQzOWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nUXVpcmtzLmNwcApAQCAtOTksNyArOTksNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0SWZBcHBsaWNh
YgogICAgIC8vIEhvd2V2ZXIgdGhlIG5vbi1pbi1mbG93IGRvY3VtZW50IGJveCdzIHZlcnRpY2Fs
IG1hcmdpbnMgYXJlIGlnbm9yZWQuIFRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBib2R5IGJveCdzIGNv
bnRlbnQgaGVpZ2h0LgogICAgIGlmIChkb2N1bWVudEJveC5pc0luRmxvdygpKSB7CiAgICAgICAg
IGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdH
ZW9tZXRyeSgpOwotICAgICAgICBhdXRvIHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRpY2FsTWFy
Z2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oZG9jdW1lbnRC
b3gsIGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoaW5pdGlh
bENvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6Qm9keVN0
cmV0Y2hlc1RvVmlld3BvcnRRdWlyaykuaG9yaXpvbnRhbCk7CisgICAgICAgIGF1dG8gcHJlY29t
cHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbihkb2N1bWVudEJveCwgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29u
dGV4dDo6RXNjYXBlUmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5ob3Jpem9u
dGFsKCkpOwogICAgICAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBwcmVjb21wdXRlRG9jdW1l
bnRCb3hWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCkgKyBwcmVjb21wdXRlRG9jdW1l
bnRCb3hWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKTsKICAgICB9CiAgICAgcmV0dXJu
IHN0ZDo6bWF4KGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCwgIGJvZHlCb3hD
b250ZW50SGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRC
bG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBmYmEyNWQ0NWUwODY4ZTRiMjM4NGY2ODM2NjIy
YmI0NjcxNDE4Yzg5Li40OWFiOTQzM2M2NzkxZWZjZjU5OTRkZmM5MmYyYzAxOTNlODViYzE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVB
bmROZWdhdGl2ZVBhaXI6OlZhbHVlcyBCbG9ja01hcmdpbkNvbGxhcHNlOjpwcmVjb21wCiAgICAg
aWYgKGJsb2NrRm9ybWF0dGluZ1N0YXRlLmhhc1VzZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gp
KQogICAgICAgICByZXR1cm4gYmxvY2tGb3JtYXR0aW5nU3RhdGUudXNlZFZlcnRpY2FsTWFyZ2lu
KGxheW91dEJveCkucG9zaXRpdmVBbmROZWdhdGl2ZVZhbHVlcy5iZWZvcmU7CiAKLSAgICBhdXRv
IGhvcml6b250YWxDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5ob3Jpem9udGFsOwor
ICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmhvcml6
b250YWwoKTsKICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2Vv
bWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJh
aW50cyk7CiAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46
Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVl
X29yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAg
cmV0dXJuIHByZWNvbXB1dGVkUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRCb3gs
IG5vbkNvbGxhcHNlZE1hcmdpbiwgZm9ybWF0dGluZ0dlb21ldHJ5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVy
L1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggOWYwMDgxMmViZjRjZjZiODY3ODFhOTdk
ODQwNWEyMzQwMTUwOGQyZC4uYmM4OWFkMmY5NWI3M2UzYzc1OTcwOThkODc4YTIwMzA5YTI3YzFi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJs
ZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5
b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIK
KyNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdTdGF0ZS5oIgog
I2luY2x1ZGUgIlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIgpAQCAtNzIsMTQg
KzczLDE2IEBAIHZvaWQgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
VGFibGVCb3goY29uc3QgQ29udGFpbmVyQm94JiB0YWJsCiB7CiAgICAgbGF5b3V0U3RhdGUoKS5l
bnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZSh0YWJsZUJveCk7CiAKLSAgICBjb21wdXRlQm9yZGVy
QW5kUGFkZGluZ0ZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsK
LSAgICBjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbih0YWJsZUJveCwgY29uc3RyYWludHMu
dmVydGljYWwpOwotICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbkZvclRhYmxlQm94KHRhYmxlQm94
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKLSAgICBjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAgICBjb21wdXRlQm9y
ZGVyQW5kUGFkZGluZ0ZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkpOworICAgIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKHRhYmxlQm94LCBjb25zdHJh
aW50cy5sb2dpY2FsVG9wKCkpOworICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbkZvclRhYmxlQm94
KHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOworICAgIGNvbXB1dGVTdGF0aWNI
b3Jpem9udGFsUG9zaXRpb24odGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAK
ICAgICBpZiAodGFibGVCb3guaGFzQ2hpbGQoKSkgeworICAgICAgICBhdXRvJiBmb3JtYXR0aW5n
R2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKICAgICAgICAgYXV0byBpbnZh
bGlkYXRpb25TdGF0ZSA9IEludmFsaWRhdGlvblN0YXRlIHsgfTsKLSAgICAgICAgTGF5b3V0Q29u
dGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkpLT5s
YXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBmb3JtYXR0aW5nR2VvbWV0cnko
KS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQodGFibGVCb3gpKTsKKyAgICAgICAgYXV0byBj
b25zdHJhaW50cyA9IENvbnN0cmFpbnRzRm9yVGFibGVDb250ZW50IHsgZm9ybWF0dGluZ0dlb21l
dHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCh0YWJsZUJveCksIGZvcm1hdHRpbmdHZW9t
ZXRyeS5jb21wdXRlZEhlaWdodCh0YWJsZUJveCkgfTsKKyAgICAgICAgTGF5b3V0Q29udGV4dDo6
Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkpLT5sYXlvdXRJ
bkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBjb25zdHJhaW50cyk7CiAgICAgfQogCiAg
ICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50
cyk7CkBAIC0yMjksMTMgKzIzMiwxMyBAQCB2b2lkIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJsZUJveChjb25zdAogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0oKTsKIAotICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gZm9y
bWF0dGluZ0dlb21ldHJ5KCkuaW5GbG93Q29udGVudEhlaWdodEFuZE1hcmdpbih0YWJsZUJveCwg
Y29uc3RyYWludHMuaG9yaXpvbnRhbCwgeyBvdmVycmlkZGVuVGFibGVIZWlnaHQgfSk7CisgICAg
YXV0byBoZWlnaHRBbmRNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbkZsb3dDb250ZW50
SGVpZ2h0QW5kTWFyZ2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIHsgb3Zl
cnJpZGRlblRhYmxlSGVpZ2h0IH0pOwogICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBtYXJnaW5D
b2xsYXBzZSgpLmNvbGxhcHNlZFZlcnRpY2FsVmFsdWVzKHRhYmxlQm94LCBoZWlnaHRBbmRNYXJn
aW4ubm9uQ29sbGFwc2VkTWFyZ2luKTsKICAgICAvLyBDYWNoZSB0aGUgY29tcHV0ZWQgcG9zaXRp
dmUgYW5kIG5lZ2F0aXZlIG1hcmdpbiB2YWx1ZSBwYWlyLgogICAgIGZvcm1hdHRpbmdTdGF0ZSgp
LnNldFVzZWRWZXJ0aWNhbE1hcmdpbih0YWJsZUJveCwgdmVydGljYWxNYXJnaW4pOwogCiAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeSh0YWJsZUJv
eCk7Ci0gICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1h
cmdpbih0YWJsZUJveCwgdmVydGljYWxNYXJnaW4sIGNvbnN0cmFpbnRzLnZlcnRpY2FsKSk7Cisg
ICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbih0
YWJsZUJveCwgdmVydGljYWxNYXJnaW4sIGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSkpOwogICAg
IGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRI
ZWlnaHQpOwogICAgIGJveEdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHsgbWFyZ2luQmVmb3Jl
KHZlcnRpY2FsTWFyZ2luKSwgbWFyZ2luQWZ0ZXIodmVydGljYWxNYXJnaW4pIH0pOwogICAgIC8v
IEFkanVzdCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0b20gbm93IHRoYXQgdGhp
cyBib3gncyB2ZXJ0aWNhbCBtYXJnaW4gaXMgY29tcHV0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9G
bGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGVmZTk3ODIwNGVjYzYxY2QyNzU2YTQ4MzMw
MzIwOTYxNDBiNTEwZmEuLmVjMDBlMmQ0ODNmOGQyYzYwMzg2MjNlNjg3MjNmMWRlNDJmNjBhZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxl
eC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC03MCwx
NSArNzAsMTUgQEAgdm9pZCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJ
dGVtcyhjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnQKIHsKICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvJiBmb3JtYXR0aW5n
R2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICBhdXRvIGZsZXhJdGVt
TWFpbkF4aXNTdGFydCA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNhbExlZnQ7CisgICAg
YXV0byBmbGV4SXRlbU1haW5BeGlzU3RhcnQgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9n
aWNhbExlZnQ7CiAgICAgYXV0byBmbGV4SXRlbU1haW5BeGlzRW5kID0gZmxleEl0ZW1NYWluQXhp
c1N0YXJ0OwotICAgIGF1dG8gZmxleEl0ZW1Dcm9zQXhpc1N0YXJ0ID0gY29uc3RyYWludHMudmVy
dGljYWwubG9naWNhbFRvcDsKKyAgICBhdXRvIGZsZXhJdGVtQ3Jvc0F4aXNTdGFydCA9IGNvbnN0
cmFpbnRzLmxvZ2ljYWxUb3AoKTsKICAgICBhdXRvIGZsZXhJdGVtQ3Jvc0F4aXNFbmQgPSBmbGV4
SXRlbUNyb3NBeGlzU3RhcnQ7CiAgICAgZm9yIChhdXRvJiBmbGV4SXRlbSA6IGNoaWxkcmVuT2ZU
eXBlPENvbnRhaW5lckJveD4ocm9vdCgpKSkgewogICAgICAgICBBU1NFUlQoZmxleEl0ZW0uZXN0
YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
anVzdCBhIHNpbXBsZSwgbGV0J3MgbGF5b3V0IHRoZSBmbGV4IGl0ZW1zIGFuZCBwbGFjZSB0aGVt
IG5leHQgdG8gZWFjaCBvdGhlciBzZXR1cC4KICAgICAgICAgYXV0byBpbnRyaW5zaWNXaWR0aHMg
PSBmb3JtYXR0aW5nU3RhdGUuaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChmbGV4SXRl
bSk7Ci0gICAgICAgIGF1dG8gZmxleEl0ZW1Mb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihzdGQ6Om1h
eChpbnRyaW5zaWNXaWR0aHMtPm1pbmltdW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNh
bFdpZHRoKSwgaW50cmluc2ljV2lkdGhzLT5tYXhpbXVtKTsKKyAgICAgICAgYXV0byBmbGV4SXRl
bUxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKHN0ZDo6bWF4KGludHJpbnNpY1dpZHRocy0+bWluaW11
bSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCksIGludHJpbnNpY1dpZHRo
cy0+bWF4aW11bSk7CiAgICAgICAgIGF1dG8gZmxleEl0ZW1Db25zdHJhaW50cyA9IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCB7IHsgeyB9LCBmbGV4SXRlbUxvZ2ljYWxXaWR0aCB9LCB7IH0g
fTsKIAogICAgICAgICBhdXRvIGludmFsaWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9uU3RhdGUg
eyB9OwpAQCAtOTAsMTIgKzkwLDEyIEBAIHZvaWQgRmxleEZvcm1hdHRpbmdDb250ZXh0OjpzaXpl
QW5kUGxhY2VGbGV4SXRlbXMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250CiAgICAgICAg
ICAgICBmbGV4SXRlbUdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KExheW91dFBvaW50IHsgZmxl
eEl0ZW1NYWluQXhpc0VuZCwgZmxleEl0ZW1Dcm9zQXhpc1N0YXJ0IH0pOwogCiAgICAgICAgICAg
ICBmbGV4SXRlbUdlb21ldHJ5LnNldEJvcmRlcihmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRC
b3JkZXIoZmxleEl0ZW0pKTsKLSAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0UGFkZGlu
Zyhmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRQYWRkaW5nKGZsZXhJdGVtLCBjb25zdHJhaW50
cy5ob3Jpem9udGFsLmxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRy
eS5zZXRQYWRkaW5nKGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFBhZGRpbmcoZmxleEl0ZW0s
IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpKTsKIAotICAgICAgICAgICAg
YXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luKGZsZXhJdGVtLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAg
ICAgICAgICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21l
dHJ5LmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihmbGV4SXRlbSwgY29uc3RyYWludHMuaG9yaXpv
bnRhbCgpKTsKICAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdp
bih7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwX2x1KSwgY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1KSB9KTsKIAotICAgICAgICAgICAg
YXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVk
VmVydGljYWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAgICAg
ICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNv
bXB1dGVkVmVydGljYWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7
CiAgICAgICAgICAgICBmbGV4SXRlbUdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHsgY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMF9sdSksIGNvbXB1dGVkVmVydGljYWxN
YXJnaW4uYWZ0ZXIudmFsdWVfb3IoMF9sdSkgfSk7CiAKICAgICAgICAgICAgIGZsZXhJdGVtR2Vv
bWV0cnkuc2V0Q29udGVudEJveEhlaWdodChmb3JtYXR0aW5nR2VvbWV0cnkuY29udGVudEhlaWdo
dEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChmbGV4SXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDc4NjRhZWNkNzIxNmZkYzIw
MjAyZWQ3Yjc5ZmQyMjBmNzcxNzA1MDAuLmFmYjUzMjI0NzhhOGY2N2RjYzJlMmNjNDFhZGEzY2Rh
MjEzOWNmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTk4LDIyICs5OCwyMiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpbwogICAg
ICAgICAgICAgaWYgKGlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSAmJiBsYXlvdXRCb3gtPmVz
dGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChs
YXlvdXRCb3gtPmlzSW5saW5lQmxvY2tCb3goKSB8fCBsYXlvdXRCb3gtPmlzSW5saW5lVGFibGVC
b3goKSB8fCBsYXlvdXRCb3gtPmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpOwogICAgICAgICAgICAg
ICAgIGF1dG8mIGZvcm1hdHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94PigqbGF5b3V0
Qm94KTsKLSAgICAgICAgICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhmb3JtYXR0aW5n
Um9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICAgICAgY29tcHV0ZVdp
ZHRoQW5kTWFyZ2luKGZvcm1hdHRpbmdSb290LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKyAg
ICAgICAgICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhmb3JtYXR0aW5nUm9vdCwgY29u
c3RyYWludHMuaG9yaXpvbnRhbCgpKTsKKyAgICAgICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRN
YXJnaW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuaGFzQ2hpbGQoKSkgewogICAgICAgICAgICAg
ICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9y
bWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ1Jvb3QsIGxheW91dFN0YXRlKCkpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93
Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50KGZvcm1hdHRpbmdSb290KSk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwpOworICAgICAgICAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGZvcm1h
dHRpbmdSb290LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwogICAgICAgICAgICAgICAgICAg
ICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChpbnZhbGlkYXRpb25T
dGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50
KGZvcm1hdHRpbmdSb290KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwpOworICAgICAgICAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
KGZvcm1hdHRpbmdSb290LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlZCBhbmQgb3RoZXIgdHlwZSBvZiBs
ZWFmIGF0b21pYyBpbmxpbmUgYm94ZXMuCi0gICAgICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFu
ZFBhZGRpbmcoKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAg
ICAgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKCpsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwpOwotICAgICAgICAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oKmxheW91dEJv
eCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUJvcmRl
ckFuZFBhZGRpbmcoKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKKyAgICAg
ICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oKmxheW91dEJveCwgY29uc3RyYWludHMu
aG9yaXpvbnRhbCgpKTsKKyAgICAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKCps
YXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LT5pc0xpbmVCcmVha0JveCgpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KCpsYXlv
dXRCb3gpOwpAQCAtMTI2LDggKzEyNiw4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvCiAgICAg
ICAgICAgICAvLyBUZXh0IHdyYXBwZXIgYm94ZXMgKGFub255bW91cyBpbmxpbmUgbGV2ZWwgYm94
ZXMpIGRvbid0IGhhdmUgYm94IGdlb21ldHJpZXMgKHRoZXkgb25seSBnZW5lcmF0ZSBydW5zKS4K
ICAgICAgICAgICAgIGlmICghbGF5b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAg
ICAgICAgICAgIC8vIElubGluZSBib3hlcyAoPHNwYW4+KSBjYW4ndCBnZXQgc2l6ZWQvcG9zaXRp
b25lZCB5ZXQuIEF0IHRoaXMgcG9pbnQgd2UgY2FuIG9ubHkgY29tcHV0ZSB0aGVpciBtYXJnaW5z
LCBib3JkZXJzIGFuZCBwYWRkaW5nLgotICAgICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQ
YWRkaW5nKCpsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAgICAg
ICAgIGNvbXB1dGVIb3Jpem9udGFsTWFyZ2luKCpsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwpOworICAgICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKCpsYXlvdXRC
b3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUhv
cml6b250YWxNYXJnaW4oKmxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAg
ICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeSgqbGF5b3V0Qm94KS5z
ZXRWZXJ0aWNhbE1hcmdpbih7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAg
LTE3OCw3ICsxNzgsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0
KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OgogewogICAgIGF1dG8mIGZv
cm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGZvcm1hdHRpbmdT
dGF0ZS5saW5lUnVucygpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZm9ybWF0dGluZ1N0YXRlLmlu
bGluZUl0ZW1zKCkuc2l6ZSgpKTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsVG9w
ID0gY29uc3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKKyAgICBJbmxpbmVMYXlvdXRVbml0
IGxpbmVMb2dpY2FsVG9wID0gY29uc3RyYWludHMubG9naWNhbFRvcCgpOwogICAgIHN0cnVjdCBQ
cmV2aW91c0xpbmUgewogICAgICAgICBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIHJhbmdl
OwogICAgICAgICBzaXplX3Qgb3ZlcmZsb3dDb250ZW50TGVuZ3RoIHsgMCB9OwpAQCAtMTg5LDcg
KzE4OSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgYXV0byBmbG9hdGluZ0NvbnRl
eHQgPSBGbG9hdGluZ0NvbnRleHQgeyAqdGhpcywgZmxvYXRpbmdTdGF0ZSB9OwogICAgIGF1dG8g
aXNGaXJzdExpbmUgPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5pc0VtcHR5KCk7CiAKLSAgICBh
dXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgZmxvYXRpbmdTdGF0ZSwgY29u
c3RyYWludHMuaG9yaXpvbnRhbCwgaW5saW5lSXRlbXMgfTsKKyAgICBhdXRvIGxpbmVCdWlsZGVy
ID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgZmxvYXRpbmdTdGF0ZSwgY29uc3RyYWludHMuaG9yaXpv
bnRhbCgpLCBpbmxpbmVJdGVtcyB9OwogICAgIHdoaWxlICghbmVlZHNMYXlvdXRSYW5nZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gVHVybiBwcmV2aW91cyBsaW5lJ3Mgb3ZlcmZsb3cgY29udGVu
dCBsZW5ndGggaW50byB0aGUgbmV4dCBsaW5lJ3MgbGVhZGluZyBjb250ZW50IHBhcnRpYWwgbGVu
Z3RoLgogICAgICAgICAvLyAic3BbPC1saW5lIGJyZWFrLT5dbGl0X2NvbnRlbnQiIC0+IG92ZXJm
bG93IGxlbmd0aDogMTEgLT4gbGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3RoOiAxMS4KQEAg
LTIwMCw5ICsyMDAsOSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0
KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OgogICAgICAgICAgICAgICAg
IHJldHVybiByb290KCkuc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICAgICAgICAg
IHJldHVybiBmb3JtYXR0aW5nUXVpcmtzKCkuaW5pdGlhbExpbmVIZWlnaHQoKTsKICAgICAgICAg
fSgpOwotICAgICAgICBhdXRvIGluaXRpYWxMaW5lQ29uc3RyYWludHMgPSBJbmxpbmVSZWN0IHsg
bGluZUxvZ2ljYWxUb3AsIGNvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNhbExlZnQsIGNvbnN0
cmFpbnRzLmhvcml6b250YWwubG9naWNhbFdpZHRoLCBpbml0aWFsTGluZUhlaWdodCB9OworICAg
ICAgICBhdXRvIGluaXRpYWxMaW5lQ29uc3RyYWludHMgPSBJbmxpbmVSZWN0IHsgbGluZUxvZ2lj
YWxUb3AsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMu
aG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCwgaW5pdGlhbExpbmVIZWlnaHQgfTsKICAgICAgICAg
YXV0byBsaW5lQ29udGVudCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNvbnRlbnQobmVlZHNM
YXlvdXRSYW5nZSwgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBsZWFkaW5nTG9naWNhbFdp
ZHRoLCBpbml0aWFsTGluZUNvbnN0cmFpbnRzLCBpc0ZpcnN0TGluZSk7Ci0gICAgICAgIGF1dG8g
bGluZUxvZ2ljYWxSZWN0ID0gY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQobGluZUNvbnRl
bnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVj
dCA9IGNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50LCBjb25zdHJhaW50
cy5ob3Jpem9udGFsKCkpOwogCiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnRSYW5nZSA9IGxpbmVD
b250ZW50LmlubGluZUl0ZW1SYW5nZTsKICAgICAgICAgaWYgKCFsaW5lQ29udGVudFJhbmdlLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb25zdHJh
aW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNkYjFmMGRmMDA4NDRiNmY3ZmZjODQ4YjY4MmI3NTM2MDlkNGU1
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmgKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJGb3JtYXR0aW5nQ29uc3RyYWludHMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0cnVjdCBDb25zdHJhaW50
c0ZvclRhYmxlQ29udGVudCA6IHB1YmxpYyBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgewor
ICAgIENvbnN0cmFpbnRzRm9yVGFibGVDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFj
ZUZvckNvbnRlbnQpOworCisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVW
ZXJ0aWNhbFNwYWNlRm9yQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXZhaWxhYmxlVmVydGlj
YWxTcGFjZUZvckNvbnRlbnQ7IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IG1fYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQ7Cit9OworCitpbmxpbmUg
Q29uc3RyYWludHNGb3JUYWJsZUNvbnRlbnQ6OkNvbnN0cmFpbnRzRm9yVGFibGVDb250ZW50KGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgaW5GbG93Q29udHJhaW50cywgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVudCkKKyAg
ICA6IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChpbkZsb3dDb250cmFpbnRzLmhvcml6b250
YWwoKSwgaW5GbG93Q29udHJhaW50cy5sb2dpY2FsVG9wKCksIFRhYmxlQ29udGVudCkKKyAgICAs
IG1fYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQoYXZhaWxhYmxlVmVydGljYWxTcGFj
ZUZvckNvbnRlbnQpCit7Cit9CisKK30KK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19MQVlP
VVRfRk9STUFUVElOR19DT05TVFJBSU5UUyhDb25zdHJhaW50c0ZvclRhYmxlQ29udGVudCwgaXND
b25zdHJhaW50c0ZvclRhYmxlQ29udGVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDI5YTZiNzMwMjFkYjQyYjllNTRm
Nzc3MjM3ODZkY2ZkOGFiMjM0MzIuLmVjMjZhMWNiNzg3ZWNlZTE5MmUyYTYxYTY0Zjk2NDQ2MDg2
YTJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5p
bmdCbG9jay5oIgorI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmgiCiAjaW5j
bHVkZSAiVGFibGVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogCkBAIC01NSw4ICs1Niw4IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29uCiAKIHZv
aWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRp
b25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMp
CiB7Ci0gICAgYXV0byBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UgPSBjb25zdHJhaW50cy5ob3Jp
em9udGFsLmxvZ2ljYWxXaWR0aDsKLSAgICBhdXRvIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UgPSBj
b25zdHJhaW50cy52ZXJ0aWNhbC5sb2dpY2FsSGVpZ2h0OworICAgIGF1dG8gYXZhaWxhYmxlSG9y
aXpvbnRhbFNwYWNlID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aDsKKyAg
ICBhdXRvIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UgPSBkb3duY2FzdDxDb25zdHJhaW50c0ZvclRh
YmxlQ29udGVudD4oY29uc3RyYWludHMpLmF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50
KCk7CiAgICAgLy8gMS4gQ29tcHV0ZSB3aWR0aCBhbmQgaGVpZ2h0IGZvciB0aGUgZ3JpZC4KICAg
ICBjb21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJhU3BhY2UoYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNl
LCBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKICAgICAvLyAyLiBGaW5hbGl6ZSBjZWxscy4KQEAg
LTk5LDcgKzEwMCw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21l
dHJ5Rm9yQ2VsbHMoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9uCiAgICAgICAgIGZvciAoc2l6
ZV90IHJvd0luZGV4ID0gY2VsbC0+c3RhcnRSb3coKSArIDE7IHJvd0luZGV4IDwgY2VsbC0+ZW5k
Um93KCk7ICsrcm93SW5kZXgpCiAgICAgICAgICAgICBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlICs9
IHJvd0xpc3Rbcm93SW5kZXhdLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgYXZhaWxhYmxlVmVy
dGljYWxTcGFjZSArPSAoY2VsbC0+cm93U3BhbigpIC0gMSkgKiBncmlkLnZlcnRpY2FsU3BhY2lu
ZygpOwotICAgICAgICBsYXlvdXRDZWxsKCpjZWxsLCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2Us
IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpOworICAgICAgICBsYXlvdXRDZWxsKCpjZWxsLCBhdmFp
bGFibGVIb3Jpem9udGFsU3BhY2UpOwogCiAgICAgICAgIGF1dG8gY29tcHV0ZUludHJpbnNpY1Zl
cnRpY2FsUGFkZGluZ0ZvckNlbGwgPSBbJl0gewogICAgICAgICAgICAgLy8gSW50cmluc2ljIHBh
ZGRpbmcgaXMgdGhlIGV4dHJhIHBhZGRpbmcgZm9yIHRoZSBjZWxsIGJveCB3aGVuIGl0IGlzIHNo
b3J0ZXIgdGhhbiB0aGUgcm93LiBDZWxsIGJveGVzIGhhdmUgdG8KQEAgLTI0Niw3ICsyNDcsNyBA
QCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25z
KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbAogICAgIGF1dG8mIGdyaWQgPSBmb3JtYXR0aW5nU3Rh
dGUoKS50YWJsZUdyaWQoKTsKICAgICBhdXRvJiB0YWJsZUJveCA9IHJvb3QoKTsKICAgICBhdXRv
IHNlY3Rpb25XaWR0aCA9IGdyaWQuY29sdW1ucygpLmxvZ2ljYWxXaWR0aCgpICsgMiAqIGdyaWQu
aG9yaXpvbnRhbFNwYWNpbmcoKTsKLSAgICBhdXRvIGxvZ2ljYWxUb3AgPSBjb25zdHJhaW50cy52
ZXJ0aWNhbC5sb2dpY2FsVG9wOworICAgIGF1dG8gbG9naWNhbFRvcCA9IGNvbnN0cmFpbnRzLmxv
Z2ljYWxUb3AoKTsKICAgICBhdXRvIHZlcnRpY2FsU3BhY2luZyA9IGdyaWQudmVydGljYWxTcGFj
aW5nKCk7CiAgICAgYXV0byBwYWRkaW5nQmVmb3JlID0gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB7IHZlcnRpY2FsU3BhY2luZyB9OwogICAgIGF1dG8gcGFkZGluZ0FmdGVyID0gdmVydGljYWxT
cGFjaW5nOwpAQCAtMjcwLDE0ICsyNzEsMTQgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25zdHJhaW50c0ZvckluRmwKICAg
ICAgICAgfQogICAgICAgICBzZWN0aW9uQ29udGVudEhlaWdodCArPSB2ZXJ0aWNhbFNwYWNpbmcg
KiAocm93Q291bnQgLSAxKTsKICAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldENvbnRlbnRC
b3hIZWlnaHQoc2VjdGlvbkNvbnRlbnRIZWlnaHQpOwotICAgICAgICBzZWN0aW9uQm94R2VvbWV0
cnkuc2V0TG9naWNhbExlZnQoY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsTGVmdCk7Cisg
ICAgICAgIHNlY3Rpb25Cb3hHZW9tZXRyeS5zZXRMb2dpY2FsTGVmdChjb25zdHJhaW50cy5ob3Jp
em9udGFsKCkubG9naWNhbExlZnQpOwogICAgICAgICBzZWN0aW9uQm94R2VvbWV0cnkuc2V0TG9n
aWNhbFRvcChsb2dpY2FsVG9wKTsKIAogICAgICAgICBsb2dpY2FsVG9wICs9IHNlY3Rpb25Cb3hH
ZW9tZXRyeS5ib3JkZXJCb3hIZWlnaHQoKTsKICAgICB9CiB9CiAKLXZvaWQgVGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91
dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50KQordm9pZCBUYWJsZUZvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYgY2VsbCwgTGF5b3V0VW5p
dCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpCiB7CiAgICAgQVNTRVJUKGNlbGwuYm94KCkuZXN0
YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogCkBAIC0zMDUsMTAgKzMwNiw4IEBA
IHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6
OkNlbGwmIGNlbGwsIExheW91dFVuaXQKIAogICAgIGlmIChjZWxsQm94Lmhhc0luRmxvd09yRmxv
YXRpbmdDaGlsZCgpKSB7CiAgICAgICAgIGF1dG8gY29uc3RyYWludHNGb3JDZWxsQ29udGVudCA9
IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY2VsbEJveCk7
Ci0gICAgICAgIGNvbnN0cmFpbnRzRm9yQ2VsbENvbnRlbnQudmVydGljYWwubG9naWNhbEhlaWdo
dCA9IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50OwogICAgICAgICBhdXRvIGludmFs
aWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwotICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcGFydCBvZiB0aGUgaW52YWxpZGF0aW9uIHN0YXRlIHRv
IGluZGljYXRlIHdoZW4gd2UgcmUtbGF5b3V0IHRoZSBjZWxsCi0gICAgICAgIC8vIG11bHRpcGxl
IHRpbWVzIGFzIHBhcnQgb2YgdGhlIG11bHRpLXBhc3MgdGFibGUgYWxnb3JpdGhtLgorICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcGFydCBvZiB0aGUgaW52YWxpZGF0
aW9uIHN0YXRlIHRvIGluZGljYXRlIHdoZW4gd2UgcmUtbGF5b3V0IHRoZSBjZWxsIG11bHRpcGxl
IHRpbWVzIGFzIHBhcnQgb2YgdGhlIG11bHRpLXBhc3MgdGFibGUgYWxnb3JpdGhtLgogICAgICAg
ICBhdXRvJiBmbG9hdGluZ1N0YXRlRm9yQ2VsbENvbnRlbnQgPSBsYXlvdXRTdGF0ZSgpLmVuc3Vy
ZUJsb2NrRm9ybWF0dGluZ1N0YXRlKGNlbGxCb3gpLmZsb2F0aW5nU3RhdGUoKTsKICAgICAgICAg
ZmxvYXRpbmdTdGF0ZUZvckNlbGxDb250ZW50LmNsZWFyKCk7CiAgICAgICAgIExheW91dENvbnRl
eHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNlbGxCb3gsIGxheW91dFN0YXRlKCkpLT5sYXlv
dXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBjb25zdHJhaW50c0ZvckNlbGxDb250
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXgg
OTI0YjEyNDMwN2MzMDcyOTcwNGFmMjg2ZjQ3OTE3ZjExOWM3MDJjMS4uOGJjMjMwOWQwYzBkNGU4
MDc0NjY1YzQ5YjU0NDJjNDhhYWZmY2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZv
cm1hdHRpbmdDb250ZXh0LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJu
IFRhYmxlTGF5b3V0KCp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS50YWJsZUdyaWQoKSk7IH0KIAog
ICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsYXlvdXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6
Q2VsbCYsIExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiwgTGF5b3V0
VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdlb21ldHJ5
Rm9yQ2VsbHMoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQg
c2V0VXNlZEdlb21ldHJ5Rm9yUm93cyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFj
ZSk7CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5k
ZXggZDUzYjVkY2IxMzllZGI5MDQwOTdmYmNjY2MzYmRhZTFmODZmNWRhNi4uOTJhMGIxZDMwNGNj
YTlhYjAxNzBkMTM1ZThjOTUzN2Y2NWY0NjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5jcHAKQEAgLTIxNiw5ICsyMTYsOCBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiAK
ICAgICBhdXRvIGludmFsaWRhdGlvblN0YXRlID0gTGF5b3V0OjpJbnZhbGlkYXRpb25TdGF0ZSB7
IH07CiAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBMYXlvdXQ6Okhvcml6b250YWxD
b25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSwgZmxvdygpLmNvbnRl
bnRTaXplKCkud2lkdGgoKSB9OwotICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9IExheW91
dDo6VmVydGljYWxDb25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCks
IHsgfSB9OwogCi0gICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGluZUxheW91dEZvckludGVy
Z3JhdGlvbihpbnZhbGlkYXRpb25TdGF0ZSwgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRp
Y2FsQ29uc3RyYWludHMgfSk7CisgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGluZUxheW91
dEZvckludGVyZ3JhdGlvbihpbnZhbGlkYXRpb25TdGF0ZSwgeyBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgfSk7CiAKICAgICBjb25zdHJ1Y3RD
b250ZW50KCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>