<?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>216742</bug_id>
          
          <creation_ts>2020-09-19 20:45:31 -0700</creation_ts>
          <short_desc>[LFC][IFC] InlineFormattingState should not store display lines and runs</short_desc>
          <delta_ts>2020-09-21 12:00:38 -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>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</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>1690145</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-09-19 20:45:31 -0700</bug_when>
    <thetext>FormattingStates should hold layout data only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690146</commentid>
    <comment_count>1</comment_count>
      <attachid>409223</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-19 20:55:10 -0700</bug_when>
    <thetext>Created attachment 409223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690147</commentid>
    <comment_count>2</comment_count>
      <attachid>409224</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-19 21:06:58 -0700</bug_when>
    <thetext>Created attachment 409224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690165</commentid>
    <comment_count>3</comment_count>
      <attachid>409233</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-20 06:41:00 -0700</bug_when>
    <thetext>Created attachment 409233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690166</commentid>
    <comment_count>4</comment_count>
      <attachid>409233</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-20 06:47:02 -0700</bug_when>
    <thetext>Comment on attachment 409233
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        In this patch,
&gt; +        1. Display related structures are completely moved out from Layout namespace
&gt; +          - InlineFormattingContext does not generate display structures.
&gt; +          - InlineFormattingState only stores layout data.
&gt; +          - Layout tree verification works on layout geometry.
&gt; +          - Layout structures do not embed Display types.
&gt; +        2. LayoutIntegration creates and maintains the required Display structures for painting and hittesting.
&gt; +        3. Display::Run does not use Layout types (InlineLayoutRect, InlineLayoutUnit).

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690168</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-20 08:01:24 -0700</bug_when>
    <thetext>Committed r267325: &lt;https://trac.webkit.org/changeset/267325&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409233.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690380</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-21 12:00:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/69318285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409223</attachid>
            <date>2020-09-19 20:55:10 -0700</date>
            <delta_ts>2020-09-19 21:06:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216742-20200919205509.patch</filename>
            <type>text/plain</type>
            <size>57680</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRiMmM5ZTAyMDZkMzlh
