<?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>217573</bug_id>
          
          <creation_ts>2020-10-11 01:44:41 -0700</creation_ts>
          <short_desc>[GPU Process][Resource caching 5/7]: Clean the DisplayList recording of the NativeImage</short_desc>
          <delta_ts>2020-10-19 09:49:08 -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>
          <dependson>217566</dependson>
          <blocked>217342</blocked>
    
    <blocked>217596</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696601</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-11 01:44:41 -0700</bug_when>
    <thetext>-- Move the definition of NativeImagePtr to a separate header file.
-- Remove the class ImageHandle and allow encoding and decoding NativeImagePtr directly.
-- Remove the compilation directives around the DisplayList::DrawNativeImage item and the method drawNativeImage().
-- Move the drawNativeImage() methods to the sources of their callers.
-- In the case of recording the drawing commands, make GraphicsContext::drawImage() process drawing the images such that primitives drawing commands are recorded. For example a BitmapImage will render a NativeImage eventually. And SVGImage will record its render tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696603</commentid>
    <comment_count>1</comment_count>
      <attachid>411041</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-11 01:46:45 -0700</bug_when>
    <thetext>Created attachment 411041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696605</commentid>
    <comment_count>2</comment_count>
      <attachid>411042</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-11 01:55:19 -0700</bug_when>
    <thetext>Created attachment 411042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696608</commentid>
    <comment_count>3</comment_count>
      <attachid>411044</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-11 03:01:24 -0700</bug_when>
    <thetext>Created attachment 411044
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698930</commentid>
    <comment_count>4</comment_count>
      <attachid>411660</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-17 01:48:22 -0700</bug_when>
    <thetext>Created attachment 411660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698932</commentid>
    <comment_count>5</comment_count>
      <attachid>411662</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-17 02:25:21 -0700</bug_when>
    <thetext>Created attachment 411662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698975</commentid>
    <comment_count>6</comment_count>
      <attachid>411662</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-17 11:05:08 -0700</bug_when>
    <thetext>Comment on attachment 411662
Patch

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

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:218
&gt; +    // Subsampling may have given us an image that is smaller than size().
&gt; +    IntSize subsampledImageSize = nativeImageSize(image);
&gt; +    if (options.orientation().usesWidthAsHeight())
&gt; +        subsampledImageSize = subsampledImageSize.transposedSize();
&gt; +
&gt; +    // srcRect is in the coordinates of the unsubsampled image, so we have to map it to the subsampled image.
&gt; +    FloatRect adjustedSrcRect = srcRect;
&gt; +    if (subsampledImageSize != srcSize)
&gt; +        adjustedSrcRect = mapRect(srcRect, FloatRect({ }, srcSize), FloatRect({ }, subsampledImageSize));

What justifies this code being here and not inside GraphicsContext::drawNativeImage?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699063</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-18 01:45:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/70415273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699273</commentid>
    <comment_count>8</comment_count>
      <attachid>411662</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-19 09:34:49 -0700</bug_when>
    <thetext>Comment on attachment 411662
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:218
&gt;&gt; +        adjustedSrcRect = mapRect(srcRect, FloatRect({ }, srcSize), FloatRect({ }, subsampledImageSize));
&gt; 
&gt; What justifies this code being here and not inside GraphicsContext::drawNativeImage?

I will move this code to GraphicsContext::drawNativeImage() in bug 217596.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699288</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-19 09:49:05 -0700</bug_when>
    <thetext>Committed r268669: &lt;https://trac.webkit.org/changeset/268669&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411662.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411041</attachid>
            <date>2020-10-11 01:46:45 -0700</date>
            <delta_ts>2020-10-11 01:55:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217573-20201011014644.patch</filename>
            <type>text/plain</type>
            <size>173440</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMxYWE4Njk0MDM0ZjFl