Y2NmZjVhMmNmMmM4ZThhNTU1NmYyODEwOC4uM2Q5MmMwMDA2ODAxZDFhNGEyZjU4ZWRjZmZmNmQy
ZDdkN2ExOTliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUgc2hvdWxkIG5vdCBzdG9yZSBkaXNwbGF5IGxpbmVzIGFuZCBydW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFV1MgdGVzdGlu
Zy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
b3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6dmVyaWZ5
QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlvdXRUcmVlKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OklubGluZUNvbnRlbnQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6Omhvcml6
b250YWxBbGlnbm1lbnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGluZTo6TGluZSk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50SW5saW5lQ29udGVudCk6Cisg
ICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6OmVuZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50OjpsZW5ndGggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpUZXh0Q29udGVudDo6Y29udGVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50OjpuZWVkc0h5cGhlbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OnJlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjppbmtPdmVyZmxvdyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlJ1bik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpSdW46OlRleHRDb250ZW50OjpUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpSdW46OlRleHRDb250ZW50OjpzZXROZWVkc0h5cGhlbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50OjpleHBhbmQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpUZXh0Q29udGVudDo6c2hyaW5rKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6dG9wTGVmdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OmxlZnQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpyaWdodCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OnRvcCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OmJvdHRvbSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OndpZHRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6aGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6bW92ZVZlcnRpY2FsbHkpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9mbGV4Zm9ybWF0dGluZy9GbGV4Rm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnNp
emVBbmRQbGFjZUZsZXhJdGVtcyk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmxpbmVS
dW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0
YXRlOjpsaW5lUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdTdGF0ZTo6YWRkTGluZVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmRpc3BsYXlJbmxpbmVDb250ZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z1N0YXRlOjplbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6c2hyaW5rRGlzcGxheUlubGlu
ZUNvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjp0ZXh0Q29u
dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5z
aW9uIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
R2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGluZUdlb21ldHJ5
Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lTGluZUdlb21ldHJ5OjpJbmxpbmVMaW5lR2VvbWV0cnkpOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29uc3RydWN0
RGlzcGxheUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6ZGlzcGxheUlubGluZUNvbnRlbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpM
aW5lTGF5b3V0OjpkaXNwbGF5SW5saW5lQ29udGVudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpvdXRwdXRJbmxpbmVSdW5zKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5n
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
YWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyk6CisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6cmVj
dCBjb25zdCk6CisKIDIwMjAtMDktMTggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtJRkNdIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlR2Vv
bWV0cnlGb3JMaW5lQ29udGVudCBzaG91bGQgbm90IGNvbnN0cnVjdCBEaXNwbGF5OjpMaW5lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGRhOWE5YTI5M2UyNTQxOGNiMmNkZmNiOTgwMDIwN2NhODg4NDMzM2IuLjg4ODc3MmU2MDRi
NzUwNjNhN2Y5Y2I1OGM2MDg3YTFhNmIzYTY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwODIsNiArMjA4Miw3IEBACiAJ
CTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0
NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI3RDJERDI1MEZEODI4MDAwMjA3QUEg
LyogRmxleEZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RkI3RDJEOTI1MEZEN0ZDMDAwMjA3QUEgLyogRmxleEZvcm1hdHRp
bmdDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkZCN0QyREUyNTBGRDgyRTAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjdEMkRBMjUw
RkQ3RkMwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVB
IC8qIElubGluZUxpbmVSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZDRTFBMUEy
MjYxOEFCRDAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQ0UxQTE4MjI2MThBQjMwMDRGMDM0MyAvKiBEaXNwbGF5
UnVuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NkZEMDk1NDMyNTExMTUyMjAwOTg4NzdEIC8qIExheW91dEdlb21ldHJ5UmVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZEMDk1NDEyNTExMTUyMjAw
OTg4NzdEIC8qIExheW91dEdlb21ldHJ5UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGRDlDRDU0MjI3RTIxQzgwMEU1Mzk1NyAvKiBEaXNw
bGF5UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZEOUNENTIyMjdFMjFDODAwRTUzOTU3IC8qIERpc3BsYXlSZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk2MjksNiArOTYzMCw3IEBACiAJ
CTZGQjdEMkQ5MjUwRkQ3RkMwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ0NvbnRleHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxleEZvcm1hdHRpbmdDb250ZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjdEMkRBMjUwRkQ3RkMwMDAyMDdBQSAvKiBG
bGV4Rm9ybWF0dGluZ1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZs
ZXhGb3JtYXR0aW5nU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCQjg2
MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5l
UnVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUxpbmVSdW4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZDNTNBRUIyNEFGN0E4RTAwNjA1OUZFIC8q
IFRhYmxlRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFi
bGVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGQzVDQTkyMjJFMzU5OTMwMEIxM0UxMSAvKiBUYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZGQzVDQTk0MjJFMzU5OTQwMEIxM0UxMSAvKiBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1MjYsNiArMTc1MjgsNyBA
QAogCQkJCTZGMjVCMjAwMjIwQTg1QUIwMDAwMDExQiAvKiBJbmxpbmVMaW5lQnVpbGRlci5jcHAg
Ki8sCiAJCQkJNkYyNkVCNDYyMzQwMDRBNTAwNjkwNkUyIC8qIElubGluZUxpbmVCdWlsZGVyLmgg
Ki8sCiAJCQkJNkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8qIElubGluZUxpbmVHZW9tZXRyeS5o
ICovLAorCQkJCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi8s
CiAJCQkJNkY0MERBODEyNTEzMDMzQTAwRUMwNEI3IC8qIElubGluZVJlY3QuaCAqLywKIAkJCQk2
RjM2MEU0RTIzOTk5NDIwMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaCAqLywK
IAkJCQk2RjFDQzFEQzIyNUY4QjQxMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uY3BwICovLApA
QCAtMzE3MzIsNiArMzE3MzUsNyBAQAogCQkJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJ
bmxpbmVMaW5lQnJlYWtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYyNkVCNDgyMzQwMDRBNTAw
NjkwNkUyIC8qIElubGluZUxpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjkxNDIx
MTI1MTUyMTM4MDA0RTRGRUEgLyogSW5saW5lTGluZUdlb21ldHJ5LmggaW4gSGVhZGVycyAqLywK
KwkJCQk2RkMzRjk0NzI1MTY3NTY3MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1bi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjQ1Nzc1Q0UyNDE0MzdENTAwMkRGMUEwIC8qIElubGluZVBhdGhEYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2RjQwREE4MjI1MTMwMzNBMDBFQzA0QjcgLyogSW5saW5lUmVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBFNTAyMzk5OTQyMTAwMTUxMkE3IC8qIElubGlu
ZVNvZnRMaW5lQnJlYWtJdGVtLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHAKaW5kZXggZjE2ZTM3MWMwNmVkY2QwODE0OGQ1ZDRiZGVkYmViNjllNmEy
ZDJlMy4uZTU3NjM0ZjM3MjVlMmRkYmYxZjllMmRlZDFkMzIyNmE3YTE3YmYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTc5LDE2ICs3OSwxMCBAQCBzdGF0aWMg
Ym9vbCBvdXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRT
dHJlYW0mIHN0cmVhbSwgYwogICAgIH0KIAogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0
ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRp
bmdSb290KTsKLSAgICBhdXRvKiBkaXNwbGF5SW5saW5lQ29udGVudCA9IGRvd25jYXN0PElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5kaXNwbGF5SW5saW5lQ29u
dGVudCgpOwotICAgIGlmICghZGlzcGxheUlubGluZUNvbnRlbnQpIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBhdXRvJiBs
aW5lUnVucyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGlu
Z1N0YXRlKS5saW5lUnVucygpOwogCi0gICAgYXV0byYgZGlzcGxheVJ1bnMgPSBkaXNwbGF5SW5s
aW5lQ29udGVudC0+cnVuczsKLQotICAgIGlmIChkaXNwbGF5UnVucy5zaXplKCkgIT0gbGluZUxh
eW91dERhdGEtPnJ1bkNvdW50KCkpIHsKLSAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZyBu
dW1iZXIgb2YgcnVuczogc2ltcGxlIHJ1bnMoIiA8PCBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQo
KSA8PCAiKSBpbmxpbmUgcnVucygiIDw8IGRpc3BsYXlSdW5zLnNpemUoKSA8PCAiKSI7CisgICAg
aWYgKGxpbmVSdW5zLnNpemUoKSAhPSBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSkgeworICAg
ICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBzaW1wbGUgcnVucygi
IDw8IGxpbmVMYXlvdXREYXRhLT5ydW5Db3VudCgpIDw8ICIpIGlubGluZSBydW5zKCIgPDwgbGlu
ZVJ1bnMuc2l6ZSgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTk2LDQ1ICs5MCw0OCBAQCBzdGF0aWMgYm9vbCBvdXRw
dXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0
cmVhbSwgYwogICAgIGF1dG8gbWlzbWF0Y2hlZCA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKTsgKytpKSB7CiAgICAgICAgIGF1
dG8mIHNpbXBsZVJ1biA9IGxpbmVMYXlvdXREYXRhLT5ydW5BdChpKTsKLSAgICAgICAgYXV0byYg
ZGlzcGxheVJ1biA9IGRpc3BsYXlSdW5zW2ldOworICAgICAgICBhdXRvJiBsaW5lUnVuID0gbGlu
ZVJ1bnNbaV07CisgICAgICAgIGF1dG8mIHJ1bkxvZ2ljYWxSZWN0ID0gbGluZVJ1bi5sb2dpY2Fs
UmVjdCgpOwogCi0gICAgICAgIGF1dG8gbWF0Y2hpbmdSdW5zID0gYXJlRXNzZW50aWFsbHlFcXVh
bChzaW1wbGVSdW4ubG9naWNhbExlZnQsIGRpc3BsYXlSdW4ubGVmdCgpKSAmJiBhcmVFc3NlbnRp
YWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQsIGRpc3BsYXlSdW4ucmlnaHQoKSk7Ci0g
ICAgICAgIGlmIChtYXRjaGluZ1J1bnMgJiYgZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpKSB7Ci0g
ICAgICAgICAgICBtYXRjaGluZ1J1bnMgPSBzaW1wbGVSdW4uc3RhcnQgPT0gZGlzcGxheVJ1bi50
ZXh0Q29udGVudCgpLT5zdGFydCgpICYmIHNpbXBsZVJ1bi5lbmQgPT0gZGlzcGxheVJ1bi50ZXh0
Q29udGVudCgpLT5lbmQoKTsKKyAgICAgICAgYXV0byBtYXRjaGluZ1J1bnMgPSBhcmVFc3NlbnRp
YWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCwgcnVuTG9naWNhbFJlY3QubGVmdCgpKSAm
JiBhcmVFc3NlbnRpYWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQsIHJ1bkxvZ2ljYWxS
ZWN0LnJpZ2h0KCkpOworICAgICAgICBpZiAobWF0Y2hpbmdSdW5zICYmIGxpbmVSdW4udGV4dCgp
KSB7CisgICAgICAgICAgICBtYXRjaGluZ1J1bnMgPSBzaW1wbGVSdW4uc3RhcnQgPT0gbGluZVJ1
bi50ZXh0KCktPnN0YXJ0KCkgJiYgc2ltcGxlUnVuLmVuZCA9PSBsaW5lUnVuLnRleHQoKS0+ZW5k
KCk7CiAgICAgICAgICAgICAvLyBTTEwgaGFuZGxlcyBzdHJpbmdzIGluIGEgbW9yZSBjb25jYXRl
bmF0ZWQgZm9ybWF0IDxkaXY+Zm9vPGJyPmJhcjwvZGl2PiAtPiBmb28gLT4gMCwzIGJhciAtPiAz
LDYgdnMuIDAsMyBhbmQgMCwzCiAgICAgICAgICAgICBpZiAoIW1hdGNoaW5nUnVucykKLSAgICAg
ICAgICAgICAgICBtYXRjaGluZ1J1bnMgPSAoc2ltcGxlUnVuLmVuZCAtIHNpbXBsZVJ1bi5zdGFy
dCkgPT0gKGRpc3BsYXlSdW4udGV4dENvbnRlbnQoKS0+ZW5kKCkgLSBkaXNwbGF5UnVuLnRleHRD
b250ZW50KCktPnN0YXJ0KCkpOworICAgICAgICAgICAgICAgIG1hdGNoaW5nUnVucyA9IChzaW1w
bGVSdW4uZW5kIC0gc2ltcGxlUnVuLnN0YXJ0KSA9PSAobGluZVJ1bi50ZXh0KCktPmVuZCgpIC0g
bGluZVJ1bi50ZXh0KCktPnN0YXJ0KCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtYXRjaGlu
Z1J1bnMpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzdHJlYW0gPDwgIk1pc21h
dGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgc2ltcGxlUnVuLnN0YXJ0IDw8ICIsICIgPDwgc2ltcGxl
UnVuLmVuZCA8PCAiKSAoIiA8PCBzaW1wbGVSdW4ubG9naWNhbExlZnQgPDwgIiwgIiA8PCBzaW1w
bGVSdW4ubG9naWNhbFJpZ2h0IDw8ICIpIjsKICAgICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIHJ1
biI7Ci0gICAgICAgIGlmIChkaXNwbGF5UnVuLnRleHRDb250ZW50KCkpCi0gICAgICAgICAgICBz
dHJlYW0gPDwgIiAoIiA8PCBkaXNwbGF5UnVuLnRleHRDb250ZW50KCktPnN0YXJ0KCkgPDwgIiwg
IiA8PCBkaXNwbGF5UnVuLnRleHRDb250ZW50KCktPmVuZCgpIDw8ICIpIjsKLSAgICAgICAgc3Ry
ZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1bi5sZWZ0KCkgPDwgIiwgIiA8PCBkaXNwbGF5UnVuLnRv
cCgpIDw8ICIpICgiIDw8IGRpc3BsYXlSdW4ud2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5o
ZWlnaHQoKSA8PCAiKSI7CisgICAgICAgIGlmIChsaW5lUnVuLnRleHQoKSkKKyAgICAgICAgICAg
IHN0cmVhbSA8PCAiICgiIDw8IGxpbmVSdW4udGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgbGlu
ZVJ1bi50ZXh0KCktPmVuZCgpIDw8ICIpIjsKKyAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgcnVu
TG9naWNhbFJlY3QubGVmdCgpIDw8ICIsICIgPDwgcnVuTG9naWNhbFJlY3QudG9wKCkgPDwgIikg
KCIgPDwgcnVuTG9naWNhbFJlY3Qud2lkdGgoKSA8PCAieCIgPDwgcnVuTG9naWNhbFJlY3QuaGVp
Z2h0KCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgbWlzbWF0
Y2hlZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBtaXNtYXRjaGVkOwogfQogCi1zdGF0aWMg
Ym9vbCBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoY29uc3QgRGlzcGxheTo6UnVuJiBpbmxp
bmVSdW4sIGNvbnN0IFdlYkNvcmU6OklubGluZUJveCYgaW5saW5lQm94KQorc3RhdGljIGJvb2wg
Y2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IExpbmVSdW4mIGxpbmVSdW4sIGNvbnN0
IFdlYkNvcmU6OklubGluZUJveCYgaW5saW5lQm94KQogewotICAgIHJldHVybiBhcmVFc3NlbnRp
YWxseUVxdWFsKGlubGluZUJveC5sZWZ0KCksIGlubGluZVJ1bi5sZWZ0KCkpCi0gICAgICAgICYm
IGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnJpZ2h0KCksIGlubGluZVJ1bi5yaWdodCgp
KQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC50b3AoKSwgaW5saW5l
UnVuLnRvcCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5ib3R0
b20oKSwgaW5saW5lUnVuLmJvdHRvbSgpKTsKKyAgICBhdXRvJiBydW5Mb2dpY2FsUmVjdCA9IGxp
bmVSdW4ubG9naWNhbFJlY3QoKTsKKyAgICByZXR1cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxp
bmVCb3gubGVmdCgpLCBydW5Mb2dpY2FsUmVjdC5sZWZ0KCkpCisgICAgICAgICYmIGFyZUVzc2Vu
dGlhbGx5RXF1YWwoaW5saW5lQm94LnJpZ2h0KCksIHJ1bkxvZ2ljYWxSZWN0LnJpZ2h0KCkpCisg
ICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnRvcCgpLCBydW5Mb2dpY2Fs
UmVjdC50b3AoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3guYm90
dG9tKCksIHJ1bkxvZ2ljYWxSZWN0LmJvdHRvbSgpKTsKIH0KIAogCi1zdGF0aWMgYm9vbCBjaGVj
a0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29uc3QgRGlzcGxheTo6UnVuJiBpbmxpbmVSdW4sIGNvbnN0
IFdlYkNvcmU6OklubGluZVRleHRCb3gmIGlubGluZVRleHRCb3gpCitzdGF0aWMgYm9vbCBjaGVj
a0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29uc3QgTGluZVJ1biYgbGluZVJ1biwgY29uc3QgV2ViQ29y
ZTo6SW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCkKIHsKLSAgICByZXR1cm4gYXJlRXNzZW50
aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LmxlZnQoKSwgaW5saW5lUnVuLmxlZnQoKSkKLSAgICAg
ICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LnJpZ2h0KCksIGlubGluZVJ1
bi5yaWdodCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gu
dG9wKCksIGlubGluZVJ1bi50b3AoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChp
bmxpbmVUZXh0Qm94LmJvdHRvbSgpLCBpbmxpbmVSdW4uYm90dG9tKCkpCi0gICAgICAgICYmIChp
bmxpbmVUZXh0Qm94LmlzTGluZUJyZWFrKCkgfHwgKGlubGluZVRleHRCb3guc3RhcnQoKSA9PSBp
bmxpbmVSdW4udGV4dENvbnRlbnQoKS0+c3RhcnQoKSAmJiBpbmxpbmVUZXh0Qm94LmVuZCgpID09
IGlubGluZVJ1bi50ZXh0Q29udGVudCgpLT5lbmQoKSkpOworICAgIGF1dG8mIHJ1bkxvZ2ljYWxS
ZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOworICAgIHJldHVybiBhcmVFc3NlbnRpYWxseUVx
dWFsKGlubGluZVRleHRCb3gubGVmdCgpLCBydW5Mb2dpY2FsUmVjdC5sZWZ0KCkpCisgICAgICAg
ICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5yaWdodCgpLCBydW5Mb2dpY2Fs
UmVjdC5yaWdodCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRC
b3gudG9wKCksIHJ1bkxvZ2ljYWxSZWN0LnRvcCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxs
eUVxdWFsKGlubGluZVRleHRCb3guYm90dG9tKCksIHJ1bkxvZ2ljYWxSZWN0LmJvdHRvbSgpKQor
ICAgICAgICAmJiAoaW5saW5lVGV4dEJveC5pc0xpbmVCcmVhaygpIHx8IChpbmxpbmVUZXh0Qm94
LnN0YXJ0KCkgPT0gbGluZVJ1bi50ZXh0KCktPnN0YXJ0KCkgJiYgaW5saW5lVGV4dEJveC5lbmQo
KSA9PSBsaW5lUnVuLnRleHQoKS0+ZW5kKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgY29sbGVjdEZs
b3dCb3hTdWJ0cmVlKGNvbnN0IElubGluZUZsb3dCb3gmIGZsb3dib3gsIFZlY3RvcjxXZWJDb3Jl
OjpJbmxpbmVCb3gqPiYgaW5saW5lQm94ZXMpCkBAIC0xNjUsMTQgKzE2Miw3IEBAIHN0YXRpYyB2
b2lkIGNvbGxlY3RJbmxpbmVCb3hlcyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3QsIFZlY3Rv
cjxXZWJDb3JlOjpJbmxpCiBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbnN0IENv
bnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCiB7CiAgICAgYXV0byYgaW5saW5lRm9y
bWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5s
aW5lRm9ybWF0dGluZ1Jvb3QpOwotCi0gICAgYXV0byogZGlzcGxheUlubGluZUNvbnRlbnQgPSBk
b3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuZGlz
cGxheUlubGluZUNvbnRlbnQoKTsKLSAgICBpZiAoIWRpc3BsYXlJbmxpbmVDb250ZW50KSB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgYXV0byYgZGlzcGxheVJ1bnMgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+cnVuczsKLQor
ICAgIGF1dG8mIGxpbmVSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxp
bmVGb3JtYXR0aW5nU3RhdGUpLmxpbmVSdW5zKCk7CiAgICAgLy8gQ29sbGVjdCBpbmxpbmVib3hl
cy4KICAgICBWZWN0b3I8V2ViQ29yZTo6SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7CiAgICAgY29s
bGVjdElubGluZUJveGVzKGJsb2NrRmxvdywgaW5saW5lQm94ZXMpOwpAQCAtMTgwLDE2ICsxNzAs
MTYgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9u
SWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLAogICAgIGF1dG8gbWlzbWF0Y2hlZCA9IGZhbHNl
OwogICAgIHVuc2lnbmVkIHJ1bkluZGV4ID0gMDsKIAotICAgIGlmIChpbmxpbmVCb3hlcy5zaXpl
KCkgIT0gZGlzcGxheVJ1bnMuc2l6ZSgpKSB7Ci0gICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzog
bWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1bnM6IGlubGluZWJveGVzKCIgPDwgaW5saW5lQm94ZXMu
c2l6ZSgpIDw8ICIpIHZzLiBpbmxpbmUgcnVucygiIDw8IGRpc3BsYXlSdW5zLnNpemUoKSA8PCAi
KSI7CisgICAgaWYgKGlubGluZUJveGVzLnNpemUoKSAhPSBsaW5lUnVucy5zaXplKCkpIHsKKyAg
ICAgICAgc3RyZWFtIDw8ICJXYXJuaW5nOiBtaXNtYXRjaGluZyBudW1iZXIgb2YgcnVuczogaW5s
aW5lYm94ZXMoIiA8PCBpbmxpbmVCb3hlcy5zaXplKCkgPDwgIikgdnMuIGlubGluZSBydW5zKCIg
PDwgbGluZVJ1bnMuc2l6ZSgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAg
ICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveElu
ZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgZGlzcGxheVJ1bnMuc2l6ZSgp
OyArK2lubGluZUJveEluZGV4KSB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlSdW4gPSBkaXNwbGF5
UnVuc1tydW5JbmRleF07CisgICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlu
bGluZUJveEluZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgbGluZVJ1bnMu
c2l6ZSgpOyArK2lubGluZUJveEluZGV4KSB7CisgICAgICAgIGF1dG8mIGxpbmVSdW4gPSBsaW5l
UnVuc1tydW5JbmRleF07CiAgICAgICAgIGF1dG8qIGlubGluZUJveCA9IGlubGluZUJveGVzW2lu
bGluZUJveEluZGV4XTsKICAgICAgICAgYXV0byogaW5saW5lVGV4dEJveCA9IGlzPFdlYkNvcmU6
OklubGluZVRleHRCb3g+KGlubGluZUJveCkgPyBkb3duY2FzdDxXZWJDb3JlOjpJbmxpbmVUZXh0
Qm94PihpbmxpbmVCb3gpIDogbnVsbHB0cjsKLSAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBp
bmxpbmVUZXh0Qm94ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGRpc3BsYXlSdW4sICppbmxp
bmVUZXh0Qm94KSA6IGNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyhkaXNwbGF5UnVuLCAqaW5s
aW5lQm94KTsKKyAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hl
Y2tGb3JNYXRjaGluZ1RleHRSdW5zKGxpbmVSdW4sICppbmxpbmVUZXh0Qm94KSA6IGNoZWNrRm9y
TWF0Y2hpbmdOb25UZXh0UnVucyhsaW5lUnVuLCAqaW5saW5lQm94KTsKIAogICAgICAgICBpZiAo
IW1hdGNoaW5nUnVucykgewogICAgICAgICAgICAgCkBAIC0yMDYsMTAgKzE5NiwxMSBAQCBzdGF0
aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChU
ZXh0U3RyZWFtJiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5s
aW5lVGV4dEJveC0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVRleHRCb3gtPmVuZCgpIDw8ICIp
IjsKICAgICAgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGlubGluZUJveC0+bG9naWNhbExlZnQo
KSA8PCAiLCAiIDw8IGlubGluZUJveC0+bG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGlubGluZUJv
eC0+bG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpIDw8
ICIpIjsKIAorICAgICAgICAgICAgYXV0byYgcnVuTG9naWNhbFJlY3QgPSBsaW5lUnVuLmxvZ2lj
YWxSZWN0KCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBpbmxpbmUgcnVuIjsKLSAgICAgICAg
ICAgIGlmIChkaXNwbGF5UnVuLnRleHRDb250ZW50KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFt
IDw8ICIgKCIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5zdGFydCgpIDw8ICIsICIgPDwg
ZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5lbmQoKSA8PCAiKSI7Ci0gICAgICAgICAgICBzdHJl
YW0gPDwgIiAoIiA8PCBkaXNwbGF5UnVuLmxlZnQoKSA8PCAiLCAiIDw8IGRpc3BsYXlSdW4udG9w
KCkgPDwgIikgKCIgPDwgZGlzcGxheVJ1bi53aWR0aCgpIDw8ICJ4IiA8PCBkaXNwbGF5UnVuLmhl
aWdodCgpIDw8ICIpIjsKKyAgICAgICAgICAgIGlmIChsaW5lUnVuLnRleHQoKSkKKyAgICAgICAg
ICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBsaW5lUnVuLnRleHQoKS0+c3RhcnQoKSA8PCAiLCAi
IDw8IGxpbmVSdW4udGV4dCgpLT5lbmQoKSA8PCAiKSI7CisgICAgICAgICAgICBzdHJlYW0gPDwg
IiAoIiA8PCBydW5Mb2dpY2FsUmVjdC5sZWZ0KCkgPDwgIiwgIiA8PCBydW5Mb2dpY2FsUmVjdC50
b3AoKSA8PCAiKSAoIiA8PCBydW5Mb2dpY2FsUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCBydW5Mb2dp
Y2FsUmVjdC5oZWlnaHQoKSA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsK
ICAgICAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5o
CmluZGV4IDQzN2EyMzg5ZWU1NTBlYTFlOWNiN2IxMjE2YmRjMTZkNzU4NjM4OTguLmE5YjQ1MGI5
MzkzZWQyMzcxYzhiNWYzMDg4MzQ0MGFlMDExYzE1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCkBAIC00
Niw4ICs0NiwxNSBAQCBzdHJ1Y3QgSW5saW5lQ29udGVudCA6IHB1YmxpYyBSZWZDb3VudGVkPElu
bGluZUNvbnRlbnQ+IHsKIAogICAgIGNvbnN0IExpbmUmIGxpbmVGb3JSdW4oY29uc3QgUnVuJiBy
dW4pIGNvbnN0IHsgcmV0dXJuIGxpbmVzW3J1bi5saW5lSW5kZXgoKV07IH0KICAgICBXVEY6Okl0
ZXJhdG9yUmFuZ2U8Y29uc3QgUnVuKj4gcnVuc0ZvclJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNv
bnN0OworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIH07CiAKK2lubGluZSB2b2lkIElubGluZUNv
bnRlbnQ6OnNocmlua1RvRml0KCkKK3sKKyAgICBydW5zLnNocmlua1RvRml0KCk7CisgICAgbGlu
ZXMuc2hyaW5rVG9GaXQoKTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZS5oCmluZGV4IDEwMGQwNGY5NjBiYjJjZjQwYTg2NTk3
NDY4NzQzMThlZjA5NjM5NmIuLmRjNTU2ZjMxY2M5M2Q5NzExYTk5OWE4MDE4MjliNWQ3MTY4MGM5
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
TGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGlu
ZS5oCkBAIC0zNSwyNSArMzUsMjkgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogY2xhc3MgTGluZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTGluZShjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3QgRmxv
YXRSZWN0JiBpbmtPdmVyZmxvdywgZmxvYXQgYmFzZWxpbmUpOworICAgIExpbmUoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3csIGNvbnN0IEZsb2F0
UmVjdCYgaW5rT3ZlcmZsb3csIGZsb2F0IGJhc2VsaW5lLCBmbG9hdCBob3Jpem9udGFsQWxpZ25t
ZW50T2Zmc2V0KTsKIAogICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdDsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlT3ZlcmZsb3c7IH0KICAgICBjb25zdCBGbG9hdFJlY3Qm
IGlua092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogICAgIGZsb2F0
IGJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlbGluZTsgfQorICAgIGZsb2F0IGhvcml6
b250YWxBbGlnbm1lbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxBbGlnbm1l
bnRPZmZzZXQ7IH0KKwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgRmxv
YXRSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93OwogICAgIEZsb2F0UmVjdCBtX2lua092ZXJmbG93
OwogICAgIGZsb2F0IG1fYmFzZWxpbmUgeyAwIH07CisgICAgZmxvYXQgbV9ob3Jpem9udGFsQWxp
Z25tZW50T2Zmc2V0OwogfTsKIAotaW5saW5lIExpbmU6OkxpbmUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3QgRmxvYXRSZWN0
JiBpbmtPdmVyZmxvdywgZmxvYXQgYmFzZWxpbmUpCitpbmxpbmUgTGluZTo6TGluZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25z
dCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBmbG9hdCBiYXNlbGluZSwgZmxvYXQgaG9yaXpvbnRh
bEFsaWdubWVudE9mZnNldCkKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9zY3JvbGxhYmxl
T3ZlcmZsb3coc2Nyb2xsYWJsZU92ZXJmbG93KQogICAgICwgbV9pbmtPdmVyZmxvdyhpbmtPdmVy
ZmxvdykKICAgICAsIG1fYmFzZWxpbmUoYmFzZWxpbmUpCisgICAgLCBtX2hvcml6b250YWxBbGln
bm1lbnRPZmZzZXQoaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5k
ZXggYzgzYWVjNjE3NjBiODBmYTYyMzQ0ZDA3YWZlNTNhNjQwMjUwNmQ1NS4uYjE0MTQ5MGU4Yjc4
NGNkNDZjMjBjZWNhOTk0N2Y1NGQxMThkZTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCkBAIC0xMTMsMzEgKzExMywy
MSBAQCBzdGF0aWMgdm9pZCBwYWludEJveERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldAogCiBzdGF0aWMgdm9pZCBwYWludElubGluZUNv
bnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQb2ludCBhYnNvbHV0ZU9mZnNl
dCwgY29uc3QgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkK
IHsKLSAgICBhdXRvKiBkaXNwbGF5SW5saW5lQ29udGVudCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNw
bGF5SW5saW5lQ29udGVudCgpOwotICAgIGlmICghZGlzcGxheUlubGluZUNvbnRlbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gZGlzcGxheUlubGluZUNvbnRl
bnQtPnJ1bnM7Ci0gICAgaWYgKGRpc3BsYXlSdW5zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZm9yIChhdXRvJiBydW4gOiBkaXNwbGF5UnVucykgewotICAgICAgICBpZiAoYXV0
byYgdGV4dENvbnRlbnQgPSBydW4udGV4dENvbnRlbnQoKSkgewotICAgICAgICAgICAgYXV0byYg
c3R5bGUgPSBydW4uc3R5bGUoKTsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IGZvcm1hdHRpbmdTdGF0
ZS5saW5lUnVucygpKSB7CisgICAgICAgIGF1dG8mIHJ1blJlY3QgPSBydW4ubG9naWNhbFJlY3Qo
KTsKKyAgICAgICAgaWYgKGF1dG8mIHRleHRDb250ZW50ID0gcnVuLnRleHQoKSkgeworICAgICAg
ICAgICAgYXV0byYgc3R5bGUgPSBydW4ubGF5b3V0Qm94KCkuc3R5bGUoKTsKICAgICAgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUuY29sb3IoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5jb2xvcigpKTsKIAotICAgICAgICAgICAgYXV0byBhYnNv
bHV0ZUxlZnQgPSBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgpOworICAgICAgICAgICAg
YXV0byBhYnNvbHV0ZUxlZnQgPSBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW5SZWN0LmxlZnQoKTsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgbm9uLWJhc2VsaW5lIGFsaWduIHBhaW50aW5nCi0g
ICAgICAgICAgICBhdXRvIGJhc2VsaW5lID0gYWJzb2x1dGVPZmZzZXQueSgpICsgcnVuLnRvcCgp
ICsgc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKKyAgICAgICAgICAgIGF1dG8gYmFzZWxp
bmUgPSBhYnNvbHV0ZU9mZnNldC55KCkgKyBydW5SZWN0LnRvcCgpICsgc3R5bGUuZm9udE1ldHJp
Y3MoKS5hc2NlbnQoKTsKICAgICAgICAgICAgIGF1dG8gZXhwYW5zaW9uID0gcnVuLmV4cGFuc2lv
bigpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmaW5hbCBwYWludGVyIHNob3VsZCBoYXZl
IGFjY2VzcyB0byB0aGUgY3VycmVudCBsaW5lIHRvIG9mZnNldCB0aGUgcnVucy4KLSAgICAgICAg
ICAgIGF1dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0Q29udGVudC0+Y29udGVudCgpLCBydW4u
bGVmdCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9y
IH07CisgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuIHsgdGV4dENvbnRlbnQtPmNv
bnRlbnQoKSwgcnVuUmVjdC5sZWZ0KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBl
eHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5
bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LmRyYXdUZXh0KHN0eWxlLmZvbnRDYXNjYWRlKCksIHRleHRSdW4sIHsgYWJzb2x1dGVM
ZWZ0LCBiYXNlbGluZSB9KTsKLSAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9
IHJ1bi5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHJ1bkFic29sdXRlUmVjdCA9IEZsb2F0
UmVjdCB7IGFic29sdXRlT2Zmc2V0LngoKSArIHJ1bi5sZWZ0KCksIGFic29sdXRlT2Zmc2V0Lnko
KSArIHJ1bi50b3AoKSwgcnVuLndpZHRoKCksIHJ1bi5oZWlnaHQoKSB9OwotICAgICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2UoKmNhY2hlZEltYWdlLT5pbWFnZSgpLCBydW5BYnNvbHV0ZVJlY3Qp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UnVuLmgKaW5kZXggYjcxNjE4MTJmODY5ODQzMzk4YzFkMmU2OGEwZWIxMzQ0
NmYxZjcxNy4uMmM2NDhhOTJkNGU5ZjIwNWMxZGI4NzRmMjhjN2JlYjg1ZjEwOGM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCkBAIC00Myw0
MiArNDMsMjYgQEAgc3RydWN0IFJ1biB7CiAgICAgc3RydWN0IFRleHRDb250ZW50IHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
VGV4dENvbnRlbnQodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBuZWVkc0h5cGhlbik7CisgICAgICAgIFRleHRDb250ZW50KHNpemVfdCBwb3Np
dGlvbiwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiwgYm9vbCBuZWVkc0h5cGhlbik7CiAK
LSAgICAgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9Ci0gICAg
ICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5ndGgoKTsgfQot
ICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAg
ICAgICBzaXplX3Qgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgICAgIHNp
emVfdCBlbmQoKSBjb25zdCB7IHJldHVybiBzdGFydCgpICsgbGVuZ3RoKCk7IH0KKyAgICAgICAg
c2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFN0cmlu
Z1ZpZXcgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZ1ZpZXcobV9jb250ZW50U3RyaW5n
KS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW5ndGgpOyB9Ci0KICAgICAgICAgYm9vbCBuZWVkc0h5
cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNIeXBoZW47IH0KLSAgICAgICAgdm9pZCBzZXRO
ZWVkc0h5cGhlbigpIHsgbV9uZWVkc0h5cGhlbiA9IHRydWU7IH0KLQotICAgICAgICB2b2lkIGV4
cGFuZCh1bnNpZ25lZCBkZWx0YSkgeyBtX2xlbmd0aCArPSBkZWx0YTsgfQotICAgICAgICB2b2lk
IHNocmluayh1bnNpZ25lZCBkZWx0YSkgeyBtX2xlbmd0aCAtPSBkZWx0YTsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdW5zaWduZWQgbV9zdGFydCB7IDAgfTsKLSAgICAgICAgdW5zaWduZWQg
bV9sZW5ndGggeyAwIH07CisgICAgICAgIHNpemVfdCBtX3N0YXJ0IHsgMCB9OworICAgICAgICBz
aXplX3QgbV9sZW5ndGggeyAwIH07CiAgICAgICAgIGJvb2wgbV9uZWVkc0h5cGhlbiB7IGZhbHNl
IH07CiAgICAgICAgIFN0cmluZyBtX2NvbnRlbnRTdHJpbmc7CiAgICAgfTsKIAogICAgIHN0cnVj
dCBFeHBhbnNpb247Ci0gICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94
JiwgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiwgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBp
bmtPdmVyZmxvdywgRXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0Q29udGVudD4gPSBXVEY6Om51bGxv
cHQpOwotCi0gICAgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0OyB9Ci0gICAgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7IH0KLQotICAgIElubGluZUxheW91dFBvaW50
IHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wTGVmdCgpOyB9Ci0gICAgSW5saW5l
TGF5b3V0VW5pdCBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmxlZnQoKTsgfQotICAgIElu
bGluZUxheW91dFVuaXQgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QucmlnaHQoKTsgfQot
ICAgIElubGluZUxheW91dFVuaXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9
Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90
dG9tKCk7IH0KKyAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpCb3gmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24s
IE9wdGlvbmFsPFRleHRDb250ZW50PiA9IFdURjo6bnVsbG9wdCk7CiAKLSAgICBJbmxpbmVMYXlv
dXRVbml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KLSAgICBJbmxp
bmVMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQot
Ci0gICAgdm9pZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0KTsKKyAgICBjb25zdCBG
bG9hdFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBGbG9h
dFJlY3QmIGlua092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogCiAg
ICAgT3B0aW9uYWw8VGV4dENvbnRlbnQ+JiB0ZXh0Q29udGVudCgpIHsgcmV0dXJuIG1fdGV4dENv
bnRlbnQ7IH0KICAgICBjb25zdCBPcHRpb25hbDxUZXh0Q29udGVudD4mIHRleHRDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsgfQpAQCAtMTAzLDEzICs4NywxMyBAQCBwcml2
YXRlOgogICAgIGNvbnN0IHNpemVfdCBtX2xpbmVJbmRleDsKICAgICBXZWFrUHRyPGNvbnN0IExh
eW91dDo6Qm94PiBtX2xheW91dEJveDsKICAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZSB7
IG51bGxwdHIgfTsKLSAgICBMYXlvdXQ6OklubGluZVJlY3QgbV9yZWN0OwotICAgIExheW91dDo6
SW5saW5lUmVjdCBtX2lua092ZXJmbG93OworICAgIEZsb2F0UmVjdCBtX3JlY3Q7CisgICAgRmxv
YXRSZWN0IG1faW5rT3ZlcmZsb3c7CiAgICAgRXhwYW5zaW9uIG1fZXhwYW5zaW9uOwogICAgIE9w
dGlvbmFsPFRleHRDb250ZW50PiBtX3RleHRDb250ZW50OwogfTsKIAotaW5saW5lIFJ1bjo6UnVu
KHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IExh
eW91dDo6SW5saW5lUmVjdCYgcmVjdCwgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVy
ZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+IHRleHRDb250
ZW50KQoraW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94
JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtP
dmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+IHRleHRD
b250ZW50KQogICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQogICAgICwgbV9sYXlvdXRCb3go
bWFrZVdlYWtQdHIobGF5b3V0Qm94KSkKICAgICAsIG1fcmVjdChyZWN0KQpAQCAtMTE5LDcgKzEw
Myw3IEBAIGlubGluZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJv
eCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkluCiB7CiB9CiAKLWlubGluZSBSdW46OlRleHRD
b250ZW50OjpUZXh0Q29udGVudCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTdHJpbmcsIGJvb2wgbmVlZHNIeXBoZW4pCitpbmxpbmUgUnVuOjpU
ZXh0Q29udGVudDo6VGV4dENvbnRlbnQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTdHJpbmcsIGJvb2wgbmVlZHNIeXBoZW4pCiAgICAgOiBtX3N0YXJ0
KHN0YXJ0KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9uZWVkc0h5cGhlbihuZWVk
c0h5cGhlbikKQEAgLTEyNywxMiArMTExLDYgQEAgaW5saW5lIFJ1bjo6VGV4dENvbnRlbnQ6OlRl
eHRDb250ZW50KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmkKIHsK
IH0KIAotaW5saW5lIHZvaWQgUnVuOjptb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9m
ZnNldCkKLXsKLSAgICBtX3JlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsKLSAgICBtX2lua092
ZXJmbG93Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7Ci19Ci0KIH0KIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcvRmxleEZv
cm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAxY2ViYjA2ZWZmYmI4OTU3NmE0MGJjOWM4MDI5OWI2
NDVmODNmODYwLi41MzEzYmM4ZTMyMDAzODRmNjA1ODZiMmRiNzMzYjk5NWZjNWZiODFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcvRmxleEZvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcv
RmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEZsZXhGb3Jt
YXR0aW5nQ29udGV4dDo6c2l6ZUFuZFBsYWNlRmxleEl0ZW1zKGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udAogICAgICAgICBjb21wdXRlRmxleEl0ZW1HZW9tZXRyeSgpOwogICAgIH0KICAg
ICBhdXRvIGZsZXhMaW5lID0gSW5saW5lUmVjdCB7IGZsZXhJdGVtQ3Jvc0F4aXNTdGFydCwgZmxl
eEl0ZW1NYWluQXhpc1N0YXJ0LCBmbGV4SXRlbU1haW5BeGlzRW5kIC0gZmxleEl0ZW1NYWluQXhp
c1N0YXJ0LCBmbGV4SXRlbUNyb3NBeGlzRW5kIC0gZmxleEl0ZW1Dcm9zQXhpc1N0YXJ0IH07Ci0g
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmUoeyBmbGV4TGluZSwgZmxleExpbmUsIGZsZXhMaW5l
LCB7IH0gfSk7CisgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmUoeyBmbGV4TGluZSwgZmxleExp
bmUsIGZsZXhMaW5lLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBGbGV4Rm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yRmxleEl0ZW1zKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA4ODZkN2U3MWU0YjYxNTA2MjliMTg1
MjBmMjdlN2YzZGUzN2FmZWVkLi5iMWQ4ZmNkNDEyZDA4NWI4YWNmZjc1YmY2ZjE4MjdlYjE5YmQ5
MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5n
U3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCisjaW5jbHVkZSAiSW5saW5lTGlu
ZVJ1bi5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0
aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKQEAgLTQwMiw2MyArNDAzLDIwIEBA
IElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxp
bmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAgICAgYXV0byBsaW5lSW5kZXggPSBmb3JtYXR0aW5n
U3RhdGUubGluZXMoKS5zaXplKCk7CiAKICAgICBhdXRvIGNvbnN0cnVjdExpbmVHZW9tZXRyeSA9
IFsmXSB7Ci0gICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxp
bmVMb2dpY2FsUmVjdC50b3AoKSArIGxpbmVCb3hWZXJ0aWNhbE9mZnNldCwgbGluZUxvZ2ljYWxS
ZWN0LmxlZnQoKSArIGxpbmVCb3guaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCgpLnZhbHVlT3Io
SW5saW5lTGF5b3V0VW5pdCB7IH0pLCBsaW5lQm94LmxvZ2ljYWxXaWR0aCgpLCBsaW5lQm94Lmxv
Z2ljYWxIZWlnaHQoKSB9OwotICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZSh7IGxpbmVM
b2dpY2FsUmVjdCwgbGluZUJveExvZ2ljYWxSZWN0LCBsaW5lQm94VmVydGljYWxPZmZzZXQgKyBs
aW5lQm94LmFsaWdubWVudEJhc2VsaW5lKCkgfSk7CisgICAgICAgIGF1dG8gbGluZUJveExvZ2lj
YWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsUmVjdC50b3AoKSArIGxpbmVCb3hWZXJ0
aWNhbE9mZnNldCwgbGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGluZUJveC5sb2dpY2FsV2lkdGgo
KSwgbGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgfTsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZExpbmUoeyBsaW5lTG9naWNhbFJlY3QsIGxpbmVCb3hMb2dpY2FsUmVjdCwgbGluZUJveFZlcnRp
Y2FsT2Zmc2V0ICsgbGluZUJveC5hbGlnbm1lbnRCYXNlbGluZSgpLCBsaW5lQm94Lmhvcml6b250
YWxBbGlnbm1lbnRPZmZzZXQoKS52YWx1ZU9yKElubGluZUxheW91dFVuaXQgeyB9KSB9KTsKICAg
ICB9OwogICAgIGNvbnN0cnVjdExpbmVHZW9tZXRyeSgpOwogCi0gICAgaWYgKCFsaW5lQ29udGVu
dC5mbG9hdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxv
YXRpbmdDb250ZXh0IHsgcm9vdCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3Rh
dGUoKSB9OwotICAgICAgICAvLyBNb3ZlIGZsb2F0cyB0byB0aGVpciBmaW5hbCBwb3NpdGlvbi4K
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBmbG9hdENhbmRpZGF0ZSA6IGxpbmVDb250ZW50LmZs
b2F0cykgewotICAgICAgICAgICAgYXV0byYgZmxvYXRCb3ggPSBmbG9hdENhbmRpZGF0ZS5pdGVt
LT5sYXlvdXRCb3goKTsKLSAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGlu
Z1N0YXRlLmJveEdlb21ldHJ5KGZsb2F0Qm94KTsKLSAgICAgICAgICAgIC8vIFNldCBzdGF0aWMg
cG9zaXRpb24gZmlyc3QuCi0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24g
PSBmbG9hdENhbmRpZGF0ZS5pc0ludHJ1c2l2ZSA/IGxpbmVMb2dpY2FsUmVjdC50b3AoKSA6IGxp
bmVMb2dpY2FsUmVjdC5ib3R0b20oKTsKLSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2lj
YWxUb3BMZWZ0KHsgbGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgdmVydGljYWxTdGF0aWNQb3NpdGlv
biB9KTsKLSAgICAgICAgICAgIC8vIEZsb2F0IGl0LgotICAgICAgICAgICAgYm94R2VvbWV0cnku
c2V0TG9naWNhbFRvcExlZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yRmxvYXQoZmxvYXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cykpOwotICAgICAgICAgICAgZmxvYXRpbmdDb250ZXh0
LmFwcGVuZChmbG9hdEJveCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIGluaXRpYWxD
b250YWluZ0Jsb2NrU2l6ZSA9IExheW91dFNpemUgeyB9OwotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdy
YXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgLy8gSUNCIGlzIG5vdCB0aGUgcmVhbCBJQ0Igd2hl
biBseW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIGlzIG9uLgotICAgICAg
ICBpbml0aWFsQ29udGFpbmdCbG9ja1NpemUgPSBsYXlvdXRTdGF0ZSgpLnZpZXdwb3J0U2l6ZSgp
OwotICAgIH0gZWxzZQotICAgICAgICBpbml0aWFsQ29udGFpbmdCbG9ja1NpemUgPSBnZW9tZXRy
eUZvckJveChyb290KCkuaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpLCBFc2NhcGVSZWFzb246OlN0
cm9rZU92ZXJmbG93TmVlZHNWaWV3cG9ydEdlb21ldHJ5KS5jb250ZW50Qm94KCkuc2l6ZSgpOwot
ICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0aW5nU3RhdGUuZW5zdXJlRGlzcGxheUlu
bGluZUNvbnRlbnQoKTsKLSAgICAvLyBDb21wdXRlIGZpbmFsIGJveCBnZW9tZXRyeS4KICAgICBm
b3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5zKSB7CiAgICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7CiAgICAgICAgIC8vIElubGluZSBsZXZlbCBj
b250YWluZXJzICg8c3Bhbj4pIGRvbid0IGdlbmVyYXRlIGRpc3BsYXkgcnVucyBhbmQgbmVpdGhl
ciBkbyBjb21wbGV0ZWx5IGNvbGxhcHNlZCBydW5zLgogICAgICAgICBhdXRvIGluaXRpYXRlc0lu
bGluZVJ1biA9IGxpbmVSdW4uaXNUZXh0KCkgfHwgbGluZVJ1bi5pc0xpbmVCcmVhaygpIHx8IGxp
bmVSdW4uaXNCb3goKTsKICAgICAgICAgaWYgKGluaXRpYXRlc0lubGluZVJ1bikgewotICAgICAg
ICAgICAgYXV0byBjb21wdXRlZElua092ZXJmbG93ID0gWyZdIChjb25zdCBhdXRvJiBsb2dpY2Fs
UmVjdCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLXRl
eHQgaW5rIG92ZXJmbG93LgotICAgICAgICAgICAgICAgIGlmICghbGluZVJ1bi5pc1RleHQoKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxSZWN0OwotICAgICAgICAgICAgICAg
IGF1dG8mIHN0eWxlID0gbGluZVJ1bi5zdHlsZSgpOwotICAgICAgICAgICAgICAgIGF1dG8gaW5r
T3ZlcmZsb3cgPSBsb2dpY2FsUmVjdDsKLSAgICAgICAgICAgICAgICBhdXRvIHN0cm9rZU92ZXJm
bG93ID0gc3RkOjpjZWlsKHN0eWxlLmNvbXB1dGVkU3Ryb2tlV2lkdGgoY2VpbGVkSW50U2l6ZShp
bml0aWFsQ29udGFpbmdCbG9ja1NpemUpKSk7Ci0gICAgICAgICAgICAgICAgaW5rT3ZlcmZsb3cu
aW5mbGF0ZShzdHJva2VPdmVyZmxvdyk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGxldHRlclNw
YWNpbmcgPSBzdHlsZS5mb250Q2FzY2FkZSgpLmxldHRlclNwYWNpbmcoKTsKLSAgICAgICAgICAg
ICAgICBpZiAobGV0dGVyU3BhY2luZyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTGFz
dCBsZXR0ZXIncyBuZWdhdGl2ZSBzcGFjaW5nIHNocmlua3MgbG9naWNhbCByZWN0LiBQdXNoIGl0
IHRvIGluayBvdmVyZmxvdy4KLSAgICAgICAgICAgICAgICAgICAgaW5rT3ZlcmZsb3cuZXhwYW5k
SG9yaXpvbnRhbGx5KC1sZXR0ZXJTcGFjaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGlua092ZXJmbG93OwotICAgICAgICAgICAgfTsKICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFJlY3QgPSBsaW5lUnVuLmlzQm94KCkgPyBsaW5lQm94LmlubGluZUJveEZv
ckxheW91dEJveChsYXlvdXRCb3gpLmxvZ2ljYWxSZWN0KCkgOiBsaW5lQm94LmxvZ2ljYWxSZWN0
Rm9yVGV4dFJ1bihsaW5lUnVuKTsKLSAgICAgICAgICAgIC8vIElubGluZSBib3hlcyBhcmUgcmVs
YXRpdmUgdG8gdGhlIGxpbmUgYm94IHdoaWxlIGZpbmFsIERpc3BsYXk6OlJ1bnMgbmVlZCB0byBi
ZSByZWxhdGl2ZSB0byB0aGUgcGFyZW50IERpc3BsYXk6Qm94Ci0gICAgICAgICAgICAvLyBGSVhN
RTogU2hvdWxkbid0IHdlIGp1c3QgbGVhdmUgdGhlbSBiZSByZWxhdGl2ZSB0byB0aGUgbGluZSBi
b3g/Ci0gICAgICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlQnkoeyBsaW5lTG9naWNhbFJlY3QubGVm
dCgpLCBsaW5lTG9naWNhbFJlY3QudG9wKCkgKyBsaW5lQm94VmVydGljYWxPZmZzZXQgfSk7Ci0g
ICAgICAgICAgICBpbmxpbmVDb250ZW50LnJ1bnMuYXBwZW5kKHsgbGluZUluZGV4LCBsYXlvdXRC
b3gsIGxvZ2ljYWxSZWN0LCBjb21wdXRlZElua092ZXJmbG93KGxvZ2ljYWxSZWN0KSwgbGluZVJ1
bi5leHBhbnNpb24oKSwgbGluZVJ1bi50ZXh0Q29udGVudCgpIH0pOworICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIGxheW91dEJveCwgbG9naWNhbFJl
Y3QsIGxpbmVSdW4uZXhwYW5zaW9uKCksIGxpbmVSdW4udGV4dENvbnRlbnQoKSB9KTsKICAgICAg
ICAgfQogCi0gICAgICAgIC8vIENyZWF0ZSBkaXNwbGF5IGJveGVzLgogICAgICAgICAvLyBGSVhN
RTogU2luY2UgPGJyPiBhbmQgPHdicj4gcnVucyBoYXZlIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnRz
LCB3ZSBtaWdodCBuZWVkIHRvIGNvbnN0cnVjdCBhIGRpc3BsYXkgYm94IGhlcmUuIAogICAgICAg
ICBhdXRvIG5lZWRzQm94R2VvbWV0cnkgPSBsaW5lUnVuLmlzQm94KCkgfHwgbGluZVJ1bi5pc0Nv
bnRhaW5lclN0YXJ0KCk7CiAgICAgICAgIGlmIChuZWVkc0JveEdlb21ldHJ5KSB7CkBAIC00Nzgs
NiArNDM2LDIxIEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVH
ZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICBpZiAoIWxpbmVDb250ZW50LmZsb2F0cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyByb290KCks
ICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpIH07CisgICAgICAgIC8vIE1v
dmUgZmxvYXRzIHRvIHRoZWlyIGZpbmFsIHBvc2l0aW9uLgorICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGZsb2F0Q2FuZGlkYXRlIDogbGluZUNvbnRlbnQuZmxvYXRzKSB7CisgICAgICAgICAgICBh
dXRvJiBmbG9hdEJveCA9IGZsb2F0Q2FuZGlkYXRlLml0ZW0tPmxheW91dEJveCgpOworICAgICAg
ICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkoZmxv
YXRCb3gpOworICAgICAgICAgICAgLy8gU2V0IHN0YXRpYyBwb3NpdGlvbiBmaXJzdC4KKyAgICAg
ICAgICAgIGF1dG8gdmVydGljYWxTdGF0aWNQb3NpdGlvbiA9IGZsb2F0Q2FuZGlkYXRlLmlzSW50
cnVzaXZlID8gbGluZUxvZ2ljYWxSZWN0LnRvcCgpIDogbGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgp
OworICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBsaW5lTG9naWNh
bFJlY3QubGVmdCgpLCB2ZXJ0aWNhbFN0YXRpY1Bvc2l0aW9uIH0pOworICAgICAgICAgICAgLy8g
RmxvYXQgaXQuCisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChmbG9h
dGluZ0NvbnRleHQucG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzKSk7CisgICAgICAgICAgICBmbG9hdGluZ0NvbnRleHQuYXBwZW5kKGZsb2F0Qm94KTsKKyAg
ICAgICAgfQorICAgIH0KICAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDZlYmM0YTE4NzgzMjQ3YjdmODRmODM2YjY5MTk4MmZj
MTIxZGMyMGIuLjEwNGE4NzMwOThkOTE4YTIzY2VlMjgzYjc3NGFlZmZiOTIxNmUwOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxheUlubGluZUNv
bnRlbnQuaCIKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVJ
dGVtLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUdlb21ldHJ5LmgiCisjaW5jbHVkZSAiSW5saW5l
TGluZVJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogdXNpbmcgSW5saW5l
SXRlbXMgPSBWZWN0b3I8SW5saW5lSXRlbT47CiB1c2luZyBJbmxpbmVMaW5lcyA9IFZlY3RvcjxJ
bmxpbmVMaW5lR2VvbWV0cnk+OwordXNpbmcgSW5saW5lTGluZVJ1bnMgPSBWZWN0b3I8TGluZVJ1
bj47CiAKIC8vIElubGluZUZvcm1hdHRpbmdTdGF0ZSBob2xkcyB0aGUgc3RhdGUgZm9yIGEgcGFy
dGljdWxhciBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHRyZWUuCiBjbGFzcyBJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsKQEAgLTU0LDQwICs1NSwzMCBA
QCBwdWJsaWM6CiAgICAgSW5saW5lTGluZXMmIGxpbmVzKCkgeyByZXR1cm4gbV9saW5lczsgfQog
ICAgIHZvaWQgYWRkTGluZShjb25zdCBJbmxpbmVMaW5lR2VvbWV0cnkmIGxpbmUpIHsgbV9saW5l
cy5hcHBlbmQobGluZSk7IH0KIAotICAgIGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIGRp
c3BsYXlJbmxpbmVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SW5saW5lQ29udGVu
dC5nZXQoKTsgfQotICAgIERpc3BsYXk6OklubGluZUNvbnRlbnQmIGVuc3VyZURpc3BsYXlJbmxp
bmVDb250ZW50KCk7CisgICAgY29uc3QgSW5saW5lTGluZVJ1bnMmIGxpbmVSdW5zKCkgY29uc3Qg
eyByZXR1cm4gbV9saW5lUnVuczsgfQorICAgIElubGluZUxpbmVSdW5zJiBsaW5lUnVucygpIHsg
cmV0dXJuIG1fbGluZVJ1bnM7IH0KKyAgICB2b2lkIGFkZExpbmVSdW4oY29uc3QgTGluZVJ1biYg
cnVuKSB7IG1fbGluZVJ1bnMuYXBwZW5kKHJ1bik7IH0KIAogICAgIHZvaWQgY2xlYXJMaW5lQW5k
UnVucygpOwotICAgIHZvaWQgc2hyaW5rRGlzcGxheUlubGluZUNvbnRlbnQoKTsKKyAgICB2b2lk
IHNocmlua1RvRml0KCk7CiAKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVhYmxlIGlucHV0IHRvIGxp
bmUgbGF5b3V0LgogICAgIElubGluZUl0ZW1zIG1faW5saW5lSXRlbXM7CiAgICAgSW5saW5lTGlu
ZXMgbV9saW5lczsKLQotICAgIFJlZlB0cjxEaXNwbGF5OjpJbmxpbmVDb250ZW50PiBtX2Rpc3Bs
YXlJbmxpbmVDb250ZW50OworICAgIElubGluZUxpbmVSdW5zIG1fbGluZVJ1bnM7CiB9OwogCi1p
bmxpbmUgRGlzcGxheTo6SW5saW5lQ29udGVudCYgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjplbnN1
cmVEaXNwbGF5SW5saW5lQ29udGVudCgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlJbmxpbmVDb250
ZW50KQotICAgICAgICBtX2Rpc3BsYXlJbmxpbmVDb250ZW50ID0gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5OjpJbmxpbmVDb250ZW50KTsKLSAgICByZXR1cm4gKm1fZGlzcGxheUlubGluZUNvbnRlbnQ7
Ci19Ci0KIGlubGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kUnVu
cygpCiB7Ci0gICAgbV9kaXNwbGF5SW5saW5lQ29udGVudCA9IG51bGxwdHI7CiAgICAgbV9saW5l
cy5jbGVhcigpOworICAgIG1fbGluZVJ1bnMuY2xlYXIoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ1N0YXRlOjpzaHJpbmtEaXNwbGF5SW5saW5lQ29udGVudCgpCitpbmxpbmUg
dm9pZCBJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlua1RvRml0KCkKIHsKICAgICBtX2xpbmVz
LnNocmlua1RvRml0KCk7Ci0gICAgaWYgKCFtX2Rpc3BsYXlJbmxpbmVDb250ZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgbV9kaXNwbGF5SW5saW5lQ29udGVudC0+cnVucy5zaHJpbmtUb0ZpdCgp
OwotICAgIG1fZGlzcGxheUlubGluZUNvbnRlbnQtPmxpbmVzLnNocmlua1RvRml0KCk7CisgICAg
bV9saW5lUnVucy5zaHJpbmtUb0ZpdCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXggZDcwNTVlNmJmYzNm
YjljOWI3MDU5Nzc4ZjdiNmE0YTFhMGJiOWIzYy4uMmU5NWE3YzcxZTRjNTRlOTEyY2E0NGQyZjg0
NmQ4MDMxMTdlNGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5UnVuLmgiCiAjaW5j
bHVkZSAiSW5saW5lSXRlbS5oIgorI2luY2x1ZGUgIklubGluZUxpbmVSdW4uaCIKICNpbmNsdWRl
ICJJbmxpbmVUZXh0SXRlbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MSwxMyArNzEs
MTMgQEAgcHVibGljOgogCiAgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9Ci0gICAgICAgIGNvbnN0IE9w
dGlvbmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ+JiB0ZXh0Q29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KKyAgICAgICAgY29uc3QgT3B0aW9uYWw8TGluZVJ1bjo6
VGV4dD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsgfQogCiAg
ICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dpY2FsV2lkdGg7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9naWNhbExlZnQ7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRo
KCk7IH0KIAotICAgICAgICBjb25zdCBEaXNwbGF5OjpSdW46OkV4cGFuc2lvbiYgZXhwYW5zaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KKyAgICAgICAgY29uc3QgTGluZVJ1bjo6
RXhwYW5zaW9uJiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogICAg
ICAgICBib29sIGhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkgY29uc3QgeyByZXR1cm4gbV9leHBh
bnNpb25PcHBvcnR1bml0eUNvdW50OyB9CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVu
aXR5Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQ7IH0K
QEAgLTEyMSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIElubGluZUxheW91dFVuaXQgbV9s
b2dpY2FsV2lkdGggeyAwIH07CiAgICAgICAgIFRyYWlsaW5nV2hpdGVzcGFjZSBtX3RyYWlsaW5n
V2hpdGVzcGFjZVR5cGUgeyBUcmFpbGluZ1doaXRlc3BhY2U6Ok5vbmUgfTsKICAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoIHsgMCB9OwotICAgICAgICBP
cHRpb25hbDxEaXNwbGF5OjpSdW46OlRleHRDb250ZW50PiBtX3RleHRDb250ZW50OwotICAgICAg
ICBEaXNwbGF5OjpSdW46OkV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKKyAgICAgICAgT3B0aW9uYWw8
TGluZVJ1bjo6VGV4dD4gbV90ZXh0Q29udGVudDsKKyAgICAgICAgTGluZVJ1bjo6RXhwYW5zaW9u
IG1fZXhwYW5zaW9uOwogICAgICAgICB1bnNpZ25lZCBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQgeyAwIH07CiAgICAgfTsKICAgICB1c2luZyBSdW5MaXN0ID0gVmVjdG9yPFJ1biwgMTA+Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUdlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lR2VvbWV0cnkuaAppbmRleCA0YjhmZDc1NTFkZDEzZTA4OTMyOThhZGMzNzAxMjk0
ZjUyYjgzZjIyLi43ZWNmNGUxZThkN2Q3MjFiZWZlNjA4ZWRhYzJjNDg0MDBlMTAyMDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
R2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lR2VvbWV0cnkuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsK
IGNsYXNzIElubGluZUxpbmVHZW9tZXRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgSW5saW5lTGluZUdlb21ldHJ5KGNvbnN0IElubGluZVJlY3QmIGxpbmVM
b2dpY2FsUmVjdCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBJbmxpbmVM
YXlvdXRVbml0IGFsaWdtZW50QmFzZWxpbmUpOworICAgIElubGluZUxpbmVHZW9tZXRyeShjb25z
dCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hM
b2dpY2FsUmVjdCwgSW5saW5lTGF5b3V0VW5pdCBhbGlnbWVudEJhc2VsaW5lLCBJbmxpbmVMYXlv
dXRVbml0IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQpOwogCiAgICAgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVmdCgpOyB9Owog
ICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNh
bFJlY3QoKS5yaWdodCgpOyB9OwpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
SW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94
TG9naWNhbFJlY3Q7IH0KIAogICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBjb25zdCB7
IHJldHVybiBtX2FsaWdtZW50QmFzZWxpbmU7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGhvcml6
b250YWxBbGlnbm1lbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxBbGlnbm1l
bnRPZmZzZXQ7IH0KIAogICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBv
ZmZzZXQpIHsgbV9sb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOyB9CiAKQEAgLTU3
LDEyICs1OCwxNCBAQCBwcml2YXRlOgogICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKICAg
ICBJbmxpbmVSZWN0IG1fbGluZUJveExvZ2ljYWxSZWN0OwogICAgIElubGluZUxheW91dFVuaXQg
bV9hbGlnbWVudEJhc2VsaW5lIHsgMCB9OworICAgIElubGluZUxheW91dFVuaXQgbV9ob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0IHsgMCB9OwogfTsKIAotaW5saW5lIElubGluZUxpbmVHZW9tZXRy
eTo6SW5saW5lTGluZUdlb21ldHJ5KGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwg
Y29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBJbmxpbmVMYXlvdXRVbml0IGFs
aWdtZW50QmFzZWxpbmUpCitpbmxpbmUgSW5saW5lTGluZUdlb21ldHJ5OjpJbmxpbmVMaW5lR2Vv
bWV0cnkoY29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBJbmxpbmVSZWN0
JiBsaW5lQm94TG9naWNhbFJlY3QsIElubGluZUxheW91dFVuaXQgYWxpZ21lbnRCYXNlbGluZSwg
SW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KQogICAgIDogbV9sb2dp
Y2FsUmVjdChsaW5lTG9naWNhbFJlY3QpCiAgICAgLCBtX2xpbmVCb3hMb2dpY2FsUmVjdChsaW5l
Qm94TG9naWNhbFJlY3QpCiAgICAgLCBtX2FsaWdtZW50QmFzZWxpbmUoYWxpZ21lbnRCYXNlbGlu
ZSkKKyAgICAsIG1faG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChob3Jpem9udGFsQWxpZ25tZW50
T2Zmc2V0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lUnVuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU3ZjM4N2NmM2MxM2NhZDM4
N2Y4MzRkMDM5YTc0NzhhZGU3NmE2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVSdW4uaApAQCAtMCwwICsxLDEwNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0
Qm94LmgiCisjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBMYXlvdXQgeworCitzdHJ1Y3QgTGluZVJ1biB7CisgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOworICAgIHN0cnVjdCBUZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dChzaXplX3QgcG9z
aXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYsIGJvb2wgbmVlZHNIeXBoZW4pOwor
CisgICAgICAgIHNpemVfdCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KKyAgICAg
ICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5ndGgoKTsgfQorICAg
ICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAg
U3RyaW5nIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTdHJpbmc7IH0KKworICAg
ICAgICBib29sIG5lZWRzSHlwaGVuKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0h5cGhlbjsgfQor
ICAgICAgICB2b2lkIHNldE5lZWRzSHlwaGVuKCkgeyBtX25lZWRzSHlwaGVuID0gdHJ1ZTsgfQor
CisgICAgICAgIHZvaWQgZXhwYW5kKHNpemVfdCBkZWx0YSkgeyBtX2xlbmd0aCArPSBkZWx0YTsg
fQorICAgICAgICB2b2lkIHNocmluayhzaXplX3QgZGVsdGEpIHsgbV9sZW5ndGggLT0gZGVsdGE7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHNpemVfdCBtX3N0YXJ0IHsgMCB9OworICAgICAg
ICBzaXplX3QgbV9sZW5ndGggeyAwIH07CisgICAgICAgIGJvb2wgbV9uZWVkc0h5cGhlbiB7IGZh
bHNlIH07CisgICAgICAgIFN0cmluZyBtX2NvbnRlbnRTdHJpbmc7CisgICAgfTsKKworICAgIHN0
cnVjdCBFeHBhbnNpb247CisgICAgTGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBCb3gm
LCBjb25zdCBJbmxpbmVSZWN0JiwgRXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0PiA9IFdURjo6bnVs
bG9wdCk7CisKKyAgICBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9naWNhbFJlY3Q7IH0KKyAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91
dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQor
ICAgIE9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3Qg
T3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKworICAgIHN0
cnVjdCBFeHBhbnNpb24geworICAgICAgICBFeHBhbnNpb25CZWhhdmlvciBiZWhhdmlvciB7IERl
ZmF1bHRFeHBhbnNpb24gfTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsRXhw
YW5zaW9uIHsgMCB9OworICAgIH07CisgICAgRXhwYW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwYW5zaW9uOyB9CisgICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7
IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KKworICAgIHNpemVfdCBsaW5lSW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2xpbmVJbmRleDsgfQorCitwcml2YXRlOgorICAgIGNvbnN0IHNpemVfdCBtX2xp
bmVJbmRleDsKKyAgICBXZWFrUHRyPGNvbnN0IExheW91dDo6Qm94PiBtX2xheW91dEJveDsKKyAg
ICBJbmxpbmVSZWN0IG1fbG9naWNhbFJlY3Q7CisgICAgRXhwYW5zaW9uIG1fZXhwYW5zaW9uOwor
ICAgIE9wdGlvbmFsPFRleHQ+IG1fdGV4dDsKK307CisKK2lubGluZSBMaW5lUnVuOjpMaW5lUnVu
KHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElu
bGluZVJlY3QmIGxvZ2ljYWxSZWN0LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0
PiB0ZXh0KQorICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQorICAgICwgbV9sYXlvdXRCb3go
bWFrZVdlYWtQdHIobGF5b3V0Qm94KSkKKyAgICAsIG1fbG9naWNhbFJlY3QobG9naWNhbFJlY3Qp
CisgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCisgICAgLCBtX3RleHQodGV4dCkKK3sKK30K
KworaW5saW5lIExpbmVSdW46OlRleHQ6OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTdHJpbmcsIGJvb2wgbmVlZHNIeXBoZW4pCisgICAgOiBt
X3N0YXJ0KHN0YXJ0KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9uZWVkc0h5cGhl
bihuZWVkc0h5cGhlbikKKyAgICAsIG1fY29udGVudFN0cmluZyhjb250ZW50U3RyaW5nKQorewor
fQorCit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXgg
YmIxOGI1MjQyZmIyYzNkODRkMDlhODM4ODg2MTQ0NmQzM2Y2ODdmMS4uMWNhMzEwOWIzZWUyNzBm
MDc4ZDQwMDgyNzQzYWFiMzM1ZmQ5ODkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiAgICAg
cHJlcGFyZUxheW91dFN0YXRlKCk7CiAgICAgcHJlcGFyZUZsb2F0aW5nU3RhdGUoKTsKIAorICAg
IG1fZGlzcGxheUlubGluZUNvbnRlbnQgPSBudWxscHRyOwogICAgIGF1dG8gaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQgPSBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0IHsgcm9vdExheW91
dEJveCgpLCBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZSB9OwogCiAgICAgYXV0byBpbnZhbGlkYXRp
b25TdGF0ZSA9IExheW91dDo6SW52YWxpZGF0aW9uU3RhdGUgeyB9OwpAQCAtMTIyLDkgKzEyMyw0
NiBAQCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiAKIHZvaWQgTGluZUxheW91dDo6Y29uc3Ry
dWN0RGlzcGxheUNvbnRlbnQoKQogewotICAgIC8vIEZJWE1FOiBNb3ZlIERpc3BsYXk6OlJ1biBj
b25zdHJ1Y3Rpb24gb3ZlciBoZXJlLgorICAgIGF1dG8mIGRpc3BsYXlJbmxpbmVDb250ZW50ID0g
ZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKKworICAgIGF1dG8gY29uc3RydWN0RGlzcGxh
eUxpbmVSdW5zID0gWyZdIHsKKyAgICAgICAgYXV0byBpbml0aWFsQ29udGFpbmdCbG9ja1NpemUg
PSBtX2xheW91dFN0YXRlLnZpZXdwb3J0U2l6ZSgpOworICAgICAgICBmb3IgKGF1dG8mIGxpbmVS
dW4gOiBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lUnVucygpKSB7CisgICAgICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOworICAgICAgICAgICAgYXV0byBj
b21wdXRlZElua092ZXJmbG93ID0gWyZdIChjb25zdCBhdXRvJiBsb2dpY2FsUmVjdCkgeworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLXRleHQgaW5rIG92ZXJm
bG93LgorICAgICAgICAgICAgICAgIGlmICghbGluZVJ1bi50ZXh0KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2dpY2FsUmVjdDsKKyAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9
IGxheW91dEJveC5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBs
b2dpY2FsUmVjdDsKKyAgICAgICAgICAgICAgICBhdXRvIHN0cm9rZU92ZXJmbG93ID0gc3RkOjpj
ZWlsKHN0eWxlLmNvbXB1dGVkU3Ryb2tlV2lkdGgoY2VpbGVkSW50U2l6ZShpbml0aWFsQ29udGFp
bmdCbG9ja1NpemUpKSk7CisgICAgICAgICAgICAgICAgaW5rT3ZlcmZsb3cuaW5mbGF0ZShzdHJv
a2VPdmVyZmxvdyk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHls
ZS5mb250Q2FzY2FkZSgpLmxldHRlclNwYWNpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAobGV0
dGVyU3BhY2luZyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTGFzdCBsZXR0ZXIncyBu
ZWdhdGl2ZSBzcGFjaW5nIHNocmlua3MgbG9naWNhbCByZWN0LiBQdXNoIGl0IHRvIGluayBvdmVy
Zmxvdy4KKyAgICAgICAgICAgICAgICAgICAgaW5rT3ZlcmZsb3cuZXhwYW5kKC1sZXR0ZXJTcGFj
aW5nLCB7IH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gaW5r
T3ZlcmZsb3c7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9
IEZsb2F0UmVjdCB7IGxpbmVSdW4ubG9naWNhbFJlY3QoKSB9OworICAgICAgICAgICAgLy8gSW5s
aW5lIGJveGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgbGluZSBib3ggd2hpbGUgZmluYWwgRGlzcGxh
eTo6UnVucyBuZWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgRGlzcGxheTpCb3gKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UganVzdCBsZWF2ZSB0aGVtIGJlIHJlbGF0
aXZlIHRvIHRoZSBsaW5lIGJveD8KKyAgICAgICAgICAgIGF1dG8gbGluZUluZGV4ID0gbGluZVJ1
bi5saW5lSW5kZXgoKTsKKyAgICAgICAgICAgIGF1dG8mIGxpbmVCb3hMb2dpY2FsUmVjdCA9IG1f
aW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKClbbGluZUluZGV4XS5saW5lQm94TG9naWNhbFJl
Y3QoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxSZWN0Lm1vdmVCeSh7IGxpbmVCb3hMb2dpY2FsUmVj
dC5sZWZ0KCksIGxpbmVCb3hMb2dpY2FsUmVjdC50b3AoKSB9KTsKKworICAgICAgICAgICAgV1RG
OjpPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRleHRDb250ZW50PiB0ZXh0Q29udGVudDsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHRleHQgPSBsaW5lUnVuLnRleHQoKSkKKyAgICAgICAgICAgICAgICB0
ZXh0Q29udGVudCA9IERpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQgeyB0ZXh0LT5zdGFydCgpLCB0
ZXh0LT5sZW5ndGgoKSwgdGV4dC0+Y29udGVudCgpLCB0ZXh0LT5uZWVkc0h5cGhlbigpIH07Cisg
ICAgICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IERpc3BsYXk6OlJ1bjo6RXhwYW5zaW9uIHsgbGlu
ZVJ1bi5leHBhbnNpb24oKS5iZWhhdmlvciwgbGluZVJ1bi5leHBhbnNpb24oKS5ob3Jpem9udGFs
RXhwYW5zaW9uIH07CisgICAgICAgICAgICBhdXRvIGRpc3BsYXlSdW4gPSBEaXNwbGF5OjpSdW4g
eyBsaW5lSW5kZXgsIGxheW91dEJveCwgbG9naWNhbFJlY3QsIGNvbXB1dGVkSW5rT3ZlcmZsb3co
bG9naWNhbFJlY3QpLCBleHBhbnNpb24sIHRleHRDb250ZW50IH07CisgICAgICAgICAgICBkaXNw
bGF5SW5saW5lQ29udGVudC5ydW5zLmFwcGVuZChkaXNwbGF5UnVuKTsKKyAgICAgICAgfQorICAg
IH07CisgICAgY29uc3RydWN0RGlzcGxheUxpbmVSdW5zKCk7CisKICAgICBhdXRvIGNvbnN0cnVj
dERpc3BsYXlMaW5lID0gWyZdIHsKLSAgICAgICAgYXV0byYgZGlzcGxheUlubGluZUNvbnRlbnQg
PSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5lbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgpOwog
ICAgICAgICBhdXRvJiBsaW5lcyA9IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCk7CiAg
ICAgICAgIGF1dG8mIHJ1bnMgPSBkaXNwbGF5SW5saW5lQ29udGVudC5ydW5zOwogICAgICAgICBz
aXplX3QgcnVuSW5kZXggPSAwOwpAQCAtMTQzLDExICsxODEsMTIgQEAgdm9pZCBMaW5lTGF5b3V0
Ojpjb25zdHJ1Y3REaXNwbGF5Q29udGVudCgpCiAgICAgICAgICAgICBhdXRvIGxpbmVSZWN0ID0g
RmxvYXRSZWN0IHsgbGluZS5sb2dpY2FsUmVjdCgpIH07CiAgICAgICAgICAgICAvLyBQYWludGlu
ZyBjb2RlIChzcGVjaWZpY2FsbHkgVGV4dFJ1bidzIHhQb3MpIG5lZWRzIHRoZSBsaW5lIGJveCBv
ZmZzZXQgdG8gYmUgYWJsZSB0byBjb21wdXRlIHRhYiBwb3NpdGlvbnMuCiAgICAgICAgICAgICBs
aW5lUmVjdC5zZXRYKGxpbmVCb3hMb2dpY2FsUmVjdC5sZWZ0KCkpOwotICAgICAgICAgICAgZGlz
cGxheUlubGluZUNvbnRlbnQubGluZXMuYXBwZW5kKHsgbGluZVJlY3QsIHNjcm9sbGFibGVPdmVy
Zmxvd1JlY3QsIGxpbmVJbmtPdmVyZmxvd1JlY3QsIGxpbmUuYmFzZWxpbmUoKSB9KTsKKyAgICAg
ICAgICAgIGRpc3BsYXlJbmxpbmVDb250ZW50LmxpbmVzLmFwcGVuZCh7IGxpbmVSZWN0LCBzY3Jv
bGxhYmxlT3ZlcmZsb3dSZWN0LCBsaW5lSW5rT3ZlcmZsb3dSZWN0LCBsaW5lLmJhc2VsaW5lKCks
IGxpbmUuaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCgpIH0pOwogICAgICAgICB9CiAgICAgfTsK
ICAgICBjb25zdHJ1Y3REaXNwbGF5TGluZSgpOwotICAgIG1faW5saW5lRm9ybWF0dGluZ1N0YXRl
LnNocmlua0Rpc3BsYXlJbmxpbmVDb250ZW50KCk7CisgICAgZGlzcGxheUlubGluZUNvbnRlbnQu
c2hyaW5rVG9GaXQoKTsKKyAgICBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5zaHJpbmtUb0ZpdCgp
OwogfQogCiB2b2lkIExpbmVMYXlvdXQ6OnByZXBhcmVMYXlvdXRTdGF0ZSgpCkBAIC0yMzUsOSAr
Mjc0LDExIEBAIHZvaWQgTGluZUxheW91dDo6Y29sbGVjdE92ZXJmbG93KFJlbmRlckJsb2NrRmxv
dyYgZmxvdykKICAgICB9CiB9CiAKLWNvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIExpbmVM
YXlvdXQ6OmRpc3BsYXlJbmxpbmVDb250ZW50KCkgY29uc3QKK0Rpc3BsYXk6OklubGluZUNvbnRl
bnQmIExpbmVMYXlvdXQ6OmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCkKIHsKLSAgICByZXR1
cm4gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuZGlzcGxheUlubGluZUNvbnRlbnQoKTsKKyAgICBp
ZiAoIW1fZGlzcGxheUlubGluZUNvbnRlbnQpCisgICAgICAgIG1fZGlzcGxheUlubGluZUNvbnRl
bnQgPSBhZG9wdFJlZigqbmV3IERpc3BsYXk6OklubGluZUNvbnRlbnQpOworICAgIHJldHVybiAq
bV9kaXNwbGF5SW5saW5lQ29udGVudDsKIH0KIAogTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJv
eEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5k
ZXJUZXh0KSBjb25zdApAQCAtMzM2LDcgKzM3Nyw5IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICAgICAgU3RyaW5nIHRleHRXaXRoSHlwaGVuOwogICAgICAgICBpZiAodGV4dENvbnRlbnQubmVl
ZHNIeXBoZW4oKSkKICAgICAgICAgICAgIHRleHRXaXRoSHlwaGVuID0gbWFrZVN0cmluZyh0ZXh0
Q29udGVudC5jb250ZW50KCksIHN0eWxlLmh5cGhlblN0cmluZygpKTsKLSAgICAgICAgVGV4dFJ1
biB0ZXh0UnVuIHsgIXRleHRXaXRoSHlwaGVuLmlzRW1wdHkoKSA/IHRleHRXaXRoSHlwaGVuIDog
dGV4dENvbnRlbnQuY29udGVudCgpLCBydW4ubGVmdCgpIC0gbGluZS5yZWN0KCkueCgpLCBleHBh
bnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CisgICAgICAg
IC8vIFRleHRSdW4gZXhwZWN0cyB0aGUgeFBvcyB0byBiZSBhZGp1c3RlZCB3aXQgaHRlIGFsaWdt
ZW50IG9mZnNldCAoZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRlciBhbGlnbmVkIGFuZCB0aGUg
cnVuIHN0YXJ0cyBhdCAxMDBweCAtZHVlIHRvIHRoZSBhbGlnbWVudCwgdGhlIHhwb3MgaXMgc3Vw
cG9zZWQgdG8gYmUgMHB4KS4KKyAgICAgICAgYXV0byB4UG9zID0gcmVjdC54KCkgLSAobGluZS5y
ZWN0KCkueCgpICsgbGluZS5ob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KCkpOworICAgICAgICBU
ZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdpdGhIeXBo
ZW4gOiB0ZXh0Q29udGVudC5jb250ZW50KCksIHhQb3MsIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhw
YW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXpl
KCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAgICAgICAg
RmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54KCksIHJvdW5k
VG9EZXZpY2VQaXhlbChiYXNlbGluZSwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCBiNjk0ODg1NDZlZGRkYWVlZmZjY2UyNDM5MTFmMmE4
NmVhZGZhYTQ2Li45MjA2YTJhNDZjMzk4OWZiZGQ1NjEwNTJlZDU4OGMyNWE3YmZiNWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY29sbGVjdE92ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYpOwogCi0gICAgY29uc3Qg
RGlzcGxheTo6SW5saW5lQ29udGVudCogZGlzcGxheUlubGluZUNvbnRlbnQoKSBjb25zdDsKKyAg
ICBjb25zdCBEaXNwbGF5OjpJbmxpbmVDb250ZW50KiBkaXNwbGF5SW5saW5lQ29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheUlubGluZUNvbnRlbnQuZ2V0KCk7IH0KIAogICAgIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KTsKICAgICBi
b29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uKTsKQEAgLTgzLDYgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXBh
cmVMYXlvdXRTdGF0ZSgpOwogICAgIHZvaWQgcHJlcGFyZUZsb2F0aW5nU3RhdGUoKTsKICAgICB2
b2lkIGNvbnN0cnVjdERpc3BsYXlDb250ZW50KCk7CisgICAgRGlzcGxheTo6SW5saW5lQ29udGVu
dCYgZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKIAogICAgIGNvbnN0IExheW91dDo6Q29u
dGFpbmVyQm94JiByb290TGF5b3V0Qm94KCkgY29uc3Q7CiAgICAgTGF5b3V0OjpDb250YWluZXJC
b3gmIHJvb3RMYXlvdXRCb3goKTsKQEAgLTkzLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBCb3hU
cmVlIG1fYm94VHJlZTsKICAgICBMYXlvdXQ6OkxheW91dFN0YXRlIG1fbGF5b3V0U3RhdGU7CiAg
ICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1faW5saW5lRm9ybWF0dGluZ1N0YXRl
OworICAgIFJlZlB0cjxEaXNwbGF5OjpJbmxpbmVDb250ZW50PiBtX2Rpc3BsYXlJbmxpbmVDb250
ZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGQ5OWRlMjllNTk4MDdlMjgzOWM4MjFiMGQ2
ZWVhZDFiY2U1OTFhZTkuLmI0YTVhNjZjZjVkMjM5Y2YwMjRlYjY3OWU4N2FkMTU3NjA3ZTM1YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAKQEAgLTM4MSwxMSArMzgxLDYgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVp
bGRTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbmRlcmVyLCBDb250YWluZXJC
b3gKIHN0YXRpYyB2b2lkIG91dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IENvbnRhaW5lckJveCYgaW5saW5lRm9y
bWF0dGluZ1Jvb3QsIHVuc2lnbmVkIGRlcHRoKQogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRp
bmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGlu
bGluZUZvcm1hdHRpbmdSb290KTsKLSAgICBhdXRvKiBkaXNwbGF5SW5saW5lQ29udGVudCA9IGlu
bGluZUZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpOwotICAgIGlmICghZGlz
cGxheUlubGluZUNvbnRlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRpc3BsYXlS
dW5zID0gZGlzcGxheUlubGluZUNvbnRlbnQtPnJ1bnM7CiAgICAgYXV0byYgbGluZXMgPSBpbmxp
bmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKTsKIAogICAgIHVuc2lnbmVkIHByaW50ZWRDaGFyYWN0
ZXJzID0gMDsKQEAgLTM5OCwxOCArMzkzLDE5IEBAIHN0YXRpYyB2b2lkIG91dHB1dElubGluZVJ1
bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsCiAg
ICAgICAgIHN0cmVhbSA8PCAiWyIgPDwgbGluZS5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBsaW5l
LmxvZ2ljYWxUb3AoKSA8PCAiICIgPDwgbGluZS5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgbGlu
ZS5sb2dpY2FsSGVpZ2h0KCkgPDwgIl1bYmFzZWxpbmU6ICIgPDwgbGluZS5iYXNlbGluZSgpIDw8
ICJdIjsKICAgICBzdHJlYW0ubmV4dExpbmUoKTsKIAotICAgIGZvciAoYXV0byYgZGlzcGxheVJ1
biA6IGRpc3BsYXlSdW5zKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVGb3JtYXR0aW5n
U3RhdGUubGluZVJ1bnMoKSkgewogICAgICAgICB1bnNpZ25lZCBwcmludGVkQ2hhcmFjdGVycyA9
IDA7CiAgICAgICAgIHdoaWxlICgrK3ByaW50ZWRDaGFyYWN0ZXJzIDw9IGRlcHRoICogMikKICAg
ICAgICAgICAgIHN0cmVhbSA8PCAiICI7CiAgICAgICAgIHN0cmVhbSA8PCAiICAiOwotICAgICAg
ICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpKQorICAgICAgICBpZiAocnVuLnRleHQoKSkK
ICAgICAgICAgICAgIHN0cmVhbSA8PCAiaW5saW5lIHRleHQgYm94IjsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc3RyZWFtIDw8ICJpbmxpbmUgYm94IjsKLSAgICAgICAgc3RyZWFtIDw8ICIg
YXQgKCIgPDwgZGlzcGxheVJ1bi5sZWZ0KCkgPDwgIiwiIDw8IGRpc3BsYXlSdW4udG9wKCkgPDwg
Iikgc2l6ZSAiIDw8IGRpc3BsYXlSdW4ud2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5oZWln
aHQoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlSdW4udGV4dENvbnRlbnQoKSkKLSAgICAgICAgICAg
IHN0cmVhbSA8PCAiIHJ1bigiIDw8IGRpc3BsYXlSdW4udGV4dENvbnRlbnQoKS0+c3RhcnQoKSA8
PCAiLCAiIDw8IGRpc3BsYXlSdW4udGV4dENvbnRlbnQoKS0+ZW5kKCkgPDwgIikiOworICAgICAg
ICBhdXRvJiBydW5Mb2dpY2FsUmVjdCA9IHJ1bi5sb2dpY2FsUmVjdCgpOworICAgICAgICBzdHJl
YW0gPDwgIiBhdCAoIiA8PCBydW5Mb2dpY2FsUmVjdC5sZWZ0KCkgPDwgIiwiIDw8IHJ1bkxvZ2lj
YWxSZWN0LnRvcCgpIDw8ICIpIHNpemUgIiA8PCBydW5Mb2dpY2FsUmVjdC53aWR0aCgpIDw8ICJ4
IiA8PCBydW5Mb2dpY2FsUmVjdC5oZWlnaHQoKTsKKyAgICAgICAgaWYgKHJ1bi50ZXh0KCkpCisg
ICAgICAgICAgICBzdHJlYW0gPDwgIiBydW4oIiA8PCBydW4udGV4dCgpLT5zdGFydCgpIDw8ICIs
ICIgPDwgcnVuLnRleHQoKS0+ZW5kKCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUo
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAyMzVmNDBl
ODAwZWE5MWM1YzEwOGRhMjQzOGVjZTUzYTk4M2NiZDJjLi40MjVhNTUzMjIzMzJjOGFiNTg4MzI1
YjI0OGU2YjMxMTg5YzM4ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTEzMCw4ICsxMzAsNyBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9t
ZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBpZiAoY2VsbEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRp
bmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGlu
Z1N0YXRlZSA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUo
Y2VsbEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlDb250ZW50ID0gaW5s
aW5lRm9ybWF0dGluZ1N0YXRlZS5lbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgpOwotICAgICAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IGRpc3BsYXlDb250ZW50LnJ1bnMpCisgICAg
ICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcnVuIDogaW5saW5lRm9ybWF0dGluZ1N0YXRlZS5s
aW5lUnVucygpKQogICAgICAgICAgICAgICAgICAgICAgICAgcnVuLm1vdmVWZXJ0aWNhbGx5KGlu
dHJpbnNpY1BhZGRpbmdUb3ApOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmUg
OiBpbmxpbmVGb3JtYXR0aW5nU3RhdGVlLmxpbmVzKCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lLm1vdmVWZXJ0aWNhbGx5KGludHJpbnNpY1BhZGRpbmdUb3ApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlS
dW5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVy
c2FsRGlzcGxheVJ1blBhdGguaAppbmRleCAxYWYxMjE0NTQ5NTQ0NGZlM2ZjMWNmZTk2MmYxYzZl
ZGU5NmFiY2MxLi4wMWI3YTZjMzViNjZjNjg5OTZhNzVhOTM5ZTk5NzRlMzQwNWYyOGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2Fs
RGlzcGxheVJ1blBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZh
dGU6CiBpbmxpbmUgRmxvYXRSZWN0IERpc3BsYXlSdW5QYXRoOjpyZWN0KCkgY29uc3QKIHsKICAg
ICBhdXRvIHJlY3QgPSBydW4oKS5yZWN0KCk7Ci0gICAgYXV0byBwb3NpdGlvbiA9IGxpbmVQb3Np
dGlvbihyZWN0LmxlZnQoKSwgcmVjdC50b3AoKSk7CisgICAgYXV0byBwb3NpdGlvbiA9IGxpbmVQ
b3NpdGlvbihyZWN0LngoKSwgcmVjdC55KCkpOwogICAgIHJldHVybiB7IHBvc2l0aW9uLCByZWN0
LnNpemUoKSB9OwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTYxN2Y0NWIzYjFjYWNlOWNmMGJmMjczM2E0ZDdiM2Yy
ZjVhODdjZC4uMmRmMjY3ZTBlMWFiYWZmMWJlNDY1Y2UzYmVjZGE1YjM1MDVkOGVjNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTA5LTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgc2hvdWxkIG5v
dCBzdG9yZSBkaXNwbGF5IGxpbmVzIGFuZCBydW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDktMTgg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgY29uc29sZSBBUElz
IHNob3VsZG4ndCBjcmFzaCBtYWtpbmcgYSBzdHJpbmcgdGhhdCdzIHRvbyBsb25nIGZvciBhIGNv
bnNvbGUgd2FybmluZyB3aGVuIHVzaW5nIHVzZXIgcHJvdmlkZWQgbGFiZWxzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBhYWRlNjc5N2M3OTFmMTBjNjgzZjExMWRkMzk5NjgwZTJhMGM2NGI0Li4zZjAw
NWY3OTRmMDE1M2M5Y2Y4MDY2YjA1ZjY1MTRiNjhjZWYxNTRlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTQ1MzUsMyArNDUzNSw1IEBAIHdlYmtpdC5vcmcvYi8yMTU1MzEgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2JhY2tncm91CiAKICMgQ29jb2Et
b25seQogaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWhkci1zd2l0Y2guaHRtbCBbIFNraXAgXQor
CitmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0LyBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409224</attachid>
            <date>2020-09-19 21:06:58 -0700</date>
            <delta_ts>2020-09-20 06:40:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216742-20200919210657.patch</filename>
            <type>text/plain</type>
            <size>57728</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ4NDE5MTE0YWY5YzZk