ZDg1MGRmZjdlYzFlNmViYThkZTNiNGJiZS4uODgzYzI3ZDIyZTE1NTFiZmExOWE1NTk1ZmIxYmVm
YzhhM2UyMmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMC0xMC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gQ2xlYW4gdGhlIERpc3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1h
Z2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBs
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVy
OjpEcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05h
dGl2ZUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0ltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6c291cmNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlc3Rp
bmF0aW9uUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0lt
YWdlQnVmZmVyOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcDoKKworMjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlMaXN0OjpE
cmF3SW1hZ2VCdWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGluIHRoZSBXZWIgUHJvY2VzcyBpcyB0aGUgZm9sbG93
aW5nOgorCisgICAgICAgIC0tIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkgdXNl
cyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgdG8gY2hlY2sKKyAgICAgICAgICAgd2hldGhlciBpdCBp
cyBhcHByb3ByaWF0ZSB0byBjcmVhdGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0gb3Igbm90LgorCisg
ICAgICAgIC0tIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKCkgdXNlcyB0
aGUgZGVsZWdhdGUgdG8gdG8gY3JlYXRlCisgICAgICAgICAgIHRoZSBEcmF3SW1hZ2VCdWZmZXIg
aXRlbS4KKworICAgICAgICAtLSBTaW5jZSBSZW1vdGVJbWFnZUJ1ZmZlciBpbmhlcml0cyBEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlLCAKKyAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZm
ZXI6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oKSB3aWxsIGJlIGNhbGxlZC4KKworICAgICAg
ICAtLSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKCkg
d2lsbCBiZSBjYWxsZWQgbmV4dAorICAgICAgICAgICB3aGljaCB3aWxsIGNhbGwgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSgpLgorCisgICAgICAgIC0tIFJl
bW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oKSBjaGVja3MgaXRz
IEhhc2hNYXAKKyAgICAgICAgICAgdXNpbmcgdGhlIEltYWdlQnVmZmVyKiB0byBmaW5kIHRoZSBj
b3JyZXNwb25kaW5nIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci4KKyAgICAgICAgICAgSWYgaXQg
ZmluZHMgaXQsIGl0IHdpbGwgY3JlYXRlIHRoZSBEcmF3SW1hZ2VCdWZmZXIgaXRlbS4KKworICAg
ICAgICBUaGUgc2VxdWVuY2UgaW4gdGhlIEdQVSBQcm9jZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisK
KyAgICAgICAgLS0gV2hlbiByZXBsYXlpbmcgYmFjayB0aGUgRGlzcGxheUxpc3QsIERpc3BsYXlM
aXN0OjpSZXBsYXllciB3aWxsIGNhbGwKKyAgICAgICAgICAgaXRzIGRlbGVnYXRlIHRvIGNoZWNr
IGlmIGl0IHdhbnRzIHRvIGFwcGx5IHRoZSBEcmF3SW1hZ2VCdWZmZXIuCisKKyAgICAgICAgLS0g
QmVjYXVzZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGluaGVyaXRzIERpc3BsYXlMaXN0OjpSZXBs
YXllcjo6RGVsZWdhdGUsCisgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmFwcGx5
KCkgd2lsbCBiZSBjYWxsZWQuCisKKyAgICAgICAgLS0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB3
aWxsIGNhbGwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbSgp
CisgICAgICAgICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LgorCisgICAgICAgIC0tIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6YXBwbHlSZXNv
dXJjZUl0ZW0oKSB3aWxsIHNlYXJjaCBmb3IgYQorICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZl
ciB3aG9zZSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbWF0Y2hlcyB0aGUgb25lIGluCisgICAg
ICAgICAgIERyYXdJbWFnZUJ1ZmZlci4gQW5kIHRoZXJlIGlzIG9uZSwgaXQgd2lsbCBkcmF3cyB0
byBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRy
YXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjphcHBseSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6
c291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXI6OmRlc3RpbmF0aW9uUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheExpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y3Jl
YXRlRHJhd0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6d2lsbEFwcGVuZEl0ZW0pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisKKzIwMjAt
MTAtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8g
bWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdmlydHVhbCBtZXRob2Rz
IHRvIEltYWdlQnVmZmVyIHdoaWNoIHVzZWQgdG8gYmUgYSB2aXJ0dWFsIG1ldGhvZAorICAgICAg
ICBvZiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuIFRoaXMgbWV0aG9kIGlz
IGFscmVhZHkgb3ZlcnJpZGRlbgorICAgICAgICBieSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGFu
ZCBpcyBjYWxsZWQgYnkgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LiBCdXQKKyAgICAgICAgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5IGtlZXBzIGEgSGFzaE1hcCBvZiBJbWFnZUJ1ZmZlcnMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQpOgorCisyMDIwLTEwLTA5ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMg
aWRlbnRpZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTUwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHdpbGwgYmUgdXNlZCBpbiBXZWJDb3JlIHdoZW4gcmVjb3JkaW5nIGRyYXdpbmcKKyAgICAg
ICAgYSByZW1vdGUgSW1hZ2VCdWZmZXIgdG8gYW5vdGhlciByZW1vdGUgSW1hZ2VCdWZmZXIuIEV2
ZW50dWFsbHkgaXQgd2lsbAorICAgICAgICBiZSB1c2VkIGRyYXdpbmcgYSByZW1vdGUgTmF0aXZl
SW1hZ2UgdG8gYSByZW1vdGUgSW1hZ2VCdWZmZXIgb3IgRE9NIGxheWVyLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
Lmg6IEFkZGVkLgorCiAyMDIwLTEwLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNZWNoYW5pY2FsIGNsZWFudXAgaW4g
RGlzcGxheUxpc3RSZWNvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNWJhMzQ3YjFhMWZmZjI5MWRlYTg0MTIz
YzA0NjZlOWEwZTY0NzhlLi42M2JhYjdlMjRmMmJmMzNjY2FkNDg3MGNjNDYyNGI1NWY3YTI5ZmI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2xl
YW4gdGhlIERpc3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1hZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
T3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZl
SW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUlt
YWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFn
ZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKwor
MjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBwbHkpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRl
bSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbSBjb25zdCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJh
d0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVz
b3VyY2VzIGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwgYmUgcmVzcG9uc2libGUgZm9y
IG1hbmFnaW5nIHRoZSByZW1vdGUgcmVzb3VyY2VzCisgICAgICAgIGluY2x1ZGluZyB0aGVpciBh
Y3R1YWwgbGlmZSBjeWNsZSBpbiB0aGUgV2ViIFByb2Nlc3Mgc2lkZS4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZAorICAgICAgICB3aWxsIGJlIHJlc3BvbnNpYmxlIG9ubHkgZm9yIHRoZSBJUEMgY29t
bXVuaWNhdGlvbnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisgICAgICAgIEl0
IHdpbGwgZGVsZWdhdGUgYWxsIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IHRvIGl0cyBSZW1vdGVS
ZXNvdXJjZUNhY2hlLgorCisgICAgICAgIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXIgZG9lcyB0
aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFdlYkNvcmUgYW5kIEdQVQorICAgICAgICBQcm9jZXNz
LCBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwga2VlcCB0d28gSGFzaE1hcHMgdG8gZWFzZSB0aGUg
bWFwcGluZworICAgICAgICBpbiBib3RoIGRpcmVjdGlvbnM6CisKKyAgICAgICAgLS0gbV9yZW1v
dGVJbWFnZUJ1ZmZlckhhc2hNYXAgbWFwcyBJbWFnZUJ1ZmZlciogLT4gUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyCisgICAgICAgIC0tIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAgbWFwcyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgICAgLT4gUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcioKKworICAgICAgICBUbyBrZWVwIHRyYWNrIG9mIHRo
ZSByZXNvdXJjZSByZWZlcmVuY2luZywgUmVtb3RlUmVzb3VyY2VDYWNoZSB1c2VzIGFub3RoZXIg
CisgICAgICAgIG1hcCB3aGljaCByZWxhdGVzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggdGhlIHNl
dCBvZiByZW1vdGUgZHJhd2luZyBjbGllbnRzLgorICAgICAgICAKKyAgICAgICAgLS0gbV9yZW1v
dGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1hcHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIC0+
CisgICAgICAgICAgIEhhc2hTZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPgorCisgICAgICAg
IFRoZSByZW1vdGUgcmVzb3VyY2UgaGFzIHN0YXkgYWxpdmUgdGlsbCB0aGVpciBjbGllbnRzIHJl
cGxheWVkIGJhY2sgdGhlaXIKKyAgICAgICAgRGlzcGxheUxpc3Q6Okl0ZW1zIHdoaWNoIHJlZmVy
ZW5jZSB0aGVzZSByZXNvdXJjZXMuIE9uY2UgUmVtb3RlUmVzb3VyY2VDYWNoZQorICAgICAgICBp
cyByZXF1ZXN0ZWQgdG8gcmVsZWFzZSBhIHJlbW90ZSByZXNvdXJjZSBidXQgaXQgZmluZHMgdGhp
cyByZXNvdXJjZSBpcworICAgICAgICByZWZlcmVuY2VkIGJ5IGEgc2V0IG9mIHJlbW90ZSBkcmF3
aW5nIGNsaWVudHMsIGl0IG1vdmVzIHRoZSBlbnRyeSBvZiB0aGlzCisgICAgICAgIHJlc291cmNl
IGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIHRvIGFub3RoZXIgSGFzaE1hcCBu
YW1lZDoKKworICAgICAgICAtLSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNl
SGFzaE1hcCBtYXBzIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICAtPiBIYXNo
U2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4KKworICAgICAgICBXaGVuIGFuIGVudHJ5IGZv
ciBhIHJlbW90ZSByZXNvdXJjZSBleGlzdHMgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5k
aW5nUmVsZWFzZUhhc2hNYXAgCisgICAgICAgIGFuZCBubyByZW1vdGUgY2xpZW50IHJlZmVyZW5j
ZXMgaXQgYW55bW9yZSwgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aWxsIHRlbGwgCisgICAgICAgIEdQ
VSBQcm9jZXNzIHRvIHJlbGVhc2UgaXRzIHJlbW90ZSByZXNvdXJjZSBhcyB3ZWxsLgorCisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6
UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0
Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJj
ZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
Ojpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudCk6CisgICAgICAgIExp
bmtzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggYSBkcmF3aW5nIHJlbW90ZSBjbGllbnQuCisKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
UGVuZGluZ1JlbW92ZUNsaWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICBSZW1vdmUgYWxsIHRoZSBlbnRyaWVz
IHdoaWNoIGluY2x1ZGVzIGEgY2VydGFpbiByZW1vdGUgY2xpZW50LgorCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAgICBB
IHJlbW90ZSBjbGllbnQgaGFzIGRvbmUgZmx1c2hpbmcgaXRzIERyYXdpbmdDb250ZXh0LiBJdCdz
IHRpbWUgdG8gYm9vay0KKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgcmVmZXJlbmNpbmcgYW5k
IHN5bmMgdXAgd2l0aCB0aGUgR1BVIHNpZGUgaWYgaXQgaGFzIHRvCisgICAgICAgIHJlbGVhc2Ug
c29tZSBvZiB0aGUgcmVtb3RlIHJlc291cmNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisKKzIwMjAtMTAtMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSBy
ZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgd2lsbCBiZSByZXNw
b25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJlbW90ZSByZXNvdXJjZXMKKyAgICAgICAgaW5jbHVk
aW5nIHRoZWlyIGFjdHVhbCBsaWZlIGN5Y2xlLiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkg
d2lsbCBiZSAKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBJUEMgY29tbXVuaWNhdGlvbnMg
d2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLiBJdCB3aWxsCisgICAgICAgIGRlbGVnYXRlIGFs
bCB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LgorCisgICAgICAgIFdlIGNhbiBnZXQgcmlkIG9mIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eSBiZWNhdXNlIGFsbCBpdCBkb2VzCisgICAgICAgIGlzIHNlbmRpbmcgbWVzc2Fn
ZXMgdG8gV2ViUHJvY2Vzcy4gUmVtb3ZpbmcgaXQgd2lsbCBzaW1wbGlmeSB0aGUgaW50ZXJmYWNl
CisgICAgICAgIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFNlbmRpbmcgdGhlIG1lc3NhZ2Vz
IHdpbGwgYmUgbW92ZWQgdG8KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Up
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDIwLTEwLTA5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMgaWRlbnRp
ZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTUwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR1BVIFByb2Nlc3MgbmVlZHMgYSB1bml2ZXJz
YWwgaWRlbnRpZmllciBmb3IgZHJhd2luZyBjYWNoZWQgcmVzb3VyY2VzIGFuZCAKKyAgICAgICAg
ZHJhd2luZyBidWZmZXJzIGFuZCBsYXllcnMuIFRoZSBtZWFuaW5nIG9mIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciB3aWxsCisgICAgICAgIGRlcGVuZCBvbiB0aGUgY29udGV4dCBpdCBpcyB1c2Vk
IGluLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJ
bWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21t
aXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZs
dXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bGVhc2VJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisKIDIwMjAtMTAt
MDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBBZGQgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBwYWludGluZyB2aWRlbyBlbGVt
ZW50cyB0byAyRCBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTg0N2IwNWFiNDRlNWNk
NGE3MDZiZTMwOGM4YjY0NWI1MjU0MDBmZS4uYmYwN2EyNWI2YTkwNDZlOTEwODBmN2Q0MWU4NWQ5
MjI5NGM1Zjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTk0LDYgKzExOTQsNyBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5m
by5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1No
aW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCkBAIC0xMjA3LDYgKzEyMDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJh
Y2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Q2MWUwNWIzNTc3MzA0YzE4M2M1MDNmODMxZWM4
OTQxMDEwMDAyMS4uM2ZlMjlmOGJjZTg0YTI0YjY5NzZlZTBkNzMyZWJmZjQ1YmFhZWQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjAwNyw3ICsyMDA3LDYgQEAKIAkJNkE3Mjc5OEIxRjE2QzI5QzAwM0YzOUI4IC8qIEluc3Bl
Y3RvclNoYWRlclByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZBNzI3OTg4MUYxNkMyOUIwMDNGMzlCOCAvKiBJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtLmggKi87IH07CiAJCTZCMEEwN0YyMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmli
dXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZC
MEEwN0YwMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjFGNDgxMTIyOThBMzdF
MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkIxRjQ4MEYyMjk4OUVDNDAwREU4
QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNEQ0MTJEMjM5
ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dl
ZEluU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIyMUI3
MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIgLyog
TmF2aWdhdG9ySXNMb2dnZWRJbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkI1MDdBMjEyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2Vk
SW4uaCAqLzsgfTsKQEAgLTIxNjEsNiArMjE2MCw5IEBACiAJCTcyN0E3RjNBMjQwNzhCODQwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgz
IC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5RDA1
M0MyNTMyRUVFMzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MjlEMDUzRDI1MzJFRjkxMDA0MjIwOTggLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTM5MjUzMkQyRTcw
MDQyMjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRp
b25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIz
RTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9
OwpAQCAtOTQ4Nyw3ICs5NDg5LDYgQEAKIAkJNkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8qIEFk
Q2xpY2tBdHRyaWJ1dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIwQTA3RjEyMUZBNEI1QzAwRDU3MzkxIC8q
IEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZENsaWNrQXR0cmli
dXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjFGNDgwRjIyOTg5RUM0
MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZElu
U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJs
ZURvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTkyMyw2ICs5OTI0LDggQEAKIAkJNzI3QUZFRDMxQTJFQTZB
MDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4
ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNE
Njg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmlu
Z01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MkUyNTMxM0UyNjAw
NDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5
RDA1MzkyNTMyRDJFNzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0
MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMy
ODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjYyMjAsOCArMjYyMjMsOCBAQAogCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhF
QSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgyIC8q
IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAw
MTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAotCQkJCTZCMzQ4MDkyMEVF
RjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5RjQw
MDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyOUQwNTM5MjUzMkQyRTcwMDQyMjA5
OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAv
KiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICov
LAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3Bw
ICovLApAQCAtMjYyMzksNiArMjYyNDIsNyBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdFRjU0
QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVn
aW9uLmggKi8sCisJCQkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllci5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1vdGVW
aWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJlbW90
ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRl
cmluZ01vZGUuaCAqLywKQEAgLTMzMTY4LDcgKzMzMTcyLDggQEAKIAkJCQkzMTRCRTNBNzFCMzEw
M0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUQwNTNDMjUzMkVFRTMwMDQyMjA5OCAvKiBOYXRpdmVJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1M0QyNTMyRUY5MTAwNDIyMDk4IC8qIE5h
dGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJF
NDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0
NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM1NDEsNiArMzM1NDYsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3
RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdD
MDAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJF
QjIyRkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAw
RUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4
RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5k
ZXggYTE0MTNjNmY2NzliMTVlOTA3YzdiNmNmYTc2MDVmMjcwZTJmOTU1Ny4uNTc0NDdmZjFhZjA0
NmM2NDhlODRkOTc2YWJmMDA2MTBiZjAwMjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0NzZh
MzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjcwNGM0M2EyODg3OGZjY2ViNDk4
ODQ0OTY3MTFkMzAzNGYwNWUzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUsMjEg
QEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAorc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxs
ZXIgdGhhbiBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKG5hdGl2ZUltYWdlKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVz
ZXNXaWR0aEFzSGVpZ2h0KCkpCisgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1w
bGVkSW1hZ2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICAvLyBzcmNSZWN0IGlzIGluIHRo
ZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1h
cCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNS
ZWN0ID0gc3JjUmVjdDsKKyAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQor
ICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0s
IHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CisKKyAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3Vs
dCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBz
cmNSZWN0LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDU1NWNjNjY0NTcwYTM0YmVhOTk1ZGVjY2Q1
MmFjODYxZjVmZTMxNDQuLmU3MzBiODljYTBjZDA3MTAyMmUxZDA0NDZlMzU4YWFlODgwZGI2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtNzMxLDYgKzczMSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sCiAg
ICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcGxhdGZv
cm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOworfQorCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIHJldHVybiBkcmF3
SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Uuc2l6ZSgpKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwpA
QCAtNzQ3LDcgKzc2MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGlu
ZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3Vt
ZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5p
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc1OSw3ICs3NzIsNyBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmICht
X2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2lt
cGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwg
c3BhY2luZywgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CkBAIC03NzIsNyArNzg1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYm
IGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3
VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKQEAgLTc5OSw2ICs4MTIsOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKQorICAgICAgICByZXR1cm47
CisKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAg
ICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGRiNGMwMDJlY2NkMjJlNmZlOTQwODdjNjlmOTEyOGQ0Mjg5OTI3YmYuLjBkMWNhOTJk
NjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjljNzZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMzQsMTAgKzMzNCw2
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8
fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVTRShDRykgfHwgVVNFKERJUkVD
VDJEKQogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQ
YXR0ZXJuKCk7CkBAIC0zODMsNiArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmll
bnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9t
SW1hZ2UgfSk7CkBAIC02NTIsNiArNjUwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
CiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRl
eHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgQ29sb3ImKTsKIAogICAgIGZsb2F0
IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdpZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaAppbmRleCAzZDUwNzViY2VkY2JmNTAyODcxY2Q1NTA5MzVmNTFhYzhkYjJmNTVjLi4wNDA5
MjBhOGNmZGM4YWQ1NzdiODdjMjEzNWRkNmFiOGU5ZjY2NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSAwOwogI2VuZGlmCisgICAgdmlydHVhbCBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKaW5kZXggZDM5ZmVhYTgyZjM3MWNmOGFhZjc2ZDI3ZjMzNTczZjM1MTk4ZDA4
OS4uZWE0ZDYzYTk0ZWQ2Y2YwMjIzZmQ5ZWEwNTA4OGEzN2JkNzEyZDZjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zMiw4ICszMiw5IEBACiAjaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNzIsNyArNzMsNiBAQCBj
bGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRp
b25zOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4g
YW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBh
ZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZDE0NjQ5MmM0YThkZjkzNWNhZjk0YjlmYjk1NTkw
OWFhZDFjYmFmMC4uZGJlMDI1ZWU5ZTFhNDQwZjAyZWE5NjY0YTM0Zjk4YTBmNmM1MWEwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0z
Myw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIERyYXdpbmdDb250ZXh0OwogfQogCkBAIC02
NCw2ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdpbmdD
b250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmbHVzaERy
YXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQogCiAgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGMw
MTBhMGYwY2ZjZDhjNWU3YWI2Yzk0YzVjM2MzNmY0ODM4NmQwMWYuLjU4ZmMxNDgzNmQ5MmFhMjAw
MTlmMjBmZWVkYzU1NzFlOWFiNWU5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSwxMyArMzEsMTQgQEAK
ICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFl
MzViMDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmLi40MzM3ODc5MGIyMjkxZWEwMGIxMjA4
ZTBhNWNiYzk3MjlmNzcxZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLgogICoKQEAgLTI3LDUyICsyNywxNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0KLSNp
ZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJ
bWFnZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWly
by5oIgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRp
ZgotCi0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgPGQy
ZDEuaD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotI2VuZGlmCisjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEZs
b2F0UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0KLSNpZiBV
U0UoQ0cpCi10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNl
bGlmIFVTRShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFn
ZVB0cjsKLSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
TmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVk
Qml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXpl
IG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFn
ZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmds
ZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwotCiB2
b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLQot
Y2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlOwotfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3
NTE0MDcxZDA3Yzk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYg
Q09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5
cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0Uo
V0lOR0RJKQordHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNl
bmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZjU0MmRmZWM4NDdh
YmMzNzFhYTJmMWU4ZTRiOGRkOWZiMTEwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2lu
ZyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVJlc291
cmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
YTEwNDY1NmNiNWQ1ZGRlYTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1
NDg1NDQ4ZjM0YWE3NzdhZmUwNGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cApAQCAtMTIzLDE2ICsxMjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpk
cmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUu
ZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAg
IG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAg
IENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBiNjViNGQ2NDQwNmJlYjc2YzQwOWQz
ZThjNjU0OTc1Y2E5ZjdlYjYzLi4wNDg2NDI4NTFmOWQ3YjhjMzlmMWRjOTg1MzQ4M2QwYjY4ZWE1
ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4Niw2ICsy
ODYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnMKICAgICBDYWlybzo6ZHJhd05hdGl2ZUlt
YWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsg
b3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBlNWUyMDc0OGM2ZDc2MjBm
MTBjZjIxNTY2MjhlZjdlMGJlNjAxYzdiLi5kMzBiZjg2OWQ3NDYyZWY4OWU0Y2ExOGExNGYwMTI2
ZmJhNjE5NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsNyAr
NzQsOSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CisKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVhMzdjNzg2
ZWY2ZGI2ZTVhZmViOTE3Nzk4ZmE1MzFiZjk4YWM4NGQuLmMyOTJkYjQyY2MwZjlmMGY5YzQ3Yzc4
ZWQ2OWMyZDgzMzFjOTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxNiArMjgwLDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9k
YXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRy
PENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1E
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA1Y2M1YzIwN2I0NGE0ODM1
YmUyZTA4MDI4YTNhNzEwOTVhNTVlMWUwLi40MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTVi
YWRlYmRhZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBA
IENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhl
bFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsy
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQot
ewotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMg
c21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBu
YXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNl
c1dpZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBs
ZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhl
IGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFw
IGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1Jl
Y3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0g
ICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwg
c3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVj
dCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmIHNvdXJjZSkKLXsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54
KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwot
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBp
bWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7
Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAv
IHNjYWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNv
dXJjZS54KCk7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9u
LnkoKSArIHNvdXJjZS55KCk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBD
R1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5n
ZXQoKSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZv
aWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE2Mzgz
NjkyMWQ4ZGZjYTE2NjM4YmQ4NmFhOTMzZWZhN2UyNjRkODEuLmIzNTg5M2M1ODJlNDE3YzJiYjMz
NTJhNTE2ZTNjYjU5ZmUwMjQzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw4ICs2
Miw5IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAg
ICAgRHJhd1RpbGVkSW1hZ2UsCiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENH
KSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIERyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgogICAg
IERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3NGE1
YTg1NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAK
QEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVy
OjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFs
Q1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsmXShH
cmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFw
aGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxD
VE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3Bs
YXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxv
YXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAgfSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmlu
ZGV4IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZlODBh
ZDI5M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENU
TSA9IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51
bGxwdHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
Y29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3OGFj
NmJhN2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNy
ZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsK
K2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5
cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VC
dWZmZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGlj
OgogCiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFC
YWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1h
Z2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4
dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwg
bV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAg
ICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAg
ICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShz
aXplKSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29y
ZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2luZ0Nv
bnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKICAg
ICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMThk
NzBjZmJkMjQwOTg1ODY4NDQ5ZmIzNTlhOWY4NWViZGZkMzYzNi4uNzhjNzViOWQ1Y2E5NTEyOTFi
NjViOTNmZTU1ZDUyYzBlZmJiMGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0Uo
Q0cpCkBAIC0xMDYsOSArMTA1LDExIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJ
dGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdl
PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsK
LSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihp
dGVtKSk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZm
ZXI+KGl0ZW0pKTsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CkBAIC03MDMs
MzIgKzcwNCwyMSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQog
Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKIERyYXdOYXRpdmVJ
bWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQotI2lmIFVTRShDRykK
LSAgICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCiAgICAgLCBt
X2ltYWdlKGltYWdlKQotI2VuZGlmCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAg
LCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQog
ICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7Ci0jaWYgIVVTRShDRykKLSAgICBVTlVTRURfUEFS
QU0oaW1hZ2UpOwotI2VuZGlmCiB9CiAKIERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFn
ZSgpID0gZGVmYXVsdDsKIAogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSNpZiBVU0UoQ0cpCiAgICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1Jl
Y3QsIG1fb3B0aW9ucyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSNlbmRp
ZgogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpAQCAtNzM5LDYgKzcyOSwzMyBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdl
JiBpdGVtKQogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlv
blJlY3QoKSk7CiAgICAgcmV0dXJuIHRzOwogfQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
RHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgLCBt
X3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
LCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQor
ICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdJbWFnZUJ1ZmZlcjo6fkRyYXdJ
bWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhl
IGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBp
dGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0u
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNl
LXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIs
IGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KICNlbmRpZgogCiBE
cmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTQ2
OSw4ICsxNDg2LDkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTog
dHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJ
bWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtc2NhbGVkLWltYWdlIjsg
YnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1hZ2UiOyBicmVhazsKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8
PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3QiOyBicmVhazsKQEAgLTE1NzEsMTAgKzE1
ODksMTMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRl
bSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAg
ICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBi
cmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRl
bSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdJbWFn
ZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGNiNjg0ZDIzY2U3NWI0ZmFi
OWVjNDEzMTYyN2FjZDMyZDYyNGFlZGIuLjJlMzhkNzRhNWM5YzA0MmMzN2EyNzc2M2YxOTkwMTEx
Yjc2MWI1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CiAKQEAgLTE0MzIsNyArMTQzMyw2IEBAIE9wdGlvbmFsPFJlZjxEcmF3VGlsZWRT
Y2FsZWRJbWFnZT4+IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
CiAgICAgcmV0dXJuIERyYXdUaWxlZFNjYWxlZEltYWdlOjpjcmVhdGUoKmltYWdlSGFuZGxlLT5p
bWFnZSwgKmRlc3RpbmF0aW9uLCAqc291cmNlLCAqdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsICppbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykgfHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdp
bmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNDU1LDkgKzE0NTUsNyBAQCBw
cml2YXRlOgogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsg
fQogCi0jaWYgVVNFKENHKQogICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0jZW5kaWYKICAg
ICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0
OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNDY3LDEwICsxNDY1LDcgQEAgcHJpdmF0
ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdl
SGFuZGxlIGhhbmRsZSB7IG1faW1hZ2UgfTsKLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKLSNlbmRp
ZgorICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwog
ICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3NyY1Jl
Y3Q7CkBAIC0xNDgwLDEyICsxNDc1LDEwIEBAIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBPcHRpb25h
bDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSNpZiBVU0UoQ0cpCi0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VIYW5kbGU+
IGhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGhhbmRsZTsKLSAgICBpZiAoIWhhbmRsZSkKKyAgICBP
cHRpb25hbDxOYXRpdmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgZGVjb2RlciA+PiBpbWFnZTsKKyAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAKICAg
ICBPcHRpb25hbDxGbG9hdFNpemU+IGltYWdlU2l6ZTsKICAgICBkZWNvZGVyID4+IGltYWdlU2l6
ZTsKQEAgLTE1MDcsMTQgKzE1MDAsNzUgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+
IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcHRp
b25zKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0jaWYgVVNFKENHKQotICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlID0gaGFuZGxlLT5pbWFnZTsKLSNlbHNlCi0gICAgTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UgPSBudWxscHRyOwotI2VuZGlmCi0gICAgcmV0dXJuIERyYXdOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwg
Km9wdGlvbnMpOworICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICpp
bWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CiB9Ci0jZW5k
aWYKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKK2NsYXNzIERyYXdJbWFnZUJ1ZmZlciA6IHB1
YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEcmF3SW1hZ2VCdWZm
ZXI+IGNyZWF0ZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3SW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+RHJhd0ltYWdlQnVmZmVyKCk7CisKKyAgICBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gZGVj
b2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3SW1hZ2VC
dWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAg
RmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7Cisg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOworfTsKKwordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgRHJhd0ltYWdlQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAg
IGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7
CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGlu
YXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9u
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBzb3VyY2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0
aW9ucz4gb3B0aW9uczsKKyAgICBkZWNvZGVyID4+IG9wdGlvbnM7CisgICAgaWYgKCFvcHRpb25z
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIERyYXdJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKCpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsICpkZXN0aW5hdGlvbiwgKnNv
dXJjZSwgKm9wdGlvbnMpOworfQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogY2xh
c3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgpAQCAtMjk3Mywx
MCArMzAyNywxMyBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFr
OwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERy
YXdOYXRpdmVJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBlbmNv
ZGVyIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMpOworICAgICAgICBicmVhazsK
ICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhpcyk7CkBAIC0zMTY0LDExICszMjIxLDE1IEBA
IE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKGRlY29kZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3Zl
KCppdGVtKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBV
U0UoRElSRUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAg
ICBpZiAoYXV0byBpdGVtID0gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0p
KTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdJbWFn
ZUJ1ZmZlcjo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZl
cmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQpAQCAtMzMyNiw4ICszMzg3LDkgQEAgU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdHbHlwaHMpCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZEltYWdlKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZFNjYWxlZEltYWdlKQotI2lmIFVT
RShDRykgfHwgVVNFKENBSVJPKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKERyYXdOYXRpdmVJbWFnZSkKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQogI2VuZGlmCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1BhdHRlcm4pCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1JlY3QpCkBAIC0zMzg4LDgg
KzM0NTAsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0ltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkSW1h
Z2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJ
bWFnZSwKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlciwKICNlbmRpZgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVj
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkZDM1ZWYx
YTI4YTkwNzFkYWVmOWEwYThkNzdkOTg0MDFlYTA4MDFkLi45MzU4ZjZlYzc1OTAzMjk1NWIyNjgw
ZjkzNTI5M2NlZWEyNjI5NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC0zNywxMCArMzcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGluaXRpYWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRl
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0
ZSkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmlu
ZVRyYW5zZm9ybSgpKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1f
b2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExP
R19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBj
bGlwICIgPDwgaW5pdGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwg
aW5pdGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CkBAIC01MiwxNSArNTIsMTUgQEAgUmVjb3JkZXI6
On5SZWNvcmRlcigpCiAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlz
dDpcbiVzIiwgbV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9CiAKLXZvaWQg
UmVjb3JkZXI6OnB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlu
cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2lu
dCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZWNv
cmRlcjo6cHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNv
bnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiB7
Ci0gICAgYXBwZW5kSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpjcmVh
dGUoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0
KSk7CisgICAgYXBwZW5kSXRlbShQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1h
Z2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKIH0KIAogdm9pZCBSZWNv
cmRlcjo6d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsKLSAgICBpZiAobV9vYnNl
cnZlcikKLSAgICAgICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CisgICAgaWYg
KG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtKGl0ZW0pOwog
CiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpAQCAtMTMyLDEyICsx
MzIsMjMgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWRSZWNvcmQ7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQogdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0
aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucykpOwogfQotI2VuZGlmCisKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBpZiAoIW1fZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRv
IGl0ZW0gPSBtX2RlbGVnYXRlLT5jcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkgeworICAgICAgICBhcHBlbmRJdGVtQW5kVXBkYXRl
RXh0ZW50KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxEcmF3aW5nSXRlbT4oaXRlbS5yZWxlYXNlTm9u
TnVsbCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggOWVlMWQz
OTM4ZjIzMmYzZjE4ZDk3OGFmNzE4NzAxZDhiZTQ2MzA3Mi4uZmUxYjkwMDYyMTQ5Nzc2ZDhkMjBi
Zjc4M2UzMzE2ZDFjZjMwMDVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdl
OjpUaWxlUnVsZS4KKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNTMs
OCArNTQsOCBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRJbXBsIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIE9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNzIERlbGVnYXRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKQEAgLTYzLDkgKzY0
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8
RHJhd2luZ0l0ZW0+JiYpOwogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVn
YXRlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+
IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0
ZW0mKSB7IH07CiAgICAgfTsKIApAQCAtMTA0LDkgKzEwNiw5IEBAIHByaXZhdGU6CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShE
SVJFQ1QyRCkKKwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwotI2VuZGlmCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJU
aGlja25lc3MpIG92ZXJyaWRlOwpAQCAtMTg4LDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgQ29u
dGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAogICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlM
aXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVyOworICAgIERlbGVnYXRlKiBtX2RlbGVnYXRl
OwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1fc3RhdGVTdGFjazsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJ
bWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCAxOGI0ZjhkZTk3MTcwY2U2NDRl
YjY0YmUzZWFiODU3ZjNhNzQzMmY0Li42Mjk4Y2YzNjA3M2M3YWU0NGY0M2M2YjU2NDQyMmIzN2I4
NmNmMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJQaXBlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29u
dGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1M
YXllci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCmluZGV4IDMwNGZhY2JhYjE1MjE3OTFkYWE4NmRiMTUzMTc1M2UzODY3MTA4NGQuLjRlMjRl
ZWJhZGI2NTg3YmFjNjJhMWYxNWQ1MWY2Zjg3NmNkYmI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NzAsNiAr
NTcwLDEyIEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSkpOwogfQogCitib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERy
YXdQYXR0ZXJuIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggNTcy
ZmYyMTY2ZjZlOTczYTc2M2I2N2NiNmJiOTZmNDNmMjZhOGQ1MC4uMzgwOTNkNDEzNWI0ZDdiNjUx
MWExNjA4N2FmZjEzZjYwM2VkMTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjcsNiArNjcsOCBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxl
LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAg
Ym9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCAzNzQwNzE3
MTViY2I3OTFkNTg5ZDUwZDk5YjI5YzY2YjAxMGI3MDgxLi41N2JhODU4ZmY5OWMyZGIyOWY1ZDkx
NDkyZTZhYWM4ZWQ5NzRlYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAg
LTIwNywxNiArMjA3LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1T
dGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFC
aXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0
aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwp
IHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
QVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0
YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0
ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzZTI0N2E3YWQ0Y2QyOTUzOGU0ZWFmNDBiZDgwMzY5Njg2MDA4Yjg2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
aCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllcikKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKLSAgICAsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKGltYWdlQnVmZmVy
SWRlbnRpZmllcikKLXsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHk6OmNyZWF0ZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQotewotICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCBtX2ltYWdlQnVm
ZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
IGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZs
dXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGQwNWVhZWY1NDk0MTZmZGI2NDI1OTUyZTBiNGNm
M2FhMjA1ZWMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUg
IkltYWdlQnVmZmVySWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zs
b2F0U2l6ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gOiB1aW50OF90OwotY2xhc3MgSW1hZ2VEYXRhOwotfQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotCi1jbGFzcyBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkgewotcHVibGljOgotICAgIHZpcnR1
YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSgpID0gZGVmYXVsdDsKLQot
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluLgotICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcikgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzcmNSZWN0KSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jiwg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNl
ZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluLgotICAgIHZvaWQgY3JlYXRlQmFj
a2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwotICAgIHZvaWQgY29tbWl0Rmx1
c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgYmFja2VuZCgpIHsgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4
IDc3MjFjY2U4NDU2MjY5YWVmOTAyMGI4YmQ4OTY1ZGQzNWI3MjJkZGMuLjFkMWI1ZWU4ZmNmMDdl
ZmMzMjlkNzk4MWYzYjBhMWFjMmVmYmU3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjgs
MjkgKzI4LDI5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFj
a2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LCBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSB7CitjbGFzcyBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpE
ZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6Y29udGV4dDsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6
bV9iYWNrZW5kOworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURh
dGE7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0
ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIGltYWdlQnVm
ZmVySWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6
dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAg
ICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCkpCi0gICAgICAgICwg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7Ci0gICAg
ICAgIGNyZWF0ZUJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJh
Y2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29s
b3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpKTsK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVtb3RlQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5k
U2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3Bh
Y2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSgpCkBAIC02Miw5ICs2Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQ7Ci0gICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKLQogICAgIHZvaWQgZmx1
c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0
ZW1Db3VudCgpKSB7CkBAIC03MywxOCArNzAsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGZsdXNo
RHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOwotICAgICAgICBtX2JhY2tlbmQtPmZsdXNoQ29u
dGV4dCgpOwotICAgICAgICBjb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKLSAg
ICB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3Qp
OwotICAgIH0KLQogICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mIGl0
ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlB1dEltYWdlRGF0YSkgewpAQCAtOTgsMTIgKzgzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmFwcGx5UmVzb3VyY2VJdGVt
KGl0ZW0sIGNvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgYXV0byBwcm9jZXNzID0gYmFja2VuZCgpLmdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKyAgICAgICAgYXV0byBwcm9jZXNzID0gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogICAgICAg
ICBpZiAoIXByb2Nlc3MpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNyw2ICsxMDIsOCBA
QCBwcml2YXRlOgogCiAgICAgICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIs
IGl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgfQorCisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3NTNhNWM4
YmE5N2ZlNzIwODMxMDU4ZTg0YzVjZDgzYjRiMTc1NTc5Li5jYTMyNjI0MzIxNzcwNTlmYmNmNTQy
ZjExYjAzNjYyOTc4YmJlZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApA
QCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDYgKzU0LDExIEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCiAgICAgICAgIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAK
K0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKK30KKwogSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsK
ICAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKQEAgLTY2LDY0ICs3MSw0MSBAQCB1aW50NjRfdCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QK
ICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbShEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Ci0gICAgaWYgKCFncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVySWRlbnRpZmllcikp
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVy
YXRlZCkgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVySWRlbnRpZmllciwg
V1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNj
ZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2Vs
ZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCAqdGhpcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAgICAgICAg
ICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBtX3JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5hcHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0KTsKIH0K
IAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIgbWVzc2FnZSBzaG91bGQg
aGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAgICBib29sIGZvdW5kID0gbV9p
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
OwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNp
emUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFu
ZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6
OkludFJlY3Qgc3JjUmVjdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIGF1
dG8gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNy
Y1JlY3QpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKLSAgICB9CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3JlYXRlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdl
dChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3
aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElk
ZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5n
ZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIGZsdXNoSWRlbnRpZmllcik7CisgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChk
aXNwbGF5TGlzdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChm
bHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwogfQogCi1HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNS
ZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Z2V0KCk7CisgICAgYXV0byBpbWFnZURhdGEgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5n
ZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlKFdURk1v
dmUoaW1hZ2VEYXRhKSkpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkucmVsZWFz
ZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IGEwOTUyYmFm
YjNjMTUzMmQ3ZGM5OTAwNmViNDBmMzFiZjkxZDI1M2IuLjlmNjhmMmI0NzM3ZWQzNGRmMTk2ODI5
NGVhMDM3MDBmYTdjNTcwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTI4
LDI0ICsyOCwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlICJS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiB9CitjbGFzcyBGbG9hdFNpemU7
CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBSZW5kZXJpbmdN
b2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw4ICs1OSwxMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9
CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpIGNvbnN0OworICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKworICAgIC8vIE1lc3NhZ2Vz
IHRvIGJlIHNlbnQuCisgICAgdm9pZCByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAt
NzQsMTQgKzc3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAg
IHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgcmVsZWFz
ZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaEltYWdl
QnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJE
cmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+
JiYpOwotCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hNYXA8
SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5Pj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaEltYWdlQnVmZmVy
RHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNoSW1hZ2VC
dWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9
OwogICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggNzk4YzhiNGVkYjU3ZjVhZDA4MmJhODFjMTAwOGIwZGNkZWZk
ZjE4YS4uMjZjZjEzNjFmZGFiMGViMGQzZmFmNzdlNWY3ZDJkMWM1NmY5NDBiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMywxMSArMjMs
MTEgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVm
ZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKQotICAgIHZvaWQgUmVsZWFzZUltYWdlQnVmZmVyKFdlYktpdDo6SW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIEZsdXNoSW1hZ2VC
dWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlz
cGxheUxpc3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllcikKLSAgICB2b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYktpdDo6SW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVm
ZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgR2V0SW1hZ2VEYXRhKGVu
dW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
V2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURh
dGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9h
dFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
CisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1
ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVz
aElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCisgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNS
ZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91
cworICAgIHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjll
OWI4NGM2NzBlOWI4NGEyNTUyOGNjZGJlYmM3MzE4ZmE4NDU0NzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkK
K3sKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKG1f
cmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlOwor
CisgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0
ZWQpCisgICAgICAgIGltYWdlID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpj
cmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBp
ZiAoIWltYWdlIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2Nl
bGVyYXRlZCkKKyAgICAgICAgaW1hZ2UgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
CisgICAgaWYgKGltYWdlKSB7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFk
ZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitJbWFnZUJ1ZmZl
ciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBt
X3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkg
eworICAgICAgICBpbWFnZS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAg
ICAgIHJldHVybiBpbWFnZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0ltYWdl
QnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRD
b21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAo
YXV0byBpbWFnZSA9IGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgaW1hZ2UtPmZsdXNoQ29udGV4dCgpOworICAgICAg
ICByZXR1cm4gaW1hZ2U7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8
SW1hZ2VEYXRhPiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgY29uc3QKK3sK
KyAgICBpZiAoYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmdldEltYWdlRGF0
YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29s
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd0ltYWdlQnVmZmVySXRlbShjb25zdCBEaXNw
bGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorewor
ICAgIGF1dG8mIGRyYXdJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlciY+KGl0ZW0pOworICAgIGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVy
SGFzaE1hcC5nZXQoZHJhd0l0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIGlm
ICghaW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlLT5kcmF3KGNvbnRl
eHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0
ZW0ub3B0aW9ucygpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBp
dGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgaWYgKGl0ZW0udHlw
ZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZHJhd0ltYWdlQnVmZmVySXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
K3sKKyAgICBpZiAobV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBDYWNoaW5nIHRoZSByZW1v
dGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmM1MzAxZDAyZWVlODVlYWJlMWU5N2UxZDA1Y2VmYzNhMzc1MDczZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
RGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQorfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Owor
CitjbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeworcHVibGljOgorICAgIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKKworICAgIHZv
aWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFdl
YkNvcmU6OkltYWdlQnVmZmVyKiBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21t
aXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBn
ZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikgY29uc3Q7CisKKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29u
c3Q7CisKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVy
SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKworICAgIGJvb2wgZHJhd0ltYWdl
QnVmZmVySXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OworCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwIG1f
cmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4
IDQwMTdhMmE4ZjIyY2VjZWNjMjE1MWEzMGEzMjc4ZmY5MDZlYWYzMmEuLjY3NDhkMWY1ZDgwMGQ5
NTc0ZjIzODA3NWIxODkwYjRlNGFjZWU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAppbmRl
eCA5NzdmOTNmZjVjM2MyYjgxNzg0NmM5YTlhNzU1MTc4OWM4ZWZlMDVjLi42MWI4OTBkYzc4Njdj
MzNiMDA1ZjIyZTkzYmIxYWY0N2RkZDNiMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRl
Y29kZXIuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVk
ZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2Vz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBmYWNkMmY3
YWZiNWEzOTJlZTIwOTY3YTc2ZmQ0MWUxNGRmYjE1MGI5Li4xNThjNGVmOTdjMmU5OWI4NzY2Nzkz
NmViNDBhNWUxODc4ZDE4YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTIxNywxMSArMjE3LDEzIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKICAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAogICAgICAg
ICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyJywK
KyAgICAgICAgJ1dlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVy
JywKQEAgLTI0MCw3ICsyNDIsNiBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0
OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJLaXQ6OkltYWdlQnVm
ZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcs
CiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLAogICAgICAgICAnV2Vi
S2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZTBiYmJiYzViYTIzMThiZmE4ZTYz
MTk2ZDU0ZWViYjg5MDM2NDQ0MS4uYTA3NzUzMDk1N2JhOGQ0N2Q1NDI5YmFkZDY2NzU3NTU0ZDA2
MjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUmIGltYWdlSGFuZAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBl
bmNvZGVyLCBOYXRpdmVJbWFnZVB0ciBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUlt
YWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKICAg
ICBhdXRvIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CiAgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CkBA
IC0xMTQzLDcgKzExNDMsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
TmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXIm
IGVuY29kZXIsIE5hdGl2ZUltYWdlUHRyIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9u
YWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCiB7CiAgICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7CiAgICAgZW5jb2RlciA8PCBoYXNJ
bWFnZTsKQEAgLTExNjYsMTQgKzExNjYsMTQgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXYKICAg
ICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCi12b2lkIEFy
Z3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdlSGFuZGxlKQordm9pZCBBcmd1bWVudENvZGVy
PE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIs
IGltYWdlSGFuZGxlLmltYWdlLmdldCgpKTsKKyAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdl
KGVuY29kZXIsIGltYWdlKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFu
ZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlSGFuZGxlJiBpbWFnZUhh
bmRsZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU9w
dGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UpOworICAgIHJldHVy
biBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKIH0KIAogdm9pZCBB
cmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
ZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDA1ZDAzNTU0YjllY2E5YTA0MWMzNjhlZjQ1Mzg4MjQ0MzRj
ZTZlMjMuLjlmM2IxMDY2OTMzM2JhMzAxNTI5NzgzYzllMWU5MWVhYmE0Y2FiODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
cHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtMTA1LDcg
KzEwNiw2IEBAIGNsYXNzIEtleWZyYW1lVmFsdWVMaXN0OwogY2xhc3MgTGF5b3V0U2l6ZTsKIGNs
YXNzIExheW91dFBvaW50OwogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb247Ci1jbGFzcyBOYXRp
dmVJbWFnZUhhbmRsZTsKIGNsYXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0
b21EYXRhOwogY2xhc3MgUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKQEAgLTQxNiw5
ICs0MTYsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdl
SGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGU+IHsKLSAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFuZGxlJik7Ci0g
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CisgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIm
KTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAKaW5kZXggNzMwZGE2NDhmMmIyZmU5ZTc4NGZkMDQwNTJlMTkwZjBkMGJmMjFhZC4uOTU5
ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTA2LDEyICsxMDYsMjcgQEAg
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQoKQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBkcmF3TmF0aXZlSW1hZ2UobWFrZUNHSW1hZ2VD
b3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOworICAgIHBhaW50KGNvbnRl
eHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3Rv
ciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCiB7
Ci0gICAgZHJhd05hdGl2ZUltYWdlKG1ha2VDR0ltYWdlQ29weSgpLCBjb250ZXh0LCBzY2FsZUZh
Y3RvciwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9
IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0Nv
bnRleHQpOworCisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjZ0NvbnRleHQsIENHUmVjdE1ha2Uo
ZGVzdGluYXRpb24ueCgpLCBkZXN0aW5hdGlvbi55KCksIHNvdXJjZS53aWR0aCgpLCBzb3VyY2Uu
aGVpZ2h0KCkpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKKwor
ICAgIGF1dG8gaW1hZ2UgPSBtYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICBDR0Zsb2F0IGltYWdlSGVp
Z2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgLyBzY2FsZUZhY3RvcjsKKyAgICBD
R0Zsb2F0IGltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVG
YWN0b3I7CisKKyAgICBDR0Zsb2F0IGRlc3RYID0gZGVzdGluYXRpb24ueCgpIC0gc291cmNlLngo
KTsKKyAgICBDR0Zsb2F0IGRlc3RZID0gLWltYWdlSGVpZ2h0IC0gZGVzdGluYXRpb24ueSgpICsg
c291cmNlLnkoKTsKKworICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1h
a2UoZGVzdFgsIGRlc3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsK
KworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKIH0KIAogUmV0YWluUHRy
PENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2VDb3B5KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IGRhZjVmYjczMTNiZGQ5ODA2OGRlZGQzOWNiYWM0ZGZiZTkzNzdjYTguLjhlM2IyYWZm
Y2EwMDM0YjMyNmRhOWIyMTk4Yzg1Nzk3NGUwNDkxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsOCAr
MjQsOCBAQAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCkBAIC01NTIsOCArNTUyLDggQEAgV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAK
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAotV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAKIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCitXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5ODQzNGNiYWMwYzJmNjFhMmQ2ZTI4MDcxNmVjZDcyODgy
ODg5MjgyLi4yYThjNDJhNWFiZTQxNWJmOWQxMWM3YjBiM2VmNzE4ODAyYjIwYzBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4ODks
NyArMzg4OSw2IEBACiAJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTMyNDA3
MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDQy
NDA4QUJCMzAwREU0RDJGIC8qIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00MTc4LDEwICs0MTc3LDcgQEAKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1
IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsg
cGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2lt
dWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyog
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBDMjQw
OTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcy
Mjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMTIyNDA5
OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNTI0MDc4NTdGMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE5MSw2ICs0MTg3LDEwIEBACiAJCTcyN0E3
RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhF
ODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2Vy
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQ
aWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUQwNTMyMjUzMTRG
RUYwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzI5RDA1MzMyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzUyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90
ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUQwNTM2MjUzMTczQ0MwMDQy
MjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291
cmNlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5
RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9y
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5
QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04MDc2LDE3ICs4MDc2LDE3IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUy
NzAwNEQyOTMxIC8qIGNvY29hICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk1NUFEMDk0NDI0MDhBQkIzMDBERTRE
MkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLywKLQkJCQk1NTA2NDBBNTI0MDcx
Q0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzcy
NDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAg
Ki8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0
Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJE
N0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNzI3QTdG
NDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCi0JCQkJNzIyNzgw
MEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3Bw
ICovLAogCQkJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyLmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFF
MDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1
MzUyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovLAorCQkJCTcy
OUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8sCiAJCQkJ
NTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpAQCAtODA5NiwxMiArODA5NiwxMiBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1NUFEMDk0MzI0MDhBMEU2
MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCi0JCQkJNzIy
NzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5jcHAgKi8sCi0JCQkJNzIyNzgwMTIyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovLAogCQkJCTU1QUQwOTQyMjQwOEEwMkUwMERF
NEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2
MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUw
NjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICov
LAogCQkJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1MzIyNTMxNEZFRjAwNDIyMDk4IC8qIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8sCisJCQkJNzI5RDA1MzMyNTMxNEZFRjAwNDIy
MDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBn
cmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZp
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWExYmM5YWU4N2RjOGQ3MjQyOGEw
YjgwOWNhZDBkODBhNGNkMWNiOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVySWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gSW1h
Z2VCdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJbWFnZUJ1ZmZlcklkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPEltYWdlQnVmZmVySWRlbnRpZmllclR5cGU+OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4N2VmMmM3OGY5MDc2ZTFkNDM4MjE5MWYyLi4w
OGExZGVhZWEwYTY0MGY0NzI3NTc4YmU4MzM3MjczOTQ1MjdiNTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBS
ZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7
CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUg
ewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwpAQCAtNTMsMTQgKzUzLDIwIEBAIHB1YmxpYzoKIAog
ICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5n
Q29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VJbWFn
ZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3RlZDoKICAgICBSZW1vdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSkKLSAgICAgICAg
LCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAg
ICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgICAgICAsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdN
b2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIHZvaWQgY3Jl
YXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpIG92ZXJyaWRlCkBAIC02OSwyMiArNzUsNTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2Jh
Y2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgIH0KICAgICAK
LSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jh
Y2tlbmQuZ2V0KCk7IH0KLQogICAgIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1fYmFja2VuZCkKLSAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXImPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOworICAg
ICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAKKyAgICB2
b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaERyYXdpbmdD
b250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgfQorCisg
ICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1
dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOworICAgICAg
ICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENv
bW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29u
dGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VSZW1vdGVD
bGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBkaXNwbGF5TGlzdC5j
bGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisgICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVy
cmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IGNv
bnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+bV9kcmF3aW5nQ29udGV4dC5kaXNw
bGF5TGlzdCgpOwotICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcykt
PlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlz
cGxheUxpc3QpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VC
dWZmZXIqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VE
YXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVt
Q291bnQoKSkgeworICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRo
aXMpLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgIGRpc3Bs
YXlMaXN0LmNsZWFyKCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBnZXRJbWFnZURhdGEgaXMg
c3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgdGhlIENvbW1p
dEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCi0gICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3Zl
cnJpZGUKQEAgLTk1LDI2ICsxMjksMjUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2RyYXdpbmdD
b250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNy
Y1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaENv
bnRleHQoKSBvdmVycmlkZQorICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4g
Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
IG92ZXJyaWRlCiAgICAgewotICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7Ci0gICAgICAg
IG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1hZ2Us
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlz
dCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpCi0gICAgICAgICAgICBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0QW5kV2Fp
dENvbW1pdChkaXNwbGF5TGlzdCk7Ci0gICAgfQotICAgIAogICAgIHZvaWQgd2lsbEFwcGVuZEl0
ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSA9IDUxMjsKICAgICAg
ICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0g
ICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+PSBEaXNwbGF5TGlzdEJhdGNoU2l6
ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJh
d2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNv
dW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KGRpc3Bs
YXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKICAgICB9CisKKyAgICBXZWFr
UHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKyAg
ICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3NzE1MGM3YjA3OTNhZmU5YWM1YzgzYTlhYzc0NmJhMzE4ZTUxYjhmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCIKLQotI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgotI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJ
dGVtcy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsK
LSAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigp
Ci17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KLSAgICBpZiAo
IW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1S
ZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRh
UmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1h
dCwgc3JjUmVjdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5j
ZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
KSwgMV9zKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOwotfQotCi12
b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OndhaXRGb3JDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoKQotewotICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgJiYgIWlz
QmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0
Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCkK
LXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYmIGlzUGVuZGluZ0ZsdXNoKCkp
Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNvbW1pdEltYWdlQnVm
ZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1hZ2VCdWZmZXJE
cmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAg
IGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fc2VudEZsdXNoSWRlbnRpZmll
ciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3Qs
IG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRp
c3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250
ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0
Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikK
LXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggNjIwNDE4
ZDc4YzI3ZjI4YzU3NDkwMmMyZTFiYTlhMjM3MTc1MTdiOS4uNjFkZDU4Y2U1MmZkY2VkNGYxODRh
ZjBlYTY3OTdiMjY2Mjc1YTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyLmgKQEAgLTI5LDUwICsyOSwzMSBAQAogCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIK
LSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBJbWFnZURhdGE7CiBlbnVtIGNs
YXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OworZW51bSBjbGFzcyBDb2xvclNw
YWNlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7Ci0KIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIg
ewogcHVibGljOgotICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIo
KTsKLQotICAgIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsgfQotCiAgICAgLy8gTWVzc2Fn
ZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
LgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSkgPSAwOwogCi0gICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0JhY2tlbmRDcmVhdGVkKCkg
Y29uc3QgPSAwOwogICAgIGJvb2wgaXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVybiBtX3Nl
bnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0KSBjb25zdDsKLQotICAgIHZvaWQgd2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
OwotICAgIHZvaWQgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7CisgICAg
dm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJ
ZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZs
dXNoSWRlbnRpZmllcjsKKyAgICB9CiAKLSAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LiBTZWUg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluLgotICAgIHZvaWQgZmx1c2hE
cmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLSAgICB2
b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotICAgIEltYWdlQnVmZmVySWRlbnRp
ZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllciB7IEltYWdlQnVmZmVySWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSB9OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
ciBtX3NlbnRGbHVzaElkZW50aWZpZXI7CiAgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIg
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CmluZGV4IDk5NTM0MTc4N2VkYTIwYTU1NGU0ZDY3YmE1M2RjNjk4YTUzNzBjYzAuLjFhMDRhOWU0
NWE5ZGUwZWQ4YmQ1YjNkMzg0MzAzMTZhZDBlM2Y4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcApAQCAtODgsMzggKzg4LDYzIEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCkKIAogc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Ci0gICAg
aWYgKHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzKSB7Ci0gICAgICAg
IGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCksIGlt
YWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAgICAg
ICAgfQotICAgIH0KKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHNob3VsZEFjY2VsZXJhdGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiBpbWFnZSkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFz
ZUltYWdlQnVmZmVyKGltYWdlKTsKK30KKworUmVmUHRyPERpc3BsYXlMaXN0OjpJdGVtPiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKEltYWdlQnVmZmVy
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKGltYWdlLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucywgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CiAKLSAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1
ZmZlci5nZXQoKSk7Ci0gICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAgICB9Cit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLnJlbGVhc2VSZW1vdGVDbGllbnQocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CiAK
LSAgICByZXR1cm4gbnVsbHB0cjsKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpyZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNy
ZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30KKworUmVm
UHRyPEltYWdlRGF0YT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNS
ZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
eworICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURh
dGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGE6OlJlcGx5KGlt
YWdlRGF0YVJlZmVyZW5jZSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcyk7Cisg
ICAgcmV0dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKK30KKwordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoZGlzcGxh
eUxpc3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOworfQorCitJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBzZW50
Rmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VudEZsdXNoSWRlbnRpZmllcjsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZm
ZXIgbWVzc2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAg
ICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VSZW1v
dGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6
ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1
ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dp
Y2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92
ZShoYW5kbGUpKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQo
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAg
IGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBt
X3JlbW90ZVJlc291cmNlQ2FjaGUuY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoZmx1c2hJ
ZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggZjQ5NjE1OGU3ZDQwZWVi
MDVhYzM5NDM0YWYyNDYzM2JhYmM3ZjBlZi4uOTZlZmU3Yzc1NGZmN2NlMDY0OTM3ZmIzYmU3MDU4
M2RlNzdkZjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTI5LDE4ICsyOSwy
NCBAQAogCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIgor
I2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
RGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQorY2xhc3Mg
RmxvYXRTaXplOworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3Mg
UmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCkBAIC01Miw4ICs1OCw2IEBAIHB1YmxpYzoKIAogICAg
IH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAKLSAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXI7IH0KLQogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTYxLDIxICs2NSwzMCBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJD
b3JlOjpTaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UpOwotICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRp
Zmllcik7Ci0KICAgICBib29sIHdhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAg
ICBib29sIHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgICAgICAK
KyAgICAvLyBSZXNvdWNlIGNhY2hlLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlKTsKKyAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJh
d0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KKyAg
ICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiByZW1vdGVHZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3Qs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVGbHVz
aERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgSW1hZ2VCdWZmZXJGbHVz
aElkZW50aWZpZXIgcmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCgpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9p
ZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVz
aENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmll
cik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZv
aWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZlcklkZW50aWZpZXIs
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIqPjsKLSAgICBJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICBSZW1vdGVS
ZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSB7ICp0aGlzIH07CiAgICAgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMTJhN2JmOGRhNGM4MjU3MGJj
YTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdlOGExMjAzZjI2ODY1MmEwMGZjMWY3YjE3ZGE1
OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMg
LT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIENyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNv
cmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmll
cikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VC
dWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVy
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRT
aXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoV2ViS2l0OjpJbWFnZUJ1
ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YTg2YzE3ZTNhZWE4YWMyNDJmZGM5NGQ3MmFlMDNjNDQyZGU5N2MzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291
cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAoc2hvdWxkQWNjZWxlcmF0
ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZl
ckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLmdldCgpLCBpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigp
LCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVu
YWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKSkgeworICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQoaW1h
Z2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRkKGlt
YWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkp
OworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVy
LT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVEcmF3SW1h
Z2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgPSBmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoaW1hZ2UsIHJlbW90
ZUNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGbHVzaCB0aGUgRHJhd2luZ0NvbnRleHQg
b2YgdGhlIHNvdXJjZSBJbWFnZUJ1ZmZlciBzbyB0aGlzIEltYWdlQnVmZmVyIGdldHMgYW4gdXBk
YXRlZCBpbWFnZS4KKyAgICBpbWFnZS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZShyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKworUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9t
IHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNob3VsZCBoYXZlIGJl
ZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9vbCBmb3VuZCA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworCisgICAg
Ly8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0
J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5k
aW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXIm
IGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZm
ZXJIYXNoTWFwLmdldCgmaW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6YWRkUmVt
b3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQorewor
ICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQiIGRlcGVuZGVuY3kgaW4gbV9yZW1vdGVS
ZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8mIGNsaWVudHMgPSBtX3JlbW90ZVJlc291
cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgWyZdIHsK
KyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAgfSkuaXRlcmF0b3It
PnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1Jl
bW92ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVh
c2VIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOworCisgICAgLy8g
SWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY3kgYmVm
b3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgbW92ZSB0aGlzCisgICAgLy8g
ZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1h
cC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2FjaGUuCisgICAgaWYg
KG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5jb250YWlucyhyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNl
SGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBtX3JlbW90ZVJlc291cmNlQ2xp
ZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPFJlbW90ZVJlc291cmNl
SWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIFZl
Y3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlQ2xpZW50c1RvQmVS
ZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVu
ZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRv
JiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgeworICAgICAgICBwYWlyLnZh
bHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKHBhaXIudmFs
dWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92
ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gYSBsaXN0IG9mIHRo
ZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUNsaWVu
dHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVt
b3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KQoreworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNp
ZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRvIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291
cmNlQ2xpZW50c0hhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBtX3Jl
bW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5j
aWVzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisg
ICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVu
dChtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcCwgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJlZmVyZW5jZWQgcmVz
b3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAu
CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLnJl
bW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFRlbGwgdGhlIEdQ
VSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ4
YTk1NGQ4ZGM5YjViNjgzYWEwNjg2NzNjMWU2ZjhjMTFiZDdkZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIEl0ZW07Cit9CitlbnVtIGNsYXNz
IENvbG9yU3BhY2UgOiB1aW50OF90OworY2xhc3MgQ29sb3I7CitjbGFzcyBGbG9hdFJlY3Q7Citj
bGFzcyBGbG9hdFNpemU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsK
KworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0ZURyYXdJ
bWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZWxl
YXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKTsKKyAgICB2b2lkIHJlbGVhc2VS
ZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVu
dElkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUNsaWVudHNIYXNoU2V0
ID0gSGFzaFNldDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIHVzaW5n
IFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6SW1hZ2VCdWZmZXIq
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIHVzaW5nIFJlbW90ZVJl
c291cmNlQ2xpZW50c0hhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciwgUmVtb3RlQ2xpZW50c0hhc2hTZXQ+OworICAgIHVzaW5nIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIqPjsKKworICAgIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworCisgICAgdm9pZCBhZGRSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRl
bnRpZmllcik7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4g
cmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAg
dm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNl
Q2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hN
YXA7CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAgbV9yZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcDsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDFh
ZTUxNTcyNTM2MWQyMjgyMTkxNGFlZDBmMjhiYjE2ZTc2MzU4ZmYuLjMwMDUwYWMwN2RjOWFkNWM4
M2YzZGUyODMyOTA2YTk4NzQxMGQzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShHQU1FUEFEKQogCiAjaW5jbHVkZSAiR2FtZXBhZERhdGEuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViR2FtZXBhZC5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411042</attachid>
            <date>2020-10-11 01:55:19 -0700</date>
            <delta_ts>2020-10-17 01:48:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217573-20201011015518.patch</filename>
            <type>text/plain</type>
            <size>174345</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMxYWE4Njk0MDM0ZjFl
ZDg1MGRmZjdlYzFlNmViYThkZTNiNGJiZS4uYjkzNDM2NGYzMjRmYTRhOTg4YjAyODM3YTM3Y2E2
YTNjNzI1Y2NmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NyBAQAorMjAyMC0xMC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gQ2xlYW4gdGhlIERpc3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1h
Z2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBs
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVy
OjpEcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05h
dGl2ZUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0ltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6c291cmNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlc3Rp
bmF0aW9uUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0lt
YWdlQnVmZmVyOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTogRGVs
ZXRlZC4KKworMjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlMaXN0OjpE
cmF3SW1hZ2VCdWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGluIHRoZSBXZWIgUHJvY2VzcyBpcyB0aGUgZm9sbG93
aW5nOgorCisgICAgICAgIC0tIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkgdXNl
cyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgdG8gY2hlY2sKKyAgICAgICAgICAgd2hldGhlciBpdCBp
cyBhcHByb3ByaWF0ZSB0byBjcmVhdGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0gb3Igbm90LgorCisg
ICAgICAgIC0tIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKCkgdXNlcyB0
aGUgZGVsZWdhdGUgdG8gdG8gY3JlYXRlCisgICAgICAgICAgIHRoZSBEcmF3SW1hZ2VCdWZmZXIg
aXRlbS4KKworICAgICAgICAtLSBTaW5jZSBSZW1vdGVJbWFnZUJ1ZmZlciBpbmhlcml0cyBEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlLCAKKyAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZm
ZXI6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oKSB3aWxsIGJlIGNhbGxlZC4KKworICAgICAg
ICAtLSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKCkg
d2lsbCBiZSBjYWxsZWQgbmV4dAorICAgICAgICAgICB3aGljaCB3aWxsIGNhbGwgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSgpLgorCisgICAgICAgIC0tIFJl
bW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oKSBjaGVja3MgaXRz
IEhhc2hNYXAKKyAgICAgICAgICAgdXNpbmcgdGhlIEltYWdlQnVmZmVyKiB0byBmaW5kIHRoZSBj
b3JyZXNwb25kaW5nIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci4KKyAgICAgICAgICAgSWYgaXQg
ZmluZHMgaXQsIGl0IHdpbGwgY3JlYXRlIHRoZSBEcmF3SW1hZ2VCdWZmZXIgaXRlbS4KKworICAg
ICAgICBUaGUgc2VxdWVuY2UgaW4gdGhlIEdQVSBQcm9jZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisK
KyAgICAgICAgLS0gV2hlbiByZXBsYXlpbmcgYmFjayB0aGUgRGlzcGxheUxpc3QsIERpc3BsYXlM
aXN0OjpSZXBsYXllciB3aWxsIGNhbGwKKyAgICAgICAgICAgaXRzIGRlbGVnYXRlIHRvIGNoZWNr
IGlmIGl0IHdhbnRzIHRvIGFwcGx5IHRoZSBEcmF3SW1hZ2VCdWZmZXIuCisKKyAgICAgICAgLS0g
QmVjYXVzZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGluaGVyaXRzIERpc3BsYXlMaXN0OjpSZXBs
YXllcjo6RGVsZWdhdGUsCisgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmFwcGx5
KCkgd2lsbCBiZSBjYWxsZWQuCisKKyAgICAgICAgLS0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB3
aWxsIGNhbGwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbSgp
CisgICAgICAgICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LgorCisgICAgICAgIC0tIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6YXBwbHlSZXNv
dXJjZUl0ZW0oKSB3aWxsIHNlYXJjaCBmb3IgYQorICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZl
ciB3aG9zZSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbWF0Y2hlcyB0aGUgb25lIGluCisgICAg
ICAgICAgIERyYXdJbWFnZUJ1ZmZlci4gQW5kIHRoZXJlIGlzIG9uZSwgaXQgd2lsbCBkcmF3cyB0
byBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRy
YXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjphcHBseSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6
c291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXI6OmRlc3RpbmF0aW9uUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheExpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y3Jl
YXRlRHJhd0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6d2lsbEFwcGVuZEl0ZW0pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisKKzIwMjAt
MTAtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8g
bWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdmlydHVhbCBtZXRob2Rz
IHRvIEltYWdlQnVmZmVyIHdoaWNoIHVzZWQgdG8gYmUgYSB2aXJ0dWFsIG1ldGhvZAorICAgICAg
ICBvZiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuIFRoaXMgbWV0aG9kIGlz
IGFscmVhZHkgb3ZlcnJpZGRlbgorICAgICAgICBieSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGFu
ZCBpcyBjYWxsZWQgYnkgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LiBCdXQKKyAgICAgICAgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5IGtlZXBzIGEgSGFzaE1hcCBvZiBJbWFnZUJ1ZmZlcnMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQpOgorCisyMDIwLTEwLTA5ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMg
aWRlbnRpZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTUwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHdpbGwgYmUgdXNlZCBpbiBXZWJDb3JlIHdoZW4gcmVjb3JkaW5nIGRyYXdpbmcKKyAgICAg
ICAgYSByZW1vdGUgSW1hZ2VCdWZmZXIgdG8gYW5vdGhlciByZW1vdGUgSW1hZ2VCdWZmZXIuIEV2
ZW50dWFsbHkgaXQgd2lsbAorICAgICAgICBiZSB1c2VkIGRyYXdpbmcgYSByZW1vdGUgTmF0aXZl
SW1hZ2UgdG8gYSByZW1vdGUgSW1hZ2VCdWZmZXIgb3IgRE9NIGxheWVyLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
Lmg6IEFkZGVkLgorCiAyMDIwLTEwLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNZWNoYW5pY2FsIGNsZWFudXAgaW4g
RGlzcGxheUxpc3RSZWNvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNWJhMzQ3YjFhMWZmZjI5MWRlYTg0MTIz
YzA0NjZlOWEwZTY0NzhlLi42M2JhYjdlMjRmMmJmMzNjY2FkNDg3MGNjNDYyNGI1NWY3YTI5ZmI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2xl
YW4gdGhlIERpc3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1hZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
T3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZl
SW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUlt
YWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFn
ZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKwor
MjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBwbHkpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRl
bSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbSBjb25zdCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJh
d0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVz
b3VyY2VzIGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwgYmUgcmVzcG9uc2libGUgZm9y
IG1hbmFnaW5nIHRoZSByZW1vdGUgcmVzb3VyY2VzCisgICAgICAgIGluY2x1ZGluZyB0aGVpciBh
Y3R1YWwgbGlmZSBjeWNsZSBpbiB0aGUgV2ViIFByb2Nlc3Mgc2lkZS4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZAorICAgICAgICB3aWxsIGJlIHJlc3BvbnNpYmxlIG9ubHkgZm9yIHRoZSBJUEMgY29t
bXVuaWNhdGlvbnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisgICAgICAgIEl0
IHdpbGwgZGVsZWdhdGUgYWxsIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IHRvIGl0cyBSZW1vdGVS
ZXNvdXJjZUNhY2hlLgorCisgICAgICAgIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXIgZG9lcyB0
aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFdlYkNvcmUgYW5kIEdQVQorICAgICAgICBQcm9jZXNz
LCBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwga2VlcCB0d28gSGFzaE1hcHMgdG8gZWFzZSB0aGUg
bWFwcGluZworICAgICAgICBpbiBib3RoIGRpcmVjdGlvbnM6CisKKyAgICAgICAgLS0gbV9yZW1v
dGVJbWFnZUJ1ZmZlckhhc2hNYXAgbWFwcyBJbWFnZUJ1ZmZlciogLT4gUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyCisgICAgICAgIC0tIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAgbWFwcyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgICAgLT4gUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcioKKworICAgICAgICBUbyBrZWVwIHRyYWNrIG9mIHRo
ZSByZXNvdXJjZSByZWZlcmVuY2luZywgUmVtb3RlUmVzb3VyY2VDYWNoZSB1c2VzIGFub3RoZXIg
CisgICAgICAgIG1hcCB3aGljaCByZWxhdGVzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggdGhlIHNl
dCBvZiByZW1vdGUgZHJhd2luZyBjbGllbnRzLgorICAgICAgICAKKyAgICAgICAgLS0gbV9yZW1v
dGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1hcHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIC0+
CisgICAgICAgICAgIEhhc2hTZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPgorCisgICAgICAg
IFRoZSByZW1vdGUgcmVzb3VyY2UgaGFzIHN0YXkgYWxpdmUgdGlsbCB0aGVpciBjbGllbnRzIHJl
cGxheWVkIGJhY2sgdGhlaXIKKyAgICAgICAgRGlzcGxheUxpc3Q6Okl0ZW1zIHdoaWNoIHJlZmVy
ZW5jZSB0aGVzZSByZXNvdXJjZXMuIE9uY2UgUmVtb3RlUmVzb3VyY2VDYWNoZQorICAgICAgICBp
cyByZXF1ZXN0ZWQgdG8gcmVsZWFzZSBhIHJlbW90ZSByZXNvdXJjZSBidXQgaXQgZmluZHMgdGhp
cyByZXNvdXJjZSBpcworICAgICAgICByZWZlcmVuY2VkIGJ5IGEgc2V0IG9mIHJlbW90ZSBkcmF3
aW5nIGNsaWVudHMsIGl0IG1vdmVzIHRoZSBlbnRyeSBvZiB0aGlzCisgICAgICAgIHJlc291cmNl
IGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIHRvIGFub3RoZXIgSGFzaE1hcCBu
YW1lZDoKKworICAgICAgICAtLSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNl
SGFzaE1hcCBtYXBzIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICAtPiBIYXNo
U2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4KKworICAgICAgICBXaGVuIGFuIGVudHJ5IGZv
ciBhIHJlbW90ZSByZXNvdXJjZSBleGlzdHMgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5k
aW5nUmVsZWFzZUhhc2hNYXAgCisgICAgICAgIGFuZCBubyByZW1vdGUgY2xpZW50IHJlZmVyZW5j
ZXMgaXQgYW55bW9yZSwgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aWxsIHRlbGwgCisgICAgICAgIEdQ
VSBQcm9jZXNzIHRvIHJlbGVhc2UgaXRzIHJlbW90ZSByZXNvdXJjZSBhcyB3ZWxsLgorCisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6
UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0
Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJj
ZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
Ojpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudCk6CisgICAgICAgIExp
bmtzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggYSBkcmF3aW5nIHJlbW90ZSBjbGllbnQuCisKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
UGVuZGluZ1JlbW92ZUNsaWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICBSZW1vdmUgYWxsIHRoZSBlbnRyaWVz
IHdoaWNoIGluY2x1ZGVzIGEgY2VydGFpbiByZW1vdGUgY2xpZW50LgorCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAgICBB
IHJlbW90ZSBjbGllbnQgaGFzIGRvbmUgZmx1c2hpbmcgaXRzIERyYXdpbmdDb250ZXh0LiBJdCdz
IHRpbWUgdG8gYm9vay0KKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgcmVmZXJlbmNpbmcgYW5k
IHN5bmMgdXAgd2l0aCB0aGUgR1BVIHNpZGUgaWYgaXQgaGFzIHRvCisgICAgICAgIHJlbGVhc2Ug
c29tZSBvZiB0aGUgcmVtb3RlIHJlc291cmNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisKKzIwMjAtMTAtMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSBy
ZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgd2lsbCBiZSByZXNw
b25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJlbW90ZSByZXNvdXJjZXMKKyAgICAgICAgaW5jbHVk
aW5nIHRoZWlyIGFjdHVhbCBsaWZlIGN5Y2xlLiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkg
d2lsbCBiZSAKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBJUEMgY29tbXVuaWNhdGlvbnMg
d2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLiBJdCB3aWxsCisgICAgICAgIGRlbGVnYXRlIGFs
bCB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LgorCisgICAgICAgIFdlIGNhbiBnZXQgcmlkIG9mIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eSBiZWNhdXNlIGFsbCBpdCBkb2VzCisgICAgICAgIGlzIHNlbmRpbmcgbWVzc2Fn
ZXMgdG8gV2ViUHJvY2Vzcy4gUmVtb3ZpbmcgaXQgd2lsbCBzaW1wbGlmeSB0aGUgaW50ZXJmYWNl
CisgICAgICAgIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFNlbmRpbmcgdGhlIG1lc3NhZ2Vz
IHdpbGwgYmUgbW92ZWQgdG8KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Up
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDIwLTEwLTA5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMgaWRlbnRp
ZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTUwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR1BVIFByb2Nlc3MgbmVlZHMgYSB1bml2ZXJz
YWwgaWRlbnRpZmllciBmb3IgZHJhd2luZyBjYWNoZWQgcmVzb3VyY2VzIGFuZCAKKyAgICAgICAg
ZHJhd2luZyBidWZmZXJzIGFuZCBsYXllcnMuIFRoZSBtZWFuaW5nIG9mIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciB3aWxsCisgICAgICAgIGRlcGVuZCBvbiB0aGUgY29udGV4dCBpdCBpcyB1c2Vk
IGluLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJ
bWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21t
aXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZs
dXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bGVhc2VJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisKIDIwMjAtMTAt
MDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBBZGQgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBwYWludGluZyB2aWRlbyBlbGVt
ZW50cyB0byAyRCBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTg0N2IwNWFiNDRlNWNk
NGE3MDZiZTMwOGM4YjY0NWI1MjU0MDBmZS4uYmYwN2EyNWI2YTkwNDZlOTEwODBmN2Q0MWU4NWQ5
MjI5NGM1Zjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTk0LDYgKzExOTQsNyBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5m
by5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1No
aW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCkBAIC0xMjA3LDYgKzEyMDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJh
Y2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Q2MWUwNWIzNTc3MzA0YzE4M2M1MDNmODMxZWM4
OTQxMDEwMDAyMS4uM2ZlMjlmOGJjZTg0YTI0YjY5NzZlZTBkNzMyZWJmZjQ1YmFhZWQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjAwNyw3ICsyMDA3LDYgQEAKIAkJNkE3Mjc5OEIxRjE2QzI5QzAwM0YzOUI4IC8qIEluc3Bl
Y3RvclNoYWRlclByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZBNzI3OTg4MUYxNkMyOUIwMDNGMzlCOCAvKiBJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtLmggKi87IH07CiAJCTZCMEEwN0YyMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmli
dXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZC
MEEwN0YwMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjFGNDgxMTIyOThBMzdF
MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkIxRjQ4MEYyMjk4OUVDNDAwREU4
QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNEQ0MTJEMjM5
ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dl
ZEluU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIyMUI3
MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIgLyog
TmF2aWdhdG9ySXNMb2dnZWRJbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkI1MDdBMjEyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2Vk
SW4uaCAqLzsgfTsKQEAgLTIxNjEsNiArMjE2MCw5IEBACiAJCTcyN0E3RjNBMjQwNzhCODQwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgz
IC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5RDA1
M0MyNTMyRUVFMzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MjlEMDUzRDI1MzJFRjkxMDA0MjIwOTggLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTM5MjUzMkQyRTcw
MDQyMjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRp
b25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIz
RTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9
OwpAQCAtOTQ4Nyw3ICs5NDg5LDYgQEAKIAkJNkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8qIEFk
Q2xpY2tBdHRyaWJ1dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIwQTA3RjEyMUZBNEI1QzAwRDU3MzkxIC8q
IEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZENsaWNrQXR0cmli
dXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjFGNDgwRjIyOTg5RUM0
MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZElu
U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJs
ZURvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTkyMyw2ICs5OTI0LDggQEAKIAkJNzI3QUZFRDMxQTJFQTZB
MDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4
ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNE
Njg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmlu
Z01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MkUyNTMxM0UyNjAw
NDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5
RDA1MzkyNTMyRDJFNzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0
MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMy
ODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjYyMjAsOCArMjYyMjMsOCBAQAogCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhF
QSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgyIC8q
IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAw
MTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAotCQkJCTZCMzQ4MDkyMEVF
RjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5RjQw
MDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyOUQwNTM5MjUzMkQyRTcwMDQyMjA5
OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAv
KiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICov
LAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3Bw
ICovLApAQCAtMjYyMzksNiArMjYyNDIsNyBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdFRjU0
QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVn
aW9uLmggKi8sCisJCQkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllci5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1vdGVW
aWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJlbW90
ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRl
cmluZ01vZGUuaCAqLywKQEAgLTMzMTY4LDcgKzMzMTcyLDggQEAKIAkJCQkzMTRCRTNBNzFCMzEw
M0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUQwNTNDMjUzMkVFRTMwMDQyMjA5OCAvKiBOYXRpdmVJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1M0QyNTMyRUY5MTAwNDIyMDk4IC8qIE5h
dGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJF
NDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0
NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM1NDEsNiArMzM1NDYsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3
RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdD
MDAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJF
QjIyRkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAw
RUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4
RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5k
ZXggYTE0MTNjNmY2NzliMTVlOTA3YzdiNmNmYTc2MDVmMjcwZTJmOTU1Ny4uNTc0NDdmZjFhZjA0
NmM2NDhlODRkOTc2YWJmMDA2MTBiZjAwMjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0NzZh
MzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjcwNGM0M2EyODg3OGZjY2ViNDk4
ODQ0OTY3MTFkMzAzNGYwNWUzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUsMjEg
QEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAorc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxs
ZXIgdGhhbiBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKG5hdGl2ZUltYWdlKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVz
ZXNXaWR0aEFzSGVpZ2h0KCkpCisgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1w
bGVkSW1hZ2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICAvLyBzcmNSZWN0IGlzIGluIHRo
ZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1h
cCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNS
ZWN0ID0gc3JjUmVjdDsKKyAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQor
ICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0s
IHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CisKKyAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3Vs
dCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBz
cmNSZWN0LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDU1NWNjNjY0NTcwYTM0YmVhOTk1ZGVjY2Q1
MmFjODYxZjVmZTMxNDQuLmU3MzBiODljYTBjZDA3MTAyMmUxZDA0NDZlMzU4YWFlODgwZGI2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtNzMxLDYgKzczMSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sCiAg
ICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcGxhdGZv
cm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOworfQorCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIHJldHVybiBkcmF3
SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Uuc2l6ZSgpKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwpA
QCAtNzQ3LDcgKzc2MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGlu
ZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3Vt
ZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5p
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc1OSw3ICs3NzIsNyBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmICht
X2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2lt
cGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwg
c3BhY2luZywgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CkBAIC03NzIsNyArNzg1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYm
IGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3
VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKQEAgLTc5OSw2ICs4MTIsOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKQorICAgICAgICByZXR1cm47
CisKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAg
ICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGRiNGMwMDJlY2NkMjJlNmZlOTQwODdjNjlmOTEyOGQ0Mjg5OTI3YmYuLjBkMWNhOTJk
NjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjljNzZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMzQsMTAgKzMzNCw2
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8
fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVTRShDRykgfHwgVVNFKERJUkVD
VDJEKQogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQ
YXR0ZXJuKCk7CkBAIC0zODMsNiArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmll
bnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9t
SW1hZ2UgfSk7CkBAIC02NTIsNiArNjUwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
CiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRl
eHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgQ29sb3ImKTsKIAogICAgIGZsb2F0
IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdpZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaAppbmRleCAzZDUwNzViY2VkY2JmNTAyODcxY2Q1NTA5MzVmNTFhYzhkYjJmNTVjLi4wNDA5
MjBhOGNmZGM4YWQ1NzdiODdjMjEzNWRkNmFiOGU5ZjY2NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSAwOwogI2VuZGlmCisgICAgdmlydHVhbCBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKaW5kZXggZDM5ZmVhYTgyZjM3MWNmOGFhZjc2ZDI3ZjMzNTczZjM1MTk4ZDA4
OS4uZWE0ZDYzYTk0ZWQ2Y2YwMjIzZmQ5ZWEwNTA4OGEzN2JkNzEyZDZjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zMiw4ICszMiw5IEBACiAjaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNzIsNyArNzMsNiBAQCBj
bGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRp
b25zOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4g
YW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBh
ZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZDE0NjQ5MmM0YThkZjkzNWNhZjk0YjlmYjk1NTkw
OWFhZDFjYmFmMC4uZGJlMDI1ZWU5ZTFhNDQwZjAyZWE5NjY0YTM0Zjk4YTBmNmM1MWEwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0z
Myw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIERyYXdpbmdDb250ZXh0OwogfQogCkBAIC02
NCw2ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdpbmdD
b250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmbHVzaERy
YXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQogCiAgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGMw
MTBhMGYwY2ZjZDhjNWU3YWI2Yzk0YzVjM2MzNmY0ODM4NmQwMWYuLjU4ZmMxNDgzNmQ5MmFhMjAw
MTlmMjBmZWVkYzU1NzFlOWFiNWU5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSwxMyArMzEsMTQgQEAK
ICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFl
MzViMDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmLi40MzM3ODc5MGIyMjkxZWEwMGIxMjA4
ZTBhNWNiYzk3MjlmNzcxZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLgogICoKQEAgLTI3LDUyICsyNywxNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0KLSNp
ZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJ
bWFnZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWly
by5oIgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRp
ZgotCi0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgPGQy
ZDEuaD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotI2VuZGlmCisjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEZs
b2F0UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0KLSNpZiBV
U0UoQ0cpCi10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNl
bGlmIFVTRShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFn
ZVB0cjsKLSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
TmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVk
Qml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXpl
IG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFn
ZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmds
ZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwotCiB2
b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLQot
Y2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlOwotfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3
NTE0MDcxZDA3Yzk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYg
Q09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5
cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0Uo
V0lOR0RJKQordHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNl
bmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZjU0MmRmZWM4NDdh
YmMzNzFhYTJmMWU4ZTRiOGRkOWZiMTEwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2lu
ZyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVJlc291
cmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
YTEwNDY1NmNiNWQ1ZGRlYTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1
NDg1NDQ4ZjM0YWE3NzdhZmUwNGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cApAQCAtMTIzLDE2ICsxMjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpk
cmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUu
ZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAg
IG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAg
IENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBiNjViNGQ2NDQwNmJlYjc2YzQwOWQz
ZThjNjU0OTc1Y2E5ZjdlYjYzLi4wNDg2NDI4NTFmOWQ3YjhjMzlmMWRjOTg1MzQ4M2QwYjY4ZWE1
ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4Niw2ICsy
ODYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnMKICAgICBDYWlybzo6ZHJhd05hdGl2ZUlt
YWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsg
b3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBlNWUyMDc0OGM2ZDc2MjBm
MTBjZjIxNTY2MjhlZjdlMGJlNjAxYzdiLi5kMzBiZjg2OWQ3NDYyZWY4OWU0Y2ExOGExNGYwMTI2
ZmJhNjE5NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsNyAr
NzQsOSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CisKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVhMzdjNzg2
ZWY2ZGI2ZTVhZmViOTE3Nzk4ZmE1MzFiZjk4YWM4NGQuLmMyOTJkYjQyY2MwZjlmMGY5YzQ3Yzc4
ZWQ2OWMyZDgzMzFjOTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxNiArMjgwLDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9k
YXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRy
PENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1E
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA1Y2M1YzIwN2I0NGE0ODM1
YmUyZTA4MDI4YTNhNzEwOTVhNTVlMWUwLi40MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTVi
YWRlYmRhZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBA
IENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhl
bFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsy
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQot
ewotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMg
c21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBu
YXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNl
c1dpZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBs
ZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhl
IGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFw
IGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1Jl
Y3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0g
ICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwg
c3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVj
dCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmIHNvdXJjZSkKLXsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54
KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwot
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBp
bWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7
Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAv
IHNjYWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNv
dXJjZS54KCk7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9u
LnkoKSArIHNvdXJjZS55KCk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBD
R1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5n
ZXQoKSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZv
aWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE2Mzgz
NjkyMWQ4ZGZjYTE2NjM4YmQ4NmFhOTMzZWZhN2UyNjRkODEuLmIzNTg5M2M1ODJlNDE3YzJiYjMz
NTJhNTE2ZTNjYjU5ZmUwMjQzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw4ICs2
Miw5IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAg
ICAgRHJhd1RpbGVkSW1hZ2UsCiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENH
KSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIERyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgogICAg
IERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3NGE1
YTg1NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAK
QEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVy
OjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFs
Q1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsmXShH
cmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFw
aGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxD
VE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3Bs
YXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxv
YXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAgfSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmlu
ZGV4IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZlODBh
ZDI5M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENU
TSA9IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51
bGxwdHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
Y29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3OGFj
NmJhN2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNy
ZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsK
K2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5
cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VC
dWZmZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGlj
OgogCiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFC
YWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1h
Z2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4
dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwg
bV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAg
ICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAg
ICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShz
aXplKSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29y
ZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2luZ0Nv
bnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKICAg
ICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMThk
NzBjZmJkMjQwOTg1ODY4NDQ5ZmIzNTlhOWY4NWViZGZkMzYzNi4uNzhjNzViOWQ1Y2E5NTEyOTFi
NjViOTNmZTU1ZDUyYzBlZmJiMGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0Uo
Q0cpCkBAIC0xMDYsOSArMTA1LDExIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJ
dGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdl
PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsK
LSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihp
dGVtKSk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZm
ZXI+KGl0ZW0pKTsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CkBAIC03MDMs
MzIgKzcwNCwyMSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQog
Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKIERyYXdOYXRpdmVJ
bWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQotI2lmIFVTRShDRykK
LSAgICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCiAgICAgLCBt
X2ltYWdlKGltYWdlKQotI2VuZGlmCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAg
LCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQog
ICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7Ci0jaWYgIVVTRShDRykKLSAgICBVTlVTRURfUEFS
QU0oaW1hZ2UpOwotI2VuZGlmCiB9CiAKIERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFn
ZSgpID0gZGVmYXVsdDsKIAogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSNpZiBVU0UoQ0cpCiAgICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1Jl
Y3QsIG1fb3B0aW9ucyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSNlbmRp
ZgogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpAQCAtNzM5LDYgKzcyOSwzMyBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdl
JiBpdGVtKQogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlv
blJlY3QoKSk7CiAgICAgcmV0dXJuIHRzOwogfQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
RHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgLCBt
X3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
LCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQor
ICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdJbWFnZUJ1ZmZlcjo6fkRyYXdJ
bWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhl
IGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBp
dGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0u
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNl
LXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIs
IGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KICNlbmRpZgogCiBE
cmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTQ2
OSw4ICsxNDg2LDkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTog
dHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJ
bWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtc2NhbGVkLWltYWdlIjsg
YnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1hZ2UiOyBicmVhazsKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8
PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3QiOyBicmVhazsKQEAgLTE1NzEsMTAgKzE1
ODksMTMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRl
bSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAg
ICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBi
cmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRl
bSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdJbWFn
ZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGNiNjg0ZDIzY2U3NWI0ZmFi
OWVjNDEzMTYyN2FjZDMyZDYyNGFlZGIuLjJlMzhkNzRhNWM5YzA0MmMzN2EyNzc2M2YxOTkwMTEx
Yjc2MWI1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CiAKQEAgLTE0MzIsNyArMTQzMyw2IEBAIE9wdGlvbmFsPFJlZjxEcmF3VGlsZWRT
Y2FsZWRJbWFnZT4+IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
CiAgICAgcmV0dXJuIERyYXdUaWxlZFNjYWxlZEltYWdlOjpjcmVhdGUoKmltYWdlSGFuZGxlLT5p
bWFnZSwgKmRlc3RpbmF0aW9uLCAqc291cmNlLCAqdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsICppbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykgfHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdp
bmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNDU1LDkgKzE0NTUsNyBAQCBw
cml2YXRlOgogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsg
fQogCi0jaWYgVVNFKENHKQogICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0jZW5kaWYKICAg
ICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0
OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNDY3LDEwICsxNDY1LDcgQEAgcHJpdmF0
ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdl
SGFuZGxlIGhhbmRsZSB7IG1faW1hZ2UgfTsKLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKLSNlbmRp
ZgorICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwog
ICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3NyY1Jl
Y3Q7CkBAIC0xNDgwLDEyICsxNDc1LDEwIEBAIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBPcHRpb25h
bDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSNpZiBVU0UoQ0cpCi0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VIYW5kbGU+
IGhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGhhbmRsZTsKLSAgICBpZiAoIWhhbmRsZSkKKyAgICBP
cHRpb25hbDxOYXRpdmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgZGVjb2RlciA+PiBpbWFnZTsKKyAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAKICAg
ICBPcHRpb25hbDxGbG9hdFNpemU+IGltYWdlU2l6ZTsKICAgICBkZWNvZGVyID4+IGltYWdlU2l6
ZTsKQEAgLTE1MDcsMTQgKzE1MDAsNzUgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+
IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcHRp
b25zKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0jaWYgVVNFKENHKQotICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlID0gaGFuZGxlLT5pbWFnZTsKLSNlbHNlCi0gICAgTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UgPSBudWxscHRyOwotI2VuZGlmCi0gICAgcmV0dXJuIERyYXdOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwg
Km9wdGlvbnMpOworICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICpp
bWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CiB9Ci0jZW5k
aWYKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKK2NsYXNzIERyYXdJbWFnZUJ1ZmZlciA6IHB1
YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEcmF3SW1hZ2VCdWZm
ZXI+IGNyZWF0ZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3SW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+RHJhd0ltYWdlQnVmZmVyKCk7CisKKyAgICBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gZGVj
b2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3SW1hZ2VC
dWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAg
RmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7Cisg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOworfTsKKwordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgRHJhd0ltYWdlQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAg
IGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7
CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGlu
YXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9u
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBzb3VyY2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0
aW9ucz4gb3B0aW9uczsKKyAgICBkZWNvZGVyID4+IG9wdGlvbnM7CisgICAgaWYgKCFvcHRpb25z
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIERyYXdJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKCpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsICpkZXN0aW5hdGlvbiwgKnNv
dXJjZSwgKm9wdGlvbnMpOworfQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogY2xh
c3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgpAQCAtMjk3Mywx
MCArMzAyNywxMyBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFr
OwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERy
YXdOYXRpdmVJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBlbmNv
ZGVyIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMpOworICAgICAgICBicmVhazsK
ICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhpcyk7CkBAIC0zMTY0LDExICszMjIxLDE1IEBA
IE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKGRlY29kZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3Zl
KCppdGVtKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBV
U0UoRElSRUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAg
ICBpZiAoYXV0byBpdGVtID0gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0p
KTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdJbWFn
ZUJ1ZmZlcjo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZl
cmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQpAQCAtMzMyNiw4ICszMzg3LDkgQEAgU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdHbHlwaHMpCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZEltYWdlKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZFNjYWxlZEltYWdlKQotI2lmIFVT
RShDRykgfHwgVVNFKENBSVJPKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKERyYXdOYXRpdmVJbWFnZSkKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQogI2VuZGlmCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1BhdHRlcm4pCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1JlY3QpCkBAIC0zMzg4LDgg
KzM0NTAsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0ltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkSW1h
Z2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJ
bWFnZSwKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlciwKICNlbmRpZgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVj
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkZDM1ZWYx
YTI4YTkwNzFkYWVmOWEwYThkNzdkOTg0MDFlYTA4MDFkLi45MzU4ZjZlYzc1OTAzMjk1NWIyNjgw
ZjkzNTI5M2NlZWEyNjI5NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC0zNywxMCArMzcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGluaXRpYWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRl
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0
ZSkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmlu
ZVRyYW5zZm9ybSgpKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1f
b2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExP
R19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBj
bGlwICIgPDwgaW5pdGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwg
aW5pdGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CkBAIC01MiwxNSArNTIsMTUgQEAgUmVjb3JkZXI6
On5SZWNvcmRlcigpCiAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlz
dDpcbiVzIiwgbV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9CiAKLXZvaWQg
UmVjb3JkZXI6OnB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlu
cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2lu
dCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZWNv
cmRlcjo6cHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNv
bnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiB7
Ci0gICAgYXBwZW5kSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpjcmVh
dGUoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0
KSk7CisgICAgYXBwZW5kSXRlbShQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1h
Z2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKIH0KIAogdm9pZCBSZWNv
cmRlcjo6d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsKLSAgICBpZiAobV9vYnNl
cnZlcikKLSAgICAgICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CisgICAgaWYg
KG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtKGl0ZW0pOwog
CiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpAQCAtMTMyLDEyICsx
MzIsMjMgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWRSZWNvcmQ7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQogdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0
aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucykpOwogfQotI2VuZGlmCisKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBpZiAoIW1fZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRv
IGl0ZW0gPSBtX2RlbGVnYXRlLT5jcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkgeworICAgICAgICBhcHBlbmRJdGVtQW5kVXBkYXRl
RXh0ZW50KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxEcmF3aW5nSXRlbT4oaXRlbS5yZWxlYXNlTm9u
TnVsbCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggOWVlMWQz
OTM4ZjIzMmYzZjE4ZDk3OGFmNzE4NzAxZDhiZTQ2MzA3Mi4uZmUxYjkwMDYyMTQ5Nzc2ZDhkMjBi
Zjc4M2UzMzE2ZDFjZjMwMDVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdl
OjpUaWxlUnVsZS4KKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNTMs
OCArNTQsOCBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRJbXBsIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIE9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNzIERlbGVnYXRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKQEAgLTYzLDkgKzY0
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8
RHJhd2luZ0l0ZW0+JiYpOwogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVn
YXRlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+
IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0
ZW0mKSB7IH07CiAgICAgfTsKIApAQCAtMTA0LDkgKzEwNiw5IEBAIHByaXZhdGU6CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShE
SVJFQ1QyRCkKKwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwotI2VuZGlmCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJU
aGlja25lc3MpIG92ZXJyaWRlOwpAQCAtMTg4LDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgQ29u
dGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAogICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlM
aXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVyOworICAgIERlbGVnYXRlKiBtX2RlbGVnYXRl
OwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1fc3RhdGVTdGFjazsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjMxZDM3NWIw
MmRhMDk3OTI4OWFjYzIwMGRkODYyZmFlMTM0MTA0Yi4uNGI1ZTNlNDNiMDM5NjRhNTFjMjczZTVi
ZTdhZWRiMGRmMWFhOTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9u
LmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSW1hZ2VP
cmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluVGhyZWFk
Tm90aWZpZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVm
ZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDE4YjRmOGRlOTcxNzBjZTY0NGViNjRiZTNl
YWI4NTdmM2E3NDMyZjQuLjYyOThjZjM2MDczYzdhZTQ0ZjQzYzZiNTY0NDIyYjM3Yjg2Y2YxMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlclBpcGUu
aCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIk5pY29zaWFDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5k
ZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUzZTM4NjcxMDg0ZC4uNGUyNGVlYmFkYjY1
ODdiYWM2MmExZjE1ZDUxZjZmODc2Y2RiYjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU3MCw2ICs1NzAsMTIg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdO
YXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
KSk7CiB9CiAKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQ
YXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzdHJ1Y3QgRHJhd1BhdHRl
cm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9y
bSwgRmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCA1NzJmZjIxNjZm
NmU5NzNhNzYzYjY3Y2I2YmI5NmY0M2YyNmE4ZDUwLi4zODA5M2Q0MTM1YjRkN2I2NTExYTE2MDg3
YWZmMTNmNjAzZWQxM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Nyw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VE
cmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
V2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDM3NDA3MTcxNWJjYjc5
MWQ1ODlkNTBkOTliMjljNjZiMDEwYjcwODEuLjU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0OTJlNmFh
YzhlZDk3NGVjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDE2
ICsyMDcsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkK
ICAgICBEaXJlY3QyRDo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4m
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAg
ICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQo
aGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsK
ICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2Uu
Z2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhh
LCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNlMjQ3YTdhZDRjZDI5NTM4ZTRlYWY0MGJkODAzNjk2ODYwMDhiODYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgotCi0j
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCi0K
LW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQot
ICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KQotICAgICwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIoaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQotewotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6
Y3JlYXRlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCi17Ci0gICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIG1faW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5Ojpjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJ
ZGVudGlmaWVyKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250
ZXh0KGZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGE0ZDA1ZWFlZjU0OTQxNmZkYjY0MjU5NTJlMGI0Y2YzYWEyMDVl
YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgot
I2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VC
dWZmZXJJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXpl
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiA6IHVpbnQ4X3Q7Ci1jbGFzcyBJbWFnZURhdGE7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0KLWNsYXNzIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkgPSBkZWZhdWx0OwotCi0gICAgLy8g
TWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
bWVzc2FnZXMuaW4uCi0gICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmLCBJbWFnZUJ1
ZmZlcklkZW50aWZpZXIpOwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7Ci0gICAgdm9pZCBjb21taXRGbHVzaENvbnRl
eHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIpOwotCi0gICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiBiYWNrZW5kKCkgeyByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk7IH0KLQotcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIEltYWdlQnVmZmVySWRlbnRpZmllciBtX2lt
YWdlQnVmZmVySWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNzcyMWNj
ZTg0NTYyNjlhZWY5MDIwYjhiZDg5NjVkZDM1YjcyMmRkYy4uMWQxYjVlZThmY2YwN2VmYzMyOWQ3
OTgxZjNiMGExYWMyZWZiZTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yOCwyOSArMjgs
MjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlw
ZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHksIHB1YmxpYyBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKK2NsYXNzIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNr
ZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRl
IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRl
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjpjb250ZXh0OwogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tl
bmQ7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKIAog
cHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNw
YWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0
ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0
ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShz
dGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShz
dGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgIDogQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSkKLSAgICAgICAgLCBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKLSAgICAgICAgY3Jl
YXRlQmFja2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNp
emUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNl
KCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkpOworICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCks
IG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBt
X2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKQEAg
LTYyLDkgKzYyLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dDsKLSAgICB1c2luZyBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwotCiAgICAgdm9pZCBmbHVzaERyYXdp
bmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50
KCkpIHsKQEAgLTczLDE4ICs3MCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZmx1c2hEcmF3aW5n
Q29udGV4dChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7
Ci0gICAgICAgIGNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOwotICAgIH0KLQot
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
c3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAg
fQotCiAgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1h
Z2VEYXRhKSB7CkBAIC05OCwxMiArODMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuYXBwbHlSZXNvdXJjZUl0ZW0oaXRlbSwg
Y29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiAgICAgewotICAgICAgICBhdXRvIHByb2Nlc3MgPSBiYWNrZW5kKCkuZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpOworICAgICAgICBhdXRvIHByb2Nlc3MgPSBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CiAgICAgICAgIGlmICgh
cHJvY2VzcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTE3LDYgKzEwMiw4IEBAIHByaXZh
dGU6CiAKICAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgaXRlbS5k
ZXN0aW5hdGlvbigpKTsKICAgICB9CisKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDc1M2E1YzhiYTk3ZmU3
MjA4MzEwNThlODRjNWNkODNiNGIxNzU1NzkuLmNhMzI2MjQzMjE3NzA1OWZiY2Y1NDJmMTFiMDM2
NjI5NzhiYmVlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTQsNiArNTQsMTEgQEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKICAgICAgICAgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAorR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpOworfQorCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewogICAgIGlm
IChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmdldCgpKQpAQCAtNjYsNjQgKzcxLDQxIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJl
dHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLXZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmFwcGx5UmVzb3VyY2VJdGVtKERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKLSAgICBpZiAoIWdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2ltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkKSB7
Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgIG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3Zl
KGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRl
ZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQp
IHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICBtX2lt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVySWRlbnRpZmllciwgV1RG
TW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmFwcGx5UmVzb3VyY2VJdGVtKGl0ZW0sIGNvbnRleHQpOwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVm
ZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJl
ZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAg
QVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
IH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVj
dCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKLSAgICAgICAgYXV0byBpbWFn
ZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlKFdURk1v
dmUoaW1hZ2VEYXRhKSkpOwotICAgIH0KKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cmVhdGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIElt
YWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdl
QnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250
ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERy
YXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmll
ciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChh
dXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgZmx1c2hJZGVudGlmaWVyKTsKKyAgICBtX3JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlM
aXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRl
bnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Cit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsK
KyAgICBhdXRvIGltYWdlRGF0YSA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFn
ZURhdGEpKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlUmVtb3Rl
UmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggYTA5NTJiYWZiM2MxNTMy
ZDdkYzk5MDA2ZWI0MGYzMWJmOTFkMjUzYi4uOWY2OGYyYjQ3MzdlZDM0ZGYxOTY4Mjk0ZWEwMzcw
MGZhN2M1NzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMjgsMjQgKzI4
LDI0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgotI2luY2x1ZGUgIlJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdEl0ZW1zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIH0KK2NsYXNzIEZsb2F0U2l6ZTsKK2VudW0g
Y2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiB1
aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDggKzU5LDExIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAK
LSAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7IH0KICAgICBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29u
c3Q7CisgICAgYm9vbCBhcHBseVJlc291cmNlSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUg
c2VudC4KKyAgICB2b2lkIHJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC03NCwxNCAr
NzcsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWxlYXNlSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJE
cmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAg
IHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIEltYWdlQnVmZmVySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7Ci0K
LSAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHk+PjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAg
V2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA3OThjOGI0ZWRiNTdmNWFkMDgyYmE4MWMxMDA4YjBkY2RlZmRmMThhLi4y
NmNmMTM2MWZkYWIwZWIwZDNmYWY3N2U1ZjdkMmQxYzU2Zjk0MGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMSBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpCi0gICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlz
dCwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQot
ICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50
OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3Jl
OjpJbnRSZWN0IHNyY1JlY3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBs
b2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2
b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRp
c3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKKyAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
IC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU5Yjg0YzY3
MGU5Yjg0YTI1NTI4Y2NkYmViYzczMThmYTg0NTQ3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
CkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCisjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIDogbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQoreworfQor
Cit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9yZW1vdGVJ
bWFnZUJ1ZmZlckhhc2hNYXAuY29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2U7CisKKyAgICBp
ZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCkKKyAg
ICAgICAgaW1hZ2UgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShs
b2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlmICghaW1h
Z2UgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVk
KQorICAgICAgICBpbWFnZSA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpj
cmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBp
ZiAoaW1hZ2UpIHsKKyAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZSA9IG1fcmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAg
ICAgIGltYWdlLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgcmV0
dXJuIGltYWdlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSW1hZ2VCdWZmZXIq
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChj
b25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGlt
YWdlID0gZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSkgeworICAgICAgICBpbWFnZS0+Zmx1c2hDb250ZXh0KCk7CisgICAgICAgIHJldHVy
biBpbWFnZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxJbWFnZURh
dGE+IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAoreworICAgIGlm
IChhdXRvIGltYWdlID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBpbWFnZS0+Z2V0SW1hZ2VEYXRhKG91dHB1
dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJdGVtKGNvbnN0IERpc3BsYXlMaXN0
OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgYXV0
byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyJj4oaXRlbSk7CisgICAgYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
LmdldChkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFpbWFn
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW1hZ2UtPmRyYXcoY29udGV4dCwgZHJh
d0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVtLnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRp
b25zKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0g
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBk
cmF3SW1hZ2VCdWZmZXJJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAg
IGlmIChtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSByZXNv
dXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YzUzMDFkMDJlZWU4NWVhYmUxZTk3ZTFkMDVjZWZjM2EzNzUwNzNlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisK
KyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisKK2NsYXNz
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6
SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKSBjb25zdDsKKworICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKwor
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
ID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+OworCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXJJ
dGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJ
bWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggNDAxN2Ey
YThmMjJjZWNlY2MyMTUxYTMwYTMyNzhmZjkwNmVhZjMyYS4uNjc0OGQxZjVkODAwZDk1NzRmMjM4
MDc1YjE4OTBiNGU0YWNlZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdC
dWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IDk3N2Y5
M2ZmNWMzYzJiODE3ODQ2YzlhOWE3NTUxNzg5YzhlZmUwNWMuLjYxYjg5MGRjNzg2N2MzM2IwMDVm
MjJlOTNiYjFhZjQ3ZGRkM2IxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGVjb2Rlci5o
IgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGZhY2QyZjdhZmI1YTM5
MmVlMjA5NjdhNzZmZDQxZTE0ZGZiMTUwYjkuLjE1OGM0ZWY5N2MyZTk5Yjg3NjY3OTM2ZWI0MGE1
ZTE4NzhkMThiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMjE3LDExICsyMTcsMTMgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHInLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJD
b3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAgICAg
ICAnV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlJlbmRlcmluZ01vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApAQCAt
MjQwLDcgKzI0Miw2IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAg
ICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCcsCiAgICAgICAgICdXZWJLaXQ6Okxp
YldlYlJUQ1Jlc29sdmVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlMGJiYmJjNWJhMjMxOGJmYThlNjMxOTZkNTRl
ZWJiODkwMzY0NDQxLi5hMDc3NTMwOTU3YmE4ZDQ3ZDU0MjliYWRkNjY3NTc1NTRkMDYyMTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTExMDAsNyArMTEwMCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIs
IE5hdGl2ZUltYWdlUHRyIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGF1dG8g
aW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKQEAgLTExNDMs
NyArMTE0Myw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJ
bWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2Rl
ciwgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2
ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsK
ICAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwpA
QCAtMTE2NiwxNCArMTE2NiwxNCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgogICAgIHJldHVy
biBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRD
b2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBO
YXRpdmVJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCit2b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZl
SW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQogewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2VI
YW5kbGUuaW1hZ2UuZ2V0KCkpOworICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2Rl
ciwgaW1hZ2UpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdlSGFuZGxlKQor
Ym9vbCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxO
YXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZSk7CisgICAgcmV0dXJuIGRlY29k
ZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCiB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJD
b3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggMDVkMDM1NTRiOWVjYTlhMDQxYzM2OGVmNDUzODgyNDQzNGNlNmUyMy4u
OWYzYjEwNjY5MzMzYmEzMDE1Mjk3ODNjOWUxZTkxZWFiYTRjYWI4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2Rl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2Fk
TWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC0xMDUsNyArMTA2LDYg
QEAgY2xhc3MgS2V5ZnJhbWVWYWx1ZUxpc3Q7CiBjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgTGF5
b3V0UG9pbnQ7CiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbjsKLWNsYXNzIE5hdGl2ZUltYWdl
SGFuZGxlOwogY2xhc3MgTm90aWZpY2F0aW9uOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7
CiBjbGFzcyBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOwpAQCAtNDE2LDkgKzQxNiw5
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+
IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBX
ZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKLSAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRp
dmVJbWFnZUhhbmRsZSYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApp
bmRleCA3MzBkYTY0OGYyYjJmZTllNzg0ZmQwNDA1MmUxOTBmMGQwYmYyMWFkLi45NTlkYTgzZDVm
Njk4OGIyMTE1ODhkYTdkZGI0ZmYxODNkY2U3ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDYsMTIgKzEwNiwyNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50
UmVjdCYgc291cmNlKQogewotICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwg
Y29udGV4dCwgMSwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgcGFpbnQoY29udGV4dCwgMSwg
ZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25z
dCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBk
cmF3TmF0aXZlSW1hZ2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIHNjYWxlRmFjdG9yLCBk
ZXN0aW5hdGlvbiwgc291cmNlKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7
CisKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5h
dGlvbi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQo
KSkpOworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworCisgICAgYXV0
byBpbWFnZSA9IG1ha2VDR0ltYWdlQ29weSgpOworICAgIENHRmxvYXQgaW1hZ2VIZWlnaHQgPSBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworICAgIENHRmxvYXQg
aW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgLyBzY2FsZUZhY3RvcjsK
KworICAgIENHRmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2UueCgpOworICAg
IENHRmxvYXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkgKyBzb3VyY2Uu
eSgpOworCisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0
WCwgZGVzdFksIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOworCisgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOwogfQogCiBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXgg
ZGFmNWZiNzMxM2JkZDk4MDY4ZGVkZDM5Y2JhYzRkZmJlOTM3N2NhOC4uOGUzYjJhZmZjYTAwMzRi
MzI2ZGE5YjIxOThjODU3OTc0ZTA0OTE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNCw4ICsyNCw4IEBA
CiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Ci1HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTU1Miw4ICs1NTIsOCBAQCBXZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCi1XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDk4NDM0Y2JhYzBjMmY2MWEyZDZlMjgwNzE2ZWNkNzI4ODI4ODkyODIu
LjJhOGM0MmE1YWJlNDE1YmY5ZDExYzdiMGIzZWY3MTg4MDJiMjBjMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg4OSw3ICszODg5
LDYgQEAKIAkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTA2NDBBMzI0MDcxQTYxMDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTUwNjQw
QTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUFEMDk0NDI0MDhBQkIz
MDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQxNzgsMTAgKzQxNzcsNyBAQAogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyogV0tU
b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0g
aW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0ZWRN
b3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEMyNDA5N0EwMjAw
N0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMTEy
NDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAxMjI0MDk5MDZFMDA3
RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM1MjQwNzg1N0YwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTkxLDYgKzQxODcsMTAgQEAKIAkJNzI3QTdGNDkyNDA4
QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5
NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzIyNTMxNEZFRjAwNDIy
MDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MjlEMDUzMzI1MzE0RkVGMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MjlEMDUzNTI1MzE3M0NDMDA0MjIwOTggLyogUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzYyNTMxNzNDQzAwNDIyMDk4IC8q
IFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlD
OUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUgLyog
V0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTgwNzYsMTcgKzgwNzYsMTcgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5
MzEgLyogY29jb2EgKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQ0MjQwOEFCQjMwMERFNEQyRiAvKiBJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovLAotCQkJCTU1MDY0MEE1MjQwNzFDQzAwMEFB
RTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYw
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJ
CQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0Qz
NzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk3MjdBN0Y0OTI0MDhB
RUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKLQkJCQk3MjI3ODAwQzI0MDk3
QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8sCiAJ
CQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXIuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MjlEMDUzNTI1MzE3
M0NDMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8sCisJCQkJNzI5RDA1MzYy
NTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLywKIAkJCQk1NTA2NDA5
RjI0MDcxOTZBMDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CkBAIC04MDk2LDEyICs4MDk2LDEyIEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQy
RiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKLQkJCQk3MjI3ODAxMTI0
MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNw
cCAqLywKLQkJCQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8q
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUw
NDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDBBMzI0
MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCiAJCQkJ
NTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5t
ZXNzYWdlcy5pbiAqLywKKwkJCQk3MjlEMDUzMjI1MzE0RkVGMDA0MjIwOTggLyogUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcCAqLywKKwkJCQk3MjlEMDUzMzI1MzE0RkVGMDA0MjIwOTggLyog
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTFiYzlhZTg3ZGM4ZDcyNDI4YTBiODA5Y2Fk
MGQ4MGE0Y2QxY2I5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlIDx3dGYvT2Jq
ZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBJbWFnZUJ1ZmZl
cklkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEltYWdlQnVmZmVySWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8SW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZT47Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CmluZGV4IGU4NDkxNjY0NTE0NTk2Mjg3ZWYyYzc4ZjkwNzZlMWQ0MzgyMTkxZjIuLjA4YTFkZWFl
YTBhNjQwZjQ3Mjc1NzhiZTgzMzcyNzM5NDUyN2I1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUlt
YWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNr
ZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyIHsKK2NsYXNz
IFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1
ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSB7CiAgICAg
dXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6
Om1fZHJhd2luZ0NvbnRleHQ7CkBAIC01MywxNCArNTMsMjAgQEAgcHVibGljOgogCiAgICAgflJl
bW90ZUltYWdlQnVmZmVyKCkKICAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0
KCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVsZWFzZUltYWdlQnVmZmVy
KCp0aGlzKTsKICAgICB9CiAKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXI7IH0KKwogcHJvdGVjdGVkOgogICAgIFJlbW90ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAg
ICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplKQotICAgICAgICAsIFJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMpCisgICAgICAgICwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpKQogICAg
IHsKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQtPnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7CiAgICAgfQogCiAgICAgdm9pZCBjcmVhdGVCYWNr
ZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkgb3Zl
cnJpZGUKQEAgLTY5LDIyICs3NSw1MCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fYmFja2VuZCA9
IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CiAgICAgfQogICAgIAotICAgIGJv
b2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5n
ZXQoKTsgfQotCiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qg
b3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29u
c3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjp3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CisgICAgICAgIGlm
ICghbV9iYWNrZW5kICYmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
OwogICAgICAgICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogICAgIH0KIAorICAgIHZvaWQgZmx1
c2hDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQo
KTsKKyAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKKyAgICB9CisKKyAgICB2b2lk
IGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byYgZGlz
cGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7CisgICAgICAgIGlmICgh
ZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRp
c3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7
CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVsZWFzZVJlbW90ZUNsaWVudCht
X3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7
CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIH0KKyAgICAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VE
YXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gY29uc3RfY2Fz
dDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0
KCk7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlz
dCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+
KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJbWFnZURhdGEob3V0
cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
KSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPmZs
dXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0YSBpcyBzeW5jaHJv
bm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUgQ29tbWl0SW1hZ2VC
dWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlR2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0K
IAogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
aW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBv
aW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBX
ZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlkZQpA
QCAtOTUsMjYgKzEyOSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQu
cmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwg
ZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoQ29udGV4dCgp
IG92ZXJyaWRlCisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVE
cmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICAgICAgbV9iYWNr
ZW5kLT5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShpbWFnZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9
CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0g
ICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRXYWl0Q29tbWl0
KGRpc3BsYXlMaXN0KTsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBj
b25zdGV4cHIgc2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwogICAgICAgICBhdXRv
JiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAg
aWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpID49IERpc3BsYXlMaXN0QmF0Y2hTaXplKQotICAg
ICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29u
dGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA8
IERpc3BsYXlMaXN0QmF0Y2hTaXplIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3Qp
OworICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KKworICAgIFdlYWtQdHI8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MTUw
YzdiMDc5M2FmZTlhYzVjODNhOWFjNzQ2YmEzMThlNTFiOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIgotCi0jaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQotICAgIDogbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpKQotewotICAgIC8v
IENyZWF0ZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KLSAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3Jl
YXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXI6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkKLXsKLSAg
ICAvLyBSZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJl
bGVhc2VJbWFnZUJ1ZmZlcihtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlZlB0cjxJ
bWFnZURhdGE+IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmdldEltYWdlRGF0YShB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCkgY29uc3QKLXsKLSAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVu
Y2U7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNS
ZWN0LCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCAxX3Mp
OwotICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCAmJiAhaXNCYWNrZW5k
Q3JlYXRlZCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjp3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQotewotICAg
IGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgJiYgaXNQZW5kaW5nRmx1c2goKSkKLSAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVz
aENvbnRleHQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpm
bHVzaERyYXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0KGRpc3BsYXlMaXN0LCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxh
eUxpc3QuY2xlYXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
OjpmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZs
dXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9zZW50
Rmx1c2hJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxp
c3QuY2xlYXIoKTsKLSAgICB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsK
LX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpjb21taXRGbHVzaENv
bnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewotICAg
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaAppbmRleCA2MjA0MThkNzhjMjdm
MjhjNTc0OTAyYzJlMWJhOWEyMzcxNzUxN2I5Li42MWRkNThjZTUyZmRjZWQ0ZjE4NGFmMGVhNjc5
N2IyNjYyNzVhMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIuaApAQCAtMjksNTAgKzI5LDMxIEBACiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1
ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFj
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEltYWdlRGF0YTsKIGVudW0gY2xhc3MgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1
aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKLQogY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpOwotCi0g
ICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBNZXNzYWdlcyB0byBi
ZSByZWNlaXZlZC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCiAgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KSA9IDA7CiAKLSAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRl
bnRpZmllcik7Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCYpOwotCi0gICAgdmlydHVhbCBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNo
SWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNv
bnN0OwotCi0gICAgdm9pZCB3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci0gICAg
dm9pZCB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKKyAgICB2b2lkIGNv
bW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIpCisgICAgeworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVu
dGlmaWVyOworICAgIH0KIAotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERyYXdpbmdD
b250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1
c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1f
aW1hZ2VCdWZmZXJJZGVudGlmaWVyIHsgSW1hZ2VCdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH07Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlcigpID0gZGVmYXVsdDsKIAogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fc2Vu
dEZsdXNoSWRlbnRpZmllcjsKICAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBtX3JlY2Vp
dmVkRmx1c2hJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
OTk1MzQxNzg3ZWRhMjBhNTU0ZTRkNjdiYTUzZGM2OThhNTM3MGNjMC4uMWEwNGE5ZTQ1YTlkZTBl
ZDhiZDViM2QzODQzMDMxNmFkMGUzZjg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCkBAIC04OCwzOCArODgsNjMgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWl0
Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBpZiAoc2hv
dWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKLSAgICAgICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAuYWRkKGltYWdlQnVmZmVyLT5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSwgaW1hZ2VCdWZm
ZXIuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAgICAgICB9Ci0g
ICAgfQorICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlSW1hZ2VCdWZmZXIo
c2l6ZSwgc2hvdWxkQWNjZWxlcmF0ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKK30K
Kwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlSW1hZ2VC
dWZmZXIoaW1hZ2UpOworfQorCitSZWZQdHI8RGlzcGxheUxpc3Q6Okl0ZW0+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXImIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KIAotICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
UmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFw
LmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdl
dCgpKTsKLSAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAgIH0KK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
cmVsZWFzZVJlbW90ZUNsaWVudChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KIAotICAgIHJl
dHVybiBudWxscHRyOworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1h
Z2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZWZQdHI8SW1h
Z2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAg
SVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRw
dXRGb3JtYXQsIHNyY1JlY3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRh
UmVmZXJlbmNlKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1
cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
Cit9CisKK0ltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3sKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBzZW50
Rmx1c2hJZGVudGlmaWVyID0gSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaElt
YWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIHNlbnRGbHVzaElk
ZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOworICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBtZXNz
YWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJvb2wg
Zm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVy
SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZVJlbW90ZVJlc291
cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRl
bnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSkpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1
ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmll
ciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNv
bW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZs
dXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VC
dWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOworICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZp
ZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBmNDk2MTU4ZTdkNDBlZWIwNWFjMzk0
MzRhZjI0NjMzYmFiYzdmMGVmLi45NmVmZTdjNzU0ZmY3Y2UwNjQ5MzdmYjNiZTcwNTgzZGU3N2Rm
NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMjksMTggKzI5LDI0IEBACiAK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9CitjbGFzcyBGbG9hdFNp
emU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBSZW5kZXJp
bmdNb2RlIDogdWludDhfdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQKQEAgLTUyLDggKzU4LDYgQEAgcHVibGljOgogCiAgICAgflJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcjsgfQotCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtNjEsMjEgKzY1LDMwIEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNo
b3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSk7Ci0gICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsK
LQogICAgIGJvb2wgd2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgIGJvb2wg
d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7CisgICAgICAgIAorICAgIC8v
IFJlc291Y2UgY2FjaGUuCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpT
aG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UpOworICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3SW1hZ2VC
dWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgorICAgIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZURhdGE+IHJlbW90ZUdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZUZsdXNoRHJhd2lu
Z0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRp
ZmllciByZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisgICAgdm9pZCByZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIEltYWdl
QnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4
dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIHVzaW5nIEltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRlbnRpZmllciwgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OwotICAgIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAgIFJlbW90ZVJlc291cmNl
Q2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlIHsgKnRoaXMgfTsKICAgICBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCAxMmE3YmY4ZGE0YzgyNTcwYmNhMzZhMTM1
ZmQ3MWFmMjU4OGI2NGQ1Li4yYzBmN2U4YTEyMDNmMjY4NjUyYTAwZmMxZjdiMTdkYTU5OWQyYWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0y
Myw4ICsyMyw4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6SW50
U2l6ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwg
V2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAg
IHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoV2ViS2l0OjpJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
dm9pZCBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChXZWJLaXQ6OkltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhODZjMTdl
M2FlYThhYzI0MmZkYzk0ZDcyYWUwM2M0NDJkZTk3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3Bw
CkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KworI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
YWNoZWRJbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBT
aG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNo
b3VsZEFjY2VsZXJhdGU6OlllcykgeworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQpKSB7CisgICAgICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1h
cC5hZGQoaW1hZ2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSk7CisgICAgICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJI
YXNoTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdl
QnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVy
YXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpKSB7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChpbWFnZUJ1ZmZl
ci5nZXQoKSwgaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICAg
ICAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZm
ZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAg
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7Cit9
CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRl
eHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5n
ZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1p
dEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOworfQorCitSZWZQdHI8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW0+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZl
ckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciA9IGZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChpbWFnZSwgcmVtb3RlQ2xpZW50
SWRlbnRpZmllcik7CisgICAgaWYgKCFyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIC8vIEZsdXNoIHRoZSBEcmF3aW5nQ29udGV4dCBvZiB0aGUg
c291cmNlIEltYWdlQnVmZmVyIHNvIHRoaXMgSW1hZ2VCdWZmZXIgZ2V0cyBhbiB1cGRhdGVkIGlt
YWdlLgorICAgIGltYWdlLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCitSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBpbWFnZSkKK3sKKyAgICAvLyBSZW1vdmUgdGhlIHJlc291cmNlIGZyb20gdGhlIGNh
Y2hlLgorICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVJbWFnZUJ1
ZmZlckhhc2hNYXAudGFrZSgmaW1hZ2UpOworICAgIEFTU0VSVChyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworCisgICAgLy8gY3JlYXRlSW1hZ2VCdWZmZXIgc2hvdWxkIGhhdmUgYmVlbiByZXR1
cm5lZCB0aGlzIEltYWdlQnVmZmVyIGJlZm9yZS4KKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisKKyAgICAvLyBUZWxs
IHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBwZW5k
aW5nIHJlcGxheWluZyBiYWNrLgorICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1v
dmVDbGllbnRzKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcjsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJl
c291cmNlQ2FjaGU6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChJbWFnZUJ1ZmZlciYgaW1hZ2Us
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAg
IGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hN
YXAuZ2V0KCZpbWFnZSk7CisgICAgYWRkUmVtb3RlQ2xpZW50KHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcjsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjphZGRSZW1vdGVDbGll
bnQoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgaWYg
KCFyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFk
ZCB0aGUgInJlc291cmNlIC0+IGNsaWVudCIgZGVwZW5kZW5jeSBpbiBtX3JlbW90ZVJlc291cmNl
Q2xpZW50c0hhc2hNYXAuCisgICAgYXV0byYgY2xpZW50cyA9IG1fcmVtb3RlUmVzb3VyY2VDbGll
bnRzSGFzaE1hcC5lbnN1cmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBbJl0geworICAgICAg
ICByZXR1cm4gUmVtb3RlQ2xpZW50c0hhc2hTZXQoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CisKKyAgICBjbGllbnRzLmFkZChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xp
ZW50cyhSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
eworICAgIEFTU0VSVCghbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hN
YXAuY29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSk7CisKKyAgICAvLyBJZiB3ZSBo
YXZlIHJlY29yZGVkIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jeSBiZWZvcmUgaW4g
bV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLCBtb3ZlIHRoaXMKKyAgICAvLyBkZXBlbmRl
bmN5IHRvIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLiBPdGhl
cndpc2UgcmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBpZiAobV9yZW1v
dGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikpCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFw
LmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcC50YWtlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOworICAgIGVsc2UKKyAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitWZWN0b3I8UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3Vy
Y2VDbGllbnRzSGFzaE1hcCYgcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgVmVjdG9yPFJl
bW90ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92ZWQ7
CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVz
IGZyb20gcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4KKyAgICBmb3IgKGF1dG8mIHBhaXIg
OiByZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwKSB7CisgICAgICAgIHBhaXIudmFsdWUucmVt
b3ZlKHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAocGFpci52YWx1ZS5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZC5hcHBl
bmQocGFpci5rZXkpOworICAgIH0KKworICAgIC8vIFJldHVybiBhIGxpc3Qgb2YgdGhlIHVucmVm
ZXJlbmNlZCByZXNvdXJjZXMuCisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlQ2xpZW50c1RvQmVS
ZW1vdmVkOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGll
bnQoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7Cisg
ICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9t
IG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4KKyAgICBmb3IgKGF1dG8gcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIDogcmVtb3ZlUmVtb3RlQ2xpZW50KG1fcmVtb3RlUmVzb3VyY2VDbGll
bnRzSGFzaE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpCisgICAgICAgIG1fcmVtb3RlUmVz
b3VyY2VDbGllbnRzSGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKwor
ICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJv
bSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC4KKyAgICBmb3Ig
KGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIDogcmVtb3ZlUmVtb3RlQ2xpZW50KG1fcmVt
b3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLCByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKSkgeworICAgICAgICAvLyBSZW1vdmUgdGhlIHVucmVmZXJlbmNlZCByZXNvdXJjZXMg
ZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC4KKyAgICAg
ICAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAucmVtb3ZlKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nl
c3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UuCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5yZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDhhOTU0ZDhk
YzliNWI2ODNhYTA2ODY3M2MxZTZmOGMxMWJkN2RkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUg
IkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgSXRlbTsKK30KK2VudW0gY2xhc3MgQ29sb3JT
cGFjZSA6IHVpbnQ4X3Q7CitjbGFzcyBDb2xvcjsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEZs
b2F0U2l6ZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXI7CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworCitjbGFz
cyBSZW1vdGVSZXNvdXJjZUNhY2hlIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hl
KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVm
ZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbGVhc2VJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNs
aWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRp
Zmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNo
U2V0PFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlUmVzb3VyY2VD
bGllbnRzSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBSZW1vdGVDbGllbnRzSGFzaFNldD47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OworCisgICAgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAg
ICB2b2lkIGFkZFJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVS
ZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJl
bGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1v
dGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBt
X3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDbGllbnRz
SGFzaE1hcCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcDsKKyAg
ICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCBtX3JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggMWFlNTE1NzI1
MzYxZDIyODIxOTE0YWVkMGYyOGJiMTZlNzYzNThmZi4uMzAwNTBhYzA3ZGM5YWQ1YzgzZjNkZTI4
MzI5MDZhOTg3NDEwZDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJXZWJHYW1lcGFkLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411044</attachid>
            <date>2020-10-11 03:01:24 -0700</date>
            <delta_ts>2020-10-17 01:48:20 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>resource-cache-5.patch</filename>
            <type>text/plain</type>
            <size>47687</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYTM4ZDE0MGIzNzkuLmM0ZDE5ZGVmMWM4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc3IEBACisyMDIwLTEwLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDbGVhbiB0aGUgRGlzcGxheUxp