YWNhYjgxMTFlY2E2MzAxMTRlMDkzYjBmNS4uOWUzOTc3MGQ3ZWEwNjQwNTU4NGZlOTY3ZDQwZWUw
MWIyNzZiNGNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUgc2hvdWxkIG5vdCBzdG9yZSBkaXNwbGF5IGxpbmVzIGFuZCBydW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFV1MgdGVzdGlu
Zy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
b3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6dmVyaWZ5
QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlvdXRUcmVlKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OklubGluZUNvbnRlbnQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6Omhvcml6
b250YWxBbGlnbm1lbnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGluZTo6TGluZSk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50SW5saW5lQ29udGVudCk6Cisg
ICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6OmVuZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50OjpsZW5ndGggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpUZXh0Q29udGVudDo6Y29udGVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50OjpuZWVkc0h5cGhlbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OnJlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjppbmtPdmVyZmxvdyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlJ1bik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpSdW46OlRleHRDb250ZW50OjpUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpSdW46OlRleHRDb250ZW50OjpzZXROZWVkc0h5cGhlbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50OjpleHBhbmQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpUZXh0Q29udGVudDo6c2hyaW5rKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6dG9wTGVmdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OmxlZnQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpyaWdodCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OnRvcCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OmJvdHRvbSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OndpZHRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6aGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6bW92ZVZlcnRpY2FsbHkpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9mbGV4Zm9ybWF0dGluZy9GbGV4Rm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnNp
emVBbmRQbGFjZUZsZXhJdGVtcyk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmxpbmVS
dW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0
YXRlOjpsaW5lUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdTdGF0ZTo6YWRkTGluZVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmRpc3BsYXlJbmxpbmVDb250ZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z1N0YXRlOjplbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6c2hyaW5rRGlzcGxheUlubGlu
ZUNvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjp0ZXh0Q29u
dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6ZXhwYW5z
aW9uIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
R2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGluZUdlb21ldHJ5
Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lTGluZUdlb21ldHJ5OjpJbmxpbmVMaW5lR2VvbWV0cnkpOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29uc3RydWN0
RGlzcGxheUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6ZGlzcGxheUlubGluZUNvbnRlbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpM
aW5lTGF5b3V0OjpkaXNwbGF5SW5saW5lQ29udGVudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpvdXRwdXRJbmxpbmVSdW5zKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5n
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
YWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyk6CisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0aDo6cmVj
dCBjb25zdCk6CisKIDIwMjAtMDktMTkgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBw
bGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudGF0aW9uIGZvciBBWElzb2xhdGVkT2JqZWN0Ojpu
ZXh0U2libGluZyBhbmQgcHJldmlvdXNTaWJsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhOWE5YTI5M2UyNTQxOGNiMmNk
ZmNiOTgwMDIwN2NhODg4NDMzM2IuLjg4ODc3MmU2MDRiNzUwNjNhN2Y5Y2I1OGM2MDg3YTFhNmIz
YTY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTIwODIsNiArMjA4Miw3IEBACiAJCTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlD
RiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2RkI3RDJERDI1MEZEODI4MDAwMjA3QUEgLyogRmxleEZvcm1hdHRpbmdDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkI3RDJE
OTI1MEZEN0ZDMDAwMjA3QUEgLyogRmxleEZvcm1hdHRpbmdDb250ZXh0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZCN0QyREUyNTBGRDgyRTAw
MDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjdEMkRBMjUwRkQ3RkMwMDAyMDdBQSAvKiBGbGV4Rm9y
bWF0dGluZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQzNGOTQ1MjUxNjc1
NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZDRTFBMUEyMjYxOEFCRDAwNEYwMzQzIC8qIERpc3Bs
YXlSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
Q0UxQTE4MjI2MThBQjMwMDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZEMDk1NDMyNTExMTUyMjAwOTg4NzdE
IC8qIExheW91dEdlb21ldHJ5UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkZEMDk1NDEyNTExMTUyMjAwOTg4NzdEIC8qIExheW91dEdlb21ldHJ5
UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZGRDlDRDU0MjI3RTIxQzgwMEU1Mzk1NyAvKiBEaXNwbGF5UmVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZEOUNENTIyMjdFMjFDODAwRTUzOTU3
IC8qIERpc3BsYXlSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTk2MjksNiArOTYzMCw3IEBACiAJCTZGQjdEMkQ5MjUwRkQ3RkMwMDAyMDdB
QSAvKiBGbGV4Rm9ybWF0dGluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmxleEZvcm1hdHRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGQjdEMkRBMjUwRkQ3RkMwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsZXhGb3JtYXR0aW5nU3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCQjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQzNG
OTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElubGluZUxpbmVSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkZDNTNBRUIyNEFGN0E4RTAwNjA1OUZFIC8qIFRhYmxlRm9ybWF0dGluZ0NvbnRleHRR
dWlya3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQzVDQTkyMjJFMzU5OTMwMEIx
M0UxMSAvKiBUYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJs
ZUZvcm1hdHRpbmdTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQzVD
QTk0MjJFMzU5OTQwMEIxM0UxMSAvKiBUYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTc1MjYsNiArMTc1MjgsNyBAQAogCQkJCTZGMjVCMjAwMjIwQTg1QUIw
MDAwMDExQiAvKiBJbmxpbmVMaW5lQnVpbGRlci5jcHAgKi8sCiAJCQkJNkYyNkVCNDYyMzQwMDRB
NTAwNjkwNkUyIC8qIElubGluZUxpbmVCdWlsZGVyLmggKi8sCiAJCQkJNkY5MTQyMEYyNTE1MjEz
NzAwNEU0RkVBIC8qIElubGluZUxpbmVHZW9tZXRyeS5oICovLAorCQkJCTZGQzNGOTQ1MjUxNjc1
NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi8sCiAJCQkJNkY0MERBODEyNTEzMDMzQTAw
RUMwNEI3IC8qIElubGluZVJlY3QuaCAqLywKIAkJCQk2RjM2MEU0RTIzOTk5NDIwMDAxNTEyQTcg
LyogSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaCAqLywKIAkJCQk2RjFDQzFEQzIyNUY4QjQxMDA3
MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uY3BwICovLApAQCAtMzE3MzIsNiArMzE3MzUsNyBAQAog
CQkJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkYyNkVCNDgyMzQwMDRBNTAwNjkwNkUyIC8qIElubGluZUxpbmVCdWls
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjkxNDIxMTI1MTUyMTM4MDA0RTRGRUEgLyogSW5s
aW5lTGluZUdlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk2RkMzRjk0NzI1MTY3NTY3MDBB
NDlCRUEgLyogSW5saW5lTGluZVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ1Nzc1Q0UyNDE0
MzdENTAwMkRGMUEwIC8qIElubGluZVBhdGhEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjQw
REE4MjI1MTMwMzNBMDBFQzA0QjcgLyogSW5saW5lUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkYzNjBFNTAyMzk5OTQyMTAwMTUxMkE3IC8qIElubGluZVNvZnRMaW5lQnJlYWtJdGVtLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggZjE2
ZTM3MWMwNmVkY2QwODE0OGQ1ZDRiZGVkYmViNjllNmEyZDJlMy4uZTU3NjM0ZjM3MjVlMmRkYmYx
ZjllMmRlZDFkMzIyNmE3YTE3YmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAKQEAgLTc5LDE2ICs3OSwxMCBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ1Np
bXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgYwogICAgIH0K
IAogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlz
aGVkRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKLSAgICBhdXRvKiBkaXNw
bGF5SW5saW5lQ29udGVudCA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5l
Rm9ybWF0dGluZ1N0YXRlKS5kaXNwbGF5SW5saW5lQ29udGVudCgpOwotICAgIGlmICghZGlzcGxh
eUlubGluZUNvbnRlbnQpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KKyAgICBhdXRvJiBsaW5lUnVucyA9IGRvd25jYXN0PElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5saW5lUnVucygpOwogCi0g
ICAgYXV0byYgZGlzcGxheVJ1bnMgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+cnVuczsKLQotICAg
IGlmIChkaXNwbGF5UnVucy5zaXplKCkgIT0gbGluZUxheW91dERhdGEtPnJ1bkNvdW50KCkpIHsK
LSAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZyBudW1iZXIgb2YgcnVuczogc2ltcGxlIHJ1
bnMoIiA8PCBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSA8PCAiKSBpbmxpbmUgcnVucygiIDw8
IGRpc3BsYXlSdW5zLnNpemUoKSA8PCAiKSI7CisgICAgaWYgKGxpbmVSdW5zLnNpemUoKSAhPSBs
aW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSkgeworICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNo
aW5nIG51bWJlciBvZiBydW5zOiBzaW1wbGUgcnVucygiIDw8IGxpbmVMYXlvdXREYXRhLT5ydW5D
b3VudCgpIDw8ICIpIGlubGluZSBydW5zKCIgPDwgbGluZVJ1bnMuc2l6ZSgpIDw8ICIpIjsKICAg
ICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTk2LDQ1ICs5MCw0OCBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJ
bmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgYwogICAgIGF1dG8gbWlzbWF0
Y2hlZCA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lTGF5b3V0RGF0
YS0+cnVuQ291bnQoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIHNpbXBsZVJ1biA9IGxpbmVMYXlv
dXREYXRhLT5ydW5BdChpKTsKLSAgICAgICAgYXV0byYgZGlzcGxheVJ1biA9IGRpc3BsYXlSdW5z
W2ldOworICAgICAgICBhdXRvJiBsaW5lUnVuID0gbGluZVJ1bnNbaV07CisgICAgICAgIGF1dG8m
IHJ1bkxvZ2ljYWxSZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOwogCi0gICAgICAgIGF1dG8g
bWF0Y2hpbmdSdW5zID0gYXJlRXNzZW50aWFsbHlFcXVhbChzaW1wbGVSdW4ubG9naWNhbExlZnQs
IGRpc3BsYXlSdW4ubGVmdCgpKSAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dp
Y2FsUmlnaHQsIGRpc3BsYXlSdW4ucmlnaHQoKSk7Ci0gICAgICAgIGlmIChtYXRjaGluZ1J1bnMg
JiYgZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpKSB7Ci0gICAgICAgICAgICBtYXRjaGluZ1J1bnMg
PSBzaW1wbGVSdW4uc3RhcnQgPT0gZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5zdGFydCgpICYm
IHNpbXBsZVJ1bi5lbmQgPT0gZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5lbmQoKTsKKyAgICAg
ICAgYXV0byBtYXRjaGluZ1J1bnMgPSBhcmVFc3NlbnRpYWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dp
Y2FsTGVmdCwgcnVuTG9naWNhbFJlY3QubGVmdCgpKSAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKHNp
bXBsZVJ1bi5sb2dpY2FsUmlnaHQsIHJ1bkxvZ2ljYWxSZWN0LnJpZ2h0KCkpOworICAgICAgICBp
ZiAobWF0Y2hpbmdSdW5zICYmIGxpbmVSdW4udGV4dCgpKSB7CisgICAgICAgICAgICBtYXRjaGlu
Z1J1bnMgPSBzaW1wbGVSdW4uc3RhcnQgPT0gbGluZVJ1bi50ZXh0KCktPnN0YXJ0KCkgJiYgc2lt
cGxlUnVuLmVuZCA9PSBsaW5lUnVuLnRleHQoKS0+ZW5kKCk7CiAgICAgICAgICAgICAvLyBTTEwg
aGFuZGxlcyBzdHJpbmdzIGluIGEgbW9yZSBjb25jYXRlbmF0ZWQgZm9ybWF0IDxkaXY+Zm9vPGJy
PmJhcjwvZGl2PiAtPiBmb28gLT4gMCwzIGJhciAtPiAzLDYgdnMuIDAsMyBhbmQgMCwzCiAgICAg
ICAgICAgICBpZiAoIW1hdGNoaW5nUnVucykKLSAgICAgICAgICAgICAgICBtYXRjaGluZ1J1bnMg
PSAoc2ltcGxlUnVuLmVuZCAtIHNpbXBsZVJ1bi5zdGFydCkgPT0gKGRpc3BsYXlSdW4udGV4dENv
bnRlbnQoKS0+ZW5kKCkgLSBkaXNwbGF5UnVuLnRleHRDb250ZW50KCktPnN0YXJ0KCkpOworICAg
ICAgICAgICAgICAgIG1hdGNoaW5nUnVucyA9IChzaW1wbGVSdW4uZW5kIC0gc2ltcGxlUnVuLnN0
YXJ0KSA9PSAobGluZVJ1bi50ZXh0KCktPmVuZCgpIC0gbGluZVJ1bi50ZXh0KCktPnN0YXJ0KCkp
OwogICAgICAgICB9CiAgICAgICAgIGlmIChtYXRjaGluZ1J1bnMpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwg
c2ltcGxlUnVuLnN0YXJ0IDw8ICIsICIgPDwgc2ltcGxlUnVuLmVuZCA8PCAiKSAoIiA8PCBzaW1w
bGVSdW4ubG9naWNhbExlZnQgPDwgIiwgIiA8PCBzaW1wbGVSdW4ubG9naWNhbFJpZ2h0IDw8ICIp
IjsKICAgICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIHJ1biI7Ci0gICAgICAgIGlmIChkaXNwbGF5
UnVuLnRleHRDb250ZW50KCkpCi0gICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBkaXNwbGF5
UnVuLnRleHRDb250ZW50KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBkaXNwbGF5UnVuLnRleHRDb250
ZW50KCktPmVuZCgpIDw8ICIpIjsKLSAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1
bi5sZWZ0KCkgPDwgIiwgIiA8PCBkaXNwbGF5UnVuLnRvcCgpIDw8ICIpICgiIDw8IGRpc3BsYXlS
dW4ud2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5oZWlnaHQoKSA8PCAiKSI7CisgICAgICAg
IGlmIChsaW5lUnVuLnRleHQoKSkKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGxpbmVS
dW4udGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgbGluZVJ1bi50ZXh0KCktPmVuZCgpIDw8ICIp
IjsKKyAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgcnVuTG9naWNhbFJlY3QubGVmdCgpIDw8ICIs
ICIgPDwgcnVuTG9naWNhbFJlY3QudG9wKCkgPDwgIikgKCIgPDwgcnVuTG9naWNhbFJlY3Qud2lk
dGgoKSA8PCAieCIgPDwgcnVuTG9naWNhbFJlY3QuaGVpZ2h0KCkgPDwgIikiOwogICAgICAgICBz
dHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgbWlzbWF0Y2hlZCA9IHRydWU7CiAgICAgfQogICAg
IHJldHVybiBtaXNtYXRjaGVkOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9u
VGV4dFJ1bnMoY29uc3QgRGlzcGxheTo6UnVuJiBpbmxpbmVSdW4sIGNvbnN0IFdlYkNvcmU6Oklu
bGluZUJveCYgaW5saW5lQm94KQorc3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ05vblRleHRS
dW5zKGNvbnN0IExpbmVSdW4mIGxpbmVSdW4sIGNvbnN0IFdlYkNvcmU6OklubGluZUJveCYgaW5s
aW5lQm94KQogewotICAgIHJldHVybiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5sZWZ0
KCksIGlubGluZVJ1bi5sZWZ0KCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5s
aW5lQm94LnJpZ2h0KCksIGlubGluZVJ1bi5yaWdodCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRp
YWxseUVxdWFsKGlubGluZUJveC50b3AoKSwgaW5saW5lUnVuLnRvcCgpKQotICAgICAgICAmJiBh
cmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC5ib3R0b20oKSwgaW5saW5lUnVuLmJvdHRvbSgp
KTsKKyAgICBhdXRvJiBydW5Mb2dpY2FsUmVjdCA9IGxpbmVSdW4ubG9naWNhbFJlY3QoKTsKKyAg
ICByZXR1cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gubGVmdCgpLCBydW5Mb2dpY2Fs
UmVjdC5sZWZ0KCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnJp
Z2h0KCksIHJ1bkxvZ2ljYWxSZWN0LnJpZ2h0KCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5
RXF1YWwoaW5saW5lQm94LnRvcCgpLCBydW5Mb2dpY2FsUmVjdC50b3AoKSkKKyAgICAgICAgJiYg
YXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3guYm90dG9tKCksIHJ1bkxvZ2ljYWxSZWN0LmJv
dHRvbSgpKTsKIH0KIAogCi1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29u
c3QgRGlzcGxheTo6UnVuJiBpbmxpbmVSdW4sIGNvbnN0IFdlYkNvcmU6OklubGluZVRleHRCb3gm
IGlubGluZVRleHRCb3gpCitzdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29u
c3QgTGluZVJ1biYgbGluZVJ1biwgY29uc3QgV2ViQ29yZTo6SW5saW5lVGV4dEJveCYgaW5saW5l
VGV4dEJveCkKIHsKLSAgICByZXR1cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94
LmxlZnQoKSwgaW5saW5lUnVuLmxlZnQoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVh
bChpbmxpbmVUZXh0Qm94LnJpZ2h0KCksIGlubGluZVJ1bi5yaWdodCgpKQotICAgICAgICAmJiBh
cmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gudG9wKCksIGlubGluZVJ1bi50b3AoKSkK
LSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LmJvdHRvbSgpLCBp
bmxpbmVSdW4uYm90dG9tKCkpCi0gICAgICAgICYmIChpbmxpbmVUZXh0Qm94LmlzTGluZUJyZWFr
KCkgfHwgKGlubGluZVRleHRCb3guc3RhcnQoKSA9PSBpbmxpbmVSdW4udGV4dENvbnRlbnQoKS0+
c3RhcnQoKSAmJiBpbmxpbmVUZXh0Qm94LmVuZCgpID09IGlubGluZVJ1bi50ZXh0Q29udGVudCgp
LT5lbmQoKSkpOworICAgIGF1dG8mIHJ1bkxvZ2ljYWxSZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVj
dCgpOworICAgIHJldHVybiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gubGVmdCgp
LCBydW5Mb2dpY2FsUmVjdC5sZWZ0KCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwo
aW5saW5lVGV4dEJveC5yaWdodCgpLCBydW5Mb2dpY2FsUmVjdC5yaWdodCgpKQorICAgICAgICAm
JiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gudG9wKCksIHJ1bkxvZ2ljYWxSZWN0
LnRvcCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3guYm90
dG9tKCksIHJ1bkxvZ2ljYWxSZWN0LmJvdHRvbSgpKQorICAgICAgICAmJiAoaW5saW5lVGV4dEJv
eC5pc0xpbmVCcmVhaygpIHx8IChpbmxpbmVUZXh0Qm94LnN0YXJ0KCkgPT0gbGluZVJ1bi50ZXh0
KCktPnN0YXJ0KCkgJiYgaW5saW5lVGV4dEJveC5lbmQoKSA9PSBsaW5lUnVuLnRleHQoKS0+ZW5k
KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgY29sbGVjdEZsb3dCb3hTdWJ0cmVlKGNvbnN0IElubGlu
ZUZsb3dCb3gmIGZsb3dib3gsIFZlY3RvcjxXZWJDb3JlOjpJbmxpbmVCb3gqPiYgaW5saW5lQm94
ZXMpCkBAIC0xNjUsMTQgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RJbmxpbmVCb3hlcyhj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3QsIFZlY3RvcjxXZWJDb3JlOjpJbmxpCiBzdGF0aWMg
Ym9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVu
ZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbnN0IENvbnRhaW5lckJveCYgaW5saW5lRm9ybWF0
dGluZ1Jvb3QpCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3Rh
dGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwotCi0g
ICAgYXV0byogZGlzcGxheUlubGluZUNvbnRlbnQgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuZGlzcGxheUlubGluZUNvbnRlbnQoKTsKLSAg
ICBpZiAoIWRpc3BsYXlJbmxpbmVDb250ZW50KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgYXV0byYgZGlzcGxheVJ1bnMg
PSBkaXNwbGF5SW5saW5lQ29udGVudC0+cnVuczsKLQorICAgIGF1dG8mIGxpbmVSdW5zID0gZG93
bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmxpbmVS
dW5zKCk7CiAgICAgLy8gQ29sbGVjdCBpbmxpbmVib3hlcy4KICAgICBWZWN0b3I8V2ViQ29yZTo6
SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7CiAgICAgY29sbGVjdElubGluZUJveGVzKGJsb2NrRmxv
dywgaW5saW5lQm94ZXMpOwpAQCAtMTgwLDE2ICsxNzAsMTYgQEAgc3RhdGljIGJvb2wgb3V0cHV0
TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3Ry
ZWFtLAogICAgIGF1dG8gbWlzbWF0Y2hlZCA9IGZhbHNlOwogICAgIHVuc2lnbmVkIHJ1bkluZGV4
ID0gMDsKIAotICAgIGlmIChpbmxpbmVCb3hlcy5zaXplKCkgIT0gZGlzcGxheVJ1bnMuc2l6ZSgp
KSB7Ci0gICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1
bnM6IGlubGluZWJveGVzKCIgPDwgaW5saW5lQm94ZXMuc2l6ZSgpIDw8ICIpIHZzLiBpbmxpbmUg
cnVucygiIDw8IGRpc3BsYXlSdW5zLnNpemUoKSA8PCAiKSI7CisgICAgaWYgKGlubGluZUJveGVz
LnNpemUoKSAhPSBsaW5lUnVucy5zaXplKCkpIHsKKyAgICAgICAgc3RyZWFtIDw8ICJXYXJuaW5n
OiBtaXNtYXRjaGluZyBudW1iZXIgb2YgcnVuczogaW5saW5lYm94ZXMoIiA8PCBpbmxpbmVCb3hl
cy5zaXplKCkgPDwgIikgdnMuIGlubGluZSBydW5zKCIgPDwgbGluZVJ1bnMuc2l6ZSgpIDw8ICIp
IjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25l
ZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgp
ICYmIHJ1bkluZGV4IDwgZGlzcGxheVJ1bnMuc2l6ZSgpOyArK2lubGluZUJveEluZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIGRpc3BsYXlSdW4gPSBkaXNwbGF5UnVuc1tydW5JbmRleF07CisgICAgZm9y
ICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4IDwgaW5saW5lQm94
ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyArK2lubGluZUJveEluZGV4
KSB7CisgICAgICAgIGF1dG8mIGxpbmVSdW4gPSBsaW5lUnVuc1tydW5JbmRleF07CiAgICAgICAg
IGF1dG8qIGlubGluZUJveCA9IGlubGluZUJveGVzW2lubGluZUJveEluZGV4XTsKICAgICAgICAg
YXV0byogaW5saW5lVGV4dEJveCA9IGlzPFdlYkNvcmU6OklubGluZVRleHRCb3g+KGlubGluZUJv
eCkgPyBkb3duY2FzdDxXZWJDb3JlOjpJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpIDogbnVsbHB0
cjsKLSAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hlY2tGb3JN
YXRjaGluZ1RleHRSdW5zKGRpc3BsYXlSdW4sICppbmxpbmVUZXh0Qm94KSA6IGNoZWNrRm9yTWF0
Y2hpbmdOb25UZXh0UnVucyhkaXNwbGF5UnVuLCAqaW5saW5lQm94KTsKKyAgICAgICAgYm9vbCBt
YXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGxp
bmVSdW4sICppbmxpbmVUZXh0Qm94KSA6IGNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyhsaW5l
UnVuLCAqaW5saW5lQm94KTsKIAogICAgICAgICBpZiAoIW1hdGNoaW5nUnVucykgewogICAgICAg
ICAgICAgCkBAIC0yMDYsMTAgKzE5NiwxMSBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGlu
Z0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sCiAgICAg
ICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5lVGV4dEJveC0+c3RhcnQoKSA8PCAi
LCAiIDw8IGlubGluZVRleHRCb3gtPmVuZCgpIDw8ICIpIjsKICAgICAgICAgICAgIHN0cmVhbSA8
PCAiICgiIDw8IGlubGluZUJveC0+bG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGlubGluZUJveC0+
bG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGlubGluZUJveC0+bG9naWNhbFdpZHRoKCkgPDwgIngi
IDw8IGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpIDw8ICIpIjsKIAorICAgICAgICAgICAgYXV0
byYgcnVuTG9naWNhbFJlY3QgPSBsaW5lUnVuLmxvZ2ljYWxSZWN0KCk7CiAgICAgICAgICAgICBz
dHJlYW0gPDwgIiBpbmxpbmUgcnVuIjsKLSAgICAgICAgICAgIGlmIChkaXNwbGF5UnVuLnRleHRD
b250ZW50KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1bi50
ZXh0Q29udGVudCgpLT5zdGFydCgpIDw8ICIsICIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGVudCgp
LT5lbmQoKSA8PCAiKSI7Ci0gICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBkaXNwbGF5UnVu
LmxlZnQoKSA8PCAiLCAiIDw8IGRpc3BsYXlSdW4udG9wKCkgPDwgIikgKCIgPDwgZGlzcGxheVJ1
bi53aWR0aCgpIDw8ICJ4IiA8PCBkaXNwbGF5UnVuLmhlaWdodCgpIDw8ICIpIjsKKyAgICAgICAg
ICAgIGlmIChsaW5lUnVuLnRleHQoKSkKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8
PCBsaW5lUnVuLnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGxpbmVSdW4udGV4dCgpLT5lbmQo
KSA8PCAiKSI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBydW5Mb2dpY2FsUmVjdC5s
ZWZ0KCkgPDwgIiwgIiA8PCBydW5Mb2dpY2FsUmVjdC50b3AoKSA8PCAiKSAoIiA8PCBydW5Mb2dp
Y2FsUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCBydW5Mb2dpY2FsUmVjdC5oZWlnaHQoKSA8PCAiKSI7
CiAgICAgICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgICAgIG1pc21hdGNoZWQg
PSB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCmluZGV4IDQzN2EyMzg5ZWU1NTBlYTFl
OWNiN2IxMjE2YmRjMTZkNzU4NjM4OTguLmE5YjQ1MGI5MzkzZWQyMzcxYzhiNWYzMDg4MzQ0MGFl
MDExYzE1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5SW5saW5lQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCkBAIC00Niw4ICs0NiwxNSBAQCBzdHJ1Y3QgSW5s
aW5lQ29udGVudCA6IHB1YmxpYyBSZWZDb3VudGVkPElubGluZUNvbnRlbnQ+IHsKIAogICAgIGNv
bnN0IExpbmUmIGxpbmVGb3JSdW4oY29uc3QgUnVuJiBydW4pIGNvbnN0IHsgcmV0dXJuIGxpbmVz
W3J1bi5saW5lSW5kZXgoKV07IH0KICAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgUnVuKj4g
cnVuc0ZvclJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2hyaW5rVG9G
aXQoKTsKIH07CiAKK2lubGluZSB2b2lkIElubGluZUNvbnRlbnQ6OnNocmlua1RvRml0KCkKK3sK
KyAgICBydW5zLnNocmlua1RvRml0KCk7CisgICAgbGluZXMuc2hyaW5rVG9GaXQoKTsKK30KKwog
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGlu
ZS5oCmluZGV4IDEwMGQwNGY5NjBiYjJjZjQwYTg2NTk3NDY4NzQzMThlZjA5NjM5NmIuLmRjNTU2
ZjMxY2M5M2Q5NzExYTk5OWE4MDE4MjliNWQ3MTY4MGM5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZS5oCkBAIC0zNSwyNSArMzUsMjkgQEAg
bmFtZXNwYWNlIERpc3BsYXkgewogY2xhc3MgTGluZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgTGluZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmIHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgZmxv
YXQgYmFzZWxpbmUpOworICAgIExpbmUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiBzY3JvbGxhYmxlT3ZlcmZsb3csIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3csIGZsb2F0
IGJhc2VsaW5lLCBmbG9hdCBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KTsKIAogICAgIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0IEZs
b2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
T3ZlcmZsb3c7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogICAgIGZsb2F0IGJhc2VsaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9iYXNlbGluZTsgfQorICAgIGZsb2F0IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2hvcml6b250YWxBbGlnbm1lbnRPZmZzZXQ7IH0KKwogCiBwcml2YXRl
OgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc2Nyb2xsYWJsZU92ZXJm
bG93OwogICAgIEZsb2F0UmVjdCBtX2lua092ZXJmbG93OwogICAgIGZsb2F0IG1fYmFzZWxpbmUg
eyAwIH07CisgICAgZmxvYXQgbV9ob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0OwogfTsKIAotaW5s
aW5lIExpbmU6OkxpbmUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNj
cm9sbGFibGVPdmVyZmxvdywgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgZmxvYXQgYmFz
ZWxpbmUpCitpbmxpbmUgTGluZTo6TGluZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93
LCBmbG9hdCBiYXNlbGluZSwgZmxvYXQgaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCkKICAgICA6
IG1fcmVjdChyZWN0KQogICAgICwgbV9zY3JvbGxhYmxlT3ZlcmZsb3coc2Nyb2xsYWJsZU92ZXJm
bG93KQogICAgICwgbV9pbmtPdmVyZmxvdyhpbmtPdmVyZmxvdykKICAgICAsIG1fYmFzZWxpbmUo
YmFzZWxpbmUpCisgICAgLCBtX2hvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoaG9yaXpvbnRhbEFs
aWdubWVudE9mZnNldCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5kZXggYzgzYWVjNjE3NjBiODBmYTYyMzQ0
ZDA3YWZlNTNhNjQwMjUwNmQ1NS4uYjE0MTQ5MGU4Yjc4NGNkNDZjMjBjZWNhOTk0N2Y1NGQxMThk
ZTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVBhaW50ZXIuY3BwCkBAIC0xMTMsMzEgKzExMywyMSBAQCBzdGF0aWMgdm9pZCBwYWludEJv
eERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6OkJveEdl
b21ldAogCiBzdGF0aWMgdm9pZCBwYWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBMYXlvdXRQb2ludCBhYnNvbHV0ZU9mZnNldCwgY29uc3QgTGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKIHsKLSAgICBhdXRvKiBkaXNwbGF5SW5s
aW5lQ29udGVudCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpOwotICAg
IGlmICghZGlzcGxheUlubGluZUNvbnRlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8m
IGRpc3BsYXlSdW5zID0gZGlzcGxheUlubGluZUNvbnRlbnQtPnJ1bnM7Ci0gICAgaWYgKGRpc3Bs
YXlSdW5zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBydW4g
OiBkaXNwbGF5UnVucykgewotICAgICAgICBpZiAoYXV0byYgdGV4dENvbnRlbnQgPSBydW4udGV4
dENvbnRlbnQoKSkgewotICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBydW4uc3R5bGUoKTsKKyAg
ICBmb3IgKGF1dG8mIHJ1biA6IGZvcm1hdHRpbmdTdGF0ZS5saW5lUnVucygpKSB7CisgICAgICAg
IGF1dG8mIHJ1blJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsKKyAgICAgICAgaWYgKGF1dG8mIHRl
eHRDb250ZW50ID0gcnVuLnRleHQoKSkgeworICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBydW4u
bGF5b3V0Qm94KCkuc3R5bGUoKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3Io
c3R5bGUuY29sb3IoKSk7CiAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5j
b2xvcigpKTsKIAotICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxlZnQgPSBhYnNvbHV0ZU9mZnNl
dC54KCkgKyBydW4ubGVmdCgpOworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxlZnQgPSBhYnNv
bHV0ZU9mZnNldC54KCkgKyBydW5SZWN0LmxlZnQoKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZGQgbm9uLWJhc2VsaW5lIGFsaWduIHBhaW50aW5nCi0gICAgICAgICAgICBhdXRvIGJhc2VsaW5l
ID0gYWJzb2x1dGVPZmZzZXQueSgpICsgcnVuLnRvcCgpICsgc3R5bGUuZm9udE1ldHJpY3MoKS5h
c2NlbnQoKTsKKyAgICAgICAgICAgIGF1dG8gYmFzZWxpbmUgPSBhYnNvbHV0ZU9mZnNldC55KCkg
KyBydW5SZWN0LnRvcCgpICsgc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKICAgICAgICAg
ICAgIGF1dG8gZXhwYW5zaW9uID0gcnVuLmV4cGFuc2lvbigpOwogICAgICAgICAgICAgLy8gRklY
TUU6IFRoZSBmaW5hbCBwYWludGVyIHNob3VsZCBoYXZlIGFjY2VzcyB0byB0aGUgY3VycmVudCBs
aW5lIHRvIG9mZnNldCB0aGUgcnVucy4KLSAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IFRleHRS
dW4geyB0ZXh0Q29udGVudC0+Y29udGVudCgpLCBydW4ubGVmdCgpLCBleHBhbnNpb24uaG9yaXpv
bnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CisgICAgICAgICAgICBhdXRvIHRl
eHRSdW4gPSBUZXh0UnVuIHsgdGV4dENvbnRlbnQtPmNvbnRlbnQoKSwgcnVuUmVjdC5sZWZ0KCks
IGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAg
ICAgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCks
IHN0eWxlLnRhYlNpemUoKSk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0eWxlLmZv
bnRDYXNjYWRlKCksIHRleHRSdW4sIHsgYWJzb2x1dGVMZWZ0LCBiYXNlbGluZSB9KTsKLSAgICAg
ICAgfSBlbHNlIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IHJ1bi5pbWFnZSgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHJ1bkFic29sdXRlUmVjdCA9IEZsb2F0UmVjdCB7IGFic29sdXRlT2Zmc2V0Lngo
KSArIHJ1bi5sZWZ0KCksIGFic29sdXRlT2Zmc2V0LnkoKSArIHJ1bi50b3AoKSwgcnVuLndpZHRo
KCksIHJ1bi5oZWlnaHQoKSB9OwotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmNhY2hl
ZEltYWdlLT5pbWFnZSgpLCBydW5BYnNvbHV0ZVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4u
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKaW5kZXgg
YjcxNjE4MTJmODY5ODQzMzk4YzFkMmU2OGEwZWIxMzQ0NmYxZjcxNy4uMmM2NDhhOTJkNGU5ZjIw
NWMxZGI4NzRmMjhjN2JlYjg1ZjEwOGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCkBAIC00Myw0MiArNDMsMjYgQEAgc3RydWN0IFJ1biB7
CiAgICAgc3RydWN0IFRleHRDb250ZW50IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dENvbnRlbnQodW5zaWduZWQgcG9z
aXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiwgYm9vbCBuZWVkc0h5cGhlbik7
CisgICAgICAgIFRleHRDb250ZW50KHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IGxlbmd0aCwgY29u
c3QgU3RyaW5nJiwgYm9vbCBuZWVkc0h5cGhlbik7CiAKLSAgICAgICAgdW5zaWduZWQgc3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9Ci0gICAgICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5ndGgoKTsgfQotICAgICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBzaXplX3Qgc3RhcnQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgICAgIHNpemVfdCBlbmQoKSBjb25zdCB7IHJldHVy
biBzdGFydCgpICsgbGVuZ3RoKCk7IH0KKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFN0cmluZ1ZpZXcgY29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZ1ZpZXcobV9jb250ZW50U3RyaW5nKS5zdWJzdHJpbmcobV9zdGFydCwgbV9s
ZW5ndGgpOyB9Ci0KICAgICAgICAgYm9vbCBuZWVkc0h5cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1f
bmVlZHNIeXBoZW47IH0KLSAgICAgICAgdm9pZCBzZXROZWVkc0h5cGhlbigpIHsgbV9uZWVkc0h5
cGhlbiA9IHRydWU7IH0KLQotICAgICAgICB2b2lkIGV4cGFuZCh1bnNpZ25lZCBkZWx0YSkgeyBt
X2xlbmd0aCArPSBkZWx0YTsgfQotICAgICAgICB2b2lkIHNocmluayh1bnNpZ25lZCBkZWx0YSkg
eyBtX2xlbmd0aCAtPSBkZWx0YTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdW5zaWduZWQg
bV9zdGFydCB7IDAgfTsKLSAgICAgICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07CisgICAgICAg
IHNpemVfdCBtX3N0YXJ0IHsgMCB9OworICAgICAgICBzaXplX3QgbV9sZW5ndGggeyAwIH07CiAg
ICAgICAgIGJvb2wgbV9uZWVkc0h5cGhlbiB7IGZhbHNlIH07CiAgICAgICAgIFN0cmluZyBtX2Nv
bnRlbnRTdHJpbmc7CiAgICAgfTsKIAogICAgIHN0cnVjdCBFeHBhbnNpb247Ci0gICAgUnVuKHNp
emVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpJbmxpbmVS
ZWN0JiwgY29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uLCBP
cHRpb25hbDxUZXh0Q29udGVudD4gPSBXVEY6Om51bGxvcHQpOwotCi0gICAgY29uc3QgTGF5b3V0
OjpJbmxpbmVSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9Ci0gICAgY29uc3Qg
TGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3Zl
cmZsb3c7IH0KLQotICAgIElubGluZUxheW91dFBvaW50IHRvcExlZnQoKSBjb25zdCB7IHJldHVy
biBtX3JlY3QudG9wTGVmdCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0LmxlZnQoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgcmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JlY3QucmlnaHQoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgdG9w
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBi
b3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7IH0KKyAgICBSdW4oc2l6ZV90
IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHRDb250ZW50PiA9
IFdURjo6bnVsbG9wdCk7CiAKLSAgICBJbmxpbmVMYXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQotCi0gICAgdm9pZCBtb3ZlVmVydGljYWxs
eShJbmxpbmVMYXlvdXRVbml0KTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogCiAgICAgT3B0aW9uYWw8VGV4dENvbnRlbnQ+
JiB0ZXh0Q29udGVudCgpIHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KICAgICBjb25zdCBPcHRp
b25hbDxUZXh0Q29udGVudD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29u
dGVudDsgfQpAQCAtMTAzLDEzICs4NywxMyBAQCBwcml2YXRlOgogICAgIGNvbnN0IHNpemVfdCBt
X2xpbmVJbmRleDsKICAgICBXZWFrUHRyPGNvbnN0IExheW91dDo6Qm94PiBtX2xheW91dEJveDsK
ICAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZSB7IG51bGxwdHIgfTsKLSAgICBMYXlvdXQ6
OklubGluZVJlY3QgbV9yZWN0OwotICAgIExheW91dDo6SW5saW5lUmVjdCBtX2lua092ZXJmbG93
OworICAgIEZsb2F0UmVjdCBtX3JlY3Q7CisgICAgRmxvYXRSZWN0IG1faW5rT3ZlcmZsb3c7CiAg
ICAgRXhwYW5zaW9uIG1fZXhwYW5zaW9uOwogICAgIE9wdGlvbmFsPFRleHRDb250ZW50PiBtX3Rl
eHRDb250ZW50OwogfTsKIAotaW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYgcmVjdCwg
Y29uc3QgTGF5b3V0OjpJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lv
biwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+IHRleHRDb250ZW50KQoraW5saW5lIFJ1bjo6UnVuKHNp
emVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFu
c2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+IHRleHRDb250ZW50KQogICAgIDogbV9saW5lSW5k
ZXgobGluZUluZGV4KQogICAgICwgbV9sYXlvdXRCb3gobWFrZVdlYWtQdHIobGF5b3V0Qm94KSkK
ICAgICAsIG1fcmVjdChyZWN0KQpAQCAtMTE5LDcgKzEwMyw3IEBAIGlubGluZSBSdW46OlJ1bihz
aXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlv
dXQ6OkluCiB7CiB9CiAKLWlubGluZSBSdW46OlRleHRDb250ZW50OjpUZXh0Q29udGVudCh1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTdHJpbmcs
IGJvb2wgbmVlZHNIeXBoZW4pCitpbmxpbmUgUnVuOjpUZXh0Q29udGVudDo6VGV4dENvbnRlbnQo
c2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTdHJpbmcs
IGJvb2wgbmVlZHNIeXBoZW4pCiAgICAgOiBtX3N0YXJ0KHN0YXJ0KQogICAgICwgbV9sZW5ndGgo
bGVuZ3RoKQogICAgICwgbV9uZWVkc0h5cGhlbihuZWVkc0h5cGhlbikKQEAgLTEyNywxMiArMTEx
LDYgQEAgaW5saW5lIFJ1bjo6VGV4dENvbnRlbnQ6OlRleHRDb250ZW50KHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmkKIHsKIH0KIAotaW5saW5lIHZvaWQgUnVuOjpt
b3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkKLXsKLSAgICBtX3JlY3QubW92
ZVZlcnRpY2FsbHkob2Zmc2V0KTsKLSAgICBtX2lua092ZXJmbG93Lm1vdmVWZXJ0aWNhbGx5KG9m
ZnNldCk7Ci19Ci0KIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCAxY2ViYjA2ZWZmYmI4OTU3NmE0MGJjOWM4MDI5OWI2NDVmODNmODYwLi41MzEzYmM4ZTMyMDAz
ODRmNjA1ODZiMmRiNzMzYjk5NWZjNWZiODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZmxleGZvcm1hdHRpbmcvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6c2l6ZUFuZFBs
YWNlRmxleEl0ZW1zKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udAogICAgICAgICBjb21w
dXRlRmxleEl0ZW1HZW9tZXRyeSgpOwogICAgIH0KICAgICBhdXRvIGZsZXhMaW5lID0gSW5saW5l
UmVjdCB7IGZsZXhJdGVtQ3Jvc0F4aXNTdGFydCwgZmxleEl0ZW1NYWluQXhpc1N0YXJ0LCBmbGV4
SXRlbU1haW5BeGlzRW5kIC0gZmxleEl0ZW1NYWluQXhpc1N0YXJ0LCBmbGV4SXRlbUNyb3NBeGlz
RW5kIC0gZmxleEl0ZW1Dcm9zQXhpc1N0YXJ0IH07Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmFkZExp
bmUoeyBmbGV4TGluZSwgZmxleExpbmUsIGZsZXhMaW5lLCB7IH0gfSk7CisgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZExpbmUoeyBmbGV4TGluZSwgZmxleExpbmUsIGZsZXhMaW5lLCB7IH0sIHsgfSB9
KTsKIH0KIAogdm9pZCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzRm9yRmxleEl0ZW1zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAppbmRleCA4ODZkN2U3MWU0YjYxNTA2MjliMTg1MjBmMjdlN2YzZGUzN2FmZWVkLi5iMWQ4
ZmNkNDEyZDA4NWI4YWNmZjc1YmY2ZjE4MjdlYjE5YmQ5MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxp
bmVMaW5lQm94LmgiCisjaW5jbHVkZSAiSW5saW5lTGluZVJ1bi5oIgogI2luY2x1ZGUgIklubGlu
ZVRleHRJdGVtLmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJM
YXlvdXRCb3guaCIKQEAgLTQwMiw2MyArNDAzLDIwIEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWls
CiAgICAgYXV0byBsaW5lSW5kZXggPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5zaXplKCk7CiAK
ICAgICBhdXRvIGNvbnN0cnVjdExpbmVHZW9tZXRyeSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gbGlu
ZUJveExvZ2ljYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsUmVjdC50b3AoKSArIGxp
bmVCb3hWZXJ0aWNhbE9mZnNldCwgbGluZUxvZ2ljYWxSZWN0LmxlZnQoKSArIGxpbmVCb3guaG9y
aXpvbnRhbEFsaWdubWVudE9mZnNldCgpLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCB7IH0pLCBs
aW5lQm94LmxvZ2ljYWxXaWR0aCgpLCBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSB9OwotICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZSh7IGxpbmVMb2dpY2FsUmVjdCwgbGluZUJveExvZ2lj
YWxSZWN0LCBsaW5lQm94VmVydGljYWxPZmZzZXQgKyBsaW5lQm94LmFsaWdubWVudEJhc2VsaW5l
KCkgfSk7CisgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxp
bmVMb2dpY2FsUmVjdC50b3AoKSArIGxpbmVCb3hWZXJ0aWNhbE9mZnNldCwgbGluZUxvZ2ljYWxS
ZWN0LmxlZnQoKSwgbGluZUJveC5sb2dpY2FsV2lkdGgoKSwgbGluZUJveC5sb2dpY2FsSGVpZ2h0
KCkgfTsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmUoeyBsaW5lTG9naWNhbFJlY3Qs
IGxpbmVCb3hMb2dpY2FsUmVjdCwgbGluZUJveFZlcnRpY2FsT2Zmc2V0ICsgbGluZUJveC5hbGln
bm1lbnRCYXNlbGluZSgpLCBsaW5lQm94Lmhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKS52YWx1
ZU9yKElubGluZUxheW91dFVuaXQgeyB9KSB9KTsKICAgICB9OwogICAgIGNvbnN0cnVjdExpbmVH
ZW9tZXRyeSgpOwogCi0gICAgaWYgKCFsaW5lQ29udGVudC5mbG9hdHMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgcm9vdCgpLCAq
dGhpcywgZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSB9OwotICAgICAgICAvLyBNb3Zl
IGZsb2F0cyB0byB0aGVpciBmaW5hbCBwb3NpdGlvbi4KLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBmbG9hdENhbmRpZGF0ZSA6IGxpbmVDb250ZW50LmZsb2F0cykgewotICAgICAgICAgICAgYXV0
byYgZmxvYXRCb3ggPSBmbG9hdENhbmRpZGF0ZS5pdGVtLT5sYXlvdXRCb3goKTsKLSAgICAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGZsb2F0
Qm94KTsKLSAgICAgICAgICAgIC8vIFNldCBzdGF0aWMgcG9zaXRpb24gZmlyc3QuCi0gICAgICAg
ICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gPSBmbG9hdENhbmRpZGF0ZS5pc0ludHJ1
c2l2ZSA/IGxpbmVMb2dpY2FsUmVjdC50b3AoKSA6IGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKTsK
LSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgbGluZUxvZ2ljYWxS
ZWN0LmxlZnQoKSwgdmVydGljYWxTdGF0aWNQb3NpdGlvbiB9KTsKLSAgICAgICAgICAgIC8vIEZs
b2F0IGl0LgotICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoZmxvYXRp
bmdDb250ZXh0LnBvc2l0aW9uRm9yRmxvYXQoZmxvYXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50
cykpOwotICAgICAgICAgICAgZmxvYXRpbmdDb250ZXh0LmFwcGVuZChmbG9hdEJveCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIGluaXRpYWxDb250YWluZ0Jsb2NrU2l6ZSA9IExheW91
dFNpemUgeyB9OwotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkKCkpIHsKLSAgICAg
ICAgLy8gSUNCIGlzIG5vdCB0aGUgcmVhbCBJQ0Igd2hlbiBseW91dEZvcm1hdHRpbmdDb250ZXh0
SW50ZWdyYXRpb25FbmFibGVkIGlzIG9uLgotICAgICAgICBpbml0aWFsQ29udGFpbmdCbG9ja1Np
emUgPSBsYXlvdXRTdGF0ZSgpLnZpZXdwb3J0U2l6ZSgpOwotICAgIH0gZWxzZQotICAgICAgICBp
bml0aWFsQ29udGFpbmdCbG9ja1NpemUgPSBnZW9tZXRyeUZvckJveChyb290KCkuaW5pdGlhbENv
bnRhaW5pbmdCbG9jaygpLCBFc2NhcGVSZWFzb246OlN0cm9rZU92ZXJmbG93TmVlZHNWaWV3cG9y
dEdlb21ldHJ5KS5jb250ZW50Qm94KCkuc2l6ZSgpOwotICAgIGF1dG8mIGlubGluZUNvbnRlbnQg
PSBmb3JtYXR0aW5nU3RhdGUuZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKLSAgICAvLyBD
b21wdXRlIGZpbmFsIGJveCBnZW9tZXRyeS4KICAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5l
Q29udGVudC5ydW5zKSB7CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5b3V0
Qm94KCk7CiAgICAgICAgIC8vIElubGluZSBsZXZlbCBjb250YWluZXJzICg8c3Bhbj4pIGRvbid0
IGdlbmVyYXRlIGRpc3BsYXkgcnVucyBhbmQgbmVpdGhlciBkbyBjb21wbGV0ZWx5IGNvbGxhcHNl
ZCBydW5zLgogICAgICAgICBhdXRvIGluaXRpYXRlc0lubGluZVJ1biA9IGxpbmVSdW4uaXNUZXh0
KCkgfHwgbGluZVJ1bi5pc0xpbmVCcmVhaygpIHx8IGxpbmVSdW4uaXNCb3goKTsKICAgICAgICAg
aWYgKGluaXRpYXRlc0lubGluZVJ1bikgewotICAgICAgICAgICAgYXV0byBjb21wdXRlZElua092
ZXJmbG93ID0gWyZdIChjb25zdCBhdXRvJiBsb2dpY2FsUmVjdCkgewotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLXRleHQgaW5rIG92ZXJmbG93LgotICAgICAg
ICAgICAgICAgIGlmICghbGluZVJ1bi5pc1RleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvZ2ljYWxSZWN0OwotICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gbGluZVJ1bi5z
dHlsZSgpOwotICAgICAgICAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBsb2dpY2FsUmVjdDsK
LSAgICAgICAgICAgICAgICBhdXRvIHN0cm9rZU92ZXJmbG93ID0gc3RkOjpjZWlsKHN0eWxlLmNv
bXB1dGVkU3Ryb2tlV2lkdGgoY2VpbGVkSW50U2l6ZShpbml0aWFsQ29udGFpbmdCbG9ja1NpemUp
KSk7Ci0gICAgICAgICAgICAgICAgaW5rT3ZlcmZsb3cuaW5mbGF0ZShzdHJva2VPdmVyZmxvdyk7
Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHlsZS5mb250Q2FzY2Fk
ZSgpLmxldHRlclNwYWNpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAobGV0dGVyU3BhY2luZyA8
IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTGFzdCBsZXR0ZXIncyBuZWdhdGl2ZSBzcGFj
aW5nIHNocmlua3MgbG9naWNhbCByZWN0LiBQdXNoIGl0IHRvIGluayBvdmVyZmxvdy4KLSAgICAg
ICAgICAgICAgICAgICAgaW5rT3ZlcmZsb3cuZXhwYW5kSG9yaXpvbnRhbGx5KC1sZXR0ZXJTcGFj
aW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlua092ZXJm
bG93OwotICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBsaW5l
UnVuLmlzQm94KCkgPyBsaW5lQm94LmlubGluZUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmxv
Z2ljYWxSZWN0KCkgOiBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihsaW5lUnVuKTsKLSAg
ICAgICAgICAgIC8vIElubGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUgYm94IHdo
aWxlIGZpbmFsIERpc3BsYXk6OlJ1bnMgbmVlZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgcGFyZW50
IERpc3BsYXk6Qm94Ci0gICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHdlIGp1c3QgbGVh
dmUgdGhlbSBiZSByZWxhdGl2ZSB0byB0aGUgbGluZSBib3g/Ci0gICAgICAgICAgICBsb2dpY2Fs
UmVjdC5tb3ZlQnkoeyBsaW5lTG9naWNhbFJlY3QubGVmdCgpLCBsaW5lTG9naWNhbFJlY3QudG9w
KCkgKyBsaW5lQm94VmVydGljYWxPZmZzZXQgfSk7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50
LnJ1bnMuYXBwZW5kKHsgbGluZUluZGV4LCBsYXlvdXRCb3gsIGxvZ2ljYWxSZWN0LCBjb21wdXRl
ZElua092ZXJmbG93KGxvZ2ljYWxSZWN0KSwgbGluZVJ1bi5leHBhbnNpb24oKSwgbGluZVJ1bi50
ZXh0Q29udGVudCgpIH0pOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4o
eyBsaW5lSW5kZXgsIGxheW91dEJveCwgbG9naWNhbFJlY3QsIGxpbmVSdW4uZXhwYW5zaW9uKCks
IGxpbmVSdW4udGV4dENvbnRlbnQoKSB9KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENyZWF0
ZSBkaXNwbGF5IGJveGVzLgogICAgICAgICAvLyBGSVhNRTogU2luY2UgPGJyPiBhbmQgPHdicj4g
cnVucyBoYXZlIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnRzLCB3ZSBtaWdodCBuZWVkIHRvIGNvbnN0
cnVjdCBhIGRpc3BsYXkgYm94IGhlcmUuIAogICAgICAgICBhdXRvIG5lZWRzQm94R2VvbWV0cnkg
PSBsaW5lUnVuLmlzQm94KCkgfHwgbGluZVJ1bi5pc0NvbnRhaW5lclN0YXJ0KCk7CiAgICAgICAg
IGlmIChuZWVkc0JveEdlb21ldHJ5KSB7CkBAIC00NzgsNiArNDM2LDIxIEBAIElubGluZVJlY3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNv
bnN0IExpbmVCdWlsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAo
IWxpbmVDb250ZW50LmZsb2F0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBmbG9hdGluZ0Nv
bnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUu
ZmxvYXRpbmdTdGF0ZSgpIH07CisgICAgICAgIC8vIE1vdmUgZmxvYXRzIHRvIHRoZWlyIGZpbmFs
IHBvc2l0aW9uLgorICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZsb2F0Q2FuZGlkYXRlIDogbGlu
ZUNvbnRlbnQuZmxvYXRzKSB7CisgICAgICAgICAgICBhdXRvJiBmbG9hdEJveCA9IGZsb2F0Q2Fu
ZGlkYXRlLml0ZW0tPmxheW91dEJveCgpOworICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkoZmxvYXRCb3gpOworICAgICAgICAgICAgLy8g
U2V0IHN0YXRpYyBwb3NpdGlvbiBmaXJzdC4KKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxTdGF0
aWNQb3NpdGlvbiA9IGZsb2F0Q2FuZGlkYXRlLmlzSW50cnVzaXZlID8gbGluZUxvZ2ljYWxSZWN0
LnRvcCgpIDogbGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpOworICAgICAgICAgICAgYm94R2VvbWV0
cnkuc2V0TG9naWNhbFRvcExlZnQoeyBsaW5lTG9naWNhbFJlY3QubGVmdCgpLCB2ZXJ0aWNhbFN0
YXRpY1Bvc2l0aW9uIH0pOworICAgICAgICAgICAgLy8gRmxvYXQgaXQuCisgICAgICAgICAgICBi
b3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChmbG9hdGluZ0NvbnRleHQucG9zaXRpb25Gb3JG
bG9hdChmbG9hdEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSk7CisgICAgICAgICAgICBmbG9h
dGluZ0NvbnRleHQuYXBwZW5kKGZsb2F0Qm94KTsKKyAgICAgICAgfQorICAgIH0KICAgICByZXR1
cm4gbGluZUxvZ2ljYWxSZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4
IDZlYmM0YTE4NzgzMjQ3YjdmODRmODM2YjY5MTk4MmZjMTIxZGMyMGIuLjEwNGE4NzMwOThkOTE4
YTIzY2VlMjgzYjc3NGFlZmZiOTIxNmUwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5o
CkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQogCi0jaW5jbHVkZSAiRGlzcGxheUlubGluZUNvbnRlbnQuaCIKICNpbmNsdWRlICJGb3Jt
YXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCiAjaW5jbHVkZSAiSW5saW5l
TGluZUdlb21ldHJ5LmgiCisjaW5jbHVkZSAiSW5saW5lTGluZVJ1bi5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzgsNyBAQCBu
YW1lc3BhY2UgTGF5b3V0IHsKIAogdXNpbmcgSW5saW5lSXRlbXMgPSBWZWN0b3I8SW5saW5lSXRl
bT47CiB1c2luZyBJbmxpbmVMaW5lcyA9IFZlY3RvcjxJbmxpbmVMaW5lR2VvbWV0cnk+OwordXNp
bmcgSW5saW5lTGluZVJ1bnMgPSBWZWN0b3I8TGluZVJ1bj47CiAKIC8vIElubGluZUZvcm1hdHRp
bmdTdGF0ZSBob2xkcyB0aGUgc3RhdGUgZm9yIGEgcGFydGljdWxhciBpbmxpbmUgZm9ybWF0dGlu
ZyBjb250ZXh0IHRyZWUuCiBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9y
bWF0dGluZ1N0YXRlIHsKQEAgLTU0LDQwICs1NSwzMCBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGlu
ZXMmIGxpbmVzKCkgeyByZXR1cm4gbV9saW5lczsgfQogICAgIHZvaWQgYWRkTGluZShjb25zdCBJ
bmxpbmVMaW5lR2VvbWV0cnkmIGxpbmUpIHsgbV9saW5lcy5hcHBlbmQobGluZSk7IH0KIAotICAg
IGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIGRpc3BsYXlJbmxpbmVDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5SW5saW5lQ29udGVudC5nZXQoKTsgfQotICAgIERpc3BsYXk6
OklubGluZUNvbnRlbnQmIGVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7CisgICAgY29uc3Qg
SW5saW5lTGluZVJ1bnMmIGxpbmVSdW5zKCkgY29uc3QgeyByZXR1cm4gbV9saW5lUnVuczsgfQor
ICAgIElubGluZUxpbmVSdW5zJiBsaW5lUnVucygpIHsgcmV0dXJuIG1fbGluZVJ1bnM7IH0KKyAg
ICB2b2lkIGFkZExpbmVSdW4oY29uc3QgTGluZVJ1biYgcnVuKSB7IG1fbGluZVJ1bnMuYXBwZW5k
KHJ1bik7IH0KIAogICAgIHZvaWQgY2xlYXJMaW5lQW5kUnVucygpOwotICAgIHZvaWQgc2hyaW5r
RGlzcGxheUlubGluZUNvbnRlbnQoKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKIHByaXZh
dGU6CiAgICAgLy8gQ2FjaGVhYmxlIGlucHV0IHRvIGxpbmUgbGF5b3V0LgogICAgIElubGluZUl0
ZW1zIG1faW5saW5lSXRlbXM7CiAgICAgSW5saW5lTGluZXMgbV9saW5lczsKLQotICAgIFJlZlB0
cjxEaXNwbGF5OjpJbmxpbmVDb250ZW50PiBtX2Rpc3BsYXlJbmxpbmVDb250ZW50OworICAgIElu
bGluZUxpbmVSdW5zIG1fbGluZVJ1bnM7CiB9OwogCi1pbmxpbmUgRGlzcGxheTo6SW5saW5lQ29u
dGVudCYgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjplbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgp
Ci17Ci0gICAgaWYgKCFtX2Rpc3BsYXlJbmxpbmVDb250ZW50KQotICAgICAgICBtX2Rpc3BsYXlJ
bmxpbmVDb250ZW50ID0gYWRvcHRSZWYoKm5ldyBEaXNwbGF5OjpJbmxpbmVDb250ZW50KTsKLSAg
ICByZXR1cm4gKm1fZGlzcGxheUlubGluZUNvbnRlbnQ7Ci19Ci0KIGlubGluZSB2b2lkIElubGlu
ZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJMaW5lQW5kUnVucygpCiB7Ci0gICAgbV9kaXNwbGF5SW5s
aW5lQ29udGVudCA9IG51bGxwdHI7CiAgICAgbV9saW5lcy5jbGVhcigpOworICAgIG1fbGluZVJ1
bnMuY2xlYXIoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpzaHJp
bmtEaXNwbGF5SW5saW5lQ29udGVudCgpCitpbmxpbmUgdm9pZCBJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU6OnNocmlua1RvRml0KCkKIHsKICAgICBtX2xpbmVzLnNocmlua1RvRml0KCk7Ci0gICAgaWYg
KCFtX2Rpc3BsYXlJbmxpbmVDb250ZW50KQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaXNwbGF5
SW5saW5lQ29udGVudC0+cnVucy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fZGlzcGxheUlubGluZUNv
bnRlbnQtPmxpbmVzLnNocmlua1RvRml0KCk7CisgICAgbV9saW5lUnVucy5zaHJpbmtUb0ZpdCgp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lLmgKaW5kZXggZDcwNTVlNmJmYzNmYjljOWI3MDU5Nzc4ZjdiNmE0YTFhMGJi
OWIzYy4uMmU5NWE3YzcxZTRjNTRlOTEyY2E0NGQyZjg0NmQ4MDMxMTdlNGQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApA
QCAtMjcsOCArMjcsOCBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CiAKLSNpbmNsdWRlICJEaXNwbGF5UnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbS5oIgorI2lu
Y2x1ZGUgIklubGluZUxpbmVSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MSwxMyArNzEsMTMgQEAgcHVibGljOgogCiAgICAgICAg
IGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
Qm94LT5zdHlsZSgpOyB9Ci0gICAgICAgIGNvbnN0IE9wdGlvbmFsPERpc3BsYXk6OlJ1bjo6VGV4
dENvbnRlbnQ+JiB0ZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0K
KyAgICAgICAgY29uc3QgT3B0aW9uYWw8TGluZVJ1bjo6VGV4dD4mIHRleHRDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsgfQogCiAgICAgICAgIElubGluZUxheW91dFVuaXQg
bG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsV2lkdGg7IH0KICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExl
ZnQ7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBsb2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRoKCk7IH0KIAotICAgICAgICBjb25zdCBE
aXNwbGF5OjpSdW46OkV4cGFuc2lvbiYgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBh
bnNpb247IH0KKyAgICAgICAgY29uc3QgTGluZVJ1bjo6RXhwYW5zaW9uJiBleHBhbnNpb24oKSBj
b25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogICAgICAgICBib29sIGhhc0V4cGFuc2lvbk9w
cG9ydHVuaXR5KCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb25PcHBvcnR1bml0eUNvdW50OyB9
CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAg
ICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQ7IH0KQEAgLTEyMSw4ICsxMjEsOCBAQCBwdWJs
aWM6CiAgICAgICAgIElubGluZUxheW91dFVuaXQgbV9sb2dpY2FsV2lkdGggeyAwIH07CiAgICAg
ICAgIFRyYWlsaW5nV2hpdGVzcGFjZSBtX3RyYWlsaW5nV2hpdGVzcGFjZVR5cGUgeyBUcmFpbGlu
Z1doaXRlc3BhY2U6Ok5vbmUgfTsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX3RyYWlsaW5n
V2hpdGVzcGFjZVdpZHRoIHsgMCB9OwotICAgICAgICBPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRl
eHRDb250ZW50PiBtX3RleHRDb250ZW50OwotICAgICAgICBEaXNwbGF5OjpSdW46OkV4cGFuc2lv
biBtX2V4cGFuc2lvbjsKKyAgICAgICAgT3B0aW9uYWw8TGluZVJ1bjo6VGV4dD4gbV90ZXh0Q29u
dGVudDsKKyAgICAgICAgTGluZVJ1bjo6RXhwYW5zaW9uIG1fZXhwYW5zaW9uOwogICAgICAgICB1
bnNpZ25lZCBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgeyAwIH07CiAgICAgfTsKICAgICB1
c2luZyBSdW5MaXN0ID0gVmVjdG9yPFJ1biwgMTA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUdlb21ldHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lR2VvbWV0cnkuaAppbmRl
eCA0YjhmZDc1NTFkZDEzZTA4OTMyOThhZGMzNzAxMjk0ZjUyYjgzZjIyLi43ZWNmNGUxZThkN2Q3
MjFiZWZlNjA4ZWRhYzJjNDg0MDBlMTAyMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lR2VvbWV0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lR2VvbWV0cnkuaApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNsYXNzIElubGluZUxpbmVHZW9tZXRy
eSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5saW5lTGlu
ZUdlb21ldHJ5KGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgSW5saW5l
UmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBJbmxpbmVMYXlvdXRVbml0IGFsaWdtZW50QmFzZWxp
bmUpOworICAgIElubGluZUxpbmVHZW9tZXRyeShjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNh
bFJlY3QsIGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgSW5saW5lTGF5b3V0
VW5pdCBhbGlnbWVudEJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBbGlnbm1l
bnRPZmZzZXQpOwogCiAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsg
cmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVmdCgpOyB9OwogICAgIElubGluZUxheW91dFVuaXQgbG9n
aWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5yaWdodCgpOyB9OwpAQCAt
NTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2lj
YWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94TG9naWNhbFJlY3Q7IH0KIAogICAgIElu
bGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2FsaWdtZW50QmFzZWxp
bmU7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2hvcml6b250YWxBbGlnbm1lbnRPZmZzZXQ7IH0KIAogICAgIHZvaWQg
bW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV9sb2dpY2FsUmVjdC5t
b3ZlVmVydGljYWxseShvZmZzZXQpOyB9CiAKQEAgLTU3LDEyICs1OCwxNCBAQCBwcml2YXRlOgog
ICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKICAgICBJbmxpbmVSZWN0IG1fbGluZUJveExv
Z2ljYWxSZWN0OwogICAgIElubGluZUxheW91dFVuaXQgbV9hbGlnbWVudEJhc2VsaW5lIHsgMCB9
OworICAgIElubGluZUxheW91dFVuaXQgbV9ob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0IHsgMCB9
OwogfTsKIAotaW5saW5lIElubGluZUxpbmVHZW9tZXRyeTo6SW5saW5lTGluZUdlb21ldHJ5KGNv
bnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJv
eExvZ2ljYWxSZWN0LCBJbmxpbmVMYXlvdXRVbml0IGFsaWdtZW50QmFzZWxpbmUpCitpbmxpbmUg
SW5saW5lTGluZUdlb21ldHJ5OjpJbmxpbmVMaW5lR2VvbWV0cnkoY29uc3QgSW5saW5lUmVjdCYg
bGluZUxvZ2ljYWxSZWN0LCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIElu
bGluZUxheW91dFVuaXQgYWxpZ21lbnRCYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KQogICAgIDogbV9sb2dpY2FsUmVjdChsaW5lTG9naWNhbFJlY3Qp
CiAgICAgLCBtX2xpbmVCb3hMb2dpY2FsUmVjdChsaW5lQm94TG9naWNhbFJlY3QpCiAgICAgLCBt
X2FsaWdtZW50QmFzZWxpbmUoYWxpZ21lbnRCYXNlbGluZSkKKyAgICAsIG1faG9yaXpvbnRhbEFs
aWdubWVudE9mZnNldChob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lUnVu
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lUnVu
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWU3ZjM4N2NmM2MxM2NhZDM4N2Y4MzRkMDM5YTc0NzhhZGU3NmE2MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVSdW4uaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRl
ICJJbmxpbmVSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiVGV4dEZs
YWdzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitzdHJ1
Y3QgTGluZVJ1biB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIHN0
cnVjdCBUZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAg
IHB1YmxpYzoKKyAgICAgICAgVGV4dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNv
bnN0IFN0cmluZyYsIGJvb2wgbmVlZHNIeXBoZW4pOworCisgICAgICAgIHNpemVfdCBzdGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KKyAgICAgICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXJ0KCkgKyBsZW5ndGgoKTsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgU3RyaW5nIGNvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRTdHJpbmc7IH0KKworICAgICAgICBib29sIG5lZWRzSHlwaGVuKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0h5cGhlbjsgfQorICAgICAgICB2b2lkIHNldE5lZWRzSHlw
aGVuKCkgeyBtX25lZWRzSHlwaGVuID0gdHJ1ZTsgfQorCisgICAgICAgIHZvaWQgZXhwYW5kKHNp
emVfdCBkZWx0YSkgeyBtX2xlbmd0aCArPSBkZWx0YTsgfQorICAgICAgICB2b2lkIHNocmluayhz
aXplX3QgZGVsdGEpIHsgbV9sZW5ndGggLT0gZGVsdGE7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIHNpemVfdCBtX3N0YXJ0IHsgMCB9OworICAgICAgICBzaXplX3QgbV9sZW5ndGggeyAwIH07
CisgICAgICAgIGJvb2wgbV9uZWVkc0h5cGhlbiB7IGZhbHNlIH07CisgICAgICAgIFN0cmluZyBt
X2NvbnRlbnRTdHJpbmc7CisgICAgfTsKKworICAgIHN0cnVjdCBFeHBhbnNpb247CisgICAgTGlu
ZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiwgRXhw
YW5zaW9uLCBPcHRpb25hbDxUZXh0PiA9IFdURjo6bnVsbG9wdCk7CisKKyAgICBjb25zdCBJbmxp
bmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0KKyAg
ICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNh
bFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQorICAgIE9wdGlvbmFsPFRleHQ+JiB0ZXh0
KCkgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3QgT3B0aW9uYWw8VGV4dD4mIHRleHQoKSBj
b25zdCB7IHJldHVybiBtX3RleHQ7IH0KKworICAgIHN0cnVjdCBFeHBhbnNpb24geworICAgICAg
ICBFeHBhbnNpb25CZWhhdmlvciBiZWhhdmlvciB7IERlZmF1bHRFeHBhbnNpb24gfTsKKyAgICAg
ICAgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsRXhwYW5zaW9uIHsgMCB9OworICAgIH07Cisg
ICAgRXhwYW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9Cisg
ICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0K
KworICAgIHNpemVfdCBsaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleDsgfQor
Citwcml2YXRlOgorICAgIGNvbnN0IHNpemVfdCBtX2xpbmVJbmRleDsKKyAgICBXZWFrUHRyPGNv
bnN0IExheW91dDo6Qm94PiBtX2xheW91dEJveDsKKyAgICBJbmxpbmVSZWN0IG1fbG9naWNhbFJl
Y3Q7CisgICAgRXhwYW5zaW9uIG1fZXhwYW5zaW9uOworICAgIE9wdGlvbmFsPFRleHQ+IG1fdGV4
dDsKK307CisKK2lubGluZSBMaW5lUnVuOjpMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0LCBF
eHBhbnNpb24gZXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0PiB0ZXh0KQorICAgIDogbV9saW5lSW5k
ZXgobGluZUluZGV4KQorICAgICwgbV9sYXlvdXRCb3gobWFrZVdlYWtQdHIobGF5b3V0Qm94KSkK
KyAgICAsIG1fbG9naWNhbFJlY3QobG9naWNhbFJlY3QpCisgICAgLCBtX2V4cGFuc2lvbihleHBh
bnNpb24pCisgICAgLCBtX3RleHQodGV4dCkKK3sKK30KKworaW5saW5lIExpbmVSdW46OlRleHQ6
OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRT
dHJpbmcsIGJvb2wgbmVlZHNIeXBoZW4pCisgICAgOiBtX3N0YXJ0KHN0YXJ0KQorICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQorICAgICwgbV9uZWVkc0h5cGhlbihuZWVkc0h5cGhlbikKKyAgICAsIG1f
Y29udGVudFN0cmluZyhjb250ZW50U3RyaW5nKQoreworfQorCit9Cit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggYmIxOGI1MjQyZmIyYzNkODRkMDlhODM4
ODg2MTQ0NmQzM2Y2ODdmMS4uMWNhMzEwOWIzZWUyNzBmMDc4ZDQwMDgyNzQzYWFiMzM1ZmQ5ODkx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTExMCw2ICsxMTAsNyBA
QCB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiAgICAgcHJlcGFyZUxheW91dFN0YXRlKCk7CiAg
ICAgcHJlcGFyZUZsb2F0aW5nU3RhdGUoKTsKIAorICAgIG1fZGlzcGxheUlubGluZUNvbnRlbnQg
PSBudWxscHRyOwogICAgIGF1dG8gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0IHsgcm9vdExheW91dEJveCgpLCBtX2lubGluZUZvcm1hdHRp
bmdTdGF0ZSB9OwogCiAgICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IExheW91dDo6SW52YWxp
ZGF0aW9uU3RhdGUgeyB9OwpAQCAtMTIyLDkgKzEyMyw0NiBAQCB2b2lkIExpbmVMYXlvdXQ6Omxh
eW91dCgpCiAKIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0RGlzcGxheUNvbnRlbnQoKQogewot
ICAgIC8vIEZJWE1FOiBNb3ZlIERpc3BsYXk6OlJ1biBjb25zdHJ1Y3Rpb24gb3ZlciBoZXJlLgor
ICAgIGF1dG8mIGRpc3BsYXlJbmxpbmVDb250ZW50ID0gZW5zdXJlRGlzcGxheUlubGluZUNvbnRl
bnQoKTsKKworICAgIGF1dG8gY29uc3RydWN0RGlzcGxheUxpbmVSdW5zID0gWyZdIHsKKyAgICAg
ICAgYXV0byBpbml0aWFsQ29udGFpbmdCbG9ja1NpemUgPSBtX2xheW91dFN0YXRlLnZpZXdwb3J0
U2l6ZSgpOworICAgICAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBtX2lubGluZUZvcm1hdHRpbmdT
dGF0ZS5saW5lUnVucygpKSB7CisgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVu
LmxheW91dEJveCgpOworICAgICAgICAgICAgYXV0byBjb21wdXRlZElua092ZXJmbG93ID0gWyZd
IChjb25zdCBhdXRvJiBsb2dpY2FsUmVjdCkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3Igbm9uLXRleHQgaW5rIG92ZXJmbG93LgorICAgICAgICAgICAgICAgIGlm
ICghbGluZVJ1bi50ZXh0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsUmVj
dDsKKyAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOworICAg
ICAgICAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBsb2dpY2FsUmVjdDsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN0cm9rZU92ZXJmbG93ID0gc3RkOjpjZWlsKHN0eWxlLmNvbXB1dGVkU3Ryb2tl
V2lkdGgoY2VpbGVkSW50U2l6ZShpbml0aWFsQ29udGFpbmdCbG9ja1NpemUpKSk7CisgICAgICAg
ICAgICAgICAgaW5rT3ZlcmZsb3cuaW5mbGF0ZShzdHJva2VPdmVyZmxvdyk7CisKKyAgICAgICAg
ICAgICAgICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHlsZS5mb250Q2FzY2FkZSgpLmxldHRlclNw
YWNpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAobGV0dGVyU3BhY2luZyA8IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gTGFzdCBsZXR0ZXIncyBuZWdhdGl2ZSBzcGFjaW5nIHNocmlua3Mg
bG9naWNhbCByZWN0LiBQdXNoIGl0IHRvIGluayBvdmVyZmxvdy4KKyAgICAgICAgICAgICAgICAg
ICAgaW5rT3ZlcmZsb3cuZXhwYW5kKC1sZXR0ZXJTcGFjaW5nLCB7IH0pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gaW5rT3ZlcmZsb3c7CisgICAgICAgICAgICB9
OworICAgICAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9IEZsb2F0UmVjdCB7IGxpbmVSdW4ubG9n
aWNhbFJlY3QoKSB9OworICAgICAgICAgICAgLy8gSW5saW5lIGJveGVzIGFyZSByZWxhdGl2ZSB0
byB0aGUgbGluZSBib3ggd2hpbGUgZmluYWwgRGlzcGxheTo6UnVucyBuZWVkIHRvIGJlIHJlbGF0
aXZlIHRvIHRoZSBwYXJlbnQgRGlzcGxheTpCb3gKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91
bGRuJ3Qgd2UganVzdCBsZWF2ZSB0aGVtIGJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGJveD8KKyAg
ICAgICAgICAgIGF1dG8gbGluZUluZGV4ID0gbGluZVJ1bi5saW5lSW5kZXgoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxpbmVCb3hMb2dpY2FsUmVjdCA9IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLmxp
bmVzKClbbGluZUluZGV4XS5saW5lQm94TG9naWNhbFJlY3QoKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxSZWN0Lm1vdmVCeSh7IGxpbmVCb3hMb2dpY2FsUmVjdC5sZWZ0KCksIGxpbmVCb3hMb2dpY2Fs
UmVjdC50b3AoKSB9KTsKKworICAgICAgICAgICAgV1RGOjpPcHRpb25hbDxEaXNwbGF5OjpSdW46
OlRleHRDb250ZW50PiB0ZXh0Q29udGVudDsKKyAgICAgICAgICAgIGlmIChhdXRvIHRleHQgPSBs
aW5lUnVuLnRleHQoKSkKKyAgICAgICAgICAgICAgICB0ZXh0Q29udGVudCA9IERpc3BsYXk6OlJ1
bjo6VGV4dENvbnRlbnQgeyB0ZXh0LT5zdGFydCgpLCB0ZXh0LT5sZW5ndGgoKSwgdGV4dC0+Y29u
dGVudCgpLCB0ZXh0LT5uZWVkc0h5cGhlbigpIH07CisgICAgICAgICAgICBhdXRvIGV4cGFuc2lv
biA9IERpc3BsYXk6OlJ1bjo6RXhwYW5zaW9uIHsgbGluZVJ1bi5leHBhbnNpb24oKS5iZWhhdmlv
ciwgbGluZVJ1bi5leHBhbnNpb24oKS5ob3Jpem9udGFsRXhwYW5zaW9uIH07CisgICAgICAgICAg
ICBhdXRvIGRpc3BsYXlSdW4gPSBEaXNwbGF5OjpSdW4geyBsaW5lSW5kZXgsIGxheW91dEJveCwg
bG9naWNhbFJlY3QsIGNvbXB1dGVkSW5rT3ZlcmZsb3cobG9naWNhbFJlY3QpLCBleHBhbnNpb24s
IHRleHRDb250ZW50IH07CisgICAgICAgICAgICBkaXNwbGF5SW5saW5lQ29udGVudC5ydW5zLmFw
cGVuZChkaXNwbGF5UnVuKTsKKyAgICAgICAgfQorICAgIH07CisgICAgY29uc3RydWN0RGlzcGxh
eUxpbmVSdW5zKCk7CisKICAgICBhdXRvIGNvbnN0cnVjdERpc3BsYXlMaW5lID0gWyZdIHsKLSAg
ICAgICAgYXV0byYgZGlzcGxheUlubGluZUNvbnRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0
ZS5lbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgpOwogICAgICAgICBhdXRvJiBsaW5lcyA9IG1f
aW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCk7CiAgICAgICAgIGF1dG8mIHJ1bnMgPSBkaXNw
bGF5SW5saW5lQ29udGVudC5ydW5zOwogICAgICAgICBzaXplX3QgcnVuSW5kZXggPSAwOwpAQCAt
MTQzLDExICsxODEsMTIgQEAgdm9pZCBMaW5lTGF5b3V0Ojpjb25zdHJ1Y3REaXNwbGF5Q29udGVu
dCgpCiAgICAgICAgICAgICBhdXRvIGxpbmVSZWN0ID0gRmxvYXRSZWN0IHsgbGluZS5sb2dpY2Fs
UmVjdCgpIH07CiAgICAgICAgICAgICAvLyBQYWludGluZyBjb2RlIChzcGVjaWZpY2FsbHkgVGV4
dFJ1bidzIHhQb3MpIG5lZWRzIHRoZSBsaW5lIGJveCBvZmZzZXQgdG8gYmUgYWJsZSB0byBjb21w
dXRlIHRhYiBwb3NpdGlvbnMuCiAgICAgICAgICAgICBsaW5lUmVjdC5zZXRYKGxpbmVCb3hMb2dp
Y2FsUmVjdC5sZWZ0KCkpOwotICAgICAgICAgICAgZGlzcGxheUlubGluZUNvbnRlbnQubGluZXMu
YXBwZW5kKHsgbGluZVJlY3QsIHNjcm9sbGFibGVPdmVyZmxvd1JlY3QsIGxpbmVJbmtPdmVyZmxv
d1JlY3QsIGxpbmUuYmFzZWxpbmUoKSB9KTsKKyAgICAgICAgICAgIGRpc3BsYXlJbmxpbmVDb250
ZW50LmxpbmVzLmFwcGVuZCh7IGxpbmVSZWN0LCBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0LCBsaW5l
SW5rT3ZlcmZsb3dSZWN0LCBsaW5lLmJhc2VsaW5lKCksIGxpbmUuaG9yaXpvbnRhbEFsaWdubWVu
dE9mZnNldCgpIH0pOwogICAgICAgICB9CiAgICAgfTsKICAgICBjb25zdHJ1Y3REaXNwbGF5TGlu
ZSgpOwotICAgIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLnNocmlua0Rpc3BsYXlJbmxpbmVDb250
ZW50KCk7CisgICAgZGlzcGxheUlubGluZUNvbnRlbnQuc2hyaW5rVG9GaXQoKTsKKyAgICBtX2lu
bGluZUZvcm1hdHRpbmdTdGF0ZS5zaHJpbmtUb0ZpdCgpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6
OnByZXBhcmVMYXlvdXRTdGF0ZSgpCkBAIC0yMzUsOSArMjc0LDExIEBAIHZvaWQgTGluZUxheW91
dDo6Y29sbGVjdE92ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICB9CiB9CiAKLWNv
bnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIExpbmVMYXlvdXQ6OmRpc3BsYXlJbmxpbmVDb250
ZW50KCkgY29uc3QKK0Rpc3BsYXk6OklubGluZUNvbnRlbnQmIExpbmVMYXlvdXQ6OmVuc3VyZURp
c3BsYXlJbmxpbmVDb250ZW50KCkKIHsKLSAgICByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nU3Rh
dGUuZGlzcGxheUlubGluZUNvbnRlbnQoKTsKKyAgICBpZiAoIW1fZGlzcGxheUlubGluZUNvbnRl
bnQpCisgICAgICAgIG1fZGlzcGxheUlubGluZUNvbnRlbnQgPSBhZG9wdFJlZigqbmV3IERpc3Bs
YXk6OklubGluZUNvbnRlbnQpOworICAgIHJldHVybiAqbV9kaXNwbGF5SW5saW5lQ29udGVudDsK
IH0KIAogTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRl
eHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdApAQCAtMzM2LDcg
KzM3Nyw5IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgU3RyaW5nIHRleHRXaXRoSHlw
aGVuOwogICAgICAgICBpZiAodGV4dENvbnRlbnQubmVlZHNIeXBoZW4oKSkKICAgICAgICAgICAg
IHRleHRXaXRoSHlwaGVuID0gbWFrZVN0cmluZyh0ZXh0Q29udGVudC5jb250ZW50KCksIHN0eWxl
Lmh5cGhlblN0cmluZygpKTsKLSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgIXRleHRXaXRoSHlw
aGVuLmlzRW1wdHkoKSA/IHRleHRXaXRoSHlwaGVuIDogdGV4dENvbnRlbnQuY29udGVudCgpLCBy
dW4ubGVmdCgpIC0gbGluZS5yZWN0KCkueCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lv
biwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CisgICAgICAgIC8vIFRleHRSdW4gZXhwZWN0cyB0aGUg
eFBvcyB0byBiZSBhZGp1c3RlZCB3aXQgaHRlIGFsaWdtZW50IG9mZnNldCAoZS5nLiB3aGVuIHRo
ZSBsaW5lIGlzIGNlbnRlciBhbGlnbmVkIGFuZCB0aGUgcnVuIHN0YXJ0cyBhdCAxMDBweCAtZHVl
IHRvIHRoZSBhbGlnbWVudCwgdGhlIHhwb3MgaXMgc3VwcG9zZWQgdG8gYmUgMHB4KS4KKyAgICAg
ICAgYXV0byB4UG9zID0gcmVjdC54KCkgLSAobGluZS5yZWN0KCkueCgpICsgbGluZS5ob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KCkpOworICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdp
dGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGVudC5jb250ZW50
KCksIHhQb3MsIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZp
b3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3Bh
Y2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAgICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsg
cmVjdC54KCkgKyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZSwg
ZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRl
eCBiNjk0ODg1NDZlZGRkYWVlZmZjY2UyNDM5MTFmMmE4NmVhZGZhYTQ2Li45MjA2YTJhNDZjMzk4
OWZiZGQ1NjEwNTJlZDU4OGMyNWE3YmZiNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29sbGVjdE92ZXJmbG93
KFJlbmRlckJsb2NrRmxvdyYpOwogCi0gICAgY29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudCog
ZGlzcGxheUlubGluZUNvbnRlbnQoKSBjb25zdDsKKyAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVD
b250ZW50KiBkaXNwbGF5SW5saW5lQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlu
bGluZUNvbnRlbnQuZ2V0KCk7IH0KIAogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKQEAgLTgzLDYg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXBhcmVMYXlvdXRTdGF0ZSgpOwogICAgIHZv
aWQgcHJlcGFyZUZsb2F0aW5nU3RhdGUoKTsKICAgICB2b2lkIGNvbnN0cnVjdERpc3BsYXlDb250
ZW50KCk7CisgICAgRGlzcGxheTo6SW5saW5lQ29udGVudCYgZW5zdXJlRGlzcGxheUlubGluZUNv
bnRlbnQoKTsKIAogICAgIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94
KCkgY29uc3Q7CiAgICAgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3goKTsKQEAg
LTkzLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBCb3hUcmVlIG1fYm94VHJlZTsKICAgICBMYXlv
dXQ6OkxheW91dFN0YXRlIG1fbGF5b3V0U3RhdGU7CiAgICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nU3RhdGUmIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlOworICAgIFJlZlB0cjxEaXNwbGF5OjpJ
bmxpbmVDb250ZW50PiBtX2Rpc3BsYXlJbmxpbmVDb250ZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IGQ5OWRlMjllNTk4MDdlMjgzOWM4MjFiMGQ2ZWVhZDFiY2U1OTFhZTkuLmI0YTVhNjZj
ZjVkMjM5Y2YwMjRlYjY3OWU4N2FkMTU3NjA3ZTM1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTM4MSwx
MSArMzgxLDYgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRTdWJUcmVlKGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHBhcmVudFJlbmRlcmVyLCBDb250YWluZXJCb3gKIHN0YXRpYyB2b2lkIG91dHB1dElu
bGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IENvbnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QsIHVuc2lnbmVkIGRl
cHRoKQogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVz
dGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKLSAg
ICBhdXRvKiBkaXNwbGF5SW5saW5lQ29udGVudCA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5kaXNw
bGF5SW5saW5lQ29udGVudCgpOwotICAgIGlmICghZGlzcGxheUlubGluZUNvbnRlbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gZGlzcGxheUlubGluZUNvbnRl
bnQtPnJ1bnM7CiAgICAgYXV0byYgbGluZXMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMo
KTsKIAogICAgIHVuc2lnbmVkIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKQEAgLTM5OCwxOCArMzkz
LDE5IEBAIHN0YXRpYyB2b2lkIG91dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsCiAgICAgICAgIHN0cmVhbSA8PCAiWyIgPDwg
bGluZS5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBsaW5lLmxvZ2ljYWxUb3AoKSA8PCAiICIgPDwg
bGluZS5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgbGluZS5sb2dpY2FsSGVpZ2h0KCkgPDwgIl1b
YmFzZWxpbmU6ICIgPDwgbGluZS5iYXNlbGluZSgpIDw8ICJdIjsKICAgICBzdHJlYW0ubmV4dExp
bmUoKTsKIAotICAgIGZvciAoYXV0byYgZGlzcGxheVJ1biA6IGRpc3BsYXlSdW5zKSB7CisgICAg
Zm9yIChhdXRvJiBydW4gOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKSkgewogICAg
ICAgICB1bnNpZ25lZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAgICAgIHdoaWxlICgrK3By
aW50ZWRDaGFyYWN0ZXJzIDw9IGRlcHRoICogMikKICAgICAgICAgICAgIHN0cmVhbSA8PCAiICI7
CiAgICAgICAgIHN0cmVhbSA8PCAiICAiOwotICAgICAgICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29u
dGVudCgpKQorICAgICAgICBpZiAocnVuLnRleHQoKSkKICAgICAgICAgICAgIHN0cmVhbSA8PCAi
aW5saW5lIHRleHQgYm94IjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RyZWFtIDw8ICJp
bmxpbmUgYm94IjsKLSAgICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgZGlzcGxheVJ1bi5sZWZ0
KCkgPDwgIiwiIDw8IGRpc3BsYXlSdW4udG9wKCkgPDwgIikgc2l6ZSAiIDw8IGRpc3BsYXlSdW4u
d2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5oZWlnaHQoKTsKLSAgICAgICAgaWYgKGRpc3Bs
YXlSdW4udGV4dENvbnRlbnQoKSkKLSAgICAgICAgICAgIHN0cmVhbSA8PCAiIHJ1bigiIDw8IGRp
c3BsYXlSdW4udGV4dENvbnRlbnQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGRpc3BsYXlSdW4udGV4
dENvbnRlbnQoKS0+ZW5kKCkgPDwgIikiOworICAgICAgICBhdXRvJiBydW5Mb2dpY2FsUmVjdCA9
IHJ1bi5sb2dpY2FsUmVjdCgpOworICAgICAgICBzdHJlYW0gPDwgIiBhdCAoIiA8PCBydW5Mb2dp
Y2FsUmVjdC5sZWZ0KCkgPDwgIiwiIDw8IHJ1bkxvZ2ljYWxSZWN0LnRvcCgpIDw8ICIpIHNpemUg
IiA8PCBydW5Mb2dpY2FsUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCBydW5Mb2dpY2FsUmVjdC5oZWln
aHQoKTsKKyAgICAgICAgaWYgKHJ1bi50ZXh0KCkpCisgICAgICAgICAgICBzdHJlYW0gPDwgIiBy
dW4oIiA8PCBydW4udGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgcnVuLnRleHQoKS0+ZW5kKCkg
PDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZv
cm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAyMzVmNDBlODAwZWE5MWM1YzEwOGRhMjQzOGVjZTUz
YTk4M2NiZDJjLi40MjVhNTUzMjIzMzJjOGFiNTg4MzI1YjI0OGU2YjMxMTg5YzM4ZmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRp
bmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEzMCw4ICsxMzAsNyBAQCB2b2lkIFRh
YmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQg
YXZhaWxhYmxlSG9yaXpvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
Y2VsbEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlZSA9IGxheW91dFN0YXRlKCku
ZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY2VsbEJveCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8mIGRpc3BsYXlDb250ZW50ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlZS5lbnN1
cmVEaXNwbGF5SW5saW5lQ29udGVudCgpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IHJ1biA6IGRpc3BsYXlDb250ZW50LnJ1bnMpCisgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgcnVuIDogaW5saW5lRm9ybWF0dGluZ1N0YXRlZS5saW5lUnVucygpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcnVuLm1vdmVWZXJ0aWNhbGx5KGludHJpbnNpY1BhZGRpbmdUb3ApOwogICAg
ICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmUgOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGVl
LmxpbmVzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLm1vdmVWZXJ0aWNhbGx5KGlu
dHJpbnNpY1BhZGRpbmdUb3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaAppbmRl
eCAxYWYxMjE0NTQ5NTQ0NGZlM2ZjMWNmZTk2MmYxYzZlZGU5NmFiY2MxLi4wMWI3YTZjMzViNjZj
Njg5OTZhNzVhOTM5ZTk5NzRlMzQwNWYyOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1
blBhdGguaApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgRmxvYXRSZWN0IERp
c3BsYXlSdW5QYXRoOjpyZWN0KCkgY29uc3QKIHsKICAgICBhdXRvIHJlY3QgPSBydW4oKS5yZWN0
KCk7Ci0gICAgYXV0byBwb3NpdGlvbiA9IGxpbmVQb3NpdGlvbihyZWN0LmxlZnQoKSwgcmVjdC50
b3AoKSk7CisgICAgYXV0byBwb3NpdGlvbiA9IGxpbmVQb3NpdGlvbihyZWN0LngoKSwgcmVjdC55
KCkpOwogICAgIHJldHVybiB7IHBvc2l0aW9uLCByZWN0LnNpemUoKSB9OwogfQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ODk3ZmYyOWE5MDNlMjgyNzQ1ODExYWZjZWJhMTM4Y2QyNGE2ZTNiZS4uYjg5YzkzZWQ2YjAzNTI3
Mzk2ZTViNDYxODI1ODQ4N2M0ZDllYmYwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA5
LTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZD
XSBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgc2hvdWxkIG5vdCBzdG9yZSBkaXNwbGF5IGxpbmVzIGFu
ZCBydW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTY3NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDktMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFNlbGVjdGlvbiBBUEk6IFVwZGF0ZSBzb21lIG1vcmUgdGVzdHMg
c28gdGhleSBkb24ndCBhY2NpZGVudGFsbHkgcmVseSBvbiBmbGF3cyBpbiBXZWJLaXQncyBvbGQg
aW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDBlZmEwNmUwNTcwNGM4ZTAyNDcy
MjYwYTY1ODc3MzVhZmYxZjU1ODkuLjJmNzYwZDg4NDYzMzNmMWY0OTJkZmVmYjk2ZmEyNTU2NTdi
YWIwMDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDUzNSwzICs0NTM1LDUgQEAgaHR0cC90ZXN0
cy9tZWRpYS9obHMvaGxzLWhkci1zd2l0Y2guaHRtbCBbIFNraXAgXQogCiAjIFRoZXNlIHRlc3Rz
IHJlbHkgb24gd2Via2l0LXRlc3QtcnVubmVyIGZsYWdzIHRoYXQgYXJlbid0IGltcGxlbWVudGVk
IGZvciBEdW1wUmVuZGVyVHJlZSwgc28gdGhleSB3aWxsIGZhaWwgdW5kZXIgbGVnYWN5IFdlYktp
dC4KIGVkaXRpbmcvc2VsZWN0aW9uL2V4cGFuZG8uaHRtbCBbIEZhaWx1cmUgXQorCitmYXN0L2xh
eW91dGZvcm1hdHRpbmdjb250ZXh0LyBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409233</attachid>
            <date>2020-09-20 06:41:00 -0700</date>
            <delta_ts>2020-09-20 08:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216742-20200920064059.patch</filename>
            <type>text/plain</type>
            <size>57073</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ4NDE5MTE0YWY5YzZk