c3QgcmVjb3JkaW5nIG9mIHRoZSBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgMSkgTW92ZSB0aGUgZGVmaW5pdGlvbiBvZiBOYXRpdmVJ
bWFnZVB0ciB0byBhIHNlcGFyYXRlIGhlYWRlciBmaWxlIG5hbWVkCisgICAgICAgICAgIE5hdGl2
ZUltYWdlUHRyLgorICAgICAgICAyKSBSZW1vdmUgdGhlIGNsYXNzIEltYWdlSGFuZGxlIGFuZCBh
bGxvdyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgICAgZGly
ZWN0bHkuCisgICAgICAgIDMpIFJlbW92ZSB0aGUgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBhcm91
bmQgdGhlIERpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2UKKyAgICAgICAgICAgaXRlbSBhbmQg
dGhlIG1ldGhvZCBkcmF3TmF0aXZlSW1hZ2UoKS4KKyAgICAgICAgNCkgTW92ZSB0aGUgZHJhd05h
dGl2ZUltYWdlKCkgbWV0aG9kcyB0byB0aGUgc291cmNlcyBvZiB0aGVpciBjYWxsZXJzLgorICAg
ICAgICA1KSBJbiB0aGUgY2FzZSBvZiByZWNvcmRpbmcgdGhlIGRyYXdpbmcgY29tbWFuZHMsIG1h
a2UgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoKQorICAgICAgICAgICBwcm9jZXNzIGRyYXdp
bmcgdGhlIGltYWdlcyBzdWNoIHRoYXQgcHJpbWl0aXZlcyBkcmF3aW5nIGNvbW1hbmRzIGFyZQor
ICAgICAgICAgICByZWNvcmRlZC4gRm9yIGV4YW1wbGUgYSBCaXRtYXBJbWFnZSB3aWxsIHJlbmRl
ciBhIE5hdGl2ZUltYWdlIGV2ZW50dWFsbHkuCisgICAgICAgICAgIEFuZCBTVkdJbWFnZSB3aWxs
IHJlY29yZCBpdHMgcmVuZGVyIHRyZWUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUHRyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjphcHBs
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdl
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZm
ZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVzdGluYXRpb25SZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6Om9wdGlv
bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZl
cjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorCiAyMDIwLTEw
LTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciBp
dGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBhZDE2MGFlMGY1MTguLmJmMDdhMjViNmE5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTk0LDYgKzExOTQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMzg1OGUxYzMyZTlkLi4zZmUyOWY4YmNlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMDcsNyArMjAwNyw2IEBA
CiAJCTZBNzI3OThCMUYxNkMyOUMwMDNGMzlCOCAvKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTcyNzk4ODFG
MTZDMjlCMDAzRjM5QjggLyogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oICovOyB9OwogCQk2QjBB
MDdGMjIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjBBMDdGMDIxRkE0QjVDMDBENTcz
OTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkIxRjQ4MTEyMjk4QTM3RTAwREU4QjgyIC8qIENyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZCMUY0ODBGMjI5ODlFQzQwMERFOEI4MiAvKiBDcm9zc1NpdGVOYXZp
Z2F0aW9uRGF0YVRyYW5zZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjM0ODA5MjBF
RUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjRENDEyRDIzOTgzRjg4MDAyNDk0QzIgLyogTG9n
Z2VkSW5TdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCNEQ0MTJCMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNEU4NjEzMjIxQjcx
M0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RTg2MTIyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lz
dHJhYmxlRG9tYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNkI1MDdBMjQyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2VkSW4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNTA3QTIx
MjM0QkYzNDEwMEJFN0M2MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmggKi87IH07CkBAIC0yMTYy
LDYgKzIxNjEsOCBAQAogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2
ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlE
MDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5RDA1M0MyNTMy
RUVFMzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
MjlEMDUzRDI1MzJFRjkxMDA0MjIwOTggLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTM5MjUzMkQyRTcwMDQyMjA5
OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFt
ZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIw
MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VC
dWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NG
RTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwpAQCAt
OTQ4OCw3ICs5NDg5LDYgQEAKIAkJNkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8qIEFkQ2xpY2tB
dHRyaWJ1dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIwQTA3RjEyMUZBNEI1QzAwRDU3MzkxIC8qIEFkQ2xp
Y2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjFGNDgwRjIyOTg5RUM0MDBERThC
ODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
cm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZEluU3RhdHVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFp
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTkyNSw2ICs5OTI1LDcgQEAKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2
ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIz
RDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJp
bmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYw
MDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcy
OUQwNTM5MjUzMkQyRTcwMDQyMjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOYXRpdmVJbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNB
NDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1
ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZm
ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E2MjNFMTcz
MjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2MjIyLDggKzI2MjIzLDggQEAKIAkJCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4
RUEgLyogTUlNRVR5cGVDYWNoZS5oICovLAogCQkJCTMxNEJFM0E0MUIzMTAzRkIwMDE0MTk4MiAv
KiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovLAogCQkJCTMxNEJFM0E1MUIzMTAzRkIw
MDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKLQkJCQk2QjM0ODA5MjBF
RUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0
MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKKwkJCQk3MjlEMDUzOTI1MzJEMkU3MDA0MjIw
OTggLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYg
LyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAq
LywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNw
cCAqLywKQEAgLTMzMTcxLDcgKzMzMTcyLDggQEAKIAkJCQkzMTRCRTNBNzFCMzEwM0ZCMDAxNDE5
ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4
NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTcyOUQwNTNDMjUzMkVFRTMwMDQyMjA5OCAvKiBOYXRpdmVJbWFnZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1M0QyNTMyRUY5MTAwNDIyMDk4IC8qIE5hdGl2ZUltYWdl
UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0
aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VE
ODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0Yw
MjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBhMTQxM2M2ZjY3
OWIuLjU3NDQ3ZmYxYWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJOYXRp
dmVJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0NzZhMzViODJkOS4uNzA0
YzQzYTI4ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIK
IAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBAIC0yMDQsNiArMjA1LDIxIEBAIGJvb2wgQml0
bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IG5hdGl2ZUltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgLy8gU3Vic2Ft
cGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6
ZSgpLgorICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShu
YXRpdmVJbWFnZSk7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hl
aWdodCgpKQorICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc3Vic2FtcGxlZEltYWdlU2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0
ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhl
IHN1YnNhbXBsZWQgaW1hZ2UuCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1Jl
Y3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKKyAgICAgICAgYWRq
dXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwg
RmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOworCisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworfQorCiBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0Vt
cHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAppbmRleCA3YjQ1YjM0ZjY1NzEuLmU3MzBiODljYTBjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CkBAIC03MzEsNiArNzMxLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQo
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVu
cy5jbGVhcigpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2lt
cGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF0Zm9ybURyYXdOYXRp
dmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9
CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFn
ZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CkBAIC03NDcsNyAr
NzYwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAg
aWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgp
KQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRp
b25RdWFsaXR5KCkpOwpAQCAtNzU5LDcgKzc3Miw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBp
bWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBv
cHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0
aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKQEAgLTc3Miw3ICs3ODUsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1hZ2UuaXNQ
REZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdl
KGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVs
ZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZS
dWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkYjRjMDAyZWNjZDIuLjBkMWNh
OTJkNjA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTMzNCwxMCArMzM0LDYgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQog
Ci0jaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpIHx8IFVTRShDQUlSTykKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKLSNl
bmRpZgotCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBhcHBseVN0cm9r
ZVBhdHRlcm4oKTsKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKQEAgLTM4Myw2ICszNzks
OCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50
YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1Miw2ICs2NTAs
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAorICAgIHZvaWQgcGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxp
bmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29s
IHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9y
U3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKaW5kZXggZDM5ZmVhYTgyZjM3Li5lYTRkNjNhOTRlZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzIsOCArMzIsOSBAQAogI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFn
ZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNs
dWRlICJJbWFnZVR5cGVzLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJO
YXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAgLTcyLDcgKzczLDYgQEAgY2xh
c3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLXN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9u
czsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFu
IGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2
YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggYzAxMGEwZjBjZmNkLi41OGZj
MTQ4MzZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSwxMyArMzEsMTQgQEAKICNpbmNsdWRlICJHcmFw
aGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIk5hdGl2
ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7
CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFlMzViMDguLjQzMzc4Nzkw
YjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDEy
IENvbXBhbnkgMTAwIEluYy4KICAqCkBAIC0yNyw1MiArMjcsMTYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgotCi0jaWYgVVNFKENHKQotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VS
ZWY7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVT
RShXSU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFwLmgiCi0jZW5kaWYKLQotI2lmIFVTRShE
SVJFQ1QyRCkKLSNpbmNsdWRlICJDT01QdHIuaCIKLSNpbmNsdWRlIDxkMmQxLmg+Ci0jaW5jbHVk
ZSA8d2luY29kZWMuaD4KLSNlbmRpZgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBGbG9hdFJlY3Q7CiBjbGFz
cyBJbnRTaXplOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNU
MkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNp
emUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25z
dCBOYXRpdmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29s
b3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKTsKLQogdm9pZCBjbGVhck5hdGl2
ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci0KLWNsYXNzIE5hdGl2ZUlt
YWdlSGFuZGxlIHsKLXB1YmxpYzoKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLX07CiAgICAg
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQ
dHIuaAppbmRleCA4YjEzNzg5MTc5MWYuLjNkNzdhODk4ZDM5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0xICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKKyNwcmFnbWEg
b25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CisjZWxpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKKyNlbGlmIFVTRShXSU5HREkpCisjaW5jbHVkZSAiU2hhcmVkQml0bWFw
LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQordHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0UoRElSRUNU
MkQpCit0eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBV
U0UoQ0FJUk8pCit0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OworI2VsaWYgVVNFKFdJTkdESSkKK3R5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IGExMDQ2NTZjYjVkNS4uMmFiOWNlM2JiYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCkBAIC0xMjMsMTYgKzEyMywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86
OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0
ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAg
ICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNTRVJUKGhh
c1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAg
ICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAppbmRleCBlYTM3Yzc4NmVmNmQuLmMyOTJkYjQyY2MwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcApAQCAtMjgwLDE2ICsyODAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3Rv
cmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25v
d25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogI2lmICFMT0dfRElTQUJMRUQKICAgICBNb25v
dG9uaWNUaW1lIHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCmluZGV4IDVjYzVjMjA3YjQ0YS4uNDAwZDZlZjBhNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
LSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRo
VGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxT
b2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBU
b0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZl
IGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRT
aXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotICAgIGlm
IChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgc3Vi
c2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsK
LQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgot
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBz
dWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsK
LX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKLXsKLSAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBDR0NvbnRleHRT
YXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4
dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndp
ZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4
dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJ
bWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBk
ZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9
IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55KCk7Ci0KLSAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VX
aWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCmluZGV4IGNmODdmMWE3MDBhNy4uYjM1ODkzYzU4MmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaApAQCAtNjIsOSArNjIsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDog
dWludDhfdCB7CiAgICAgRHJhd0ltYWdlLAogICAgIERyYXdUaWxlZEltYWdlLAogICAgIERyYXdU
aWxlZFNjYWxlZEltYWdlLAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNU
MkQpCiAgICAgRHJhd05hdGl2ZUltYWdlLAotI2VuZGlmCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogICAgIERyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IDI3OWVlNjEyODYyNS4uNzhjNzViOWQ1Y2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMDUsMTAgKzEwNSw4IEBAIHNpemVfdCBJdGVt
OjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRv
d25jYXN0PERyYXdUaWxlZEltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Rp
bGVkU2NhbGVkSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVk
U2NhbGVkSW1hZ2U+KGl0ZW0pKTsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNh
c3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKSk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgICAgICByZXR1cm4g
c2l6ZW9mKGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSkpOwpAQCAtNzA2LDMyICs3MDQs
MjEgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERyYXdUaWxlZFNjYWxlZEltYWdlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotI2lmIFVT
RShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBEcmF3TmF0aXZlSW1hZ2U6OkRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJh
d2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSNpZiBVU0UoQ0cpCi0gICAgLy8g
RklYTUU6IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2UgZm9yIENhaXJvLgogICAgICwgbV9pbWFnZShp
bWFnZSkKLSNlbmRpZgogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0
aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKICAgICAsIG1f
b3B0aW9ucyhvcHRpb25zKQogewotI2lmICFVU0UoQ0cpCi0gICAgVU5VU0VEX1BBUkFNKGltYWdl
KTsKLSNlbmRpZgogfQogCiBEcmF3TmF0aXZlSW1hZ2U6On5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdl
KG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29w
dGlvbnMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0jZW5kaWYKIH0KIAog
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdO
YXRpdmVJbWFnZSYgaXRlbSkKQEAgLTc0Miw3ICs3MjksNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7
CiAgICAgcmV0dXJuIHRzOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiBE
cmF3SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQpAQCAtMTUwMCw5ICsxNDg2LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtc2NhbGVk
LWltYWdlIjsgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1hZ2UiOyBicmVhazsK
LSNlbmRpZgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogI2VuZGlmCkBA
IC0xNjA1LDExICsxNTg5LDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJ
bWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0p
OwogICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdOYXRp
dmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICAgICAgdHMg
PDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCmluZGV4IDIxNDI4MzEzYzNlMi4uMmUzOGQ3NGE1YzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE0MzMsNyArMTQzMyw2IEBAIE9wdGlvbmFsPFJlZjxE
cmF3VGlsZWRTY2FsZWRJbWFnZT4+IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlCiAgICAgcmV0dXJuIERyYXdUaWxlZFNjYWxlZEltYWdlOjpjcmVhdGUoKmltYWdl
SGFuZGxlLT5pbWFnZSwgKmRlc3RpbmF0aW9uLCAqc291cmNlLCAqdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsICppbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8
IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVi
bGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFn
ZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNDU2LDkgKzE0
NTUsNyBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uUmVjdDsgfQogCi0jaWYgVVNFKENHKQogICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0j
ZW5kaWYKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGlu
YXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNDY4LDEwICsxNDY1LDcg
QEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdOYXRpdmVJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIE5h
dGl2ZUltYWdlSGFuZGxlIGhhbmRsZSB7IG1faW1hZ2UgfTsKLSAgICBlbmNvZGVyIDw8IGhhbmRs
ZTsKLSNlbmRpZgorICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKICAgICBlbmNvZGVyIDw8IG1faW1h
Z2VTaXplOwogICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8
PCBtX3NyY1JlY3Q7CkBAIC0xNDgxLDEyICsxNDc1LDEwIEBAIHZvaWQgRHJhd05hdGl2ZUltYWdl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CiBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSNpZiBVU0UoQ0cpCi0gICAgT3B0aW9uYWw8TmF0aXZlSW1h
Z2VIYW5kbGU+IGhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGhhbmRsZTsKLSAgICBpZiAoIWhhbmRs
ZSkKKyAgICBPcHRpb25hbDxOYXRpdmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgZGVjb2RlciA+PiBp
bWFnZTsKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2Vu
ZGlmCiAKICAgICBPcHRpb25hbDxGbG9hdFNpemU+IGltYWdlU2l6ZTsKICAgICBkZWNvZGVyID4+
IGltYWdlU2l6ZTsKQEAgLTE1MDgsMTQgKzE1MDAsOCBAQCBPcHRpb25hbDxSZWY8RHJhd05hdGl2
ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBp
ZiAoIW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSNpZiBVU0UoQ0cp
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBoYW5kbGUtPmltYWdlOwotI2Vsc2UKLSAgICBO
YXRpdmVJbWFnZVB0ciBpbWFnZSA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICByZXR1cm4gRHJhd05h
dGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpz
cmNSZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCpp
bWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsK
IH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogY2xhc3MgRHJhd0ltYWdlQnVm
ZmVyIDogcHVibGljIERyYXdpbmdJdGVtIHsKQEAgLTMwNDEsMTEgKzMwMjcsOSBAQCB2b2lkIEl0
ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdUaWxl
ZFNjYWxlZEltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oKnRoaXMp
OwogICAgICAgICBicmVhazsKLSNlbmRpZgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7CkBAIC0zMjM3LDEyICszMjIxLDEwIEBAIE9wdGlv
bmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGlm
IChhdXRvIGl0ZW0gPSBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVt
KSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElS
RUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBpZiAo
YXV0byBpdGVtID0gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAg
ICAgICAgYnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd0lt
YWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCkBAIC0zNDA1LDkgKzMzODcsNyBAQCBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0dseXBocykKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkU2NhbGVkSW1hZ2UpCi0jaWYgVVNFKENH
KSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0o
RHJhd05hdGl2ZUltYWdlKQotI2VuZGlmCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZUJ1ZmZlcikKICNlbmRp
ZgpAQCAtMzQ3MCw5ICszNDUwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdUaWxlZEltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJF
Q1QyRCkKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZSwKLSNlbmRpZgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGE2NGE0NDdhNGU2Ny4uOTM1OGY2ZWM3NTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMzIsMTIg
KzEzMiwxMCBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZFJlY29yZDsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0Uo
RElSRUNUMkQpCiB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdO
YXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKSk7CiB9Ci0jZW5kaWYKIAogYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTYwNGQ3Y2ZlOTlkLi5m
ZTFiOTAwNjIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAt
MTA2LDkgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0j
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKwogICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2VuZGlmCiAgICAgYm9v
bCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjMxZDM3NWIwMmRhLi40YjVlM2U0
M2IwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1
ZGUgIkdTdHJlYW1lckVNRVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24u
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFpblRocmVhZE5vdGlmaWVyLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcAppbmRleCAxOGI0ZjhkZTk3MTcuLjYyOThjZjM2MDczYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyUGlwZS5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKaW5kZXggMzc0MDcxNzE1YmNiLi41N2JhODU4ZmY5OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDE2ICsyMDcsMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6cmVzdG9yZSgq
cGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRt
YXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwog
ICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2
ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUo
c3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZmY5ZGEzMjY1NjUzLi42M2JhYjdlMjRmMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHRoZSBEaXNw
bGF5TGlzdCByZWNvcmRpbmcgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAo
SVBDOjplbmNvZGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0
aXZlSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+Ojpl
bmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdl
SGFuZGxlPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisKIDIwMjAtMTAtMTAg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyIGl0ZW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDg1OWNjNzU2OWU5
Mi4uMTU4YzRlZjk3YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTIxNyw2ICsyMTcsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0cicsCiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dl
YkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCBlMGJiYmJjNWJhMjMuLmEwNzc1MzA5NTdiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDcg
KzExMDAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUmIGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJ
bWFnZVB0ciBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBhdXRvIGltYWdlU2l6
ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CkBAIC0xMTQzLDcgKzExNDMs
NyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2UoRGVj
b2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIE5hdGl2
ZUltYWdlUHRyIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYm9v
bCBoYXNJbWFnZSA9ICEhaW1hZ2U7CiAgICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKQEAgLTExNjYs
MTQgKzExNjYsMTQgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlv
bmFsTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXYKICAgICByZXR1cm4gZGVjb2Rl
TmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0
aXZlSW1hZ2VIYW5kbGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1h
Z2VIYW5kbGUmIGltYWdlSGFuZGxlKQordm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRy
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
IHsKLSAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmlt
YWdlLmdldCgpKTsKKyAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdl
KTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKK2Jvb2wgQXJn
dW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1h
Z2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UpOworICAgIHJldHVybiBkZWNvZGVPcHRpb25h
bE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJl
ZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9u
dD4mIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDA1ZDAzNTU0YjllYy4uOWYzYjEwNjY5MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9OYXRpdmVJbWFnZVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTEwNSw3ICsxMDYsNiBAQCBjbGFz
cyBLZXlmcmFtZVZhbHVlTGlzdDsKIGNsYXNzIExheW91dFNpemU7CiBjbGFzcyBMYXlvdXRQb2lu
dDsKIGNsYXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uOwotY2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGU7
CiBjbGFzcyBOb3RpZmljYXRpb247CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNz
IFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CkBAIC00MTYsOSArNDE2LDkgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6
OkltYWdlSGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlSGFuZGxlPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdl
SGFuZGxlJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDcz
MGRhNjQ4ZjJiMi4uOTU5ZGE4M2Q1ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDYsMTIgKzEwNiwyNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYg
c291cmNlKQogewotICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4
dCwgMSwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgcGFpbnQoY29udGV4dCwgMSwgZGVzdGlu
YXRpb24sIHNvdXJjZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBkcmF3TmF0
aXZlSW1hZ2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIHNjYWxlRmFjdG9yLCBkZXN0aW5h
dGlvbiwgc291cmNlKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54
KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwor
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworCisgICAgYXV0byBpbWFn
ZSA9IG1ha2VDR0ltYWdlQ29weSgpOworICAgIENHRmxvYXQgaW1hZ2VIZWlnaHQgPSBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworICAgIENHRmxvYXQgaW1hZ2VX
aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgLyBzY2FsZUZhY3RvcjsKKworICAg
IENHRmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2UueCgpOworICAgIENHRmxv
YXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkgKyBzb3VyY2UueSgpOwor
CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0WCwgZGVz
dFksIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOworCisgICAgQ0dDb250
ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOwogfQogCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
U2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411660</attachid>
            <date>2020-10-17 01:48:22 -0700</date>
            <delta_ts>2020-10-17 02:39:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217573-20201017014821.patch</filename>
            <type>text/plain</type>
            <size>50587</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uYzBkZTViY2JiOTcxYTMyYTgzZGE1NjU5NzA1MjIx