YWNhYjgxMTFlY2E2MzAxMTRlMDkzYjBmNS4uMmViMTNhNWNiYWJlZDIwZTQ4NDJkZGJjYjc0MmU4
YzUxYjI3MjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIwLTA5LTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUgc2hvdWxkIG5vdCBzdG9yZSBkaXNwbGF5IGxpbmVzIGFuZCBydW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBh
dGNoLAorICAgICAgICAxLiBEaXNwbGF5IHJlbGF0ZWQgc3RydWN0dXJlcyBhcmUgY29tcGxldGVs
eSBtb3ZlZCBvdXQgZnJvbSBMYXlvdXQgbmFtZXNwYWNlCisgICAgICAgICAgLSBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCBkb2VzIG5vdCBnZW5lcmF0ZSBkaXNwbGF5IHN0cnVjdHVyZXMuCisgICAg
ICAgICAgLSBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgb25seSBzdG9yZXMgbGF5b3V0IGRhdGEuCisg
ICAgICAgICAgLSBMYXlvdXQgdHJlZSB2ZXJpZmljYXRpb24gd29ya3Mgb24gbGF5b3V0IGdlb21l
dHJ5LgorICAgICAgICAgIC0gTGF5b3V0IHN0cnVjdHVyZXMgZG8gbm90IGVtYmVkIERpc3BsYXkg
dHlwZXMuCisgICAgICAgIDIuIExheW91dEludGVncmF0aW9uIGNyZWF0ZXMgYW5kIG1haW50YWlu
cyB0aGUgcmVxdWlyZWQgRGlzcGxheSBzdHJ1Y3R1cmVzIGZvciBwYWludGluZyBhbmQgaGl0dGVz
dGluZy4KKyAgICAgICAgMy4gRGlzcGxheTo6UnVuIGRvZXMgbm90IHVzZSBMYXlvdXQgdHlwZXMg
KElubGluZUxheW91dFJlY3QsIElubGluZUxheW91dFVuaXQpLgorCisgICAgICAgIEZJWE1FOiBX
ZSBuZWVkIHRvIHN0YXJ0IGNvbnN0cnVjdGluZyBkaXNwbGF5IGNvbnRlbnQgZm9yIHRoZSBEaXNw
bGF5OjpQYWludGVyLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5z
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUlu
Zm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250
ZXh0Ojp2ZXJpZnlBbmRPdXRwdXRNaXNtYXRjaGluZ0xheW91dFRyZWUpOgorICAgICAgICAqIGxh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6SW5saW5lQ29udGVudDo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGxheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGluZTo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6cGFpbnRJbmxpbmVD
b250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpUZXh0Q29udGVudDo6c3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpUZXh0Q29udGVudDo6ZW5kIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6Omxlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50Ojpjb250ZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6Om5l
ZWRzSHlwaGVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6cmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46Omlua092ZXJmbG93IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6UnVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6OlRleHRDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6OnNldE5lZWRzSHlwaGVuKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ6OmV4cGFuZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OlRleHRDb250ZW50Ojpz
aHJpbmspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjp0b3BMZWZ0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6bGVmdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSdW46OnJpZ2h0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6dG9wIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6Ym90dG9tIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJ1bjo6d2lkdGggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjpoZWlnaHQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UnVuOjptb3ZlVmVydGljYWxs
eSk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3JtYXR0aW5n
Q29udGV4dDo6c2l6ZUFuZFBsYWNlRmxleEl0ZW1zKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlR2VvbWV0cnlGb3JMaW5l
Q29udGVudCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdT
dGF0ZTo6bGluZVJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nU3RhdGU6OmxpbmVSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ1N0YXRlOjphZGRMaW5lUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpjbGVhckxpbmVBbmRSdW5zKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpzaHJpbmtUb0ZpdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6ZGlzcGxheUlubGlu
ZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nU3RhdGU6OmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpzaHJpbmtE
aXNwbGF5SW5saW5lQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpS
dW46OnRleHRDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6
UnVuOjpleHBhbnNpb24gY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVHZW9tZXRyeS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVM
aW5lR2VvbWV0cnk6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMaW5lR2VvbWV0cnk6OklubGluZUxpbmVHZW9tZXRyeSk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0
Ojpjb25zdHJ1Y3REaXNwbGF5Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUxheW91dDo6ZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpkaXNwbGF5SW5saW5l
Q29udGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmRpc3BsYXlJbmxpbmVDb250ZW50IGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorICAgICAgICAqIGxheW91dC90YWJs
ZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1
blBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlS
dW5QYXRoOjpyZWN0IGNvbnN0KToKKwogMjAyMC0wOS0xOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50YXRpb24gZm9yIEFYSXNvbGF0
ZWRPYmplY3Q6Om5leHRTaWJsaW5nIGFuZCBwcmV2aW91c1NpYmxpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGE5YTlhMjkz
ZTI1NDE4Y2IyY2RmY2I5ODAwMjA3Y2E4ODg0MzMzYi4uODg4NzcyZTYwNGI3NTA2M2E3ZjljYjU4
YzYwODdhMWE2YjNhNjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4Miw2ICsyMDgyLDcgQEAKIAkJNkZCNUUyMTQyMjFG
MjQ1MzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8q
IENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTZGQjdEMkREMjUwRkQ4MjgwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0
dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGQjdEMkQ5MjUwRkQ3RkMwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ0NvbnRleHQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI3RDJE
RTI1MEZEODJFMDAwMjA3QUEgLyogRmxleEZvcm1hdHRpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCN0QyREEyNTBGRDdGQzAwMDIwN0FB
IC8qIEZsZXhGb3JtYXR0aW5nU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk2RkMzRjk0NzI1MTY3NTY3MDBBNDlCRUEgLyogSW5saW5lTGlu
ZVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZD
M0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAz
NDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkQwOTU0MzI1MTEx
NTIyMDA5ODg3N0QgLyogTGF5b3V0R2VvbWV0cnlSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkQwOTU0MTI1MTExNTIyMDA5ODg3N0QgLyogTGF5
b3V0R2VvbWV0cnlSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNkZEOUNENTQyMjdFMjFDODAwRTUzOTU3IC8qIERpc3BsYXlSZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkQ5Q0Q1MjIyN0Uy
MUM4MDBFNTM5NTcgLyogRGlzcGxheVJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTYyOSw2ICs5NjMwLDcgQEAKIAkJNkZCN0QyRDkyNTBG
RDdGQzAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGbGV4Rm9ybWF0dGluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkZCN0QyREEyNTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5n
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxleEZvcm1hdHRpbmdT
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkJCODYwNTIwQjQ2NEI2MDBE
QUQ5MzggLyogRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZVJ1bi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RkM1M0FFQjI0QUY3QThFMDA2MDU5RkUgLyogVGFibGVGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUZvcm1hdHRpbmdD
b250ZXh0UXVpcmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZDNUNBOTIy
MkUzNTk5MzAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGluZ1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRhYmxlRm9ybWF0dGluZ1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkZDNUNBOTQyMkUzNTk5NDAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzUyNiw2ICsxNzUyOCw3IEBACiAJCQkJNkYyNUIy
MDAyMjBBODVBQjAwMDAwMTFCIC8qIElubGluZUxpbmVCdWlsZGVyLmNwcCAqLywKIAkJCQk2RjI2
RUI0NjIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGluZUJ1aWxkZXIuaCAqLywKIAkJCQk2Rjkx
NDIwRjI1MTUyMTM3MDA0RTRGRUEgLyogSW5saW5lTGluZUdlb21ldHJ5LmggKi8sCisJCQkJNkZD
M0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCAqLywKIAkJCQk2RjQwREE4
MTI1MTMwMzNBMDBFQzA0QjcgLyogSW5saW5lUmVjdC5oICovLAogCQkJCTZGMzYwRTRFMjM5OTk0
MjAwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oICovLAogCQkJCTZGMUNDMURD
MjI1RjhCNDEwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5jcHAgKi8sCkBAIC0zMTczMiw2ICsz
MTczNSw3IEBACiAJCQkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVh
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogSW5s
aW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTE0MjExMjUxNTIxMzgwMDRF
NEZFQSAvKiBJbmxpbmVMaW5lR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQzNGOTQ3
MjUxNjc1NjcwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDU3NzVDRTI0MTQzN0Q1MDAyREYxQTAgLyogSW5saW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCTZGNDBEQTgyMjUxMzAzM0EwMEVDMDRCNyAvKiBJbmxpbmVSZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RjM2MEU1MDIzOTk5NDIxMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVh
a0l0ZW0uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cAppbmRleCBmMTZlMzcxYzA2ZWRjZDA4MTQ4ZDVkNGJkZWRiZWI2OWU2YTJkMmUzLi5iNjI5Mjkw
ODNmYWNjODFkMDNmMzkyMTViYTZhYzFkMDBkMzMzZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
VmVyaWZpY2F0aW9uLmNwcApAQCAtNzksMTYgKzc5LDEwIEBAIHN0YXRpYyBib29sIG91dHB1dE1p
c21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFt
LCBjCiAgICAgfQogCiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3Rh
dGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwotICAg
IGF1dG8qIGRpc3BsYXlJbmxpbmVDb250ZW50ID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmRpc3BsYXlJbmxpbmVDb250ZW50KCk7Ci0gICAg
aWYgKCFkaXNwbGF5SW5saW5lQ29udGVudCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGF1dG8mIGxpbmVSdW5zID0gZG93
bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmxpbmVS
dW5zKCk7CiAKLSAgICBhdXRvJiBkaXNwbGF5UnVucyA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5y
dW5zOwotCi0gICAgaWYgKGRpc3BsYXlSdW5zLnNpemUoKSAhPSBsaW5lTGF5b3V0RGF0YS0+cnVu
Q291bnQoKSkgewotICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nIG51bWJlciBvZiBydW5z
OiBzaW1wbGUgcnVucygiIDw8IGxpbmVMYXlvdXREYXRhLT5ydW5Db3VudCgpIDw8ICIpIGlubGlu
ZSBydW5zKCIgPDwgZGlzcGxheVJ1bnMuc2l6ZSgpIDw8ICIpIjsKKyAgICBpZiAobGluZVJ1bnMu
c2l6ZSgpICE9IGxpbmVMYXlvdXREYXRhLT5ydW5Db3VudCgpKSB7CisgICAgICAgIHN0cmVhbSA8
PCAiTWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1bnM6IHNpbXBsZSBydW5zKCIgPDwgbGluZUxheW91
dERhdGEtPnJ1bkNvdW50KCkgPDwgIikgaW5saW5lIHJ1bnMoIiA8PCBsaW5lUnVucy5zaXplKCkg
PDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtOTYsNDUgKzkwLDQ0IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5n
U2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjCiAgICAg
YXV0byBtaXNtYXRjaGVkID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxp
bmVMYXlvdXREYXRhLT5ydW5Db3VudCgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc2ltcGxlUnVu
ID0gbGluZUxheW91dERhdGEtPnJ1bkF0KGkpOwotICAgICAgICBhdXRvJiBkaXNwbGF5UnVuID0g
ZGlzcGxheVJ1bnNbaV07Ci0KLSAgICAgICAgYXV0byBtYXRjaGluZ1J1bnMgPSBhcmVFc3NlbnRp
YWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCwgZGlzcGxheVJ1bi5sZWZ0KCkpICYmIGFy
ZUVzc2VudGlhbGx5RXF1YWwoc2ltcGxlUnVuLmxvZ2ljYWxSaWdodCwgZGlzcGxheVJ1bi5yaWdo
dCgpKTsKLSAgICAgICAgaWYgKG1hdGNoaW5nUnVucyAmJiBkaXNwbGF5UnVuLnRleHRDb250ZW50
KCkpIHsKLSAgICAgICAgICAgIG1hdGNoaW5nUnVucyA9IHNpbXBsZVJ1bi5zdGFydCA9PSBkaXNw
bGF5UnVuLnRleHRDb250ZW50KCktPnN0YXJ0KCkgJiYgc2ltcGxlUnVuLmVuZCA9PSBkaXNwbGF5
UnVuLnRleHRDb250ZW50KCktPmVuZCgpOworICAgICAgICBhdXRvJiBsaW5lUnVuID0gbGluZVJ1
bnNbaV07CisgICAgICAgIGF1dG8gbWF0Y2hpbmdSdW5zID0gYXJlRXNzZW50aWFsbHlFcXVhbChz
aW1wbGVSdW4ubG9naWNhbExlZnQsIGxpbmVSdW4ubG9naWNhbExlZnQoKSkgJiYgYXJlRXNzZW50
aWFsbHlFcXVhbChzaW1wbGVSdW4ubG9naWNhbFJpZ2h0LCBsaW5lUnVuLmxvZ2ljYWxSaWdodCgp
KTsKKyAgICAgICAgaWYgKG1hdGNoaW5nUnVucyAmJiBsaW5lUnVuLnRleHQoKSkgeworICAgICAg
ICAgICAgbWF0Y2hpbmdSdW5zID0gc2ltcGxlUnVuLnN0YXJ0ID09IGxpbmVSdW4udGV4dCgpLT5z
dGFydCgpICYmIHNpbXBsZVJ1bi5lbmQgPT0gbGluZVJ1bi50ZXh0KCktPmVuZCgpOwogICAgICAg
ICAgICAgLy8gU0xMIGhhbmRsZXMgc3RyaW5ncyBpbiBhIG1vcmUgY29uY2F0ZW5hdGVkIGZvcm1h
dCA8ZGl2PmZvbzxicj5iYXI8L2Rpdj4gLT4gZm9vIC0+IDAsMyBiYXIgLT4gMyw2IHZzLiAwLDMg
YW5kIDAsMwogICAgICAgICAgICAgaWYgKCFtYXRjaGluZ1J1bnMpCi0gICAgICAgICAgICAgICAg
bWF0Y2hpbmdSdW5zID0gKHNpbXBsZVJ1bi5lbmQgLSBzaW1wbGVSdW4uc3RhcnQpID09IChkaXNw
bGF5UnVuLnRleHRDb250ZW50KCktPmVuZCgpIC0gZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5z
dGFydCgpKTsKKyAgICAgICAgICAgICAgICBtYXRjaGluZ1J1bnMgPSAoc2ltcGxlUnVuLmVuZCAt
IHNpbXBsZVJ1bi5zdGFydCkgPT0gKGxpbmVSdW4udGV4dCgpLT5lbmQoKSAtIGxpbmVSdW4udGV4
dCgpLT5zdGFydCgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobWF0Y2hpbmdSdW5zKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZzogc2lt
cGxlIHJ1bigiIDw8IHNpbXBsZVJ1bi5zdGFydCA8PCAiLCAiIDw8IHNpbXBsZVJ1bi5lbmQgPDwg
IikgKCIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxMZWZ0IDw8ICIsICIgPDwgc2ltcGxlUnVuLmxvZ2lj
YWxSaWdodCA8PCAiKSI7CiAgICAgICAgIHN0cmVhbSA8PCAiIGlubGluZSBydW4iOwotICAgICAg
ICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpKQotICAgICAgICAgICAgc3RyZWFtIDw8ICIg
KCIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5zdGFydCgpIDw8ICIsICIgPDwgZGlzcGxh
eVJ1bi50ZXh0Q29udGVudCgpLT5lbmQoKSA8PCAiKSI7Ci0gICAgICAgIHN0cmVhbSA8PCAiICgi
IDw8IGRpc3BsYXlSdW4ubGVmdCgpIDw8ICIsICIgPDwgZGlzcGxheVJ1bi50b3AoKSA8PCAiKSAo
IiA8PCBkaXNwbGF5UnVuLndpZHRoKCkgPDwgIngiIDw8IGRpc3BsYXlSdW4uaGVpZ2h0KCkgPDwg
IikiOworICAgICAgICBpZiAobGluZVJ1bi50ZXh0KCkpCisgICAgICAgICAgICBzdHJlYW0gPDwg
IiAoIiA8PCBsaW5lUnVuLnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGxpbmVSdW4udGV4dCgp
LT5lbmQoKSA8PCAiKSI7CisgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGxpbmVSdW4ubG9naWNh
bExlZnQoKSA8PCAiLCAiIDw8IGxpbmVSdW4ubG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGxpbmVS
dW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGxpbmVSdW4ubG9naWNhbEhlaWdodCgpIDw8ICIp
IjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gbWlzbWF0Y2hlZDsKIH0KIAotc3RhdGljIGJvb2wgY2hlY2tG
b3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IERpc3BsYXk6OlJ1biYgaW5saW5lUnVuLCBjb25z
dCBXZWJDb3JlOjpJbmxpbmVCb3gmIGlubGluZUJveCkKK3N0YXRpYyBib29sIGNoZWNrRm9yTWF0
Y2hpbmdOb25UZXh0UnVucyhjb25zdCBMaW5lUnVuJiBsaW5lUnVuLCBjb25zdCBXZWJDb3JlOjpJ
bmxpbmVCb3gmIGlubGluZUJveCkKIHsKLSAgICByZXR1cm4gYXJlRXNzZW50aWFsbHlFcXVhbChp
bmxpbmVCb3gubGVmdCgpLCBpbmxpbmVSdW4ubGVmdCgpKQotICAgICAgICAmJiBhcmVFc3NlbnRp
YWxseUVxdWFsKGlubGluZUJveC5yaWdodCgpLCBpbmxpbmVSdW4ucmlnaHQoKSkKLSAgICAgICAg
JiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gudG9wKCksIGlubGluZVJ1bi50b3AoKSkK
LSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3guYm90dG9tKCksIGlubGlu
ZVJ1bi5ib3R0b20oKSk7CisgICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94
LmxlZnQoKSwgbGluZVJ1bi5sb2dpY2FsTGVmdCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxs
eUVxdWFsKGlubGluZUJveC5yaWdodCgpLCBsaW5lUnVuLmxvZ2ljYWxSaWdodCgpKQorICAgICAg
ICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJveC50b3AoKSwgbGluZVJ1bi5sb2dpY2Fs
VG9wKCkpCisgICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LmJvdHRvbSgp
LCBsaW5lUnVuLmxvZ2ljYWxCb3R0b20oKSk7CiB9CiAKIAotc3RhdGljIGJvb2wgY2hlY2tGb3JN
YXRjaGluZ1RleHRSdW5zKGNvbnN0IERpc3BsYXk6OlJ1biYgaW5saW5lUnVuLCBjb25zdCBXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQorc3RhdGljIGJvb2wgY2hlY2tGb3JN
YXRjaGluZ1RleHRSdW5zKGNvbnN0IExpbmVSdW4mIGxpbmVSdW4sIGNvbnN0IFdlYkNvcmU6Oklu
bGluZVRleHRCb3gmIGlubGluZVRleHRCb3gpCiB7Ci0gICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5
RXF1YWwoaW5saW5lVGV4dEJveC5sZWZ0KCksIGlubGluZVJ1bi5sZWZ0KCkpCi0gICAgICAgICYm
IGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5yaWdodCgpLCBpbmxpbmVSdW4ucmln
aHQoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LnRvcCgp
LCBpbmxpbmVSdW4udG9wKCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5l
VGV4dEJveC5ib3R0b20oKSwgaW5saW5lUnVuLmJvdHRvbSgpKQotICAgICAgICAmJiAoaW5saW5l
VGV4dEJveC5pc0xpbmVCcmVhaygpIHx8IChpbmxpbmVUZXh0Qm94LnN0YXJ0KCkgPT0gaW5saW5l
UnVuLnRleHRDb250ZW50KCktPnN0YXJ0KCkgJiYgaW5saW5lVGV4dEJveC5lbmQoKSA9PSBpbmxp
bmVSdW4udGV4dENvbnRlbnQoKS0+ZW5kKCkpKTsKKyAgICByZXR1cm4gYXJlRXNzZW50aWFsbHlF
cXVhbChpbmxpbmVUZXh0Qm94LmxlZnQoKSwgbGluZVJ1bi5sb2dpY2FsTGVmdCgpKQorICAgICAg
ICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gucmlnaHQoKSwgbGluZVJ1bi5s
b2dpY2FsUmlnaHQoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVUZXh0
Qm94LnRvcCgpLCBsaW5lUnVuLmxvZ2ljYWxUb3AoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFs
bHlFcXVhbChpbmxpbmVUZXh0Qm94LmJvdHRvbSgpLCBsaW5lUnVuLmxvZ2ljYWxCb3R0b20oKSkK
KyAgICAgICAgJiYgKGlubGluZVRleHRCb3guaXNMaW5lQnJlYWsoKSB8fCAoaW5saW5lVGV4dEJv
eC5zdGFydCgpID09IGxpbmVSdW4udGV4dCgpLT5zdGFydCgpICYmIGlubGluZVRleHRCb3guZW5k
KCkgPT0gbGluZVJ1bi50ZXh0KCktPmVuZCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbGxlY3RG
bG93Qm94U3VidHJlZShjb25zdCBJbmxpbmVGbG93Qm94JiBmbG93Ym94LCBWZWN0b3I8V2ViQ29y
ZTo6SW5saW5lQm94Kj4mIGlubGluZUJveGVzKQpAQCAtMTY1LDE0ICsxNTgsNyBAQCBzdGF0aWMg
dm9pZCBjb2xsZWN0SW5saW5lQm94ZXMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiByb290LCBWZWN0
b3I8V2ViQ29yZTo6SW5saQogc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGlu
ZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93LCBjb25zdCBD
b250YWluZXJCb3gmIGlubGluZUZvcm1hdHRpbmdSb290KQogewogICAgIGF1dG8mIGlubGluZUZv
cm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGlu
bGluZUZvcm1hdHRpbmdSb290KTsKLQotICAgIGF1dG8qIGRpc3BsYXlJbmxpbmVDb250ZW50ID0g
ZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmRp
c3BsYXlJbmxpbmVDb250ZW50KCk7Ci0gICAgaWYgKCFkaXNwbGF5SW5saW5lQ29udGVudCkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gZGlzcGxheUlubGluZUNvbnRlbnQtPnJ1bnM7Ci0K
KyAgICBhdXRvJiBsaW5lUnVucyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5s
aW5lRm9ybWF0dGluZ1N0YXRlKS5saW5lUnVucygpOwogICAgIC8vIENvbGxlY3QgaW5saW5lYm94
ZXMuCiAgICAgVmVjdG9yPFdlYkNvcmU6OklubGluZUJveCo+IGlubGluZUJveGVzOwogICAgIGNv
bGxlY3RJbmxpbmVCb3hlcyhibG9ja0Zsb3csIGlubGluZUJveGVzKTsKQEAgLTE4MCwxNiArMTY2
LDE2IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlv
bklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwKICAgICBhdXRvIG1pc21hdGNoZWQgPSBmYWxz
ZTsKICAgICB1bnNpZ25lZCBydW5JbmRleCA9IDA7CiAKLSAgICBpZiAoaW5saW5lQm94ZXMuc2l6
ZSgpICE9IGRpc3BsYXlSdW5zLnNpemUoKSkgewotICAgICAgICBzdHJlYW0gPDwgIldhcm5pbmc6
IG1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBpbmxpbmVib3hlcygiIDw8IGlubGluZUJveGVz
LnNpemUoKSA8PCAiKSB2cy4gaW5saW5lIHJ1bnMoIiA8PCBkaXNwbGF5UnVucy5zaXplKCkgPDwg
IikiOworICAgIGlmIChpbmxpbmVCb3hlcy5zaXplKCkgIT0gbGluZVJ1bnMuc2l6ZSgpKSB7Cisg
ICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1bnM6IGlu
bGluZWJveGVzKCIgPDwgaW5saW5lQm94ZXMuc2l6ZSgpIDw8ICIpIHZzLiBpbmxpbmUgcnVucygi
IDw8IGxpbmVSdW5zLnNpemUoKSA8PCAiKSI7CiAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwog
ICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgaW5saW5lQm94SW5kZXggPSAwOyBpbmxpbmVCb3hJ
bmRleCA8IGlubGluZUJveGVzLnNpemUoKSAmJiBydW5JbmRleCA8IGRpc3BsYXlSdW5zLnNpemUo
KTsgKytpbmxpbmVCb3hJbmRleCkgewotICAgICAgICBhdXRvJiBkaXNwbGF5UnVuID0gZGlzcGxh
eVJ1bnNbcnVuSW5kZXhdOworICAgIGZvciAodW5zaWduZWQgaW5saW5lQm94SW5kZXggPSAwOyBp
bmxpbmVCb3hJbmRleCA8IGlubGluZUJveGVzLnNpemUoKSAmJiBydW5JbmRleCA8IGxpbmVSdW5z
LnNpemUoKTsgKytpbmxpbmVCb3hJbmRleCkgeworICAgICAgICBhdXRvJiBsaW5lUnVuID0gbGlu
ZVJ1bnNbcnVuSW5kZXhdOwogICAgICAgICBhdXRvKiBpbmxpbmVCb3ggPSBpbmxpbmVCb3hlc1tp
bmxpbmVCb3hJbmRleF07CiAgICAgICAgIGF1dG8qIGlubGluZVRleHRCb3ggPSBpczxXZWJDb3Jl
OjpJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpID8gZG93bmNhc3Q8V2ViQ29yZTo6SW5saW5lVGV4
dEJveD4oaW5saW5lQm94KSA6IG51bGxwdHI7Ci0gICAgICAgIGJvb2wgbWF0Y2hpbmdSdW5zID0g
aW5saW5lVGV4dEJveCA/IGNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhkaXNwbGF5UnVuLCAqaW5s
aW5lVGV4dEJveCkgOiBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoZGlzcGxheVJ1biwgKmlu
bGluZUJveCk7CisgICAgICAgIGJvb2wgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveCA/IGNo
ZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhsaW5lUnVuLCAqaW5saW5lVGV4dEJveCkgOiBjaGVja0Zv
ck1hdGNoaW5nTm9uVGV4dFJ1bnMobGluZVJ1biwgKmlubGluZUJveCk7CiAKICAgICAgICAgaWYg
KCFtYXRjaGluZ1J1bnMpIHsKICAgICAgICAgICAgIApAQCAtMjA3LDkgKzE5Myw5IEBAIHN0YXRp
YyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRl
eHRTdHJlYW0mIHN0cmVhbSwKICAgICAgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGlubGluZUJv
eC0+bG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGlubGluZUJveC0+bG9naWNhbFRvcCgpIDw8ICIp
ICgiIDw8IGlubGluZUJveC0+bG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGlubGluZUJveC0+bG9n
aWNhbEhlaWdodCgpIDw8ICIpIjsKIAogICAgICAgICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIHJ1
biI7Ci0gICAgICAgICAgICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpKQotICAgICAgICAg
ICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGRpc3BsYXlSdW4udGV4dENvbnRlbnQoKS0+c3RhcnQo
KSA8PCAiLCAiIDw8IGRpc3BsYXlSdW4udGV4dENvbnRlbnQoKS0+ZW5kKCkgPDwgIikiOwotICAg
ICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1bi5sZWZ0KCkgPDwgIiwgIiA8PCBk
aXNwbGF5UnVuLnRvcCgpIDw8ICIpICgiIDw8IGRpc3BsYXlSdW4ud2lkdGgoKSA8PCAieCIgPDwg
ZGlzcGxheVJ1bi5oZWlnaHQoKSA8PCAiKSI7CisgICAgICAgICAgICBpZiAobGluZVJ1bi50ZXh0
KCkpCisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgbGluZVJ1bi50ZXh0KCktPnN0
YXJ0KCkgPDwgIiwgIiA8PCBsaW5lUnVuLnRleHQoKS0+ZW5kKCkgPDwgIikiOworICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgKCIgPDwgbGluZVJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgbGlu
ZVJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwgbGluZVJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAi
eCIgPDwgbGluZVJ1bi5sb2dpY2FsSGVpZ2h0KCkgPDwgIikiOwogICAgICAgICAgICAgc3RyZWFt
Lm5leHRMaW5lKCk7CiAgICAgICAgICAgICBtaXNtYXRjaGVkID0gdHJ1ZTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxp
bmVDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlu
bGluZUNvbnRlbnQuaAppbmRleCA0MzdhMjM4OWVlNTUwZWExZTljYjdiMTIxNmJkYzE2ZDc1ODYz
ODk4Li5hOWI0NTBiOTM5M2VkMjM3MWM4YjVmMzA4ODM0NDBhZTAxMWMxNWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNv
bnRlbnQuaApAQCAtNDYsOCArNDYsMTUgQEAgc3RydWN0IElubGluZUNvbnRlbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbmxpbmVDb250ZW50PiB7CiAKICAgICBjb25zdCBMaW5lJiBsaW5lRm9yUnVu
KGNvbnN0IFJ1biYgcnVuKSBjb25zdCB7IHJldHVybiBsaW5lc1tydW4ubGluZUluZGV4KCldOyB9
CiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IFJ1bio+IHJ1bnNGb3JSZWN0KGNvbnN0IExh
eW91dFJlY3QmKSBjb25zdDsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiB9OwogCitpbmxpbmUg
dm9pZCBJbmxpbmVDb250ZW50OjpzaHJpbmtUb0ZpdCgpCit7CisgICAgcnVucy5zaHJpbmtUb0Zp
dCgpOworICAgIGxpbmVzLnNocmlua1RvRml0KCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUxpbmUuaAppbmRleCAxMDBkMDRmOTYw
YmIyY2Y0MGE4NjU5NzQ2ODc0MzE4ZWYwOTYzOTZiLi5kYzU1NmYzMWNjOTNkOTcxMWE5OTlhODAx
ODI5YjVkNzE2ODBjOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUxpbmUuaApAQCAtMzUsMjUgKzM1LDI5IEBAIG5hbWVzcGFjZSBEaXNwbGF5IHsK
IGNsYXNzIExpbmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IExpbmUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3ZlcmZs
b3csIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3csIGZsb2F0IGJhc2VsaW5lKTsKKyAgICBM
aW5lKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93
LCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBmbG9hdCBiYXNlbGluZSwgZmxvYXQgaG9y
aXpvbnRhbEFsaWdubWVudE9mZnNldCk7CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVP
dmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9CiAgICAgY29u
c3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7
IH0KICAgICBmbG9hdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZWxpbmU7IH0KKyAg
ICBmbG9hdCBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ob3Jp
em9udGFsQWxpZ25tZW50T2Zmc2V0OyB9CisKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9y
ZWN0OwogICAgIEZsb2F0UmVjdCBtX3Njcm9sbGFibGVPdmVyZmxvdzsKICAgICBGbG9hdFJlY3Qg
bV9pbmtPdmVyZmxvdzsKICAgICBmbG9hdCBtX2Jhc2VsaW5lIHsgMCB9OworICAgIGZsb2F0IG1f
aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldDsKIH07CiAKLWlubGluZSBMaW5lOjpMaW5lKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3csIGNv
bnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3csIGZsb2F0IGJhc2VsaW5lKQoraW5saW5lIExpbmU6
OkxpbmUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVP
dmVyZmxvdywgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgZmxvYXQgYmFzZWxpbmUsIGZs
b2F0IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQpCiAgICAgOiBtX3JlY3QocmVjdCkKICAgICAs
IG1fc2Nyb2xsYWJsZU92ZXJmbG93KHNjcm9sbGFibGVPdmVyZmxvdykKICAgICAsIG1faW5rT3Zl
cmZsb3coaW5rT3ZlcmZsb3cpCiAgICAgLCBtX2Jhc2VsaW5lKGJhc2VsaW5lKQorICAgICwgbV9o
b3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBh
aW50ZXIuY3BwCmluZGV4IGM4M2FlYzYxNzYwYjgwZmE2MjM0NGQwN2FmZTUzYTY0MDI1MDZkNTUu
LmIxNDE0OTBlOGI3ODRjZDQ2YzIwY2VjYTk5NDdmNTRkMTE4ZGUzZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAt
MTEzLDMxICsxMTMsMjEgQEAgc3RhdGljIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXQKIAogc3RhdGljIHZvaWQg
cGFpbnRJbmxpbmVDb250ZW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTGF5b3V0UG9pbnQg
YWJzb2x1dGVPZmZzZXQsIGNvbnN0IExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3Jt
YXR0aW5nU3RhdGUpCiB7Ci0gICAgYXV0byogZGlzcGxheUlubGluZUNvbnRlbnQgPSBmb3JtYXR0
aW5nU3RhdGUuZGlzcGxheUlubGluZUNvbnRlbnQoKTsKLSAgICBpZiAoIWRpc3BsYXlJbmxpbmVD
b250ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkaXNwbGF5UnVucyA9IGRpc3Bs
YXlJbmxpbmVDb250ZW50LT5ydW5zOwotICAgIGlmIChkaXNwbGF5UnVucy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgcnVuIDogZGlzcGxheVJ1bnMpIHsKLSAg
ICAgICAgaWYgKGF1dG8mIHRleHRDb250ZW50ID0gcnVuLnRleHRDb250ZW50KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8mIHN0eWxlID0gcnVuLnN0eWxlKCk7CisgICAgZm9yIChhdXRvJiBydW4gOiBm
b3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKSkgeworICAgICAgICBhdXRvJiBydW5SZWN0ID0gcnVu
LmxvZ2ljYWxSZWN0KCk7CisgICAgICAgIGlmIChhdXRvJiB0ZXh0Q29udGVudCA9IHJ1bi50ZXh0
KCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gcnVuLmxheW91dEJveCgpLnN0eWxlKCk7
CiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHN0eWxlLmNvbG9yKCkpOwogICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUuY29sb3IoKSk7CiAKLSAgICAgICAg
ICAgIGF1dG8gYWJzb2x1dGVMZWZ0ID0gYWJzb2x1dGVPZmZzZXQueCgpICsgcnVuLmxlZnQoKTsK
KyAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVMZWZ0ID0gYWJzb2x1dGVPZmZzZXQueCgpICsgcnVu
UmVjdC5sZWZ0KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGln
biBwYWludGluZwotICAgICAgICAgICAgYXV0byBiYXNlbGluZSA9IGFic29sdXRlT2Zmc2V0Lnko
KSArIHJ1bi50b3AoKSArIHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CisgICAgICAgICAg
ICBhdXRvIGJhc2VsaW5lID0gYWJzb2x1dGVPZmZzZXQueSgpICsgcnVuUmVjdC50b3AoKSArIHN0
eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CiAgICAgICAgICAgICBhdXRvIGV4cGFuc2lvbiA9
IHJ1bi5leHBhbnNpb24oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgZmluYWwgcGFpbnRl
ciBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgbGluZSB0byBvZmZzZXQgdGhlIHJ1
bnMuCi0gICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuIHsgdGV4dENvbnRlbnQtPmNv
bnRlbnQoKSwgcnVuLmxlZnQoKSwgZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFu
c2lvbi5iZWhhdmlvciB9OworICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4dFJ1biB7IHRl
eHRDb250ZW50LT5jb250ZW50KCksIHJ1blJlY3QubGVmdCgpLCBleHBhbnNpb24uaG9yaXpvbnRh
bEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CiAgICAgICAgICAgICB0ZXh0UnVuLnNl
dFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwog
ICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdHlsZS5mb250Q2FzY2FkZSgpLCB0ZXh0UnVu
LCB7IGFic29sdXRlTGVmdCwgYmFzZWxpbmUgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoYXV0byog
Y2FjaGVkSW1hZ2UgPSBydW4uaW1hZ2UoKSkgewotICAgICAgICAgICAgYXV0byBydW5BYnNvbHV0
ZVJlY3QgPSBGbG9hdFJlY3QgeyBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgpLCBhYnNv
bHV0ZU9mZnNldC55KCkgKyBydW4udG9wKCksIHJ1bi53aWR0aCgpLCBydW4uaGVpZ2h0KCkgfTsK
LSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCpjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgcnVu
QWJzb2x1dGVSZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCmluZGV4IGI3MTYxODEyZjg2OTg0MzM5OGMx
ZDJlNjhhMGViMTM0NDZmMWY3MTcuLjJjNjQ4YTkyZDRlOWYyMDVjMWRiODc0ZjI4YzdiZWI4NWYx
MDhjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlS
dW4uaApAQCAtNDMsNDIgKzQzLDI2IEBAIHN0cnVjdCBSdW4gewogICAgIHN0cnVjdCBUZXh0Q29u
dGVudCB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFRleHRDb250ZW50KHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFN0cmluZyYsIGJvb2wgbmVlZHNIeXBoZW4pOworICAgICAgICBUZXh0Q29udGVu
dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYsIGJvb2wgbmVl
ZHNIeXBoZW4pOwogCi0gICAgICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydDsgfQotICAgICAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBzdGFydCgpICsg
bGVuZ3RoKCk7IH0KLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGg7IH0KKyAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsg
fQorICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgp
OyB9CisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQog
ICAgICAgICBTdHJpbmdWaWV3IGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBTdHJpbmdWaWV3KG1f
Y29udGVudFN0cmluZykuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuZ3RoKTsgfQotCiAgICAgICAg
IGJvb2wgbmVlZHNIeXBoZW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzSHlwaGVuOyB9Ci0gICAg
ICAgIHZvaWQgc2V0TmVlZHNIeXBoZW4oKSB7IG1fbmVlZHNIeXBoZW4gPSB0cnVlOyB9Ci0KLSAg
ICAgICAgdm9pZCBleHBhbmQodW5zaWduZWQgZGVsdGEpIHsgbV9sZW5ndGggKz0gZGVsdGE7IH0K
LSAgICAgICAgdm9pZCBzaHJpbmsodW5zaWduZWQgZGVsdGEpIHsgbV9sZW5ndGggLT0gZGVsdGE7
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2lnbmVkIG1fc3RhcnQgeyAwIH07Ci0gICAg
ICAgIHVuc2lnbmVkIG1fbGVuZ3RoIHsgMCB9OworICAgICAgICBzaXplX3QgbV9zdGFydCB7IDAg
fTsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoIHsgMCB9OwogICAgICAgICBib29sIG1fbmVlZHNI
eXBoZW4geyBmYWxzZSB9OwogICAgICAgICBTdHJpbmcgbV9jb250ZW50U3RyaW5nOwogICAgIH07
CiAKICAgICBzdHJ1Y3QgRXhwYW5zaW9uOwotICAgIFJ1bihzaXplX3QgbGluZUluZGV4LCBjb25z
dCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYsIGNvbnN0IExheW91dDo6
SW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+
ID0gV1RGOjpudWxsb3B0KTsKLQotICAgIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYgcmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotICAgIGNvbnN0IExheW91dDo6SW5saW5lUmVjdCYg
aW5rT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9Ci0KLSAgICBJbmxp
bmVMYXlvdXRQb2ludCB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRvcExlZnQoKTsg
fQotICAgIElubGluZUxheW91dFVuaXQgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0
KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LnJpZ2h0KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdC50b3AoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgYm90dG9tKCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisgICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExh
eW91dDo6Qm94JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxv
dywgRXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0Q29udGVudD4gPSBXVEY6Om51bGxvcHQpOwogCi0g
ICAgSW5saW5lTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgp
OyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qu
aGVpZ2h0KCk7IH0KLQotICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCk7
CisgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9Cisg
ICAgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3Zl
cmZsb3c7IH0KIAogICAgIE9wdGlvbmFsPFRleHRDb250ZW50PiYgdGV4dENvbnRlbnQoKSB7IHJl
dHVybiBtX3RleHRDb250ZW50OyB9CiAgICAgY29uc3QgT3B0aW9uYWw8VGV4dENvbnRlbnQ+JiB0
ZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KQEAgLTEwMywxMyAr
ODcsMTMgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzaXplX3QgbV9saW5lSW5kZXg7CiAgICAgV2Vh
a1B0cjxjb25zdCBMYXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7CiAgICAgQ2FjaGVkSW1hZ2UqIG1f
Y2FjaGVkSW1hZ2UgeyBudWxscHRyIH07Ci0gICAgTGF5b3V0OjpJbmxpbmVSZWN0IG1fcmVjdDsK
LSAgICBMYXlvdXQ6OklubGluZVJlY3QgbV9pbmtPdmVyZmxvdzsKKyAgICBGbG9hdFJlY3QgbV9y
ZWN0OworICAgIEZsb2F0UmVjdCBtX2lua092ZXJmbG93OwogICAgIEV4cGFuc2lvbiBtX2V4cGFu
c2lvbjsKICAgICBPcHRpb25hbDxUZXh0Q29udGVudD4gbV90ZXh0Q29udGVudDsKIH07CiAKLWlu
bGluZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0
Qm94LCBjb25zdCBMYXlvdXQ6OklubGluZVJlY3QmIHJlY3QsIGNvbnN0IExheW91dDo6SW5saW5l
UmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiBleHBhbnNpb24sIE9wdGlvbmFsPFRleHRDb250
ZW50PiB0ZXh0Q29udGVudCkKK2lubGluZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBjb25z
dCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiBleHBhbnNpb24sIE9wdGlvbmFsPFRleHRD
b250ZW50PiB0ZXh0Q29udGVudCkKICAgICA6IG1fbGluZUluZGV4KGxpbmVJbmRleCkKICAgICAs
IG1fbGF5b3V0Qm94KG1ha2VXZWFrUHRyKGxheW91dEJveCkpCiAgICAgLCBtX3JlY3QocmVjdCkK
QEAgLTExOSw3ICsxMDMsNyBAQCBpbmxpbmUgUnVuOjpSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29u
c3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0OjpJbgogewogfQogCi1pbmxp
bmUgUnVuOjpUZXh0Q29udGVudDo6VGV4dENvbnRlbnQodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50U3RyaW5nLCBib29sIG5lZWRzSHlwaGVuKQor
aW5saW5lIFJ1bjo6VGV4dENvbnRlbnQ6OlRleHRDb250ZW50KHNpemVfdCBzdGFydCwgc2l6ZV90
IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50U3RyaW5nLCBib29sIG5lZWRzSHlwaGVuKQog
ICAgIDogbV9zdGFydChzdGFydCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbmVl
ZHNIeXBoZW4obmVlZHNIeXBoZW4pCkBAIC0xMjcsMTIgKzExMSw2IEBAIGlubGluZSBSdW46OlRl
eHRDb250ZW50OjpUZXh0Q29udGVudCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBTdHJpCiB7CiB9CiAKLWlubGluZSB2b2lkIFJ1bjo6bW92ZVZlcnRpY2FsbHkoSW5saW5l
TGF5b3V0VW5pdCBvZmZzZXQpCi17Ci0gICAgbV9yZWN0Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7
Ci0gICAgbV9pbmtPdmVyZmxvdy5tb3ZlVmVydGljYWxseShvZmZzZXQpOwotfQotCiB9CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbGV4Zm9ybWF0dGluZy9G
bGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ZsZXhmb3Jt
YXR0aW5nL0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMWNlYmIwNmVmZmJiODk1NzZh
NDBiYzljODAyOTliNjQ1ZjgzZjg2MC4uNTMxM2JjOGUzMjAwMzg0ZjYwNTg2YjJkYjczM2I5OTVm
YzVmYjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ZsZXhmb3JtYXR0aW5n
L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
ZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
dm9pZCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJdGVtcyhjb25zdCBD
b25zdHJhaW50c0ZvckluRmxvd0NvbnQKICAgICAgICAgY29tcHV0ZUZsZXhJdGVtR2VvbWV0cnko
KTsKICAgICB9CiAgICAgYXV0byBmbGV4TGluZSA9IElubGluZVJlY3QgeyBmbGV4SXRlbUNyb3NB
eGlzU3RhcnQsIGZsZXhJdGVtTWFpbkF4aXNTdGFydCwgZmxleEl0ZW1NYWluQXhpc0VuZCAtIGZs
ZXhJdGVtTWFpbkF4aXNTdGFydCwgZmxleEl0ZW1Dcm9zQXhpc0VuZCAtIGZsZXhJdGVtQ3Jvc0F4
aXNTdGFydCB9OwotICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKHsgZmxleExpbmUsIGZsZXhM
aW5lLCBmbGV4TGluZSwgeyB9IH0pOworICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKHsgZmxl
eExpbmUsIGZsZXhMaW5lLCBmbGV4TGluZSwgeyB9LCB7IH0gfSk7CiB9CiAKIHZvaWQgRmxleEZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckZsZXhJ
dGVtcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggODg2ZDdlNzFl
NGI2MTUwNjI5YjE4NTIwZjI3ZTdmM2RlMzdhZmVlZC4uY2E5MGZjYWM1YzMxMmYzNTU4ZDgxN2Fh
ZWE2NzBhY2MxNjE5ZWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveC5oIgorI2luY2x1
ZGUgIklubGluZUxpbmVSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5oIgogI2luY2x1
ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCkBAIC00MDIs
OCArNDAzLDggQEAgSW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdl
b21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWwKICAgICBhdXRvIGxpbmVJbmRleCA9
IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKIAogICAgIGF1dG8gY29uc3RydWN0TGlu
ZUdlb21ldHJ5ID0gWyZdIHsKLSAgICAgICAgYXV0byBsaW5lQm94TG9naWNhbFJlY3QgPSBJbmxp
bmVSZWN0IHsgbGluZUxvZ2ljYWxSZWN0LnRvcCgpICsgbGluZUJveFZlcnRpY2FsT2Zmc2V0LCBs
aW5lTG9naWNhbFJlY3QubGVmdCgpICsgbGluZUJveC5ob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0
KCkudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0IHsgfSksIGxpbmVCb3gubG9naWNhbFdpZHRoKCks
IGxpbmVCb3gubG9naWNhbEhlaWdodCgpIH07Ci0gICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRM
aW5lKHsgbGluZUxvZ2ljYWxSZWN0LCBsaW5lQm94TG9naWNhbFJlY3QsIGxpbmVCb3hWZXJ0aWNh
bE9mZnNldCArIGxpbmVCb3guYWxpZ25tZW50QmFzZWxpbmUoKSB9KTsKKyAgICAgICAgYXV0byBs
aW5lQm94TG9naWNhbFJlY3QgPSBJbmxpbmVSZWN0IHsgbGluZUxvZ2ljYWxSZWN0LnRvcCgpICsg
bGluZUJveFZlcnRpY2FsT2Zmc2V0LCBsaW5lTG9naWNhbFJlY3QubGVmdCgpLCBsaW5lQm94Lmxv
Z2ljYWxXaWR0aCgpLCBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSB9OworICAgICAgICBmb3JtYXR0
aW5nU3RhdGUuYWRkTGluZSh7IGxpbmVMb2dpY2FsUmVjdCwgbGluZUJveExvZ2ljYWxSZWN0LCBs
aW5lQm94VmVydGljYWxPZmZzZXQgKyBsaW5lQm94LmFsaWdubWVudEJhc2VsaW5lKCksIGxpbmVC
b3guaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCgpLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCB7
IH0pIH0pOwogICAgIH07CiAgICAgY29uc3RydWN0TGluZUdlb21ldHJ5KCk7CiAKQEAgLTQyMiw0
MyArNDIzLDE1IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVH
ZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBhdXRvIGluaXRpYWxDb250YWluZ0Jsb2NrU2l6ZSA9IExheW91dFNpemUgeyB9OwotICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1h
dHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgLy8gSUNCIGlzIG5v
dCB0aGUgcmVhbCBJQ0Igd2hlbiBseW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkIGlzIG9uLgotICAgICAgICBpbml0aWFsQ29udGFpbmdCbG9ja1NpemUgPSBsYXlvdXRTdGF0
ZSgpLnZpZXdwb3J0U2l6ZSgpOwotICAgIH0gZWxzZQotICAgICAgICBpbml0aWFsQ29udGFpbmdC
bG9ja1NpemUgPSBnZW9tZXRyeUZvckJveChyb290KCkuaW5pdGlhbENvbnRhaW5pbmdCbG9jaygp
LCBFc2NhcGVSZWFzb246OlN0cm9rZU92ZXJmbG93TmVlZHNWaWV3cG9ydEdlb21ldHJ5KS5jb250
ZW50Qm94KCkuc2l6ZSgpOwotICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0aW5nU3Rh
dGUuZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKLSAgICAvLyBDb21wdXRlIGZpbmFsIGJv
eCBnZW9tZXRyeS4KICAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5zKSB7
CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7CiAgICAgICAg
IC8vIElubGluZSBsZXZlbCBjb250YWluZXJzICg8c3Bhbj4pIGRvbid0IGdlbmVyYXRlIGRpc3Bs
YXkgcnVucyBhbmQgbmVpdGhlciBkbyBjb21wbGV0ZWx5IGNvbGxhcHNlZCBydW5zLgogICAgICAg
ICBhdXRvIGluaXRpYXRlc0lubGluZVJ1biA9IGxpbmVSdW4uaXNUZXh0KCkgfHwgbGluZVJ1bi5p
c0xpbmVCcmVhaygpIHx8IGxpbmVSdW4uaXNCb3goKTsKICAgICAgICAgaWYgKGluaXRpYXRlc0lu
bGluZVJ1bikgewotICAgICAgICAgICAgYXV0byBjb21wdXRlZElua092ZXJmbG93ID0gWyZdIChj
b25zdCBhdXRvJiBsb2dpY2FsUmVjdCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3Igbm9uLXRleHQgaW5rIG92ZXJmbG93LgotICAgICAgICAgICAgICAgIGlmICgh
bGluZVJ1bi5pc1RleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxSZWN0
OwotICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gbGluZVJ1bi5zdHlsZSgpOwotICAgICAg
ICAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBsb2dpY2FsUmVjdDsKLSAgICAgICAgICAgICAg
ICBhdXRvIHN0cm9rZU92ZXJmbG93ID0gc3RkOjpjZWlsKHN0eWxlLmNvbXB1dGVkU3Ryb2tlV2lk
dGgoY2VpbGVkSW50U2l6ZShpbml0aWFsQ29udGFpbmdCbG9ja1NpemUpKSk7Ci0gICAgICAgICAg
ICAgICAgaW5rT3ZlcmZsb3cuaW5mbGF0ZShzdHJva2VPdmVyZmxvdyk7Ci0KLSAgICAgICAgICAg
ICAgICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHlsZS5mb250Q2FzY2FkZSgpLmxldHRlclNwYWNp
bmcoKTsKLSAgICAgICAgICAgICAgICBpZiAobGV0dGVyU3BhY2luZyA8IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gTGFzdCBsZXR0ZXIncyBuZWdhdGl2ZSBzcGFjaW5nIHNocmlua3MgbG9n
aWNhbCByZWN0LiBQdXNoIGl0IHRvIGluayBvdmVyZmxvdy4KLSAgICAgICAgICAgICAgICAgICAg
aW5rT3ZlcmZsb3cuZXhwYW5kSG9yaXpvbnRhbGx5KC1sZXR0ZXJTcGFjaW5nKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlua092ZXJmbG93OwotICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBsaW5lUnVuLmlzQm94KCkgPyBs
aW5lQm94LmlubGluZUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmxvZ2ljYWxSZWN0KCkgOiBs
aW5lQm94LmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihsaW5lUnVuKTsKLSAgICAgICAgICAgIC8vIElu
bGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUgYm94IHdoaWxlIGZpbmFsIERpc3Bs
YXk6OlJ1bnMgbmVlZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgcGFyZW50IERpc3BsYXk6Qm94Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHdlIGp1c3QgbGVhdmUgdGhlbSBiZSByZWxh
dGl2ZSB0byB0aGUgbGluZSBib3g/Ci0gICAgICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlQnkoeyBs
aW5lTG9naWNhbFJlY3QubGVmdCgpLCBsaW5lTG9naWNhbFJlY3QudG9wKCkgKyBsaW5lQm94VmVy
dGljYWxPZmZzZXQgfSk7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LnJ1bnMuYXBwZW5kKHsg
bGluZUluZGV4LCBsYXlvdXRCb3gsIGxvZ2ljYWxSZWN0LCBjb21wdXRlZElua092ZXJmbG93KGxv
Z2ljYWxSZWN0KSwgbGluZVJ1bi5leHBhbnNpb24oKSwgbGluZVJ1bi50ZXh0Q29udGVudCgpIH0p
OworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIGxh
eW91dEJveCwgbG9naWNhbFJlY3QsIGxpbmVSdW4uZXhwYW5zaW9uKCksIGxpbmVSdW4udGV4dENv
bnRlbnQoKSB9KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENyZWF0ZSBkaXNwbGF5IGJveGVz
LgogICAgICAgICAvLyBGSVhNRTogU2luY2UgPGJyPiBhbmQgPHdicj4gcnVucyBoYXZlIGFzc29j
aWF0ZWQgRE9NIGVsZW1lbnRzLCB3ZSBtaWdodCBuZWVkIHRvIGNvbnN0cnVjdCBhIGRpc3BsYXkg
Ym94IGhlcmUuIAogICAgICAgICBhdXRvIG5lZWRzQm94R2VvbWV0cnkgPSBsaW5lUnVuLmlzQm94
KCkgfHwgbGluZVJ1bi5pc0NvbnRhaW5lclN0YXJ0KCk7CiAgICAgICAgIGlmIChuZWVkc0JveEdl
b21ldHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDZlYmM0YTE4NzgzMjQ3
YjdmODRmODM2YjY5MTk4MmZjMTIxZGMyMGIuLjEwNGE4NzMwOThkOTE4YTIzY2VlMjgzYjc3NGFl
ZmZiOTIxNmUwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCkBAIC0yNywxMCArMjcs
MTAgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVk
ZSAiRGlzcGxheUlubGluZUNvbnRlbnQuaCIKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIK
ICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUdlb21ldHJ5Lmgi
CisjaW5jbHVkZSAiSW5saW5lTGluZVJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgTGF5b3V0
IHsKIAogdXNpbmcgSW5saW5lSXRlbXMgPSBWZWN0b3I8SW5saW5lSXRlbT47CiB1c2luZyBJbmxp
bmVMaW5lcyA9IFZlY3RvcjxJbmxpbmVMaW5lR2VvbWV0cnk+OwordXNpbmcgSW5saW5lTGluZVJ1
bnMgPSBWZWN0b3I8TGluZVJ1bj47CiAKIC8vIElubGluZUZvcm1hdHRpbmdTdGF0ZSBob2xkcyB0
aGUgc3RhdGUgZm9yIGEgcGFydGljdWxhciBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHRyZWUu
CiBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsK
QEAgLTU0LDQwICs1NSwzMCBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGluZXMmIGxpbmVzKCkgeyBy
ZXR1cm4gbV9saW5lczsgfQogICAgIHZvaWQgYWRkTGluZShjb25zdCBJbmxpbmVMaW5lR2VvbWV0
cnkmIGxpbmUpIHsgbV9saW5lcy5hcHBlbmQobGluZSk7IH0KIAotICAgIGNvbnN0IERpc3BsYXk6
OklubGluZUNvbnRlbnQqIGRpc3BsYXlJbmxpbmVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5SW5saW5lQ29udGVudC5nZXQoKTsgfQotICAgIERpc3BsYXk6OklubGluZUNvbnRlbnQm
IGVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7CisgICAgY29uc3QgSW5saW5lTGluZVJ1bnMm
IGxpbmVSdW5zKCkgY29uc3QgeyByZXR1cm4gbV9saW5lUnVuczsgfQorICAgIElubGluZUxpbmVS
dW5zJiBsaW5lUnVucygpIHsgcmV0dXJuIG1fbGluZVJ1bnM7IH0KKyAgICB2b2lkIGFkZExpbmVS
dW4oY29uc3QgTGluZVJ1biYgcnVuKSB7IG1fbGluZVJ1bnMuYXBwZW5kKHJ1bik7IH0KIAogICAg
IHZvaWQgY2xlYXJMaW5lQW5kUnVucygpOwotICAgIHZvaWQgc2hyaW5rRGlzcGxheUlubGluZUNv
bnRlbnQoKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKIHByaXZhdGU6CiAgICAgLy8gQ2Fj
aGVhYmxlIGlucHV0IHRvIGxpbmUgbGF5b3V0LgogICAgIElubGluZUl0ZW1zIG1faW5saW5lSXRl
bXM7CiAgICAgSW5saW5lTGluZXMgbV9saW5lczsKLQotICAgIFJlZlB0cjxEaXNwbGF5OjpJbmxp
bmVDb250ZW50PiBtX2Rpc3BsYXlJbmxpbmVDb250ZW50OworICAgIElubGluZUxpbmVSdW5zIG1f
bGluZVJ1bnM7CiB9OwogCi1pbmxpbmUgRGlzcGxheTo6SW5saW5lQ29udGVudCYgSW5saW5lRm9y
bWF0dGluZ1N0YXRlOjplbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgpCi17Ci0gICAgaWYgKCFt
X2Rpc3BsYXlJbmxpbmVDb250ZW50KQotICAgICAgICBtX2Rpc3BsYXlJbmxpbmVDb250ZW50ID0g
YWRvcHRSZWYoKm5ldyBEaXNwbGF5OjpJbmxpbmVDb250ZW50KTsKLSAgICByZXR1cm4gKm1fZGlz
cGxheUlubGluZUNvbnRlbnQ7Ci19Ci0KIGlubGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0
ZTo6Y2xlYXJMaW5lQW5kUnVucygpCiB7Ci0gICAgbV9kaXNwbGF5SW5saW5lQ29udGVudCA9IG51
bGxwdHI7CiAgICAgbV9saW5lcy5jbGVhcigpOworICAgIG1fbGluZVJ1bnMuY2xlYXIoKTsKIH0K
IAotaW5saW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpzaHJpbmtEaXNwbGF5SW5saW5l
Q29udGVudCgpCitpbmxpbmUgdm9pZCBJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlua1RvRml0
KCkKIHsKICAgICBtX2xpbmVzLnNocmlua1RvRml0KCk7Ci0gICAgaWYgKCFtX2Rpc3BsYXlJbmxp
bmVDb250ZW50KQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaXNwbGF5SW5saW5lQ29udGVudC0+
cnVucy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fZGlzcGxheUlubGluZUNvbnRlbnQtPmxpbmVzLnNo
cmlua1RvRml0KCk7CisgICAgbV9saW5lUnVucy5zaHJpbmtUb0ZpdCgpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgK
aW5kZXggZDcwNTVlNmJmYzNmYjljOWI3MDU5Nzc4ZjdiNmE0YTFhMGJiOWIzYy4uMmU5NWE3Yzcx
ZTRjNTRlOTEyY2E0NGQyZjg0NmQ4MDMxMTdlNGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApAQCAtMjcsOCArMjcsOCBA
QAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJE
aXNwbGF5UnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbS5oIgorI2luY2x1ZGUgIklubGluZUxp
bmVSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC03MSwxMyArNzEsMTMgQEAgcHVibGljOgogCiAgICAgICAgIGNvbnN0IEJveCYgbGF5
b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAgICAgICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9
Ci0gICAgICAgIGNvbnN0IE9wdGlvbmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRlbnQ+JiB0ZXh0
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KKyAgICAgICAgY29uc3Qg
T3B0aW9uYWw8TGluZVJ1bjo6VGV4dD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0Q29udGVudDsgfQogCiAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dpY2FsV2lkdGg7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExlZnQ7IH0KICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVm
dCgpICsgbG9naWNhbFdpZHRoKCk7IH0KIAotICAgICAgICBjb25zdCBEaXNwbGF5OjpSdW46OkV4
cGFuc2lvbiYgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KKyAgICAg
ICAgY29uc3QgTGluZVJ1bjo6RXhwYW5zaW9uJiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBt
X2V4cGFuc2lvbjsgfQogICAgICAgICBib29sIGhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9leHBhbnNpb25PcHBvcnR1bml0eUNvdW50OyB9CiAgICAgICAgIEV4cGFu
c2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVk
IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbk9w
cG9ydHVuaXR5Q291bnQ7IH0KQEAgLTEyMSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9sb2dpY2FsV2lkdGggeyAwIH07CiAgICAgICAgIFRyYWlsaW5nV2hp
dGVzcGFjZSBtX3RyYWlsaW5nV2hpdGVzcGFjZVR5cGUgeyBUcmFpbGluZ1doaXRlc3BhY2U6Ok5v
bmUgfTsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRo
IHsgMCB9OwotICAgICAgICBPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRleHRDb250ZW50PiBtX3Rl
eHRDb250ZW50OwotICAgICAgICBEaXNwbGF5OjpSdW46OkV4cGFuc2lvbiBtX2V4cGFuc2lvbjsK
KyAgICAgICAgT3B0aW9uYWw8TGluZVJ1bjo6VGV4dD4gbV90ZXh0Q29udGVudDsKKyAgICAgICAg
TGluZVJ1bjo6RXhwYW5zaW9uIG1fZXhwYW5zaW9uOwogICAgICAgICB1bnNpZ25lZCBtX2V4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQgeyAwIH07CiAgICAgfTsKICAgICB1c2luZyBSdW5MaXN0ID0g
VmVjdG9yPFJ1biwgMTA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUdlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lR2VvbWV0cnkuaAppbmRleCA0YjhmZDc1NTFkZDEz
ZTA4OTMyOThhZGMzNzAxMjk0ZjUyYjgzZjIyLi43ZWNmNGUxZThkN2Q3MjFiZWZlNjA4ZWRhYzJj
NDg0MDBlMTAyMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lR2VvbWV0cnkuaApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgTGF5b3V0IHsKIGNsYXNzIElubGluZUxpbmVHZW9tZXRyeSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5saW5lTGluZUdlb21ldHJ5KGNvbnN0
IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExv
Z2ljYWxSZWN0LCBJbmxpbmVMYXlvdXRVbml0IGFsaWdtZW50QmFzZWxpbmUpOworICAgIElubGlu
ZUxpbmVHZW9tZXRyeShjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIGNvbnN0IElu
bGluZVJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgSW5saW5lTGF5b3V0VW5pdCBhbGlnbWVudEJh
c2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQpOwogCiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxS
ZWN0KCkubGVmdCgpOyB9OwogICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5yaWdodCgpOyB9OwpAQCAtNTAsNiArNTAsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9saW5lQm94TG9naWNhbFJlY3Q7IH0KIAogICAgIElubGluZUxheW91dFVuaXQg
YmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2FsaWdtZW50QmFzZWxpbmU7IH0KKyAgICBJbmxp
bmVMYXlvdXRVbml0IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X2hvcml6b250YWxBbGlnbm1lbnRPZmZzZXQ7IH0KIAogICAgIHZvaWQgbW92ZVZlcnRpY2FsbHko
SW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV9sb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxseShv
ZmZzZXQpOyB9CiAKQEAgLTU3LDEyICs1OCwxNCBAQCBwcml2YXRlOgogICAgIElubGluZVJlY3Qg
bV9sb2dpY2FsUmVjdDsKICAgICBJbmxpbmVSZWN0IG1fbGluZUJveExvZ2ljYWxSZWN0OwogICAg
IElubGluZUxheW91dFVuaXQgbV9hbGlnbWVudEJhc2VsaW5lIHsgMCB9OworICAgIElubGluZUxh
eW91dFVuaXQgbV9ob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0IHsgMCB9OwogfTsKIAotaW5saW5l
IElubGluZUxpbmVHZW9tZXRyeTo6SW5saW5lTGluZUdlb21ldHJ5KGNvbnN0IElubGluZVJlY3Qm
IGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBJ
bmxpbmVMYXlvdXRVbml0IGFsaWdtZW50QmFzZWxpbmUpCitpbmxpbmUgSW5saW5lTGluZUdlb21l
dHJ5OjpJbmxpbmVMaW5lR2VvbWV0cnkoY29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0
LCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIElubGluZUxheW91dFVuaXQg
YWxpZ21lbnRCYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQWxpZ25tZW50T2Zm
c2V0KQogICAgIDogbV9sb2dpY2FsUmVjdChsaW5lTG9naWNhbFJlY3QpCiAgICAgLCBtX2xpbmVC
b3hMb2dpY2FsUmVjdChsaW5lQm94TG9naWNhbFJlY3QpCiAgICAgLCBtX2FsaWdtZW50QmFzZWxp
bmUoYWxpZ21lbnRCYXNlbGluZSkKKyAgICAsIG1faG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCho
b3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lUnVuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lUnVuLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDljZmIwMzk0NTk4MzIwMWNhY2ZmNDgzY2VhNWI3ZmI4ZTQ0NTFjMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVSdW4u
aApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVSZWN0Lmgi
CisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitzdHJ1Y3QgTGluZVJ1biB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIHN0cnVjdCBUZXh0IHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAg
ICAgVGV4dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYsIGJv
b2wgbmVlZHNIeXBoZW4pOworCisgICAgICAgIHNpemVfdCBzdGFydCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnQ7IH0KKyAgICAgICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkg
KyBsZW5ndGgoKTsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGg7IH0KKyAgICAgICAgU3RyaW5nIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRTdHJpbmc7IH0KKworICAgICAgICBib29sIG5lZWRzSHlwaGVuKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0h5cGhlbjsgfQorICAgICAgICB2b2lkIHNldE5lZWRzSHlwaGVuKCkgeyBtX25lZWRz
SHlwaGVuID0gdHJ1ZTsgfQorCisgICAgICAgIHZvaWQgZXhwYW5kKHNpemVfdCBkZWx0YSkgeyBt
X2xlbmd0aCArPSBkZWx0YTsgfQorICAgICAgICB2b2lkIHNocmluayhzaXplX3QgZGVsdGEpIHsg
bV9sZW5ndGggLT0gZGVsdGE7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHNpemVfdCBtX3N0
YXJ0IHsgMCB9OworICAgICAgICBzaXplX3QgbV9sZW5ndGggeyAwIH07CisgICAgICAgIGJvb2wg
bV9uZWVkc0h5cGhlbiB7IGZhbHNlIH07CisgICAgICAgIFN0cmluZyBtX2NvbnRlbnRTdHJpbmc7
CisgICAgfTsKKworICAgIHN0cnVjdCBFeHBhbnNpb247CisgICAgTGluZVJ1bihzaXplX3QgbGlu
ZUluZGV4LCBjb25zdCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiwgRXhwYW5zaW9uLCBPcHRpb25h
bDxUZXh0PiA9IFdURjo6bnVsbG9wdCk7CisKKyAgICBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2Fs
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0KKworICAgIElubGluZUxheW91
dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkudG9wKCk7IH0K
KyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBsb2dp
Y2FsUmVjdCgpLmJvdHRvbSgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgp
IGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVmdCgpOyB9CisgICAgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLnJpZ2h0KCk7
IH0KKworICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bG9naWNhbFJlY3QoKS53aWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5oZWlnaHQoKTsgfQorCisgICAgdm9p
ZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkgeyBtX2xvZ2ljYWxSZWN0
Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7IH0KKyAgICBPcHRpb25hbDxUZXh0PiYgdGV4dCgpIHsg
cmV0dXJuIG1fdGV4dDsgfQorICAgIGNvbnN0IE9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0OyB9CisKKyAgICBzdHJ1Y3QgRXhwYW5zaW9uIHsKKyAgICAgICAgRXhw
YW5zaW9uQmVoYXZpb3IgYmVoYXZpb3IgeyBEZWZhdWx0RXhwYW5zaW9uIH07CisgICAgICAgIElu
bGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEV4cGFuc2lvbiB7IDAgfTsKKyAgICB9OworICAgIEV4
cGFuc2lvbiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQorCisgICAg
Y29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KKyAg
ICBzaXplX3QgbGluZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXg7IH0KKworcHJp
dmF0ZToKKyAgICBjb25zdCBzaXplX3QgbV9saW5lSW5kZXg7CisgICAgV2Vha1B0cjxjb25zdCBM
YXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7CisgICAgSW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0Owor
ICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKKyAgICBPcHRpb25hbDxUZXh0PiBtX3RleHQ7Cit9
OworCitpbmxpbmUgTGluZVJ1bjo6TGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCwgRXhwYW5z
aW9uIGV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dD4gdGV4dCkKKyAgICA6IG1fbGluZUluZGV4KGxp
bmVJbmRleCkKKyAgICAsIG1fbGF5b3V0Qm94KG1ha2VXZWFrUHRyKGxheW91dEJveCkpCisgICAg
LCBtX2xvZ2ljYWxSZWN0KGxvZ2ljYWxSZWN0KQorICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9u
KQorICAgICwgbV90ZXh0KHRleHQpCit7Cit9CisKK2lubGluZSBMaW5lUnVuOjpUZXh0OjpUZXh0
KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50U3RyaW5n
LCBib29sIG5lZWRzSHlwaGVuKQorICAgIDogbV9zdGFydChzdGFydCkKKyAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKKyAgICAsIG1fbmVlZHNIeXBoZW4obmVlZHNIeXBoZW4pCisgICAgLCBtX2NvbnRl
bnRTdHJpbmcoY29udGVudFN0cmluZykKK3sKK30KKworfQorfQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IGJiMThiNTI0MmZiMmMzZDg0ZDA5YTgzODg4NjE0
NDZkMzNmNjg3ZjEuLjRkNWRkYjAxNzlkNDM1MzRjZWQ3OWU3OGQ0Y2UyYWU2YTM5YzliMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAgdm9p
ZCBMaW5lTGF5b3V0OjpsYXlvdXQoKQogICAgIHByZXBhcmVMYXlvdXRTdGF0ZSgpOwogICAgIHBy
ZXBhcmVGbG9hdGluZ1N0YXRlKCk7CiAKKyAgICBtX2Rpc3BsYXlJbmxpbmVDb250ZW50ID0gbnVs
bHB0cjsKICAgICBhdXRvIGlubGluZUZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCB7IHJvb3RMYXlvdXRCb3goKSwgbV9pbmxpbmVGb3JtYXR0aW5nU3Rh
dGUgfTsKIAogICAgIGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBMYXlvdXQ6OkludmFsaWRhdGlv
blN0YXRlIHsgfTsKQEAgLTEyMiw5ICsxMjMsNDYgQEAgdm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQo
KQogCiB2b2lkIExpbmVMYXlvdXQ6OmNvbnN0cnVjdERpc3BsYXlDb250ZW50KCkKIHsKLSAgICAv
LyBGSVhNRTogTW92ZSBEaXNwbGF5OjpSdW4gY29uc3RydWN0aW9uIG92ZXIgaGVyZS4KKyAgICBh
dXRvJiBkaXNwbGF5SW5saW5lQ29udGVudCA9IGVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7
CisKKyAgICBhdXRvIGNvbnN0cnVjdERpc3BsYXlMaW5lUnVucyA9IFsmXSB7CisgICAgICAgIGF1
dG8gaW5pdGlhbENvbnRhaW5nQmxvY2tTaXplID0gbV9sYXlvdXRTdGF0ZS52aWV3cG9ydFNpemUo
KTsKKyAgICAgICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUu
bGluZVJ1bnMoKSkgeworICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlv
dXRCb3goKTsKKyAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRJbmtPdmVyZmxvdyA9IFsmXSAoY29u
c3QgYXV0byYgbG9naWNhbFJlY3QpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIG5vbi10ZXh0IGluayBvdmVyZmxvdy4KKyAgICAgICAgICAgICAgICBpZiAoIWxp
bmVSdW4udGV4dCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9naWNhbFJlY3Q7Cisg
ICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGlua092ZXJmbG93ID0gbG9naWNhbFJlY3Q7CisgICAgICAgICAgICAgICAg
YXV0byBzdHJva2VPdmVyZmxvdyA9IHN0ZDo6Y2VpbChzdHlsZS5jb21wdXRlZFN0cm9rZVdpZHRo
KGNlaWxlZEludFNpemUoaW5pdGlhbENvbnRhaW5nQmxvY2tTaXplKSkpOworICAgICAgICAgICAg
ICAgIGlua092ZXJmbG93LmluZmxhdGUoc3Ryb2tlT3ZlcmZsb3cpOworCisgICAgICAgICAgICAg
ICAgYXV0byBsZXR0ZXJTcGFjaW5nID0gc3R5bGUuZm9udENhc2NhZGUoKS5sZXR0ZXJTcGFjaW5n
KCk7CisgICAgICAgICAgICAgICAgaWYgKGxldHRlclNwYWNpbmcgPCAwKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIExhc3QgbGV0dGVyJ3MgbmVnYXRpdmUgc3BhY2luZyBzaHJpbmtzIGxvZ2lj
YWwgcmVjdC4gUHVzaCBpdCB0byBpbmsgb3ZlcmZsb3cuCisgICAgICAgICAgICAgICAgICAgIGlu
a092ZXJmbG93LmV4cGFuZCgtbGV0dGVyU3BhY2luZywgeyB9KTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIGlua092ZXJmbG93OworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBGbG9hdFJlY3QgeyBsaW5lUnVuLmxvZ2ljYWxS
ZWN0KCkgfTsKKyAgICAgICAgICAgIC8vIElubGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhl
IGxpbmUgYm94IHdoaWxlIGZpbmFsIERpc3BsYXk6OlJ1bnMgbmVlZCB0byBiZSByZWxhdGl2ZSB0
byB0aGUgcGFyZW50IERpc3BsYXk6Qm94CisgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0
IHdlIGp1c3QgbGVhdmUgdGhlbSBiZSByZWxhdGl2ZSB0byB0aGUgbGluZSBib3g/CisgICAgICAg
ICAgICBhdXRvIGxpbmVJbmRleCA9IGxpbmVSdW4ubGluZUluZGV4KCk7CisgICAgICAgICAgICBh
dXRvJiBsaW5lQm94TG9naWNhbFJlY3QgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygp
W2xpbmVJbmRleF0ubGluZUJveExvZ2ljYWxSZWN0KCk7CisgICAgICAgICAgICBsb2dpY2FsUmVj
dC5tb3ZlQnkoeyBsaW5lQm94TG9naWNhbFJlY3QubGVmdCgpLCBsaW5lQm94TG9naWNhbFJlY3Qu
dG9wKCkgfSk7CisKKyAgICAgICAgICAgIFdURjo6T3B0aW9uYWw8RGlzcGxheTo6UnVuOjpUZXh0
Q29udGVudD4gdGV4dENvbnRlbnQ7CisgICAgICAgICAgICBpZiAoYXV0byB0ZXh0ID0gbGluZVJ1
bi50ZXh0KCkpCisgICAgICAgICAgICAgICAgdGV4dENvbnRlbnQgPSBEaXNwbGF5OjpSdW46OlRl
eHRDb250ZW50IHsgdGV4dC0+c3RhcnQoKSwgdGV4dC0+bGVuZ3RoKCksIHRleHQtPmNvbnRlbnQo
KSwgdGV4dC0+bmVlZHNIeXBoZW4oKSB9OworICAgICAgICAgICAgYXV0byBleHBhbnNpb24gPSBE
aXNwbGF5OjpSdW46OkV4cGFuc2lvbiB7IGxpbmVSdW4uZXhwYW5zaW9uKCkuYmVoYXZpb3IsIGxp
bmVSdW4uZXhwYW5zaW9uKCkuaG9yaXpvbnRhbEV4cGFuc2lvbiB9OworICAgICAgICAgICAgYXV0
byBkaXNwbGF5UnVuID0gRGlzcGxheTo6UnVuIHsgbGluZUluZGV4LCBsYXlvdXRCb3gsIGxvZ2lj
YWxSZWN0LCBjb21wdXRlZElua092ZXJmbG93KGxvZ2ljYWxSZWN0KSwgZXhwYW5zaW9uLCB0ZXh0
Q29udGVudCB9OworICAgICAgICAgICAgZGlzcGxheUlubGluZUNvbnRlbnQucnVucy5hcHBlbmQo
ZGlzcGxheVJ1bik7CisgICAgICAgIH0KKyAgICB9OworICAgIGNvbnN0cnVjdERpc3BsYXlMaW5l
UnVucygpOworCiAgICAgYXV0byBjb25zdHJ1Y3REaXNwbGF5TGluZSA9IFsmXSB7Ci0gICAgICAg
IGF1dG8mIGRpc3BsYXlJbmxpbmVDb250ZW50ID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuZW5z
dXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICAgICAgYXV0byYgbGluZXMgPSBtX2lubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpOwogICAgICAgICBhdXRvJiBydW5zID0gZGlzcGxheUlu
bGluZUNvbnRlbnQucnVuczsKICAgICAgICAgc2l6ZV90IHJ1bkluZGV4ID0gMDsKQEAgLTE0Mywx
MSArMTgxLDEyIEBAIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0RGlzcGxheUNvbnRlbnQoKQog
ICAgICAgICAgICAgYXV0byBsaW5lUmVjdCA9IEZsb2F0UmVjdCB7IGxpbmUubG9naWNhbFJlY3Qo
KSB9OwogICAgICAgICAgICAgLy8gUGFpbnRpbmcgY29kZSAoc3BlY2lmaWNhbGx5IFRleHRSdW4n
cyB4UG9zKSBuZWVkcyB0aGUgbGluZSBib3ggb2Zmc2V0IHRvIGJlIGFibGUgdG8gY29tcHV0ZSB0
YWIgcG9zaXRpb25zLgogICAgICAgICAgICAgbGluZVJlY3Quc2V0WChsaW5lQm94TG9naWNhbFJl
Y3QubGVmdCgpKTsKLSAgICAgICAgICAgIGRpc3BsYXlJbmxpbmVDb250ZW50LmxpbmVzLmFwcGVu
ZCh7IGxpbmVSZWN0LCBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0LCBsaW5lSW5rT3ZlcmZsb3dSZWN0
LCBsaW5lLmJhc2VsaW5lKCkgfSk7CisgICAgICAgICAgICBkaXNwbGF5SW5saW5lQ29udGVudC5s
aW5lcy5hcHBlbmQoeyBsaW5lUmVjdCwgc2Nyb2xsYWJsZU92ZXJmbG93UmVjdCwgbGluZUlua092
ZXJmbG93UmVjdCwgbGluZS5iYXNlbGluZSgpLCBsaW5lLmhvcml6b250YWxBbGlnbm1lbnRPZmZz
ZXQoKSB9KTsKICAgICAgICAgfQogICAgIH07CiAgICAgY29uc3RydWN0RGlzcGxheUxpbmUoKTsK
LSAgICBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5zaHJpbmtEaXNwbGF5SW5saW5lQ29udGVudCgp
OworICAgIGRpc3BsYXlJbmxpbmVDb250ZW50LnNocmlua1RvRml0KCk7CisgICAgbV9pbmxpbmVG
b3JtYXR0aW5nU3RhdGUuc2hyaW5rVG9GaXQoKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0OjpwcmVw
YXJlTGF5b3V0U3RhdGUoKQpAQCAtMjM1LDkgKzI3NCwxMSBAQCB2b2lkIExpbmVMYXlvdXQ6OmNv
bGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgfQogfQogCi1jb25zdCBE
aXNwbGF5OjpJbmxpbmVDb250ZW50KiBMaW5lTGF5b3V0OjpkaXNwbGF5SW5saW5lQ29udGVudCgp
IGNvbnN0CitEaXNwbGF5OjpJbmxpbmVDb250ZW50JiBMaW5lTGF5b3V0OjplbnN1cmVEaXNwbGF5
SW5saW5lQ29udGVudCgpCiB7Ci0gICAgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLmRp
c3BsYXlJbmxpbmVDb250ZW50KCk7CisgICAgaWYgKCFtX2Rpc3BsYXlJbmxpbmVDb250ZW50KQor
ICAgICAgICBtX2Rpc3BsYXlJbmxpbmVDb250ZW50ID0gYWRvcHRSZWYoKm5ldyBEaXNwbGF5OjpJ
bmxpbmVDb250ZW50KTsKKyAgICByZXR1cm4gKm1fZGlzcGxheUlubGluZUNvbnRlbnQ7CiB9CiAK
IExpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0Qm94
ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKQEAgLTMzNiw3ICszNzcs
MTAgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICBTdHJpbmcgdGV4dFdpdGhIeXBoZW47
CiAgICAgICAgIGlmICh0ZXh0Q29udGVudC5uZWVkc0h5cGhlbigpKQogICAgICAgICAgICAgdGV4
dFdpdGhIeXBoZW4gPSBtYWtlU3RyaW5nKHRleHRDb250ZW50LmNvbnRlbnQoKSwgc3R5bGUuaHlw
aGVuU3RyaW5nKCkpOwotICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4u
aXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGVudC5jb250ZW50KCksIHJ1bi5s
ZWZ0KCkgLSBsaW5lLnJlY3QoKS54KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBl
eHBhbnNpb24uYmVoYXZpb3IgfTsKKyAgICAgICAgLy8gVGV4dFJ1biBleHBlY3RzIHRoZSB4UG9z
IHRvIGJlIGFkanVzdGVkIHdpdGggdGhlIGFsaWdtZW50IG9mZnNldCAoZS5nLiB3aGVuIHRoZSBs
aW5lIGlzIGNlbnRlciBhbGlnbmVkCisgICAgICAgIC8vIGFuZCB0aGUgcnVuIHN0YXJ0cyBhdCAx
MDBweCwgZHVlIHRvIHRoZSBob3Jpem9udGFsIGFsaWdtZW50LCB0aGUgeHBvcyBpcyBzdXBwb3Nl
ZCB0byBiZSBhdCAwcHgpLgorICAgICAgICBhdXRvIHhQb3MgPSByZWN0LngoKSAtIChsaW5lLnJl
Y3QoKS54KCkgKyBsaW5lLmhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKSk7CisgICAgICAgIFRl
eHRSdW4gdGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5KCkgPyB0ZXh0V2l0aEh5cGhl
biA6IHRleHRDb250ZW50LmNvbnRlbnQoKSwgeFBvcywgZXhwYW5zaW9uLmhvcml6b250YWxFeHBh
bnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAgICAgICB0ZXh0UnVuLnNldFRhYlNpemUo
IXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwogICAgICAgICBG
bG9hdFBvaW50IHRleHRPcmlnaW4geyByZWN0LngoKSArIHBhaW50T2Zmc2V0LngoKSwgcm91bmRU
b0RldmljZVBpeGVsKGJhc2VsaW5lLCBkZXZpY2VTY2FsZUZhY3RvcikgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oCmluZGV4IGI2OTQ4ODU0NmVkZGRhZWVmZmNjZTI0MzkxMWYyYTg2
ZWFkZmFhNDYuLjkyMDZhMmE0NmMzOTg5ZmJkZDU2MTA1MmVkNTg4YzI1YTdiZmI1ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjb2xsZWN0T3ZlcmZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAKLSAgICBjb25zdCBE
aXNwbGF5OjpJbmxpbmVDb250ZW50KiBkaXNwbGF5SW5saW5lQ29udGVudCgpIGNvbnN0OworICAg
IGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIGRpc3BsYXlJbmxpbmVDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5SW5saW5lQ29udGVudC5nZXQoKTsgfQogCiAgICAgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOwogICAgIGJv
b2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24pOwpAQCAtODMsNiArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlcGFy
ZUxheW91dFN0YXRlKCk7CiAgICAgdm9pZCBwcmVwYXJlRmxvYXRpbmdTdGF0ZSgpOwogICAgIHZv
aWQgY29uc3RydWN0RGlzcGxheUNvbnRlbnQoKTsKKyAgICBEaXNwbGF5OjpJbmxpbmVDb250ZW50
JiBlbnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgpOwogCiAgICAgY29uc3QgTGF5b3V0OjpDb250
YWluZXJCb3gmIHJvb3RMYXlvdXRCb3goKSBjb25zdDsKICAgICBMYXlvdXQ6OkNvbnRhaW5lckJv
eCYgcm9vdExheW91dEJveCgpOwpAQCAtOTMsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIEJveFRy
ZWUgbV9ib3hUcmVlOwogICAgIExheW91dDo6TGF5b3V0U3RhdGUgbV9sYXlvdXRTdGF0ZTsKICAg
ICBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGU7
CisgICAgUmVmUHRyPERpc3BsYXk6OklubGluZUNvbnRlbnQ+IG1fZGlzcGxheUlubGluZUNvbnRl
bnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggZDk5ZGUyOWU1OTgwN2UyODM5YzgyMWIwZDZl
ZWFkMWJjZTU5MWFlOS4uZDcyZGZkYTQ0YWYyZDI0YzQwNDJiYjg3MTMwN2Y0OWMxMWU5MTA1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcApAQCAtMzgxLDExICszODEsNiBAQCB2b2lkIFRyZWVCdWlsZGVyOjpidWls
ZFN1YlRyZWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuZGVyZXIsIENvbnRhaW5lckJv
eAogc3RhdGljIHZvaWQgb3V0cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyQm94JiBpbmxpbmVGb3Jt
YXR0aW5nUm9vdCwgdW5zaWduZWQgZGVwdGgpCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGlu
Z1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoaW5s
aW5lRm9ybWF0dGluZ1Jvb3QpOwotICAgIGF1dG8qIGRpc3BsYXlJbmxpbmVDb250ZW50ID0gaW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCk7Ci0gICAgaWYgKCFkaXNw
bGF5SW5saW5lQ29udGVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZGlzcGxheVJ1
bnMgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+cnVuczsKICAgICBhdXRvJiBsaW5lcyA9IGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpOwogCiAgICAgdW5zaWduZWQgcHJpbnRlZENoYXJhY3Rl
cnMgPSAwOwpAQCAtMzk4LDE4ICszOTMsMTggQEAgc3RhdGljIHZvaWQgb3V0cHV0SW5saW5lUnVu
cyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKICAg
ICAgICAgc3RyZWFtIDw8ICJbIiA8PCBsaW5lLmxvZ2ljYWxMZWZ0KCkgPDwgIiwiIDw8IGxpbmUu
bG9naWNhbFRvcCgpIDw8ICIgIiA8PCBsaW5lLmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBsaW5l
LmxvZ2ljYWxIZWlnaHQoKSA8PCAiXVtiYXNlbGluZTogIiA8PCBsaW5lLmJhc2VsaW5lKCkgPDwg
Il0iOwogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogCi0gICAgZm9yIChhdXRvJiBkaXNwbGF5UnVu
IDogZGlzcGxheVJ1bnMpIHsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUZvcm1hdHRpbmdT
dGF0ZS5saW5lUnVucygpKSB7CiAgICAgICAgIHVuc2lnbmVkIHByaW50ZWRDaGFyYWN0ZXJzID0g
MDsKICAgICAgICAgd2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQogICAg
ICAgICAgICAgc3RyZWFtIDw8ICIgIjsKICAgICAgICAgc3RyZWFtIDw8ICIgICI7Ci0gICAgICAg
IGlmIChkaXNwbGF5UnVuLnRleHRDb250ZW50KCkpCisgICAgICAgIGlmIChydW4udGV4dCgpKQog
ICAgICAgICAgICAgc3RyZWFtIDw8ICJpbmxpbmUgdGV4dCBib3giOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzdHJlYW0gPDwgImlubGluZSBib3giOwotICAgICAgICBzdHJlYW0gPDwgIiBh
dCAoIiA8PCBkaXNwbGF5UnVuLmxlZnQoKSA8PCAiLCIgPDwgZGlzcGxheVJ1bi50b3AoKSA8PCAi
KSBzaXplICIgPDwgZGlzcGxheVJ1bi53aWR0aCgpIDw8ICJ4IiA8PCBkaXNwbGF5UnVuLmhlaWdo
dCgpOwotICAgICAgICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpKQotICAgICAgICAgICAg
c3RyZWFtIDw8ICIgcnVuKCIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5zdGFydCgpIDw8
ICIsICIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGVudCgpLT5lbmQoKSA8PCAiKSI7CisgICAgICAg
IHN0cmVhbSA8PCAiIGF0ICgiIDw8IHJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBydW4ubG9n
aWNhbFRvcCgpIDw8ICIpIHNpemUgIiA8PCBydW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IHJ1
bi5sb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIGlmIChydW4udGV4dCgpKQorICAgICAgICAgICAg
c3RyZWFtIDw8ICIgcnVuKCIgPDwgcnVuLnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IHJ1bi50
ZXh0KCktPmVuZCgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJs
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMjM1ZjQwZTgwMGVhOTFjNWMx
MDhkYTI0MzhlY2U1M2E5ODNjYmQyYy4uNDI1YTU1MzIyMzMyYzhhYjU4ODMyNWIyNDhlNmIzMTE4
OWMzOGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGlu
Zy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMzAsOCArMTMw
LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxs
cyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b24KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgaWYgKGNlbGxCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZWUgPSBs
YXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNlbGxCb3gpOwot
ICAgICAgICAgICAgICAgICAgICBhdXRvJiBkaXNwbGF5Q29udGVudCA9IGlubGluZUZvcm1hdHRp
bmdTdGF0ZWUuZW5zdXJlRGlzcGxheUlubGluZUNvbnRlbnQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgZm9yIChhdXRvJiBydW4gOiBkaXNwbGF5Q29udGVudC5ydW5zKQorICAgICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZWUubGluZVJ1bnMoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bi5tb3ZlVmVydGljYWxseShpbnRyaW5zaWNQYWRk
aW5nVG9wKTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsaW5lIDogaW5saW5lRm9y
bWF0dGluZ1N0YXRlZS5saW5lcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5tb3Zl
VmVydGljYWxseShpbnRyaW5zaWNQYWRkaW5nVG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlS
dW5QYXRoLmgKaW5kZXggMWFmMTIxNDU0OTU0NDRmZTNmYzFjZmU5NjJmMWM2ZWRlOTZhYmNjMS4u
MDFiN2E2YzM1YjY2YzY4OTk2YTc1YTkzOWU5OTc0ZTM0MDVmMjhjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogaW5saW5l
IEZsb2F0UmVjdCBEaXNwbGF5UnVuUGF0aDo6cmVjdCgpIGNvbnN0CiB7CiAgICAgYXV0byByZWN0
ID0gcnVuKCkucmVjdCgpOwotICAgIGF1dG8gcG9zaXRpb24gPSBsaW5lUG9zaXRpb24ocmVjdC5s
ZWZ0KCksIHJlY3QudG9wKCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBsaW5lUG9zaXRpb24ocmVj
dC54KCksIHJlY3QueSgpKTsKICAgICByZXR1cm4geyBwb3NpdGlvbiwgcmVjdC5zaXplKCkgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDg5N2ZmMjlhOTAzZTI4Mjc0NTgxMWFmY2ViYTEzOGNkMjRhNmUzYmUuLmZj
MWIwMWJmMWFlYWE1ZDY4YTE0NmQyM2VjOTYzMTcwMjFmZWNlZjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wOS0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtMRkNdW0lGQ10gSW5saW5lRm9ybWF0dGluZ1N0YXRlIHNob3VsZCBub3Qgc3RvcmUgZGlz
cGxheSBsaW5lcyBhbmQgcnVucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE2NzQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgYWJvdXQgdmVyaWZ5aW5nIGxheW91dCBjb3Jy
ZWN0bmVzcworICAgICAgICBieSBjYWxsaW5nIExheW91dENvbnRleHQ6OnZlcmlmeUFuZE91dHB1
dE1pc21hdGNoaW5nTGF5b3V0VHJlZSBvbiBldmVyeSBsYXlvdXQgZnJhbWUKKyAgICAgICAgYW5k
IGFzc2VydCBpbiBjYXNlIG9mIG1pc21hdGNoaW5nIHRyZWVzLgorICAgICAgICBUaGUgdGVzdCBj
b3ZlcmFnZSBkb2VzIG5vdCBzdWZmZXIgYnkgWyBJbWFnZU9ubHlGYWlsdXJlIF0gaXQuCisgICAg
ICAgIChXZSBuZWVkIHRvIHN0YXJ0IGdlbmVyYXRpbmcgZGlzcGxheSBib3hlcyBmb3IgdGhlIERp
c3BsYXk6OlBhaW50ZXIuKQorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0w
OS0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VsZWN0aW9u
IEFQSTogVXBkYXRlIHNvbWUgbW9yZSB0ZXN0cyBzbyB0aGV5IGRvbid0IGFjY2lkZW50YWxseSBy
ZWx5IG9uIGZsYXdzIGluIFdlYktpdCdzIG9sZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggMGVmYTA2ZTA1NzA0YzhlMDI0NzIyNjBhNjU4NzczNWFmZjFmNTU4OS4uMmY3NjBk
ODg0NjMzM2YxZjQ5MmRmZWZiOTZmYTI1NTY1N2JhYjAwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBA
IC00NTM1LDMgKzQ1MzUsNSBAQCBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtaGRyLXN3aXRjaC5o
dG1sIFsgU2tpcCBdCiAKICMgVGhlc2UgdGVzdHMgcmVseSBvbiB3ZWJraXQtdGVzdC1ydW5uZXIg
ZmxhZ3MgdGhhdCBhcmVuJ3QgaW1wbGVtZW50ZWQgZm9yIER1bXBSZW5kZXJUcmVlLCBzbyB0aGV5
IHdpbGwgZmFpbCB1bmRlciBsZWdhY3kgV2ViS2l0LgogZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5k
by5odG1sIFsgRmFpbHVyZSBdCisKK2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>