ZGU2M2JiYTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTEwLTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBDbGVhbiB0aGUgRGlzcGxheUxpc3QgcmVjb3JkaW5nIG9mIHRoZSBOYXRpdmVJbWFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTcz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMSkgTW92
ZSB0aGUgZGVmaW5pdGlvbiBvZiBOYXRpdmVJbWFnZVB0ciB0byBhIHNlcGFyYXRlIGhlYWRlciBm
aWxlIG5hbWVkCisgICAgICAgICAgIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAyKSBSZW1vdmUg
dGhlIGNsYXNzIEltYWdlSGFuZGxlIGFuZCBhbGxvdyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgTmF0
aXZlSW1hZ2VQdHIKKyAgICAgICAgICAgZGlyZWN0bHkuCisgICAgICAgIDMpIFJlbW92ZSB0aGUg
Y29tcGlsYXRpb24gZGlyZWN0aXZlcyBhcm91bmQgdGhlIERpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2UKKyAgICAgICAgICAgaXRlbSBhbmQgdGhlIG1ldGhvZCBkcmF3TmF0aXZlSW1hZ2UoKS4K
KyAgICAgICAgNCkgTW92ZSB0aGUgZHJhd05hdGl2ZUltYWdlKCkgbWV0aG9kcyB0byB0aGUgc291
cmNlcyBvZiB0aGVpciBjYWxsZXJzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRy
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURy
YXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
OjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd05hdGl2ZUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UpOiBEZWxldGVkLgorCiAyMDIwLTEwLTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjY4NTYxKTogU3ludGhl
dGljIG9ibGlxdWUgdGV4dCBpcyBkcmF3biB1cHNpZGUtZG93bgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZGU4ODEx
MWZmZThmODBkNWE5YzAzOTU1NmQ5YTQ4ZmJhYzQ0OTg3Li4zODJjMzQzNWM2MTAxOGZiMGExY2Y5
M2FhYmE3OWE1YWQ2YTA0OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVSBQcm9jZXNzXSBDbGVhbiB0aGUgRGlzcGxheUxpc3QgcmVjb3JkaW5nIG9mIHRoZSBOYXRp
dmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3VwcG9ydCBlbmNvZGluZyBhbmQgZGVjb2RpbmcgTmF0aXZlSW1hZ2VQdHIgZGlyZWN0bHkuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlTmF0aXZlSW1h
Z2UpOgorICAgICAgICAoSVBDOjplbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFuZGxlPjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmRlY29kZSk6IERl
bGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6cGFpbnQpOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1
Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRo
ZSBHUFUgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDk2M2FjOTFhMzhiZjFhYjlhYTg0ZmZmOWRlY2ZiNTMyMzQ4ZTQx
NjQuLjA0OGVjMmI1NjY1Nzg4YjMzZjYxYTMwMDNlYjViMzYyMzY1NWIwN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMDks
NyArMjAwOSw2IEBACiAJCTZBNzI3OThCMUYxNkMyOUMwMDNGMzlCOCAvKiBJbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QTcyNzk4ODFGMTZDMjlCMDAzRjM5QjggLyogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oICov
OyB9OwogCQk2QjBBMDdGMjIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjBBMDdGMDIx
RkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkIxRjQ4MTEyMjk4QTM3RTAwREU4Qjgy
IC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMUY0ODBGMjI5ODlFQzQwMERFOEI4MiAvKiBD
cm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIE5h
dGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjRENDEyRDIzOTgzRjg4MDAy
NDk0QzIgLyogTG9nZ2VkSW5TdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZCNEQ0MTJCMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZC
NEU4NjEzMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RTg2MTIyMjFCNzEzRjAwMjJG
Mzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI1MDdBMjQyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRv
cklzTG9nZ2VkSW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCNTA3QTIxMjM0QkYzNDEwMEJFN0M2MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmggKi87
IH07CkBAIC0yMTU5LDYgKzIxNTgsOCBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyog
SlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAq
LzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0Yy
NUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVD
aGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNB
RTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5h
dGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjdBN0YzQTI0MDc4Qjg0MDA0
RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyog
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhh
UHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4
MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTk0OTgsNyArOTQ5OSw2IEBACiAJCTZCMEEwN0YwMjFGQTRCNUMwMEQ1
NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRDbGlja0F0dHJp
YnV0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCMEEwN0YxMjFGQTRCNUMw
MEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWRD
bGlja0F0dHJpYnV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIxRjQ4
MEYyMjk4OUVDNDAwREU4QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZl
SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEQ0MTJCMjM5ODNGODgwMDI0OTRDMiAv
KiBMb2dnZWRJblN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjRENDEyQzIzOTgzRjg4MDAyNDk0QzIgLyogTG9n
Z2VkSW5TdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9nZ2VkSW5TdGF0dXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjRFODYxMjIyMUI3MTNGMDAyMkYzODkgLyog
UmVnaXN0cmFibGVEb21haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmFibGVEb21haW4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5MjcsNiArOTkyNyw3IEBACiAJCTcyNjZG
MDI4MjI0MzEyMDMwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbklt
cGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDI5MjI0MzEyQjEwMDgzMzk3
NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUlt
YWdlUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyN0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVHNSR0IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMjFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JH
Qi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRzUkdCLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdC
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEyMTY1LDExICsxMjE2NiwxMSBAQAogCQlBMzdBNDJFMjI1MjdCNDlE
MDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUEzN0E0MkUzMjUyN0I0OUUwMEY3NUFGRiAvKiBFWFRUZXh0dXJl
Q29tcHJlc3Npb25SR1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRUZXh0dXJlQ29t
cHJlc3Npb25SR1RDLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM4QTg3QTMy
NTM4QkVFNzAwMzdBNDcyIC8qIEdQVVBsYXRmb3JtVHlwZXNNZXRhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVQbGF0Zm9ybVR5cGVzTWV0YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTNDM0RDNUQyNTNBMTk5MjAwNjFGMzJBIC8qIEdQVVBsYXRmb3JtVHlwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGxhdGZvcm1UeXBlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBM0FGOUQ4MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAw
NkNBRDA2IC8qIFVzZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
c2VyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5
MTAwNkNBRDA2IC8qIFVzZXJBZ2VudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFVzZXJBZ2VudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTNBRjlEODQyMDMyNTZBMzAwNkNBRDA2IC8qIFVzZXJBZ2VudE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNDM0RDNUQyNTNBMTk5MjAwNjFGMzJBIC8qIEdQVVBsYXRm
b3JtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGxhdGZvcm1U
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0Q0MkE4NDFGMzNCQTM2MDBB
NjRCNjIgLyogTGF5b3V0VW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMYXlvdXRVbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5
ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MzEx
NkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYyMzIsOCArMjYyMzMsOCBAQAog
CQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJ
MzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAg
Ki8sCiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oICovLAotCQkJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5o
ICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAor
CQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJ
CUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBC
MDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5
MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovLApAQCAtMzMxODcsNyArMzMxODgsOCBAQAog
CQkJCTMxNEJFM0E3MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5v
ZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBO
YW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTZCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI2RDU2RTMyNTNBRTM2NjAw
MDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjZENTZFMjI1M0FF
MjhEMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjJE
MTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlv
bkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oCmluZGV4IGExNDEzYzZmNjc5YjE1ZTkwN2M3YjZjZmE3NjA1ZjI3MGUyZjk1NTcu
LjU3NDQ3ZmYxYWYwNDZjNjQ4ZTg0ZDk3NmFiZjAwNjEwYmYwMDI4ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0yNCw3ICsyNCw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cAppbmRleCBiNDc2YTM1YjgyZDkzNzA4ZDNiMGYyYjRkMWE2ZDI1NDgxMmQwZTExLi5iMWVkNGU0
ZTg0Nzk5N2I1OWM3ZGZkM2QyNjEwNzU2NmNjYTQ3MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBAIC0y
MDQsNiArMjA1LDIxIEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2Vu
ZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit7CisgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBp
cyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgorICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51
c2VzV2lkdGhBc0hlaWdodCgpKQorICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc3Vic2Ft
cGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgLy8gc3JjUmVjdCBpcyBpbiB0
aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBt
YXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdCA9IHNyY1JlY3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkK
KyAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9
LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOworCisgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RS
ZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworfQorCiBJbWFnZURyYXdSZXN1bHQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVj
dC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA1NTVjYzY2NDU3MGEzNGJlYTk5NWRlY2NkNTJhYzg2
MWY1ZmUzMTQ0Li4wZGMwNTU3YjBkNGYwNzJlZGI5OGJjNThjMTI5YjQyMWE4MDhmMDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTczMSw2ICs3MzEsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJp
ZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsYXRmb3JtRHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0ltYWdl
KGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggZGI0YzAwMmVjY2QyMmU2ZmU5NDA4N2M2OWY5MTI4ZDQyODk5MjdiZi4uMGQxY2E5MmQ2MDQ1
ZWIzN2E3OGQzZTE4OTdjMjZmNDJiOWM3NmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMzNCwxMCArMzM0LDYgQEAg
cHVibGljOgogCiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQogCi0jaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpIHx8IFVT
RShDQUlSTykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KTsKLSNlbmRpZgotCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQp
CiAgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRl
cm4oKTsKQEAgLTM4Myw2ICszNzksOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VY
UE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0
aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFn
ZSB9KTsKQEAgLTY1Miw2ICs2NTAsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAor
ICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisKICAg
ICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChj
b25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFz
aGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
CmluZGV4IDNkNTA3NWJjZWRjYmY1MDI4NzFjZDU1MDkzNWY1MWFjOGRiMmY1NWMuLmMyY2FmZTMz
NmNjNTY5OTVkYzQwZGVkNDAxNjdlNjgzYjQyYTU3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTcyLDkg
KzcyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIEltYWdl
RHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
ID0gMDsKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwot
I2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCisKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSNlbmRpZgogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBkMzlmZWFhODJmMzcxY2Y4YWFmNzZkMjdm
MzM1NzNmMzUxOThkMDg5Li5lYTRkNjNhOTRlZDZjZjAyMjNmZDllYTA1MDg4YTM3YmQ3MTJkNmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTMyLDggKzMy
LDkgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgi
CiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdP
cHRpb25zLmgiCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdl
LmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC03
Miw3ICs3Myw2IEBAIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1zdHJ1Y3QgSW1h
Z2VQYWludGluZ09wdGlvbnM7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMg
bm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVz
IGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGMw
MTBhMGYwY2ZjZDhjNWU3YWI2Yzk0YzVjM2MzNmY0ODM4NmQwMWYuLjU4ZmMxNDgzNmQ5MmFhMjAw
MTlmMjBmZWVkYzU1NzFlOWFiNWU5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSwxMyArMzEsMTQgQEAK
ICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFl
MzViMDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmLi4wMzM0NzU5NjA3ZjhmMjBkZTMxMjQ4
NTlhNmYwZjA5NDUxZTE4ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLgogICoKQEAgLTI3LDUyICsyNywxNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0KLSNp
ZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJ
bWFnZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWly
by5oIgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRp
ZgotCi0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgPGQy
ZDEuaD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotI2VuZGlmCisjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEZs
b2F0UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0KLSNpZiBV
U0UoQ0cpCi10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNl
bGlmIFVTRShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFn
ZVB0cjsKLSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
TmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVk
Qml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXpl
IG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFn
ZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmds
ZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwotCiB2
b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAot
Y2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlOwotfTsKLSAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3
NTE0MDcxZDA3Yzk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYg
Q09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5
cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0Uo
V0lOR0RJKQordHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNl
bmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYTEwNDY1NmNiNWQ1
ZGRlYTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1NDg1NDQ4ZjM0YWE3
NzdhZmUwNGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE2
ICsxMjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxh
dGZvcm1Db250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBz
dGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRl
eHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0
ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5k
ZXggZWEzN2M3ODZlZjZkYjZlNWFmZWI5MTc3OThmYTUzMWJmOThhYzg0ZC4uYzI5MmRiNDJjYzBm
OWYwZjljNDdjNzhlZDY5YzJkODMzMWM5ODIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjgw
LDE2ICsyODAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRl
KCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkg
PSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogI2lmICFMT0dfRElTQUJMRUQKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0
VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IDVjYzVj
MjA3YjQ0YTQ4MzViZTJlMDgwMjhhM2E3MTA5NWE1NWUxZTAuLjQwMGQ2ZWYwYTQ1NzdkNWQ3Y2M1
YmQ5Y2I2NDZhNWJhZGViZGFkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdlb21l
dHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgpAQCAtNjks
NDAgKzY4LDYgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8
U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxb
M10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCi17Ci0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1h
Z2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0gICAgaWYgKG9wdGlvbnMub3JpZW50
YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQotICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotCi0gICAgLy8gc3JjUmVj
dCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2Ug
aGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IGFk
anVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0g
c3JjU2l6ZSkKLSAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9h
dFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkp
OwotCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNp
emUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW50UmVjdCYgc291cmNlKQotewotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250
ZXh0KTsKLQotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRl
c3RpbmF0aW9uLngoKSwgZGVzdGluYXRpb24ueSgpLCBzb3VyY2Uud2lkdGgoKSwgc291cmNlLmhl
aWdodCgpKSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7Ci0KLSAg
ICBDR0Zsb2F0IGltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgLyBz
Y2FsZUZhY3RvcjsKLSAgICBDR0Zsb2F0IGltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0KLSAgICBDR0Zsb2F0IGRlc3RYID0gZGVzdGluYXRp
b24ueCgpIC0gc291cmNlLngoKTsKLSAgICBDR0Zsb2F0IGRlc3RZID0gLWltYWdlSGVpZ2h0IC0g
ZGVzdGluYXRpb24ueSgpICsgc291cmNlLnkoKTsKLQotICAgIENHQ29udGV4dERyYXdJbWFnZShj
Z0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgsIGRlc3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdo
dCksIGltYWdlLmdldCgpKTsKLQotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0
KTsKLX0KLQogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
aW5kZXggYTYzODM2OTIxZDhkZmNhMTY2MzhiZDg2YWE5MzNlZmE3ZTI2NGQ4MS4uZjEyNTNhNzY3
YzM0MGJjZGQ5YTUzMWFhZTQwZWUzNzhlOWZjM2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
QEAgLTYyLDkgKzYyLDcgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIERy
YXdJbWFnZSwKICAgICBEcmF3VGlsZWRJbWFnZSwKICAgICBEcmF3VGlsZWRTY2FsZWRJbWFnZSwK
LSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIERyYXdOYXRp
dmVJbWFnZSwKLSNlbmRpZgogICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LAogICAgIERy
YXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGM3YTM5ZDgz
MWNlMGYwYTNmYWZlMDFiNGJlZTE1OGRlMzRkYWJkY2UuLjcyNTI2MDkyYTJlYWJiY2JhZTBiYzgx
YzQwMWIxZjk5MjdlNGViMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTEwNiwxMCArMTA2LDggQEAgc2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0m
IGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkSW1hZ2U+KGl0
ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAg
cmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSkpOwotI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0p
KTsKLSNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICByZXR1
cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1JlY3Q6CkBAIC02OTgsMzIgKzY5NiwyMSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0p
CiAgICAgcmV0dXJuIHRzOwogfQogCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShE
SVJFQ1QyRCkKIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlKQotI2lmIFVTRShDRykKLSAgICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFn
ZSBmb3IgQ2Fpcm8uCiAgICAgLCBtX2ltYWdlKGltYWdlKQotI2VuZGlmCiAgICAgLCBtX2ltYWdl
U2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAs
IG1fc3JjUmVjdChzcmNSZWN0KQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7Ci0jaWYgIVVT
RShDRykKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOwotI2VuZGlmCiB9CiAKIERyYXdOYXRpdmVJ
bWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAogdm9pZCBEcmF3TmF0aXZlSW1h
Z2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSNpZiBVU0UoQ0cp
CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVz
dGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjb250ZXh0KTsKLSNlbmRpZgogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpAQCAtNzM0LDcg
KzcyMSw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJl
Y3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKICAgICByZXR1cm4gdHM7CiB9Ci0jZW5kaWYK
IAogRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAg
ICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0dGVybikKQEAgLTE0NjQsOSArMTQ1MCw3
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJ
dGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJkcmF3
LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRzIDw8
ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVk
U2NhbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwotI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTE1NjYs
MTEgKzE1NTAsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgog
ICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSk7CiAgICAg
ICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdl
PihpdGVtKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwYjU0YjQ0
NTY0MTliZDBlMTdhYTA1YzI2ODU0YWYxZjcyYmM3MjYuLjdkMzQ1Y2I3OGM0NWJhMzdlZTU0M2U4
YzgwYjE3MGJkZWU0ZDA3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAt
MTQyMiw3ICsxNDIyLDYgQEAgT3B0aW9uYWw8UmVmPERyYXdUaWxlZFNjYWxlZEltYWdlPj4gRHJh
d1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gRHJh
d1RpbGVkU2NhbGVkSW1hZ2U6OmNyZWF0ZSgqaW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRp
b24sICpzb3VyY2UsICp0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgKmltYWdlUGFpbnRp
bmdPcHRpb25zKTsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNU
MkQpCiBjbGFzcyBEcmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKQEAgLTE0NDUsOSArMTQ0NCw3IEBAIHByaXZhdGU6CiAKICAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSNpZiBVU0UoQ0cp
CiAgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKLSNlbmRpZgogICAgIEZsb2F0U2l6ZSBtX2lt
YWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgRmxvYXRSZWN0
IG1fc3JjUmVjdDsKQEAgLTE0NTcsMTAgKzE0NTQsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSNpZiBVU0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VIYW5kbGUgaGFuZGxlIHsg
bV9pbWFnZSB9OwotICAgIGVuY29kZXIgPDwgaGFuZGxlOwotI2VuZGlmCisgICAgZW5jb2RlciA8
PCBtX2ltYWdlOwogICAgIGVuY29kZXIgPDwgbV9pbWFnZVNpemU7CiAgICAgZW5jb2RlciA8PCBt
X2Rlc3RpbmF0aW9uUmVjdDsKICAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKQEAgLTE0NzAsMTIg
KzE0NjQsMTAgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZl
SW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotI2lm
IFVTRShDRykKLSAgICBPcHRpb25hbDxOYXRpdmVJbWFnZUhhbmRsZT4gaGFuZGxlOwotICAgIGRl
Y29kZXIgPj4gaGFuZGxlOwotICAgIGlmICghaGFuZGxlKQorICAgIE9wdGlvbmFsPE5hdGl2ZUlt
YWdlUHRyPiBpbWFnZTsKKyAgICBkZWNvZGVyID4+IGltYWdlOworICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYKIAogICAgIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gaW1hZ2VTaXplOwogICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOwpAQCAtMTQ5NywxNCAr
MTQ4OSw4IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFn
ZSA9IGhhbmRsZS0+aW1hZ2U7Ci0jZWxzZQotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gbnVs
bHB0cjsKLSNlbmRpZgotICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwg
KmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKKyAgICBy
ZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGlu
YXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQotI2VuZGlmCiAKIGNsYXNzIERyYXdQ
YXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKQEAgLTI5NjMsMTEgKzI5NDks
OSBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25j
YXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVT
RShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJ
bWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzE1NCwxMiArMzEzOCwxMCBAQCBPcHRpb25hbDxS
ZWY8SXRlbT4+IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0
byBpdGVtID0gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwog
ICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJE
KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgaWYgKGF1dG8g
aXRlbSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAg
IGJyZWFrOwotI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAg
IGlmIChhdXRvIGl0ZW0gPSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBA
IC0zMzE2LDkgKzMyOTgsNyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd0dseXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShE
cmF3SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1Rp
bGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1Rp
bGVkU2NhbGVkSW1hZ2UpCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQotI2VuZGlmCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1JlY3QpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0xpbmUpCkBAIC0zMzc4LDkgKzMzNTgsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2UsCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZSwKLSNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAotI2VuZGlmCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKaW5kZXggMWM1NGFlODIyOTM5NDIwZGQ0MGI3YjcwYmE3ZTM5ZGJiYTY1ZmU5Yi4uY2YyNmM4
Mjg5YzBmZWQ5ZTYzMzBlNzQ2MzMxNGZhMjM2OTY4MDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTMyLDEyICsxMzIsMTAgQEAgSW1hZ2VEcmF3UmVz
dWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXQKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiB9CiAK
LSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogdm9pZCBSZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogfQotI2VuZGlmCiAK
IHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDllZTFkMzkzOGYyMzJm
M2YxOGQ5NzhhZjcxODcwMWQ4YmU0NjMwNzIuLjFiMjRjMjZjNjcyODhmODE3MjczYTJkMmFlZjJi
NGJjOTZlMzVjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAt
MTA0LDkgKzEwNCw4IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0j
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKwogICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2VuZGlmCiAgICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBmMzFkMzc1YjAyZGEwOTc5Mjg5YWNjMjAwZGQ4
NjJmYWUxMzQxMDRiLi40YjVlM2U0M2IwMzk2NGE1MWMyNzNlNWJlN2FlZGIwZGYxYWE5MWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJHU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWROb3RpZmllci5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlw
ZS5jcHAKaW5kZXggMThiNGY4ZGU5NzE3MGNlNjQ0ZWI2NGJlM2VhYjg1N2YzYTc0MzJmNC4uNjI5
OGNmMzYwNzNjN2FlNDRmNDNjNmI1NjQ0MjJiMzdiODZjZjEwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyUGlwZS5oIgorI2luY2x1ZGUgIk5hdGl2
ZUltYWdlLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
LmgiCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKaW5kZXggMzc0MDcxNzE1YmNiNzkxZDU4OWQ1MGQ5OWIyOWM2NmIwMTBiNzA4MS4uNTdiYTg1
OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQuY3BwCkBAIC0yMDcsMTYgKzIwNywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNv
bnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBs
YXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjUzMjg3MzE4Y2Y0
Y2I3OTc4YWMxZjM5MDZjMTFjMWI4NmRhNDY1NC4uMDU4NTc3ZTVmN2RlYjZkMmJkZjI1YjFjNzU1
MzU2Zjk2YWRmODg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0yMTcsNiArMjE3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHInLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJD
b3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggMDgxMTIxNGExMDgzNzdiMTc3NWQyY2ZiNzY0ODQ2NDFlMjNkMWQz
YS4uMzM3OTU5NmJlNjlkOTI0YWUwY2E2ZDhmOWYxZmZiMDFiMjBjM2Q2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zOSw2ICszOSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3NpdGlvblVuZGVybGluZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9ET01DYWNoZUVuZ2luZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJh
c2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgpAQCAtMTA5OSw3ICsxMTAw
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYXV0byBpbWFnZVNpemUgPSBu
YXRpdmVJbWFnZVNpemUoaW1hZ2UpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwpAQCAtMTE0Miw3ICsxMTQzLDcgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXIm
IGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJbWFn
ZVB0ciBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGJvb2wgaGFz
SW1hZ2UgPSAhIWltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CkBAIC0xMTY1LDE0ICsx
MTY2LDE0IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgcmV0dXJuIGRlY29kZU5hdGl2
ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUlt
YWdlSGFuZGxlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlSGFu
ZGxlJiBpbWFnZUhhbmRsZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0g
ICAgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZS5n
ZXQoKSk7CisgICAgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CiB9
CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBOYXRpdmVJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCitib29sIEFyZ3VtZW50
Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQogewotICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRl
Y29kZXIsIGltYWdlSGFuZGxlLmltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRp
dmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9u
dD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBm
b250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCA1YzUyM2U4ODJlMDNkZjdlNWNjZmMxMmU0NWQ3OGZiNDEwMzNiYjkwLi42NDU5ZmE0MWVlOGU3
YWIxMzIwZWUyN2QyMmU2OTc0MTM1OTQzMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRp
dmVJbWFnZVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTEwOSw3ICsxMTAsNiBAQCBjbGFzcyBLZXlm
cmFtZVZhbHVlTGlzdDsKIGNsYXNzIExheW91dFNpemU7CiBjbGFzcyBMYXlvdXRQb2ludDsKIGNs
YXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uOwotY2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGU7CiBjbGFz
cyBOb3RpZmljYXRpb247CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFBheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CkBAIC00MTksOSArNDE5LDkgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdl
SGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlSGFuZGxlPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFuZGxl
Jik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDczMGRhNjQ4
ZjJiMmZlOWU3ODRmZDA0MDUyZTE5MGYwZDBiZjIxYWQuLjk1OWRhODNkNWY2OTg4YjIxMTU4OGRh
N2RkYjRmZjE4M2RjZTdkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKQEAgLTEwNiwxMiArMTA2LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIAog
dm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2Up
CiB7Ci0gICAgZHJhd05hdGl2ZUltYWdlKG1ha2VDR0ltYWdlQ29weSgpLCBjb250ZXh0LCAxLCBk
ZXN0aW5hdGlvbiwgc291cmNlKTsKKyAgICBwYWludChjb250ZXh0LCAxLCBkZXN0aW5hdGlvbiwg
c291cmNlKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBk
ZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKQogewotICAgIGRyYXdOYXRpdmVJbWFn
ZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwgc2NhbGVGYWN0b3IsIGRlc3RpbmF0aW9uLCBz
b3VyY2UpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpOworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uLngoKSwgZGVz
dGluYXRpb24ueSgpLCBzb3VyY2Uud2lkdGgoKSwgc291cmNlLmhlaWdodCgpKSk7CisgICAgQ0dD
b250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CisKKyAgICBhdXRvIGltYWdlID0gbWFr
ZUNHSW1hZ2VDb3B5KCk7CisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworCisgICAgQ0dGbG9h
dCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7CisgICAgQ0dGbG9hdCBkZXN0
WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55KCk7CisKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1h
Z2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGNnQ29udGV4dCk7CiB9CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFi
bGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCg==
</data>
<flag name="commit-queue"
          id="427948"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411662</attachid>
            <date>2020-10-17 02:25:21 -0700</date>
            <delta_ts>2020-10-19 09:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217573-20201017022520.patch</filename>
            <type>text/plain</type>
            <size>51179</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uMGNlZjkyYjg0MjNkODU3MTQ3MWJkZjA5MmQ5MjAy
MzE2MjQ0Y2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIwLTEwLTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBDbGVhbiB0aGUgRGlzcGxheUxpc3QgcmVjb3JkaW5nIG9mIHRoZSBOYXRpdmVJbWFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTcz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMSkgTW92
ZSB0aGUgZGVmaW5pdGlvbiBvZiBOYXRpdmVJbWFnZVB0ciB0byBhIHNlcGFyYXRlIGhlYWRlciBm
aWxlIG5hbWVkCisgICAgICAgICAgIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAyKSBSZW1vdmUg
dGhlIGNsYXNzIEltYWdlSGFuZGxlIGFuZCBhbGxvdyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgTmF0
aXZlSW1hZ2VQdHIKKyAgICAgICAgICAgZGlyZWN0bHkuCisgICAgICAgIDMpIFJlbW92ZSB0aGUg
Y29tcGlsYXRpb24gZGlyZWN0aXZlcyBhcm91bmQgdGhlIERpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2UKKyAgICAgICAgICAgaXRlbSBhbmQgdGhlIG1ldGhvZCBkcmF3TmF0aXZlSW1hZ2UoKS4K
KyAgICAgICAgNCkgTW92ZSB0aGUgZHJhd05hdGl2ZUltYWdlKCkgbWV0aG9kcyB0byB0aGUgc291
cmNlcyBvZiB0aGVpciBjYWxsZXJzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBseSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMTAt
MTcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNjg1NjEpOiBTeW50aGV0aWMgb2JsaXF1ZSB0ZXh0IGlzIGRyYXduIHVwc2lk
ZS1kb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGJkZTg4MTExZmZlOGY4MGQ1YTljMDM5NTU2ZDlhNDhmYmFjNDQ5
ODcuLjM4MmMzNDM1YzYxMDE4ZmIwYTFjZjkzYWFiYTc5YTVhZDZhMDQ5ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHRoZSBEaXNwbGF5
TGlzdCByZWNvcmRpbmcgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IGVuY29kaW5nIGFuZCBkZWNvZGluZyBO
YXRpdmVJbWFnZVB0ciBkaXJlY3RseS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoSVBDOjplbmNvZGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OmVuY29kZU9wdGlv
bmFsTmF0aXZlSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdl
UHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5k
bGU+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisKIDIwMjAt
MTAtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8g
bWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCAwM2Q1Mzg5YTRjNzJhZGU5MTVhZmFkY2E1NmNmZGNiZWFkYWEyNzQyLi43NTU2ODIwYTM4
YzM0MTAxODVlNzMyNDM4YTRlMTFkNWVkYjVmYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEx
OTgsNiArMTE5OCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNo
aW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjNhYzkxYTM4YmYxYWI5
YWE4NGZmZjlkZWNmYjUzMjM0OGU0MTY0Li4wNDhlYzJiNTY2NTc4OGIzM2Y2MWEzMDAzZWI1YjM2
MjM2NTViMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMDA5LDcgKzIwMDksNiBAQAogCQk2QTcyNzk4QjFGMTZDMjlDMDAz
RjM5QjggLyogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkE3Mjc5ODgxRjE2QzI5QjAwM0YzOUI4IC8qIEluc3Bl
Y3RvclNoYWRlclByb2dyYW0uaCAqLzsgfTsKIAkJNkIwQTA3RjIyMUZBNEI1QzAwRDU3MzkxIC8q
IEFkQ2xpY2tBdHRyaWJ1dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8qIEFkQ2xpY2tBdHRyaWJ1dGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZC
MUY0ODExMjI5OEEzN0UwMERFOEI4MiAvKiBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjFGNDgw
RjIyOTg5RUM0MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZCMzQ4MDk0
MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2
ZUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkI0RDQxMkQyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZEluU3RhdHVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRENDEyQjIzOTgzRjg4MDAy
NDk0QzIgLyogTG9nZ2VkSW5TdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2QjRFODYxMzIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFi
bGVEb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNTA3QTI0MjM0QkYz
NDEwMEJFN0M2MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjUwN0EyMTIzNEJGMzQxMDBCRTdDNjIgLyogTmF2
aWdhdG9ySXNMb2dnZWRJbi5oICovOyB9OwpAQCAtMjE1OSw2ICsyMTU4LDggQEAKIAkJNzI0RUQz
MzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAv
KiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAv
KiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURD
ODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5
MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAg
LyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNkQ1NkUz
MjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2
ZUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI3QTdGM0EyNDA3OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMz
QUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY3MjNE
NkE1MzIwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMg
LyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJp
bmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NDk4LDcgKzk0OTksNiBAQAog
CQk2QjBBMDdGMDIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFkQ2xpY2tBdHRyaWJ1dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2QjBBMDdGMTIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZCMUY0ODBGMjI5ODlFQzQwMERFOEI4MiAvKiBDcm9zc1NpdGVOYXZp
Z2F0aW9uRGF0YVRyYW5zZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzU2l0ZU5hdmlnYXRpb25E
YXRhVHJhbnNmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkIzNDgwOTIwRUVG
NTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOYXRpdmVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjRE
NDEyQjIzOTgzRjg4MDAyNDk0QzIgLyogTG9nZ2VkSW5TdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9nZ2VkSW5TdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RDQxMkMy
Mzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZEluU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvZ2dlZEluU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RTg2
MTIyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ2lzdHJhYmxlRG9tYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTI3
LDYgKzk5MjcsNyBAQAogCQk3MjY2RjAyODIyNDMxMjAzMDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9u
QWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFk
ZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjY2RjAyOTIyNDMxMkIxMDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMkEyMjQzMTQ5QjAwODMzOTc1IC8q
IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJv
cGVydHlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNkQ1NkUxMjUzQUUw
NDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFn
ZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAw
NDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJF
QTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVB
NkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JH
Qi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjE2NSwxMSArMTIxNjYsMTEg
QEAKIAkJQTM3QTQyRTIyNTI3QjQ5RDAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzdBNDJFMzI1MjdCNDlF
MDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEzOEE4N0EzMjUzOEJFRTcwMDM3QTQ3MiAvKiBHUFVQbGF0Zm9ybVR5cGVz
TWV0YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGxhdGZvcm1UeXBlc01ldGFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzQzNEQzVEMjUzQTE5OTIwMDYxRjMyQSAvKiBHUFVQbGF0
Zm9ybVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBsYXRmb3Jt
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODEyMDMyNTJFRTAw
NkNBRDA2IC8qIFVzZXJBZ2VudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVXNlckFnZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEzQUY5RDgzMjAzMjU2OTEwMDZDQUQwNiAvKiBVc2VyQWdlbnRJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUY5RDg0MjAzMjU2QTMwMDZDQUQwNiAvKiBVc2Vy
QWdlbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2Vy
QWdlbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQzNEQzVEMjUzQTE5
OTIwMDYxRjMyQSAvKiBHUFVQbGF0Zm9ybVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVBsYXRmb3JtVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTNENDJBODQxRjMzQkEzNjAwQTY0QjYyIC8qIExheW91dFVuaXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE0MDlDOTgyMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTQwOUM5ODMxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI2MjMyLDggKzI2MjMzLDggQEAKIAkJCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlN
RVR5cGVDYWNoZS5oICovLAogCQkJCTMxNEJFM0E0MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovLAogCQkJCTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAv
KiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKLQkJCQk2QjM0ODA5MjBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2UuaCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0Qzcg
LyogTmF0aXZlSW1hZ2UuaCAqLywKKwkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0
aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5j
cHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlB
ODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAg
LTMzMTg3LDcgKzMzMTg4LDggQEAKIAkJCQkzMTRCRTNBNzFCMzEwM0ZCMDAxNDE5ODIgLyogTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMzA5NzdE
M0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIx
RTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk2
QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTcyNkQ1NkUzMjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5h
dGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUy
OTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBhMTQxM2M2ZjY3OWIxNWU5MDdj
N2I2Y2ZhNzYwNWYyNzBlMmY5NTU3Li41NzQ0N2ZmMWFmMDQ2YzY0OGU4NGQ5NzZhYmYwMDYxMGJm
MDAyOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAt
MjQsNyArMjQsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjQ3NmEzNWI4MmQ5MzcwOGQzYjBmMmI0ZDFh
NmQyNTQ4MTJkMGUxMS4uYjFlZDRlNGU4NDc5OTdiNTljN2RmZDNkMjYxMDc1NjZjY2E0NzEzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
SW1hZ2VPYnNlcnZlci5oIgpAQCAtMjA0LDYgKzIwNSwyMSBAQCBib29sIEJpdG1hcEltYWdlOjpu
b3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCitzdGF0aWMgaW5s
aW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdp
dmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KKyAgICBJbnRTaXpl
IHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIGlmIChv
cHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKKyAgICAgICAgc3Vic2Ft
cGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKKwor
ICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQg
aW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgorICAg
IEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1wbGVk
SW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qo
c3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBs
ZWRJbWFnZVNpemUpKTsKKworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJz
YW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKK30K
KwogSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoZGVzdFJl
Y3QuaXNFbXB0eSgpIHx8IHNyY1JlY3QuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNTU1Y2M2NjQ1
NzBhMzRiZWE5OTVkZWNjZDUyYWM4NjFmNWZlMzE0NC4uMGRjMDU1N2IwZDRmMDcyZWRiOThiYzU4
YzEyOWI0MjFhODA4ZjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsNiArNzMxLDE5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0
IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7
CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFn
ZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGRiNGMwMDJlY2NkMjJlNmZlOTQwODdjNjlmOTEyOGQ0
Mjg5OTI3YmYuLjBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjljNzZmM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC0zMzQsMTAgKzMzNCw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykg
fHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVT
RShDRykgfHwgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAg
ICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CkBAIC0zODMsNiArMzc5LDggQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IGxpbmVXaWR0aCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJh
d1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1h
Z2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFn
ZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02NTIsNiArNjUwLDggQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYsIGNvbnN0IENvbG9yJik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOworCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50
aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgQ29s
b3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdpZHRoKGZs
b2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzZDUwNzViY2VkY2JmNTAyODcxY2Q1NTA5MzVm
NTFhYzhkYjJmNTVjLi5jMmNhZmUzMzZjYzU2OTk1ZGM0MGRlZDQwMTY3ZTY4M2I0MmE1N2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCkBAIC03Miw5ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQorCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSA9IDA7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggZDM5
ZmVhYTgyZjM3MWNmOGFhZjc2ZDI3ZjMzNTczZjM1MTk4ZDA4OS4uZWE0ZDYzYTk0ZWQ2Y2YwMjIz
ZmQ5ZWEwNTA4OGEzN2JkNzEyZDZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCkBAIC0zMiw4ICszMiw5IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIK
LSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAj
aW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgpAQCAtNzIsNyArNzMsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwogc3RydWN0IExlbmd0aDsK
IAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBk
ZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJh
bWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBmMGNmY2Q4YzVlN2FiNmM5NGM1YzNjMzZmNDgzODZk
MDFmLi41OGZjMTQ4MzZkOTJhYTIwMDE5ZjIwZmVlZGM1NTcxZTlhYjVlOTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aApAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgSG9zdFdpbmRvdzsK
IGNsYXNzIEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmgKaW5kZXggNmIyZDgxZTM1YjA4Y2Y3NGY0ZjM2MWFlYmM3NGYzMTI5YzdkOWI3Zi4u
MDMzNDc1OTYwN2Y4ZjIwZGUzMTI0ODU5YTZmMGYwOTQ1MWUxOGU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNo
IE1vYmlsZSwgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4KICAq
CkBAIC0yNyw1MiArMjcsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbWFnZVBh
aW50aW5nT3B0aW9ucy5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJUk8p
Ci0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVkZSAi
U2hhcmVkQml0bWFwLmgiCi0jZW5kaWYKLQotI2lmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRlICJD
T01QdHIuaCIKLSNpbmNsdWRlIDxkMmQxLmg+Ci0jaW5jbHVkZSA8d2luY29kZWMuaD4KLSNlbmRp
ZgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29sb3I7Ci1jbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbnRTaXplOwotY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwotCi0jaWYgVVNFKENHKQotdHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi10eXBlZGVmIENPTVB0cjxJ
RDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoQ0FJUk8pCi10eXBlZGVmIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKFdJTkdESSkK
LXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZW5kaWYKIAog
V0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwog
Q29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0
JiwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW50UmVjdCYgc291cmNlKTsKLQogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJik7CiAKLWNsYXNzIE5hdGl2ZUltYWdlSGFuZGxlIHsKLXB1YmxpYzoK
LSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLX07Ci0gICAgCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDc3
YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
K3R5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CisjZWxpZiBVU0UoQ0FJUk8pCisj
aW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNlbGlmIFVTRShXSU5HREkpCisjaW5jbHVkZSAiU2hh
cmVkQml0bWFwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENH
KQordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBV
U0UoRElSRUNUMkQpCit0eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7
CisjZWxpZiBVU0UoQ0FJUk8pCit0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2
ZUltYWdlUHRyOworI2VsaWYgVVNFKFdJTkdESSkKK3R5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1h
cD4gTmF0aXZlSW1hZ2VQdHI7CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCmluZGV4IGExMDQ2NTZjYjVkNWRkZWEwMzIxZGFhNDRhMDQ0NjUxNzUwODhlNGYuLjJhYjlj
ZTNiYmEyNWVhNTQ4NTQ0OGYzNGFhNzc3YWZlMDRlNzM0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKQEAgLTEyMywxNiArMTIzLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKICAg
ICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBib3JkZXJUaGlja25l
c3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9y
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkg
ewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBB
U1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3Rh
dGUoKTsKICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1h
Z2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVhMzdjNzg2ZWY2ZGI2ZTVhZmViOTE3Nzk4ZmE1MzFi
Zjk4YWM4NGQuLmMyOTJkYjQyY2MwZjlmMGY5YzQ3Yzc4ZWQ2OWMyZDgzMzFjOTgyMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxNiArMjgwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5z
Zm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0
YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2lt
cGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICNpZiAhTE9HX0RJU0FCTEVECiAg
ICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
SW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcAppbmRleCA1Y2M1YzIwN2I0NGE0ODM1YmUyZTA4MDI4YTNhNzEwOTVhNTVlMWUw
Li40MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApA
QCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4g
Y2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIC8vIFN1YnNhbXBsaW5nIG1h
eSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAg
ICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwot
ICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKLSAgICAg
ICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNp
emUoKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1
YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGlt
YWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChz
dWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9
IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0s
IHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRp
b25zKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJ
bnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKLXsKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNn
Q29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291
cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNn
Q29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRo
ID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOwotCi0gICAgQ0dG
bG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7Ci0gICAgQ0dGbG9hdCBk
ZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55KCk7Ci0KLSAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwg
aW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7Ci0KLSAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1Ymlt
YWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE2MzgzNjkyMWQ4ZGZjYTE2NjM4YmQ4NmFhOTMz
ZWZhN2UyNjRkODEuLmYxMjUzYTc2N2MzNDBiY2RkOWE1MzFhYWU0MGVlMzc4ZTlmYzNkZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw5ICs2Miw3IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCiAgICAg
RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShE
SVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCi0jZW5kaWYKICAgICBEcmF3UGF0dGVybiwK
ICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAppbmRleCBjN2EzOWQ4MzFjZTBmMGEzZmFmZTAxYjRiZWUxNThkZTM0ZGFiZGNlLi43
MjUyNjA5MmEyZWFiYmNiYWUwYmM4MWM0MDFiMWY5OTI3ZTRlYjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMDYsMTAgKzEwNiw4IEBAIHNpemVfdCBJdGVtOjpz
aXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25j
YXN0PERyYXdUaWxlZEltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVk
U2NhbGVkSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2Nh
bGVkSW1hZ2U+KGl0ZW0pKTsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8
RHJhd05hdGl2ZUltYWdlPihpdGVtKSk7Ci0jZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRl
bSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpAQCAtNjk4LDMyICs2OTYsMjEgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdU
aWxlZFNjYWxlZEltYWdlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotI2lmIFVTRShDRykg
fHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0
ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSNpZiBVU0UoQ0cpCi0gICAgLy8gRklYTUU6
IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2UgZm9yIENhaXJvLgogICAgICwgbV9pbWFnZShpbWFnZSkK
LSNlbmRpZgogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlv
blJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKICAgICAsIG1fb3B0aW9u
cyhvcHRpb25zKQogewotI2lmICFVU0UoQ0cpCi0gICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKLSNl
bmRpZgogfQogCiBEcmF3TmF0aXZlSW1hZ2U6On5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7
CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0CiB7Ci0jaWYgVVNFKENHKQogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1h
Z2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0jZW5kaWYKIH0KIAogc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJ
bWFnZSYgaXRlbSkKQEAgLTczNCw3ICs3MjEsNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CiAgICAg
cmV0dXJuIHRzOwogfQotI2VuZGlmCiAKIERyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdHRl
cm4pCkBAIC0xNDY0LDkgKzE0NTAsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ltYWdlOiB0cyA8PCAiZHJhdy1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdUaWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2Fs
ZWQtaW1hZ2UiOyBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFr
OwotI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBh
dHRlcm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXct
cmVjdCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1s
aW5lIjsgYnJlYWs7CkBAIC0xNTY2LDExICsxNTUwLDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2Nh
bGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERy
YXdQYXR0ZXJuPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAppbmRleCBmMGI1NGI0NDU2NDE5YmQwZTE3YWEwNWMyNjg1NGFmMWY3MmJjNzI2Li43
ZDM0NWNiNzhjNDViYTM3ZWU1NDNlOGM4MGIxNzBiZGVlNGQwNzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE0MjIsNyArMTQyMiw2IEBAIE9wdGlvbmFsPFJlZjxEcmF3
VGlsZWRTY2FsZWRJbWFnZT4+IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlCiAgICAgcmV0dXJuIERyYXdUaWxlZFNjYWxlZEltYWdlOjpjcmVhdGUoKmltYWdlSGFu
ZGxlLT5pbWFnZSwgKmRlc3RpbmF0aW9uLCAqc291cmNlLCAqdGlsZVNjYWxlRmFjdG9yLCBoUnVs
ZSwgdlJ1bGUsICppbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVT
RShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGlj
IERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4g
Y3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNDQ1LDkgKzE0NDQs
NyBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
UmVjdDsgfQogCi0jaWYgVVNFKENHKQogICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0jZW5k
aWYKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRp
b25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNDU3LDEwICsxNDU0LDcgQEAg
cHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIE5hdGl2
ZUltYWdlSGFuZGxlIGhhbmRsZSB7IG1faW1hZ2UgfTsKLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
LSNlbmRpZgorICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VT
aXplOwogICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBt
X3NyY1JlY3Q7CkBAIC0xNDcwLDEyICsxNDY0LDEwIEBAIHZvaWQgRHJhd05hdGl2ZUltYWdlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBP
cHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSNpZiBVU0UoQ0cpCi0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VI
YW5kbGU+IGhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGhhbmRsZTsKLSAgICBpZiAoIWhhbmRsZSkK
KyAgICBPcHRpb25hbDxOYXRpdmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgZGVjb2RlciA+PiBpbWFn
ZTsKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlm
CiAKICAgICBPcHRpb25hbDxGbG9hdFNpemU+IGltYWdlU2l6ZTsKICAgICBkZWNvZGVyID4+IGlt
YWdlU2l6ZTsKQEAgLTE0OTcsMTQgKzE0ODksOCBAQCBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUlt
YWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSNpZiBVU0UoQ0cpCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBoYW5kbGUtPmltYWdlOwotI2Vsc2UKLSAgICBOYXRp
dmVJbWFnZVB0ciBpbWFnZSA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICByZXR1cm4gRHJhd05hdGl2
ZUltYWdlOjpjcmVhdGUoaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNS
ZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCppbWFn
ZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKIH0K
LSNlbmRpZgogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJs
aWM6CkBAIC0yOTYzLDExICsyOTQ5LDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAg
ICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwog
ICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJE
KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8
PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0jZW5k
aWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgZW5jb2RlciA8PCBk
b3duY2FzdDxEcmF3UGF0dGVybj4oKnRoaXMpOwogICAgICAgICBicmVhazsKQEAgLTMxNTQsMTIg
KzMxMzgsMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNv
ZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0
ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0Uo
Q0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShkZWNv
ZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RG
TW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1BhdHRlcm46OmRlY29k
ZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRl
bT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzMxNiw5ICszMjk4LDcgQEAgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdHbHlwaHMpCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZFNjYWxlZEltYWdlKQotI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdOYXRp
dmVJbWFnZSkKLSNlbmRpZgogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERy
YXdSZWN0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5l
KQpAQCAtMzM3OCw5ICszMzU4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdUaWxlZEltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJF
Q1QyRCkKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZSwKLSNlbmRpZgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRl
cm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDFjNTRhZTgyMjkzOTQyMGRkNDBiN2I3MGJh
N2UzOWRiYmE2NWZlOWIuLmNmMjZjODI4OWMwZmVkOWU2MzMwZTc0NjMzMTRmYTIzNjk2ODA2M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEzMiwxMiAr
MTMyLDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkUmVjb3JkOwogfQogCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShE
SVJFQ1QyRCkKIHZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05h
dGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpKTsKIH0KLSNlbmRpZgogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAppbmRleCA5ZWUxZDM5MzhmMjMyZjNmMThkOTc4YWY3MTg3MDFkOGJlNDYzMDcyLi4xYjI0YzI2
YzY3Mjg4ZjgxNzI3M2EyZDJhZWYyYjRiYzk2ZTM1Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKQEAgLTEwNCw5ICsxMDQsOCBAQCBwcml2YXRlOgogICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpU
aWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElS
RUNUMkQpCisKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKLSNlbmRpZgogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjMxZDM3
NWIwMmRhMDk3OTI4OWFjYzIwMGRkODYyZmFlMTM0MTA0Yi4uNGI1ZTNlNDNiMDM5NjRhNTFjMjcz
ZTViZTdhZWRiMGRmMWFhOTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29t
bW9uLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluVGhy
ZWFkTm90aWZpZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdl
QnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDE4YjRmOGRlOTcxNzBjZTY0NGViNjRi
ZTNlYWI4NTdmM2E3NDMyZjQuLjYyOThjZjM2MDczYzdhZTQ0ZjQzYzZiNTY0NDIyYjM3Yjg2Y2Yx
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlclBp
cGUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIk5pY29zaWFDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDM3NDA3MTcxNWJjYjc5MWQ1ODlkNTBkOTli
MjljNjZiMDEwYjcwODEuLjU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVjOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDE2ICsyMDcsMTEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3Qy
RDo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01Q
dHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwt
PmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1D
b250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3Qy
RDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6
U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDI1MzI4NzMxOGNmNGNiNzk3OGFjMWYzOTA2YzExYzFiODZkYTQ2NTQuLjA1ODU3
N2U1ZjdkZWI2ZDJiZGYyNWIxYzc1NTM1NmY5NmFkZjg4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE3LDYgKzIxNyw3IEBAIGRlZiB0eXBlc190aGF0
X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKICAgICAgICAgJ1dlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQ
b2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDA4MTEyMTRhMTA4Mzc3YjE3
NzVkMmNmYjc2NDg0NjQxZTIzZDFkM2EuLjMzNzk1OTZiZTY5ZDkyNGFlMGNhNmQ4ZjlmMWZmYjAx
YjIwYzNkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25V
bmRlcmxpbmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0N1cnNvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NQ2FjaGVFbmdpbmUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlj
dGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cElu
Zm8uaD4KQEAgLTEwOTksNyArMTEwMCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRs
ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXIm
IGVuY29kZXIsIE5hdGl2ZUltYWdlUHRyIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZl
SW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewog
ICAgIGF1dG8gaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKICAgICBhdXRvIGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsK
QEAgLTExNDIsNyArMTE0Myw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2Rl
ciYgZW5jb2RlciwgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRp
b25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKIHsKICAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKICAgICBlbmNvZGVyIDw8IGhh
c0ltYWdlOwpAQCAtMTE2NSwxNCArMTE2NiwxNCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgog
ICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLXZvaWQg
QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBOYXRpdmVJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCit2b2lkIEFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQogewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2Rl
ciwgaW1hZ2VIYW5kbGUuaW1hZ2UuZ2V0KCkpOworICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1h
Z2UoZW5jb2RlciwgaW1hZ2UpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VI
YW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdl
SGFuZGxlKQorYm9vbCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gZGVjb2Rl
T3B0aW9uYWxOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZSk7CisgICAgcmV0
dXJuIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCiB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNWM1MjNlODgyZTAzZGY3ZTVjY2ZjMTJlNDVkNzhmYjQx
MDMzYmI5MC4uNjQ1OWZhNDFlZThlN2FiMTMyMGVlMjdkMjJlNjk3NDEzNTk0MzA5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC0xMDks
NyArMTEwLDYgQEAgY2xhc3MgS2V5ZnJhbWVWYWx1ZUxpc3Q7CiBjbGFzcyBMYXlvdXRTaXplOwog
Y2xhc3MgTGF5b3V0UG9pbnQ7CiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbjsKLWNsYXNzIE5h
dGl2ZUltYWdlSGFuZGxlOwogY2xhc3MgTm90aWZpY2F0aW9uOwogY2xhc3MgUGFzdGVib2FyZEN1
c3RvbURhdGE7CiBjbGFzcyBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOwpAQCAtNDE5
LDkgKzQxOSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1h
Z2VIYW5kbGU+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZT4gewotICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsK
LSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcAppbmRleCA3MzBkYTY0OGYyYjJmZTllNzg0ZmQwNDA1MmUxOTBmMGQwYmYyMWFkLi45
NTlkYTgzZDVmNjk4OGIyMTE1ODhkYTdkZGI0ZmYxODNkY2U3ZDYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDYsMTIgKzEwNiwyNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW50UmVjdCYgc291cmNlKQogewotICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFn
ZUNvcHkoKSwgY29udGV4dCwgMSwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgcGFpbnQoY29u
dGV4dCwgMSwgZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFw
OjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFj
dG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkK
IHsKLSAgICBkcmF3TmF0aXZlSW1hZ2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIHNjYWxl
RmFjdG9yLCBkZXN0aW5hdGlvbiwgc291cmNlKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNn
Q29udGV4dCk7CisKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFr
ZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJj
ZS5oZWlnaHQoKSkpOworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwor
CisgICAgYXV0byBpbWFnZSA9IG1ha2VDR0ltYWdlQ29weSgpOworICAgIENHRmxvYXQgaW1hZ2VI
ZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworICAg
IENHRmxvYXQgaW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgLyBzY2Fs
ZUZhY3RvcjsKKworICAgIENHRmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2Uu
eCgpOworICAgIENHRmxvYXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkg
KyBzb3VyY2UueSgpOworCisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNnQ29udGV4dCwgQ0dSZWN0
TWFrZShkZXN0WCwgZGVzdFksIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkp
OworCisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOwogfQogCiBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>