<?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>217342</bug_id>
          
          <creation_ts>2020-10-05 15:13:29 -0700</creation_ts>
          <short_desc>[GPU Process] Implement GPU rendering resource cache</short_desc>
          <delta_ts>2021-03-05 10:50:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</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>217166</dependson>
    
    <dependson>217550</dependson>
    
    <dependson>217554</dependson>
    
    <dependson>217558</dependson>
    
    <dependson>217566</dependson>
    
    <dependson>217573</dependson>
    
    <dependson>217596</dependson>
    
    <dependson>217809</dependson>
    
    <dependson>218472</dependson>
    
    <dependson>218529</dependson>
    
    <dependson>218839</dependson>
    
    <dependson>218843</dependson>
    
    <dependson>218865</dependson>
    
    <dependson>218871</dependson>
    
    <dependson>218934</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694887</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-05 15:13:29 -0700</bug_when>
    <thetext>All the rendering resources, such as ImageFrames, Fonts and ImageBuffers will be cached in the GPU side. Managing this cache will be done by RemoteRenderingBackend and RemoteRenderingBackendProxy. Both of these objects will have a separate objects for maintaining the cached objects. The goal is to have these objects cached once and referenced by their ids multiple times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694900</commentid>
    <comment_count>1</comment_count>
      <attachid>410571</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-05 15:33:06 -0700</bug_when>
    <thetext>Created attachment 410571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694985</commentid>
    <comment_count>2</comment_count>
      <attachid>410597</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-05 18:09:14 -0700</bug_when>
    <thetext>Created attachment 410597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695033</commentid>
    <comment_count>3</comment_count>
      <attachid>410613</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-05 22:25:23 -0700</bug_when>
    <thetext>Created attachment 410613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695049</commentid>
    <comment_count>4</comment_count>
      <attachid>410617</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-05 23:40:34 -0700</bug_when>
    <thetext>Created attachment 410617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695463</commentid>
    <comment_count>5</comment_count>
      <attachid>410617</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-10-06 22:27:19 -0700</bug_when>
    <thetext>Comment on attachment 410617
Patch

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

It seems like there will be 3 or 4 patches in here once this is broken up. I&apos;ll review those in more detail (just because this one is pretty big).

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:795
&gt; +    if (m_impl &amp;&amp; image.isPDFDocumentImage())

Why is this relevant?

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:-292
&gt; -    if (m_impl) {
&gt; -        m_impl-&gt;drawNativeImage(image, imageSize, destRect, srcRect, options);
&gt; -        return;
&gt; -    }
&gt; -

This is surprising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695481</commentid>
    <comment_count>6</comment_count>
      <attachid>410738</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-07 02:00:19 -0700</bug_when>
    <thetext>Created attachment 410738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695482</commentid>
    <comment_count>7</comment_count>
      <attachid>410739</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-07 02:17:19 -0700</bug_when>
    <thetext>Created attachment 410739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695485</commentid>
    <comment_count>8</comment_count>
      <attachid>410740</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-07 02:25:44 -0700</bug_when>
    <thetext>Created attachment 410740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696110</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-08 19:46:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/70122760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717661</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-06 09:16:21 -0800</bug_when>
    <thetext>Is this patch still useful?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736429</commentid>
    <comment_count>11</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-03-05 10:50:02 -0800</bug_when>
    <thetext>The attached patch was split and landed separately in the blocking bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410571</attachid>
            <date>2020-10-05 15:33:06 -0700</date>
            <delta_ts>2020-10-05 18:09:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217342-20201005153305.patch</filename>
            <type>text/plain</type>
            <size>170352</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlYWFjNDQxMTQ2ZjU4
NzZjNDY3ZGUwZmQzYjNmYWE0YjU3MTJjNC4uYjIxNGM2NTQwMDZjNWRmZmZhZjEzODAwZDA4OTg1
NzdiZDYxMzQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTEwLTA1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBJbXBsZW1lbnQgR1BVIHJlbmRlcmluZyByZXNvdXJjZSBjYWNoZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzQyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHdvcmsgaW4g
cHJvZ3Jlc3MgcGF0Y2guIFRoZSBnb2FsIGlzIHRvIGdldCB0aGUgRVdTIGJvdHMgY2xlYW4gCisg
ICAgICAgIGZpcnN0LiBUaGVuIGl0IG1heSBiZSBzcGxpdCBpbnRvIHNtYWxsZXIgcGF0Y2hlcy4K
KworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2
ZXI6OmRyYXdJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNo
ZWRJbWFnZU9ic2VydmVyOjppbWFnZUZyYW1lV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZUZyYW1lV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50Ojpp
bWFnZUZyYW1lV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3SW1hZ2VGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0dQVUJhZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUZyYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmguCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpE
cmF3aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZm
ZXI6OkRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0ltYWdlQnVmZmVyOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6bmF0aXZlSW1hZ2VQdHIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6aW1h
Z2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpzb3VyY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVzdGluYXRp
b25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd05hdGl2ZUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNsaWVudDo6flJlbW90ZUNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNsaWVu
dDo6ZmluZEltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6UmVtb3RlQ2xpZW50OjpmaW5kTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZW1vdGVDbGllbnQ6OndpbGxBcHBlbmRJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6On5PYnNl
cnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
Ok9ic2VydmVyOjp3aWxsQXBwZW5kSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWxsb3dlZEVsZW1lbnRTZXQp
OgorCiAyMDIwLTEwLTA1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgc3VwcG9ydCBmb3IgZW5hYmxpbmcgc3VicGl4ZWwgQ1NTT00gdmFsdWVzLCBpdCdz
IG9mZiBieSBkZWZhdWx0IGV2ZXJ5d2hlcmUgYW5kIGtub3duIHRvIGJlIG5vdC1jb21wYXRpYmxl
IHdpdGggdGhlIHdlYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MTQ0MDBmZmNkYzQzZmI3YWUzODcxNDg2Njc2ZjY4
ZGZlOGU3ZjdhLi5kNDc5Nzk1OWVhOTFiMzY4ZTFlNWI3YzA3NmQ0ZjU2ODViMDllM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0xMC0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50
IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92
ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjphcHBseVJlc291cmNlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVO
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3R1BVQmFk
Z2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRy
YXdOYXRpdmVJbWFnZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmRyYXdJbWFnZUJ1ZmZlckl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjplbmNvZGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjplbmNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFu
ZGxlPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6
On5SZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
OjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkcmF3R1BVQmFkZ2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmROYXRpdmVJ
bWFnZUZvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1
c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVt
b3RlUmVzb3VyY2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6
OnNob3VsZERyYXdHUFVCYWRnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OmRyYXdHUFVCYWRnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6ZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1h
Z2VGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxl
YXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjph
ZGRSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmVuc3VyZVJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUltYWdlQnVmZmVyIGNvbnN0KToKKwogMjAyMC0xMC0wNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGVuYWJsaW5nIHN1YnBpeGVs
IENTU09NIHZhbHVlcywgaXQncyBvZmYgYnkgZGVmYXVsdCBldmVyeXdoZXJlIGFuZCBrbm93biB0
byBiZSBub3QtY29tcGF0aWJsZSB3aXRoIHRoZSB3ZWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZjA0MTBhMGU4Yzc4ZmJmYzBm
NzFjMjBlNDMzNGUwMTM2NTMwYzQ2Li5jNjA0NzExNGNmODY1NWU1NmI1YTZhYzY0YTZhZGM4ZmEx
ZGM2NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yMTY3LDYgKzIxNjcsOCBAQAogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4
ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JF
RjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMg
LyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVy
QmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQkVGQTFBMjUxQkVG
RkUwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkVGQTE5MjUxQkVGRkQwMERENzhEMiAv
KiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3MkRDQTFFODI1MjNERkMwMDBDOUIyMEQgLyogTmF0aXZl
SW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyRENBMUU2MjUyM0RFNTUwMEM5QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0Yw
MEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1l
bGluZVJlY29yZEZhY3RvcnkuaCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8q
IE1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU3OTNFODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovOyB9Owog
CQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUM3MEQwQ0U3MkQwMDdG
QzBBQyAvKiBKU01lc3NhZ2VFdmVudC5oICovOyB9OwpAQCAtOTkzMiw3ICs5OTM0LDkgQEAKIAkJ
NzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQUMyM0UxRTU0NTAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQUQyM0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dC
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQ0dC
YWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQkVGQTE5MjUxQkVGRkQw
MERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5n
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVBhaW50aW5nT3B0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0aXZl
SW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyog
SlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUg
LyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjE5Nyw2ICsyNjIw
MSw3IEBACiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZS5oICovLAogCQkJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFn
ZS5oICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICov
LAorCQkJCTcyRENBMUU2MjUyM0RFNTUwMEM5QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAog
CQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1
MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMw
Mjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovLApAQCAtMjYyMTQsNiArMjYyMTksNyBA
QAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAq
LywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlC
Q0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCisJCQkJNzJCRUZBMTkyNTFC
RUZGRDAwREQ3OEQyIC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovLAogCQkJCTA3M0Ex
NTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDcz
QTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5
OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLywKQEAgLTMxMTgwLDkg
KzMxMTg2LDcgQEAKIAkJCQk4MzVENTRDNTFGNERFNTM4MDBFNjA2NzEgLyogRGlyZWN0b3J5Rmls
ZUxpc3RDcmVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDdBMDlEMTIwQTkzQTk3MDAyNDBG
QUUgLyogRGlzYWJsZWRBZGFwdGF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VEQUFGQzkx
OUEyQ0NEQzAwMzRERkQxIC8qIERpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIExheW91dEludGVncmF0aW9uSW5saW5l
Q29udGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTBGNDIyNTE3Q0U2RTAwOUJBMDM0IC8q
IERpc3BsYXlMYXllckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGQjQ3RTYzMjI3
NzQyNUEwMEM3QkNCMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBE
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMTk1LDcgKzMxMTk5
LDYgQEAKIAkJCQkyRDI5RUNDQTE5MkYxRjFEMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25p
dG9ySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREU3MDAyMzE5MkZFODJBMDBCMDk3NUMgLyog
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNDODE5
MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNkZDRTFBMUEyMjYxOEFCRDAwNEYwMzQzIC8qIExheW91dEludGVncmF0aW9u
UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc5MEY0MzI1MTdDRTZFMDA5QkEwMzQgLyogRGlz
cGxheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAv
KiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhE
IC8qIERpc3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxODg2LDYgKzMxODg5
LDcgQEAKIAkJCQk2RkMzRjk0NzI1MTY3NTY3MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1bi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjQ1Nzc1Q0UyNDE0MzdENTAwMkRGMUEwIC8qIElubGluZVBhdGhE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjQwREE4MjI1MTMwMzNBMDBFQzA0QjcgLyogSW5s
aW5lUmVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTREMzNGM0IyNTJBRUVDRDAwODM3RDA1IC8q
IElubGluZVJ1bkFuZE9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBFNTAyMzk5OTQy
MTAwMTUxMkE3IC8qIElubGluZVNvZnRMaW5lQnJlYWtJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogSW5saW5lU3R5bGVTaGVldE93bmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJv
eC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjg1NCw4ICszMjg1OCwxMSBAQAogCQkJCTZGMEI5OEI1
MjNGMjY4RUMwMEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1MUM2MzQyMzk0MDU4
RjAwOTkzMTkwIC8qIExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIExheW91dEludGVncmF0aW9uTGlu
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIExheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwM0I3QTMyNTFC
MTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNkZDRTFBMUEyMjYxOEFCRDAwNEYwMzQzIC8qIExheW91dEludGVncmF0aW9uUnVu
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEE2NjRDQzI1MjFENEFGMDA3MDgxREMgLyogTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0YyNTIx
RDRFMjAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNEE2NjRDRTI1MjFENEM5MDA3MDgxREMgLyogTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovLApAQCAtMzMxMTgs
NiArMzMxMjUsNyBAQAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1l
Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAv
KiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJEQ0ExRTgyNTIzREZDMDAwQzlC
MjBEIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJD
RDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEw
QjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtMzM0ODgsNiArMzM0OTYsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3
RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEy
RTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJCRUZBMUEyNTFCRUZGRTAwREQ3OEQyIC8q
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQy
MTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NzU5LDcgKzM0NzY4LDYgQEAKIAkJCQlFMUVFOEI5
OTI0MTMxOTUwMDBFNzk0RDYgLyogWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTEyQTlGNEEyNDhBOTlFMjAwM0YwNkM4IC8qIFhSSW50ZXJhY3Rpb25Nb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI4NDI0MTMxOTFGMDBFNzk0RDYgLyogWFJSZWZl
cmVuY2VTcGFjZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEQzM0YzQjI1MkFFRUNEMDA4
MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI3
NzI0MTMxOTFGMDBFNzk0RDYgLyogWFJSZWZlcmVuY2VTcGFjZVR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxRUU4Qjc5MjQxMzE5MUYwMEU3OTRENiAvKiBYUlJlbmRlclN0YXRlSW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCOEQyNDEzMTk1MDAwRTc5NEQ2IC8qIFhSU2Vzc2lvbkV2
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXgg
MzkyOTZhODk4YjZhZTExNTcwMjNlMDU3MWExNzBmMmQ2NTE4NjQ2NC4uMDVlZTA0MDMxZGYwNzZk
ODUwMDk0NDE2NjBhZjE3Njk0Yjc5MjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKQEAgLTYwMiwxMCArNjAyLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVjb2RlZFNpemVD
aGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KIAorICAgIHZvaWQg
ZHJhd0ltYWdlRnJhbWUoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgfQorICAgIAogICAgIHZvaWQgZGlkRHJhdyhj
b25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERh
dGEoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBpbWFn
ZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3Qg
SW50UmVjdCogPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGltYWdlRnJhbWVXaWxsQmVEZXN0cm95ZWQoY29u
c3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpIG92ZXJyaWRlIHsgfQorCiAgICAgdm9p
ZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBv
dmVycmlkZSB7IH0KICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3Qg
SW1hZ2UmKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKaW5kZXggM2ZhMTgxN2E5ZDY2NjhmYjQzM2IxYmQ0NWM2MDg2MmYwYzM4N2Rk
Ni4uOTBjNDA4MzQ5ZGI5Y2Q1NmMwZDU5ZmVlNzFmMjE2OGY3ZDRmMzBlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00MTEsNiArNDExLDE3IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRlY29kZWRTaXplQ2hhbmdl
ZChjb25zdCBJbWFnZSYgaW1hZ2UsIGxvCiAgICAgICAgIGNhY2hlZEltYWdlLT5kZWNvZGVkU2l6
ZUNoYW5nZWQoaW1hZ2UsIGRlbHRhKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1h
Z2VPYnNlcnZlcjo6ZHJhd0ltYWdlRnJhbWUoY29uc3QgSW1hZ2UmIGltYWdlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgZm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAg
aWYgKCZpbWFnZSAhPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUZyYW1lKCpjYWNoZWRJbWFnZSwgbmF0aXZlSW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwogdm9pZCBDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZGlkRHJhdyhjb25zdCBJbWFnZSYgaW1hZ2UpCiB7CiAg
ICAgZm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCkBAIC00MzQsNiArNDQ1
LDEyIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVB
dmFpbGFibGUoY29uc3QgSW1hZ2UmIGltYWdlLCBJCiAgICAgICAgIGNhY2hlZEltYWdlLT5pbWFn
ZUZyYW1lQXZhaWxhYmxlKGltYWdlLCBhbmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCwgZGVjb2Rp
bmdTdGF0dXMpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpp
bWFnZUZyYW1lV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgTmF0aXZl
SW1hZ2VQdHImIG5hdGl2ZUltYWdlKQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1f
Y2FjaGVkSW1hZ2VzKQorICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZVdpbGxCZURlc3Ry
b3llZChpbWFnZSwgbmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJ
bWFnZU9ic2VydmVyOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50
UmVjdCogcmVjdCkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdl
cykKQEAgLTY4OSw2ICs3MDYsMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWls
YWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUgYW4KICAgICAgICAg
bV9jbGllbnRzV2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcuY2xlYXIoKTsKIH0KIAordm9pZCBDYWNo
ZWRJbWFnZTo6aW1hZ2VGcmFtZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1f
aW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZEltYWdlQ2xpZW50PiBjbGllbnRXYWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAo
Q2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCA9IGNsaWVudFdhbGtlci5uZXh0KCkpCisgICAgICAg
IGNsaWVudC0+aW1hZ2VGcmFtZVdpbGxCZURlc3Ryb3llZChuYXRpdmVJbWFnZSk7Cit9CisKIHZv
aWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJ
bnRSZWN0KiByZWN0KQogewogICAgIGlmICgmaW1hZ2UgIT0gbV9pbWFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggMmEwMmJlODVmMWEwNTUyMmY1OWI0
NGI1YWEyNjdhYTlmOTdmOGQ3Zi4uNTM5YjM4ODI3OTk1YTZjMTQwMDIwN2FjZDA4OTcwNjMwNzI1
N2U5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTE0
OSwxMCArMTQ5LDE0IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBlbmNvZGVkRGF0YVN0YXR1
c0NoYW5nZWQoY29uc3QgSW1hZ2UmLCBFbmNvZGVkRGF0YVN0YXR1cykgZmluYWw7CiAgICAgICAg
IHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBsb25nIGRlbHRhKSBm
aW5hbDsKKworICAgICAgICB2b2lkIGRyYXdJbWFnZUZyYW1lKGNvbnN0IEltYWdlJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZERy
YXcoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVk
RGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFi
bGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCkgZmluYWw7CisgICAgICAgIHZvaWQgaW1hZ2VGcmFtZVdpbGxCZURlc3Ryb3llZChjb25zdCBJ
bWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgZmluYWw7CisgICAgICAgIAogICAgICAgICB2
b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KikgZmluYWw7CiAg
ICAgICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIGZp
bmFsOwogCkBAIC0xNjQsNiArMTY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERyYXcoY29u
c3QgSW1hZ2UmKTsKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYp
OwogICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0
aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0
YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGltYWdlRnJhbWVXaWxs
QmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIHZv
aWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lk
IHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAppbmRleCAyOTVlNjU2
YWIxZWJjMWI5MGZkMWFjZTc4M2QzNDE5YzJmNjlhMDhiLi43ZWRkYzJjZDk4ZmRlY2YzMWJlODI0
NTQxZDllYjBhYWNmMWY3NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2VDbGllbnQuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCisjaW5jbHVkZSAiTmF0
aXZlSW1hZ2VQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw2ICs0Nyw4IEBA
IHB1YmxpYzoKIAogICAgIC8vIENhbGxlZCB3aGVuIGEgbmV3IGRlY29kZWQgZnJhbWUgZm9yIGEg
bGFyZ2UgaW1hZ2UgaXMgYXZhaWxhYmxlIG9yIHdoZW4gYW4gYW5pbWF0ZWQgaW1hZ2UgaXMgcmVh
ZHkgdG8gYWR2YW5jZSB0byB0aGUgbmV4dCBmcmFtZS4KICAgICB2aXJ0dWFsIFZpc2libGVJblZp
ZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYgaW1hZ2UsIEltYWdl
QW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpIHsgaW1hZ2VDaGFuZ2Vk
KCZpbWFnZSwgY2hhbmdlUmVjdCk7IHJldHVybiBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObzsg
fQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lV2lsbEJlRGVzdHJveWVkKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2FjaGVk
SW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0NzZhMzViODJkOTM3MDhkM2Iw
ZjJiNGQxYTZkMjU0ODEyZDBlMTEuLmU1NjRlMjE1NTFkNDdmMWY3OTdjMGE4OWY2ZDU0MTJkMDg2
NmE3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUsMjQgQEAgYm9vbCBCaXRtYXBJ
bWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAorc3Rh
dGljIHZvaWQgZHJhd0ltYWdlRnJhbWUoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgbmF0aXZlSW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICAv
LyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIg
dGhhbiBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1h
Z2VTaXplKG5hdGl2ZUltYWdlKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNX
aWR0aEFzSGVpZ2h0KCkpCisgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVk
SW1hZ2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBj
b29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBp
dCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0
ID0gc3JjUmVjdDsKKyAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQorICAg
ICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNy
Y1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CisKKyAgICBpZiAo
aW1hZ2UuaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZS5pbWFnZU9ic2VydmVyKCktPmRy
YXdJbWFnZUZyYW1lKGltYWdlLCBjb250ZXh0LCBuYXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdl
U2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAg
ICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdl
U2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJh
d1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHko
KSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKQEAgLTI5Miw5ICszMTEsOSBAQCBJbWFnZURyYXdSZXN1
bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24gPSBvcHRpb25zLm9yaWVudGF0aW9uKCk7
CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgewog
ICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwg
c3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRp
b24gfSk7CisgICAgICAgIGRyYXdJbWFnZUZyYW1lKCp0aGlzLCBpbWFnZSwgY29udGV4dCwgZGVz
dFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9y
aWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRpb24pKSwg
b3B0aW9ucyk7CisgICAgICAgIGRyYXdJbWFnZUZyYW1lKCp0aGlzLCBpbWFnZSwgY29udGV4dCwg
ZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShvcmllbnRhdGlvbikpLCBvcHRpb25zKTsK
IAogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVz
QXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDI2NWNiNTdkMzkzOTUwMzhh
NjI5ZjM1YmNkNjg2M2FhNDQ0MzljNjcuLjZmOGNiYjlkZjJiMDdiYTUyMzgwZTNlZWFmNTlmMGQ0
NjZiODQ3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDI1LDYgKzQyNSw0MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cmVzdG9yZSgpCiAgICAgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdHUFVCYWRnZShjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJl
Y3QsIGNvbnN0IEZsb2F0UG9pbnQmIGJhZGdlUG9zaXRpb24sIGNvbnN0IENvbG9yJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqdGhpcyk7CisKKyAgICBzZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgIHNl
dFN0cm9rZUNvbG9yKGNvbG9yKTsKKyAgICBzdHJva2VSZWN0KGNvbnRhaW5lclJlY3QsIDAuNSk7
CisKKyAgICBjb25zdCB1bnNpZ25lZCBmb250U2l6ZSA9IDEwOworICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkFyaWFsIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNp
emUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOworICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOworCisg
ICAgRm9udENhc2NhZGUgY2FzY2FkZShXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGNh
c2NhZGUudXBkYXRlKG51bGxwdHIpOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKHRleHQpOworICAg
IGZsb2F0IHRleHRXaWR0aCA9IGNhc2NhZGUud2lkdGgodGV4dFJ1bik7CisgICAgCisgICAgRmxv
YXRSZWN0IGJhZGdlUmVjdChiYWRnZVBvc2l0aW9uLCBGbG9hdFNpemUodGV4dFdpZHRoICsgMiwg
Zm9udFNpemUgKyAyKSk7CisgICAgaWYgKGJhZGdlUG9zaXRpb24ueCgpID09IGNvbnRhaW5lclJl
Y3QubWF4WCgpKQorICAgICAgICBiYWRnZVJlY3Quc2V0WChiYWRnZVBvc2l0aW9uLngoKSAtIGJh
ZGdlUmVjdC53aWR0aCgpKTsKKworICAgIGlmIChiYWRnZVBvc2l0aW9uLnkoKSA9PSBjb250YWlu
ZXJSZWN0Lm1heFkoKSkKKyAgICAgICAgYmFkZ2VSZWN0LnNldFkoYmFkZ2VQb3NpdGlvbi55KCkg
LSBiYWRnZVJlY3QuaGVpZ2h0KCkpOworCisgICAgZmlsbFJlY3QoYmFkZ2VSZWN0LCBjb2xvcik7
CisgICAgCisgICAgc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7CisgICAgY2FzY2FkZS5kcmF3
VGV4dCgqdGhpcywgdGV4dFJ1biwgRmxvYXRQb2ludChiYWRnZVJlY3QueCgpICsgMSwgYmFkZ2VS
ZWN0LnkoKSArIDEgKyBmb250U2l6ZSkpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgZWxsaXBz
ZUNvbG9yLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKQEAgLTcyOSw2ICs3NjMsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdC
aWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAg
IGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VG
cmFtZShDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRyYXdJbWFnZUZyYW1lKGNhY2hlZEltYWdlLCBp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpCisgICAgICAgIHJl
dHVybjsKKworICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAg
cmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXpl
KCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5n
T3B0aW9ucyk7CkBAIC03NDUsNyArNzkwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdl
LmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2Uo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzU3LDcgKzgwMiw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwp
CisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9u
cy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc3MCw3ICs4MTUsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlm
IChtX2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBt
X2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2Nh
bGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1h
Z2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpAQCAtNzk3
LDYgKzg0Miw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAg
ICAgIHJldHVybjsKKwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKICAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRp
b25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggMDg4ZjJlNTM5NmI5YjQzODU4ODdlYzAxZmFjYThlN2RkOTBlMTgw
Ny4uM2Y4ZTY0ZDJmMzI0NTBjMTFlYzYzNjEyNGM3NjFhODc1ZTcwN2YxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg2
LDYgKzg2LDcgQEAgY2xhc3MgR2x5cGhCdWZmZXI7CiAjZW5kaWYKIAogY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOworY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xh
c3MgR3JhZGllbnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwpAQCAtMzU1LDYgKzM1Niw4
IEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBzdGFja1NpemUoKSBjb25zdCB7IHJldHVy
biBtX3N0YWNrLnNpemUoKTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3R1BVQmFk
Z2UoY29uc3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBiYWRn
ZVBvc2l0aW9uLCBjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgdGV4dCk7CisgICAgCiAgICAg
Ly8gVGhlc2UgZHJhdyBtZXRob2RzIHdpbGwgZG8gYm90aCBzdHJva2luZyBhbmQgZmlsbGluZy4K
ICAgICAvLyBGSVhNRTogLi4uZXhjZXB0IGRyYXdSZWN0KCksIHdoaWNoIGZpbGxzIHByb3Blcmx5
IGJ1dCBhbHdheXMgc3Ryb2tlcwogICAgIC8vIHVzaW5nIGEgMS1waXhlbCBzdHJva2UgaW5zZXQg
ZnJvbSB0aGUgcmVjdCBib3JkZXJzIChvZiB0aGUgY29ycmVjdApAQCAtMzgyLDYgKzM4NSw4IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9h
dFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCisgICAgdm9pZCBkcmF3SW1hZ2VGcmFtZShDYWNo
ZWRJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKwogICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9u
OjpGcm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGJj
OWMxYzJlY2MwY2JmYzM4MjZhYTFlMDE5MTMxYzg5MzcyZDNmZS4uZWExNzRhMWMxMThlNDMyNTYz
N2JhYzM1MDY2Y2Q0YjNmMDhiODliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
Miw5ICs3MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd0lt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1
bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSNlbmRpZgor
CisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIGRyYXdJbWFn
ZUZyYW1lKENhY2hlZEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZDE0NjQ5MmM0YThkZjkzNWNhZjk0
YjlmYjk1NTkwOWFhZDFjYmFmMC4uZGJlMDI1ZWU5ZTFhNDQwZjAyZWE5NjY0YTM0Zjk4YTBmNmM1
MWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIERyYXdpbmdDb250ZXh0Owog
fQogCkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6
OkRyYXdpbmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsg
fQogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKaW5kZXggZjAz
MjQ4NDcyODM2NzM5MGIzMDU5Y2Y1OGNlMTIwYWIzNzJhMzU1NS4uN2UzNDhjODE2NjViNTBhZGM1
OWU3MWZhMTMwYTQ0MTFkNGVhZWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaApAQCAtNDUsMTAgKzQ1LDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKGNvbnN0IEltYWdlJiwgRW5j
b2RlZERhdGFTdGF0dXMpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgbG9uZyBsb25nIGRlbHRhKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0ltYWdlRnJhbWUoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgPSAw
OwogCiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYs
IEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRy
LCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGltYWdlRnJhbWVXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYpID0gMDsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVj
dChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1h
Z2UmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCmluZGV4IDc3NTAzMjIzOWE1ZDVhYmFhNzYzZjdhMjYzZWQ3Y2IyNDU5ODI2
NTIuLjk3N2FjODI2MjA0ZTkwYzI2NGZiNjMyNzBiYjBiMGFkYzkyNGNmZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTEzMCw4
ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBm
cmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogICAgIEFTU0VSVChmcmFtZUNvdW50IDw9
IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
ZnJhbWVDb3VudDsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1l
KQorICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lIHx8ICFtX2ZyYW1lc1tpbmRleF0u
bmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobV9pbWFn
ZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgICAgICBtX2ltYWdlLT5pbWFn
ZU9ic2VydmVyKCktPmltYWdlRnJhbWVXaWxsQmVEZXN0cm95ZWQoKm1faW1hZ2UsIG1fZnJhbWVz
W2luZGV4XS5uYXRpdmVJbWFnZSgpKTsKICAgICAgICAgZGVjb2RlZFNpemUgKz0gbV9mcmFtZXNb
aW5kZXhdLmNsZWFySW1hZ2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IDZiMmQ4MWUzNWIwOGNmNzRmNGYzNjFhZWJj
NzRmMzEyOWM3ZDliN2YuLjA3M2U3ZGEyZDA3MDA4YWFjMGU2ZTRkYWEzOTIwMWRmZWNkNjEyZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApA
QCAtMjgsMjEgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCIKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10
eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYgVVNFKENBSVJPKQotI2lu
Y2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQotI2luY2x1ZGUgIlNoYXJl
ZEJpdG1hcC5oIgotI2VuZGlmCi0KLSNpZiBVU0UoRElSRUNUMkQpCi0jaW5jbHVkZSAiQ09NUHRy
LmgiCi0jaW5jbHVkZSA8ZDJkMS5oPgotI2luY2x1ZGUgPHdpbmNvZGVjLmg+Ci0jZW5kaWYKKyNp
bmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUx
LDI4ICszNywxMiBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogCi0jaWYgVVNFKENHKQotdHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi10eXBlZGVmIENPTVB0cjxJ
RDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoQ0FJUk8pCi10eXBlZGVmIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKFdJTkdESSkK
LXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZW5kaWYKLQog
V0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwog
Q29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0
JiwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW50UmVjdCYgc291cmNlKTsKIAogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0
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
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NjkwYmVjZGM4YjRhYWU4NTI0YjNmNjgxMGZiOTI2NGM4NWM0OTljCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitlbnVtIFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA1
Y2M1YzIwN2I0NGE0ODM1YmUyZTA4MDI4YTNhNzEwOTVhNTVlMWUwLi43YzI5NmM5Y2Y3NzdhOGI0
YTgzZWU3MjgzZGVjMWY0OWE1MGM3MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzAsNyArMzAsNiBAQAog
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJH
ZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKQEAg
LTY5LDIxICs2OCw2IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5
dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBp
eGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQotewotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFu
IGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBs
ZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotICAgIGlmIChvcHRpb25zLm9y
aWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgc3Vic2FtcGxlZEltYWdl
U2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAgIC8vIHNy
Y1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNv
IHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXpl
ICE9IHNyY1NpemUpCi0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwg
RmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNp
emUpKTsKLQotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1h
Z2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKLX0KLQogdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXgg
NjEwNjRhODg2M2I0MGYxOTA1ZGFhNDA1MzM4N2MyMjRiNjQyM2E4YS4uZjAwODI5OTg3MDE2YWQy
YzVkYzFlNThlYmMwYTk4M2VlMGIxMzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTYy
LDkgKzYyLDggQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIERyYXdJbWFn
ZSwKICAgICBEcmF3VGlsZWRJbWFnZSwKICAgICBEcmF3VGlsZWRTY2FsZWRJbWFnZSwKLSNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIERyYXdOYXRpdmVJbWFn
ZSwKLSNlbmRpZgorICAgIERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3UGF0dGVybiwKICAgICBE
cmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmNwcAppbmRleCAyM2NjMDdlOGFlNDQyYmRjZWEwZDM2NzRhNWE4NTUx
YzY1Y2ZkYzg3Li5jYjFiYjYwMTVkNTQ3MzAyYWE2NGQwZTMzOGM2ZmUyZjVmZWY5OGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCkBAIC0z
Myw5ICszMyw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewogCi1EcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6T2Jz
ZXJ2ZXIqIG9ic2VydmVyKQorRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwg
UmVjb3JkZXI6OlJlbW90ZUNsaWVudCogcmVtb3RlQ2xpZW50KQogICAgIDogbV9jb250ZXh0KFsm
XShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRp
YWxDVE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRp
c3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCByZW1vdGVDbGllbnQpOwog
ICAgIH0pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaAppbmRleCA3YjY3M2YzMmFkODE1YTUwMDgxYjdlN2FiMTA4MTMxNzE3ZmRlNTQzLi5lNTUy
YWQ2MDhiMzc2NmRkMmExMmQyNTZiOWE3NDRjYWFhYTFjZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERyYXdpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4
dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpSZW1vdGVD
bGllbnQqID0gbnVsbHB0cik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PERyYXdpbmdDb250ZXh0Jj4oKnRoaXMpLm1fY29udGV4dDsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyJiByZWNvcmRlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggODY3MmIxYjQ3MDg0NzY5MDE4NTA4
NDk1OWE3N2FmNDJmZGI4MDQzZi4uNGZiZTRmNjJiMGJjZjFhYjk5MTRlZmI2OWRjY2RjMmMxODIx
MDc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgSW1hZ2VCdWZmZXIgOiBw
dWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZWNvcmRlcjo6
T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZl
cjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gQ29u
Y3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAKIHB1YmxpYzoKQEAgLTQ4LDEyICs0OCwx
MiBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5
cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICAgICAgOiBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAgICAgLCBtX2Ry
YXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykK
KyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENU
TShzaXplKSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdD
b250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVjb3JkZXI6OlJlbW90ZUNsaWVudCogcmVtb3RlQ2xpZW50ID0gbnVsbHB0cikKKyAg
ICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShz
aXplKSwgcmVtb3RlQ2xpZW50KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAppbmRleCBkYmYxODg0YTIxYTM0OWY2YWEwMzMzN2Y3NmVkNTkyOTIzYzA0
ZGUzLi5lMjIyYzFjOTU0OGE3MWVkYjgxZmQ4OTYwYmQxYTg5YjhhZjVhNzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
RGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VEYXRhLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgVVNFKENHKQpAQCAtMTA1LDEwICsxMDQsMTAgQEAg
c2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVy
biBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkSW1hZ2U+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2Fz
dDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSkpOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNp
emVvZihkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKLSNlbmRpZgorICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2Fz
dDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpAQCAtNzAwLDMyICs2OTksMjIgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdUaWxlZFNj
YWxlZEltYWdlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3
TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2VUeXBlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRl
bShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQotI2lmIFVTRShDRykKLSAgICAvLyBGSVhNRTog
TmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCiAgICAgLCBtX2ltYWdlKGltYWdlKQot
I2VuZGlmCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rlc3RpbmF0aW9u
UmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQogICAgICwgbV9vcHRpb25z
KG9wdGlvbnMpCiB7Ci0jaWYgIVVTRShDRykKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOwotI2Vu
ZGlmCiB9CiAKIERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsK
IAogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKLSNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFn
ZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSNlbmRpZgorICAgIEFTU0VSVChu
YXRpdmVJbWFnZVB0cigpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFn
ZVB0cigpLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRp
b25zKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKQEAgLTczNiw3ICs3MjUsMzIgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJ
bWFnZSYgaXRlbSkKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGlu
YXRpb25SZWN0KCkpOwogICAgIHJldHVybiB0czsKIH0KLSNlbmRpZgorCitEcmF3SW1hZ2VCdWZm
ZXI6OkRyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIDogRHJh
d2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcikKKyAgICAsIG1fcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1fZGVzdGluYXRp
b25SZWN0KGRlc3RSZWN0KQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX29wdGlv
bnMob3B0aW9ucykKK3sKK30KKworRHJhd0ltYWdlQnVmZmVyOjp+RHJhd0ltYWdlQnVmZmVyKCkg
PSBkZWZhdWx0OworCit2b2lkIERyYXdJbWFnZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3QKK3sKKyAgICAvLyBTaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgZGVsZWdhdGUuCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit7CisgICAg
dHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKKyAgICB0cy5kdW1w
UHJvcGVydHkoInJlbW90ZS1yZXNvdXJjZS1pZGVudGlmaWVyIiwgaXRlbS5yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0u
c291cmNlKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5h
dGlvblJlY3QoKSk7CisgICAgcmV0dXJuIHRzOworfQogCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRl
cm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuKQpAQCAtMTQyNyw5ICsxNDQxLDggQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwgImRyYXct
dGlsZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1h
Z2UiOyBicmVhazsKLSNlbmRpZgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjog
dHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5lIjsgYnJlYWs7CkBAIC0xNTI4LDExICsxNTQxLDEy
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0
ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAgIHRz
IDw8IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7
Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pOwog
ICAgICAgICBicmVhazsKLSNlbmRpZgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZl
cjoKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMDU1ODY5ZTE3YWFhOTY2NGViNTNmYjFiZWU3OTU4
MDY0MjhkMzYzLi5lYmU1YWM5NDdmZWU5M2YxNmJjNTk5YmEyNDRhOGU2MmQ3ZGZkMjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIK
KyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTE0MzAsNDUgKzE0MzEs
MTI0IEBAIE9wdGlvbmFsPFJlZjxEcmF3VGlsZWRTY2FsZWRJbWFnZT4+IERyYXdUaWxlZFNjYWxl
ZEltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAgICAgcmV0dXJuIERyYXdUaWxlZFNjYWxl
ZEltYWdlOjpjcmVhdGUoKmltYWdlSGFuZGxlLT5pbWFnZSwgKmRlc3RpbmF0aW9uLCAqc291cmNl
LCAqdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsICppbWFnZVBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogY2xhc3Mg
RHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCisgICAgdXNpbmcgSW1hZ2VUeXBlID0gVmFyaWFudDxOYXRpdmVJbWFnZVB0ciwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKworICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdl
PiBjcmVhdGUoY29uc3QgSW1hZ2VUeXBlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKTsKIAorICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4obV9pbWFnZSkpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyPihtX2ltYWdlKTsKKyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZVB0cigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8TmF0aXZlSW1hZ2VQdHI+KG1faW1hZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6OmdldDxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSk7
CisgICAgfQorCisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2VTaXplOyB9CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVj
dDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uUmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdl
VHlwZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0jaWYg
VVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0jZW5kaWYKKyAgICBJbWFnZVR5
cGUgbV9pbWFnZTsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1f
ZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CiAgICAgSW1hZ2VQYWlu
dGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAorY2xhc3MgRHJhd0ltYWdlQnVmZmVyIDogcHVi
bGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERyYXdJbWFnZUJ1ZmZl
cj4gY3JlYXRlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZmZXIoKTsKKworICAgIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
bW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdJbWFnZUJ1
ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
OworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBG
bG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKKyAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAg
ZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsK
KyAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbW90ZVJlc291cmNlSWRlbnRpZmll
cj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5h
dGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRpb24p
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRp
b25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlvbnMp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd0ltYWdlQnVm
ZmVyOjpjcmVhdGUoKnJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgKmRlc3RpbmF0aW9uLCAqc291
cmNlLCAqb3B0aW9ucyk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdO
YXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYgVVNFKENH
KQotICAgIE5hdGl2ZUltYWdlSGFuZGxlIGhhbmRsZSB7IG1faW1hZ2UgfTsKLSAgICBlbmNvZGVy
IDw8IGhhbmRsZTsKLSNlbmRpZgorICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKICAgICBlbmNvZGVy
IDw8IG1faW1hZ2VTaXplOwogICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAg
ZW5jb2RlciA8PCBtX3NyY1JlY3Q7CkBAIC0xNDc4LDEyICsxNTU4LDEwIEBAIHZvaWQgRHJhd05h
dGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+CiBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdl
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSNpZiBVU0UoQ0cpCi0gICAgT3B0aW9uYWw8
TmF0aXZlSW1hZ2VIYW5kbGU+IGhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGhhbmRsZTsKLSAgICBp
ZiAoIWhhbmRsZSkKKyAgICBPcHRpb25hbDxJbWFnZVR5cGU+IGltYWdlOworICAgIGRlY29kZXIg
Pj4gaW1hZ2U7CisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSNlbmRpZgogCiAgICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFnZVNpemU7CiAgICAgZGVjb2Rl
ciA+PiBpbWFnZVNpemU7CkBAIC0xNTA1LDE0ICsxNTgzLDggQEAgT3B0aW9uYWw8UmVmPERyYXdO
YXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0jaWYgVVNF
KENHKQotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gaGFuZGxlLT5pbWFnZTsKLSNlbHNlCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBudWxscHRyOwotI2VuZGlmCi0gICAgcmV0dXJuIERy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0
LCAqc3JjUmVjdCwgKm9wdGlvbnMpOworICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0
ZSgqaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9u
cyk7CiB9Ci0jZW5kaWYKIAogY2xhc3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0g
ewogcHVibGljOgpAQCAtMjkyNCwxMSArMjk5NiwxMiBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZElt
YWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0Uo
RElSRUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBl
bmNvZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVh
azsKLSNlbmRpZgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAg
ZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGVuY29kZXIgPDwg
ZG93bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMTEyLDEy
ICszMTg1LDE0IEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVj
b2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJ
dGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoZGVj
b2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdU
Rk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3SW1hZ2VCdWZm
ZXI6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJu
OjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9j
YXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTMyNzAsOSArMzM0NSw4IEBAIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3R2x5cGhzKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKLSNpZiBVU0UoQ0cp
IHx8IFVTRShDQUlSTykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShE
cmF3TmF0aXZlSW1hZ2UpCi0jZW5kaWYKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJ
U1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlM
SVNUX0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd1JlY3QpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0o
RHJhd0xpbmUpCkBAIC0zMzMxLDkgKzM0MDUsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZSwKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlLAotI2VuZGlmCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYmQwNDM4YzZhNGIyNTZjODg1NmJi
MTI5YTNhYjVmYTIzZTc4ZGM4YS4uOWI5NmQ5YTM4ZWE4MGI3MjgxZGM2ODFjZGViNDM3NDgzNWEx
M2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC0z
NywxMCArMzgsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBj
b25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRp
YWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlbW90ZUNsaWVudCogcmVtb3RlQ2xpZW50KQog
ICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJh
bnNmb3JtKCkpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9vYnNl
cnZlcihvYnNlcnZlcikKKyAgICAsIG1fcmVtb3RlQ2xpZW50KHJlbW90ZUNsaWVudCkKIHsKICAg
ICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdp
dGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3Rh
dGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwpAQCAtNTIsMTUgKzUzLDE1IEBAIFJlY29y
ZGVyOjp+UmVjb3JkZXIoKQogICAgIExPRyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBkaXNwbGF5
IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogfQogCi12
b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0
UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKK3ZvaWQg
UmVjb3JkZXI6OnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0
KQogewotICAgIGFwcGVuZEl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6
Y3JlYXRlKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZv
cm1hdCkpOworICAgIGFwcGVuZEl0ZW0oUHV0SW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRGb3JtYXQs
IGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KSk7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pCiB7Ci0gICAgaWYgKG1f
b2JzZXJ2ZXIpCi0gICAgICAgIG1fb2JzZXJ2ZXItPndpbGxBcHBlbmRJdGVtKGl0ZW0pOworICAg
IGlmIChtX3JlbW90ZUNsaWVudCkKKyAgICAgICAgbV9yZW1vdGVDbGllbnQtPndpbGxBcHBlbmRJ
dGVtKGl0ZW0pOwogCiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpA
QCAtMTM2LDEzICsxMzcsNDAgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykgfHwgVVNFKERJUkVDVDJEKQogdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0g
PSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0
ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1
cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwogfQotI2VuZGlmCisKK2Jvb2wgUmVjb3JkZXI6OmRy
YXdJbWFnZUZyYW1lKENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAoIW1fcmVtb3RlQ2xpZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBtX3Jl
bW90ZUNsaWVudC0+ZmluZE5hdGl2ZUltYWdlKGNhY2hlZEltYWdlLCBpbWFnZSkpIHsKKyAgICAg
ICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRl
bShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7CisgICAgICAgIHVwZGF0ZUl0ZW1F
eHRlbnQobmV3SXRlbSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K3sKKyAgICBpZiAoIW1fcmVtb3RlQ2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBtX3JlbW90ZUNsaWVudC0+Zmlu
ZEltYWdlQnVmZmVyKGltYWdlKSkgeworICAgICAgICBpbWFnZS5mbHVzaERyYXdpbmdDb250ZXh0
KCk7CisgICAgICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+
KGFwcGVuZEl0ZW0oRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucykpKTsKKyAgICAg
ICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAppbmRleCBkMjcwYzVkOTA4YWM2OGQ3ODA4MzYzYmJhOTFiMmU3NjFhZWRjOTJiLi42
NzdhOGIyZjljYWU1MjdjYmE1N2U1NmY2YTA5Y2M3OWVjNzhlYjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEaXNw
bGF5TGlzdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCkBAIC01MywyMCArNTQsMjEgQEAgY2xhc3MgUmVjb3JkZXIgOiBwdWJsaWMg
R3JhcGhpY3NDb250ZXh0SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNsYXNzIE9ic2Vy
dmVyOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3Bs
YXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGlu
aXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBPYnNlcnZlciogPSBudWxscHRyKTsK
KyAgICBjbGFzcyBSZW1vdGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
UmVtb3RlQ2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIGZpbmRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYpIHsgcmV0dXJuIHsgfTsgfQorICAgICAg
ICB2aXJ0dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBmaW5kTmF0aXZlSW1hZ2UoQ2FjaGVk
SW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKKyAgICB9OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3Qm
LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENs
aXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIFJlbW90ZUNsaWVudCogPSBudWxscHRyKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwg
Y29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKIAogICAgIHNp
emVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
OyB9CiAKLSAgICBjbGFzcyBPYnNlcnZlciB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IH5PYnNlcnZlcigpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29u
c3QgSXRlbSYpIHsgfTsKLSAgICB9OwotCiBwcml2YXRlOgogICAgIGJvb2wgaGFzUGxhdGZvcm1D
b250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQpAQCAtMTAyLDkgKzEwNCwxMCBAQCBwcml2YXRlOgogICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVs
ZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQp
Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0j
ZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKKyAgICBib29sIGRyYXdJbWFnZUZyYW1lKENhY2hlZEltYWdlJiwgY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKQEAgLTE4Myw3ICsxODYsNyBAQCBwcml2YXRlOgog
ICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKICAgICBEaXNwbGF5TGlzdCYgbV9k
aXNwbGF5TGlzdDsKLSAgICBPYnNlcnZlciogbV9vYnNlcnZlcjsKKyAgICBSZW1vdGVDbGllbnQq
IG1fcmVtb3RlQ2xpZW50OwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1fc3RhdGVT
dGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggZThhZDJlNTlm
ZjZjOTY4ZjU4MzU5OGE4MWQxMDE3Yjc0NGJlNzA2ZC4uZmEzNTkyMjExNjcyOGQzMTg5ZmE3M2Ji
ZWU3MDQ3ZmQ5YjM4NzI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAt
MTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBIYXNoU2V0PEF0b21TdHJpbmc+IGNyZWF0ZUFsbG93ZWRF
bGVtZW50U2V0KCkKICAgICAvLyBFeGNsdWRlZCBhcmUgYW55dGhpbmcgdGhhdCBpcyB1c2VkIGJ5
IHJlZmVyZW5jZSBvciB0aGF0IG9ubHkgbWFrZSBzZW5zZSB0byBhcHBlYXIgb25jZSBpbiBhIGRv
Y3VtZW50LgogICAgIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKICAgICBIYXNoU2V0PEF0b21T
dHJpbmc+IHNldDsKLSAgICBmb3IgKGF1dG8mIHRhZyA6IHsgYVRhZy5nZXQoKSwgY2lyY2xlVGFn
LmdldCgpLCBkZXNjVGFnLmdldCgpLCBlbGxpcHNlVGFnLmdldCgpLCBnVGFnLmdldCgpLCBpbWFn
ZVRhZy5nZXQoKSwgbGluZVRhZy5nZXQoKSwgbWV0YWRhdGFUYWcuZ2V0KCksIHBhdGhUYWcuZ2V0
KCksIHBvbHlnb25UYWcuZ2V0KCksIHBvbHlsaW5lVGFnLmdldCgpLCByZWN0VGFnLmdldCgpLCBz
dmdUYWcuZ2V0KCksIHN3aXRjaFRhZy5nZXQoKSwgc3ltYm9sVGFnLmdldCgpLCB0ZXh0VGFnLmdl
dCgpLCB0ZXh0UGF0aFRhZy5nZXQoKSwgdGl0bGVUYWcuZ2V0KCksIHRyZWZUYWcuZ2V0KCksIHRz
cGFuVGFnLmdldCgpLCB1c2VUYWcuZ2V0KCkgfSkKKyAgICBmb3IgKGF1dG8mIHRhZyA6IHsgYVRh
Zy5nZXQoKSwgY2lyY2xlVGFnLmdldCgpLCBkZXNjVGFnLmdldCgpLCBlbGxpcHNlVGFnLmdldCgp
LCBnVGFnLmdldCgpLCBpbWFnZVRhZy5nZXQoKSwgbGluZVRhZy5nZXQoKSwgbWV0YWRhdGFUYWcu
Z2V0KCksIHBhdGhUYWcuZ2V0KCksIHBvbHlnb25UYWcuZ2V0KCksIHBvbHlsaW5lVGFnLmdldCgp
LCByZWN0VGFnLmdldCgpLCBzdmdUYWcuZ2V0KCksIHN3aXRjaFRhZy5nZXQoKSwgc3ltYm9sVGFn
LmdldCgpLCB0ZXh0VGFnLmdldCgpLCB0ZXh0UGF0aFRhZy5nZXQoKSwgdGl0bGVUYWcuZ2V0KCks
IHRyZWZUYWcuZ2V0KCksIHRzcGFuVGFnLmdldCgpLCB1c2VUYWcuZ2V0KCksIGZvcmVpZ25PYmpl
Y3RUYWcuZ2V0KCkgfSkKICAgICAgICAgc2V0LmFkZCh0YWcubG9jYWxOYW1lKCkpOwogICAgIHJl
dHVybiBzZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTI0N2E3YWQ0Y2QyOTUzOGU0
ZWFmNDBiZDgwMzY5Njg2MDA4Yjg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKLQotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICA6IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAsIG1faW1h
Z2VCdWZmZXJJZGVudGlmaWVyKGltYWdlQnVmZmVySWRlbnRpZmllcikKLXsKLX0KLQotdm9pZCBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNyZWF0ZUJhY2tlbmQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgV1RGTW92ZShoYW5kbGUpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi12
b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250
ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIs
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
ZTkyMGVmZGRjMTc5ZjYzZmQ0ZmQyNGJjZjc5MTMyNDEwOTVlNjM1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotY2xh
c3MgSW1hZ2VEYXRhOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OwotCi1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkgewotcHVibGljOgotICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eSgpID0gZGVmYXVsdDsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluLgotICAgIHZp
cnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCA9IDA7
Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHko
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLQot
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluLgotICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUpOwotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyKTsKLQotcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIEltYWdlQnVmZmVySWRlbnRpZmll
ciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXgg
ODFiODk3OGQwZTc5MTE1N2Y5YzdlNDk3MDM5ODE3ZTQ3OTU5ZTUxNC4uNWIzYTg3MTJlZmMxNGMy
ZjQ3ZWJhNGIyNWM1ZDJjNmJiODk4N2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yNywy
OSArMjcsMjkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIlJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXll
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5
cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkNvbmNy
ZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpE
ZWxlZ2F0ZSB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6
OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1
c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dDsKICAgICB1c2luZyBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjpwdXRJbWFnZURhdGE7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
Ojp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHks
IGltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAg
ICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCkpCi0gICAgICAgICwg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7Ci0gICAg
ICAgIGNyZWF0ZUJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJh
Y2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29s
b3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpKTsK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVtb3RlQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5k
U2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3Bh
Y2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSgpCkBAIC02MSw5ICs2MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQ7Ci0gICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKLQogICAgIHZvaWQgZmx1
c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0
ZW1Db3VudCgpKSB7CkBAIC03MiwyNyArNjksMTggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBmbHVz
aERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENv
bnRleHQoKTsKLSAgICAgICAgY29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7Ci0g
ICAgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAgfQotCi0gICAgYm9v
bCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChpdGVtLnR5cGUoKSAhPSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKSB7CisgICAgICAgICAgICBhdXRvJiBwdXRJ
bWFnZURhdGFJdGVtID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdl
RGF0YSY+KGl0ZW0pOworICAgICAgICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0u
aW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRh
SXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dEltYWdlRGF0
YUl0ZW0uZGVzdEZvcm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CiAKLSAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVtKTsKLSAgICAgICAgcHV0SW1hZ2VEYXRh
KHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURh
dGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBv
aW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZvcm1hdCgpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5hcHBseVJl
c291cmNlSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CisgICAgCisgICAgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRl
eCBkYmI1NWJhM2MyMjBkZTg2ZjE4YTUzM2NmYTA4NzE4ZjM4OTI0ZjA4Li4zMGI1ZGMzNGQwNDA2
OGQ4M2Q2ZjQ4NzQwNzlhZmZlNTE2Y2EwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdl
cy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDU5ICs2Niw0NiBAQCB1aW50NjRfdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
OwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK2Jvb2wgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbShEaXNwbGF5TGlzdDo6SXRlbSYgaXRl
bSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8qIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Ci0gICAgaWYg
KCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVySWRlbnRp
ZmllcikpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVB
Y2NlbGVyYXRlZCkgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAg
ICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVySWRlbnRp
ZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVt
b3RlQWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVV
bmFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAg
ICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBt
X3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5hcHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIgbWVzc2FnZSBz
aG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAgICBib29sIGZvdW5k
ID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9n
aWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1v
dmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdl
YkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIGF1dG8g
aW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1Jl
Y3QpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShX
VEZNb3ZlKGltYWdlRGF0YSkpKTsKLSAgICB9CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY3JlYXRlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29u
dGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBib29s
IHNob3VsZERyYXdHUFVCYWRnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAg
aW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHNo
b3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4
dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIEltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGJv
b2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElk
ZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVy
LT5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBmbHVzaElkZW50aWZp
ZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoZGlzcGxheUxpc3QsIHNob3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpD
b21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3Qs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byBpbWFnZURhdGEgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNl
KFdURk1vdmUoaW1hZ2VEYXRhKSkpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA2NzY0YWMx
MGM1ZTdlMDJhNGM5Nzg3N2I5YzVlNTVjYTBiNzhjYjFlLi4wNjIyOGZlZjk0ZWFlOWYyM2E3MTJk
YTQ4MWFiYjZhZWYwMTBmZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0y
OCwyNCArMjgsMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0SXRlbXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogfQorY2xhc3MgRmxvYXRTaXpl
OworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5n
TW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNTgsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsg
fQorICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0m
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNl
bnQuCisgICAgdm9pZCByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwog
CiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAtNzMsMTQgKzc1
LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgcmVsZWFzZUltYWdlQnVm
ZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1h
Z2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2
b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwotCi0g
ICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5Pj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0Nv
bnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91
bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
dm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIElt
YWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworCisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDc5OGM4YjRlZGI1N2Y1
YWQwODJiYTgxYzEwMDhiMGRjZGVmZGYxOGEuLmQ0ZWVjNGY5YmMxM2ZjNDI5NWQ0ZjMwYzMwNTQ2
ZDgzZWQxODgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjMsMTEgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBt
ZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0g
ICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIFJlbGVhc2VJbWFnZUJ1
ZmZlcihXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Ci0gICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRp
c3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVy
KQotICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViS2l0OjpJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFn
ZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlSW1h
Z2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgYm9v
bCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2lu
Z0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3Bs
YXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgR2V0SW1hZ2VEYXRhKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29y
ZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VE
YXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciBpbWFnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMWQ5ZmE3MTNkZDY2NGMyZWM2YzYyZTk0ZjZmZjI5NjhlMTc3ZGE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCit7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5jb250YWlucyhyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBpbWFnZTsKKworICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OlJlbW90ZUFjY2VsZXJhdGVkKQorICAgICAgICBpbWFnZSA9IEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworCisgICAgaWYgKCFpbWFnZSB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlID0gVW5hY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlmIChpbWFnZSkgeworICAgICAgICBtX3JlbW90ZUlt
YWdlQnVmZmVySGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGlt
YWdlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3
aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBi
b29sIHNob3VsZERyYXdHUFVCYWRnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3sKKyAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9zaG91
bGREcmF3R1BVQmFkZ2UsIHNob3VsZERyYXdHUFVCYWRnZSk7CisgICAgYXV0byBpbWFnZSA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIGlmIChpbWFnZSkKKyAgICAgICAgaW1hZ2UtPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxh
eUxpc3QpOworICAgIHJldHVybiBpbWFnZTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvIGltYWdlID0gZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgc2hvdWxkRHJh
d0dQVUJhZGdlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChpbWFnZSkKKyAg
ICAgICAgaW1hZ2UtPmZsdXNoQ29udGV4dCgpOworICAgIHJldHVybiBpbWFnZTsKK30KKworUmVm
UHRyPEltYWdlRGF0YT4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpnZXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
Cit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQo
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5nZXRJbWFn
ZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVOYXRpdmVJbWFn
ZUhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgaW1hZ2UpOworICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3R1BVQmFkZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAoreworICAgIGlmICghbV9zaG91bGREcmF3R1BVQmFk
Z2UpCisgICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0LmRyYXdHUFVCYWRnZShjb250YWluZXJS
ZWN0LCBjb250YWluZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCksIGNvbG9yLCB0ZXh0KTsKK30KKwor
Ym9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3Qg
RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
K3sKKyAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3BsYXlMaXN0OjpE
cmF3TmF0aXZlSW1hZ2UmPihpdGVtKTsKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciA9IGRyYXdJdGVtLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpOworICAgIGlmICghcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGlt
YWdlID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZ2V0KGRyYXdJdGVtLnJlbW90ZVJlc291
cmNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgZHJhd0l0ZW0uaW1hZ2VTaXpl
KCksIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0
ZW0ub3B0aW9ucygpKTsKKyAgICBkcmF3R1BVQmFkZ2UoY29udGV4dCwgZHJhd0l0ZW0uZGVzdGlu
YXRpb25SZWN0KCksIFdlYkNvcmU6OkNvbG9yOjpyZWQsICJJTUFHRSJfcyk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZm
ZXJJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBE
aXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyJj4oaXRlbSk7CisgICAgYXV0byBpbWFnZSA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aW1hZ2UtPmRyYXcoY29udGV4dCwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVt
LnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25zKCkpOworICAgIGRyYXdHUFVCYWRnZShjb250ZXh0
LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgV2ViQ29yZTo6Q29sb3I6OmJsdWUsICJDQU5W
QVMiX3MpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0g
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBk
cmF3TmF0aXZlSW1hZ2VJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgIGlmIChpdGVtLnR5cGUoKSA9
PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IGRyYXdJbWFnZUJ1ZmZlckl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVtb3RlTmF0aXZlSW1hZ2VI
YXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47
CisgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVk
IGJlZm9yZSByZWxlYXNpbmcgaXQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZmMwNTJjMjg0Njk2ZWI3NjRkYWI2ZGNl
ZTdmMDdmZTZhZmM4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0
OworY2xhc3MgSXRlbTsKK30KK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5Jik7CisKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29sIHNo
b3VsZERyYXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29sIHNob3VsZERyYXdHUFVC
YWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CisKKyAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgYm9vbCBhcHBseVJlc291cmNlSXRlbShjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0OworCisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZl
ckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CisgICAgdXNpbmcgUmVtb3RlTmF0
aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPjsKKworICAgIHZvaWQgZHJhd0dQVUJhZGdlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGFp
bmVyUmVjdCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHRleHQpIGNvbnN0
OworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIGJvb2wgZHJh
d0ltYWdlQnVmZmVySXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNo
TWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZU5hdGl2ZUltYWdlSGFz
aE1hcCBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcDsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworICAgIGJvb2wgbV9zaG91
bGREcmF3R1BVQmFkZ2UgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCA3MGQzZDg4ZjJiZjRhNmYxY2ZjNGYxODg3MDRlZDY3NzBlNDk3
N2FmLi5hMGNmY2U2YzAxMjQ4NWNiM2ZlN2NkNjEzY2ZmMTk2MWZiMmIxNmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNiwxMSArMjE2LDEzIEBAIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJD
b3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVk
aWFTZXNzaW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cics
CiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAg
ICAgICAgICdXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UmVuZGVyaW5nTW9kZScsCiAg
ICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcicsCkBAIC0yMzgsNyArMjQwLDYgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktp
dDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXInLAotICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lD
dXN0b21Qcm90b2NvbElEJywKICAgICAgICAgJ1dlYktpdDo6TGliV2ViUlRDUmVzb2x2ZXJJZGVu
dGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IGUwYmJiYmM1YmEyMzE4YmZhOGU2MzE5NmQ1NGVlYmI4OTAzNjQ0NDEuLmEwNzc1
MzA5NTdiYThkNDdkNTQyOWJhZGQ2Njc1NzU1NGQwNjIxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwMCw3ICsxMTAwLDcgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UpCitzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYXV0byBpbWFnZVNpemUgPSBuYXRpdmVJ
bWFnZVNpemUoaW1hZ2UpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29k
ZXIsIE5hdGl2ZUltYWdlUHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5j
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJbWFnZVB0ciBp
bWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGJvb2wgaGFzSW1hZ2Ug
PSAhIWltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CkBAIC0xMTY2LDE0ICsxMTY2LDE0
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUlt
YWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgcmV0dXJuIGRlY29kZU5hdGl2ZUltYWdl
KGRlY29kZXIsIGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFu
ZGxlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlSGFuZGxlJiBp
bWFnZUhhbmRsZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0gICAgZW5j
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZS5nZXQoKSk7
CisgICAgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CiB9CiAKLWJv
b2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBOYXRpdmVJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCitib29sIEFyZ3VtZW50Q29kZXI8
TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQogewotICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIs
IGltYWdlSGFuZGxlLmltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwNWQw
MzU1NGI5ZWNhOWEwNDFjMzY4ZWY0NTM4ODI0NDM0Y2U2ZTIzLi45ZjNiMTA2NjkzMzNiYTMwMTUy
OTc4M2M5ZTFlOTFlYWJhNGNhYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5k
ZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFn
ZVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTEwNSw3ICsxMDYsNiBAQCBjbGFzcyBLZXlmcmFtZVZh
bHVlTGlzdDsKIGNsYXNzIExheW91dFNpemU7CiBjbGFzcyBMYXlvdXRQb2ludDsKIGNsYXNzIExp
bmVhclRpbWluZ0Z1bmN0aW9uOwotY2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGU7CiBjbGFzcyBOb3Rp
ZmljYXRpb247CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFBheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CkBAIC00MTYsOSArNDE2LDkgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxl
Jik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlSGFuZGxlPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFuZGxlJik7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggYmMyYzQ5NDNhZWJlNWNjYWY4Yjk0N2VkNzFhZTAzMGY0ZjMyZDk4My4uMWY2MTMxODkyOGU5
ZDE2NmNhNWYwMmZlNzk3ZGY0MjY5N2E0ZTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNCw4ICsyNCw4
IEBACiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTU1MSw4ICs1NTEsOCBAQCBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCi1XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9B
dWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDU3MjEzNTYyYWJjMWJlMzg0MmJlMzFlODYxNzM3MGRlMjg3OGNk
MGEuLjJiZTc3ZDRjODQzZTVjNWNlMDJjNjFjNjMzZmI1MjNiYzU3YTJiMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg2Myw3ICsz
ODYzLDYgQEAKIAkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTA2NDBBMzI0MDcxQTYx
MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTUw
NjQwQTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUFEMDk0NDI0MDhB
QkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQxNDUsMTAgKzQxNDQsNyBAQAogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyog
V0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRo
ID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0
ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEMyNDA5N0Ew
MjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgw
MTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAxMjI0MDk5MDZF
MDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM1MjQwNzg1N0YwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTU4LDYgKzQxNTQsMTAgQEAKIAkJNzI3QTdGNDky
NDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVG
MTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJEQ0ExRTkyNTI0MjRDRTAw
QzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVz
b3VyY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFQTI1MjQy
NENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzJEQ0ExRUIyNTI3MTQ1MTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFQzI1MjcxNDUxMDBDOUIyMEQgLyogUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBD
MzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUg
LyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgwMjEsMTcgKzgwMjEsMTcgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0
RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQ0MjQwOEFCQjMwMERFNEQyRiAv
KiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovLAotCQkJCTU1MDY0MEE1MjQwNzFDQzAw
MEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4
OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywK
IAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAw
N0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk3MjdBN0Y0OTI0
MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKLQkJCQk3MjI3ODAwQzI0
MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8s
CiAJCQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkRDQTFFQTI1
MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8sCisJCQkJNzJEQ0Ex
RTkyNTI0MjRDRTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLywKIAkJCQk1NTA2
NDA5RjI0MDcxOTZBMDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CkBAIC04MDQxLDEyICs4MDQxLDEyIEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERF
NEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKLQkJCQk3MjI3ODAx
MTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcCAqLywKLQkJCQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJG
IC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDBB
MzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCiAJ
CQkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkRDQTFFQjI1MjcxNDUxMDBDOUIyMEQgLyogUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmNwcCAqLywKKwkJCQk3MkRDQTFFQzI1MjcxNDUxMDBDOUIyMEQg
LyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBo
aWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTFiYzlhZTg3ZGM4ZDcyNDI4YTBiODA5
Y2FkMGQ4MGE0Y2QxY2I5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlIDx3dGYv
T2JqZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBJbWFnZUJ1
ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEltYWdlQnVmZmVySWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8SW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZT47Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCmluZGV4IGU4NDkxNjY0NTE0NTk2Mjg3ZWYyYzc4ZjkwNzZlMWQ0MzgyMTkxZjIuLjkyYTUz
ZjU5YzY3NmY3ODdmZDIxZmYwZGExYzQzMTc5NTAzMmIyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
QEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KQEAg
LTM3LDEwICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3Rl
SW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJh
Y2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIgeworY2xh
c3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNsaWVudCB7
CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlz
dEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CisgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6OmNvbnRleHQ7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQpAQCAtNTMsMTQgKzU2LDIwIEBAIHB1YmxpYzoKIAog
ICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5n
Q29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VJbWFn
ZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3RlZDoKICAgICBSZW1vdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSkKLSAgICAgICAg
LCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAg
ICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgICAgICAsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdN
b2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIHZvaWQgY3Jl
YXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpIG92ZXJyaWRlCkBAIC02OCwyMyArNzcsNTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBBU1NF
UlQoIW1fYmFja2VuZCk7CiAgICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoaGFuZGxlKSk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogCiAgICAgQmFja2Vu
ZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1
ZmZlciY+KCp0aGlzKS5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp3YWl0Rm9yQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CisgICAgICAgIGlmICghbV9iYWNrZW5kICYmIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgICAgICByZXR1cm4gbV9i
YWNrZW5kLmdldCgpOwogICAgIH0KIAorICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9iYWNrZW5k
LT5mbHVzaENvbnRleHQoKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdD
b250ZXh0LmRpc3BsYXlMaXN0KCk7CisgICAgICAgIGlmICghZGlzcGxheUxpc3QuaXRlbUNvdW50
KCkgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kcmF3R1BVQmFkZ2UoY29udGV4dCgpLCBX
ZWJDb3JlOjpGbG9hdFJlY3QoeyB9LCBtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCkpLCBXZWJDb3Jl
OjpDb2xvcjo6ZGFya0dyZWVuLCAiR1BVIl9zKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlm
aWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0
QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVsZWFzZVJl
bW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGRpc3BsYXlM
aXN0LmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwg
bV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBj
b25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPm1fZHJhd2luZ0NvbnRleHQuZGlz
cGxheUxpc3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMp
LT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KGRp
c3BsYXlMaXN0KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdl
QnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRl
bUNvdW50KCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0
aGlzKS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICBkaXNw
bGF5TGlzdC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlz
IHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVHZXRJbWFn
ZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CiAgICAgfQogCiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZv
cm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92
ZXJyaWRlCkBAIC05NSwyNiArMTMzLDMyIEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5n
Q29udGV4dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBz
cmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hD
b250ZXh0KCkgb3ZlcnJpZGUKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
ZmluZEltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSkgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICAgICAgbV9iYWNrZW5kLT5m
bHVzaENvbnRleHQoKTsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAg
ICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmZpbmRJbWFnZUJ1ZmZl
ckZvckNsaWVudChpbWFnZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJy
aWRlCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmROYXRpdmVJbWFn
ZShXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlM
aXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxh
eUxpc3QuaXRlbUNvdW50KCkpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChkaXNwbGF5TGlzdCk7Cisg
ICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4g
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5maW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVk
SW1hZ2UsIGltYWdlLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQotICAgIAorCiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb25zdGV4
cHIgc2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwogICAgICAgICBhdXRvJiBkaXNw
bGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRp
c3BsYXlMaXN0Lml0ZW1Db3VudCgpID49IERpc3BsYXlMaXN0QmF0Y2hTaXplKQotICAgICAgICAg
ICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChk
aXNwbGF5TGlzdCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA8IERpc3Bs
YXlMaXN0QmF0Y2hTaXplIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KKworICAgIFdlYWtQdHI8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MTUwYzdiMDc5
M2FmZTlhYzVjODNhOWFjNzQ2YmEzMThlNTFiOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXI6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpKQotewotICAgIC8vIENyZWF0
ZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1h
Z2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXI6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkKLXsKLSAgICAvLyBS
ZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIGlmICghbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VJ
bWFnZUJ1ZmZlcihtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlZlB0cjxJbWFnZURh
dGE+IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29u
c3QKLXsKLSAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7Ci0g
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBt
X2ltYWdlQnVmZmVySWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCAxX3MpOwotICAg
IHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
Ci17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCAmJiAhaXNCYWNrZW5kQ3JlYXRl
ZCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyOjp3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQotewotICAgIGlmICht
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgJiYgaXNQZW5kaW5nRmx1c2goKSkKLSAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRl
eHQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERy
YXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0
KGRpc3BsYXlMaXN0LCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVz
aERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9zZW50Rmx1c2hJ
ZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3QuY2xl
YXIoKTsKLSAgICB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKLX0KLQot
dm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpjb21taXRGbHVzaENvbnRleHQo
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewotICAgIG1fcmVj
ZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaAppbmRleCA2MjA0MThkNzhjMjdmMjhjNTc0
OTAyYzJlMWJhOWEyMzcxNzUxN2I5Li44MjQ2MGExNmNlYmYzNDlhOTM0YmI4MTY0NDFkMDA5NWRl
MTEyM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaApA
QCAtMjksMTEgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRT
aXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW1hZ2VEYXRhOwpAQCAtNDIsMzcgKzQwLDIwIEBAIGVudW0gY2xhc3MgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCiBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyKCk7Ci0KLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7IH0KLQogICAgIC8v
IE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbi4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUpID0gMDsKIAotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3Jl
YXRlZCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1
cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0K
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lkIHdhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoKTsKLSAgICB2b2lkIHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgp
OworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
IGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQogCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2Vu
dC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAgICB2b2lk
IGZsdXNoRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7
Ci0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIgeyBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXI6OmdlbmVyYXRlKCkgfTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyKCkgPSBkZWZhdWx0OwogCiAgICAgSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAppbmRleCA5OTUzNDE3ODdlZGEyMGE1NTRlNGQ2N2JhNTNkYzY5OGE1MzcwY2MwLi4y
MTQ3YTQ4N2U1N2JiMDk2NDQ4NDhjNWMyYTkwMjY1NWNmOTEzMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgpAQCAt
MzksMTIgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKFdlYlBhZ2UmIHBhZ2UpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHBhZ2UpKTsK
IH0KIAotUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCitS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdlYlBhZ2UmIHBh
Z2UpCisgICAgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGUoKnRoaXMsIHBhZ2UpCiB7CiAgICAgLy8g
UmVnaXN0ZXIgaXRzZWxmIGFzIGEgTWVzc2FnZVJlY2VpdmVyIGluIHRoZSBHUFVQcm9jZXNzQ29u
bmVjdGlvbi4KICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFw
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKTsKQEAgLTg2LDQwICs4OCw4MiBAQCBib29sIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpCiAgICAg
cmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dD4o
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246Oklu
dGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6ZHJhd0dQVUJhZGdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0
cmluZyYgdGV4dCkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZHJhd0dQVUJhZGdlKGNv
bnRleHQsIGNvbnRhaW5lclJlY3QsIGNvbG9yLCB0ZXh0KTsKK30KKwogc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Ci0gICAgaWYg
KHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzKSB7Ci0gICAgICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCksIGltYWdl
QnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAg
fQotICAgIH0KKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZUltYWdlQnVm
ZmVyKHNpemUsIHNob3VsZEFjY2VsZXJhdGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7
Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZSkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZUlt
YWdlQnVmZmVyKGltYWdlKTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChJbWFnZUJ1ZmZlciYgaW1h
Z2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQorewor
ICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50
KGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmROYXRpdmVJbWFnZUZvckNsaWVudChD
YWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgcmV0
dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5maW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVk
SW1hZ2UsIGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZS5yZWxlYXNlUmVtb3RlQ2xpZW50KHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworfQorCitSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlQ3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorewor
ICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q2FjaGVOYXRp
dmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30K
IAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVy
KCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAg
IH0KK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUdldElt
YWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0
SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhOjpS
ZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAx
X3MpOworICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Cit9CiAKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hE
cmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
c2hvdWxkRHJhd0dQVUJhZGdlKCksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRp
c3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHNl
bnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1
ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgot
ICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGlt
YWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIEltYWdlQnVmZmVySWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdl
QnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZN
b3ZlKGhhbmRsZSkpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4
dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVy
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAg
ICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOworICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVz
aElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBmNDk2MTU4ZTdkNDBl
ZWIwNWFjMzk0MzRhZjI0NjMzYmFiYzdmMGVmLi4wMDAwOThkZTg2ZDYzYzJiOWZiOTU0NWE0NGE2
ZTQ4NjI1MDZlYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMjksMzEgKzI5
LDM1IEBACiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXpl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7Cit9CitjbGFzcyBG
bG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBS
ZW5kZXJpbmdNb2RlIDogdWludDhfdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNz
IFdlYlBhZ2U7CisKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKICAgICA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBj
cmVhdGUoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IGNyZWF0ZShXZWJQYWdlJik7CiAKICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwog
Ci0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9Ci0KICAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MSwyMSArNjUsMzMgQEAgcHVi
bGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKLSAgICB2b2lkIHJlbGVhc2VJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotCiAgICAgYm9vbCB3YWl0Rm9yQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgYm9vbCB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZm
ZXJGbHVzaENvbnRleHQoKTsKIAorICAgIC8vIFJlc291Y2UgY2FjaGUuCisgICAgdm9pZCBkcmF3
R1BVQmFkZ2UoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYg
dGV4dCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91bGRBY2Nl
bGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworICAg
IHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlQ2xp
ZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBNZXNzYWdl
cyB0byBiZSBzZW50LgorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVDcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Up
OworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDYWNoZU5hdGl2
ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gcmVtb3RlR2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3RlRmx1c2hE
cmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCiBwcml2YXRlOgotICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQoKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdlYlBhZ2UmKTsKIAogICAg
IC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgSW1hZ2VCdWZmZXJJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyKj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBtX2ltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90
ZVJlc291cmNlQ2FjaGU7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4KaW5kZXggMTJhN2JmOGRhNGM4MjU3MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdl
OGExMjAzZjI2ODY1MmEwMGZjMWY3YjE3ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RS
ZWZDb3VudGVkIHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpG
bG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6
OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVu
dGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpCisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXpl
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJG
bHVzaENvbnRleHQoV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2JmYTRmOGI4YTQ5NjlhNmIyM2VmMTA4ZDI3YWU4
OGRiN2FiMzFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMCwwICsxLDE5NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNh
Y2hlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgor
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUo
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViUGFnZSYg
cGFnZSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKQorICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6c2hvdWxkRHJhd0dQVUJhZGdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLmNvcmVQ
YWdlKCktPnNldHRpbmdzKCkuc2hvd0RlYnVnQm9yZGVycygpOworfQorCit2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGU6OmRyYXdHUFVCYWRnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJp
bmcmIHRleHQpCit7CisgICAgaWYgKCFzaG91bGREcmF3R1BVQmFkZ2UoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIEZsb2F0UmVjdCBib3JkZXJSZWN0ID0gY29udGFpbmVyUmVjdDsKKyAgICBib3Jk
ZXJSZWN0LmluZmxhdGUoLTEpOworICAgIGNvbnRleHQuZHJhd0dQVUJhZGdlKGJvcmRlclJlY3Qs
IGJvcmRlclJlY3QubWF4WE1pbllDb3JuZXIoKSwgY29sb3IsIHRleHQpOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVy
YXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAg
ICBpZiAoc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAgICAgbV9y
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdlLmdldCgpLCBpbWFnZS0+cmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2UtPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBp
bWFnZS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoYXV0byBpbWFnZSA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAg
ICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQoaW1hZ2UuZ2V0KCksIGltYWdlLT5yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlckhhc2hNYXAuYWRkKGltYWdlLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwg
aW1hZ2UuZ2V0KCkpOworICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlLCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldCgm
aW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJl
bW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVy
LT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKworUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBj
YWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VC
dWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNob3VsZCBoYXZlIGJlZW4gcmV0
dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworCisgICAgLy8gVGVs
bCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVu
ZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVt
b3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZW5zdXJlKGlt
YWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMpOworICAgICAg
ICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAKKyAgICBhZGRSZW1vdGVDbGll
bnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZU5hdGl2ZUltYWdlKGNvbnN0IFdl
YkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICAvLyBSZW1vdmUgdGhlIHJlc291
cmNlIGZyb20gdGhlIGNhY2hlLgorICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0g
bV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAudGFrZShpbWFnZSk7CisKKyAgICAvLyBUZWxsIHRo
ZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBwZW5kaW5n
IHJlcGxheWluZyBiYWNrLgorICAgIGlmIChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
ICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjphZGRSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgaWYgKCFyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFkZCB0aGUgInJlc291cmNl
IC0+IGNsaWVudCIgZGVwZW5kZW5jeSBpbiBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAu
CisgICAgYXV0byYgY2xpZW50cyA9IG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5lbnN1
cmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBbJl0geworICAgICAgICByZXR1cm4gUmVtb3Rl
Q2xpZW50c0hhc2hTZXQoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBjbGllbnRz
LmFkZChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPFJlbW90ZVJlc291cmNl
SWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIFZl
Y3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlQ2xpZW50c1RvQmVS
ZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVu
ZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRv
JiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgeworICAgICAgICBwYWlyLnZh
bHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKHBhaXIudmFs
dWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92
ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gYSBsaXN0IG9mIHRo
ZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUNsaWVu
dHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghbV9yZW1vdGVSZXNvdXJj
ZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuY29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSk7CisgICAgCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2Ug
LT4gY2xpZW50IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcCwgbW92ZSB0aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xp
ZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2Ug
ZnJvbSB0aGUgY2FjaGVkLgorICAgIGlmIChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAu
Y29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgbV9yZW1vdGVSZXNv
dXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLnRha2UocmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSk7CisgICAgZWxzZQorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICAvLyBSZW1v
dmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVS
ZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGZvciAoYXV0byByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFw
LCByZW1vdGVDbGllbnRJZGVudGlmaWVyKSkKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNsaWVu
dHNIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgLy8gUmVt
b3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIG1fcmVtb3Rl
UmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLgorICAgIGZvciAoYXV0byByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJj
ZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKSB7
CisgICAgICAgIC8vIFJlbW92ZSB0aGUgdW5yZWZlcmVuY2VkIHJlc291cmNlcyBmcm9tIG1fcmVt
b3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLgorICAgICAgICBtX3JlbW90
ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworICAgICAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1v
dmUgdGhpcyByZXNvdXJjZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90
ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4YzdiOTRlZWRlNTdkYzEyMjUw
NDI0NmYxNzczNTlmOTM5YmI3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMCwwICsxLDg3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
ZEltYWdlQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI7CitjbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgUmVtb3RlUmVz
b3VyY2VDYWNoZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRJbWFnZUNsaWVudCB7CitwdWJsaWM6
CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwgV2ViUGFn
ZSYpOworCisgICAgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UoKSBjb25zdDsKKyAgICB2b2lkIGRy
YXdHUFVCYWRnZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5n
JiB0ZXh0KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxk
QWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsK
KyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZEltYWdlQnVmZmVyRm9y
Q2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENv
bnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmlu
ZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwor
CisgICAgdm9pZCByZWxlYXNlUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBS
ZW1vdGVDbGllbnRzSGFzaFNldCA9IEhhc2hTZXQ8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdl
YkNvcmU6OkltYWdlQnVmZmVyKiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsK
KyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6Ok5h
dGl2ZUltYWdlUHRyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIHVz
aW5nIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlQ2xpZW50c0hhc2hTZXQ+OworICAgIHVzaW5nIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIq
PjsKKworICAgIHZvaWQgaW1hZ2VGcmFtZVdpbGxCZURlc3Ryb3llZChjb25zdCBXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpIG92ZXJyaWRlIHsgcmVsZWFzZU5hdGl2ZUltYWdlKGltYWdl
KTsgfQorCisgICAgdm9pZCBhZGRSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50
SWRlbnRpZmllcik7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cj4gcmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmLCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cisg
ICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNo
TWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZU5hdGl2ZUltYWdlSGFz
aE1hcCBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNsaWVu
dHNIYXNoTWFwIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcDsKKyAgICBSZW1vdGVSZXNv
dXJjZUNsaWVudHNIYXNoTWFwIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VI
YXNoTWFwOworICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwIG1fcmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXA7CisgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYlBhZ2UmIG1fcGFnZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxODhiYzVlOWViOWRiNzQ0MDVlMDhmNmUw
NTgyM2VhM2MzN2E4MmExLi41MzZkNmU5NWUwZjg2NGNlZjU5YjBjYmNiYTRlZmU4YzU4MDgyYzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtODc3LDcgKzg3Nyw3IEBAIFJlZlB0cjxEaXNw
bGF5UmVmcmVzaE1vbml0b3I+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hN
b25pdG9yKFBsYXRmCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBXZWJDaHJvbWVDbGllbnQ6OmVu
c3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKSBjb25zdAogewogICAgIGlmICghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKG1fcGFnZSk7CiAgICAgcmV0
dXJuICptX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410597</attachid>
            <date>2020-10-05 18:09:14 -0700</date>
            <delta_ts>2020-10-05 22:25:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217342-20201005180913.patch</filename>
            <type>text/plain</type>
            <size>178937</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlYWFjNDQxMTQ2ZjU4
NzZjNDY3ZGUwZmQzYjNmYWE0YjU3MTJjNC4uMjE0OTNlY2MyZDM4NzU1YmZkNDkzYjYwYzY2N2Fi
ODFkZWFlNDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAyMC0xMC0wNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gSW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB3b3JrIGlu
IHByb2dyZXNzIHBhdGNoLiBUaGUgZ29hbCBpcyB0byBnZXQgdGhlIEVXUyBib3RzIGNsZWFuIAor
ICAgICAgICBmaXJzdC4gVGhlbiBpdCBtYXkgYmUgc3BsaXQgaW50byBzbWFsbGVyIHBhdGNoZXMu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VX
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R1BVQmFkZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6
RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjph
cHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjpEcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdJbWFnZUJ1ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6Om5hdGl2ZUltYWdlUHRyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6Omlt
YWdlU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0ltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6c291cmNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlc3RpbmF0
aW9uUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdl
QnVmZmVyOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3SW1hZ2VCdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVtb3RlQ2xpZW50Ojp+UmVtb3RlQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVtb3RlQ2xp
ZW50OjpmaW5kSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpSZW1vdGVDbGllbnQ6OmZpbmROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNsaWVudDo6d2lsbEFwcGVuZEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1h
Z2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMTAt
MDUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBw
b3J0IGZvciBlbmFibGluZyBzdWJwaXhlbCBDU1NPTSB2YWx1ZXMsIGl0J3Mgb2ZmIGJ5IGRlZmF1
bHQgZXZlcnl3aGVyZSBhbmQga25vd24gdG8gYmUgbm90LWNvbXBhdGlibGUgd2l0aCB0aGUgd2Vi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDgxNDQwMGZmY2RjNDNmYjdhZTM4NzE0ODY2NzZmNjhkZmU4ZTdmN2EuLmYy
ZmVlNmNmN2Q2MWJkNTNiMThjYjMyZjhmN2QwMjUwMDRhZTU5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTAwIEBACisyMDIwLTEwLTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgR1BVIHJlbmRlcmlu
ZyByZXNvdXJjZSBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MzQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVz
b3VyY2VJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpyZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2lu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERy
YXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdHUFVCYWRnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd05hdGl2ZUltYWdl
SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
ZHJhd0ltYWdlQnVmZmVySXRlbSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2
ZUltYWdlKToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQu
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUp
OiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291
cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
OjpSZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpjb21t
aXRGbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjppbWFnZUJ1ZmZlcklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRyYXdHUFVCYWRnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90
ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6cmVtb3RlQ2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNh
Y2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6c2hvdWxkRHJhd0dQ
VUJhZGdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6ZHJh
d0dQVUJhZGdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5k
SW1hZ2VCdWZmZXJGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZpbmROYXRpdmVJbWFnZUZvckNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbW92ZVJlbW90ZUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBjb25z
dCk6CisKIDIwMjAtMTAtMDUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBzdXBwb3J0IGZvciBlbmFibGluZyBzdWJwaXhlbCBDU1NPTSB2YWx1ZXMsIGl0
J3Mgb2ZmIGJ5IGRlZmF1bHQgZXZlcnl3aGVyZSBhbmQga25vd24gdG8gYmUgbm90LWNvbXBhdGli
bGUgd2l0aCB0aGUgd2ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA1NjU2ZjdiMzA3MDNkZmUzMzUz
OTllYTg5YWJjMzVlZDMxZDRjNWQ3Li5mZmNlNTc1ZDA1YmEzNjg4M2I4YzBkMTQ5ODI2ZGQxYmFj
ZDBhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExOTAsNiArMTE5MCw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiZjA0MTBhMGU4Yzc4ZmJmYzBmNzFjMjBlNDMzNGUwMTM2NTMwYzQ2
Li5jNjA0NzExNGNmODY1NWU1NmI1YTZhYzY0YTZhZGM4ZmExZGM2NjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY3LDYg
KzIxNjcsOCBAQAogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYy
M0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyog
QW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJC
QUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcyQkVGQTFBMjUxQkVGRkUwMERENzhEMiAvKiBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyQkVGQTE5MjUxQkVGRkQwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3MkRDQTFFODI1MjNERkMwMDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRENBMUU2MjUyM0RFNTUwMEM5
QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJl
Y29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAq
LzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFODEwRDBDRTBC
MzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VDOTBEMENFNzJEMDA3
RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1NzkzRUM3MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVu
dC5oICovOyB9OwpAQCAtOTkzMiw3ICs5OTM0LDkgQEAKIAkJNzJCQUMzQUIyM0UxRTU0NDAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQUMyM0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMz
QUQyM0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcyQkVGQTE5MjUxQkVGRkQwMERENzhEMiAvKiBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQzE4
QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZVBhaW50aW5nT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJF
NDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjE5Nyw2ICsyNjIwMSw3IEBACiAJCQkJMzE0QkUzQTUx
QjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCTZC
MzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTU1QTMzNkY2
MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyRENBMUU2MjUyM0RF
NTUwMEM5QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQw
MDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwICovLApAQCAtMjYyMTQsNiArMjYyMTksNyBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJNzJCRUZBMTkyNTFCRUZGRDAwREQ3OEQyIC8qIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAv
KiBSZW1vdGVWaWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYy
IC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgz
IC8qIFJlbmRlcmluZ01vZGUuaCAqLywKQEAgLTMxMTgwLDkgKzMxMTg2LDcgQEAKIAkJCQk4MzVE
NTRDNTFGNERFNTM4MDBFNjA2NzEgLyogRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNDdBMDlEMTIwQTkzQTk3MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFwdGF0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VEQUFGQzkxOUEyQ0NEQzAwMzRERkQxIC8qIERp
c2tDYWNoZU1vbml0b3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ1MUM2MzQyMzk0MDU4
RjAwOTkzMTkwIC8qIExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3OTBGNDIyNTE3Q0U2RTAwOUJBMDM0IC8qIERpc3BsYXlMYXllckNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBMYXlv
dXRJbnRlZ3JhdGlvbkxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQzMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5NDAyNDA4
OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMTk1LDcgKzMxMTk5LDYgQEAKIAkJCQkyRDI5RUNDQTE5
MkYxRjFEMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyREU3MDAyMzE5MkZFODJBMDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNDODE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkZDRTFBMUEy
MjYxOEFCRDAwNEYwMzQzIC8qIExheW91dEludGVncmF0aW9uUnVuLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjc5MEY0MzI1MTdDRTZFMDA5QkEwMzQgLyogRGlzcGxheVZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTMxODg2LDYgKzMxODg5LDcgQEAKIAkJCQk2RkMzRjk0NzI1
MTY3NTY3MDBBNDlCRUEgLyogSW5saW5lTGluZVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ1
Nzc1Q0UyNDE0MzdENTAwMkRGMUEwIC8qIElubGluZVBhdGhEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RjQwREE4MjI1MTMwMzNBMDBFQzA0QjcgLyogSW5saW5lUmVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTREMzNGM0IyNTJBRUVDRDAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBFNTAyMzk5OTQyMTAwMTUxMkE3IC8qIElubGluZVNv
ZnRMaW5lQnJlYWtJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAy
MzM0QTIgLyogSW5saW5lU3R5bGVTaGVldE93bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VB
NDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMjg1NCw4ICszMjg1OCwxMSBAQAogCQkJCTZGMEI5OEI1MjNGMjY4RUMwMEVFQzJGMiAvKiBM
YXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDE4MDI1NTIzRDQ1NDlC
MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIExheW91dElu
dGVncmF0aW9uSW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZCNDdFNjMyMjc3
NDI1QTAwQzdCQ0IwIC8qIExheW91dEludGVncmF0aW9uTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIExheW91dEludGVncmF0aW9uTGluZUxheW91
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91
dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZDRTFBMUEyMjYx
OEFCRDAwNEYwMzQzIC8qIExheW91dEludGVncmF0aW9uUnVuLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNEE2NjRDQzI1MjFENEFGMDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0YyNTIxRDRFMjAwNzA4MURDIC8qIExheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEE2NjRDRTI1MjFENEM5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1v
ZGVyblBhdGguaCBpbiBIZWFkZXJzICovLApAQCAtMzMxMTgsNiArMzMxMjUsNyBAQAogCQkJCUE4
MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzJEQ0ExRTgyNTIzREZDMDAwQzlCMjBEIC8qIE5hdGl2ZUltYWdlUHRy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZl
Tm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkw
IC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcw
QUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MzM0ODgsNiArMzM0OTYsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1v
dGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8q
IFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAx
MjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzJCRUZBMUEyNTFCRUZGRTAwREQ3OEQyIC8qIFJlbW90ZVJlc291cmNlSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJl
bW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2
NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlF
MDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
QEAgLTM0NzU5LDcgKzM0NzY4LDYgQEAKIAkJCQlFMUVFOEI5OTI0MTMxOTUwMDBFNzk0RDYgLyog
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyQTlGNEEy
NDhBOTlFMjAwM0YwNkM4IC8qIFhSSW50ZXJhY3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUVFOEI4NDI0MTMxOTFGMDBFNzk0RDYgLyogWFJSZWZlcmVuY2VTcGFjZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5k
T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI3NzI0MTMxOTFGMDBFNzk0RDYgLyog
WFJSZWZlcmVuY2VTcGFjZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4Qjc5MjQxMzE5
MUYwMEU3OTRENiAvKiBYUlJlbmRlclN0YXRlSW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFF
RThCOEQyNDEzMTk1MDAwRTc5NEQ2IC8qIFhSU2Vzc2lvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggMzkyOTZhODk4YjZhZTExNTcwMjNl
MDU3MWExNzBmMmQ2NTE4NjQ2NC4uYWI5NjBkYWZlZGVmMTI5OTM1MGE2OWNjNGIxZjAwZjY4YjIy
OWZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTYwMiwxMCArNjAyLDE3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwg
bG9uZyBsb25nKSBvdmVycmlkZSB7IH0KIAorICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYg
bmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOworICAgIH0KKyAgICAKICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBvdmVycmlk
ZSB7IH0KIAogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0ciwg
RGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5h
dGl2ZUltYWdlUHRyJikgb3ZlcnJpZGUgeyB9CisKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29u
c3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQogICAgIHZv
aWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAz
ZmExODE3YTlkNjY2OGZiNDMzYjFiZDQ1YzYwODYyZjBjMzg3ZGQ2Li5iMzkyYWU4MTRiOWRmY2Vj
ZDIzZDNmOTA5NzNlNWM2ZGRhODM2YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQxMSw2ICs0MTEsMTcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiBpbWFn
ZSwgbG8KICAgICAgICAgY2FjaGVkSW1hZ2UtPmRlY29kZWRTaXplQ2hhbmdlZChpbWFnZSwgZGVs
dGEpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZm9yIChhdXRvIGNh
Y2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAgaWYgKCZpbWFnZSAhPSBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNl
cnZlcjo6ZGlkRHJhdyhjb25zdCBJbWFnZSYgaW1hZ2UpCiB7CiAgICAgZm9yIChhdXRvIGNhY2hl
ZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCkBAIC00MzQsNiArNDQ1LDEyIEBAIHZvaWQgQ2FjaGVk
SW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1h
Z2UmIGltYWdlLCBJCiAgICAgICAgIGNhY2hlZEltYWdlLT5pbWFnZUZyYW1lQXZhaWxhYmxlKGlt
YWdlLCBhbmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCwgZGVjb2RpbmdTdGF0dXMpOwogfQogCit2
b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdpbGxCZURl
c3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJ
bWFnZSkKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKKyAg
ICAgICAgY2FjaGVkSW1hZ2UtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGltYWdlLCBuYXRp
dmVJbWFnZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmNo
YW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewog
ICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpAQCAtNjg5LDYgKzcw
NiwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdl
JiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSBhbgogICAgICAgICBtX2NsaWVudHNXYWl0aW5n
Rm9yQXN5bmNEZWNvZGluZy5jbGVhcigpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpuYXRpdmVJ
bWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBuYXRpdmVJbWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEltYWdlQ2xp
ZW50PiBjbGllbnRXYWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkSW1hZ2VDbGll
bnQqIGNsaWVudCA9IGNsaWVudFdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+bmF0aXZl
SW1hZ2VXaWxsQmVEZXN0cm95ZWQobmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hlZEltYWdl
OjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkK
IHsKICAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IDJhMDJiZTg1ZjFhMDU1MjJmNTliNDRiNWFhMjY3YWE5Zjk3
ZjhkN2YuLmU0N2YyYTA5ZjIwMzY1Y2FhODZlZTQ1ZTFjNDI2ZDA5ZjZhMmZmMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0OSwxNCBA
QCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKGNvbnN0
IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRlY29kZWRT
aXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisKKyAgICAg
ICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFn
ZSYpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IElt
YWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFn
ZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxs
cHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKKyAg
ICAgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0
IE5hdGl2ZUltYWdlUHRyJikgZmluYWw7CisgICAgICAgIAogICAgICAgICB2b2lkIGNoYW5nZWRJ
blJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIGZpbmFsOwogCkBAIC0x
NjQsNiArMTY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKTsK
ICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpOwogICAgIHZvaWQg
aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNv
bnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29k
aW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVk
KGNvbnN0IEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKICAgICB2b2lkIGNoYW5nZWRJ
blJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggMjk1ZTY1NmFiMWViYzFiOTBm
ZDFhY2U3ODNkMzQxOWMyZjY5YTA4Yi4uMzNhY2NmOTI2OTI4MWY3NTE1ZjhkZTZiNjkxMzQ2ZTc5
NGEwYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50LmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNiArNDcsOCBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxsZWQgd2hlbiBhIG5ldyBkZWNvZGVkIGZyYW1lIGZvciBhIGxhcmdlIGltYWdl
IGlzIGF2YWlsYWJsZSBvciB3aGVuIGFuIGFuaW1hdGVkIGltYWdlIGlzIHJlYWR5IHRvIGFkdmFu
Y2UgdG8gdGhlIG5leHQgZnJhbWUuCiAgICAgdmlydHVhbCBWaXNpYmxlSW5WaWV3cG9ydFN0YXRl
IGltYWdlRnJhbWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0
YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0KSB7IGltYWdlQ2hhbmdlZCgmaW1hZ2UsIGNo
YW5nZVJlY3QpOyByZXR1cm4gVmlzaWJsZUluVmlld3BvcnRTdGF0ZTo6Tm87IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgTmF0aXZlSW1h
Z2VQdHImKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVu
dChDYWNoZWRJbWFnZSYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjQ3NmEzNWI4MmQ5MzcwOGQzYjBmMmI0ZDFhNmQy
NTQ4MTJkMGUxMS4uMTJlN2NjM2E3YzBiOWNlNDU3NjBkMDRmN2YzYzZhNjkxMjI4M2ViNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1h
Z2VPYnNlcnZlci5oIgpAQCAtMjA0LDYgKzIwNSwyNCBAQCBib29sIEJpdG1hcEltYWdlOjpub3RT
b2xpZENvbG9yKCkKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCitzdGF0aWMgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYg
bmF0aXZlSW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXpl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICAvLyBTdWJzYW1w
bGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXpl
KCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKG5h
dGl2ZUltYWdlKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVp
Z2h0KCkpCisgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXpl
LnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRl
cyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUg
c3Vic2FtcGxlZCBpbWFnZS4KKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVj
dDsKKyAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQorICAgICAgICBhZGp1
c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBG
bG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CisKKyAgICBpZiAoaW1hZ2UuaW1h
Z2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZS5pbWFnZU9ic2VydmVyKCktPmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgY29udGV4dCwgbmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRl
c3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgIGVsc2UKKyAgICAgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRl
c3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworfQorCiBJbWFnZURyYXdSZXN1bHQg
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3Jj
UmVjdC5pc0VtcHR5KCkpCkBAIC0yOTIsOSArMzExLDkgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXMKICAgICBhdXRvIG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbigpOwogICAgIGlm
IChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpIHsKICAgICAgICAg
b3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0g
ICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEludFNpemUoc2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwor
ICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKnRoaXMsIGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwg
c3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRp
b24gfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4
dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShvcmllbnRhdGlvbikpLCBvcHRpb25z
KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCp0aGlzLCBpbWFnZSwgY29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShvcmllbnRhdGlvbikpLCBvcHRpb25zKTsKIAogICAg
IG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDI2NWNiNTdkMzkzOTUwMzhhNjI5ZjM1
YmNkNjg2M2FhNDQ0MzljNjcuLmU4NGM0M2Y5YjcxZWM1OWQ0ZjhiMmE4NzNlYjFkNjAwODMyMjg1
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtNDI1LDYgKzQyNSw0MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVzdG9yZSgpCiAgICAgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKIH0KIAordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdHUFVCYWRnZShjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNv
bnN0IEZsb2F0UG9pbnQmIGJhZGdlUG9zaXRpb24sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3Qg
U3RyaW5nJiB0ZXh0KQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqdGhpcyk7CisKKyAgICBzZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgIHNldFN0cm9r
ZUNvbG9yKGNvbG9yKTsKKyAgICBzdHJva2VSZWN0KGNvbnRhaW5lclJlY3QsIDAuNSk7CisKKyAg
ICBjb25zdCB1bnNpZ25lZCBmb250U2l6ZSA9IDEwOworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkFy
aWFsIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOworCisgICAgRm9u
dENhc2NhZGUgY2FzY2FkZShXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGNhc2NhZGUu
dXBkYXRlKG51bGxwdHIpOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKHRleHQpOworICAgIGZsb2F0
IHRleHRXaWR0aCA9IGNhc2NhZGUud2lkdGgodGV4dFJ1bik7CisgICAgCisgICAgRmxvYXRSZWN0
IGJhZGdlUmVjdChiYWRnZVBvc2l0aW9uLCBGbG9hdFNpemUodGV4dFdpZHRoICsgMiwgZm9udFNp
emUgKyAyKSk7CisgICAgaWYgKGJhZGdlUG9zaXRpb24ueCgpID09IGNvbnRhaW5lclJlY3QubWF4
WCgpKQorICAgICAgICBiYWRnZVJlY3Quc2V0WChiYWRnZVBvc2l0aW9uLngoKSAtIGJhZGdlUmVj
dC53aWR0aCgpKTsKKworICAgIGlmIChiYWRnZVBvc2l0aW9uLnkoKSA9PSBjb250YWluZXJSZWN0
Lm1heFkoKSkKKyAgICAgICAgYmFkZ2VSZWN0LnNldFkoYmFkZ2VQb3NpdGlvbi55KCkgLSBiYWRn
ZVJlY3QuaGVpZ2h0KCkpOworCisgICAgZmlsbFJlY3QoYmFkZ2VSZWN0LCBjb2xvcik7CisgICAg
CisgICAgc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7CisgICAgY2FzY2FkZS5kcmF3VGV4dCgq
dGhpcywgdGV4dFJ1biwgRmxvYXRQb2ludChiYWRnZVJlY3QueCgpICsgMSwgYmFkZ2VSZWN0Lnko
KSArIDEgKyBmb250U2l6ZSkpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNl
ZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgZWxsaXBzZUNvbG9y
LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKQEAgLTcyOSw2ICs3NjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4
dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlS
dW5zLmNsZWFyKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdl
KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwogSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVz
dGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNp
emUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKQEAgLTc0NSw3ICs3OTIsNyBAQCBJbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAg
IGlmIChtX2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVy
biBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBA
IC03NTcsNyArODA0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1l
bnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhp
c1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzcwLDcg
KzgxNyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdl
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAg
IGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2Uo
KSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsKIAog
ICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0
cmV0Y2hUaWxlKSB7CkBAIC03OTcsNiArODQ0LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
bV9pbXBsICYmIG1faW1wbC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCBvcHRpb25zKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRp
b25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwODhmMmU1Mzk2YjliNDM4NTg4
N2VjMDFmYWNhOGU3ZGQ5MGUxODA3Li41MWZjYTRkNjI4YjM5YjEwYWE4ZWZiNGZiNGU4MThjYmMx
MTJmMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBHbHlwaEJ1ZmZlcjsKICNlbmRp
ZgogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZs
b2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dElt
cGw7CkBAIC0zMzMsMTAgKzMzNCw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAotI2lmIFVTRShD
RykgfHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lm
IFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7
CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CkBAIC0zNTUsNiArMzUyLDggQEAgcHVibGlj
OgogICAgIAogICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2su
c2l6ZSgpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdHUFVCYWRnZShjb25zdCBG
bG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIGJhZGdlUG9zaXRpb24s
IGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICAKICAgICAvLyBUaGVzZSBk
cmF3IG1ldGhvZHMgd2lsbCBkbyBib3RoIHN0cm9raW5nIGFuZCBmaWxsaW5nLgogICAgIC8vIEZJ
WE1FOiAuLi5leGNlcHQgZHJhd1JlY3QoKSwgd2hpY2ggZmlsbHMgcHJvcGVybHkgYnV0IGFsd2F5
cyBzdHJva2VzCiAgICAgLy8gdXNpbmcgYSAxLXBpeGVsIHN0cm9rZSBpbnNldCBmcm9tIHRoZSBy
ZWN0IGJvcmRlcnMgKG9mIHRoZSBjb3JyZWN0CkBAIC0zODIsNiArMzgxLDggQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IGxpbmVXaWR0aCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9LCBDYWNoZWRJbWFnZSogPSBudWxscHRyKTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJ
bWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
cmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlIH0pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02
NDksNiArNjUwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAKKyAgICB2b2lkIHBs
YXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworCiAgICAgRmxvYXRSZWN0
IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRS
ZWN0JiwgYm9vbCBwcmludGluZywgQ29sb3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3Ju
ZXJXaWR0aEZvclN0cm9rZVdpZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA4YmM5
YzFjMmVjYzBjYmZjMzgyNmFhMWUwMTkxMzFjODkzNzJkM2ZlLi5iOTAyOWY4OTVlY2U4Y2E3YWQz
ZDNiZDhjY2U0ZDI5OTdhYjU3MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlJl
bW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcy
LDkgKzczLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7Ci0jZW5kaWYKKwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIENhY2hl
ZEltYWdlKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQxNDY0OTJjNGE4ZGY5MzVjYWY5NGI5
ZmI5NTU5MDlhYWQxY2JhZjAuLmRiZTAyNWVlOWUxYTQ0MGYwMmVhOTY2NGEzNGY5OGEwZjZjNTFh
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBEcmF3aW5nQ29udGV4dDsKIH0K
IApAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIERpc3BsYXlMaXN0OjpE
cmF3aW5nQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
dmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Zmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0K
IAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IGYwMzI0
ODQ3MjgzNjczOTBiMzA1OWNmNThjZTEyMGFiMzcyYTM1NTUuLjE3ZDkyN2EzZWU5ZDYwZDFkMDQ4
ZmMwY2M1MmYwMzM5ZTQ4NDNiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTQ1LDEwICs0NSwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChjb25zdCBJbWFnZSYsIEVuY29k
ZWREYXRhU3RhdHVzKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChj
b25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSA9IDA7
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwg
SW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIs
IERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYpID0gMDsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVj
dChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1h
Z2UmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCmluZGV4IDc3NTAzMjIzOWE1ZDVhYmFhNzYzZjdhMjYzZWQ3Y2IyNDU5ODI2
NTIuLjQ1NTE1YzU5YTFmZjI4NGNkOGQyODAzODM3YjA4NWI1MDIyZDZjMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTEzMCw4
ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBm
cmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogICAgIEFTU0VSVChmcmFtZUNvdW50IDw9
IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
ZnJhbWVDb3VudDsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1l
KQorICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lIHx8ICFtX2ZyYW1lc1tpbmRleF0u
bmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobV9pbWFn
ZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgICAgICBtX2ltYWdlLT5pbWFn
ZU9ic2VydmVyKCktPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCptX2ltYWdlLCBtX2ZyYW1l
c1tpbmRleF0ubmF0aXZlSW1hZ2UoKSk7CiAgICAgICAgIGRlY29kZWRTaXplICs9IG1fZnJhbWVz
W2luZGV4XS5jbGVhckltYWdlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFlMzViMDhjZjc0ZjRmMzYxYWVi
Yzc0ZjMxMjljN2Q5YjdmLi4wNzNlN2RhMmQwNzAwOGFhYzBlNmU0ZGFhMzkyMDFkZmVjZDYxMmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgK
QEAgLTI4LDIxICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlUGFpbnRp
bmdPcHRpb25zLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
dHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFy
ZWRCaXRtYXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkNPTVB0
ci5oIgotI2luY2x1ZGUgPGQyZDEuaD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotI2VuZGlmCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
MSwyOCArMzcsMTIgQEAgY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIAotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8
SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkp
Ci10eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0K
IFdFQkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJik7CiBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsK
IENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW50U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4
dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmIHNvdXJjZSk7CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYpOwogCi1jbGFzcyBOYXRpdmVJbWFnZUhhbmRsZSB7Ci1wdWJsaWM6
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7Ci19OwotICAgIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q3
N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFkMDdjOTU4MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Cit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQor
I2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNo
YXJlZEJpdG1hcC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShD
RykKK3R5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOworI2VsaWYg
VVNFKERJUkVDVDJEKQordHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRy
OworI2VsaWYgVVNFKENBSVJPKQordHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRp
dmVJbWFnZVB0cjsKKyNlbGlmIFVTRShXSU5HREkpCit0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRt
YXA+IE5hdGl2ZUltYWdlUHRyOworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjY5MGJlY2RjOGI0YWFlODUyNGIzZjY4MTBmYjkyNjRjODVjNDk5YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworZW51bSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAppbmRleCBhMTA0NjU2Y2I1ZDVkZGVhMDMyMWRhYTQ0YTA0NDY1MTc1MDg4
ZTRmLi4yYWI5Y2UzYmJhMjVlYTU0ODU0NDhmMzRhYTc3N2FmZTA0ZTczNGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTYgKzEyMywxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlj
a25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgYm9y
ZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA2M2ZiNWRkNjFiYWJjY2NmNzA5MDRl
NTZkMmY5ZDRlNWFkNThjYWM1Li5hY2IxZTRlNGNhYjk2YmU0YmNkMDlmZmM1YTI4Y2U5OTgxNmZm
MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yODAsMTYgKzI4MCwxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9E
ZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdl
KGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAjaWYgIUxPR19E
SVNBQkxFRAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggNWNjNWMyMDdiNDRhNDgzNWJlMmUwODAyOGEzYTcx
MDk1YTU1ZTFlMC4uN2MyOTZjOWNmNzc3YThiNGE4M2VlNzI4M2RlYzFmNDlhNTBjNzFmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCkBAIC02OSwyMSArNjgsNiBAQCBDb2xvciBuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAg
ICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICAvLyBTdWJz
YW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBz
aXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXpl
KGltYWdlKTsKLSAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0
KCkpCi0gICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXplLnRy
YW5zcG9zZWRTaXplKCk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBv
ZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vi
c2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsK
LSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3Rl
ZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9h
dFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3Jj
UmVjdCwgb3B0aW9ucyk7Ci19Ci0KIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3Rv
ciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCiB7
CiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDYxMDY0YTg4NjNiNDBmMTkwNWRhYTQwNTMzODdj
MjI0YjY0MjNhOGEuLmYwMDgyOTk4NzAxNmFkMmM1ZGMxZTU4ZWJjMGE5ODNlZTBiMTM0YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw5ICs2Miw4IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCiAgICAg
RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShE
SVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCi0jZW5kaWYKKyAgICBEcmF3SW1hZ2VCdWZm
ZXIsCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggMjNj
YzA3ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4Ny4uY2IxYmI2MDE1ZDU0NzMwMmFh
NjRkMGUzMzhjNmZlMmY1ZmVmOThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdD
b250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBvYnNlcnZlcikKK0RyYXdpbmdDb250
ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpSZW1vdGVDbGllbnQqIHJlbW90
ZUNsaWVudCkKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlz
dENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlM
aXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRS
ZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBvYnNlcnZlcik7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlzcGxheUxp
c3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwg
aW5pdGlhbENUTSwgcmVtb3RlQ2xpZW50KTsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJhZDgxNWE1MDA4
MWI3ZTdhYjEwODEzMTcxN2ZkZTU0My4uZTU1MmFkNjA4YjM3NjZkZDJhMTJkMjU2YjlhNzQ0Y2Fh
YWExY2Q3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEcmF3
aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6T2Jz
ZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFs
Q1RNID0geyB9LCBSZWNvcmRlcjo6UmVtb3RlQ2xpZW50KiA9IG51bGxwdHIpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5n
Q29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRl
ciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
CmluZGV4IDg2NzJiMWI0NzA4NDc2OTAxODUwODQ5NTlhNzdhZjQyZmRiODA0M2YuLjRmYmU0ZjYy
YjBiY2YxYWI5OTE0ZWZiNjlkY2NkYzJjMTgyMTA3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5k
VHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFj
a2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2NsYXNzIEltYWdlQnVmZmVy
IDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+
OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgogCiAgICAgSW1hZ2VCdWZm
ZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9h
dFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShk
YXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJh
d2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChz
aXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAgewogICAgIH0KIAotICAg
IEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBtX2RyYXdpbmdD
b250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykKKyAgICBJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVyOjpSZW1vdGVDbGllbnQq
IHJlbW90ZUNsaWVudCA9IG51bGxwdHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXpl
LCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHJlbW90ZUNsaWVudCkKICAgICB7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZGJmMTg4NGEy
MWEzNDlmNmFhMDMzMzdmNzZlZDU5MjkyM2MwNGRlMy4uZTIyMmMxYzk1NDhhNzFlZGI4MWZkODk2
MGJkMWE4OWI4YWY1YTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVT
RShDRykKQEAgLTEwNSwxMCArMTA0LDEwIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25z
dCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZElt
YWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0p
KTsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0
aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdl
PihpdGVtKSk7Ci0jZW5kaWYKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Cisg
ICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93
bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoK
QEAgLTcwMCwzMiArNjk5LDIyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKICAgICByZXR1cm4g
dHM7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlVHlwZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkK
LSNpZiBVU0UoQ0cpCi0gICAgLy8gRklYTUU6IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2UgZm9yIENh
aXJvLgogICAgICwgbV9pbWFnZShpbWFnZSkKLSNlbmRpZgogICAgICwgbV9pbWFnZVNpemUoaW1h
Z2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1Jl
Y3Qoc3JjUmVjdCkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewotI2lmICFVU0UoQ0cpCi0g
ICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKLSNlbmRpZgogfQogCiBEcmF3TmF0aXZlSW1hZ2U6On5E
cmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBs
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
UmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29u
dGV4dCk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobmF0aXZlSW1hZ2VQdHIoKSk7CisgICAgY29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2VQdHIoKSwgbV9pbWFnZVNpemUsIG1fZGVzdGlu
YXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0p
CkBAIC03MzYsNyArNzI1LDMyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKICAgICByZXR1cm4gdHM7
CiB9Ci0jZW5kaWYKKworRHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3Jj
UmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdJbWFn
ZUJ1ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9pZCBEcmF3SW1hZ2VC
dWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8gU2hvdWxkIGJl
IGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdp
bmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRl
bnRpZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVy
dHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsK
K30KIAogRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
ICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0dGVybikKQEAgLTE0MjcsOSArMTQ0
MSw4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJk
cmF3LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRz
IDw8ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Rp
bGVkU2NhbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwot
I2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7Ci0jZW5kaWYKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJu
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3Qi
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZTogdHMgPDwgImRyYXctbGluZSI7
IGJyZWFrOwpAQCAtMTUyOCwxMSArMTU0MSwxMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdU
aWxlZFNjYWxlZEltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJ
bWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNh
c3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERy
YXdJbWFnZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSk7
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZjA1
NTg2OWUxN2FhYTk2NjRlYjUzZmIxYmVlNzk1ODA2NDI4ZDM2My4uZWJlNWFjOTQ3ZmVlOTNmMTZi
YzU5OWJhMjQ0YThlNjJkN2RmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURh
dGEuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVD
YXN0cy5oPgogCkBAIC0xNDMwLDQ1ICsxNDMxLDEyNCBAQCBPcHRpb25hbDxSZWY8RHJhd1RpbGVk
U2NhbGVkSW1hZ2U+PiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZQogICAgIHJldHVybiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6Y3JlYXRlKCppbWFnZUhhbmRsZS0+
aW1hZ2UsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKnRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZS
dWxlLCAqaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJ
Uk8pIHx8IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3
aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHVzaW5nIEltYWdlVHlwZSA9
IFZhcmlhbnQ8TmF0aXZlSW1hZ2VQdHIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisKKyAg
ICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IEltYWdlVHlwZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUlt
YWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAg
ICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXI+KG1faW1hZ2UpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4obV9pbWFnZSk7Cisg
ICAgfQorCisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQdHIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE5hdGl2ZUltYWdlUHRyPihtX2lt
YWdlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpn
ZXQ8TmF0aXZlSW1hZ2VQdHI+KG1faW1hZ2UpOworICAgIH0KKworICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2l6ZTsgfQogICAgIEZsb2F0UmVjdCBzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZl
SW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBE
cmF3TmF0aXZlSW1hZ2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZVR5cGUmLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0ciBt
X2ltYWdlOwotI2VuZGlmCisgICAgSW1hZ2VUeXBlIG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1f
aW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJl
Y3QgbV9zcmNSZWN0OwogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAK
K2NsYXNzIERyYXdJbWFnZUJ1ZmZlciA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxEcmF3SW1hZ2VCdWZmZXI+IGNyZWF0ZShSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3SW1hZ2VC
dWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRp
b25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd0ltYWdlQnVm
ZmVyKCk7CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAg
ICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxv
YXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0
OyB9CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
b3B0aW9uczsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAg
ICBXRUJDT1JFX0VYUE9SVCBEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0Owor
ICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRp
b25zOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd0ltYWdlQnVmZmVy
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7
CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVy
Pj4gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRp
b25hbDxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsK
KyAgICBkZWNvZGVyID4+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5h
dGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzb3VyY2U7CisgICAgZGVjb2RlciA+PiBzb3Vy
Y2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKKyAgICBkZWNvZGVyID4+
IG9wdGlvbnM7CisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKm9wdGlvbnMpOworfQorCiB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZUhhbmRsZSBoYW5k
bGUgeyBtX2ltYWdlIH07Ci0gICAgZW5jb2RlciA8PCBoYW5kbGU7Ci0jZW5kaWYKKyAgICBlbmNv
ZGVyIDw8IG1faW1hZ2U7CiAgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKICAgICBlbmNvZGVy
IDw8IG1fZGVzdGluYXRpb25SZWN0OwogICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OwpAQCAtMTQ3
OCwxMiArMTU1OCwxMCBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8UmVmPERyYXdO
YXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0jaWYgVVNFKENHKQotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlSGFuZGxlPiBoYW5kbGU7Ci0g
ICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFoYW5kbGUpCisgICAgT3B0aW9uYWw8SW1h
Z2VUeXBlPiBpbWFnZTsKKyAgICBkZWNvZGVyID4+IGltYWdlOworICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYKIAogICAgIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gaW1hZ2VTaXplOwogICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOwpAQCAtMTUwNSwxNCAr
MTU4Myw4IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFn
ZSA9IGhhbmRsZS0+aW1hZ2U7Ci0jZWxzZQotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gbnVs
bHB0cjsKLSNlbmRpZgotICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwg
KmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKKyAgICBy
ZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGlu
YXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQotI2VuZGlmCiAKIGNsYXNzIERyYXdQ
YXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKQEAgLTI5MjQsMTEgKzI5OTYs
MTIgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3du
Y2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKLSNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZl
SW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0ltYWdl
QnVmZmVyPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhpcyk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMzExMiwxMiArMzE4NSwxNCBAQCBPcHRpb25hbDxSZWY8SXRl
bT4+IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVt
ID0gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAg
ICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9
IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFr
OwotI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBp
ZiAoYXV0byBpdGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAg
IGlmIChhdXRvIGl0ZW0gPSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBA
IC0zMjcwLDkgKzMzNDUsOCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd0dseXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShE
cmF3SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1Rp
bGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1Rp
bGVkU2NhbGVkSW1hZ2UpCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQotI2VuZGlmCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5lKQpAQCAtMzMzMSw5ICszNDA1LDgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0j
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKyAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKLSNlbmRpZgogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CmluZGV4IGJkMDQzOGM2YTRiMjU2Yzg4NTZiYjEyOWEzYWI1ZmEyM2U3OGRjOGEuLmY2ODU5NzA5
YzBlMjk4MGI0YTZiYjU5N2NmYzdmNTc4MmFiN2MwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMzcsMTAgKzM4LDEwIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBPYnNlcnZlciogb2JzZXJ2ZXIpCitS
ZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBS
ZW1vdGVDbGllbnQqIHJlbW90ZUNsaWVudCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29u
dGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKQogICAgICwgbV9kaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX3JlbW90
ZUNsaWVudChyZW1vdGVDbGllbnQpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0
cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAg
ICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9
KTsKQEAgLTUyLDE1ICs1MywxNSBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBMT0coRGlz
cGxheUxpc3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0LmRl
c2NyaXB0aW9uKCkuZGF0YSgpKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGRlc3RGb3JtYXQpCit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKIHsKLSAgICBhcHBlbmRJdGVtKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRh
LCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKKyAgICBhcHBlbmRJdGVtKFB1dElt
YWdlRGF0YTo6Y3JlYXRlKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2lu
dCwgZGVzdEZvcm1hdCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbShjb25z
dCBJdGVtJiBpdGVtKQogewotICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29ic2VydmVy
LT53aWxsQXBwZW5kSXRlbShpdGVtKTsKKyAgICBpZiAobV9yZW1vdGVDbGllbnQpCisgICAgICAg
IG1fcmVtb3RlQ2xpZW50LT53aWxsQXBwZW5kSXRlbShpdGVtKTsKIAogICAgIGlmIChpdGVtLmlz
RHJhd2luZ0l0ZW0oKQogI2lmIFVTRShDRykKQEAgLTEzNiwxMyArMTM3LDM0IEBAIEltYWdlRHJh
d1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVjb3JkOwog
fQogCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLXZvaWQgUmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
dm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKIHsKKyAgICBpZiAobV9yZW1vdGVDbGll
bnQgJiYgY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyID0gbV9yZW1vdGVDbGllbnQtPmZpbmROYXRpdmVJbWFnZSgqY2FjaGVkSW1hZ2UsIGlt
YWdlKSkgeworICAgICAgICAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3
aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7Cisg
ICAgICAgICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorCiAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2Fz
dDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVt
RXh0ZW50KG5ld0l0ZW0pOwogfQotI2VuZGlmCisKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCit7CisgICAgaWYgKCFtX3JlbW90ZUNsaWVudCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9y
ZW1vdGVDbGllbnQtPmZpbmRJbWFnZUJ1ZmZlcihpbWFnZSkpIHsKKyAgICAgICAgaW1hZ2UuZmx1
c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25j
YXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMpKSk7CisgICAgICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAogdm9pZCBSZWNvcmRl
cjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZDI3MGM1ZDkwOGFjNjhkNzgwODM2M2JiYTkx
YjJlNzYxYWVkYzkyYi4uOWUxNTJmMTdiOWI4ODJjZDQzYzFjMzkwNDRkZmFlNmZhY2FlMzU1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBs
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNpbmNsdWRl
ICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNTMsMjAgKzU0LDIxIEBAIGNsYXNzIFJl
Y29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoK
LSAgICBjbGFzcyBPYnNlcnZlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGlj
c0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29u
c3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgT2JzZXJ2
ZXIqID0gbnVsbHB0cik7CisgICAgY2xhc3MgUmVtb3RlQ2xpZW50IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgflJlbW90ZUNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciBmaW5kSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImKSB7IHJldHVy
biB7IH07IH0KKyAgICAgICAgdmlydHVhbCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZE5h
dGl2ZUltYWdlKENhY2hlZEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IHJldHVybiB7
IH07IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7
IH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4
dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBSZW1vdGVDbGllbnQq
ID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3JkZXIoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRp
b24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZv
cm1hdCk7CiAKICAgICBzaXplX3QgaXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TGlzdC5pdGVtQ291bnQoKTsgfQogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgewotICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHdp
bGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07Ci0gICAgfTsKLQogcHJpdmF0ZToKICAgICBi
b29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTEwMiw5ICsxMDQsOSBAQCBwcml2YXRlOgog
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3Is
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8
fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0jZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmLCBDYWNoZWRJbWFnZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKQEAgLTE4Myw3ICsx
ODUsNyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKICAg
ICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBPYnNlcnZlciogbV9vYnNlcnZlcjsK
KyAgICBSZW1vdGVDbGllbnQqIG1fcmVtb3RlQ2xpZW50OwogCiAgICAgVmVjdG9yPENvbnRleHRT
dGF0ZSwgMzI+IG1fc3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IGNlYTJhNmVhMDQ0NTM0ZmY0
NTQ0ZWEyMTA5YzI2MTdkNzk3Y2EyZjEuLjkzZTM4YzVhZjI4NjE0ODVmYTU2N2UxN2Q3NjdjODcw
MjAzZDI4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NDksNyArNTQ5LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXQKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBs
KGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxl
RmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKikKIHsKICAg
ICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJh
dGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewogICAgICAg
ICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CkBAIC01NzAsNiArNTcwLDEy
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3
TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSkpOwogfQogCitib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIHN0cnVjdCBEcmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRp
b25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0
UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50LCBJbWFnZVBhaW50aW5nT3B0aW9ucz4g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oCmluZGV4IGRlMjRhYjhiZDUyNDMyY2UyOTNhODBmNmI0Zjk4NjBmMjIyZmE3ZmYuLjdjNDNm
ZWFmNDJkMzcwYWEzOGU4MjY4ODA2ZWRiZjEyZWI2NzYxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY3LDcgKzY3LDkg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKFdlYkNv
cmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1h
Z2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJD
b3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6Oklt
YWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqKSBvdmVy
cmlkZTsKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
IG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXgg
Mzc0MDcxNzE1YmNiNzkxZDU4OWQ1MGQ5OWIyOWM2NmIwMTBiNzA4MS4uNTdiYTg1OGZmOTljMmRi
MjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwCkBAIC0yMDcsMTYgKzIwNywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBs
YXRmb3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNvbnRleHQoKSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRy
PElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
bV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29u
dGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2UyNDdhN2FkNGNkMjk1MzhlNGVhZjQwYmQ4MDM2OTY4NjAwOGI4Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZl
cklkZW50aWZpZXIpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllcihpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpCi17Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5OjpjcmVhdGVCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKLXsKLSAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgbV9p
bWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHk6OmNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRl
bnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0SW1hZ2VC
dWZmZXJGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVySWRlbnRpZmll
ciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU5MjBlZmRkYzE3OWY2M2ZkNGZkMjRi
Y2Y3OTEzMjQxMDk1ZTYzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNp
bmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
U3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9GbG9hdFNpemUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotZW51bSBjbGFzcyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKLWNsYXNzIEltYWdlRGF0YTsKLX0KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLQot
Y2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoKSA9IGRlZmF1
bHQ7Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4gU2VlIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIp
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0
YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSBz
ZW50LiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KLSAgICB2b2lkIGNy
ZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKLSAgICB2b2lkIGNv
bW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7Ci0KLXByaXZhdGU6
Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTsKLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDgxYjg5NzhkMGU3OTExNTdmOWM3ZTQ5
NzAzOTgxN2U0Nzk1OWU1MTQuLjViM2E4NzEyZWZjMTRjMmY0N2ViYTRiMjVjNWQyYzZiYjg5ODdl
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjcsMjkgKzI3LDI5IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRU
eXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSwgcHVibGlj
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgeworY2xhc3MgUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJh
Y2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdh
dGUgewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3Jl
dGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OmNvbnRleHQ7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFj
a2VuZDsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwog
CiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVs
bHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
OworICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0
ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGlt
YWdlQnVmZmVySWRlbnRpZmllcikKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcihXVEZNb3ZlKGJhY2tlbmQpKQotICAgICAgICAsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIGltYWdlQnVmZmVySWRl
bnRpZmllcikKKyAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewotICAgICAgICBjcmVhdGVCYWNrZW5kKG1fYmFj
a2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQt
PnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQt
PmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNv
bHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfQogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyUHJveHkoKQpAQCAtNjEsOSArNjEsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0OwotICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjpwdXRJbWFnZURhdGE7Ci0KICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgewpAQCAtNzIsMjcg
KzY5LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aWVyKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5
TGlzdCk7Ci0gICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7Ci0gICAgICAgIGNvbW1p
dEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiBpdGVt
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewotICAg
ICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YShvdXRwdXRG
b3JtYXQsIHNyY1JlY3QpOwotICAgIH0KLQotICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBpZiAoaXRlbS50eXBlKCkgIT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpQdXRJbWFnZURhdGEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmIChpdGVtLnR5cGUoKSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dElt
YWdlRGF0YSkgeworICAgICAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVtKTsKKyAgICAgICAg
ICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdl
RGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFn
ZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogCi0gICAgICAgIGF1dG8mIHB1dElt
YWdlRGF0YUl0ZW0gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VE
YXRhJj4oaXRlbSk7Ci0gICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0
Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0u
c3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVt
LmRlc3RGb3JtYXQoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuYXBwbHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29udGV4
dCk7CiAgICAgfQorICAgIAorICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggZGJiNTViYTNjMjIwZGU4NmYxOGE1
MzNjZmEwODcxOGYzODkyNGYwOC4uMzBiNWRjMzRkMDQwNjhkODNkNmY0ODc0MDc5YWZmZTUxNmNh
MGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC02Niw1OSArNjYsNDYgQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1
ZmZlcklkZW50aWZpZXIpCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6YXBwbHlS
ZXNvdXJjZUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOwotICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcC5jb250YWlucyhpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHJlbmRl
cmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQpIHsKLSAgICAgICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywg
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChy
ZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkIHx8IHJlbmRl
cmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkgewotICAgICAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRo
aXMsIGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdl
QnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuYXBwbHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29udGV4dCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpyZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewot
ICAgIC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZl
ZCBiZWZvcmUgdGhpcyBvbmUuCi0gICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlck1hcC5yZW1vdmUoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3Qs
IEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0
byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKSkgewotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IGltYWdlQnVmZmVy
LT5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Ci0g
ICAgfQorICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNyZWF0ZUltYWdlQnVmZmVyKGxv
Z2ljYWxTaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0
KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERyYXdp
bmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5m
bHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBzaG91bGREcmF3R1BVQmFkZ2UsIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVz
aElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
SW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwg
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZl
cklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFu
ZENvbW1pdChkaXNwbGF5TGlzdCwgZmx1c2hJZGVudGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBz
aG91bGREcmF3R1BVQmFkZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENv
bnRleHQoZmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8g
aW1hZ2VEYXRhID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuZ2V0SW1hZ2VEYXRhKG91dHB1
dEZvcm1hdCwgc3JjUmVjdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsK
K30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAg
ICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggNjc2NGFjMTBjNWU3ZTAyYTRjOTc4NzdiOWM1ZTU1
Y2EwYjc4Y2IxZS4uMDYyMjhmZWY5NGVhZTlmMjNhNzEyZGE0ODFhYmI2YWVmMDEwZmVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMjgsMjQgKzI4LDIzIEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
SW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgog
I2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmlu
Z01vZGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFz
cyBEaXNwbGF5TGlzdDsKIH0KK2NsYXNzIEZsb2F0U2l6ZTsKK2VudW0gY2xhc3MgQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiB1aW50OF90OwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDcgKzU4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gY3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAg
dmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAKLSAgICBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7IH0KKyAgICBib29sIGFwcGx5UmVzb3Vy
Y2VJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Jik7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgorICAgIHZvaWQgcmVtb3RlQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKQEAgLTczLDE0ICs3NSwxNCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNz
YWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpOwotICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qg
c3JjUmVjdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKLQotICAgIHVzaW5nIEltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eT4+OwotICAgIEltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOwor
ICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29y
ZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07
CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA3OThjOGI0ZWRiNTdmNWFkMDgyYmE4MWMxMDA4YjBkY2RlZmRm
MThhLi5kNGVlYzRmOWJjMTNmYzQyOTVkNGYzMGMzMDU0NmQ4M2VkMTg4MWI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywx
MiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpCi0gICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1
ZmZlckRyYXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNw
bGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICBHZXRJbWFnZURhdGEoZW51
bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBX
ZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGlt
YWdlQnVmZmVySWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0
YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0
U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
KyAgICB2b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgYm9vbCBzaG91bGREcmF3
R1BVQmFkZ2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQorICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikg
LT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIENhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgdm9pZCBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFkOWZh
NzEzZGQ2NjRjMmVjNmM2MmU5NGY2ZmYyOTY4ZTE3N2RhOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIDogbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorewor
fQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9yZW1v
dGVJbWFnZUJ1ZmZlckhhc2hNYXAuY29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2U7CisKKyAg
ICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCkK
KyAgICAgICAgaW1hZ2UgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0
ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlmICgh
aW1hZ2UgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJh
dGVkKQorICAgICAgICBpbWFnZSA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAg
ICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2Us
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7Cisg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1fc2hvdWxkRHJhd0dQVUJhZGdlLCBzaG91bGRE
cmF3R1BVQmFkZ2UpOworICAgIGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1h
cC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoaW1hZ2UpCisgICAgICAg
IGltYWdlLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICByZXR1cm4gaW1h
Z2U7Cit9CisKK0ltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBpbWFnZSA9IGZsdXNoRHJh
d2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHNob3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIGltYWdlLT5mbHVzaENvbnRl
eHQoKTsKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAoreworICAgIGlmIChhdXRvIGltYWdl
ID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikpCisgICAgICAgIHJldHVybiBpbWFnZS0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3Jj
UmVjdCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwLmFkZChyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIGltYWdlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
ZHJhd0dQVUJhZGdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBj
b250YWluZXJSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdGV4dCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fc2hvdWxkRHJhd0dQVUJhZGdlKQorICAgICAgICByZXR1cm47Cisg
ICAgY29udGV4dC5kcmF3R1BVQmFkZ2UoY29udGFpbmVyUmVjdCwgY29udGFpbmVyUmVjdC5tYXhY
TWF4WUNvcm5lcigpLCBjb2xvciwgdGV4dCk7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpkcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVt
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlJj4oaXRlbSk7
CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBkcmF3SXRlbS5yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBpbWFnZSA9IG1fcmVtb3RlTmF0aXZlSW1h
Z2VIYXNoTWFwLmdldChkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAg
aWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGRyYXdJdGVtLmltYWdlU2l6ZSgpLCBkcmF3SXRlbS5kZXN0aW5hdGlv
blJlY3QoKSwgZHJhd0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgZHJh
d0dQVUJhZGdlKGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBXZWJDb3JlOjpD
b2xvcjo6cmVkLCAiSU1BR0UiX3MpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd0ltYWdlQnVmZmVySXRlbShjb25zdCBEaXNwbGF5TGlz
dDo6SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGF1
dG8mIGRyYXdJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlciY+KGl0ZW0pOworICAgIGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1h
cC5nZXQoZHJhd0l0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIGlmICghaW1h
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlLT5kcmF3KGNvbnRleHQsIGRy
YXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0
aW9ucygpKTsKKyAgICBkcmF3R1BVQmFkZ2UoY29udGV4dCwgZHJhd0l0ZW0uZGVzdGluYXRpb25S
ZWN0KCksIFdlYkNvcmU6OkNvbG9yOjpibHVlLCAiQ0FOVkFTIl9zKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVt
KGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0Cit7CisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gZHJhd05hdGl2ZUltYWdlSXRlbShpdGVt
LCBjb250ZXh0KTsKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBkcmF3SW1hZ2VCdWZmZXJJdGVtKGl0
ZW0sIGNvbnRleHQpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVm
ZmVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5yZW1vdmUocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENhY2hpbmcgdGhlIHJl
bW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0Lgor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNGZjMDUyYzI4NDY5NmViNzY0ZGFiNmRjZWU3ZjA3ZmU2YWZjOGY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7
CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAg
dm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
V2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIq
IGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1h
Z2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0OworCisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKwor
ICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKworICAgIHZvaWQgcmVsZWFz
ZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKK3By
aXZhdGU6CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4+OworICAgIHVzaW5nIFJlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hN
YXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0cj47CisKKyAgICB2b2lkIGRyYXdHUFVCYWRnZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdDsKKyAgICBib29sIGRyYXdOYXRpdmVJ
bWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlckl0ZW0oY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKKworICAgIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCBtX3JlbW90ZUltYWdlQnVmZmVy
SGFzaE1hcDsKKyAgICBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgbV9yZW1vdGVOYXRpdmVJbWFn
ZUhhc2hNYXA7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTsKKyAgICBib29sIG1fc2hvdWxkRHJhd0dQVUJhZGdlIHsgZmFsc2Ug
fTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNzBk
M2Q4OGYyYmY0YTZmMWNmYzRmMTg4NzA0ZWQ2NzcwZTQ5NzdhZi4uYTBjZmNlNmMwMTI0ODVjYjNm
ZTdjZDYxM2NmZjE5NjFmYjJiMTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC0yMTYsMTEgKzIxNiwxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVf
Zm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAor
ICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHInLAogICAgICAgICAnV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScs
CiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6OlJlbmRlcmluZ01vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklk
ZW50aWZpZXInLApAQCAtMjM4LDcgKzI0MCw2IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9m
b3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAg
ICdXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYktpdDo6
SW1hZ2VCdWZmZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29u
dGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCcsCiAgICAg
ICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlMGJiYmJjNWJhMjMx
OGJmYThlNjMxOTZkNTRlZWJiODkwMzY0NDQxLi5hMDc3NTMwOTU3YmE4ZDQ3ZDU0MjliYWRkNjY3
NTc1NTRkMDYyMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTExMDAsNyArMTEwMCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbWFn
ZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5k
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVu
Y29kZXImIGVuY29kZXIsIE5hdGl2ZUltYWdlUHRyIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2Rl
TmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
KQogewogICAgIGF1dG8gaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKICAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwg
eyB9KTsKQEAgLTExNDMsNyArMTE0Myw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2Uo
RW5jb2RlciYgZW5jb2RlciwgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNv
ZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKIHsKICAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKICAgICBlbmNvZGVy
IDw8IGhhc0ltYWdlOwpAQCAtMTE2NiwxNCArMTE2NiwxNCBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBO
YXRpdgogICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAK
LXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2Uo
ZW5jb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UuZ2V0KCkpOworICAgIGVuY29kZU9wdGlvbmFsTmF0
aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8TmF0aXZl
SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VIYW5kbGUm
IGltYWdlSGFuZGxlKQorYm9vbCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4g
ZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZSk7Cisg
ICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMDVkMDM1NTRiOWVjYTlhMDQxYzM2OGVmNDUz
ODgyNDQzNGNlNmUyMy4uOWYzYjEwNjY5MzMzYmEzMDE1Mjk3ODNjOWUxZTkxZWFiYTRjYWI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBA
IC0xMDUsNyArMTA2LDYgQEAgY2xhc3MgS2V5ZnJhbWVWYWx1ZUxpc3Q7CiBjbGFzcyBMYXlvdXRT
aXplOwogY2xhc3MgTGF5b3V0UG9pbnQ7CiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbjsKLWNs
YXNzIE5hdGl2ZUltYWdlSGFuZGxlOwogY2xhc3MgTm90aWZpY2F0aW9uOwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOwpA
QCAtNDE2LDkgKzQxNiw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZT4gewotICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5k
bGUmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGJjMmM0OTQzYWViZTVjY2FmOGI5
NDdlZDcxYWUwMzBmNGYzMmQ5ODMuLjFmNjEzMTg5MjhlOWQxNjZjYTVmMDJmZTc5N2RmNDI2OTdh
NGU1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsOCArMjQsOCBAQAogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHku
Y3BwCkBAIC01NTEsOCArNTUxLDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcAotV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlci5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUu
Y3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NzIx
MzU2MmFiYzFiZTM4NDJiZTMxZTg2MTczNzBkZTI4NzhjZDBhLi4yYmU3N2Q0Yzg0M2U1YzVjZTAy
YzYxYzYzM2ZiNTIzYmM1N2EyYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4NjMsNyArMzg2Myw2IEBACiAJCTU1MDY0MEEyMjQw
NzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTQyNDA3MUMyMTAw
QUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAv
KiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQyMjQwOEEwMkUw
MERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5
NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDQyNDA4QUJCMzAwREU0RDJGIC8qIEltYWdlQnVm
ZmVyRmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTQ1LDEwICs0MTQ0LDcg
QEAKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVj
b2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91
Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBB
MjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBv
bGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVk
TW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMTIyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjdBN0YzNTI0MDc4NTdGMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDE1OCw2ICs0MTU0LDEwIEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1v
dGVJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2Vi
Q29sb3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29s
b3JQaWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1
MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyRENBMUU5MjUyNDI0Q0UwMEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJj
ZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJEQ0ExRUEyNTI0MjRDRTAwQzlCMjBEIC8qIFJlbW90ZVJl
c291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRENBMUVCMjUyNzE0NTEwMEM5QjIw
RCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzJEQ0ExRUMyNTI3MTQ1MTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFT
dG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3Rv
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5
QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUlu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFT
dG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDIxLDE3ICs4
MDIxLDE3IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAogCQkJ
CTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAq
LywKIAkJCQk1NUFEMDk0NDI0MDhBQkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIuaCAqLywKLQkJCQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcy
N0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90
ZUltYWdlQnVmZmVyLmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovLAogCQkJCTcyMjc4MDBEMjQwOTdBMDIw
MDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8sCiAJCQkJNTUw
NjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAog
CQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgg
Ki8sCiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4gKi8sCisJCQkJNzJEQ0ExRUEyNTI0MjRDRTAwQzlCMjBEIC8qIFJlbW90
ZVJlc291cmNlQ2FjaGUuY3BwICovLAorCQkJCTcyRENBMUU5MjUyNDI0Q0UwMEM5QjIwRCAvKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8q
IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBo
aWNzOwpAQCAtODA0MSwxMiArODA0MSwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmggKi8sCi0JCQkJNzIyNzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8sCi0JCQkJNzIyNzgwMTIy
NDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5o
ICovLAogCQkJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0MEE0MjQwNzFDMjEwMEFB
RTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NzJEQ0ExRUIyNTI3MTQ1MTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAg
Ki8sCisJCQkJNzJEQ0ExRUMyNTI3MTQ1MTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWExYmM5YWU4N2RjOGQ3MjQyOGEwYjgwOWNhZDBkODBhNGNkMWNiOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07
Ci11c2luZyBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQnVm
ZmVySWRlbnRpZmllclR5cGU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5
NjI4N2VmMmM3OGY5MDc2ZTFkNDM4MjE5MWYyLi45MmE1M2Y1OWM2NzZmNzg3ZmQyMWZmMGRhMWM0
MzE3OTUwMzJiMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CkBAIC0zNywxMCArMzksMTEgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDog
cHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1
YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLCBwdWJsaWMgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpSZW1vdGVDbGllbnQgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5
TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tl
bmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5k
OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0
OworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpjb250ZXh0OwogCiBwdWJs
aWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCkKQEAgLTUzLDE0ICs1NiwyMCBAQCBwdWJsaWM6CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIo
KQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZWxlYXNlSW1hZ2VCdWZmZXIoKnRoaXMpOwogICAgIH0K
IAorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICA6IEJhc2VEaXNw
bGF5TGlzdEltYWdlQnVmZmVyKHNpemUpCi0gICAgICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
bWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCiAgICAgeworICAgICAgICBtX3Jl
bW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3Rl
Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlKTsKICAgICB9CiAKICAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNw
YWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKSBvdmVycmlkZQpAQCAtNjgsMjMg
Kzc3LDUyIEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOwogICAgICAg
ICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgIH0K
LSAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1fYmFja2VuZCkKLSAg
ICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXImPigqdGhpcykuUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
OworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisg
ICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAK
KyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaERy
YXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAg
fQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwor
ICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC0+ZHJhd0dQVUJhZGdlKGNvbnRleHQoKSwgV2ViQ29yZTo6RmxvYXRSZWN0KHsgfSwg
bV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpKSwgV2ViQ29yZTo6Q29sb3I6OmRhcmtHcmVlbiwgIkdQ
VSJfcyk7CisgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwg
bV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgIH0KKwor
ICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFk
aXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90
ZUZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB9CisKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgeworICAgICAgICBp
ZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1
ZmZlcio+KHRoaXMpLT5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGNv
bnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNS
ZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpKSB7CisgICAgICAgICAg
ICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPmZsdXNoRHJhd2luZ0NvbnRl
eHQoZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVh
bnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRl
eHQgbWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlR2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3Jj
UmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIHZvaWQgcHV0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9LCBXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlkZQpAQCAtOTUsMjYgKzEzMywz
MiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJ
bWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0
Rm9ybWF0KTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmRJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBmbHVzaERyYXdp
bmdDb250ZXh0KCk7Ci0gICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgICAg
IGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLT5maW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoaW1hZ2UsIG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQorICAgIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciBmaW5kTmF0aXZlSW1hZ2UoV2ViQ29yZTo6Q2FjaGVkSW1hZ2Um
IGNhY2hlZEltYWdlLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpIG92ZXJy
aWRlCiAgICAgewotICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQu
ZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpKQotICAg
ICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29u
dGV4dEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAobV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+ZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KGNhY2hlZEltYWdlLCBpbWFnZSwgbV9yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICAKKwog
ICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0m
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJh
dGNoU2l6ZSA9IDUxMjsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+
PSBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICBp
ZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmbHVz
aERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIo
KTsKICAgICB9CisKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
bV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzE1MGM3YjA3OTNhZmU5YWM1YzgzYTlhYzc0NmJhMzE4
ZTUxYjhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdl
RGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNp
bmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKSkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmlu
Z01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KCkpOwotfQotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcigpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS4KLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkpOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0
SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIp
LCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGE6OlJl
cGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJl
bmNlLmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6
OndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQotewotICAgIGlmIChtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgJiYgIWlzQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNvbW1pdEltYWdl
QnVmZmVyRmx1c2hDb250ZXh0KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
ICYmIGlzUGVuZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+
d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRD
b21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsK
LSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckNvbW1p
dEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0g
Zmx1c2hJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyLmgKaW5kZXggNjIwNDE4ZDc4YzI3ZjI4YzU3NDkwMmMyZTFiYTlhMjM3MTc1MTdiOS4u
ODI0NjBhMTZjZWJmMzQ5YTkzNGJiODE2NDQxZDAwOTVkZTExMjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTI5LDExICsyOSw5IEBACiAKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nTW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTQy
LDM3ICs0MCwyMCBAQCBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsK
LQogY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpOwotCi0gICAgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2VCdWZmZXJJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZl
ZC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCiAgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7CiAK
LSAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7
Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYp
OwotCi0gICAgdmlydHVhbCBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCA9IDA7CiAgICAg
Ym9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmll
ciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0g
ICAgdm9pZCB3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci0gICAgdm9pZCB3YWl0
Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKKyAgICB2b2lkIGNvbW1pdEZsdXNo
Q29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCisgICAg
eworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwor
ICAgIH0KIAotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7
Ci0KLXByaXZhdGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIHsgSW1hZ2VCdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Citwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpID0g
ZGVmYXVsdDsKIAogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRl
bnRpZmllcjsKICAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOTk1MzQxNzg3
ZWRhMjBhNTU0ZTRkNjdiYTUzZGM2OThhNTM3MGNjMC4uMjE0N2E0ODdlNTdiYjA5NjQ0ODQ4YzVj
MmE5MDI2NTVjZjkxMzJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZURhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKQEAgLTM5LDEyICs0MCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUo
KQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZShXZWJQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihu
ZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChwYWdlKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZChXZWJQYWdlJiBwYWdlKQorICAgIDogbV9yZW1vdGVSZXNv
dXJjZUNhY2hlKCp0aGlzLCBwYWdlKQogewogICAgIC8vIFJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1l
c3NhZ2VSZWNlaXZlciBpbiB0aGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uCiAgICAgSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CkBA
IC04Niw0MCArODgsODIgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWl0Rm9yQ29t
bWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQogICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0
Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVz
c2FnZUFycml2ZXMpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRyYXdHUFVC
YWRnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY29udGFpbmVy
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmRyYXdHUFVCYWRnZShjb250ZXh0LCBjb250YWluZXJSZWN0LCBj
b2xvciwgdGV4dCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBT
aG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNo
b3VsZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsK
LSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZm
ZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzaG91bGRBY2NlbGVy
YXRlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7Cisg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VJbWFnZUJ1ZmZlcihpbWFnZSk7Cit9CisK
K1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmaW5kSW1h
Z2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChpbWFnZSwgcmVtb3RlQ2xpZW50SWRl
bnRpZmllcik7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdl
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2Fj
aGUuZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KGNhY2hlZEltYWdlLCBpbWFnZSwgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFz
ZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRp
ZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZUNsaWVudChy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOwor
fQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVt
b3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit7CisgICAg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IFJlbW90
ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UsIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJl
dHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CiAKLSAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRl
cmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgKnRoaXMpKSB7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQo
aW1hZ2VCdWZmZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7
Ci0gICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAgICB9CitSZWZQdHI8SW1hZ2VEYXRhPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSVBDOjpJbWFn
ZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQs
IHNyY1JlY3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNl
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1cm4gaW1hZ2VE
YXRhUmVmZXJlbmNlLmJ1ZmZlcigpOworfQogCi0gICAgcmV0dXJuIG51bGxwdHI7Cit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChk
aXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnNob3VsZERyYXdHUFVCYWRnZSgpLCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
K30KKworSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIHNlbnRG
bHVzaElkZW50aWZpZXIgPSBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLnNob3VsZERyYXdHUFVCYWRnZSgpLCBzZW50Rmx1c2hJZGVudGlmaWVyLCByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gc2VudEZsdXNoSWRlbnRpZmllcjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlUmVsZWFz
ZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIgbWVzc2FnZSBzaG91bGQgaGF2
ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAgICBib29sIGZvdW5kID0gbV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwot
ICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAg
ICAgICBpbWFnZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBi
YWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSks
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0g
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAu
Z2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5jb21taXRG
bHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKaW5kZXggZjQ5NjE1OGU3ZDQwZWViMDVhYzM5NDM0YWYyNDYzM2JhYmM3
ZjBlZi4uMDAwMDk4ZGU4NmQ2M2MyYjlmYjk1NDVhNDRhNmU0ODYyNTA2ZWExYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTI5LDMxICsyOSwzNSBAQAogCiAjaW5jbHVkZSAiSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291
cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKK2NsYXNzIERpc3BsYXlMaXN0OworfQorY2xhc3MgRmxvYXRTaXplOworZW51bSBjbGFzcyBD
b2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQYWdlOworCiBjbGFzcyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kCiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAg
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKCk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoV2ViUGFnZSYpOwog
CiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQotCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
LgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBv
dmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtNjEsMjEgKzY1LDMzIEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSk7Ci0gICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKTsKLQogICAgIGJvb2wgd2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
OwogICAgIGJvb2wgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7CiAKKyAg
ICAvLyBSZXNvdWNlIGNhY2hlLgorICAgIHZvaWQgZHJhd0dQVUJhZGdlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciBmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7
CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmROYXRpdmVJbWFnZUZv
ckNsaWVudChXZWJDb3JlOjpDYWNoZWRJbWFnZSYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50
aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KKyAgICBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHJlbW90ZUdl
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciByZW1vdGVGbHVzaERy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1v
dGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKwogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChXZWJQYWdlJik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNl
aXZlZC4KLSAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAot
ICAgIHVzaW5nIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVm
ZmVySWRlbnRpZmllciwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OwotICAgIElt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFw
OworICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwogICAgIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDEyYTdiZjhkYTRjODI1
NzBiY2EzNmExMzVmZDcxYWYyNTg4YjY0ZDUuLjJjMGY3ZThhMTIwM2YyNjg2NTJhMDBmYzFmN2Ix
N2RhNTk5ZDJhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KQEAgLTIzLDggKzIzLDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgaGFuZGxlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpCi0gICAgdm9pZCBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChXZWJLaXQ6Oklt
YWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViS2l0OjpJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6
SW50U2l6ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRs
ZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKKyAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmNiZmE0ZjhiOGE0OTY5YTZiMjNlZjEwOGQyN2FlODhkYjdhYjMxZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHAKQEAgLTAsMCArMSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NhY2hlZEltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQm
IHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAsIG1fcGFnZShwYWdl
KQoreworfQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6OnNob3VsZERyYXdHUFVCYWRnZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNob3dE
ZWJ1Z0JvcmRlcnMoKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkcmF3R1BVQmFk
Z2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmICgh
c2hvdWxkRHJhd0dQVUJhZGdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBGbG9hdFJlY3QgYm9y
ZGVyUmVjdCA9IGNvbnRhaW5lclJlY3Q7CisgICAgYm9yZGVyUmVjdC5pbmZsYXRlKC0xKTsKKyAg
ICBjb250ZXh0LmRyYXdHUFVCYWRnZShib3JkZXJSZWN0LCBib3JkZXJSZWN0Lm1heFhNaW5ZQ29y
bmVyKCksIGNvbG9yLCB0ZXh0KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgaWYgKHNob3VsZEFjY2VsZXJhdGUg
PT0gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlID0gQWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJl
bW90ZUFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkpIHsKKyAgICAgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
LmFkZChpbWFnZS5nZXQoKSwgaW1hZ2UtPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRkKGlt
YWdlLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIGltYWdlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdN
b2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpIHsKKyAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhh
c2hNYXAuYWRkKGltYWdlLmdldCgpLCBpbWFnZS0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkp
OworICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmFkZChp
bWFnZS0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIGltYWdlOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCitSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZEltYWdlQnVmZmVyRm9y
Q2xpZW50KEltYWdlQnVmZmVyJiBpbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
PSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQoJmltYWdlKTsKKyAgICBhZGRSZW1vdGVD
bGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCit2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7
CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFn
ZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKK30KKwordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZs
dXNoSWRlbnRpZmllcik7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlKQoreworICAg
IC8vIFJlbW92ZSB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2FjaGUuCisgICAgYXV0byByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC50YWtlKCZpbWFn
ZSk7CisgICAgQVNTRVJUKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBjcmVh
dGVJbWFnZUJ1ZmZlciBzaG91bGQgaGF2ZSBiZWVuIHJldHVybmVkIHRoaXMgSW1hZ2VCdWZmZXIg
YmVmb3JlLgorICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEFTU0VSVF9V
TlVTRUQoZm91bmQsIGZvdW5kKTsKKworICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJl
bW92ZSB0aGlzIHJlc291cmNlIHVubGVzcyBpdCdzIHBlbmRpbmcgcmVwbGF5aW5nIGJhY2suCisg
ICAgcmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQor
CitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZE5hdGl2
ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1f
cmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwLmVuc3VyZShpbWFnZSwgWyZdIHsKKyAgICAgICAgY2Fj
aGVkSW1hZ2UuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5yZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgCisgICAgYWRkUmVtb3RlQ2xpZW50KHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcjsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNl
Q2FjaGU6OnJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAg
ICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNo
TWFwLnRha2UoaW1hZ2UpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3Zl
IHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICBp
ZiAocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJl
dHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6YWRkUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKQoreworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQiIGRlcGVuZGVuY3kg
aW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8mIGNsaWVudHMgPSBt
X3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRp
Zmllcik7Cit9CisKK1ZlY3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IFJlbW90ZVJlc291
cmNlQ2FjaGU6OnJlbW92ZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFw
JiByZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBWZWN0b3I8UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyPiByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKKworICAgIC8vIFJlbW92
ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSByZW1vdGVSZXNv
dXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGZvciAoYXV0byYgcGFpciA6IHJlbW90ZVJlc291cmNl
Q2xpZW50c0hhc2hNYXApIHsKKyAgICAgICAgcGFpci52YWx1ZS5yZW1vdmUocmVtb3RlQ2xpZW50
SWRlbnRpZmllcik7CisgICAgICAgIGlmIChwYWlyLnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJlbW90ZVJlc291cmNlQ2xpZW50c1RvQmVSZW1vdmVkLmFwcGVuZChwYWlyLmtleSk7Cisg
ICAgfQorCisgICAgLy8gUmV0dXJuIGEgbGlzdCBvZiB0aGUgdW5yZWZlcmVuY2VkIHJlc291cmNl
cy4KKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92ZWQ7Cit9CisKK3Zv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92
ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VI
YXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOworICAgIAorICAgIC8v
IElmIHdlIGhhdmUgcmVjb3JkZWQgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmN5IGJl
Zm9yZSBpbiBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIG1vdmUgdGhpcworICAgIC8v
IGRlcGVuZGVuY3kgdG8gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hN
YXAuIE90aGVyd2lzZSByZW1vdmUgdGhlIHJlc291cmNlIGZyb20gdGhlIGNhY2hlZC4KKyAgICBp
ZiAobV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVh
c2VIYXNoTWFwLmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIG1fcmVtb3RlUmVzb3VyY2VD
bGllbnRzSGFzaE1hcC50YWtlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOworICAgIGVsc2UK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNv
dXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNl
Q2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4g
Y2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4K
KyAgICBmb3IgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIDogcmVtb3ZlUmVtb3RlQ2xp
ZW50KG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRpZmll
cikpCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5yZW1vdmUocmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+
IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdS
ZWxlYXNlSGFzaE1hcC4KKyAgICBmb3IgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIDog
cmVtb3ZlUmVtb3RlQ2xpZW50KG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VI
YXNoTWFwLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKSkgeworICAgICAgICAvLyBSZW1vdmUgdGhl
IHVucmVmZXJlbmNlZCByZXNvdXJjZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRp
bmdSZWxlYXNlSGFzaE1hcC4KKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5n
UmVsZWFzZUhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAg
ICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UuCisgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NzQ3NzY1YzQxOTc3MjQzMjQwYmE2YjliNTMwZDE0NjczNmUzMzdmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRJbWFnZUNsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdl
UHRyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsK
K2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgOiBwdWJsaWMgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2Fj
aGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIFdlYlBhZ2UmKTsKKworICAgIGJvb2wgc2hvdWxk
RHJhd0dQVUJhZGdlKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3R1BVQmFkZ2UoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBj
b25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgdGV4dCk7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIGZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbGVhc2VJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICB2b2lkIGNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmROYXRpdmVJbWFnZUZvckNsaWVudChX
ZWJDb3JlOjpDYWNoZWRJbWFnZSYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOwor
ICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZWxlYXNlTmF0aXZlSW1hZ2Uo
Y29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKKworICAgIHZvaWQgcmVsZWFzZVJlbW90
ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRl
bnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBI
YXNoU2V0PFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVt
b3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlTmF0aXZl
SW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVSZXNvdXJjZUNsaWVu
dHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJl
bW90ZUNsaWVudHNIYXNoU2V0PjsKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKj47CisKKyAgICB2b2lkIG5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkg
b3ZlcnJpZGUgeyByZWxlYXNlTmF0aXZlSW1hZ2UoaW1hZ2UpOyB9CisKKyAgICB2b2lkIGFkZFJl
bW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBWZWN0
b3I8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVDbGllbnQo
UmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVS
ZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZl
ckhhc2hNYXA7CisgICAgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1h
Z2VIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNv
dXJjZUNsaWVudHNIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9y
ZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVySGFzaE1hcDsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ7CisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCmluZGV4IDE4OGJjNWU5ZWI5ZGI3NDQwNWUwOGY2ZTA1ODIzZWEzYzM3YTgyYTEuLjUzNmQ2
ZTk1ZTBmODY0Y2VmNTliMGNiY2JhNGVmZThjNTgwODJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCkBAIC04NzcsNyArODc3LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGYKIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQmIFdlYkNocm9tZUNsaWVudDo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZSgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgPSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGUobV9wYWdlKTsKICAgICByZXR1cm4gKm1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410613</attachid>
            <date>2020-10-05 22:25:23 -0700</date>
            <delta_ts>2020-10-05 23:40:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217342-20201005222522.patch</filename>
            <type>text/plain</type>
            <size>182323</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlYWFjNDQxMTQ2ZjU4
NzZjNDY3ZGUwZmQzYjNmYWE0YjU3MTJjNC4uYmUzNzY3NDEyNGFkODc5MDQ1MmNjNzRkODE2Yzlh
MjNmM2Q4YTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMC0wNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gSW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB3b3JrIGlu
IHByb2dyZXNzIHBhdGNoLiBUaGUgZ29hbCBpcyB0byBnZXQgdGhlIEVXUyBib3RzIGNsZWFuIAor
ICAgICAgICBmaXJzdC4gVGhlbiBpdCBtYXkgYmUgc3BsaXQgaW50byBzbWFsbGVyIHBhdGNoZXMu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VX
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R1BVQmFkZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VQdHIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9O
YXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OnJlbW90ZVJlc291cmNlSWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjpuYXRpdmVJbWFnZVB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd05hdGl2ZUltYWdlOjppbWFnZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6b3B0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpk
ZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OlJlbW90ZUNsaWVudDo6flJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNsaWVudDo6ZmluZEltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVtb3RlQ2xpZW50OjpmaW5kTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZW1vdGVD
bGllbnQ6OndpbGxBcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6T2JzZXJ2ZXI6On5PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ok9ic2VydmVyOjp3aWxsQXBwZW5kSXRlbSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorCiAyMDIwLTEwLTA1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgZW5hYmxpbmcgc3VicGl4ZWwgQ1NTT00gdmFs
dWVzLCBpdCdzIG9mZiBieSBkZWZhdWx0IGV2ZXJ5d2hlcmUgYW5kIGtub3duIHRvIGJlIG5vdC1j
b21wYXRpYmxlIHdpdGggdGhlIHdlYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MTQ0MDBmZmNkYzQzZmI3YWUzODcx
NDg2Njc2ZjY4ZGZlOGU3ZjdhLi5mMmZlZTZjZjdkNjFiZDUzYjE4Y2IzMmY4ZjdkMDI1MDA0YWU1
OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMC0xMC0wNSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
Lmg6IFJlbW92ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRD
b21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Omdl
dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5h
dGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpk
cmF3R1BVQmFkZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdJbWFnZUJ1ZmZlckl0ZW0gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoSVBDOjplbmNvZGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OmVuY29kZU9wdGlv
bmFsTmF0aXZlSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdl
UHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5k
bGU+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkcmF3R1BVQmFkZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmRJbWFnZUJ1ZmZl
ckZvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZp
bmROYXRpdmVJbWFnZUZvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERy
YXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OnNob3VsZERyYXdHUFVCYWRnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmRyYXdHUFVCYWRnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6ZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVz
aENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5k
TmF0aXZlSW1hZ2VGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjphZGRSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmVuc3VyZVJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgY29uc3QpOgorCiAyMDIwLTEwLTA1ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgZW5hYmxpbmcgc3Vi
cGl4ZWwgQ1NTT00gdmFsdWVzLCBpdCdzIG9mZiBieSBkZWZhdWx0IGV2ZXJ5d2hlcmUgYW5kIGtu
b3duIHRvIGJlIG5vdC1jb21wYXRpYmxlIHdpdGggdGhlIHdlYgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggNTY1NmY3YjMwNzAzZGZlMzM1Mzk5ZWE4OWFiYzM1ZWQzMWQ0YzVkNy4uZmZjZTU3NWQwNWJh
MzY4ODNiOGMwZDE0OTgyNmRkMWJhY2QwYTI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTkw
LDYgKzExOTAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2Uu
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGlt
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmYwNDEwYTBlOGM3OGZiZmMw
ZjcxYzIwZTQzMzRlMDEzNjUzMGM0Ni4uYzYwNDcxMTRjZjg2NTVlNTZiNWE2YWM2NGE2YWRjOGZh
MWRjNjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjE2Nyw2ICsyMTY3LDggQEAKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNC
RUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgz
IC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZl
ckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkJFRkExQTI1MUJF
RkZFMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJFRkExOTI1MUJFRkZEMDBERDc4RDIg
LyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJEQ0ExRTgyNTIzREZDMDAwQzlCMjBEIC8qIE5hdGl2
ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAv
KiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsK
IAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNzBEMENFNzJEMDA3
RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTk5MzIsNyArOTkzNCw5IEBACiAJ
CTcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0FDMjNFMUU1NDUw
MDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyQkFDM0FEMjNFMUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNH
QmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckNH
QmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkJFRkExOTI1MUJFRkZE
MDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJEQ0ExRTYyNTIzREU1NTAwQzlCMjBEIC8qIE5hdGl2
ZUltYWdlUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYxMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRzUkdCLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjIxQTJFOEQyRjAwNEM1NjJBIC8q
IEpTRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVHNSR0Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1
IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYxOTcsNiArMjYy
MDEsNyBAQAogCQkJCTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuaCAqLywKIAkJCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1h
Z2UuaCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAq
LywKKwkJCQk3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywK
IAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1
NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBD
MDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2MjE0LDYgKzI2MjE5LDcg
QEAKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmgg
Ki8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJ
QkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTcyQkVGQTE5MjUx
QkVGRkQwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLywKIAkJCQkwNzNB
MTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJCTA3
M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJCTcy
OTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0zMTE4MCw5
ICszMTE4Niw3IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERpcmVjdG9yeUZp
bGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQw
RkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFREFBRkM5
MTlBMkNDREMwMDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJzICov
LAotCQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGlu
ZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwRjQyMjUxN0NFNkUwMDlCQTAzNCAv
KiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RkI0N0U2MzIy
Nzc0MjVBMDBDN0JDQjAgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBERTREMkYgLyog
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTE5NSw3ICszMTE5
OSw2IEBACiAJCQkJMkQyOUVDQ0ExOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyOUVDQzgx
OTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBMYXlvdXRJbnRlZ3JhdGlv
blJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTBGNDMyNTE3Q0U2RTAwOUJBMDM0IC8qIERp
c3BsYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkg
LyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDQwMjgzMjQ5QTdBNjIwMEE5MEQ4
RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTg4Niw2ICszMTg4
OSw3IEBACiAJCQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUY0NTc3NUNFMjQxNDM3RDUwMDJERjFBMCAvKiBJbmxpbmVQYXRo
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY0MERBODIyNTEzMDMzQTAwRUMwNEI3IC8qIElu
bGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDMzRjNCMjUyQUVFQ0QwMDgzN0QwNSAv
KiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYwRTUwMjM5OTk0
MjEwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRC
b3guaCBpbiBIZWFkZXJzICovLApAQCAtMzI4NTQsOCArMzI4NTgsMTEgQEAKIAkJCQk2RjBCOThC
NTIzRjI2OEVDMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTQxODAyNTUyM0Q0NTQ5QjAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJl
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwM0I3QTIyNTFCMTE5MzAwMTlFODAwIC8qIExheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NTFDNjM0MjM5NDA1
OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxp
bmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkREMjM2MDg4RkUwMEZBNDM0NSAvKiBMYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDNCN0EzMjUx
QjExQzEwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0MyNTIxRDRBRjAwNzA4MURDIC8qIExheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTY2NENGMjUy
MUQ0RTIwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8qIExheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKQEAgLTMzMTE4
LDYgKzMzMTI1LDcgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2Rl
TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFt
ZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEg
LyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyRENBMUU4MjUyM0RGQzAwMEM5
QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhC
Q0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
MEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNDg4LDYgKzMzNDk2LDcgQEAKIAkJCQk0NkI5NTE5QTIw
N0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMx
MkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQkVGQTFBMjUxQkVGRkUwMERENzhEMiAv
KiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0
MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDc1OSw3ICszNDc2OCw2IEBACiAJCQkJRTFFRThC
OTkyNDEzMTk1MDAwRTc5NEQ2IC8qIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxMkE5RjRBMjQ4QTk5RTIwMDNGMDZDOCAvKiBYUkludGVyYWN0aW9uTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCODQyNDEzMTkxRjAwRTc5NEQ2IC8qIFhSUmVm
ZXJlbmNlU3BhY2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTREMzNGM0IyNTJBRUVDRDAw
ODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThC
NzcyNDEzMTkxRjAwRTc5NEQ2IC8qIFhSUmVmZXJlbmNlU3BhY2VUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUVFOEI3OTI0MTMxOTFGMDBFNzk0RDYgLyogWFJSZW5kZXJTdGF0ZUluaXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxRUU4QjhEMjQxMzE5NTAwMEU3OTRENiAvKiBYUlNlc3Npb25F
dmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4
IDM5Mjk2YTg5OGI2YWUxMTU3MDIzZTA1NzFhMTcwZjJkNjUxODY0NjQuLmFiOTYwZGFmZWRlZjEy
OTkzNTBhNjljYzRiMWYwMGY2OGIyMjlmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAu
Y3BwCkBAIC02MDIsMTAgKzYwMiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlY29kZWRTaXpl
Q2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAKKyAgICB2b2lk
IGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBkaWREcmF3
KGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVk
RGF0YShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQo
Y29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpIG92ZXJyaWRlIHsgfQorCiAgICAg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogPSBudWxscHRy
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29u
c3QgSW1hZ2UmKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKaW5kZXggM2ZhMTgxN2E5ZDY2NjhmYjQzM2IxYmQ0NWM2MDg2MmYwYzM4
N2RkNi4uYjM5MmFlODE0YjlkZmNlY2QyM2QzZjkwOTczZTVjNmRkYTgzNmE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00MTEsNiArNDExLDE3
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRlY29kZWRTaXplQ2hh
bmdlZChjb25zdCBJbWFnZSYgaW1hZ2UsIGxvCiAgICAgICAgIGNhY2hlZEltYWdlLT5kZWNvZGVk
U2l6ZUNoYW5nZWQoaW1hZ2UsIGRlbHRhKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVk
SW1hZ2VPYnNlcnZlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiBpbWFnZSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKSB7CisgICAg
ICAgIGlmICgmaW1hZ2UgIT0gY2FjaGVkSW1hZ2UtPmltYWdlKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIHZvaWQgQ2FjaGVk
SW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRpZERyYXcoY29uc3QgSW1hZ2UmIGltYWdlKQog
ewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpAQCAtNDM0LDYg
KzQ0NSwxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjppbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSQogICAgICAgICBjYWNoZWRJbWFnZS0+
aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJlY3QsIGRl
Y29kaW5nU3RhdHVzKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAgZm9yIChhdXRvIGNhY2hlZEltYWdl
IDogbV9jYWNoZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZEltYWdlLT5uYXRpdmVJbWFnZVdpbGxC
ZURlc3Ryb3llZChpbWFnZSwgbmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpD
YWNoZWRJbWFnZU9ic2VydmVyOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29u
c3QgSW50UmVjdCogcmVjdCkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hl
ZEltYWdlcykKQEAgLTY4OSw2ICs3MDYsMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6aW1hZ2VGcmFt
ZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUgYW4KICAg
ICAgICAgbV9jbGllbnRzV2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcuY2xlYXIoKTsKIH0KIAordm9p
ZCBDYWNoZWRJbWFnZTo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmIGlt
YWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAgaWYgKCZpbWFn
ZSAhPSBtX2ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVu
dFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVudD4gY2xpZW50V2Fsa2VyKG1fY2xpZW50cyk7CisgICAg
d2hpbGUgKENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQgPSBjbGllbnRXYWxrZXIubmV4dCgpKQor
ICAgICAgICBjbGllbnQtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKG5hdGl2ZUltYWdlKTsK
K30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2Us
IGNvbnN0IEludFJlY3QqIHJlY3QpCiB7CiAgICAgaWYgKCZpbWFnZSAhPSBtX2ltYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCAyYTAyYmU4NWYxYTA1
NTIyZjU5YjQ0YjVhYTI2N2FhOWY5N2Y4ZDdmLi5lNDdmMmEwOWYyMDM2NWNhYTg2ZWU0NWUxYzQy
NmQwOWY2YTJmZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aApAQCAtMTQ5LDEwICsxNDksMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGVuY29kZWRE
YXRhU3RhdHVzQ2hhbmdlZChjb25zdCBJbWFnZSYsIEVuY29kZWREYXRhU3RhdHVzKSBmaW5hbDsK
ICAgICAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcg
ZGVsdGEpIGZpbmFsOworCisgICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdl
JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAgICAgICB2
b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBib29sIGNhbkRlc3Ry
b3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGltYWdlRnJh
bWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRS
ZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1
czo6SW52YWxpZCkgZmluYWw7CisgICAgICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95
ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpIGZpbmFsOworICAgICAgICAK
ICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCop
IGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3Qg
SW1hZ2UmKSBmaW5hbDsKIApAQCAtMTY0LDYgKzE2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWREcmF3KGNvbnN0IEltYWdlJik7CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29u
c3QgSW1hZ2UmKTsKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJ
bWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwg
RGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBuYXRp
dmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCop
OwogICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCmlu
ZGV4IDI5NWU2NTZhYjFlYmMxYjkwZmQxYWNlNzgzZDM0MTljMmY2OWEwOGIuLjMzYWNjZjkyNjky
ODFmNzUxNWY4ZGU2YjY5MTM0NmU3OTRhMGI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKKyNp
bmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2
LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBuZXcgZGVjb2RlZCBm
cmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUgb3Igd2hlbiBhbiBhbmltYXRlZCBp
bWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IGZyYW1lLgogICAgIHZpcnR1YWwg
VmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiBp
bWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkgeyBp
bWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0dXJuIFZpc2libGVJblZpZXdwb3J0
U3RhdGU6Ok5vOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVz
dHJveWVkKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0NzZhMzVi
ODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjEyZTdjYzNhN2MwYjljZTQ1NzYwZDA0
ZjdmM2M2YTY5MTIyODNlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCaXRtYXBJ
bWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUsMjQgQEAg
Ym9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAorc3RhdGljIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiBpbWFnZSwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit7CisgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhh
dCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgorICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6
ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJbWFnZSk7CisgICAgaWYgKG9wdGlvbnMub3JpZW50
YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQorICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgLy8gc3JjUmVj
dCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2Ug
aGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCisgICAgRmxvYXRSZWN0IGFk
anVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0g
c3JjU2l6ZSkKKyAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9h
dFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkp
OworCisgICAgaWYgKGltYWdlLmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2UuaW1hZ2VP
YnNlcnZlcigpLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIG5hdGl2ZUltYWdlLCBz
dWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsK
KyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBz
dWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsK
K30KKwogSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoZGVz
dFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3QuaXNFbXB0eSgpKQpAQCAtMjkyLDkgKzMxMSw5IEBA
IEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9wdGlvbnMu
b3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRl
eHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgeyBvcHRp
b25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCp0aGlzLCBpbWFn
ZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShvcmllbnRhdGlvbikp
LCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAgICBkcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUo
b3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqdGhpcywg
aW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRp
b24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZnJh
bWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAy
NjVjYjU3ZDM5Mzk1MDM4YTYyOWYzNWJjZDY4NjNhYTQ0NDM5YzY3Li5lODRjNDNmOWI3MWVjNTlk
NGY4YjJhODczZWIxZDYwMDgzMjI4NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQyNSw2ICs0MjUsNDAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJlc3RvcmVQbGF0Zm9ybVN0YXRl
KCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R1BVQmFkZ2UoY29uc3QgRmxvYXRS
ZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBiYWRnZVBvc2l0aW9uLCBjb25z
dCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnRoaXMpOworCisgICAgc2V0U2hvdWxkQW50aWFsaWFz
KGZhbHNlKTsKKyAgICBzZXRTdHJva2VDb2xvcihjb2xvcik7CisgICAgc3Ryb2tlUmVjdChjb250
YWluZXJSZWN0LCAwLjUpOworCisgICAgY29uc3QgdW5zaWduZWQgZm9udFNpemUgPSAxMDsKKyAg
ICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKKyAgICBmb250RGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KCJBcmlhbCIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVj
aWZpZWRTaXplKGZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXpl
KGZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25W
YWx1ZSg1MDApKTsKKworICAgIEZvbnRDYXNjYWRlIGNhc2NhZGUoV1RGTW92ZShmb250RGVzY3Jp
cHRpb24pKTsKKyAgICBjYXNjYWRlLnVwZGF0ZShudWxscHRyKTsKKworICAgIFRleHRSdW4gdGV4
dFJ1bih0ZXh0KTsKKyAgICBmbG9hdCB0ZXh0V2lkdGggPSBjYXNjYWRlLndpZHRoKHRleHRSdW4p
OworICAgIAorICAgIEZsb2F0UmVjdCBiYWRnZVJlY3QoYmFkZ2VQb3NpdGlvbiwgRmxvYXRTaXpl
KHRleHRXaWR0aCArIDIsIGZvbnRTaXplICsgMikpOworICAgIGlmIChiYWRnZVBvc2l0aW9uLngo
KSA9PSBjb250YWluZXJSZWN0Lm1heFgoKSkKKyAgICAgICAgYmFkZ2VSZWN0LnNldFgoYmFkZ2VQ
b3NpdGlvbi54KCkgLSBiYWRnZVJlY3Qud2lkdGgoKSk7CisKKyAgICBpZiAoYmFkZ2VQb3NpdGlv
bi55KCkgPT0gY29udGFpbmVyUmVjdC5tYXhZKCkpCisgICAgICAgIGJhZGdlUmVjdC5zZXRZKGJh
ZGdlUG9zaXRpb24ueSgpIC0gYmFkZ2VSZWN0LmhlaWdodCgpKTsKKworICAgIGZpbGxSZWN0KGJh
ZGdlUmVjdCwgY29sb3IpOworICAgIAorICAgIHNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOwor
ICAgIGNhc2NhZGUuZHJhd1RleHQoKnRoaXMsIHRleHRSdW4sIEZsb2F0UG9pbnQoYmFkZ2VSZWN0
LngoKSArIDEsIGJhZGdlUmVjdC55KCkgKyAxICsgZm9udFNpemUpKTsKK30KKwogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC03MjksNiArNzYzLDE5IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
LCBjYWNoZWRJbWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF0Zm9ybURy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGRyYXdJbWFn
ZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CkBAIC03
NDUsNyArNzkyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwog
Ci0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJ
bWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVy
cG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzU3LDcgKzgwNCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1w
bCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFj
aW5nLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKQEAgLTc3MCw3ICs4MTcsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1h
Z2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxl
ZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxl
LCB2UnVsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxl
ICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpAQCAtNzk3LDYgKzg0NCw5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybjsKKwog
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICBp
bWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggMDg4ZjJlNTM5NmI5YjQzODU4ODdlYzAxZmFjYThlN2RkOTBlMTgwNy4uNTFmY2E0ZDYyOGIz
OWIxMGFhOGVmYjRmYjRlODE4Y2JjMTEyZjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xh
c3MgR2x5cGhCdWZmZXI7CiAjZW5kaWYKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3Mg
Q2FjaGVkSW1hZ2U7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwpAQCAtMzMzLDEwICszMzQsNiBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlOyB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkgfHwgVVNFKENBSVJPKQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOwotI2VuZGlmCi0KICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKICAgICB2b2lk
IGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwpAQCAt
MzU1LDYgKzM1Miw4IEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBzdGFja1NpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0YWNrLnNpemUoKTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3R1BVQmFkZ2UoY29uc3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBGbG9h
dFBvaW50JiBiYWRnZVBvc2l0aW9uLCBjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgdGV4dCk7
CisgICAgCiAgICAgLy8gVGhlc2UgZHJhdyBtZXRob2RzIHdpbGwgZG8gYm90aCBzdHJva2luZyBh
bmQgZmlsbGluZy4KICAgICAvLyBGSVhNRTogLi4uZXhjZXB0IGRyYXdSZWN0KCksIHdoaWNoIGZp
bGxzIHByb3Blcmx5IGJ1dCBhbHdheXMgc3Ryb2tlcwogICAgIC8vIHVzaW5nIGEgMS1waXhlbCBz
dHJva2UgaW5zZXQgZnJvbSB0aGUgcmVjdCBib3JkZXJzIChvZiB0aGUgY29ycmVjdApAQCAtMzgy
LDYgKzM4MSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSwgQ2FjaGVkSW1h
Z2UqID0gbnVsbHB0cik7CisKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJh
d0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAg
IFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IElt
YWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0lt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlv
bjo6RnJvbUltYWdlIH0pOwpAQCAtNjQ5LDYgKzY1MCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBD
b2xvciYpOwogCisgICAgdm9pZCBwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKTsKKwogICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01v
ZGVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIENvbG9yJik7CiAKICAg
ICBmbG9hdCBkYXNoZWRMaW5lQ29ybmVyV2lkdGhGb3JTdHJva2VXaWR0aChmbG9hdCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKaW5kZXggOGJjOWMxYzJlY2MwY2JmYzM4MjZhYTFlMDE5MTMxYzg5MzcyZDNm
ZS4uMzQzN2M5YjhkOGExMGE1NGRlNmZlZGZkMjE0NThkNzk0MjM0YjI1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC03Miw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3Is
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNF
KERJUkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOwotI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmLCBDYWNoZWRJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBkMTQ2NDky
YzRhOGRmOTM1Y2FmOTRiOWZiOTU1OTA5YWFkMWNiYWYwLi5kYmUwMjVlZTllMWE0NDBmMDJlYTk2
NjRhMzRmOThhMGY2YzUxYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgRHJh
d2luZ0NvbnRleHQ7CiB9CiAKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JikgeyB9CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNm
b3JtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2
ZXIuaAppbmRleCBmMDMyNDg0NzI4MzY3MzkwYjMwNTljZjU4Y2UxMjBhYjM3MmEzNTU1Li4xN2Q5
MjdhM2VlOWQ2MGQxZDA0OGZjMGNjNTJmMDMzOWU0ODQzYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC00NSwxMCArNDUsMTMg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoY29u
c3QgSW1hZ2UmLCBFbmNvZGVkRGF0YVN0YXR1cykgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBkZWNv
ZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcgZGVsdGEpID0gMDsKIAorICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNv
bnN0IEltYWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0
YShjb25zdCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJs
ZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5n
ZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlk
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0
IEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSA9IDA7CisgICAgCiAgICAgdmlydHVhbCB2
b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0
ID0gbnVsbHB0cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NzUwMzIyMzlhNWQ1YWJhYTc2M2Y3
YTI2M2VkN2NiMjQ1OTgyNjUyLi40NTUxNWM1OWExZmYyODRjZDhkMjgwMzgzN2IwODViNTAyMmQ2
YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCkBAIC0xMzAsOCArMTMwLDEwIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNv
ZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSkKICAgICBBU1NF
UlQoZnJhbWVDb3VudCA8PSBtX2ZyYW1lcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGZyYW1lQ291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGluZGV4
ID09IGV4Y2x1ZGVGcmFtZSkKKyAgICAgICAgaWYgKGluZGV4ID09IGV4Y2x1ZGVGcmFtZSB8fCAh
bV9mcmFtZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAg
ICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpLT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCgq
bV9pbWFnZSwgbV9mcmFtZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpOwogICAgICAgICBkZWNvZGVk
U2l6ZSArPSBtX2ZyYW1lc1tpbmRleF0uY2xlYXJJbWFnZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggNmIyZDgxZTM1
YjA4Y2Y3NGY0ZjM2MWFlYmM3NGYzMTI5YzdkOWI3Zi4uMDczZTdkYTJkMDcwMDhhYWMwZTZlNGRh
YTM5MjAxZGZlY2Q2MTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCkBAIC0yOCwyMSArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxp
ZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkp
Ci0jaW5jbHVkZSAiU2hhcmVkQml0bWFwLmgiCi0jZW5kaWYKLQotI2lmIFVTRShESVJFQ1QyRCkK
LSNpbmNsdWRlICJDT01QdHIuaCIKLSNpbmNsdWRlIDxkMmQxLmg+Ci0jaW5jbHVkZSA8d2luY29k
ZWMuaD4KLSNlbmRpZgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTEsMjggKzM3LDEyIEBAIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIElu
dFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVmIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShESVJFQ1QyRCkK
LXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShD
QUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7Ci0j
ZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFn
ZVB0cjsKLSNlbmRpZgotCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwog
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwogCiB2b2lkIGNsZWFyTmF0aXZlSW1h
Z2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotY2xhc3MgTmF0aXZlSW1hZ2VI
YW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOwotfTsKLSAgICAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0MDcxZDA3Yzk1ODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNl
bGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdE
SSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJ
bWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFw
PiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5cGVkZWYgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0UoV0lOR0RJKQordHlwZWRlZiBS
ZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbmRpZgorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2OTBiZWNkYzhiNGFhZTg1MjRiM2Y2ODEwZmI5MjY0
Yzg1YzQ5OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYTEwNDY1NmNiNWQ1ZGRlYTAzMjFk
YWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1NDg1NDQ4ZjM0YWE3NzdhZmUwNGU3
MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE2ICsxMjMsMTEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250
ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJv
a2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUlt
YWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAg
ICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3TmF0aXZlSW1h
Z2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsg
b3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcAppbmRleCAzZDQ2YTUwNTNiMTdjOWEzZWY5ZjgyYjIwYjRkOTcxZjAyYTU0M2U2Li44
MmQyN2JkNjVhOGU2MGJkYTc2OTI2MzMyZWFiNGIyYTAzYTRjNTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI3OSwxMyArMjc5LDE5IEBAIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZElt
YWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1h
Z2UqKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0g
Z3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1f
cGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86
OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCAzMWJhNzE2MTdlZmE0NTZjMTFmMDQz
YTE5YTQ0OTNmZDU4NWIyM2U1Li4wYmZmNzgxN2VkYTVkMmQ5ZWUzYjFjNzQ4ZWFkMjk5YzhiMzFm
YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsNyArNzQsOSBA
QCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNoZWRJbWFn
ZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA2M2ZiNWRkNjFiYWJjY2NmNzA5MDRlNTZk
MmY5ZDRlNWFkNThjYWM1Li5hY2IxZTRlNGNhYjk2YmU0YmNkMDlmZmM1YTI4Y2U5OTgxNmZmMDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yODAsMTYgKzI4MCwxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZp
Y2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNv
bnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAg
ICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
TmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggNWNjNWMyMDdiNDRhNDgzNWJlMmUwODAyOGEzYTcxMDk1
YTU1ZTFlMC4uN2MyOTZjOWNmNzc3YThiNGE4M2VlNzI4M2RlYzFmNDlhNTBjNzFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmgiCkBAIC02OSwyMSArNjgsNiBAQCBDb2xvciBuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAg
cmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFsz
XSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXpl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICAvLyBTdWJzYW1w
bGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXpl
KCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGlt
YWdlKTsKLSAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkp
Ci0gICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXplLnRyYW5z
cG9zZWRTaXplKCk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0
aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vic2Ft
cGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAg
ICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3RlZFNy
Y1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJl
Y3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7Ci19Ci0KIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCiB7CiAg
ICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDYxMDY0YTg4NjNiNDBmMTkwNWRhYTQwNTMzODdjMjI0
YjY0MjNhOGEuLmYwMDgyOTk4NzAxNmFkMmM1ZGMxZTU4ZWJjMGE5ODNlZTBiMTM0YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw5ICs2Miw4IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUg
OiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCiAgICAgRHJh
d1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJF
Q1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCi0jZW5kaWYKKyAgICBEcmF3SW1hZ2VCdWZmZXIs
CiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggMjNjYzA3
ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4Ny4uY2IxYmI2MDE1ZDU0NzMwMmFhNjRk
MGUzMzhjNmZlMmY1ZmVmOThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250
ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
aW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBvYnNlcnZlcikKK0RyYXdpbmdDb250ZXh0
OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpSZW1vdGVDbGllbnQqIHJlbW90ZUNs
aWVudCkKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENv
bnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0
Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0
KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBvYnNlcnZlcik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlzcGxheUxpc3Qs
IEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwgaW5p
dGlhbENUTSwgcmVtb3RlQ2xpZW50KTsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJhZDgxNWE1MDA4MWI3
ZTdhYjEwODEzMTcxN2ZkZTU0My4uZTU1MmFkNjA4YjM3NjZkZDJhMTJkMjU2YjlhNzQ0Y2FhYWEx
Y2Q3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5o
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEcmF3aW5n
Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6T2JzZXJ2
ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
ID0geyB9LCBSZWNvcmRlcjo6UmVtb3RlQ2xpZW50KiA9IG51bGxwdHIpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29u
dGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlciYg
cmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmlu
ZGV4IDg2NzJiMWI0NzA4NDc2OTAxODUwODQ5NTlhNzdhZjQyZmRiODA0M2YuLjRmYmU0ZjYyYjBi
Y2YxYWI5OTE0ZWZiNjlkY2NkYzJjMTgyMTA3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlw
ZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2Vu
ZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2NsYXNzIEltYWdlQnVmZmVyIDog
cHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+Owog
CiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgogCiAgICAgSW1hZ2VCdWZmZXIo
c3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNp
emUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRh
QmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2lu
Z0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXpl
LCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAgewogICAgIH0KIAotICAgIElt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBtX2RyYXdpbmdDb250
ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykKKyAgICBJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVyOjpSZW1vdGVDbGllbnQqIHJl
bW90ZUNsaWVudCA9IG51bGxwdHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBp
bml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHJlbW90ZUNsaWVudCkKICAgICB7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZGJmMTg4NGEyMWEz
NDlmNmFhMDMzMzdmNzZlZDU5MjkyM2MwNGRlMy4uZTIyMmMxYzk1NDhhNzFlZGI4MWZkODk2MGJk
MWE4OWI4YWY1YTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShD
RykKQEAgLTEwNSwxMCArMTA0LDEwIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJ
dGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdl
PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsK
LSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihp
dGVtKSk7Ci0jZW5kaWYKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNh
c3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAg
LTcwMCwzMiArNjk5LDIyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKICAgICByZXR1cm4gdHM7
CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJhd05h
dGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlVHlwZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSNp
ZiBVU0UoQ0cpCi0gICAgLy8gRklYTUU6IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2UgZm9yIENhaXJv
LgogICAgICwgbV9pbWFnZShpbWFnZSkKLSNlbmRpZgogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VT
aXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qo
c3JjUmVjdCkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewotI2lmICFVU0UoQ0cpCi0gICAg
VU5VU0VEX1BBUkFNKGltYWdlKTsKLSNlbmRpZgogfQogCiBEcmF3TmF0aXZlSW1hZ2U6On5EcmF3
TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVj
dCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobmF0aXZlSW1hZ2VQdHIoKSk7CisgICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2VQdHIoKSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRp
b25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCkBA
IC03MzYsNyArNzI1LDMyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgdHMuZHVtcFByb3BlcnR5
KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKICAgICByZXR1cm4gdHM7CiB9
Ci0jZW5kaWYKKworRHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZm
ZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVj
dChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdJbWFnZUJ1
ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9pZCBEcmF3SW1hZ2VCdWZm
ZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8gU2hvdWxkIGJlIGhh
bmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0lt
YWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJ
dGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRp
ZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHko
ImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30K
IAogRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAg
ICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0dGVybikKQEAgLTE0MjcsOSArMTQ0MSw4
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJ
dGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJkcmF3
LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRzIDw8
ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVk
U2NhbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwotI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7Ci0jZW5kaWYKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJuIjsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3QiOyBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZTogdHMgPDwgImRyYXctbGluZSI7IGJy
ZWFrOwpAQCAtMTUyOCwxMSArMTU0MSwxMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxl
ZFNjYWxlZEltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFn
ZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8
RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdJ
bWFnZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSk7CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZjA1NTg2
OWUxN2FhYTk2NjRlYjUzZmIxYmVlNzk1ODA2NDI4ZDM2My4uZWJlNWFjOTQ3ZmVlOTNmMTZiYzU5
OWJhMjQ0YThlNjJkN2RmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEu
aCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgogCkBAIC0xNDMwLDQ1ICsxNDMxLDEyNCBAQCBPcHRpb25hbDxSZWY8RHJhd1RpbGVkU2Nh
bGVkSW1hZ2U+PiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZQog
ICAgIHJldHVybiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6Y3JlYXRlKCppbWFnZUhhbmRsZS0+aW1h
Z2UsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKnRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxl
LCAqaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8p
IHx8IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHVzaW5nIEltYWdlVHlwZSA9IFZh
cmlhbnQ8TmF0aXZlSW1hZ2VQdHIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisKKyAgICBz
dGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IEltYWdlVHlwZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdl
KGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXI+KG1faW1hZ2UpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4obV9pbWFnZSk7CisgICAg
fQorCisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQdHIoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE5hdGl2ZUltYWdlUHRyPihtX2ltYWdl
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8
TmF0aXZlSW1hZ2VQdHI+KG1faW1hZ2UpOworICAgIH0KKworICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2l6ZTsgfQogICAgIEZsb2F0UmVjdCBzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25S
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1h
Z2U+PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIERy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3
TmF0aXZlSW1hZ2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERy
YXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZVR5cGUmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvblJlY3Q7IH0KIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2lt
YWdlOwotI2VuZGlmCisgICAgSW1hZ2VUeXBlIG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1h
Z2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3Qg
bV9zcmNSZWN0OwogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKK2Ns
YXNzIERyYXdJbWFnZUJ1ZmZlciA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxEcmF3SW1hZ2VCdWZmZXI+IGNyZWF0ZShSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3SW1hZ2VCdWZm
ZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25z
KSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd0ltYWdlQnVmZmVy
KCk7CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBG
bG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRS
ZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9
CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0
aW9uczsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxS
ZWY8RHJhd0ltYWdlQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBX
RUJDT1JFX0VYUE9SVCBEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVz
dGluYXRpb25SZWN0OyB9CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAg
IEZsb2F0UmVjdCBtX3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25z
OworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd0ltYWdlQnVmZmVyOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Cisg
ICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4g
RHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAg
ICBkZWNvZGVyID4+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlv
bjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzb3VyY2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7
CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKKyAgICBkZWNvZGVyID4+IG9w
dGlvbnM7CisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKm9wdGlvbnMpOworfQorCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZUhhbmRsZSBoYW5kbGUg
eyBtX2ltYWdlIH07Ci0gICAgZW5jb2RlciA8PCBoYW5kbGU7Ci0jZW5kaWYKKyAgICBlbmNvZGVy
IDw8IG1faW1hZ2U7CiAgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKICAgICBlbmNvZGVyIDw8
IG1fZGVzdGluYXRpb25SZWN0OwogICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OwpAQCAtMTQ3OCwx
MiArMTU1OCwxMCBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRp
dmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0j
aWYgVVNFKENHKQotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlSGFuZGxlPiBoYW5kbGU7Ci0gICAg
ZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFoYW5kbGUpCisgICAgT3B0aW9uYWw8SW1hZ2VU
eXBlPiBpbWFnZTsKKyAgICBkZWNvZGVyID4+IGltYWdlOworICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYKIAogICAgIE9wdGlvbmFsPEZsb2F0U2l6
ZT4gaW1hZ2VTaXplOwogICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOwpAQCAtMTUwNSwxNCArMTU4
Myw4IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9
IGhhbmRsZS0+aW1hZ2U7Ci0jZWxzZQotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gbnVsbHB0
cjsKLSNlbmRpZgotICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgKmlt
YWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKKyAgICByZXR1
cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRp
b25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQotI2VuZGlmCiAKIGNsYXNzIERyYXdQYXR0
ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKQEAgLTI5MjQsMTEgKzI5OTYsMTIg
QEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2Fz
dDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKLSNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1h
Z2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVm
ZmVyPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0
ZXJuOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhpcyk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMzExMiwxMiArMzE4NSwxNCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+
IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0g
RHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBi
cmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERy
YXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOwot
I2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBpZiAo
YXV0byBpdGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGlm
IChhdXRvIGl0ZW0gPSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBAIC0z
MjcwLDkgKzMzNDUsOCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0o
RHJhd0dseXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVk
SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVk
U2NhbGVkSW1hZ2UpCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQotI2VuZGlmCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5lKQpAQCAtMzMzMSw5ICszNDA1LDggQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYg
VVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKLSNlbmRpZgogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmlu
ZGV4IGJkMDQzOGM2YTRiMjU2Yzg4NTZiYjEyOWEzYWI1ZmEyM2U3OGRjOGEuLmY2ODU5NzA5YzBl
Mjk4MGI0YTZiYjU5N2NmYzdmNTc4MmFiN2MwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMzcsMTAgKzM4LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBPYnNlcnZlciogb2JzZXJ2ZXIpCitSZWNv
cmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZW1v
dGVDbGllbnQqIHJlbW90ZUNsaWVudCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4
dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKQogICAgICwgbV9kaXNwbGF5TGlzdChk
aXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX3JlbW90ZUNs
aWVudChyZW1vdGVDbGllbnQpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywg
c3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsK
QEAgLTUyLDE1ICs1MywxNSBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBMT0coRGlzcGxh
eUxpc3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0LmRlc2Ny
aXB0aW9uKCkuZGF0YSgpKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Oklt
YWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGRlc3RGb3JtYXQpCit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKIHsKLSAgICBhcHBlbmRJdGVtKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBz
cmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKKyAgICBhcHBlbmRJdGVtKFB1dEltYWdl
RGF0YTo6Y3JlYXRlKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwg
ZGVzdEZvcm1hdCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbShjb25zdCBJ
dGVtJiBpdGVtKQogewotICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29ic2VydmVyLT53
aWxsQXBwZW5kSXRlbShpdGVtKTsKKyAgICBpZiAobV9yZW1vdGVDbGllbnQpCisgICAgICAgIG1f
cmVtb3RlQ2xpZW50LT53aWxsQXBwZW5kSXRlbShpdGVtKTsKIAogICAgIGlmIChpdGVtLmlzRHJh
d2luZ0l0ZW0oKQogI2lmIFVTRShDRykKQEAgLTEzNiwxMyArMTM3LDM0IEBAIEltYWdlRHJhd1Jl
c3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVjb3JkOwogfQog
Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLXZvaWQgUmVjb3Jk
ZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9p
ZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKIHsKKyAgICBpZiAobV9yZW1vdGVDbGllbnQg
JiYgY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyID0gbV9yZW1vdGVDbGllbnQtPmZpbmROYXRpdmVJbWFnZSgqY2FjaGVkSW1hZ2UsIGltYWdl
KSkgeworICAgICAgICAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5n
SXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7CisgICAg
ICAgICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxE
cmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVtRXh0
ZW50KG5ld0l0ZW0pOwogfQotI2VuZGlmCisKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCit7CisgICAgaWYgKCFtX3JlbW90ZUNsaWVudCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1v
dGVDbGllbnQtPmZpbmRJbWFnZUJ1ZmZlcihpbWFnZSkpIHsKKyAgICAgICAgaW1hZ2UuZmx1c2hE
cmF3aW5nQ29udGV4dCgpOworICAgICAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0
PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpKSk7CisgICAgICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAogdm9pZCBSZWNvcmRlcjo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZDI3MGM1ZDkwOGFjNjhkNzgwODM2M2JiYTkxYjJl
NzYxYWVkYzkyYi4uOTVjYWM2N2IyZWYxYzQzYTk2YWIxZWZmYmNhODgyMGViMTMzNmUyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNpbmNsdWRlICJS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNTMsMjAgKzU0LDIxIEBAIGNsYXNzIFJlY29y
ZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKLSAg
ICBjbGFzcyBPYnNlcnZlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgT2JzZXJ2ZXIq
ID0gbnVsbHB0cik7CisgICAgY2xhc3MgUmVtb3RlQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgflJlbW90ZUNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciBmaW5kSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImKSB7IHJldHVybiB7
IH07IH0KKyAgICAgICAgdmlydHVhbCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZE5hdGl2
ZUltYWdlKENhY2hlZEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IHJldHVybiB7IH07
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07
CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBSZW1vdGVDbGllbnQqID0g
bnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3JkZXIoKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24g
aW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1h
dCk7CiAKICAgICBzaXplX3QgaXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlz
dC5pdGVtQ291bnQoKTsgfQogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxB
cHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07Ci0gICAgfTsKLQogcHJpdmF0ZToKICAgICBib29s
IGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTEwMiw5ICsxMDQsOSBAQCBwcml2YXRlOgogICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBV
U0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7Ci0jZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBDYWNoZWRJbWFnZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKQEAgLTE4Myw3ICsxODUsNyBAQCBw
cml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKICAgICBEaXNwbGF5
TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBPYnNlcnZlciogbV9vYnNlcnZlcjsKKyAgICBSZW1v
dGVDbGllbnQqIG1fcmVtb3RlQ2xpZW50OwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+
IG1fc3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IGNlYTJhNmVhMDQ0NTM0ZmY0NTQ0ZWEyMTA5
YzI2MTdkNzk3Y2EyZjEuLjFiYzIyNmMzOTBiYWRjZGFkMzMxYWYyNDlmNTU2MTRmMTNhNTM1YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCkBAIC01NDksNyArNTQ5LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXQKICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNz
Q29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKikKIHsKICAgICBzdHJ1Y3Qg
RHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewogICAgICAgICB2aXJ0dWFs
IH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CkBAIC01NzAsNiArNTcwLDEyIEBAIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1h
Z2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQog
Citib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgIHJldHVy
biBmYWxzZTsKK30KKwogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdQYXR0ZXJuIGZpbmFs
IDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZGUyNGFiOGJkNTI0MzJjZTI5
M2E4MGY2YjRmOTg2MGYyMjJmYTdmZi4uYTI5NzIwNjFjYTgzOGQ2ZDUyZTU1YzYzMzlhN2Q5M2I0
YjAyM2M3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaApAQCAtNjcsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Oklt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6
OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKworICAg
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
LCBXZWJDb3JlOjpDYWNoZWRJbWFnZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdlQnVm
ZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihX
ZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcAppbmRleCAzNzQwNzE3MTViY2I3OTFkNTg5ZDUwZDk5YjI5YzY2YjAx
MGI3MDgxLi41N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTIwNywxNiArMjA3LDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3Rv
cmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQx
Qml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgp
KTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdO
YXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0
YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTI0N2E3YWQ0Y2QyOTUzOGU0
ZWFmNDBiZDgwMzY5Njg2MDA4Yjg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKLQotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICA6IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAsIG1faW1h
Z2VCdWZmZXJJZGVudGlmaWVyKGltYWdlQnVmZmVySWRlbnRpZmllcikKLXsKLX0KLQotdm9pZCBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNyZWF0ZUJhY2tlbmQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgV1RGTW92ZShoYW5kbGUpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi12
b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250
ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIs
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
ZTkyMGVmZGRjMTc5ZjYzZmQ0ZmQyNGJjZjc5MTMyNDEwOTVlNjM1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotY2xh
c3MgSW1hZ2VEYXRhOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OwotCi1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkgewotcHVibGljOgotICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eSgpID0gZGVmYXVsdDsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluLgotICAgIHZp
cnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCA9IDA7
Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHko
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLQot
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluLgotICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUpOwotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyKTsKLQotcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIEltYWdlQnVmZmVySWRlbnRpZmll
ciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXgg
ODFiODk3OGQwZTc5MTE1N2Y5YzdlNDk3MDM5ODE3ZTQ3OTU5ZTUxNC4uNWIzYTg3MTJlZmMxNGMy
ZjQ3ZWJhNGIyNWM1ZDJjNmJiODk4N2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yNywy
OSArMjcsMjkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIlJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXll
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5
cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkNvbmNy
ZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpE
ZWxlZ2F0ZSB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6
OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1
c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dDsKICAgICB1c2luZyBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjpwdXRJbWFnZURhdGE7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
Ojp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHks
IGltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAg
ICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCkpCi0gICAgICAgICwg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7Ci0gICAg
ICAgIGNyZWF0ZUJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJh
Y2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29s
b3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpKTsK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVtb3RlQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5k
U2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3Bh
Y2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSgpCkBAIC02MSw5ICs2MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQ7Ci0gICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKLQogICAgIHZvaWQgZmx1
c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0
ZW1Db3VudCgpKSB7CkBAIC03MiwyNyArNjksMTggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBmbHVz
aERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENv
bnRleHQoKTsKLSAgICAgICAgY29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7Ci0g
ICAgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAgfQotCi0gICAgYm9v
bCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChpdGVtLnR5cGUoKSAhPSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKSB7CisgICAgICAgICAgICBhdXRvJiBwdXRJ
bWFnZURhdGFJdGVtID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdl
RGF0YSY+KGl0ZW0pOworICAgICAgICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0u
aW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRh
SXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dEltYWdlRGF0
YUl0ZW0uZGVzdEZvcm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CiAKLSAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVtKTsKLSAgICAgICAgcHV0SW1hZ2VEYXRh
KHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURh
dGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBv
aW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZvcm1hdCgpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5hcHBseVJl
c291cmNlSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CisgICAgCisgICAgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRl
eCBkYmI1NWJhM2MyMjBkZTg2ZjE4YTUzM2NmYTA4NzE4ZjM4OTI0ZjA4Li4zMGI1ZGMzNGQwNDA2
OGQ4M2Q2ZjQ4NzQwNzlhZmZlNTE2Y2EwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdl
cy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDU5ICs2Niw0NiBAQCB1aW50NjRfdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
OwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK2Jvb2wgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbShEaXNwbGF5TGlzdDo6SXRlbSYgaXRl
bSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8qIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Ci0gICAgaWYg
KCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVySWRlbnRp
ZmllcikpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVB
Y2NlbGVyYXRlZCkgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAg
ICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVySWRlbnRp
ZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVt
b3RlQWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVV
bmFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAg
ICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBt
X3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5hcHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIgbWVzc2FnZSBz
aG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAgICBib29sIGZvdW5k
ID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9n
aWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1v
dmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdl
YkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIGF1dG8g
aW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1Jl
Y3QpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShX
VEZNb3ZlKGltYWdlRGF0YSkpKTsKLSAgICB9CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY3JlYXRlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29u
dGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBib29s
IHNob3VsZERyYXdHUFVCYWRnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAg
aW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHNo
b3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4
dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIEltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGJv
b2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElk
ZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVy
LT5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBmbHVzaElkZW50aWZp
ZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoZGlzcGxheUxpc3QsIHNob3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpD
b21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3Qs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byBpbWFnZURhdGEgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNl
KFdURk1vdmUoaW1hZ2VEYXRhKSkpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA2NzY0YWMx
MGM1ZTdlMDJhNGM5Nzg3N2I5YzVlNTVjYTBiNzhjYjFlLi4wNjIyOGZlZjk0ZWFlOWYyM2E3MTJk
YTQ4MWFiYjZhZWYwMTBmZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0y
OCwyNCArMjgsMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0SXRlbXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogfQorY2xhc3MgRmxvYXRTaXpl
OworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5n
TW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyArNTgsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsg
fQorICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0m
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNl
bnQuCisgICAgdm9pZCByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwog
CiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAtNzMsMTQgKzc1
LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgcmVsZWFzZUltYWdlQnVm
ZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1h
Z2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2
b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwotCi0g
ICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5Pj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0Nv
bnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91
bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
dm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIElt
YWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworCisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDc5OGM4YjRlZGI1N2Y1
YWQwODJiYTgxYzEwMDhiMGRjZGVmZGYxOGEuLmQ0ZWVjNGY5YmMxM2ZjNDI5NWQ0ZjMwYzMwNTQ2
ZDgzZWQxODgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjMsMTEgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBt
ZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0g
ICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIFJlbGVhc2VJbWFnZUJ1
ZmZlcihXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Ci0gICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRp
c3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVy
KQotICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViS2l0OjpJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFn
ZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlSW1h
Z2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgYm9v
bCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2lu
Z0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3Bs
YXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgR2V0SW1hZ2VEYXRhKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29y
ZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VE
YXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciBpbWFnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMWQ5ZmE3MTNkZDY2NGMyZWM2YzYyZTk0ZjZmZjI5NjhlMTc3ZGE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCit7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5jb250YWlucyhyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBpbWFnZTsKKworICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OlJlbW90ZUFjY2VsZXJhdGVkKQorICAgICAgICBpbWFnZSA9IEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworCisgICAgaWYgKCFpbWFnZSB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlID0gVW5hY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlmIChpbWFnZSkgeworICAgICAgICBtX3JlbW90ZUlt
YWdlQnVmZmVySGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGlt
YWdlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3
aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBi
b29sIHNob3VsZERyYXdHUFVCYWRnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3sKKyAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9zaG91
bGREcmF3R1BVQmFkZ2UsIHNob3VsZERyYXdHUFVCYWRnZSk7CisgICAgYXV0byBpbWFnZSA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIGlmIChpbWFnZSkKKyAgICAgICAgaW1hZ2UtPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxh
eUxpc3QpOworICAgIHJldHVybiBpbWFnZTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvIGltYWdlID0gZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgc2hvdWxkRHJh
d0dQVUJhZGdlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChpbWFnZSkKKyAg
ICAgICAgaW1hZ2UtPmZsdXNoQ29udGV4dCgpOworICAgIHJldHVybiBpbWFnZTsKK30KKworUmVm
UHRyPEltYWdlRGF0YT4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpnZXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
Cit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQo
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5nZXRJbWFn
ZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVOYXRpdmVJbWFn
ZUhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgaW1hZ2UpOworICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3R1BVQmFkZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAoreworICAgIGlmICghbV9zaG91bGREcmF3R1BVQmFk
Z2UpCisgICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0LmRyYXdHUFVCYWRnZShjb250YWluZXJS
ZWN0LCBjb250YWluZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCksIGNvbG9yLCB0ZXh0KTsKK30KKwor
Ym9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3Qg
RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
K3sKKyAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3BsYXlMaXN0OjpE
cmF3TmF0aXZlSW1hZ2UmPihpdGVtKTsKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciA9IGRyYXdJdGVtLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpOworICAgIGlmICghcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGlt
YWdlID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZ2V0KGRyYXdJdGVtLnJlbW90ZVJlc291
cmNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgZHJhd0l0ZW0uaW1hZ2VTaXpl
KCksIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0
ZW0ub3B0aW9ucygpKTsKKyAgICBkcmF3R1BVQmFkZ2UoY29udGV4dCwgZHJhd0l0ZW0uZGVzdGlu
YXRpb25SZWN0KCksIFdlYkNvcmU6OkNvbG9yOjpyZWQsICJJTUFHRSJfcyk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZm
ZXJJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBE
aXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyJj4oaXRlbSk7CisgICAgYXV0byBpbWFnZSA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aW1hZ2UtPmRyYXcoY29udGV4dCwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVt
LnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25zKCkpOworICAgIGRyYXdHUFVCYWRnZShjb250ZXh0
LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgV2ViQ29yZTo6Q29sb3I6OmJsdWUsICJDQU5W
QVMiX3MpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0g
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBk
cmF3TmF0aXZlSW1hZ2VJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgIGlmIChpdGVtLnR5cGUoKSA9
PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IGRyYXdJbWFnZUJ1ZmZlckl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVtb3RlTmF0aXZlSW1hZ2VI
YXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47
CisgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVk
IGJlZm9yZSByZWxlYXNpbmcgaXQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZmMwNTJjMjg0Njk2ZWI3NjRkYWI2ZGNl
ZTdmMDdmZTZhZmM4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0
OworY2xhc3MgSXRlbTsKK30KK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5Jik7CisKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29sIHNo
b3VsZERyYXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29sIHNob3VsZERyYXdHUFVC
YWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CisKKyAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgYm9vbCBhcHBseVJlc291cmNlSXRlbShjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0OworCisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZl
ckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CisgICAgdXNpbmcgUmVtb3RlTmF0
aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPjsKKworICAgIHZvaWQgZHJhd0dQVUJhZGdlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGFp
bmVyUmVjdCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHRleHQpIGNvbnN0
OworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIGJvb2wgZHJh
d0ltYWdlQnVmZmVySXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNo
TWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZU5hdGl2ZUltYWdlSGFz
aE1hcCBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcDsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworICAgIGJvb2wgbV9zaG91
bGREcmF3R1BVQmFkZ2UgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCA3MGQzZDg4ZjJiZjRhNmYxY2ZjNGYxODg3MDRlZDY3NzBlNDk3
N2FmLi5hMGNmY2U2YzAxMjQ4NWNiM2ZlN2NkNjEzY2ZmMTk2MWZiMmIxNmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNiwxMSArMjE2LDEzIEBAIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJD
b3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVk
aWFTZXNzaW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cics
CiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAg
ICAgICAgICdXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UmVuZGVyaW5nTW9kZScsCiAg
ICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcicsCkBAIC0yMzgsNyArMjQwLDYgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktp
dDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXInLAotICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lD
dXN0b21Qcm90b2NvbElEJywKICAgICAgICAgJ1dlYktpdDo6TGliV2ViUlRDUmVzb2x2ZXJJZGVu
dGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IGUwYmJiYmM1YmEyMzE4YmZhOGU2MzE5NmQ1NGVlYmI4OTAzNjQ0NDEuLmEwNzc1
MzA5NTdiYThkNDdkNTQyOWJhZGQ2Njc1NzU1NGQwNjIxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwMCw3ICsxMTAwLDcgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UpCitzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYXV0byBpbWFnZVNpemUgPSBuYXRpdmVJ
bWFnZVNpemUoaW1hZ2UpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29k
ZXIsIE5hdGl2ZUltYWdlUHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5j
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJbWFnZVB0ciBp
bWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGJvb2wgaGFzSW1hZ2Ug
PSAhIWltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CkBAIC0xMTY2LDE0ICsxMTY2LDE0
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUlt
YWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgcmV0dXJuIGRlY29kZU5hdGl2ZUltYWdl
KGRlY29kZXIsIGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFu
ZGxlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlSGFuZGxlJiBp
bWFnZUhhbmRsZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0gICAgZW5j
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZS5nZXQoKSk7
CisgICAgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CiB9CiAKLWJv
b2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBOYXRpdmVJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCitib29sIEFyZ3VtZW50Q29kZXI8
TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQogewotICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIs
IGltYWdlSGFuZGxlLmltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwNWQw
MzU1NGI5ZWNhOWEwNDFjMzY4ZWY0NTM4ODI0NDM0Y2U2ZTIzLi45ZjNiMTA2NjkzMzNiYTMwMTUy
OTc4M2M5ZTFlOTFlYWJhNGNhYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5k
ZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFn
ZVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTEwNSw3ICsxMDYsNiBAQCBjbGFzcyBLZXlmcmFtZVZh
bHVlTGlzdDsKIGNsYXNzIExheW91dFNpemU7CiBjbGFzcyBMYXlvdXRQb2ludDsKIGNsYXNzIExp
bmVhclRpbWluZ0Z1bmN0aW9uOwotY2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGU7CiBjbGFzcyBOb3Rp
ZmljYXRpb247CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFBheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb247CkBAIC00MTYsOSArNDE2LDkgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxl
Jik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlSGFuZGxlPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFuZGxlJik7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggYmMyYzQ5NDNhZWJlNWNjYWY4Yjk0N2VkNzFhZTAzMGY0ZjMyZDk4My4uMWY2MTMxODkyOGU5
ZDE2NmNhNWYwMmZlNzk3ZGY0MjY5N2E0ZTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNCw4ICsyNCw4
IEBACiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTU1MSw4ICs1NTEsOCBAQCBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCi1XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9B
dWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDU3MjEzNTYyYWJjMWJlMzg0MmJlMzFlODYxNzM3MGRlMjg3OGNk
MGEuLjJiZTc3ZDRjODQzZTVjNWNlMDJjNjFjNjMzZmI1MjNiYzU3YTJiMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg2Myw3ICsz
ODYzLDYgQEAKIAkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTA2NDBBMzI0MDcxQTYx
MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTUw
NjQwQTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUFEMDk0NDI0MDhB
QkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQxNDUsMTAgKzQxNDQsNyBAQAogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyog
V0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRo
ID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0
ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEMyNDA5N0Ew
MjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgw
MTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAxMjI0MDk5MDZF
MDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM1MjQwNzg1N0YwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTU4LDYgKzQxNTQsMTAgQEAKIAkJNzI3QTdGNDky
NDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVG
MTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJEQ0ExRTkyNTI0MjRDRTAw
QzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVz
b3VyY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFQTI1MjQy
NENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzJEQ0ExRUIyNTI3MTQ1MTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFQzI1MjcxNDUxMDBDOUIyMEQgLyogUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBD
MzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUg
LyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgwMjEsMTcgKzgwMjEsMTcgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0
RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQ0MjQwOEFCQjMwMERFNEQyRiAv
KiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovLAotCQkJCTU1MDY0MEE1MjQwNzFDQzAw
MEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4
OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywK
IAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAw
N0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk3MjdBN0Y0OTI0
MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKLQkJCQk3MjI3ODAwQzI0
MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8s
CiAJCQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkRDQTFFQTI1
MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8sCisJCQkJNzJEQ0Ex
RTkyNTI0MjRDRTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLywKIAkJCQk1NTA2
NDA5RjI0MDcxOTZBMDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CkBAIC04MDQxLDEyICs4MDQxLDEyIEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERF
NEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKLQkJCQk3MjI3ODAx
MTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcCAqLywKLQkJCQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJG
IC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDBB
MzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCiAJ
CQkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkRDQTFFQjI1MjcxNDUxMDBDOUIyMEQgLyogUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmNwcCAqLywKKwkJCQk3MkRDQTFFQzI1MjcxNDUxMDBDOUIyMEQg
LyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBo
aWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTFiYzlhZTg3ZGM4ZDcyNDI4YTBiODA5
Y2FkMGQ4MGE0Y2QxY2I5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlIDx3dGYv
T2JqZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBJbWFnZUJ1
ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEltYWdlQnVmZmVySWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8SW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZT47Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCmluZGV4IGU4NDkxNjY0NTE0NTk2Mjg3ZWYyYzc4ZjkwNzZlMWQ0MzgyMTkxZjIuLjkyYTUz
ZjU5YzY3NmY3ODdmZDIxZmYwZGExYzQzMTc5NTAzMmIyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
QEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KQEAg
LTM3LDEwICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3Rl
SW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJh
Y2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIgeworY2xh
c3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNsaWVudCB7
CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlz
dEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CisgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6OmNvbnRleHQ7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQpAQCAtNTMsMTQgKzU2LDIwIEBAIHB1YmxpYzoKIAog
ICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5n
Q29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VJbWFn
ZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3RlZDoKICAgICBSZW1vdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSkKLSAgICAgICAg
LCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAg
ICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgICAgICAsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdN
b2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIHZvaWQgY3Jl
YXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpIG92ZXJyaWRlCkBAIC02OCwyMyArNzcsNTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBBU1NF
UlQoIW1fYmFja2VuZCk7CiAgICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoaGFuZGxlKSk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogCiAgICAgQmFja2Vu
ZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1
ZmZlciY+KCp0aGlzKS5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp3YWl0Rm9yQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CisgICAgICAgIGlmICghbV9iYWNrZW5kICYmIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgICAgICByZXR1cm4gbV9i
YWNrZW5kLmdldCgpOwogICAgIH0KIAorICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9iYWNrZW5k
LT5mbHVzaENvbnRleHQoKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdD
b250ZXh0LmRpc3BsYXlMaXN0KCk7CisgICAgICAgIGlmICghZGlzcGxheUxpc3QuaXRlbUNvdW50
KCkgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kcmF3R1BVQmFkZ2UoY29udGV4dCgpLCBX
ZWJDb3JlOjpGbG9hdFJlY3QoeyB9LCBtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCkpLCBXZWJDb3Jl
OjpDb2xvcjo6ZGFya0dyZWVuLCAiR1BVIl9zKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlm
aWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0
QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVsZWFzZVJl
bW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGRpc3BsYXlM
aXN0LmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwg
bV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBj
b25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPm1fZHJhd2luZ0NvbnRleHQuZGlz
cGxheUxpc3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMp
LT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KGRp
c3BsYXlMaXN0KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdl
QnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRl
bUNvdW50KCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0
aGlzKS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICBkaXNw
bGF5TGlzdC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlz
IHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVHZXRJbWFn
ZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CiAgICAgfQogCiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZv
cm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92
ZXJyaWRlCkBAIC05NSwyNiArMTMzLDMyIEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5n
Q29udGV4dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBz
cmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hD
b250ZXh0KCkgb3ZlcnJpZGUKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
ZmluZEltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSkgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICAgICAgbV9iYWNrZW5kLT5m
bHVzaENvbnRleHQoKTsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAg
ICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmZpbmRJbWFnZUJ1ZmZl
ckZvckNsaWVudChpbWFnZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJy
aWRlCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmROYXRpdmVJbWFn
ZShXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlM
aXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxh
eUxpc3QuaXRlbUNvdW50KCkpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChkaXNwbGF5TGlzdCk7Cisg
ICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4g
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5maW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVk
SW1hZ2UsIGltYWdlLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQotICAgIAorCiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb25zdGV4
cHIgc2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwogICAgICAgICBhdXRvJiBkaXNw
bGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRp
c3BsYXlMaXN0Lml0ZW1Db3VudCgpID49IERpc3BsYXlMaXN0QmF0Y2hTaXplKQotICAgICAgICAg
ICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChk
aXNwbGF5TGlzdCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA8IERpc3Bs
YXlMaXN0QmF0Y2hTaXplIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KKworICAgIFdlYWtQdHI8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MTUwYzdiMDc5
M2FmZTlhYzVjODNhOWFjNzQ2YmEzMThlNTFiOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXI6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpKQotewotICAgIC8vIENyZWF0
ZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1h
Z2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXI6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkKLXsKLSAgICAvLyBS
ZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIGlmICghbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VJ
bWFnZUJ1ZmZlcihtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlZlB0cjxJbWFnZURh
dGE+IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29u
c3QKLXsKLSAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7Ci0g
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBt
X2ltYWdlQnVmZmVySWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCAxX3MpOwotICAg
IHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
Ci17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCAmJiAhaXNCYWNrZW5kQ3JlYXRl
ZCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyOjp3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQotewotICAgIGlmICht
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgJiYgaXNQZW5kaW5nRmx1c2goKSkKLSAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRl
eHQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERy
YXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0
KGRpc3BsYXlMaXN0LCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVz
aERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9zZW50Rmx1c2hJ
ZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3QuY2xl
YXIoKTsKLSAgICB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKLX0KLQot
dm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpjb21taXRGbHVzaENvbnRleHQo
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewotICAgIG1fcmVj
ZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaAppbmRleCA2MjA0MThkNzhjMjdmMjhjNTc0
OTAyYzJlMWJhOWEyMzcxNzUxN2I5Li44MjQ2MGExNmNlYmYzNDlhOTM0YmI4MTY0NDFkMDA5NWRl
MTEyM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaApA
QCAtMjksMTEgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRT
aXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW1hZ2VEYXRhOwpAQCAtNDIsMzcgKzQwLDIwIEBAIGVudW0gY2xhc3MgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCiBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyKCk7Ci0KLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7IH0KLQogICAgIC8v
IE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbi4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUpID0gMDsKIAotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3Jl
YXRlZCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1
cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0K
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lkIHdhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoKTsKLSAgICB2b2lkIHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgp
OworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
IGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQogCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2Vu
dC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAgICB2b2lk
IGZsdXNoRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7
Ci0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIgeyBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXI6OmdlbmVyYXRlKCkgfTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyKCkgPSBkZWZhdWx0OwogCiAgICAgSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAppbmRleCA5OTUzNDE3ODdlZGEyMGE1NTRlNGQ2N2JhNTNkYzY5OGE1MzcwY2MwLi4y
MTQ3YTQ4N2U1N2JiMDk2NDQ4NDhjNWMyYTkwMjY1NWNmOTEzMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgpAQCAt
MzksMTIgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKFdlYlBhZ2UmIHBhZ2UpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHBhZ2UpKTsK
IH0KIAotUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCitS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdlYlBhZ2UmIHBh
Z2UpCisgICAgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGUoKnRoaXMsIHBhZ2UpCiB7CiAgICAgLy8g
UmVnaXN0ZXIgaXRzZWxmIGFzIGEgTWVzc2FnZVJlY2VpdmVyIGluIHRoZSBHUFVQcm9jZXNzQ29u
bmVjdGlvbi4KICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFw
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKTsKQEAgLTg2LDQwICs4OCw4MiBAQCBib29sIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpCiAgICAg
cmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dD4o
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246Oklu
dGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6ZHJhd0dQVUJhZGdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0
cmluZyYgdGV4dCkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZHJhd0dQVUJhZGdlKGNv
bnRleHQsIGNvbnRhaW5lclJlY3QsIGNvbG9yLCB0ZXh0KTsKK30KKwogc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Ci0gICAgaWYg
KHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzKSB7Ci0gICAgICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCksIGltYWdl
QnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAg
fQotICAgIH0KKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZUltYWdlQnVm
ZmVyKHNpemUsIHNob3VsZEFjY2VsZXJhdGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7
Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZSkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZUlt
YWdlQnVmZmVyKGltYWdlKTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChJbWFnZUJ1ZmZlciYgaW1h
Z2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQorewor
ICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50
KGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmROYXRpdmVJbWFnZUZvckNsaWVudChD
YWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgcmV0
dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5maW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVk
SW1hZ2UsIGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZS5yZWxlYXNlUmVtb3RlQ2xpZW50KHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworfQorCitSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlQ3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorewor
ICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q2FjaGVOYXRp
dmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30K
IAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVy
KCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAg
IH0KK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUdldElt
YWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0
SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhOjpS
ZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAx
X3MpOworICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Cit9CiAKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hE
cmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
c2hvdWxkRHJhd0dQVUJhZGdlKCksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRp
c3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHNl
bnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1
ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgot
ICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGlt
YWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIEltYWdlQnVmZmVySWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdl
QnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZN
b3ZlKGhhbmRsZSkpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4
dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVy
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAg
ICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOworICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVz
aElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBmNDk2MTU4ZTdkNDBl
ZWIwNWFjMzk0MzRhZjI0NjMzYmFiYzdmMGVmLi4wMDAwOThkZTg2ZDYzYzJiOWZiOTU0NWE0NGE2
ZTQ4NjI1MDZlYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMjksMzEgKzI5
LDM1IEBACiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXpl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7Cit9CitjbGFzcyBG
bG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBS
ZW5kZXJpbmdNb2RlIDogdWludDhfdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNz
IFdlYlBhZ2U7CisKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKICAgICA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBj
cmVhdGUoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IGNyZWF0ZShXZWJQYWdlJik7CiAKICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwog
Ci0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9Ci0KICAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MSwyMSArNjUsMzMgQEAgcHVi
bGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKLSAgICB2b2lkIHJlbGVhc2VJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotCiAgICAgYm9vbCB3YWl0Rm9yQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgYm9vbCB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZm
ZXJGbHVzaENvbnRleHQoKTsKIAorICAgIC8vIFJlc291Y2UgY2FjaGUuCisgICAgdm9pZCBkcmF3
R1BVQmFkZ2UoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYg
dGV4dCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91bGRBY2Nl
bGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworICAg
IHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlQ2xp
ZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBNZXNzYWdl
cyB0byBiZSBzZW50LgorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVDcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Up
OworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDYWNoZU5hdGl2
ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gcmVtb3RlR2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3RlRmx1c2hE
cmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCiBwcml2YXRlOgotICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQoKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdlYlBhZ2UmKTsKIAogICAg
IC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgSW1hZ2VCdWZmZXJJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyKj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBtX2ltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90
ZVJlc291cmNlQ2FjaGU7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4KaW5kZXggMTJhN2JmOGRhNGM4MjU3MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdl
OGExMjAzZjI2ODY1MmEwMGZjMWY3YjE3ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RS
ZWZDb3VudGVkIHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpG
bG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6
OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVu
dGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpCisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXpl
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJG
bHVzaENvbnRleHQoV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2JmYTRmOGI4YTQ5NjlhNmIyM2VmMTA4ZDI3YWU4
OGRiN2FiMzFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMCwwICsxLDE5NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNh
Y2hlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgor
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUo
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViUGFnZSYg
cGFnZSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKQorICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6c2hvdWxkRHJhd0dQVUJhZGdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLmNvcmVQ
YWdlKCktPnNldHRpbmdzKCkuc2hvd0RlYnVnQm9yZGVycygpOworfQorCit2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGU6OmRyYXdHUFVCYWRnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJp
bmcmIHRleHQpCit7CisgICAgaWYgKCFzaG91bGREcmF3R1BVQmFkZ2UoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIEZsb2F0UmVjdCBib3JkZXJSZWN0ID0gY29udGFpbmVyUmVjdDsKKyAgICBib3Jk
ZXJSZWN0LmluZmxhdGUoLTEpOworICAgIGNvbnRleHQuZHJhd0dQVUJhZGdlKGJvcmRlclJlY3Qs
IGJvcmRlclJlY3QubWF4WE1pbllDb3JuZXIoKSwgY29sb3IsIHRleHQpOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVy
YXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAg
ICBpZiAoc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAgICAgbV9y
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdlLmdldCgpLCBpbWFnZS0+cmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2UtPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBp
bWFnZS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoYXV0byBpbWFnZSA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAg
ICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQoaW1hZ2UuZ2V0KCksIGltYWdlLT5yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlckhhc2hNYXAuYWRkKGltYWdlLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwg
aW1hZ2UuZ2V0KCkpOworICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlLCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldCgm
aW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJl
bW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVy
LT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKworUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBj
YWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VC
dWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNob3VsZCBoYXZlIGJlZW4gcmV0
dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworCisgICAgLy8gVGVs
bCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVu
ZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVt
b3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZW5zdXJlKGlt
YWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMpOworICAgICAg
ICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAKKyAgICBhZGRSZW1vdGVDbGll
bnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZU5hdGl2ZUltYWdlKGNvbnN0IFdl
YkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICAvLyBSZW1vdmUgdGhlIHJlc291
cmNlIGZyb20gdGhlIGNhY2hlLgorICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0g
bV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAudGFrZShpbWFnZSk7CisKKyAgICAvLyBUZWxsIHRo
ZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBwZW5kaW5n
IHJlcGxheWluZyBiYWNrLgorICAgIGlmIChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
ICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjphZGRSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgaWYgKCFyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFkZCB0aGUgInJlc291cmNl
IC0+IGNsaWVudCIgZGVwZW5kZW5jeSBpbiBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAu
CisgICAgYXV0byYgY2xpZW50cyA9IG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5lbnN1
cmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBbJl0geworICAgICAgICByZXR1cm4gUmVtb3Rl
Q2xpZW50c0hhc2hTZXQoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBjbGllbnRz
LmFkZChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPFJlbW90ZVJlc291cmNl
SWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIFZl
Y3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlQ2xpZW50c1RvQmVS
ZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVu
ZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRv
JiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgeworICAgICAgICBwYWlyLnZh
bHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKHBhaXIudmFs
dWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92
ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gYSBsaXN0IG9mIHRo
ZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUNsaWVu
dHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghbV9yZW1vdGVSZXNvdXJj
ZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuY29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSk7CisgICAgCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2Ug
LT4gY2xpZW50IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcCwgbW92ZSB0aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xp
ZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2Ug
ZnJvbSB0aGUgY2FjaGVkLgorICAgIGlmIChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAu
Y29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgbV9yZW1vdGVSZXNv
dXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLnRha2UocmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSk7CisgICAgZWxzZQorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICAvLyBSZW1v
dmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVS
ZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGZvciAoYXV0byByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFw
LCByZW1vdGVDbGllbnRJZGVudGlmaWVyKSkKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNsaWVu
dHNIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgLy8gUmVt
b3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIG1fcmVtb3Rl
UmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLgorICAgIGZvciAoYXV0byByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJj
ZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKSB7
CisgICAgICAgIC8vIFJlbW92ZSB0aGUgdW5yZWZlcmVuY2VkIHJlc291cmNlcyBmcm9tIG1fcmVt
b3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLgorICAgICAgICBtX3JlbW90
ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworICAgICAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1v
dmUgdGhpcyByZXNvdXJjZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90
ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3NDc3NjVjNDE5NzcyNDMyNDBi
YTZiOWI1MzBkMTQ2NzM2ZTMzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMCwwICsxLDg3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
ZEltYWdlQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI7CitjbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgUmVtb3RlUmVz
b3VyY2VDYWNoZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRJbWFnZUNsaWVudCB7CitwdWJsaWM6
CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwgV2ViUGFn
ZSYpOworCisgICAgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UoKSBjb25zdDsKKyAgICB2b2lkIGRy
YXdHUFVCYWRnZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5n
JiB0ZXh0KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxk
QWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsK
KyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZEltYWdlQnVmZmVyRm9y
Q2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENv
bnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmlu
ZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwor
CisgICAgdm9pZCByZWxlYXNlUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBS
ZW1vdGVDbGllbnRzSGFzaFNldCA9IEhhc2hTZXQ8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdl
YkNvcmU6OkltYWdlQnVmZmVyKiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsK
KyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6Ok5h
dGl2ZUltYWdlUHRyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIHVz
aW5nIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlQ2xpZW50c0hhc2hTZXQ+OworICAgIHVzaW5nIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIq
PjsKKworICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VQdHImIGltYWdlKSBvdmVycmlkZSB7IHJlbGVhc2VOYXRpdmVJbWFnZShpbWFn
ZSk7IH0KKworICAgIHZvaWQgYWRkUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVu
dElkZW50aWZpZXIpOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI+IHJlbW92ZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwJiwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOwor
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMoV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZUltYWdlQnVmZmVySGFz
aE1hcCBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcDsKKyAgICBSZW1vdGVOYXRpdmVJbWFnZUhh
c2hNYXAgbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDbGll
bnRzSGFzaE1hcCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXA7CisgICAgUmVtb3RlUmVz
b3VyY2VDbGllbnRzSGFzaE1hcCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNl
SGFzaE1hcDsKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCBtX3Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwOworICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKyAgICBXZWJQYWdlJiBtX3BhZ2U7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMTg4YmM1ZTllYjlkYjc0NDA1ZTA4ZjZl
MDU4MjNlYTNjMzdhODJhMS4uNTM2ZDZlOTVlMGY4NjRjZWY1OWIwY2JjYmE0ZWZlOGM1ODA4MmMy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTg3Nyw3ICs4NzcsNyBAQCBSZWZQdHI8RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURpc3BsYXlSZWZyZXNo
TW9uaXRvcihQbGF0ZgogUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgV2ViQ2hyb21lQ2xpZW50Ojpl
bnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kID0gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShtX3BhZ2UpOwogICAgIHJl
dHVybiAqbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410617</attachid>
            <date>2020-10-05 23:40:34 -0700</date>
            <delta_ts>2020-10-07 02:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217342-20201005234033.patch</filename>
            <type>text/plain</type>
            <size>182671</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlYWFjNDQxMTQ2ZjU4
NzZjNDY3ZGUwZmQzYjNmYWE0YjU3MTJjNC4uYmUzNzY3NDEyNGFkODc5MDQ1MmNjNzRkODE2Yzlh
MjNmM2Q4YTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMC0wNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gSW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB3b3JrIGlu
IHByb2dyZXNzIHBhdGNoLiBUaGUgZ29hbCBpcyB0byBnZXQgdGhlIEVXUyBib3RzIGNsZWFuIAor
ICAgICAgICBmaXJzdC4gVGhlbiBpdCBtYXkgYmUgc3BsaXQgaW50byBzbWFsbGVyIHBhdGNoZXMu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VX
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R1BVQmFkZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VQdHIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9O
YXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OnJlbW90ZVJlc291cmNlSWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjpuYXRpdmVJbWFnZVB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd05hdGl2ZUltYWdlOjppbWFnZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6b3B0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpk
ZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OlJlbW90ZUNsaWVudDo6flJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNsaWVudDo6ZmluZEltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVtb3RlQ2xpZW50OjpmaW5kTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZW1vdGVD
bGllbnQ6OndpbGxBcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6T2JzZXJ2ZXI6On5PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ok9ic2VydmVyOjp3aWxsQXBwZW5kSXRlbSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorCiAyMDIwLTEwLTA1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgZW5hYmxpbmcgc3VicGl4ZWwgQ1NTT00gdmFs
dWVzLCBpdCdzIG9mZiBieSBkZWZhdWx0IGV2ZXJ5d2hlcmUgYW5kIGtub3duIHRvIGJlIG5vdC1j
b21wYXRpYmxlIHdpdGggdGhlIHdlYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MTQ0MDBmZmNkYzQzZmI3YWUzODcx
NDg2Njc2ZjY4ZGZlOGU3ZjdhLi5mMmZlZTZjZjdkNjFiZDUzYjE4Y2IzMmY4ZjdkMDI1MDA0YWU1
OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMC0xMC0wNSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
Lmg6IFJlbW92ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRD
b21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Omdl
dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5h
dGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpk
cmF3R1BVQmFkZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdJbWFnZUJ1ZmZlckl0ZW0gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoSVBDOjplbmNvZGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OmVuY29kZU9wdGlv
bmFsTmF0aXZlSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdl
UHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5k
bGU+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkcmF3R1BVQmFkZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmRJbWFnZUJ1ZmZl
ckZvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZp
bmROYXRpdmVJbWFnZUZvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERy
YXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OnNob3VsZERyYXdHUFVCYWRnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmRyYXdHUFVCYWRnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6ZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVz
aENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5k
TmF0aXZlSW1hZ2VGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjphZGRSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmVuc3VyZVJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgY29uc3QpOgorCiAyMDIwLTEwLTA1ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgZW5hYmxpbmcgc3Vi
cGl4ZWwgQ1NTT00gdmFsdWVzLCBpdCdzIG9mZiBieSBkZWZhdWx0IGV2ZXJ5d2hlcmUgYW5kIGtu
b3duIHRvIGJlIG5vdC1jb21wYXRpYmxlIHdpdGggdGhlIHdlYgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggNTY1NmY3YjMwNzAzZGZlMzM1Mzk5ZWE4OWFiYzM1ZWQzMWQ0YzVkNy4uNDFiNjllYTViYzdk
Mjg0ZmJiYmYyMGM4Mzg4OTk3MjU2N2MxM2M0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTkw
LDYgKzExOTAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2Uu
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGlt
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0xMjAzLDYgKzEyMDQsNyBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGlt
ZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2Rl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmYwNDEwYTBlOGM3
OGZiZmMwZjcxYzIwZTQzMzRlMDEzNjUzMGM0Ni4uYzYwNDcxMTRjZjg2NTVlNTZiNWE2YWM2NGE2
YWRjOGZhMWRjNjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjE2Nyw2ICsyMTY3LDggQEAKIAkJNzI5OUJDNjgyM0Q2QTUz
RTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAw
QzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkJFRkEx
QTI1MUJFRkZFMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJFRkExOTI1MUJFRkZEMDBE
RDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJEQ0ExRTgyNTIzREZDMDAwQzlCMjBEIC8q
IE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEw
OEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUg
LyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdG
QzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAq
LzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNzBEMENF
NzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTk5MzIsNyArOTkzNCw5
IEBACiAJCTcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0FDMjNF
MUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0FEMjNFMUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1
ZmZlckNHQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1
ZmZlckNHQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkJFRkExOTI1
MUJFRkZEMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJEQ0ExRTYyNTIzREU1NTAwQzlCMjBEIC8q
IE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYxMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VY
VHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRzUkdC
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjIxQTJFOEQyRjAwNEM1
NjJBIC8qIEpTRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VY
VHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFQTA5RjcyM0ZDQ0IzRDAw
ODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYxOTcs
NiArMjYyMDEsNyBAQAogCQkJCTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0
aXZlSW1hZ2UuaCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1h
Z2UuaCAqLywKKwkJCQk3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIu
aCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJ
QjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYy
OUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2MjE0LDYgKzI2
MjE5LDcgQEAKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFu
Z2VzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8s
CiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTcyQkVG
QTE5MjUxQkVGRkQwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLywKIAkJ
CQkwNzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAog
CQkJCTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAog
CQkJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0z
MTE4MCw5ICszMTE4Niw3IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5M0E5
NzAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdF
REFBRkM5MTlBMkNDREMwMDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlv
bklubGluZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwRjQyMjUxN0NFNkUwMDlC
QTAzNCAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RkI0
N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBERTRE
MkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTE5NSw3
ICszMTE5OSw2IEBACiAJCQkJMkQyOUVDQ0ExOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNzAwMjMxOTJGRTgyQTAwQjA5
NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQy
OUVDQzgxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBMYXlvdXRJbnRl
Z3JhdGlvblJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTBGNDMyNTE3Q0U2RTAwOUJBMDM0
IC8qIERpc3BsYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBD
MUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDQwMjgzMjQ5QTdBNjIw
MEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTg4Niw2
ICszMTg4OSw3IEBACiAJCQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGluZUxpbmVS
dW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NTc3NUNFMjQxNDM3RDUwMDJERjFBMCAvKiBJbmxp
bmVQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY0MERBODIyNTEzMDMzQTAwRUMwNEI3
IC8qIElubGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDMzRjNCMjUyQUVFQ0QwMDgz
N0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYwRTUw
MjM5OTk0MjEwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25l
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGlu
ZVRleHRCb3guaCBpbiBIZWFkZXJzICovLApAQCAtMzI4NTQsOCArMzI4NTgsMTEgQEAKIAkJCQk2
RjBCOThCNTIzRjI2OEVDMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJveC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTQxODAyNTUyM0Q0NTQ5QjAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9u
Qm94VHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwM0I3QTIyNTFCMTE5MzAwMTlFODAwIC8q
IExheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NTFDNjM0
MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBMYXlvdXRJbnRlZ3Jh
dGlvbkxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkREMjM2MDg4RkUwMEZBNDM0NSAv
KiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDNC
N0EzMjUxQjExQzEwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBMYXlvdXRJbnRlZ3Jh
dGlvblJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0MyNTIxRDRBRjAwNzA4MURDIC8q
IExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTY2
NENGMjUyMUQ0RTIwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5
UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8qIExh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKQEAg
LTMzMTE4LDYgKzMzMTI1LDcgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFt
ZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkg
LyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyRENBMUU4MjUyM0RG
QzAwMEM5QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQx
NzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9u
QWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNDg4LDYgKzMzNDk2LDcgQEAKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZhaWxh
YmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQkVGQTFBMjUxQkVGRkUwMERE
NzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
M0ExNTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVO
b2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDc1OSw3ICszNDc2OCw2IEBACiAJCQkJ
RTFFRThCOTkyNDEzMTk1MDAwRTc5NEQ2IC8qIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxMkE5RjRBMjQ4QTk5RTIwMDNGMDZDOCAvKiBYUkludGVyYWN0
aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCODQyNDEzMTkxRjAwRTc5NEQ2IC8q
IFhSUmVmZXJlbmNlU3BhY2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTREMzNGM0IyNTJB
RUVDRDAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFFRThCNzcyNDEzMTkxRjAwRTc5NEQ2IC8qIFhSUmVmZXJlbmNlU3BhY2VUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUVFOEI3OTI0MTMxOTFGMDBFNzk0RDYgLyogWFJSZW5kZXJTdGF0ZUlu
aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4QjhEMjQxMzE5NTAwMEU3OTRENiAvKiBYUlNl
c3Npb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3Bw
CmluZGV4IDM5Mjk2YTg5OGI2YWUxMTU3MDIzZTA1NzFhMTcwZjJkNjUxODY0NjQuLmFiOTYwZGFm
ZWRlZjEyOTkzNTBhNjljYzRiMWYwMGY2OGIyMjlmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VC
aXRtYXAuY3BwCkBAIC02MDIsMTAgKzYwMiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlY29k
ZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAKKyAg
ICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBk
aWREcmF3KGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKICAgICBib29sIGNhbkRlc3Ryb3lE
ZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRl
LCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0
cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpIG92ZXJyaWRlIHsgfQor
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogPSBu
dWxscHRyKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggM2ZhMTgxN2E5ZDY2NjhmYjQzM2IxYmQ0NWM2MDg2
MmYwYzM4N2RkNi4uYjM5MmFlODE0YjlkZmNlY2QyM2QzZjkwOTczZTVjNmRkYTgzNmE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00MTEsNiAr
NDExLDE3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRlY29kZWRT
aXplQ2hhbmdlZChjb25zdCBJbWFnZSYgaW1hZ2UsIGxvCiAgICAgICAgIGNhY2hlZEltYWdlLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQoaW1hZ2UsIGRlbHRhKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6
Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKSB7
CisgICAgICAgIGlmICgmaW1hZ2UgIT0gY2FjaGVkSW1hZ2UtPmltYWdlKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJ
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIHZvaWQg
Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRpZERyYXcoY29uc3QgSW1hZ2UmIGlt
YWdlKQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpAQCAt
NDM0LDYgKzQ0NSwxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpp
bWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSQogICAgICAgICBjYWNoZWRJ
bWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJl
Y3QsIGRlY29kaW5nU3RhdHVzKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VP
YnNlcnZlcjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmIGltYWdlLCBj
b25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAgZm9yIChhdXRvIGNhY2hl
ZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZEltYWdlLT5uYXRpdmVJbWFn
ZVdpbGxCZURlc3Ryb3llZChpbWFnZSwgbmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hlZElt
YWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFn
ZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBt
X2NhY2hlZEltYWdlcykKQEAgLTY4OSw2ICs3MDYsMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6aW1h
Z2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUg
YW4KICAgICAgICAgbV9jbGllbnRzV2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcuY2xlYXIoKTsKIH0K
IAordm9pZCBDYWNoZWRJbWFnZTo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1h
Z2UmIGltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAgaWYg
KCZpbWFnZSAhPSBtX2ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVudD4gY2xpZW50V2Fsa2VyKG1fY2xpZW50cyk7
CisgICAgd2hpbGUgKENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQgPSBjbGllbnRXYWxrZXIubmV4
dCgpKQorICAgICAgICBjbGllbnQtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKG5hdGl2ZUlt
YWdlKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYg
aW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiB7CiAgICAgaWYgKCZpbWFnZSAhPSBtX2ltYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCAyYTAyYmU4
NWYxYTA1NTIyZjU5YjQ0YjVhYTI2N2FhOWY5N2Y4ZDdmLi5lNDdmMmEwOWYyMDM2NWNhYTg2ZWU0
NWUxYzQyNmQwOWY2YTJmZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtMTQ5LDEwICsxNDksMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGVu
Y29kZWREYXRhU3RhdHVzQ2hhbmdlZChjb25zdCBJbWFnZSYsIEVuY29kZWREYXRhU3RhdHVzKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25n
IGxvbmcgZGVsdGEpIGZpbmFsOworCisgICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAg
ICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBib29sIGNh
bkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGlu
Z1N0YXR1czo6SW52YWxpZCkgZmluYWw7CisgICAgICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVE
ZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpIGZpbmFsOworICAg
ICAgICAKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50
UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUo
Y29uc3QgSW1hZ2UmKSBmaW5hbDsKIApAQCAtMTY0LDYgKzE2OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJik7CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERh
dGEoY29uc3QgSW1hZ2UmKTsKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1h
Z2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVs
bHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9p
ZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJik7CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50
UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFn
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVu
dC5oCmluZGV4IDI5NWU2NTZhYjFlYmMxYjkwZmQxYWNlNzgzZDM0MTljMmY2OWEwOGIuLjMzYWNj
ZjkyNjkyODFmNzUxNWY4ZGU2YjY5MTM0NmU3OTRhMGI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMu
aCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ2LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBuZXcgZGVj
b2RlZCBmcmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUgb3Igd2hlbiBhbiBhbmlt
YXRlZCBpbWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IGZyYW1lLgogICAgIHZp
cnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZElt
YWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVj
dCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0dXJuIFZpc2libGVJblZp
ZXdwb3J0U3RhdGU6Ok5vOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2ls
bEJlRGVzdHJveWVkKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0
NzZhMzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjEyZTdjYzNhN2MwYjljZTQ1
NzYwZDA0ZjdmM2M2YTY5MTIyODNlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0
cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUs
MjQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorc3RhdGljIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiBp
bWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit7CisgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1h
Z2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgorICAgIEludFNpemUgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJbWFnZSk7CisgICAgaWYgKG9wdGlvbnMu
b3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQorICAgICAgICBzdWJzYW1wbGVkSW1h
Z2VTaXplID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgLy8g
c3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwg
c28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCisgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNp
emUgIT0gc3JjU2l6ZSkKKyAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0
LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdl
U2l6ZSkpOworCisgICAgaWYgKGltYWdlLmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2Uu
aW1hZ2VPYnNlcnZlcigpLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIG5hdGl2ZUlt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRp
b25zKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUlt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRp
b25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
ZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3QuaXNFbXB0eSgpKQpAQCAtMjkyLDkgKzMx
MSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9w
dGlvbnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRh
dGlvbjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRpb24pKSwg
eyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCp0aGlz
LCBpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShvcmllbnRh
dGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXpl
KHNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgq
dGhpcywgaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3Jp
ZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVz
ID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApp
bmRleCAyNjVjYjU3ZDM5Mzk1MDM4YTYyOWYzNWJjZDY4NjNhYTQ0NDM5YzY3Li5lODRjNDNmOWI3
MWVjNTlkNGY4YjJhODczZWIxZDYwMDgzMjI4NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQyNSw2ICs0MjUs
NDAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJlc3RvcmVQbGF0Zm9y
bVN0YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R1BVQmFkZ2UoY29uc3Qg
RmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBiYWRnZVBvc2l0aW9u
LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnRoaXMpOworCisgICAgc2V0U2hvdWxkQW50
aWFsaWFzKGZhbHNlKTsKKyAgICBzZXRTdHJva2VDb2xvcihjb2xvcik7CisgICAgc3Ryb2tlUmVj
dChjb250YWluZXJSZWN0LCAwLjUpOworCisgICAgY29uc3QgdW5zaWduZWQgZm9udFNpemUgPSAx
MDsKKyAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJBcmlhbCIpOworICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRTcGVjaWZpZWRTaXplKGZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0
ZWRTaXplKGZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxl
Y3Rpb25WYWx1ZSg1MDApKTsKKworICAgIEZvbnRDYXNjYWRlIGNhc2NhZGUoV1RGTW92ZShmb250
RGVzY3JpcHRpb24pKTsKKyAgICBjYXNjYWRlLnVwZGF0ZShudWxscHRyKTsKKworICAgIFRleHRS
dW4gdGV4dFJ1bih0ZXh0KTsKKyAgICBmbG9hdCB0ZXh0V2lkdGggPSBjYXNjYWRlLndpZHRoKHRl
eHRSdW4pOworICAgIAorICAgIEZsb2F0UmVjdCBiYWRnZVJlY3QoYmFkZ2VQb3NpdGlvbiwgRmxv
YXRTaXplKHRleHRXaWR0aCArIDIsIGZvbnRTaXplICsgMikpOworICAgIGlmIChiYWRnZVBvc2l0
aW9uLngoKSA9PSBjb250YWluZXJSZWN0Lm1heFgoKSkKKyAgICAgICAgYmFkZ2VSZWN0LnNldFgo
YmFkZ2VQb3NpdGlvbi54KCkgLSBiYWRnZVJlY3Qud2lkdGgoKSk7CisKKyAgICBpZiAoYmFkZ2VQ
b3NpdGlvbi55KCkgPT0gY29udGFpbmVyUmVjdC5tYXhZKCkpCisgICAgICAgIGJhZGdlUmVjdC5z
ZXRZKGJhZGdlUG9zaXRpb24ueSgpIC0gYmFkZ2VSZWN0LmhlaWdodCgpKTsKKworICAgIGZpbGxS
ZWN0KGJhZGdlUmVjdCwgY29sb3IpOworICAgIAorICAgIHNldEZpbGxDb2xvcihDb2xvcjo6d2hp
dGUpOworICAgIGNhc2NhZGUuZHJhd1RleHQoKnRoaXMsIHRleHRSdW4sIEZsb2F0UG9pbnQoYmFk
Z2VSZWN0LngoKSArIDEsIGJhZGdlUmVjdC55KCkgKyAxICsgZm9udFNpemUpKTsKK30KKwogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC03MjksNiArNzYzLDE5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zLCBjYWNoZWRJbWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF0
Zm9ybURyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGRy
YXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7
CkBAIC03NDUsNyArNzkyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3Ro
aW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9j
dW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25z
LmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzU3LDcgKzgwNCw3IEBAIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYg
KG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1f
aW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc3MCw3ICs4MTcsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwg
JiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRy
YXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3Is
IGhSdWxlLCB2UnVsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0
Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpAQCAtNzk3LDYgKzg0NCw5
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAgICAgIHJldHVy
bjsKKwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
ICAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMDg4ZjJlNTM5NmI5YjQzODU4ODdlYzAxZmFjYThlN2RkOTBlMTgwNy4uNTFmY2E0
ZDYyOGIzOWIxMGFhOGVmYjRmYjRlODE4Y2JjMTEyZjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg2LDYgKzg2LDcg
QEAgY2xhc3MgR2x5cGhCdWZmZXI7CiAjZW5kaWYKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwor
Y2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGll
bnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwpAQCAtMzMzLDEwICszMzQsNiBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlOyB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkgfHwgVVNFKENB
SVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOwotI2VuZGlmCi0KICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKICAg
ICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigp
OwpAQCAtMzU1LDYgKzM1Miw4IEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBzdGFja1Np
emUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLnNpemUoKTsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkcmF3R1BVQmFkZ2UoY29uc3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25z
dCBGbG9hdFBvaW50JiBiYWRnZVBvc2l0aW9uLCBjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYg
dGV4dCk7CisgICAgCiAgICAgLy8gVGhlc2UgZHJhdyBtZXRob2RzIHdpbGwgZG8gYm90aCBzdHJv
a2luZyBhbmQgZmlsbGluZy4KICAgICAvLyBGSVhNRTogLi4uZXhjZXB0IGRyYXdSZWN0KCksIHdo
aWNoIGZpbGxzIHByb3Blcmx5IGJ1dCBhbHdheXMgc3Ryb2tlcwogICAgIC8vIHVzaW5nIGEgMS1w
aXhlbCBzdHJva2UgaW5zZXQgZnJvbSB0aGUgcmVjdCBib3JkZXJzIChvZiB0aGUgY29ycmVjdApA
QCAtMzgyLDYgKzM4MSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ry
b2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSwgQ2Fj
aGVkSW1hZ2UqID0gbnVsbHB0cik7CisKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1
bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0p
OwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmll
bnRhdGlvbjo6RnJvbUltYWdlIH0pOwpAQCAtNjQ5LDYgKzY1MCw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBj
b25zdCBDb2xvciYpOwogCisgICAgdm9pZCBwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKTsKKwogICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlh
c2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIENvbG9yJik7
CiAKICAgICBmbG9hdCBkYXNoZWRMaW5lQ29ybmVyV2lkdGhGb3JTdHJva2VXaWR0aChmbG9hdCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGJjOWMxYzJlY2MwY2JmYzM4MjZhYTFlMDE5MTMxYzg5
MzcyZDNmZS4uMzQzN2M5YjhkOGExMGE1NGRlNmZlZGZkMjE0NThkNzk0MjM0YjI1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Miw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVG
YWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykg
fHwgVVNFKERJUkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgPSAwOwotI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNoZWRJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBk
MTQ2NDkyYzRhOGRmOTM1Y2FmOTRiOWZiOTU1OTA5YWFkMWNiYWYwLi5kYmUwMjVlZTllMWE0NDBm
MDJlYTk2NjRhMzRmOThhMGY2YzUxYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OwogY2xh
c3MgRHJhd2luZ0NvbnRleHQ7CiB9CiAKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JikgeyB9CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNl
VHJhbnNmb3JtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
T2JzZXJ2ZXIuaAppbmRleCBmMDMyNDg0NzI4MzY3MzkwYjMwNTljZjU4Y2UxMjBhYjM3MmEzNTU1
Li4xN2Q5MjdhM2VlOWQ2MGQxZDA0OGZjMGNjNTJmMDMzOWU0ODQzYjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC00NSwxMCAr
NDUsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5n
ZWQoY29uc3QgSW1hZ2UmLCBFbmNvZGVkRGF0YVN0YXR1cykgeyB9OwogICAgIHZpcnR1YWwgdm9p
ZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcgZGVsdGEpID0gMDsK
IAorICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRE
cmF3KGNvbnN0IEltYWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNv
ZGVkRGF0YShjb25zdCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2
YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVk
KGNvbnN0IEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSA9IDA7CisgICAgCiAgICAgdmly
dHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0ID0gbnVsbHB0cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NzUwMzIyMzlhNWQ1YWJh
YTc2M2Y3YTI2M2VkN2NiMjQ1OTgyNjUyLi40NTUxNWM1OWExZmYyODRjZDhkMjgwMzgzN2IwODVi
NTAyMmQ2YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCkBAIC0xMzAsOCArMTMwLDEwIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmRlc3Ry
b3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSkKICAg
ICBBU1NFUlQoZnJhbWVDb3VudCA8PSBtX2ZyYW1lcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGZyYW1lQ291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgaWYg
KGluZGV4ID09IGV4Y2x1ZGVGcmFtZSkKKyAgICAgICAgaWYgKGluZGV4ID09IGV4Y2x1ZGVGcmFt
ZSB8fCAhbV9mcmFtZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQorICAg
ICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpLT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ry
b3llZCgqbV9pbWFnZSwgbV9mcmFtZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpOwogICAgICAgICBk
ZWNvZGVkU2l6ZSArPSBtX2ZyYW1lc1tpbmRleF0uY2xlYXJJbWFnZSgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggNmIy
ZDgxZTM1YjA4Y2Y3NGY0ZjM2MWFlYmM3NGYzMTI5YzdkOWI3Zi4uMDczZTdkYTJkMDcwMDhhYWMw
ZTZlNGRhYTM5MjAxZGZlY2Q2MTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0yOCwyMSArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7
Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShX
SU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFwLmgiCi0jZW5kaWYKLQotI2lmIFVTRShESVJF
Q1QyRCkKLSNpbmNsdWRlICJDT01QdHIuaCIKLSNpbmNsdWRlIDxkMmQxLmg+Ci0jaW5jbHVkZSA8
d2luY29kZWMuaD4KLSNlbmRpZgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMjggKzM3LDEyIEBAIGNsYXNzIEZsb2F0UmVjdDsKIGNs
YXNzIEludFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKLSNpZiBVU0UoQ0cpCi10eXBl
ZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShESVJF
Q1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlm
IFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQ
dHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRp
dmVJbWFnZVB0cjsKLSNlbmRpZgotCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5hdGl2ZUltYWdl
U2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRD
b2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwogCiB2b2lkIGNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotY2xhc3MgTmF0aXZl
SW1hZ2VIYW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOwotfTsKLSAg
ICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0MDcxZDA3Yzk1
ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJl
ZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNF
KFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBO
YXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYgQ09NUHRyPElEMkQx
Qml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5cGVkZWYgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0UoV0lOR0RJKQordHlw
ZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbmRpZgorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2OTBiZWNkYzhiNGFhZTg1MjRiM2Y2ODEw
ZmI5MjY0Yzg1YzQ5OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYTEwNDY1NmNiNWQ1ZGRl
YTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1NDg1NDQ4ZjM0YWE3Nzdh
ZmUwNGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE2ICsx
MjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZv
cm1Db250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0
ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQo
KSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5h
bHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAppbmRleCAzZDQ2YTUwNTNiMTdjOWEzZWY5ZjgyYjIwYjRkOTcxZjAyYTU0
M2U2Li44MmQyN2JkNjVhOGU2MGJkYTc2OTI2MzMyZWFiNGIyYTAzYTRjNTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI3OSwxMyArMjc5LDE5IEBAIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdUaWxlZEltYWdlKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdU
aWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2Fj
aGVkSW1hZ2UqKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0
YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd05hdGl2ZUlt
YWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsg
b3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCAzMWJhNzE2MTdlZmE0NTZj
MTFmMDQzYTE5YTQ0OTNmZDU4NWIyM2U1Li4wYmZmNzgxN2VkYTVkMmQ5ZWUzYjFjNzQ4ZWFkMjk5
YzhiMzFmYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsNyAr
NzQsOSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNo
ZWRJbWFnZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA2M2ZiNWRkNjFiYWJjY2NmNzA5
MDRlNTZkMmY5ZDRlNWFkNThjYWM1Li5hY2IxZTRlNGNhYjk2YmU0YmNkMDlmZmM1YTI4Y2U5OTgx
NmZmMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yODAsMTYgKzI4MCwxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2Vy
VG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUlt
YWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsK
LSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAjaWYgIUxP
R19ESVNBQkxFRAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggNWNjNWMyMDdiNDRhNDgzNWJlMmUwODAyOGEz
YTcxMDk1YTU1ZTFlMC4uN2MyOTZjOWNmNzc3YThiNGE4M2VlNzI4M2RlYzFmNDlhNTBjNzFmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
SW1hZ2VDRy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCkBAIC02OSwyMSArNjgsNiBAQCBDb2xvciBuYXRp
dmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CiAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUg
LyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICAvLyBT
dWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhh
biBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VT
aXplKGltYWdlKTsKLSAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVp
Z2h0KCkpCi0gICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXpl
LnRyYW5zcG9zZWRTaXplKCk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRl
cyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUg
c3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVj
dDsKLSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1
c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBG
bG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZh
Y3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2Up
CiB7CiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDYxMDY0YTg4NjNiNDBmMTkwNWRhYTQwNTMz
ODdjMjI0YjY0MjNhOGEuLmYwMDgyOTk4NzAxNmFkMmM1ZGMxZTU4ZWJjMGE5ODNlZTBiMTM0YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw5ICs2Miw4IEBAIGVudW0gY2xhc3MgSXRl
bVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCiAg
ICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVT
RShESVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCi0jZW5kaWYKKyAgICBEcmF3SW1hZ2VC
dWZmZXIsCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXgg
MjNjYzA3ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4Ny4uY2IxYmI2MDE1ZDU0NzMw
MmFhNjRkMGUzMzhjNmZlMmY1ZmVmOThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRleHQ6OkRyYXdp
bmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBvYnNlcnZlcikKK0RyYXdpbmdD
b250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpSZW1vdGVDbGllbnQqIHJl
bW90ZUNsaWVudCkKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5
TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3Bs
YXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxv
YXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBvYnNlcnZlcik7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlzcGxh
eUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXpl
KSwgaW5pdGlhbENUTSwgcmVtb3RlQ2xpZW50KTsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJhZDgxNWE1
MDA4MWI3ZTdhYjEwODEzMTcxN2ZkZTU0My4uZTU1MmFkNjA4YjM3NjZkZDJhMTJkMjU2YjlhNzQ0
Y2FhYWExY2Q3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBE
cmF3aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6
T2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6UmVtb3RlQ2xpZW50KiA9IG51bGxwdHIpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3
aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWNv
cmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCmluZGV4IDg2NzJiMWI0NzA4NDc2OTAxODUwODQ5NTlhNzdhZjQyZmRiODA0M2YuLjRmYmU0
ZjYyYjBiY2YxYWI5OTE0ZWZiNjlkY2NkYzJjMTgyMTA3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNr
ZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8
QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2NsYXNzIEltYWdlQnVm
ZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2lu
ZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5
cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgogCiAgICAgSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBG
bG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92
ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFs
RHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4
dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAgewogICAgIH0KIAot
ICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBtX2RyYXdp
bmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykKKyAg
ICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVyOjpSZW1vdGVDbGll
bnQqIHJlbW90ZUNsaWVudCA9IG51bGxwdHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChz
aXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHJlbW90ZUNsaWVudCkKICAgICB7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZGJmMTg4
NGEyMWEzNDlmNmFhMDMzMzdmNzZlZDU5MjkyM2MwNGRlMy4uZTIyMmMxYzk1NDhhNzFlZGI4MWZk
ODk2MGJkMWE4OWI4YWY1YTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNp
bmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lm
IFVTRShDRykKQEAgLTEwNSwxMCArMTA0LDEwIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhj
b25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxl
ZEltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6
CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0
ZW0pKTsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUlt
YWdlPihpdGVtKSk7Ci0jZW5kaWYKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXplb2Yo
ZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVj
dDoKQEAgLTcwMCwzMiArNjk5LDIyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKICAgICByZXR1
cm4gdHM7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQot
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlVHlw
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZSkKLSNpZiBVU0UoQ0cpCi0gICAgLy8gRklYTUU6IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2UgZm9y
IENhaXJvLgogICAgICwgbV9pbWFnZShpbWFnZSkKLSNlbmRpZgogICAgICwgbV9pbWFnZVNpemUo
aW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3Ny
Y1JlY3Qoc3JjUmVjdCkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewotI2lmICFVU0UoQ0cp
Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKLSNlbmRpZgogfQogCiBEcmF3TmF0aXZlSW1hZ2U6
On5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0
aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dCk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobmF0aXZlSW1hZ2VQdHIoKSk7CisgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2VQdHIoKSwgbV9pbWFnZVNpemUsIG1fZGVz
dGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0
ZW0pCkBAIC03MzYsNyArNzI1LDMyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKICAgICByZXR1cm4g
dHM7CiB9Ci0jZW5kaWYKKworRHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZmZXIoUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3SW1h
Z2VCdWZmZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1f
c3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdJ
bWFnZUJ1ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9pZCBEcmF3SW1h
Z2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8gU2hvdWxk
IGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERy
YXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2Ut
aWRlbnRpZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0
czsKK30KIAogRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0dGVybikKQEAgLTE0MjcsOSAr
MTQ0MSw4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8
ICJkcmF3LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6
IHRzIDw8ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1RpbGVkU2NhbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFr
OwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7Ci0jZW5kaWYKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0
ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJl
Y3QiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZTogdHMgPDwgImRyYXctbGlu
ZSI7IGJyZWFrOwpAQCAtMTUyOCwxMSArMTU0MSwxMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3VGlsZWRTY2Fs
ZWRJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93
bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGRvd25jYXN0
PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRl
bSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXgg
ZjA1NTg2OWUxN2FhYTk2NjRlYjUzZmIxYmVlNzk1ODA2NDI4ZDM2My4uZWJlNWFjOTQ3ZmVlOTNm
MTZiYzU5OWJhMjQ0YThlNjJkN2RmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgogCkBAIC0xNDMwLDQ1ICsxNDMxLDEyNCBAQCBPcHRpb25hbDxSZWY8RHJhd1Rp
bGVkU2NhbGVkSW1hZ2U+PiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZQogICAgIHJldHVybiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6Y3JlYXRlKCppbWFnZUhhbmRs
ZS0+aW1hZ2UsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKnRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCAqaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi0jaWYgVVNFKENHKSB8fCBVU0Uo
Q0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBE
cmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNy
ZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHVzaW5nIEltYWdlVHlw
ZSA9IFZhcmlhbnQ8TmF0aXZlSW1hZ2VQdHIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisK
KyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IEltYWdlVHlwZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2
ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAg
ICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAK
KyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI+KG1faW1hZ2UpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4obV9pbWFnZSk7
CisgICAgfQorCisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQdHIoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE5hdGl2ZUltYWdlUHRyPiht
X2ltYWdlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RG
OjpnZXQ8TmF0aXZlSW1hZ2VQdHI+KG1faW1hZ2UpOworICAgIH0KKworICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2l6ZTsgfQogICAgIEZsb2F0UmVjdCBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGlu
YXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3TmF0
aXZlSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBEcmF3TmF0aXZlSW1hZ2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZVR5cGUmLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0
ciBtX2ltYWdlOwotI2VuZGlmCisgICAgSW1hZ2VUeXBlIG1faW1hZ2U7CiAgICAgRmxvYXRTaXpl
IG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9h
dFJlY3QgbV9zcmNSZWN0OwogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07
CiAKK2NsYXNzIERyYXdJbWFnZUJ1ZmZlciA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxEcmF3SW1hZ2VCdWZmZXI+IGNyZWF0ZShSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3SW1h
Z2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd0ltYWdl
QnVmZmVyKCk7CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0K
KyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAg
RmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25S
ZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fb3B0aW9uczsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToK
KyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0
OworICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9v
cHRpb25zOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd0ltYWdlQnVm
ZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJl
Y3Q7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVm
ZmVyPj4gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBP
cHRpb25hbDxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsKKyAgICBkZWNvZGVyID4+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0
aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzb3VyY2U7CisgICAgZGVjb2RlciA+PiBz
b3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKKyAgICBkZWNvZGVy
ID4+IG9wdGlvbnM7CisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKm9wdGlvbnMpOworfQorCiB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZUhhbmRsZSBo
YW5kbGUgeyBtX2ltYWdlIH07Ci0gICAgZW5jb2RlciA8PCBoYW5kbGU7Ci0jZW5kaWYKKyAgICBl
bmNvZGVyIDw8IG1faW1hZ2U7CiAgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKICAgICBlbmNv
ZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OwogICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OwpAQCAt
MTQ3OCwxMiArMTU1OCwxMCBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8UmVmPERy
YXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0jaWYgVVNFKENHKQotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlSGFuZGxlPiBoYW5kbGU7
Ci0gICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFoYW5kbGUpCisgICAgT3B0aW9uYWw8
SW1hZ2VUeXBlPiBpbWFnZTsKKyAgICBkZWNvZGVyID4+IGltYWdlOworICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYKIAogICAgIE9wdGlvbmFsPEZs
b2F0U2l6ZT4gaW1hZ2VTaXplOwogICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOwpAQCAtMTUwNSwx
NCArMTU4Myw4IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1h
Z2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0ciBp
bWFnZSA9IGhhbmRsZS0+aW1hZ2U7Ci0jZWxzZQotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0g
bnVsbHB0cjsKLSNlbmRpZgotICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFn
ZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKKyAg
ICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVz
dGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQotI2VuZGlmCiAKIGNsYXNzIERy
YXdQYXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKQEAgLTI5MjQsMTEgKzI5
OTYsMTIgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBk
b3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKLSNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3TmF0
aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0lt
YWdlQnVmZmVyPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzExMiwxMiArMzE4NSwxNCBAQCBPcHRpb25hbDxSZWY8
SXRlbT4+IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBp
dGVtID0gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAg
ICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgaWYgKGF1dG8gaXRl
bSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJy
ZWFrOwotI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAg
ICBpZiAoYXV0byBpdGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0p
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAg
ICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7
CkBAIC0zMjcwLDkgKzMzNDUsOCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd0dseXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d1RpbGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d1RpbGVkU2NhbGVkSW1hZ2UpCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQotI2VuZGlmCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5lKQpAQCAtMzMzMSw5ICszNDA1
LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFn
ZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2Us
Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKLSNlbmRpZgogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCmluZGV4IGJkMDQzOGM2YTRiMjU2Yzg4NTZiYjEyOWEzYWI1ZmEyM2U3OGRjOGEuLmY2ODU5
NzA5YzBlMjk4MGI0YTZiYjU5N2NmYzdmNTc4MmFiN2MwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMzcsMTAgKzM4LDEwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBPYnNlcnZlciogb2JzZXJ2ZXIp
CitSZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
LCBSZW1vdGVDbGllbnQqIHJlbW90ZUNsaWVudCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwo
Y29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKQogICAgICwgbV9kaXNwbGF5
TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX3Jl
bW90ZUNsaWVudChyZW1vdGVDbGllbnQpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlM
aXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7
CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xp
cCB9KTsKQEAgLTUyLDE1ICs1MywxNSBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBMT0co
RGlzcGxheUxpc3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0
LmRlc2NyaXB0aW9uKCkuZGF0YSgpKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6cHV0SW1hZ2VEYXRh
KFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNv
cmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURh
dGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKIHsKLSAgICBhcHBlbmRJdGVtKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VE
YXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKKyAgICBhcHBlbmRJdGVtKFB1
dEltYWdlRGF0YTo6Y3JlYXRlKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQ
b2ludCwgZGVzdEZvcm1hdCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbShj
b25zdCBJdGVtJiBpdGVtKQogewotICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29ic2Vy
dmVyLT53aWxsQXBwZW5kSXRlbShpdGVtKTsKKyAgICBpZiAobV9yZW1vdGVDbGllbnQpCisgICAg
ICAgIG1fcmVtb3RlQ2xpZW50LT53aWxsQXBwZW5kSXRlbShpdGVtKTsKIAogICAgIGlmIChpdGVt
LmlzRHJhd2luZ0l0ZW0oKQogI2lmIFVTRShDRykKQEAgLTEzNiwxMyArMTM3LDM0IEBAIEltYWdl
RHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVjb3Jk
OwogfQogCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLXZvaWQg
UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKIHsKKyAgICBpZiAobV9yZW1vdGVD
bGllbnQgJiYgY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyID0gbV9yZW1vdGVDbGllbnQtPmZpbmROYXRpdmVJbWFnZSgqY2FjaGVkSW1hZ2Us
IGltYWdlKSkgeworICAgICAgICAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxE
cmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7
CisgICAgICAgICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3du
Y2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJ
dGVtRXh0ZW50KG5ld0l0ZW0pOwogfQotI2VuZGlmCisKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1h
Z2VQYWludGluZ09wdGlvbnMpCit7CisgICAgaWYgKCFtX3JlbW90ZUNsaWVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0g
bV9yZW1vdGVDbGllbnQtPmZpbmRJbWFnZUJ1ZmZlcihpbWFnZSkpIHsKKyAgICAgICAgaW1hZ2Uu
Zmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRv
d25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMpKSk7CisgICAgICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAogdm9pZCBSZWNv
cmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZDI3MGM1ZDkwOGFjNjhkNzgwODM2M2Ji
YTkxYjJlNzYxYWVkYzkyYi4uOTVjYWM2N2IyZWYxYzQzYTk2YWIxZWZmYmNhODgyMGViMTMzNmUy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJ
bXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNpbmNs
dWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNTMsMjAgKzU0LDIxIEBAIGNsYXNz
IFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1Ymxp
YzoKLSAgICBjbGFzcyBPYnNlcnZlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFw
aGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgT2Jz
ZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgY2xhc3MgUmVtb3RlQ2xpZW50IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgflJlbW90ZUNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciBmaW5kSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImKSB7IHJl
dHVybiB7IH07IH0KKyAgICAgICAgdmlydHVhbCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmlu
ZE5hdGl2ZUltYWdlKENhY2hlZEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IHJldHVy
biB7IH07IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0m
KSB7IH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29u
dGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBSZW1vdGVDbGll
bnQqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3JkZXIoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVz
dEZvcm1hdCk7CiAKICAgICBzaXplX3QgaXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5TGlzdC5pdGVtQ291bnQoKTsgfQogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lk
IHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07Ci0gICAgfTsKLQogcHJpdmF0ZToKICAg
ICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTEwMiw5ICsxMDQsOSBAQCBwcml2YXRl
OgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0jZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmLCBDYWNoZWRJbWFnZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKQEAgLTE4Myw3ICsxODUs
NyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKICAgICBE
aXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBPYnNlcnZlciogbV9vYnNlcnZlcjsKKyAg
ICBSZW1vdGVDbGllbnQqIG1fcmVtb3RlQ2xpZW50OwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0
ZSwgMzI+IG1fc3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IGNlYTJhNmVhMDQ0NTM0ZmY0NTQ0
ZWEyMTA5YzI2MTdkNzk3Y2EyZjEuLjFiYzIyNmMzOTBiYWRjZGFkMzMxYWYyNDlmNTU2MTRmMTNh
NTM1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuY3BwCkBAIC01NDksNyArNTQ5LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXQKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdy
YXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKikKIHsKICAgICBz
dHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlv
bkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewogICAgICAgICB2
aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CkBAIC01NzAsNiArNTcwLDEyIEBA
IHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0
aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkp
OwogfQogCitib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdQYXR0ZXJu
IGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZGUyNGFiOGJkNTI0
MzJjZTI5M2E4MGY2YjRmOTg2MGYyMjJmYTdmZi4uYTI5NzIwNjFjYTgzOGQ2ZDUyZTU1YzYzMzlh
N2Q5M2I0YjAyM2M3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjcsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdl
YkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmLCBXZWJDb3JlOjpDYWNoZWRJbWFnZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0lt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0
dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCAzNzQwNzE3MTViY2I3OTFkNTg5ZDUwZDk5YjI5
YzY2YjAxMGI3MDgxLi41N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTIwNywxNiArMjA3LDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6
OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRy
PElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6
OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNo
YWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTI0N2E3YWQ0Y2Qy
OTUzOGU0ZWFmNDBiZDgwMzY5Njg2MDA4Yjg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKLQotI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKLQotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgot
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1h
Z2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICA6IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAs
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKGltYWdlQnVmZmVySWRlbnRpZmllcikKLXsKLX0KLQot
dm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNyZWF0ZUJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgaGFuZGxlKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwot
fQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1
c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLXsK
LSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50
aWZpZXIsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyZTkyMGVmZGRjMTc5ZjYzZmQ0ZmQyNGJjZjc5MTMyNDEwOTVlNjM1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
Ci0KLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKLSNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmll
ci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90
OwotY2xhc3MgSW1hZ2VEYXRhOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotCi1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkgewotcHVibGljOgotICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eSgpID0gZGVmYXVsdDsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJl
IHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluLgot
ICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25z
dCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
KTsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluLgotICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUpOwotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyKTsKLQotcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIEltYWdlQnVmZmVySWRl
bnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
aW5kZXggODFiODk3OGQwZTc5MTE1N2Y5YzdlNDk3MDM5ODE3ZTQ3OTU5ZTUxNC4uNWIzYTg3MTJl
ZmMxNGMyZjQ3ZWJhNGIyNWM1ZDJjNmJiODk4N2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBA
IC0yNywyOSArMjcsMjkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUg
IlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29uY3JldGVJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RS
ZXBsYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6
OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxh
eWVyOjpEZWxlZ2F0ZSB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdl
YkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsK
ICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dDsKICAgICB1c2luZyBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOworICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmll
ciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHksIGltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJl
bW90ZUltYWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tl
bmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIFJl
bW90ZUltYWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tl
bmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQog
ICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCkpCi0gICAg
ICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7
Ci0gICAgICAgIGNyZWF0ZUJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tl
bmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2Vu
ZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVtb3RlQ3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5i
YWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNv
bG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSgpCkBAIC02MSw5ICs2MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQ7Ci0g
ICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKLQogICAgIHZv
aWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGRpc3BsYXlM
aXN0Lml0ZW1Db3VudCgpKSB7CkBAIC03MiwyNyArNjksMTggQEAgcHJpdmF0ZToKICAgICAgICAg
fQogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgbV9iYWNrZW5kLT5m
bHVzaENvbnRleHQoKTsKLSAgICAgICAgY29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmll
cik7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRh
KFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAgfQotCi0g
ICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChpdGVtLnR5cGUo
KSAhPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKSB7CisgICAgICAgICAgICBhdXRv
JiBwdXRJbWFnZURhdGFJdGVtID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1
dEltYWdlRGF0YSY+KGl0ZW0pOworICAgICAgICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0
YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1h
Z2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dElt
YWdlRGF0YUl0ZW0uZGVzdEZvcm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVtKTsKLSAgICAgICAgcHV0SW1h
Z2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5p
bWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0u
ZGVzdFBvaW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZvcm1hdCgpKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5h
cHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CisgICAgCisgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCBkYmI1NWJhM2MyMjBkZTg2ZjE4YTUzM2NmYTA4NzE4ZjM4OTI0ZjA4Li4zMGI1ZGMz
NGQwNDA2OGQ4M2Q2ZjQ4NzQwNzlhZmZlNTE2Y2EwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDU5ICs2Niw0NiBAQCB1aW50
NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJ
bnQ2NCgpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK2Jvb2wgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNlSXRlbShEaXNwbGF5TGlzdDo6SXRl
bSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8qIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Ci0g
ICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVy
SWRlbnRpZmllcikpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVBY2NlbGVyYXRlZCkgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0g
ICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVy
SWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlQWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVVbmFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5h
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkg
ewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5hcHBseVJlc291cmNlSXRlbShpdGVtLCBj
b250ZXh0KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIgbWVz
c2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAgICBib29s
IGZvdW5kID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZl
cklkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IFdURk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdl
QnVmZmVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQs
IHNyY1JlY3QpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVy
ZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKLSAgICB9CisgICAgbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuY3JlYXRlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3
aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29u
dGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAg
ICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxp
c3QsIHNob3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5n
Q29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIs
IEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdl
QnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBmbHVzaElk
ZW50aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIHNob3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBpbWFnZURhdGEgPSBtX3JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7Cisg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA2
NzY0YWMxMGM1ZTdlMDJhNGM5Nzg3N2I5YzVlNTVjYTBiNzhjYjFlLi4wNjIyOGZlZjk0ZWFlOWYy
M2E3MTJkYTQ4MWFiYjZhZWYwMTBmZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CkBAIC0yOCwyNCArMjgsMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1
ZmZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5j
bHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogfQorY2xhc3MgRmxv
YXRTaXplOworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVu
ZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNyAr
NTgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcjsgfQorICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKworICAgIC8vIE1lc3NhZ2VzIHRv
IGJlIHNlbnQuCisgICAgdm9pZCByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAtNzMs
MTQgKzc1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZv
aWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgcmVsZWFzZUlt
YWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3
aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsK
LSAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYp
OwotCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hNYXA8SW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5Pj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBtX2lt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9v
bCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisgICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91bGREcmF3R1BVQmFk
Z2UsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6Oklt
YWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworCisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDc5OGM4YjRl
ZGI1N2Y1YWQwODJiYTgxYzEwMDhiMGRjZGVmZGYxOGEuLmQ0ZWVjNGY5YmMxM2ZjNDI5NWQ0ZjMw
YzMwNTQ2ZDgzZWQxODgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMjMsMTEgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRl
ZCB7Ci0gICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNh
bFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VC
dWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIFJlbGVhc2VJ
bWFnZUJ1ZmZlcihXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpCi0gICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVy
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgdm9pZCBGbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNo
SWRlbnRpZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKQotICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2Vi
S2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSAtPiAoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3Jl
YXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlz
dCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVy
RHJhd2luZ0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
IGRpc3BsYXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgV2ViS2l0OjpJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgR2V0SW1hZ2VEYXRhKGVu
dW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
V2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2Ug
aW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2FjaGVOYXRpdmVJbWFnZShXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0ciBpbWFnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWQ5ZmE3MTNkZDY2NGMyZWM2YzYyZTk0ZjZmZjI5Njhl
MTc3ZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCit7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5jb250YWlu
cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiBpbWFnZTsKKworICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRl
cmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkKQorICAgICAgICBpbWFnZSA9IEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworCisgICAgaWYgKCFpbWFnZSB8fCByZW5kZXJpbmdNb2RlID09IFJl
bmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlID0gVW5hY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlmIChpbWFnZSkgeworICAgICAgICBtX3Jl
bW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGltYWdlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1
c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2Uo
bV9zaG91bGREcmF3R1BVQmFkZ2UsIHNob3VsZERyYXdHUFVCYWRnZSk7CisgICAgYXV0byBpbWFn
ZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIGlmIChpbWFnZSkKKyAgICAgICAgaW1hZ2UtPmZsdXNoRHJhd2luZ0NvbnRleHQo
ZGlzcGxheUxpc3QpOworICAgIHJldHVybiBpbWFnZTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVC
YWRnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIGltYWdlID0gZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgc2hv
dWxkRHJhd0dQVUJhZGdlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChpbWFn
ZSkKKyAgICAgICAgaW1hZ2UtPmZsdXNoQ29udGV4dCgpOworICAgIHJldHVybiBpbWFnZTsKK30K
KworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpnZXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
IGNvbnN0Cit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1h
cC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5n
ZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVOYXRp
dmVJbWFnZUhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgaW1hZ2UpOworICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3Zv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3R1BVQmFkZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAoreworICAgIGlmICghbV9zaG91bGREcmF3
R1BVQmFkZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBjb250ZXh0LmRyYXdHUFVCYWRnZShjb250
YWluZXJSZWN0LCBjb250YWluZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCksIGNvbG9yLCB0ZXh0KTsK
K30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0o
Y29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKK3sKKyAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2UmPihpdGVtKTsKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciA9IGRyYXdJdGVtLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpOworICAgIGlmICgh
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
dXRvIGltYWdlID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZ2V0KGRyYXdJdGVtLnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgZHJhd0l0ZW0uaW1h
Z2VTaXplKCksIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwg
ZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICBkcmF3R1BVQmFkZ2UoY29udGV4dCwgZHJhd0l0ZW0u
ZGVzdGluYXRpb25SZWN0KCksIFdlYkNvcmU6OkNvbG9yOjpyZWQsICJJTUFHRSJfcyk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1h
Z2VCdWZmZXJJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxj
b25zdCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyJj4oaXRlbSk7CisgICAgYXV0byBpbWFn
ZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChkcmF3SXRlbS5yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaW1hZ2UtPmRyYXcoY29udGV4dCwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRy
YXdJdGVtLnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25zKCkpOworICAgIGRyYXdHUFVCYWRnZShj
b250ZXh0LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgV2ViQ29yZTo6Q29sb3I6OmJsdWUs
ICJDQU5WQVMiX3MpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0
ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAoaXRlbS50eXBl
KCkgPT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCisgICAgICAgIHJl
dHVybiBkcmF3TmF0aXZlSW1hZ2VJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgIGlmIChpdGVtLnR5
cGUoKSA9PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuIGRyYXdJbWFnZUJ1ZmZlckl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZVJlbW90ZVJl
c291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
Cit7CisgICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVtb3RlTmF0aXZl
SW1hZ2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm47CisgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhh
cHBlbmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZmMwNTJjMjg0Njk2ZWI3NjRk
YWI2ZGNlZTdmMDdmZTZhZmM4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUv
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3Bs
YXlMaXN0OworY2xhc3MgSXRlbTsKK30KK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Jik7CisKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hE
cmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBi
b29sIHNob3VsZERyYXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29sIHNob3VsZERy
YXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3Qs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CisKKyAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgYm9vbCBhcHBseVJlc291cmNlSXRlbShj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OworCisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBSZW1vdGVJbWFn
ZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CisgICAgdXNpbmcgUmVt
b3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPjsKKworICAgIHZvaWQgZHJhd0dQVUJh
ZGdlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Y29udGFpbmVyUmVjdCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHRleHQp
IGNvbnN0OworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIGJv
b2wgZHJhd0ltYWdlQnVmZmVySXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYs
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworCisgICAgUmVtb3RlSW1hZ2VCdWZm
ZXJIYXNoTWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZU5hdGl2ZUlt
YWdlSGFzaE1hcCBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcDsKKyAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworICAgIGJvb2wg
bV9zaG91bGREcmF3R1BVQmFkZ2UgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3MGQzZDg4ZjJiZjRhNmYxY2ZjNGYxODg3MDRlZDY3
NzBlNDk3N2FmLi5hMGNmY2U2YzAxMjQ4NWNiM2ZlN2NkNjEzY2ZmMTk2MWZiMmIxNmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNiwxMSArMjE2LDEz
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0cicsCiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJ
RCcsCiAgICAgICAgICdXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZScsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcicsCkBAIC0yMzgsNyArMjQwLDYg
QEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAg
J1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXInLAotICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpM
ZWdhY3lDdXN0b21Qcm90b2NvbElEJywKICAgICAgICAgJ1dlYktpdDo6TGliV2ViUlRDUmVzb2x2
ZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IGUwYmJiYmM1YmEyMzE4YmZhOGU2MzE5NmQ1NGVlYmI4OTAzNjQ0NDEu
LmEwNzc1MzA5NTdiYThkNDdkNTQyOWJhZGQ2Njc1NzU1NGQwNjIxMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwMCw3ICsxMTAw
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYXV0byBpbWFnZVNpemUgPSBu
YXRpdmVJbWFnZVNpemUoaW1hZ2UpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwpAQCAtMTE0Myw3ICsxMTQzLDcgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXIm
IGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJbWFn
ZVB0ciBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGJvb2wgaGFz
SW1hZ2UgPSAhIWltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CkBAIC0xMTY2LDE0ICsx
MTY2LDE0IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgcmV0dXJuIGRlY29kZU5hdGl2
ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUlt
YWdlSGFuZGxlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlSGFu
ZGxlJiBpbWFnZUhhbmRsZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0g
ICAgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZS5n
ZXQoKSk7CisgICAgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CiB9
CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBOYXRpdmVJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCitib29sIEFyZ3VtZW50
Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQogewotICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRl
Y29kZXIsIGltYWdlSGFuZGxlLmltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRp
dmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9u
dD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBm
b250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCAwNWQwMzU1NGI5ZWNhOWEwNDFjMzY4ZWY0NTM4ODI0NDM0Y2U2ZTIzLi45ZjNiMTA2NjkzMzNi
YTMwMTUyOTc4M2M5ZTFlOTFlYWJhNGNhYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRp
dmVJbWFnZVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTEwNSw3ICsxMDYsNiBAQCBjbGFzcyBLZXlm
cmFtZVZhbHVlTGlzdDsKIGNsYXNzIExheW91dFNpemU7CiBjbGFzcyBMYXlvdXRQb2ludDsKIGNs
YXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uOwotY2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGU7CiBjbGFz
cyBOb3RpZmljYXRpb247CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFBheW1l
bnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CkBAIC00MTYsOSArNDE2LDkgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdl
SGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlSGFuZGxlPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFuZGxl
Jik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKaW5kZXggYmMyYzQ5NDNhZWJlNWNjYWY4Yjk0N2VkNzFhZTAzMGY0ZjMyZDk4My4uMWY2MTMx
ODkyOGU5ZDE2NmNhNWYwMmZlNzk3ZGY0MjY5N2E0ZTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNCw4
ICsyNCw4IEBACiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTU1MSw4ICs1NTEsOCBAQCBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
IAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCi1XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU3MjEzNTYyYWJjMWJlMzg0MmJlMzFlODYxNzM3MGRl
Mjg3OGNkMGEuLjJiZTc3ZDRjODQzZTVjNWNlMDJjNjFjNjMzZmI1MjNiYzU3YTJiMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg2
Myw3ICszODYzLDYgQEAKIAkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTA2NDBBMzI0
MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTUwNjQwQTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUFEMDk0
NDI0MDhBQkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQxNDUsMTAgKzQxNDQsNyBAQAogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYy
OTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1t
OyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVT
aW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAv
KiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVt
b3RlSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEMy
NDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NzIyNzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAxMjI0
MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM1MjQwNzg1N0YwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM2MjQwNzg4RjAwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTU4LDYgKzQxNTQsMTAgQEAKIAkJNzI3
QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
OEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNr
ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xv
clBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJEQ0ExRTkyNTI0
MjRDRTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFF
QTI1MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzJEQ0ExRUIyNTI3MTQ1MTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFQzI1MjcxNDUxMDBDOUIyMEQgLyog
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0ND
RjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0
b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJENDE4N0QxQzAxMDBD
MzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTgwMjEsMTcgKzgwMjEsMTcgQEAKIAkJCQk3MjdBN0YzMzI0MDc4
NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8q
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQ0MjQwOEFCQjMwMERF
NEQyRiAvKiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovLAotCQkJCTU1MDY0MEE1MjQw
NzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0Yz
NzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBs
YXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4
QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk3MjdB
N0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKLQkJCQk3MjI3
ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5j
cHAgKi8sCiAJCQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkRD
QTFFQTI1MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8sCisJCQkJ
NzJEQ0ExRTkyNTI0MjRDRTAwQzlCMjBEIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLywKIAkJ
CQk1NTA2NDA5RjI0MDcxOTZBMDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CkBAIC04MDQxLDEyICs4MDQxLDEyIEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU1QUQwOTQzMjQwOEEw
RTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKLQkJCQk3
MjI3ODAxMTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmNwcCAqLywKLQkJCQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAw
REU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcx
QTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1
NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgg
Ki8sCiAJCQkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkRDQTFFQjI1MjcxNDUxMDBDOUIyMEQgLyog
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCAqLywKKwkJCQk3MkRDQTFFQzI1MjcxNDUxMDBD
OUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRp
Zmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTFiYzlhZTg3ZGM4ZDcyNDI4
YTBiODA5Y2FkMGQ4MGE0Y2QxY2I5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJJZGVudGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEltYWdlQnVmZmVySWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZT47Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oCmluZGV4IGU4NDkxNjY0NTE0NTk2Mjg3ZWYyYzc4ZjkwNzZlMWQ0MzgyMTkxZjIu
LjkyYTUzZjU5YzY3NmY3ODdmZDIxZmYwZGExYzQzMTc5NTAzMmIyYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rp
c3BsYXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aD4KQEAgLTM3LDEwICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3Mg
UmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVm
ZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIg
eworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlbW90ZUNs
aWVudCB7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNw
bGF5TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0
SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CisgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0
SW1hZ2VCdWZmZXI6OmNvbnRleHQ7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQpAQCAtNTMsMTQgKzU2LDIwIEBAIHB1Ymxp
YzoKIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAgeworICAgICAgICBpZiAoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hE
cmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVh
c2VJbWFnZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3RlZDoKICAgICBSZW1vdGVJbWFn
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSkKLSAg
ICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgICAg
ICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIHZv
aWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGUpIG92ZXJyaWRlCkBAIC02OCwyMyArNzcsNTIgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBBU1NFUlQoIW1fYmFja2VuZCk7CiAgICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpj
cmVhdGUobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIFdURk1vdmUoaGFuZGxlKSk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNCYWNrZW5kQ3Jl
YXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogCiAgICAg
QmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJ
bWFnZUJ1ZmZlciY+KCp0aGlzKS5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp3YWl0
Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CisgICAgICAgIGlmICghbV9iYWNrZW5kICYm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC0+d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgICAgICByZXR1
cm4gbV9iYWNrZW5kLmdldCgpOwogICAgIH0KIAorICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9i
YWNrZW5kLT5mbHVzaENvbnRleHQoKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2Ry
YXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7CisgICAgICAgIGlmICghZGlzcGxheUxpc3QuaXRl
bUNvdW50KCkgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kcmF3R1BVQmFkZ2UoY29udGV4
dCgpLCBXZWJDb3JlOjpGbG9hdFJlY3QoeyB9LCBtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCkpLCBX
ZWJDb3JlOjpDb2xvcjo6ZGFya0dyZWVuLCAiR1BVIl9zKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJ
ZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVGbHVzaERyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNvbW1pdEltYWdlQnVm
ZmVyRmx1c2hDb250ZXh0KCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVs
ZWFzZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGRp
c3BsYXlMaXN0LmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5
TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAgICAgYXV0byYgZGlzcGxheUxp
c3QgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPm1fZHJhd2luZ0NvbnRl
eHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+
KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250
ZXh0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90
ZUltYWdlQnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6Omdl
dEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgICAgICBpZiAoZGlzcGxheUxp
c3QuaXRlbUNvdW50KCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZm
ZXIqPih0aGlzKS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgICAg
ICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VE
YXRhIGlzIHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRo
ZSBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVH
ZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgfQogCiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFn
ZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
ZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxp
ZWQpIG92ZXJyaWRlCkBAIC05NSwyNiArMTMzLDMyIEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9k
cmF3aW5nQ29udGV4dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VE
YXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogICAgIH0KIAotICAgIHZvaWQg
Zmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgZmluZEltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSkgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICAgICAgbV9iYWNr
ZW5kLT5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmZpbmRJbWFn
ZUJ1ZmZlckZvckNsaWVudChpbWFnZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgp
IG92ZXJyaWRlCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmROYXRp
dmVJbWFnZShXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGF1dG8mIGRp
c3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAo
ZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChkaXNwbGF5TGlz
dCk7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBy
ZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5maW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQo
Y2FjaGVkSW1hZ2UsIGltYWdlLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQotICAgIAorCiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25z
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
MjhjNTc0OTAyYzJlMWJhOWEyMzcxNzUxN2I5Li44MjQ2MGExNmNlYmYzNDlhOTM0YmI4MTY0NDFk
MDA5NWRlMTEyM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIuaApAQCAtMjksMTEgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSW1hZ2VEYXRhOwpAQCAtNDIsMzcgKzQwLDIwIEBAIGVudW0gY2xhc3MgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1j
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCiBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyKCk7Ci0KLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7IH0KLQog
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbi4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUpID0gMDsKIAotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0
KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCYWNr
ZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3Qg
eyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXI7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lkIHdhaXRGb3JDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoKTsKLSAgICB2b2lkIHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29u
dGV4dCgpOworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElk
ZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQogCi0gICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Jik7Ci0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIgeyBJbWFnZUJ1ZmZlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkgPSBkZWZhdWx0OwogCiAgICAgSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwogICAgIEltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAppbmRleCA5OTUzNDE3ODdlZGEyMGE1NTRlNGQ2N2JhNTNkYzY5OGE1Mzcw
Y2MwLi4yMTQ3YTQ4N2U1N2JiMDk2NDQ4NDhjNWMyYTkwMjY1NWNmOTEzMmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5o
IgpAQCAtMzksMTIgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKFdlYlBhZ2UmIHBh
Z2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
PihuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHBh
Z2UpKTsKIH0KIAotUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCgpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdlYlBh
Z2UmIHBhZ2UpCisgICAgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGUoKnRoaXMsIHBhZ2UpCiB7CiAg
ICAgLy8gUmVnaXN0ZXIgaXRzZWxmIGFzIGEgTWVzc2FnZVJlY2VpdmVyIGluIHRoZSBHUFVQcm9j
ZXNzQ29ubmVjdGlvbi4KICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2Vp
dmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKQEAgLTg2LDQwICs4OCw4MiBAQCBib29sIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgp
CiAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29u
dGV4dD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZHJhd0dQVUJhZGdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZHJhd0dQVUJh
ZGdlKGNvbnRleHQsIGNvbnRhaW5lclJlY3QsIGNvbG9yLCB0ZXh0KTsKK30KKwogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxl
cmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Ci0g
ICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCks
IGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAg
ICAgICAgfQotICAgIH0KKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZUlt
YWdlQnVmZmVyKHNpemUsIHNob3VsZEFjY2VsZXJhdGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZSkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVs
ZWFzZUltYWdlQnVmZmVyKGltYWdlKTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KQoreworICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZmluZEltYWdlQnVmZmVyRm9y
Q2xpZW50KGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmROYXRpdmVJbWFnZUZvckNs
aWVudChDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5maW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQo
Y2FjaGVkSW1hZ2UsIGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5yZWxlYXNlUmVtb3RlQ2xpZW50KHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworfQor
CitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3Rl
Q3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQoreworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgPSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXpl
LCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVy
biByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmll
ciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q2Fj
aGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsKK30KIAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRl
ZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAgbV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVy
OwotICAgIH0KK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikKK3sKKyAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZl
cmVuY2U7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VE
YXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLCAxX3MpOworICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Cit9CiAK
LSAgICByZXR1cm4gbnVsbHB0cjsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3Rl
Rmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1
c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitJbWFnZUJ1ZmZlckZsdXNoSWRlbnRp
ZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29t
bWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdl
KCksIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVy
OwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJ
bWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMg
b25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVt
b3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91
bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVs
ZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIEltYWdlQnVmZmVy
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0
KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNr
ZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
IH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNo
Q29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIEltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
aW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkK
LSAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIp
OworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4
dChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBmNDk2MTU4
ZTdkNDBlZWIwNWFjMzk0MzRhZjI0NjMzYmFiYzdmMGVmLi4wMDAwOThkZTg2ZDYzYzJiOWZiOTU0
NWE0NGE2ZTQ4NjI1MDZlYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMjks
MzEgKzI5LDM1IEBACiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVm
ZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7Cit9Citj
bGFzcyBGbG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBj
bGFzcyBSZW5kZXJpbmdNb2RlIDogdWludDhfdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIFdlYlBhZ2U7CisKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKICAgICA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ+IGNyZWF0ZShXZWJQYWdlJik7CiAKICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9
Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MSwyMSArNjUsMzMg
QEAgcHVibGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKLSAgICB2b2lkIHJl
bGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotCiAgICAgYm9vbCB3YWl0
Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgYm9vbCB3YWl0Rm9yQ29tbWl0SW1h
Z2VCdWZmZXJGbHVzaENvbnRleHQoKTsKIAorICAgIC8vIFJlc291Y2UgY2FjaGUuCisgICAgdm9p
ZCBkcmF3R1BVQmFkZ2UoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0
cmluZyYgdGV4dCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91
bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Up
OworICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7Cisg
ICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmRJbWFnZUJ1ZmZlckZvckNs
aWVudChXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdl
JiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVt
b3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBN
ZXNzYWdlcyB0byBiZSBzZW50LgorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UpOworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDYWNo
ZU5hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4gcmVtb3RlR2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3Rl
Rmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCiBwcml2YXRlOgotICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQoKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdlYlBhZ2UmKTsK
IAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIGNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIHZvaWQg
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNvbW1pdEltYWdl
QnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyKj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBt
X3JlbW90ZVJlc291cmNlQ2FjaGU7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVz
c2FnZXMuaW4KaW5kZXggMTJhN2JmOGRhNGM4MjU3MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4u
MmMwZjdlOGExMjAzZjI2ODY1MmEwMGZjMWY3YjE3ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJD
b3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdl
QnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1
c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6Rmxv
YXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VC
dWZmZXJGbHVzaENvbnRleHQoV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVz
aElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2JmYTRmOGI4YTQ5NjlhNmIyM2VmMTA4
ZDI3YWU4OGRiN2FiMzFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMCwwICsxLDE5NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNv
dXJjZUNhY2hlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNl
Q2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2Vi
UGFnZSYgcGFnZSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKQorICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6c2hvdWxkRHJhd0dQVUJhZGdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdl
LmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2hvd0RlYnVnQm9yZGVycygpOworfQorCit2b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGU6OmRyYXdHUFVCYWRnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25z
dCBTdHJpbmcmIHRleHQpCit7CisgICAgaWYgKCFzaG91bGREcmF3R1BVQmFkZ2UoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEZsb2F0UmVjdCBib3JkZXJSZWN0ID0gY29udGFpbmVyUmVjdDsKKyAg
ICBib3JkZXJSZWN0LmluZmxhdGUoLTEpOworICAgIGNvbnRleHQuZHJhd0dQVUJhZGdlKGJvcmRl
clJlY3QsIGJvcmRlclJlY3QubWF4WE1pbllDb3JuZXIoKSwgY29sb3IsIHRleHQpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRB
Y2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
K3sKKyAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsK
KyAgICAgICAgaWYgKGF1dG8gaW1hZ2UgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAg
ICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdlLmdldCgpLCBpbWFnZS0+cmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2UtPnJlbW90ZVJlc291cmNlSWRlbnRpZmll
cigpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoYXV0byBpbWFnZSA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgewor
ICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQoaW1hZ2UuZ2V0KCksIGltYWdl
LT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRkKGltYWdlLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgfQorCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlLCBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
LmdldCgmaW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3Zl
KGhhbmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVm
ZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmll
ciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdl
QnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKworUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9t
IHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNob3VsZCBoYXZlIGJl
ZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9vbCBmb3VuZCA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworCisgICAg
Ly8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0
J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5k
aW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8g
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZW5z
dXJlKGltYWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMpOwor
ICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZUNhY2hlTmF0aXZl
SW1hZ2UoaW1hZ2UpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAKKyAgICBhZGRSZW1v
dGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZU5hdGl2ZUltYWdlKGNv
bnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICAvLyBSZW1vdmUgdGhl
IHJlc291cmNlIGZyb20gdGhlIGNhY2hlLgorICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAudGFrZShpbWFnZSk7CisKKyAgICAvLyBU
ZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBw
ZW5kaW5nIHJlcGxheWluZyBiYWNrLgorICAgIGlmIChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
CisgICAgICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjphZGRSZW1vdGVDbGllbnQoUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgaWYgKCFyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFkZCB0aGUgInJl
c291cmNlIC0+IGNsaWVudCIgZGVwZW5kZW5jeSBpbiBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAuCisgICAgYXV0byYgY2xpZW50cyA9IG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1h
cC5lbnN1cmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBbJl0geworICAgICAgICByZXR1cm4g
UmVtb3RlQ2xpZW50c0hhc2hTZXQoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBj
bGllbnRzLmFkZChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50
KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hN
YXAsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQorewor
ICAgIFZlY3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlQ2xpZW50
c1RvQmVSZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50
IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9y
IChhdXRvJiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgeworICAgICAgICBw
YWlyLnZhbHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKHBh
aXIudmFsdWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9C
ZVJlbW92ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gYSBsaXN0
IG9mIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1vdGVSZXNvdXJj
ZUNsaWVudHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxl
YXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghbV9yZW1vdGVS
ZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuY29udGFpbnMocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKSk7CisgICAgCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVz
b3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGll
bnRzSGFzaE1hcCwgbW92ZSB0aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291
cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVz
b3VyY2UgZnJvbSB0aGUgY2FjaGVkLgorICAgIGlmIChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAuY29udGFpbnMocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgbV9yZW1v
dGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciwgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLnRha2UocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKSk7CisgICAgZWxzZQorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZUNsaWVudChS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICAv
LyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9y
ZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGZvciAoYXV0byByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUNsaWVudHNI
YXNoTWFwLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKSkKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJj
ZUNsaWVudHNIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAg
Ly8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIG1f
cmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLgorICAgIGZvciAoYXV0
byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9yZW1vdGVS
ZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZp
ZXIpKSB7CisgICAgICAgIC8vIFJlbW92ZSB0aGUgdW5yZWZlcmVuY2VkIHJlc291cmNlcyBmcm9t
IG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLgorICAgICAgICBt
X3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5yZW1vdmUocmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgICAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0
byByZW1vdmUgdGhpcyByZXNvdXJjZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3NDc3NjVjNDE5Nzcy
NDMyNDBiYTZiOWI1MzBkMTQ2NzM2ZTMzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMCww
ICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NhY2hlZEltYWdlQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
bW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI7Citj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgUmVt
b3RlUmVzb3VyY2VDYWNoZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRJbWFnZUNsaWVudCB7Citw
dWJsaWM6CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwg
V2ViUGFnZSYpOworCisgICAgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UoKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdHUFVCYWRnZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3Qg
U3RyaW5nJiB0ZXh0KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6
U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZEltYWdlQnVm
ZmVyRm9yQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVs
ZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgdm9pZCBjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJG
bHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29uc3Qg
V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYpOworCisgICAgdm9pZCByZWxlYXNlUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1
c2luZyBSZW1vdGVDbGllbnRzSGFzaFNldCA9IEhhc2hTZXQ8V2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNo
TWFwPFdlYkNvcmU6OkltYWdlQnVmZmVyKiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyPjsKKyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+Owor
ICAgIHVzaW5nIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlQ2xpZW50c0hhc2hTZXQ+OworICAgIHVz
aW5nIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXIqPjsKKworICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdlKSBvdmVycmlkZSB7IHJlbGVhc2VOYXRpdmVJbWFn
ZShpbWFnZSk7IH0KKworICAgIHZvaWQgYWRkUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZUNsaWVudElkZW50aWZpZXIpOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXI+IHJlbW92ZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFw
JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMo
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZUltYWdlQnVm
ZmVySGFzaE1hcCBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcDsKKyAgICBSZW1vdGVOYXRpdmVJ
bWFnZUhhc2hNYXAgbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXA7CisgICAgUmVtb3RlUmVzb3Vy
Y2VDbGllbnRzSGFzaE1hcCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXA7CisgICAgUmVt
b3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdS
ZWxlYXNlSGFzaE1hcDsKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1h
cCBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwOworICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKyAgICBXZWJQYWdlJiBt
X3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMTg4YmM1ZTllYjlkYjc0NDA1
ZTA4ZjZlMDU4MjNlYTNjMzdhODJhMS4uNTM2ZDZlOTVlMGY4NjRjZWY1OWIwY2JjYmE0ZWZlOGM1
ODA4MmMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTg3Nyw3ICs4NzcsNyBAQCBSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcihQbGF0ZgogUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgV2ViQ2hyb21lQ2xp
ZW50OjplbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
ID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCk7CisgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShtX3BhZ2UpOwog
ICAgIHJldHVybiAqbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410738</attachid>
            <date>2020-10-07 02:00:19 -0700</date>
            <delta_ts>2020-10-07 02:17:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217342-20201007020018.patch</filename>
            <type>text/plain</type>
            <size>190151</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlYWFjNDQxMTQ2ZjU4
NzZjNDY3ZGUwZmQzYjNmYWE0YjU3MTJjNC4uYzgzMzFjMTQ1MDk1YWY2YmMyYjBlZGY1OGZmOTcz
N2E4ZWYzOWFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0xMC0wNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gSW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB3b3JrIGlu
IHByb2dyZXNzIHBhdGNoLiBUaGUgZ29hbCBpcyB0byBnZXQgdGhlIEVXUyBib3RzIGNsZWFuIAor
ICAgICAgICBmaXJzdC4gVGhlbiBpdCBtYXkgYmUgc3BsaXQgaW50byBzbWFsbGVyIHBhdGNoZXMu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VX
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xldmVs
Rm9yU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdHUFVCYWRn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVzdHJv
eURlY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
SWRlbnRpZmllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJh
d2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBs
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVy
OjpEcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05h
dGl2ZUltYWdlOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6bmF0aXZlSW1hZ2VQdHIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmltYWdl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
TmF0aXZlSW1hZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpzb3VyY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVz
dGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
SW1hZ2VCdWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6On5EZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjcmVhdGVEcmF3
TmF0aXZlSW1hZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVsZWdhdGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6OndpbGxB
cHBlbmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMTAtMDUgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBlbmFibGluZyBz
dWJwaXhlbCBDU1NPTSB2YWx1ZXMsIGl0J3Mgb2ZmIGJ5IGRlZmF1bHQgZXZlcnl3aGVyZSBhbmQg
a25vd24gdG8gYmUgbm90LWNvbXBhdGlibGUgd2l0aCB0aGUgd2ViCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxNDQw
MGZmY2RjNDNmYjdhZTM4NzE0ODY2NzZmNjhkZmU4ZTdmN2EuLjIyNjM0MzE0NDUzZDcwN2VmNWIy
OGMzOWE0OGVjZjU4YmRmNDVmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDIwLTEw
LTA3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgR1BVIHJlbmRlcmluZyByZXNvdXJjZSBjYWNoZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzQyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW1vdGVDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJE
cmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFnZUJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OmRyYXdHUFVCYWRnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd05hdGl2ZUltYWdlSXRlbSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd0ltYWdlQnVmZmVySXRl
bSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6YXBw
bHlSZXNvdXJjZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxOYXRpdmVJbWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OnBhaW50KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6
flJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6
OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyOjpjb21taXRGbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjppbWFnZUJ1ZmZlcklkZW50aWZpZXIgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRyYXdHUFVCYWRnZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdO
YXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpyZWxlYXNlUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5nQ29u
dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZs
dXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OlJl
bW90ZVJlc291cmNlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpzaG91bGREcmF3R1BVQmFkZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlOjpkcmF3R1BVQmFkZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdOYXRp
dmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxl
YXNlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlOjphZGRSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3Zl
Q2xpZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VS
ZW1vdGVDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6
OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29uc3QpOgorCiAyMDIwLTEwLTA1ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Ig
ZW5hYmxpbmcgc3VicGl4ZWwgQ1NTT00gdmFsdWVzLCBpdCdzIG9mZiBieSBkZWZhdWx0IGV2ZXJ5
d2hlcmUgYW5kIGtub3duIHRvIGJlIG5vdC1jb21wYXRpYmxlIHdpdGggdGhlIHdlYgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggNTY1NmY3YjMwNzAzZGZlMzM1Mzk5ZWE4OWFiYzM1ZWQzMWQ0YzVkNy4u
NDFiNjllYTViYzdkMjg0ZmJiYmYyMGM4Mzg4OTk3MjU2N2MxM2M0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xMTkwLDYgKzExOTAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0xMjAzLDYg
KzEyMDQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9S
ZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YmYwNDEwYTBlOGM3OGZiZmMwZjcxYzIwZTQzMzRlMDEzNjUzMGM0Ni4uYzYwNDcxMTRjZjg2NTVl
NTZiNWE2YWM2NGE2YWRjOGZhMWRjNjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2Nyw2ICsyMTY3LDggQEAKIAkJNzI5
OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAv
KiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgx
NUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZl
ckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MkJFRkExQTI1MUJFRkZFMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJFRkEx
OTI1MUJFRkZEMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJEQ0ExRTgyNTIzREZD
MDAwQzlCMjBEIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0
NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0
MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNz
YWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2Fn
ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTc5M0VDNzBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTk5
MzIsNyArOTkzNCw5IEBACiAJCTcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyQkFDM0FDMjNFMUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0FEMjNFMUU1NDUwMDhENzQx
QyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MkJFRkExOTI1MUJFRkZEMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3
QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGlu
Z09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJEQ0ExRTYyNTIzREU1
NTAwQzlCMjBEIC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdl
UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYxMUEyRThEMkYwMDRD
NTYyQSAvKiBKU0VYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjIx
QTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0VYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFQTA5
RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjYxOTcsNiArMjYyMDEsNyBAQAogCQkJCTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAv
KiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQk2QjM0ODA5MjBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2UuaCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0Qzcg
LyogTmF0aXZlSW1hZ2UuaCAqLywKKwkJCQk3MkRDQTFFNjI1MjNERTU1MDBDOUIyMEQgLyogTmF0
aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5j
cHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlB
ODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAg
LTI2MjE0LDYgKzI2MjE5LDcgQEAKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxh
dGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJl
Z2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICov
LAorCQkJCTcyQkVGQTE5MjUxQkVGRkQwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIuaCAqLywKIAkJCQkwNzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1w
bGUuY3BwICovLAogCQkJCTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1Nh
bXBsZS5oICovLAogCQkJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2Rl
LmggKi8sCkBAIC0zMTE4MCw5ICszMTE4Niw3IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYw
NjcxIC8qIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3
QTA5RDEyMEE5M0E5NzAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFREFBRkM5MTlBMkNDREMwMDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29j
b2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwRjQy
MjUxN0NFNkUwMDlCQTAzNCAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5l
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDkzRTI0
MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMTE5NSw3ICszMTE5OSw2IEBACiAJCQkJMkQyOUVDQ0ExOTJGMUYxRDAwOTg0Qjc4IC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNzAwMjMx
OTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQyOUVDQzgxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAv
KiBMYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTBGNDMyNTE3
Q0U2RTAwOUJBMDM0IC8qIERpc3BsYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5
MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDQw
MjgzMjQ5QTdBNjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMTg4Niw2ICszMTg4OSw3IEBACiAJCQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8q
IElubGluZUxpbmVSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NTc3NUNFMjQxNDM3RDUwMDJE
RjFBMCAvKiBJbmxpbmVQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY0MERBODIyNTEz
MDMzQTAwRUMwNEI3IC8qIElubGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDMzRjNC
MjUyQUVFQ0QwMDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTZGMzYwRTUwMjM5OTk0MjEwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0
eWxlU2hlZXRPd25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRD
OUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovLApAQCAtMzI4NTQsOCArMzI4NTgs
MTEgQEAKIAkJCQk2RjBCOThCNTIzRjI2OEVDMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJv
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQxODAyNTUyM0Q0NTQ5QjAwRkZCMDcxIC8qIExheW91
dEludGVncmF0aW9uQm94VHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwM0I3QTIyNTFCMTE5
MzAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBM
YXlvdXRJbnRlZ3JhdGlvbkxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkREMjM2MDg4
RkUwMEZBNDM0NSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0MDNCN0EzMjUxQjExQzEwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvblBhZ2lu
YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBM
YXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0MyNTIxRDRB
RjAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0QTY2NENGMjUyMUQ0RTIwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0UyNTIxRDRDOTAw
NzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMzMTE4LDYgKzMzMTI1LDcgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1
ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdE
M0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjM0ODA5
NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
RENBMUU4MjUyM0RGQzAwMEM5QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5T
UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAv
KiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNDg4LDYgKzMzNDk2LDcg
QEAKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBs
YXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQkVGQTFB
MjUxQkVGRkUwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3M0ExNTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZv
cm1hdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4
MSAvKiBSZW1vdmVOb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDc1OSw3ICszNDc2
OCw2IEBACiAJCQkJRTFFRThCOTkyNDEzMTk1MDAwRTc5NEQ2IC8qIFhSSW5wdXRTb3VyY2VzQ2hh
bmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMkE5RjRBMjQ4QTk5RTIwMDNGMDZDOCAv
KiBYUkludGVyYWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCODQyNDEzMTkx
RjAwRTc5NEQ2IC8qIFhSUmVmZXJlbmNlU3BhY2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTREMzNGM0IyNTJBRUVDRDAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFFRThCNzcyNDEzMTkxRjAwRTc5NEQ2IC8qIFhSUmVmZXJlbmNlU3BhY2VU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI3OTI0MTMxOTFGMDBFNzk0RDYgLyogWFJS
ZW5kZXJTdGF0ZUluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4QjhEMjQxMzE5NTAwMEU3
OTRENiAvKiBYUlNlc3Npb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VCaXRtYXAuY3BwCmluZGV4IDM5Mjk2YTg5OGI2YWUxMTU3MDIzZTA1NzFhMTcwZjJkNjUxODY0
NjQuLmFiOTYwZGFmZWRlZjEyOTkzNTBhNjljYzRiMWYwMGY2OGIyMjlmZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC02MDIsMTAgKzYwMiwxNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZykgb3ZlcnJp
ZGUgeyB9CiAKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICB9CisgICAg
CiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKICAgICBib29s
IGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFu
aW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0g
RGVjb2RpbmdTdGF0dXM6OkludmFsaWQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbmF0aXZlSW1h
Z2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpIG92
ZXJyaWRlIHsgfQorCiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3Qg
SW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggM2ZhMTgxN2E5ZDY2NjhmYjQz
M2IxYmQ0NWM2MDg2MmYwYzM4N2RkNi4uYjM5MmFlODE0YjlkZmNlY2QyM2QzZjkwOTczZTVjNmRk
YTgzNmE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CkBAIC00MTEsNiArNDExLDE3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2
ZXI6OmRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYgaW1hZ2UsIGxvCiAgICAgICAgIGNh
Y2hlZEltYWdlLT5kZWNvZGVkU2l6ZUNoYW5nZWQoaW1hZ2UsIGRlbHRhKTsKIH0KIAordm9pZCBD
YWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVB0
ciYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2Fj
aGVkSW1hZ2VzKSB7CisgICAgICAgIGlmICgmaW1hZ2UgIT0gY2FjaGVkSW1hZ2UtPmltYWdlKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
bmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hl
ZEltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7
Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRpZERyYXcoY29u
c3QgSW1hZ2UmIGltYWdlKQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVk
SW1hZ2VzKQpAQCAtNDM0LDYgKzQ0NSwxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFn
ZU9ic2VydmVyOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSQogICAg
ICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5nU3Rh
dGUsIGNoYW5nZVJlY3QsIGRlY29kaW5nU3RhdHVzKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6
Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1h
Z2UmIGltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAgZm9y
IChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZEltYWdl
LT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChpbWFnZSwgbmF0aXZlSW1hZ2UpOworfQorCiB2
b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICAgICBmb3IgKGF1dG8gY2Fj
aGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKQEAgLTY4OSw2ICs3MDYsMTYgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5p
bWF0aW5nU3RhdGUgYW4KICAgICAgICAgbV9jbGllbnRzV2FpdGluZ0ZvckFzeW5jRGVjb2Rpbmcu
Y2xlYXIoKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95
ZWQoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2Up
Cit7CisgICAgaWYgKCZpbWFnZSAhPSBtX2ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVudD4gY2xpZW50V2Fsa2Vy
KG1fY2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQgPSBjbGll
bnRXYWxrZXIubmV4dCgpKQorICAgICAgICBjbGllbnQtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJv
eWVkKG5hdGl2ZUltYWdlKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiB7CiAgICAgaWYgKCZpbWFn
ZSAhPSBtX2ltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApp
bmRleCAyYTAyYmU4NWYxYTA1NTIyZjU5YjQ0YjVhYTI2N2FhOWY5N2Y4ZDdmLi5lNDdmMmEwOWYy
MDM2NWNhYTg2ZWU0NWUxYzQyNmQwOWY2YTJmZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTQ5LDEwICsxNDksMTQgQEAgcHJpdmF0ZToKIAogICAg
ICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChjb25zdCBJbWFnZSYsIEVuY29kZWRE
YXRhU3RhdHVzKSBmaW5hbDsKICAgICAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3Qg
SW1hZ2UmLCBsb25nIGxvbmcgZGVsdGEpIGZpbmFsOworCisgICAgICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAg
ICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwogICAg
ICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGlu
Z1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0
dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkgZmluYWw7CisgICAgICAgIHZvaWQgbmF0aXZl
SW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYp
IGZpbmFsOworICAgICAgICAKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdl
JiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIApAQCAtMTY0LDYgKzE2OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJik7CiAgICAgYm9vbCBjYW5EZXN0
cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKTsKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFi
bGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCk7CisgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdl
JiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZUNsaWVudC5oCmluZGV4IDI5NWU2NTZhYjFlYmMxYjkwZmQxYWNlNzgzZDM0MTljMmY2
OWEwOGIuLjMzYWNjZjkyNjkyODFmNzUxNWY4ZGU2YjY5MTM0NmU3OTRhMGI4ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCkBAIC0yNCw2
ICsyNCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUg
IkltYWdlVHlwZXMuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ2LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVkIHdo
ZW4gYSBuZXcgZGVjb2RlZCBmcmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUgb3Ig
d2hlbiBhbiBhbmltYXRlZCBpbWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IGZy
YW1lLgogICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxh
YmxlKENhY2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVj
dCogY2hhbmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0dXJu
IFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIG5h
dGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgeyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCmluZGV4IGI0NzZhMzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLmZjYmIz
M2RhOWUwMmQ0ZmUwODA0ZTFlMTEzZDExM2UxM2M3Y2M1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAg
LTIwNCw2ICsyMDUsMjYgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAj
ZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAorc3RhdGljIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IEJpdG1hcEltYWdlJiBpbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdl
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhh
dmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgorICAgIElu
dFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJbWFnZSk7
CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQorICAg
ICAgICBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2Vk
U2l6ZSgpOworCisgICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVu
c3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQg
aW1hZ2UuCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CisgICAgaWYg
KHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKKyAgICAgICAgYWRqdXN0ZWRTcmNSZWN0
ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsg
fSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOworCisgICAgZnByaW50ZihzdGRlcnIsICJkcmF3TmF0
aXZlSW1hZ2UoKTogdXJsID0gJXNdIiwgaW1hZ2Uuc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgCisgICAgaWYgKGltYWdlLmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAg
aW1hZ2UuaW1hZ2VPYnNlcnZlcigpLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIG5h
dGl2ZUltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBvcHRpb25zKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5h
dGl2ZUltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBvcHRpb25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3QuaXNFbXB0eSgpKQpAQCAtMjky
LDkgKzMxMyw5IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlv
biA9IG9wdGlvbnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VP
cmllbnRhdGlvbjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRp
b24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdl
KCp0aGlzLCBpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShv
cmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAg
ICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJ
bnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqdGhpcywgaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNp
emUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5n
U3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCkBA
IC0zNzksNyArNDAwLDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBCaXRtYXBJbWFnZTo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsKICNpZiBVU0UoQ0cp
CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQorICAgIGlmIChjb250ZXh0Lmhhc1BsYXRmb3Jt
Q29udGV4dCgpICYmIENHQ29udGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkg
PT0ga0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAgIHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0OwogCiAgICAgZmxvYXQgc2NhbGUgPSBzdGQ6Om1pbihmbG9hdCgxKSwgc3RkOjptYXgo
c2NhbGVGYWN0b3Iud2lkdGgoKSwgc2NhbGVGYWN0b3IuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4
IDI2NWNiNTdkMzkzOTUwMzhhNjI5ZjM1YmNkNjg2M2FhNDQ0MzljNjcuLmU4NGM0M2Y5YjcxZWM1
OWQ0ZjhiMmE4NzNlYjFkNjAwODMyMjg1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDI1LDYgKzQyNSw0MCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgcmVzdG9yZVBsYXRmb3JtU3Rh
dGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHUFVCYWRnZShjb25zdCBGbG9h
dFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIGJhZGdlUG9zaXRpb24sIGNv
bnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqdGhpcyk7CisKKyAgICBzZXRTaG91bGRBbnRpYWxp
YXMoZmFsc2UpOworICAgIHNldFN0cm9rZUNvbG9yKGNvbG9yKTsKKyAgICBzdHJva2VSZWN0KGNv
bnRhaW5lclJlY3QsIDAuNSk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBmb250U2l6ZSA9IDEwOwor
ICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIkFyaWFsIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNw
ZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoZm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlv
blZhbHVlKDUwMCkpOworCisgICAgRm9udENhc2NhZGUgY2FzY2FkZShXVEZNb3ZlKGZvbnREZXNj
cmlwdGlvbikpOworICAgIGNhc2NhZGUudXBkYXRlKG51bGxwdHIpOworCisgICAgVGV4dFJ1biB0
ZXh0UnVuKHRleHQpOworICAgIGZsb2F0IHRleHRXaWR0aCA9IGNhc2NhZGUud2lkdGgodGV4dFJ1
bik7CisgICAgCisgICAgRmxvYXRSZWN0IGJhZGdlUmVjdChiYWRnZVBvc2l0aW9uLCBGbG9hdFNp
emUodGV4dFdpZHRoICsgMiwgZm9udFNpemUgKyAyKSk7CisgICAgaWYgKGJhZGdlUG9zaXRpb24u
eCgpID09IGNvbnRhaW5lclJlY3QubWF4WCgpKQorICAgICAgICBiYWRnZVJlY3Quc2V0WChiYWRn
ZVBvc2l0aW9uLngoKSAtIGJhZGdlUmVjdC53aWR0aCgpKTsKKworICAgIGlmIChiYWRnZVBvc2l0
aW9uLnkoKSA9PSBjb250YWluZXJSZWN0Lm1heFkoKSkKKyAgICAgICAgYmFkZ2VSZWN0LnNldFko
YmFkZ2VQb3NpdGlvbi55KCkgLSBiYWRnZVJlY3QuaGVpZ2h0KCkpOworCisgICAgZmlsbFJlY3Qo
YmFkZ2VSZWN0LCBjb2xvcik7CisgICAgCisgICAgc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7
CisgICAgY2FzY2FkZS5kcmF3VGV4dCgqdGhpcywgdGV4dFJ1biwgRmxvYXRQb2ludChiYWRnZVJl
Y3QueCgpICsgMSwgYmFkZ2VSZWN0LnkoKSArIDEgKyBmb250U2l6ZSkpOworfQorCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgZWxsaXBzZUNvbG9yLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTcyOSw2ICs3NjMsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMsIGNhY2hlZEltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsYXRmb3Jt
RHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0lt
YWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKQEAg
LTc0NSw3ICs3OTIsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVu
dEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGlu
YXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBAIC03NTcsNyArODA0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9p
bXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNw
YWNpbmcsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRp
b25RdWFsaXR5KCkpOwpAQCAtNzcwLDcgKzgxNyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBp
bWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBvcHRpb25zKTsKIAogICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRp
bGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CkBAIC03OTcsNiArODQ0LDkgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5
Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAg
IGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCAwODhmMmU1Mzk2YjliNDM4NTg4N2VjMDFmYWNhOGU3ZGQ5MGUxODA3Li41MWZjYTRkNjI4
YjM5YjEwYWE4ZWZiNGZiNGU4MThjYmMxMTJmMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODYsNiArODYsNyBAQCBj
bGFzcyBHbHlwaEJ1ZmZlcjsKICNlbmRpZgogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFz
cyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CkBAIC0zMzMsMTAgKzMzNCw2IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8p
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQogICAgIHZv
aWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CkBA
IC0zNTUsNiArMzUyLDggQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhY2suc2l6ZSgpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdHUFVCYWRnZShjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIGJhZGdlUG9zaXRpb24sIGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiB0ZXh0
KTsKKyAgICAKICAgICAvLyBUaGVzZSBkcmF3IG1ldGhvZHMgd2lsbCBkbyBib3RoIHN0cm9raW5n
IGFuZCBmaWxsaW5nLgogICAgIC8vIEZJWE1FOiAuLi5leGNlcHQgZHJhd1JlY3QoKSwgd2hpY2gg
ZmlsbHMgcHJvcGVybHkgYnV0IGFsd2F5cyBzdHJva2VzCiAgICAgLy8gdXNpbmcgYSAxLXBpeGVs
IHN0cm9rZSBpbnNldCBmcm9tIHRoZSByZWN0IGJvcmRlcnMgKG9mIHRoZSBjb3JyZWN0CkBAIC0z
ODIsNiArMzgxLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9LCBDYWNoZWRJ
bWFnZSogPSBudWxscHRyKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0
aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02NDksNiArNjUwLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0
IENvbG9yJik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOworCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5n
TW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgQ29sb3ImKTsKIAog
ICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdpZHRoKGZsb2F0KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaAppbmRleCA4YmM5YzFjMmVjYzBjYmZjMzgyNmFhMWUwMTkxMzFjODkzNzJk
M2ZlLi5lNTJiYzRlMjE5MjI4YzJiNDM2NTUyODY5MGU3Njk3NTIwOGJjMDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAg
dmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxl
UnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwot
I2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmLCBDYWNoZWRJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBkMzlmZWFhODJmMzcxY2Y4YWFmNzZkMjdmMzM1NzNm
MzUxOThkMDg5Li5lYTRkNjNhOTRlZDZjZjAyMjNmZDllYTA1MDg4YTM3YmQ3MTJkNmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTMyLDggKzMyLDkgQEAK
ICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25z
LmgiCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC03Miw3ICs3
Myw2IEBAIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dEltcGw7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1zdHJ1Y3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnM7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZp
ZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3
aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBkMTQ2NDkyYzRhOGRmOTM1Y2FmOTRi
OWZiOTU1OTA5YWFkMWNiYWYwLi5kYmUwMjVlZTllMWE0NDBmMDJlYTk2NjRhMzRmOThhMGY2YzUx
YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERp
c3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiB9
CiAKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBEaXNwbGF5TGlzdDo6
RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgeyB9
CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
aW5kZXggYzAxMGEwZjBjZmNkOGM1ZTdhYjZjOTRjNWMzYzM2ZjQ4Mzg2ZDAxZi4uNThmYzE0ODM2
ZDkyYWEyMDAxOWYyMGZlZWRjNTU3MWU5YWI1ZTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMxLDEzICsz
MSwxNCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaApp
bmRleCBmMDMyNDg0NzI4MzY3MzkwYjMwNTljZjU4Y2UxMjBhYjM3MmEzNTU1Li4xN2Q5MjdhM2Vl
OWQ2MGQxZDA0OGZjMGNjNTJmMDMzOWU0ODQzYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC00NSwxMCArNDUsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoY29uc3QgSW1h
Z2UmLCBFbmNvZGVkRGF0YVN0YXR1cykgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBkZWNvZGVkU2l6
ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcgZGVsdGEpID0gMDsKIAorICAgIHZpcnR1
YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNvbnN0IElt
YWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25z
dCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdl
JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSA9IDA7CisgICAgCiAgICAgdmlydHVhbCB2b2lkIGNo
YW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVs
bHB0cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KGNvbnN0IEltYWdlJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NzUwMzIyMzlhNWQ1YWJhYTc2M2Y3YTI2M2Vk
N2NiMjQ1OTgyNjUyLi40NTUxNWM1OWExZmYyODRjZDhkMjgwMzgzN2IwODViNTAyMmQ2YzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CkBAIC0xMzAsOCArMTMwLDEwIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0
YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSkKICAgICBBU1NFUlQoZnJh
bWVDb3VudCA8PSBtX2ZyYW1lcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IGZyYW1lQ291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGluZGV4ID09IGV4
Y2x1ZGVGcmFtZSkKKyAgICAgICAgaWYgKGluZGV4ID09IGV4Y2x1ZGVGcmFtZSB8fCAhbV9mcmFt
ZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgbV9p
bWFnZS0+aW1hZ2VPYnNlcnZlcigpLT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCgqbV9pbWFn
ZSwgbV9mcmFtZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpOwogICAgICAgICBkZWNvZGVkU2l6ZSAr
PSBtX2ZyYW1lc1tpbmRleF0uY2xlYXJJbWFnZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggNmIyZDgxZTM1YjA4Y2Y3
NGY0ZjM2MWFlYmM3NGYzMTI5YzdkOWI3Zi4uNGI0MWNmODlkODk3MmM2ZjFlNmZlZmRlODk5OTJk
NmI5ZTRmNWJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCkBAIC0yNyw1MiArMjcsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0j
aW5jbHVkZSAiU2hhcmVkQml0bWFwLmgiCi0jZW5kaWYKLQotI2lmIFVTRShESVJFQ1QyRCkKLSNp
bmNsdWRlICJDT01QdHIuaCIKLSNpbmNsdWRlIDxkMmQxLmg+Ci0jaW5jbHVkZSA8d2luY29kZWMu
aD4KLSNlbmRpZgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbnRTaXplOwot
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwotCi0jaWYgVVNFKENHKQotdHlwZWRlZiBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi10eXBlZGVm
IENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoQ0FJUk8pCi10
eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNF
KFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0j
ZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhp
Y3NDb250ZXh0JiwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW50UmVjdCYgc291cmNlKTsKLQogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1h
Z2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKLWNsYXNzIE5hdGl2ZUltYWdlSGFuZGxlIHsK
LXB1YmxpYzoKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLX07Ci0gICAgCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CisjZWxpZiBVU0Uo
Q0FJUk8pCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNlbGlmIFVTRShXSU5HREkpCisjaW5j
bHVkZSAiU2hhcmVkQml0bWFwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
aWYgVVNFKENHKQordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7
CisjZWxpZiBVU0UoRElSRUNUMkQpCit0eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7CisjZWxpZiBVU0UoQ0FJUk8pCit0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IE5hdGl2ZUltYWdlUHRyOworI2VsaWYgVVNFKFdJTkdESSkKK3R5cGVkZWYgUmVmUHRyPFNo
YXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yYWY1NDJkZmVjODQ3YWJjMzcxYWEyZjFlOGU0YjhkZDlmYjExMGU1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGExMDQ2NTZjYjVkNWRkZWEwMzIxZGFhNDRh
MDQ0NjUxNzUwODhlNGYuLjJhYjljZTNiYmEyNWVhNTQ4NTQ0OGYzNGFhNzc3YWZlMDRlNzM0ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMywxNiArMTIzLDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IGJvcmRlclRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3JtQ29udGV4dCgp
LCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ryb2tlU3R5
bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKCpw
bGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlv
bnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAKaW5kZXggM2Q0NmE1MDUzYjE3YzlhM2VmOWY4MmIyMGI0ZDk3MWYwMmE1NDNlNi4uODJkMjdi
ZDY1YThlNjBiZGE3NjkyNjMzMmVhYjRiMmEwM2E0YzU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yNzksMTMgKzI3OSwxOSBAQCBJbWFnZURyYXdSZXN1bHQg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsbwogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUlt
cGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2Nh
bGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKikK
IHsKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBo
aWNzQ29udGV4dCgpLnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRm
b3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0
YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0
byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggMzFiYTcxNjE3ZWZhNDU2YzExZjA0M2ExOWE0
NDkzZmQ1ODViMjNlNS4uMGJmZjc4MTdlZGE1ZDJkOWVlM2IxYzc0OGVhZDI5OWM4YjMxZmE3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc0LDcgKzc0LDkgQEAgcHVi
bGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRp
bGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKKyAgICAKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2UqKSBv
dmVycmlkZTsKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggNjNmYjVkZDYxYmFiY2NjZjcwOTA0ZTU2ZDJmOWQ0
ZTVhZDU4Y2FjNS4uYWNiMWU0ZTRjYWI5NmJlNGJjZDA5ZmZjNWEyOGNlOTk4MTZmZjA0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtMjgwLDE2ICsyODAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJh
bnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1f
aW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogI2lmICFMT0dfRElTQUJMRUQK
ICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRp
dmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2
ZUltYWdlQ0cuY3BwCmluZGV4IDVjYzVjMjA3YjQ0YTQ4MzViZTJlMDgwMjhhM2E3MTA5NWE1NWUx
ZTAuLjQwMGQ2ZWYwYTQ1NzdkNWQ3Y2M1YmQ5Y2I2NDZhNWJhZGViZGFkYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
CkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgotI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lci5oIgpAQCAtNjksNDAgKzY4LDYgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5n
bGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVy
biBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10s
IHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzNdKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgLy8gU3Vic2FtcGxpbmcg
bWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgot
ICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7
Ci0gICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQotICAg
ICAgICBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2Vk
U2l6ZSgpOwotCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVu
c3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQg
aW1hZ2UuCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgaWYg
KHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKLSAgICAgICAgYWRqdXN0ZWRTcmNSZWN0
ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsg
fSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOwotCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9w
dGlvbnMpOwotfQotCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0
IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKQotewotICAgIENH
Q29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKLQotICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uLngoKSwgZGVzdGluYXRpb24ueSgpLCBz
b3VyY2Uud2lkdGgoKSwgc291cmNlLmhlaWdodCgpKSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0o
Y2dDb250ZXh0LCAxLCAtMSk7Ci0KLSAgICBDR0Zsb2F0IGltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkgLyBzY2FsZUZhY3RvcjsKLSAgICBDR0Zsb2F0IGltYWdlV2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0KLSAgICBD
R0Zsb2F0IGRlc3RYID0gZGVzdGluYXRpb24ueCgpIC0gc291cmNlLngoKTsKLSAgICBDR0Zsb2F0
IGRlc3RZID0gLWltYWdlSGVpZ2h0IC0gZGVzdGluYXRpb24ueSgpICsgc291cmNlLnkoKTsKLQot
ICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgsIGRlc3RZ
LCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKLQotICAgIENHQ29udGV4
dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKLX0KLQogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3Vi
aW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKICNpZiBDQUNIRV9TVUJJTUFH
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggNjEwNjRhODg2M2I0MGYxOTA1ZGFhNDA1MzM4
N2MyMjRiNjQyM2E4YS4uMjRmNmFmOWNhNzc2ZWMyODJhNzgyNmYyYWI0ODJlMThmYWJiYmI4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTYyLDggKzYyLDkgQEAgZW51bSBjbGFzcyBJdGVt
VHlwZSA6IHVpbnQ4X3QgewogICAgIERyYXdJbWFnZSwKICAgICBEcmF3VGlsZWRJbWFnZSwKICAg
ICBEcmF3VGlsZWRTY2FsZWRJbWFnZSwKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNF
KERJUkVDVDJEKQogICAgIERyYXdOYXRpdmVJbWFnZSwKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisgICAgRHJhd0ltYWdlQnVmZmVyLAogI2VuZGlmCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJh
d1JlY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5j
cHAKaW5kZXggMjNjYzA3ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4Ny4uZDQ2MTdk
MzUxNmY0ZjNlNTFkNzVkNjQ0MzRhNmEzOTQ1N2EwMDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRl
eHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBvYnNlcnZlcikK
K0RyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpEZWxlZ2F0
ZSogZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxh
eUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNw
bGF5TGlzdENvbnRleHQsIG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZs
b2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwgaW5pdGlhbENUTSwgb2JzZXJ2ZXIpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3Bs
YXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6
ZSksIGluaXRpYWxDVE0sIGRlbGVnYXRlKTsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJhZDgxNWE1MDA4
MWI3ZTdhYjEwODEzMTcxN2ZkZTU0My4uMjJlZDI1NmU4MGFkMjkzYTA1MjA2OWI3NDMwODhhMTM1
MWY0N2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEcmF3
aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6T2Jz
ZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFs
Q1RNID0geyB9LCBSZWNvcmRlcjo6RGVsZWdhdGUqID0gbnVsbHB0cik7CiAKICAgICBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERyYXdpbmdDb250
ZXh0Jj4oKnRoaXMpLm1fY29udGV4dDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyJiBy
ZWNvcmRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5k
ZXggODY3MmIxYjQ3MDg0NzY5MDE4NTA4NDk1OWE3N2FmNDJmZGI4MDQzZi4uMDNjYWVmMDU5ZDBl
OWUwNTZkYzQxYmE1NzU3YzVhMzcwZGViM2VhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBl
PgotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5k
VHlwZT4sIHB1YmxpYyBSZWNvcmRlcjo6T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VCdWZmZXIgOiBw
dWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAK
IHB1YmxpYzoKQEAgLTQ4LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlcihz
dGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFC
YWNrZW5kKSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5n
Q29udGV4dENUTShzaXplKSwgdGhpcykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUs
IGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSkKICAgICB7CiAgICAgfQogCi0gICAgSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRl
eHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgIEltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0
ZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJh
d2luZ0NvbnRleHRDVE0oc2l6ZSksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCBkYmYxODg0YTIxYTM0OWY2YWEwMzMzN2Y3
NmVkNTkyOTIzYzA0ZGUzLi44OGY4ODg5YWViMzdiYTZmZThmNjNhNjExOWY0MWQ4YWQ0ODhlNzEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgVVNFKENHKQpAQCAtMTA1LDkg
KzEwNCwxMSBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAg
ICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3VGlsZWRJbWFnZT4oaXRlbSkpOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICByZXR1cm4gc2l6
ZW9mKGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPihpdGVtKSk7Ci0jaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAg
ICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSkpOworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Cisg
ICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAj
ZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJuIHNp
emVvZihkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSkpOwpAQCAtNzAwLDMyICs3MDEsMjIgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdU
aWxlZFNjYWxlZEltYWdlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotI2lmIFVTRShDRykg
fHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorRHJhd05hdGl2ZUltYWdl
OjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VUeXBlJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAg
OiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQotI2lmIFVTRShDRykKLSAg
ICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCiAgICAgLCBtX2lt
YWdlKGltYWdlKQotI2VuZGlmCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBt
X2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQogICAg
ICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7Ci0jaWYgIVVTRShDRykKLSAgICBVTlVTRURfUEFSQU0o
aW1hZ2UpOwotI2VuZGlmCiB9CiAKIERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgp
ID0gZGVmYXVsdDsKIAogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKIHsKLSNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3Qs
IG1fb3B0aW9ucyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSNlbmRpZgor
ICAgIEFTU0VSVChuYXRpdmVJbWFnZVB0cigpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShuYXRpdmVJbWFnZVB0cigpLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3Jj
UmVjdCwgbV9vcHRpb25zKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKQEAgLTczNiw2ICs3Mjcs
MzMgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIs
IGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwogICAgIHJldHVybiB0czsKIH0KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKK0RyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyKQorICAgICwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIocmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgLCBtX3Ny
Y1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQoreworfQorCitEcmF3SW1h
Z2VCdWZmZXI6On5EcmF3SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRHJhd0ltYWdl
QnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAoreworICAgIC8vIFNob3VsZCBi
ZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERy
YXdJbWFnZUJ1ZmZlciYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3
aW5nSXRlbSY+KGl0ZW0pOworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVtb3RlLXJlc291cmNlLWlk
ZW50aWZpZXIiLCBpdGVtLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1w
UHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1cm4gdHM7
Cit9CiAjZW5kaWYKIAogRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKQEAgLTE0MjcsOCArMTQ0NSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJkcmF3LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVk
LXNjYWxlZC1pbWFnZSI7IGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsg
YnJlYWs7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAjZW5kaWYKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7
CkBAIC0xNTI4LDEwICsxNTQ3LDEzIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2Nh
bGVkSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPihp
dGVtKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3
TmF0aXZlSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICB0cyA8PCBk
b3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pOworICAgICAgICBicmVhazsKICNlbmRpZgog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxE
cmF3UGF0dGVybj4oaXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBm
MDU1ODY5ZTE3YWFhOTY2NGViNTNmYjFiZWU3OTU4MDY0MjhkMzYzLi5jOGFjMDBlMzRlMDk1ZjIy
ZWRiMGI2YmU1ODJhODcwYzhiZWE2MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdl
RGF0YS5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CiAKQEAgLTE0MzAsMzIgKzE0MzEsNTMgQEAgT3B0aW9uYWw8UmVmPERyYXdUaWxl
ZFNjYWxlZEltYWdlPj4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGUKICAgICByZXR1cm4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmNyZWF0ZSgqaW1hZ2VIYW5kbGUt
PmltYWdlLCAqZGVzdGluYXRpb24sICpzb3VyY2UsICp0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2
UnVsZSwgKmltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENB
SVJPKSB8fCBVU0UoRElSRUNUMkQpCiBjbGFzcyBEcmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJh
d2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVh
dGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisgICAgdXNpbmcgTmF0aXZlSW1hZ2VUeXBlID0gVmFyaWFudDxOYXRpdmVJbWFnZVB0ciwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICAKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+KG1faW1h
Z2UpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJl
bW90ZVJlc291cmNlSWRlbnRpZmllcj4obV9pbWFnZSk7CisgICAgfQorCisgICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VQdHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPE5hdGl2ZUltYWdlUHRyPihtX2ltYWdlKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TmF0aXZlSW1hZ2VQdHI+KG1f
aW1hZ2UpOworICAgIH0KKyNlbHNlCisgICAgdXNpbmcgTmF0aXZlSW1hZ2VUeXBlID0gTmF0aXZl
SW1hZ2VQdHI7CisgICAgCisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQdHIoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlOyB9CisjZW5kaWYKKworICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2
ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VUeXBlJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKTsKIAorICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2l6ZTsgfQogICAgIEZsb2F0UmVjdCBzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZl
SW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBE
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VUeXBlJiwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSNpZiBVU0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgbV9pbWFnZTsKLSNlbmRpZgorICAgIE5hdGl2ZUltYWdlVHlwZSBtX2ltYWdlOwogICAgIEZs
b2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CiAg
ICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAgLTE0NjUsMTAgKzE0ODcsNyBAQCBwcml2YXRlOgog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSNpZiBVU0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VIYW5k
bGUgaGFuZGxlIHsgbV9pbWFnZSB9OwotICAgIGVuY29kZXIgPDwgaGFuZGxlOwotI2VuZGlmCisg
ICAgZW5jb2RlciA8PCBtX2ltYWdlOwogICAgIGVuY29kZXIgPDwgbV9pbWFnZVNpemU7CiAgICAg
ZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsK
QEAgLTE0NzgsMTIgKzE0OTcsMTAgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJl
ZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotI2lmIFVTRShDRykKLSAgICBPcHRpb25hbDxOYXRpdmVJbWFnZUhhbmRsZT4gaGFu
ZGxlOwotICAgIGRlY29kZXIgPj4gaGFuZGxlOwotICAgIGlmICghaGFuZGxlKQorICAgIE9wdGlv
bmFsPE5hdGl2ZUltYWdlVHlwZT4gaW1hZ2U7CisgICAgZGVjb2RlciA+PiBpbWFnZTsKKyAgICBp
ZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAKICAgICBP
cHRpb25hbDxGbG9hdFNpemU+IGltYWdlU2l6ZTsKICAgICBkZWNvZGVyID4+IGltYWdlU2l6ZTsK
QEAgLTE1MDUsMTQgKzE1MjIsNzUgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERy
YXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcHRpb25z
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0jaWYgVVNFKENHKQotICAgIE5hdGl2
ZUltYWdlUHRyIGltYWdlID0gaGFuZGxlLT5pbWFnZTsKLSNlbHNlCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2UgPSBudWxscHRyOwotI2VuZGlmCi0gICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6
Y3JlYXRlKGltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9w
dGlvbnMpOworICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFn
ZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CiB9Ci0jZW5kaWYK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKK2NsYXNzIERyYXdJbWFnZUJ1ZmZlciA6IHB1Ymxp
YyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEcmF3SW1hZ2VCdWZmZXI+
IGNyZWF0ZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEcmF3SW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+RHJhd0ltYWdlQnVmZmVyKCk7CisKKyAgICBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMg
b3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3SW1hZ2VCdWZm
ZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
KworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgRmxv
YXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CisgICAg
SW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgRHJhd0ltYWdlQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7Cisg
ICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitP
cHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRp
b247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBz
b3VyY2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9u
cz4gb3B0aW9uczsKKyAgICBkZWNvZGVyID4+IG9wdGlvbnM7CisgICAgaWYgKCFvcHRpb25zKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIERyYXdJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKCpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsICpkZXN0aW5hdGlvbiwgKnNvdXJj
ZSwgKm9wdGlvbnMpOworfQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogY2xhc3Mg
RHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgpAQCAtMjkyNCwxMCAr
MzAwMiwxMyBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICBlbmNvZGVyIDw8
IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwot
I2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdO
YXRpdmVJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMpOworICAgICAgICBicmVhazsKICNl
bmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBlbmNvZGVyIDw8
IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhpcyk7CkBAIC0zMTEyLDExICszMTkzLDE1IEBAIE9w
dGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IGlmIChhdXRvIGl0ZW0gPSBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCpp
dGVtKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0Uo
RElSRUNUMkQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBp
ZiAoYXV0byBpdGVtID0gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsK
ICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdJbWFnZUJ1
ZmZlcjo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBE
cmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQpAQCAtMzI3MCw4ICszMzU1LDkgQEAgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdHbHlwaHMpCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlKQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZFNjYWxlZEltYWdlKQotI2lmIFVTRShD
RykgfHwgVVNFKENBSVJPKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdOYXRpdmVJbWFnZSkKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQogI2VuZGlmCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1JlY3QpCkBAIC0zMzMxLDkgKzM0
MTcsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJ
bWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdl
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1h
Z2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLSAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1h
Z2VCdWZmZXIsCiAjZW5kaWYKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3QsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBiZDA0MzhjNmE0YjI1NmM4ODU2YmIx
MjlhM2FiNWZhMjNlNzhkYzhhLi5kY2NjMDJkMTdlZTA2NDEzOGNiZjg5YTdkOTI1N2Y1MGNhNTFj
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTM3
LDEwICszOCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlh
bENUTSwgT2JzZXJ2ZXIqIG9ic2VydmVyKQorUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogR3Jh
cGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkp
CiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9vYnNlcnZlcihvYnNl
cnZlcikKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFN
KERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0
aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBp
bml0aWFsQ2xpcCB9KTsKQEAgLTUyLDE1ICs1MywxNSBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkK
ICAgICBMT0coRGlzcGxheUxpc3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rp
c3BsYXlMaXN0LmRlc2NyaXB0aW9uKCkuZGF0YSgpKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6cHV0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCit2b2lkIFJlY29yZGVyOjpwdXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKIHsKLSAgICBhcHBlbmRJ
dGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1h
dCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKKyAgICBhcHBl
bmRJdGVtKFB1dEltYWdlRGF0YTo6Y3JlYXRlKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1Jl
Y3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBw
ZW5kSXRlbShjb25zdCBJdGVtJiBpdGVtKQogewotICAgIGlmIChtX29ic2VydmVyKQotICAgICAg
ICBtX29ic2VydmVyLT53aWxsQXBwZW5kSXRlbShpdGVtKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkK
KyAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CiAKICAgICBpZiAoaXRl
bS5pc0RyYXdpbmdJdGVtKCkKICNpZiBVU0UoQ0cpCkBAIC0xMzYsMTMgKzEzNywzMyBAQCBJbWFn
ZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29y
ZDsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi12b2lk
IFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zLCBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCiB7CisgICAgaWYgKG1fZGVsZWdh
dGUgJiYgY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd05hdGl2ZUltYWdlSXRl
bSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsICpjYWNoZWRJbWFnZSkpIHsKKyAgICAgICAg
ICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0
ZW0oZHJhd05hdGl2ZUltYWdlSXRlbS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgICAgICB1
cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCiAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRl
bT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0
ZW0pOwogfQotI2VuZGlmCisKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBp
ZiAoIW1fZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZHJhd0lt
YWdlQnVmZmVySXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOworICAgIGlmICghZHJhd0ltYWdlQnVm
ZmVySXRlbSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0
ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShkcmF3SW1hZ2VCdWZmZXJJdGVt
LnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOworICAg
IHJldHVybiB0cnVlOworfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApp
bmRleCBkMjcwYzVkOTA4YWM2OGQ3ODA4MzYzYmJhOTFiMmU3NjFhZWRjOTJiLi5lZmFjNmJhY2U3
NDJjYzg3MGZkZGFjMTRjZGRmODdkODVjNDI4NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKICNpbmNsdWRlICJJbWFnZS5oIiAv
LyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCkBAIC01MywxNyArNTQsMTkgQEAgY2xhc3MgUmVjb3JkZXIgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNsYXNzIE9ic2VydmVyOwotICAg
IFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0Jiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBjbGFz
cyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQm
LCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVs
bHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3JkZXIoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5w
dXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7
CiAKICAgICBzaXplX3QgaXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5p
dGVtQ291bnQoKTsgfQogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVnYXRl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAg
IHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+IGNy
ZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgICAg
ICB2aXJ0dWFsIFJlZlB0cjxJdGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAgLTEwMiw5ICsxMDUs
OSBAQCBwcml2YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZS
dWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykg
fHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0jZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNoZWRJbWFnZSopIG92ZXJyaWRlOworICAgIGJv
b2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKQEAg
LTE4Myw3ICsxODYsNyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRl
KCk7CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBPYnNlcnZlciogbV9v
YnNlcnZlcjsKKyAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxDb250ZXh0
U3RhdGUsIDMyPiBtX3N0YXRlU3RhY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCBjZWEyYTZlYTA0NDUzNGZm
NDU0NGVhMjEwOWMyNjE3ZDc5N2NhMmYxLi4xYmMyMjZjMzkwYmFkY2RhZDMzMWFmMjQ5ZjU1NjE0
ZjEzYTUzNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1w
bChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2Fs
ZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSopCiB7CiAg
ICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVy
YXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAgICAg
ICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwpAQCAtNTcwLDYgKzU3MCwx
MiBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0CiAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJh
d05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpKTsKIH0KIAorYm9vbCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIHN0cnVjdCBEcmF3UGF0
dGVybiBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNm
b3JtLCBGbG9hdFBvaW50LCBJbWFnZVBhaW50aW5nT3B0aW9ucz4gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGRlMjRhYjhi
ZDUyNDMyY2UyOTNhODBmNmI0Zjk4NjBmMjIyZmE3ZmYuLmEyOTcyMDYxY2E4MzhkNmQ1MmU1NWM2
MzM5YTdkOTNiNGIwMjNjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY3LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFn
ZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CisKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJiwgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqKSBvdmVycmlkZTsKKyAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggMzc0MDcxNzE1YmNiNzkxZDU4OWQ1MGQ5
OWIyOWM2NmIwMTBiNzA4MS4uNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC0yMDcsMTYgKzIwNywxMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIERpcmVj
dDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IENP
TVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1w
bC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0Zm9y
bUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIERpcmVj
dDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJE
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UyNDdhN2Fk
NGNkMjk1MzhlNGVhZjQwYmQ4MDM2OTY4NjAwOGI4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCi0KLSNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMu
aCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHko
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHks
IEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgOiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0g
ICAgLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllcihpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi17Ci19
Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpjcmVhdGVCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigp
KTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNvbW1p
dEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIp
Ci17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoZmx1c2hJ
ZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmU5MjBlZmRkYzE3OWY2M2ZkNGZkMjRiY2Y3OTEzMjQxMDk1ZTYzNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCi0jaW5jbHVkZSAi
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50
aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWlu
dDhfdDsKLWNsYXNzIEltYWdlRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLQotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBNZXNzYWdlcyB0
byBiZSByZWNlaXZlZC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5p
bi4KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkg
Y29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYsIEltYWdlQnVmZmVySWRlbnRp
Zmllcik7Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LiBTZWUgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbi4KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKTsKLSAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1
ZmZlckZsdXNoSWRlbnRpZmllcik7Ci0KLXByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLSAgICBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCmluZGV4IDgxYjg5NzhkMGU3OTExNTdmOWM3ZTQ5NzAzOTgxN2U0Nzk1OWU1MTQuLjViM2E4
NzEyZWZjMTRjMmY0N2ViYTRiMjVjNWQyYzZiYjg5ODdlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aApAQCAtMjcsMjkgKzI3LDI5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNs
dWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXBsYXllcjo6RGVsZWdhdGUgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgewogICAgIHVzaW5nIEJhc2VDb25j
cmV0ZUltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlw
ZT47CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQ7CiAgICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKKyAgICB1c2luZyBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBi
YWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBi
YWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tlbmQpKQot
ICAgICAgICAsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShyZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHksIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICAgICAgLCBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAg
ICAgewotICAgICAgICBjcmVhdGVCYWNrZW5kKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9i
YWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2Jh
Y2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKSk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbW90ZUNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2Vu
ZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5k
LT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdl
QnVmZmVyUHJveHkoKQpAQCAtNjEsOSArNjEsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0
OwotICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7Ci0KICAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChkaXNw
bGF5TGlzdC5pdGVtQ291bnQoKSkgewpAQCAtNzIsMjcgKzY5LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VC
dWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIG1fYmFja2Vu
ZC0+Zmx1c2hDb250ZXh0KCk7Ci0gICAgICAgIGNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50
aWZpZXIpOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBib29sIGFwcGx5
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwotICAgIH0K
LQotICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoaXRlbS50
eXBlKCkgIT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YSkgeworICAgICAgICAgICAg
YXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpQdXRJbWFnZURhdGEmPihpdGVtKTsKKyAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFn
ZURhdGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1
dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBw
dXRJbWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogCi0gICAgICAgIGF1dG8mIHB1dEltYWdlRGF0YUl0ZW0gPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhJj4oaXRlbSk7Ci0gICAgICAgIHB1
dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0
ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJ
dGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuYXBwbHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQorICAgIAorICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKaW5kZXggZGJiNTViYTNjMjIwZGU4NmYxOGE1MzNjZmEwODcxOGYzODkyNGYwOC4uMzBi
NWRjMzRkMDQwNjhkODNkNmY0ODc0MDc5YWZmZTUxNmNhMGRkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5TWVzc2FnZXMuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Niw1OSArNjYsNDYgQEAg
dWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
dG9VSW50NjQoKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCitib29sIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oRGlzcGxheUxpc3Q6
Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
OwotICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5jb250YWlucyhpbWFnZUJ1
ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlQWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkg
ewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmll
cikpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuYXBwbHlSZXNvdXJjZUl0ZW0oaXRl
bSwgY29udGV4dCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxl
YXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW1vdGVDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIENyZWF0ZUltYWdlQnVmZmVy
IG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCi0gICAg
Ym9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIEltYWdlQnVmZmVySWRlbnRpZmllciBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAg
ICAgICBhdXRvIGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5nZXRJbWFnZURhdGEob3V0cHV0Rm9y
bWF0LCBzcmNSZWN0KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Ci0gICAgfQorICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNyZWF0ZUltYWdlQnVmZmVyKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2Rl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVy
RHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2lu
Z0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikp
Ci0gICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsK
KyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3Bs
YXlMaXN0LCBzaG91bGREcmF3R1BVQmFkZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4
dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBp
bWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgZmx1
c2hJZGVudGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBzaG91bGREcmF3R1BVQmFkZ2UsIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyLCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVj
dCBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gaW1hZ2VEYXRhID0gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuZ2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
eworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2Us
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5k
ZXggNjc2NGFjMTBjNWU3ZTAyYTRjOTc4NzdiOWM1ZTU1Y2EwYjc4Y2IxZS4uMDYyMjhmZWY5NGVh
ZTlmMjNhNzEyZGE0ODFhYmI2YWVmMDEwZmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaApAQCAtMjgsMjQgKzI4LDIzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgot
I2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNp
emUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIH0KK2NsYXNz
IEZsb2F0U2l6ZTsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNz
IFJlbmRlcmluZ01vZGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5
LDcgKzU4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KCk7CiAKLSAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXI7IH0KKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisKKyAgICAvLyBNZXNzYWdl
cyB0byBiZSBzZW50LgorICAgIHZvaWQgcmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKQEAg
LTczLDE0ICs3NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAg
ICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlbGVh
c2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaEltYWdlQnVmZmVy
RHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmll
cik7Ci0gICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYp
PiYmKTsKLQotICAgIHVzaW5nIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFw
PEltYWdlQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eT4+OwotICAgIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAg
bV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZl
ckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIGJvb2wgc2hvdWxkRHJhd0dQ
VUJhZGdlLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3OThj
OGI0ZWRiNTdmNWFkMDgyYmE4MWMxMDA4YjBkY2RlZmRmMThhLi5kNGVlYzRmOWJjMTNmYzQyOTVk
NGYzMGMzMDU0NmQ4M2VkMTg4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMiBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJlZkNv
dW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxv
Z2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6Oklt
YWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgdm9pZCBSZWxl
YXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllcikKLSAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3Qs
IFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikgLT4g
KElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIEZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxh
eUxpc3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1
ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCBkaXNwbGF5TGlzdCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYktpdDo6SW1hZ2VC
dWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIEdldEltYWdlRGF0
YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJl
bmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENhY2hlTmF0aXZlSW1hZ2UoV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNlUmVtb3RlUmVz
b3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFkOWZhNzEzZGQ2NjRjMmVjNmM2MmU5NGY2ZmYy
OTY4ZTE3N2RhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGxh
dGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQoreworfQorCit2b2lkIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuY29u
dGFpbnMocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2U7CisKKyAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBS
ZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCkKKyAgICAgICAgaW1hZ2UgPSBBY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlmICghaW1hZ2UgfHwgcmVuZGVyaW5nTW9kZSA9
PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkKQorICAgICAgICBpbWFnZSA9IFVu
YWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHks
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAg
bV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
V1RGTW92ZShpbWFnZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6
OmZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hh
bmdlKG1fc2hvdWxkRHJhd0dQVUJhZGdlLCBzaG91bGREcmF3R1BVQmFkZ2UpOworICAgIGF1dG8g
aW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIGltYWdlLT5mbHVzaERyYXdpbmdDb250
ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK0ltYWdlQnVmZmVyKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29u
c3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgYm9vbCBzaG91bGREcmF3
R1BVQmFkZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCit7CisgICAgYXV0byBpbWFnZSA9IGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3Qs
IHNob3VsZERyYXdHUFVCYWRnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAo
aW1hZ2UpCisgICAgICAgIGltYWdlLT5mbHVzaENvbnRleHQoKTsKKyAgICByZXR1cm4gaW1hZ2U7
Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKSBjb25zdAoreworICAgIGlmIChhdXRvIGltYWdlID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhh
c2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBpbWFn
ZS0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3Rl
TmF0aXZlSW1hZ2VIYXNoTWFwLmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQor
Cit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd0dQVUJhZGdlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2hvdWxk
RHJhd0dQVUJhZGdlKQorICAgICAgICByZXR1cm47CisgICAgY29udGV4dC5kcmF3R1BVQmFkZ2Uo
Y29udGFpbmVyUmVjdCwgY29udGFpbmVyUmVjdC5tYXhYTWF4WUNvcm5lcigpLCBjb2xvciwgdGV4
dCk7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3TmF0aXZlSW1hZ2VJ
dGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNw
bGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlJj4oaXRlbSk7CisgICAgYXV0byByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgPSBkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICBp
ZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBpbWFnZSA9IG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwLmdldChkcmF3SXRlbS5y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGRyYXdJdGVt
LmltYWdlU2l6ZSgpLCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgZHJhd0l0ZW0uc291cmNl
KCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgZHJhd0dQVUJhZGdlKGNvbnRleHQsIGRyYXdJ
dGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBXZWJDb3JlOjpDb2xvcjo6cmVkLCAiSU1BR0UiX3MpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJh
d0ltYWdlQnVmZmVySXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGF1dG8mIGRyYXdJdGVtID0gc3RhdGljX2Nh
c3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciY+KGl0ZW0pOworICAgIGF1dG8g
aW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQoZHJhd0l0ZW0ucmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCkpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGltYWdlLT5kcmF3KGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgp
LCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICBkcmF3R1BVQmFk
Z2UoY29udGV4dCwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIFdlYkNvcmU6OkNvbG9yOjpi
bHVlLCAiQ0FOVkFTIl9zKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVt
JiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgaWYgKGl0ZW0u
dHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQorICAgICAg
ICByZXR1cm4gZHJhd05hdGl2ZUltYWdlSXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICBpZiAoaXRl
bS50eXBlKCkgPT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpCisgICAg
ICAgIHJldHVybiBkcmF3SW1hZ2VCdWZmZXJJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5yZW1vdmUocmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlbW90ZU5h
dGl2ZUltYWdlSGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSByZXNvdXJjZSBzaG91bGQgaGF2
ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGZjMDUyYzI4NDY5NmVi
NzY0ZGFiNmRjZWU3ZjA3ZmU2YWZjOGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBE
aXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisKK2NsYXNzIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGZs
dXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRD
b21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgYm9vbCBzaG91
bGREcmF3R1BVQmFkZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OworCisgICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0
ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmKSBjb25zdDsKKworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+OworICAgIHVzaW5n
IFJlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj47CisKKyAgICB2b2lkIGRyYXdH
UFVCYWRnZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiB0
ZXh0KSBjb25zdDsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAg
ICBib29sIGRyYXdJbWFnZUJ1ZmZlckl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKworICAgIFJlbW90ZUltYWdl
QnVmZmVySGFzaE1hcCBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcDsKKyAgICBSZW1vdGVOYXRp
dmVJbWFnZUhhc2hNYXAgbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXA7CisgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKyAgICBi
b29sIG1fc2hvdWxkRHJhd0dQVUJhZGdlIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNzBkM2Q4OGYyYmY0YTZmMWNmYzRmMTg4NzA0
ZWQ2NzcwZTQ5NzdhZi4uYTBjZmNlNmMwMTI0ODVjYjNmZTdjZDYxM2NmZjE5NjFmYjJiMTZhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTYsMTEgKzIx
NiwxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHInLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2lu
dGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlbmRlcmlu
Z01vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApAQCAtMjM4LDcgKzI0
MCw2IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAg
ICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Oklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktp
dDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jl
c29sdmVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCBlMGJiYmJjNWJhMjMxOGJmYThlNjMxOTZkNTRlZWJiODkwMzY0
NDQxLi5hMDc3NTMwOTU3YmE4ZDQ3ZDU0MjliYWRkNjY3NTc1NTRkMDYyMTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAsNyAr
MTEwMCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIE5hdGl2ZUlt
YWdlUHRyIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGF1dG8gaW1hZ2VTaXpl
ID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKQEAgLTExNDMsNyArMTE0Myw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNv
ZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgTmF0aXZl
SW1hZ2VQdHIgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBib29s
IGhhc0ltYWdlID0gISFpbWFnZTsKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwpAQCAtMTE2Niwx
NCArMTE2NiwxNCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9u
YWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgogICAgIHJldHVybiBkZWNvZGVO
YXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRp
dmVJbWFnZUhhbmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFn
ZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCit2b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQog
ewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2VIYW5kbGUuaW1h
Z2UuZ2V0KCkpOworICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2Up
OwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdlSGFuZGxlKQorYm9vbCBBcmd1
bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZShkZWNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZSk7CisgICAgcmV0dXJuIGRlY29kZU9wdGlvbmFs
TmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
PEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250
PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggMDVkMDM1NTRiOWVjYTlhMDQxYzM2OGVmNDUzODgyNDQzNGNlNmUyMy4uOWYzYjEwNjY5
MzMzYmEzMDE1Mjk3ODNjOWUxZTkxZWFiYTRjYWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TmF0aXZlSW1hZ2VQdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC0xMDUsNyArMTA2LDYgQEAgY2xhc3Mg
S2V5ZnJhbWVWYWx1ZUxpc3Q7CiBjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgTGF5b3V0UG9pbnQ7
CiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbjsKLWNsYXNzIE5hdGl2ZUltYWdlSGFuZGxlOwog
Y2xhc3MgTm90aWZpY2F0aW9uOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBQ
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOwpAQCAtNDE2LDkgKzQxNiw5IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJ
bWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpOYXRpdmVJbWFnZUhhbmRsZT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKLSAgICBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhh
bmRsZSYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwogfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA3MzBk
YTY0OGYyYjJmZTllNzg0ZmQwNDA1MmUxOTBmMGQwYmYyMWFkLi43NGYwZDI1YjljZDQxZTc3ZmUx
NTNjNzUzZGEwZDFmYjRhMDZhNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDYsMTIgKzEwNiwyNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291
cmNlKQogewotICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwg
MSwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgcGFpbnQoY29udGV4dCwgMSwgZGVzdGluYXRp
b24sIHNvdXJjZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBkcmF3TmF0aXZl
SW1hZ2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIHNjYWxlRmFjdG9yLCBkZXN0aW5hdGlv
biwgc291cmNlKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisgICAgCisg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24u
eCgpLCBkZXN0aW5hdGlvbi55KCksIHNvdXJjZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsK
KyAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKKyAgICAKKyAgICBhdXRv
IGltYWdlID0gbWFrZUNHSW1hZ2VDb3B5KCk7CisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBp
bWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOwor
ICAgIAorICAgIENHRmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2UueCgpOwor
ICAgIENHRmxvYXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkgKyBzb3Vy
Y2UueSgpOworICAgIAorICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1h
a2UoZGVzdFgsIGRlc3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsK
KyAgICAKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7CiB9CiAKIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCBiYzJjNDk0M2FlYmU1Y2NhZjhiOTQ3ZWQ3MWFlMDMwZjRmMzJkOTgzLi4xZjYx
MzE4OTI4ZTlkMTY2Y2E1ZjAyZmU3OTdkZjQyNjk3YTRlNTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0
LDggKzI0LDggQEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKLUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcApAQCAtNTUxLDggKzU1MSw4IEBAIFdl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKLVdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIFdlYlByb2Nlc3MvR1BV
L21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTcyMTM1NjJhYmMxYmUzODQyYmUzMWU4NjE3Mzcw
ZGUyODc4Y2QwYS4uMmJlNzdkNGM4NDNlNWM1Y2UwMmM2MWM2MzNmYjUyM2JjNTdhMmIwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
ODYzLDcgKzM4NjMsNiBAQAogCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MDY0MEEz
MjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQw
OTQ0MjQwOEFCQjMwMERFNEQyRiAvKiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDE0NSwxMCArNDE0NCw3IEBACiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdE
NjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
bW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZCODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0
ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZC
IC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAw
QzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8q
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3MjI3ODAxMTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDEy
MjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzUyNDA3ODU3RjAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzYyNDA3ODhGMDAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNTgsNiArNDE1NCwxMCBAQAogCQk3
MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBp
Y2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNv
bG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFOTI1
MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVSZXNvdXJjZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRENB
MUVBMjUyNDI0Q0UwMEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkRDQTFFQjI1MjcxNDUxMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRENBMUVDMjUyNzE0NTEwMEM5QjIwRCAv
KiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0MTg3
Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRh
U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkQ0MTg3RDFDMDEw
MEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODAyMSwxNyArODAyMSwxNyBAQAogCQkJCTcyN0E3RjMzMjQw
Nzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEg
LyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDQyNDA4QUJCMzAw
REU0RDJGIC8qIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmggKi8sCi0JCQkJNTUwNjQwQTUy
NDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3
RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyog
UGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0
MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCTcy
N0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovLAotCQkJCTcy
Mjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
LmNwcCAqLywKIAkJCQk3MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUw
NDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLAogCQkJCTU1MDY0MEEwMjQwNzE5RTEw
MEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluICovLAorCQkJCTcy
RENBMUVBMjUyNDI0Q0UwMEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLywKKwkJ
CQk3MkRDQTFFOTI1MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovLAog
CQkJCTU1MDY0MDlGMjQwNzE5NkEwMEFBRTA0NSAvKiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKQEAgLTgwNDEsMTIgKzgwNDEsMTIg
QEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTVBRDA5NDMyNDA4
QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAotCQkJ
CTcyMjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuY3BwICovLAotCQkJCTcyMjc4MDEyMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJF
MDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1MDY0MEEyMjQw
NzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJ
CTU1MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aCAqLywKIAkJCQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTcyRENBMUVCMjUyNzE0NTEwMEM5QjIwRCAv
KiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovLAorCQkJCTcyRENBMUVDMjUyNzE0NTEw
MEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gZ3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMWJjOWFlODdkYzhkNzI0
MjhhMGI4MDljYWQwZDgwYTRjZDFjYjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlcklkZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVt
IEltYWdlQnVmZmVySWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgSW1hZ2VCdWZmZXJJZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKaW5kZXggZTg0OTE2NjQ1MTQ1OTYyODdlZjJjNzhmOTA3NmUxZDQzODIxOTFm
Mi4uMzQyYjA1ZTA3ODY4NzZmM2Y2NDZhNDhiZGJkOGJlNjFjZDA1ZGYzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaApAQCAtMjgsNiArMjgsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZWNvcmRl
ci5oPgpAQCAtMzcsMTAgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFz
cyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VC
dWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ciB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdh
dGUgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyOjpjb250ZXh0OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKQEAgLTUzLDE0ICs1NiwyMCBAQCBwdWJsaWM6
CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIoKQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZsdXNoRHJh
d2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZWxlYXNl
SW1hZ2VCdWZmZXIoKnRoaXMpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
bW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlSW1hZ2VC
dWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUpCi0gICAg
ICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihzaXplLCByZW5kZXJpbmdNb2Rl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisg
ICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICAgICAg
LCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCkpCiAgICAgeworICAgICAgICBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKICAgICB9CiAKICAgICB2b2lk
IGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlKSBvdmVycmlkZQpAQCAtNjgsMjMgKzc3LDUyIEBAIHByb3RlY3RlZDoKICAgICAgICAg
QVNTRVJUKCFtX2JhY2tlbmQpOwogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIEJh
Y2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICBpZiAoIW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1h
Z2VCdWZmZXImPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZv
ckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJu
IG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFj
a2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250
ZXh0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3
aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1D
b3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+ZHJhd0dQVUJhZGdlKGNvbnRleHQo
KSwgV2ViQ29yZTo6RmxvYXRSZWN0KHsgfSwgbV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpKSwgV2Vi
Q29yZTo6Q29sb3I6OmRhcmtHcmVlbiwgIkdQVSJfcyk7CisgICAgICAgIG1fc2VudEZsdXNoSWRl
bnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVh
c2VSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBkaXNw
bGF5TGlzdC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxp
c3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0
IG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0
ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5tX2RyYXdpbmdDb250ZXh0
LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0
aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4
dChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY29uc3RfY2FzdDxSZW1vdGVJ
bWFnZUJ1ZmZlcio+KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJ
bWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0
Lml0ZW1Db3VudCgpKSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVy
Kj4odGhpcyktPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICAgICAg
ZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0
YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUg
Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlR2V0
SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KIAogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VE
YXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZGVzdFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRl
c3RGb3JtYXQgPSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
KSBvdmVycmlkZQpAQCAtOTUsMjYgKzEzMywzMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJh
d2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0
YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKLSAgICB2b2lkIGZs
dXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFn
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAg
ICAgICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShp
bWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQor
ICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUlt
YWdlSXRlbShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6Oklt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVk
SW1hZ2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJh
d2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1D
b3VudCgpKQotICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1
c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAo
IW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5jcmVhdGVEcmF3TmF0aXZl
SW1hZ2VJdGVtKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBj
YWNoZWRJbWFnZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KLSAgICAKKwog
ICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0m
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJh
dGNoU2l6ZSA9IDUxMjsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+
PSBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICBp
ZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmbHVz
aERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIo
KTsKICAgICB9CisKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
bV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzE1MGM3YjA3OTNhZmU5YWM1YzgzYTlhYzc0NmJhMzE4
ZTUxYjhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdl
RGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNp
bmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKSkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmlu
Z01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KCkpOwotfQotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcigpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS4KLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkpOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0
SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIp
LCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGE6OlJl
cGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJl
bmNlLmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6
OndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQotewotICAgIGlmIChtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgJiYgIWlzQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNvbW1pdEltYWdl
QnVmZmVyRmx1c2hDb250ZXh0KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
ICYmIGlzUGVuZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+
d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRD
b21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsK
LSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckNvbW1p
dEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0g
Zmx1c2hJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyLmgKaW5kZXggNjIwNDE4ZDc4YzI3ZjI4YzU3NDkwMmMyZTFiYTlhMjM3MTc1MTdiOS4u
ODI0NjBhMTZjZWJmMzQ5YTkzNGJiODE2NDQxZDAwOTVkZTExMjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTI5LDExICsyOSw5IEBACiAKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nTW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTQy
LDM3ICs0MCwyMCBAQCBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsK
LQogY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpOwotCi0gICAgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2VCdWZmZXJJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZl
ZC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCiAgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7CiAK
LSAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7
Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYp
OwotCi0gICAgdmlydHVhbCBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCA9IDA7CiAgICAg
Ym9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmll
ciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0g
ICAgdm9pZCB3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci0gICAgdm9pZCB3YWl0
Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKKyAgICB2b2lkIGNvbW1pdEZsdXNo
Q29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCisgICAg
eworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwor
ICAgIH0KIAotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7
Ci0KLXByaXZhdGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIHsgSW1hZ2VCdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Citwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpID0g
ZGVmYXVsdDsKIAogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRl
bnRpZmllcjsKICAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOTk1MzQxNzg3
ZWRhMjBhNTU0ZTRkNjdiYTUzZGM2OThhNTM3MGNjMC4uMjM0NDk5NmE0MTA0YzljN2ViNmFiYzg1
MjgyZDEyYzZlYWNhMWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZURhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKQEAgLTM5LDEyICs0MCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUo
KQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZShXZWJQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihu
ZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChwYWdlKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZChXZWJQYWdlJiBwYWdlKQorICAgIDogbV9yZW1vdGVSZXNv
dXJjZUNhY2hlKCp0aGlzLCBwYWdlKQogewogICAgIC8vIFJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1l
c3NhZ2VSZWNlaXZlciBpbiB0aGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uCiAgICAgSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CkBA
IC04Niw0MCArODgsODIgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWl0Rm9yQ29t
bWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQogICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0
Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVz
c2FnZUFycml2ZXMpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRyYXdHUFVC
YWRnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY29udGFpbmVy
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmRyYXdHUFVCYWRnZShjb250ZXh0LCBjb250YWluZXJSZWN0LCBj
b2xvciwgdGV4dCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBT
aG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNo
b3VsZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsK
LSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZm
ZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzaG91bGRBY2NlbGVy
YXRlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7Cisg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VJbWFnZUJ1ZmZlcihpbWFnZSk7Cit9CisK
K1JlZlB0cjxEaXNwbGF5TGlzdDo6SXRlbT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
RHJhd0ltYWdlQnVmZmVySXRlbShJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKQoreworICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlRHJhd0lt
YWdlQnVmZmVySXRlbShpbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHJlbW90ZUNs
aWVudElkZW50aWZpZXIpOworfQorCitSZWZQdHI8RGlzcGxheUxpc3Q6Okl0ZW0+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlLCByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVt
b3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlQ2xpZW50KHJlbW90
ZUNsaWVudElkZW50aWZpZXIpOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6Omdl
bmVyYXRlKCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisK
K1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVD
YWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Q2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJu
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30KIAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAq
dGhpcykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFn
ZUJ1ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAg
ICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAgIH0KK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3Jj
UmVjdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOworICAgIHJldHVybiBpbWFnZURhdGFS
ZWZlcmVuY2UuYnVmZmVyKCk7Cit9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGRpc3Bs
YXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQor
CitJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1v
dGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCit7CisgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgc2VudEZsdXNo
SWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1
ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJl
dHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVt
b3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJl
ZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAg
QVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBoYW5kbGUsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAg
IGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Ojpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
ciBmbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNo
Q29udGV4dChmbHVzaElkZW50aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAppbmRleCBmNDk2MTU4ZTdkNDBlZWIwNWFjMzk0MzRhZjI0NjMzYmFiYzdmMGVm
Li5iYmFmOTM1Y2RkMTIxNTc3OWQ5ZTdmZWFmODEyYTM4YjNjNjhkYWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaApAQCAtMjksMzEgKzI5LDM2IEBACiAKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
ci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VD
YWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3Qgewor
Y2xhc3MgRGlzcGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQorY2xhc3MgRmxvYXRTaXplOworZW51
bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6
IHVpbnQ4X3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQYWdlOworCiBj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2Vu
ZGVyCiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gewogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKCk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoV2Vi
UGFnZSYpOwogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAotICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQotCiAgICAgLy8gSVBDOjpNZXNz
YWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNjEsMjEgKzY2LDMzIEBAIHB1YmxpYzoKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7Ci0gICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXJJZGVudGlmaWVyKTsKLQogICAgIGJvb2wgd2FpdEZvckNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZCgpOwogICAgIGJvb2wgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0
KCk7CiAKKyAgICAvLyBSZXNvdWNlIGNhY2hlLgorICAgIHZvaWQgZHJhd0dQVUJhZGdlKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGFpbmVy
UmVjdCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICB2b2lkIHJlbGVhc2VJ
bWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlv
bnMmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwg
V2ViQ29yZTo6Q2FjaGVkSW1hZ2UmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KKyAgICBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHJlbW90ZUdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciByZW1vdGVGbHVzaERyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVSZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKwog
cHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZChXZWJQYWdlJik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
LSAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisgICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIHVz
aW5nIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRl
bnRpZmllciwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OwotICAgIEltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAg
IFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwogICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDEyYTdiZjhkYTRjODI1NzBiY2Ez
NmExMzVmZDcxYWYyNTg4YjY0ZDUuLjJjMGY3ZThhMTIwM2YyNjg2NTJhMDBmYzFmN2IxN2RhNTk5
ZDJhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
QEAgLTIzLDggKzIzLDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFu
ZGxlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Ci0gICAgdm9pZCBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChXZWJLaXQ6OkltYWdlQnVm
ZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6SW50U2l6
ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
KyAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0
Y2Q5ZmUxMTc1YTU0Y2VmN2Y5YTI2MDczYTNiNWYyOGJlMjkxNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHAKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCisjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NhY2hlZEltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAsIG1fcGFnZShwYWdlKQorewor
fQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6OnNob3VsZERyYXdHUFVCYWRnZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNob3dEZWJ1Z0Jv
cmRlcnMoKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkcmF3R1BVQmFkZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmICghc2hvdWxk
RHJhd0dQVUJhZGdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBGbG9hdFJlY3QgYm9yZGVyUmVj
dCA9IGNvbnRhaW5lclJlY3Q7CisgICAgYm9yZGVyUmVjdC5pbmZsYXRlKC0xKTsKKyAgICBjb250
ZXh0LmRyYXdHUFVCYWRnZShib3JkZXJSZWN0LCBib3JkZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCks
IGNvbG9yLCB0ZXh0KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNo
b3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0gU2hv
dWxkQWNjZWxlcmF0ZTo6WWVzKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlID0gQWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFj
Y2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCkpIHsKKyAgICAgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChp
bWFnZS5nZXQoKSwgaW1hZ2UtPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICAgICAg
ICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRkKGltYWdlLT5y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICAgICAgcmV0
dXJuIGltYWdlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBVbmFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkpIHsKKyAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAu
YWRkKGltYWdlLmdldCgpLCBpbWFnZS0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAg
ICAgICBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmFkZChpbWFnZS0+
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IGltYWdlOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7
CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFn
ZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKK30KKwordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZs
dXNoSWRlbnRpZmllcik7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4g
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGll
bnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gZmlu
ZEltYWdlQnVmZmVyRm9yQ2xpZW50KGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgLy8gRmx1c2ggdGhlIERyYXdpbmdDb250ZXh0IG9mIHRoZSBzb3VyY2UgSW1hZ2VCdWZm
ZXIgc28gdGhpcyBJbWFnZUJ1ZmZlciBnZXRzIGFuIHVwZGF0ZWQgaW1hZ2UuCisgICAgaW1hZ2Uu
Zmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgIHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbT4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1
dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KGNh
Y2hlZEltYWdlLCBpbWFnZSwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
K30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVh
c2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSBy
ZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQo
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNo
b3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9v
bCBmb3VuZCA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3Zl
KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91
bmQpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3Vy
Y2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3Rl
UmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNl
SWRlbnRpZmllciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlTmF0aXZlSW1hZ2UoY29uc3Qg
V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdlKQoreworICAgIC8vIFJlbW92ZSB0aGUgcmVz
b3VyY2UgZnJvbSB0aGUgY2FjaGUuCisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
PSBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC50YWtlKGltYWdlKTsKKworICAgIC8vIFRlbGwg
dGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlIHVubGVzcyBpdCdzIHBlbmRp
bmcgcmVwbGF5aW5nIGJhY2suCisgICAgaWYgKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAg
ICAgICAgcmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOwor
fQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZElt
YWdlQnVmZmVyRm9yQ2xpZW50KEltYWdlQnVmZmVyJiBpbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQoJmltYWdlKTsKKyAg
ICBhZGRSZW1vdGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZE5hdGl2ZUlt
YWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50
SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVt
b3RlTmF0aXZlSW1hZ2VIYXNoTWFwLmVuc3VyZShpbWFnZSwgWyZdIHsKKyAgICAgICAgY2FjaGVk
SW1hZ2UuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5yZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CisKKyAgICBhZGRSZW1vdGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudChSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIXJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWRkIHRoZSAi
cmVzb3VyY2UgLT4gY2xpZW50IiBkZXBlbmRlbmN5IGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRz
SGFzaE1hcC4KKyAgICBhdXRvJiBjbGllbnRzID0gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNo
TWFwLmVuc3VyZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgIHJldHVy
biBSZW1vdGVDbGllbnRzSGFzaFNldCgpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAg
IGNsaWVudHMuYWRkKHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworfQorCitWZWN0b3I8UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGll
bnQoUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCYgcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7
CisgICAgVmVjdG9yPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VDbGll
bnRzVG9CZVJlbW92ZWQ7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGll
bnQgZGVwZW5kZW5jaWVzIGZyb20gcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4KKyAgICBm
b3IgKGF1dG8mIHBhaXIgOiByZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwKSB7CisgICAgICAg
IHBhaXIudmFsdWUucmVtb3ZlKHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAo
cGFpci52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZW1vdGVSZXNvdXJjZUNsaWVudHNU
b0JlUmVtb3ZlZC5hcHBlbmQocGFpci5rZXkpOworICAgIH0KKworICAgIC8vIFJldHVybiBhIGxp
c3Qgb2YgdGhlIHVucmVmZXJlbmNlZCByZXNvdXJjZXMuCisgICAgcmV0dXJuIHJlbW90ZVJlc291
cmNlQ2xpZW50c1RvQmVSZW1vdmVkOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJl
bGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX3JlbW90
ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5jb250YWlucyhyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpKTsKKyAgICAKKyAgICAvLyBJZiB3ZSBoYXZlIHJlY29yZGVkIHRoZSBy
ZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jeSBiZWZvcmUgaW4gbV9yZW1vdGVSZXNvdXJjZUNs
aWVudHNIYXNoTWFwLCBtb3ZlIHRoaXMKKyAgICAvLyBkZXBlbmRlbmN5IHRvIG1fcmVtb3RlUmVz
b3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLiBPdGhlcndpc2UgcmVtb3ZlIHRoZSBy
ZXNvdXJjZSBmcm9tIHRoZSBjYWNoZWQuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRz
SGFzaE1hcC5jb250YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3Jl
bW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5yZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlQ2xpZW50
KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAg
IC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSBt
X3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50
c0hhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291
cmNlQ2xpZW50c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAg
ICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20g
bV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgZm9yIChh
dXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90
ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRp
ZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzIGZy
b20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgICAg
IG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLnJlbW92ZShyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNz
IHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJkYTcyZTUzNzYy
NzE4OGZlZTAwNDJiZGNhNmM4YTA0MGFhNzE5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0w
LDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEltYWdlQ2xpZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1h
Z2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIEl0ZW07Cit9
CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworY2xhc3MgQ29sb3I7CitjbGFzcyBG
bG9hdFJlY3Q7CitjbGFzcyBGbG9hdFNpemU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDsKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUg
OiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQgeworcHVibGljOgorICAgIFJlbW90
ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIFdlYlBhZ2UmKTsKKworICAg
IGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3R1BVQmFkZ2Uo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjb250
YWluZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgdGV4dCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCBj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VC
dWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW0+IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW0+IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6
OkNhY2hlZEltYWdlJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAK
KyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYp
OworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcg
UmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciosIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47
CisgICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1
c2luZyBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVudHNIYXNoU2V0PjsKKyAgICB1c2luZyBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
Kj47CisKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUgeyByZWxlYXNlTmF0aXZlSW1hZ2UoaW1h
Z2UpOyB9CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZEltYWdl
QnVmZmVyRm9yQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
ZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29uc3QgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZFJlbW90ZUNsaWVudChXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VD
bGllbnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVD
bGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdS
ZW1vdmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBS
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAg
UmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAg
IFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNo
TWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNs
aWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcDsK
KyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Cisg
ICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDE4OGJj
NWU5ZWI5ZGI3NDQwNWUwOGY2ZTA1ODIzZWEzYzM3YTgyYTEuLjUzNmQ2ZTk1ZTBmODY0Y2VmNTli
MGNiY2JhNGVmZThjNTgwODJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04NzcsNyAr
ODc3LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGYKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQm
IFdlYkNocm9tZUNsaWVudDo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpOworICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVh
dGUobV9wYWdlKTsKICAgICByZXR1cm4gKm1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410739</attachid>
            <date>2020-10-07 02:17:19 -0700</date>
            <delta_ts>2020-10-07 02:42:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217342-20201007021718.patch</filename>
            <type>text/plain</type>
            <size>186836</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVlMmVhNmQ0MGE3NWY5
ODIzNWZlYzQyNDg3ZDQ0MWIwMDBlNzdhYy4uYmJmYjVlMTk5YWZkM2NjYTZhMDRmNjc3YWFhOWUz
NjIyNTMyNGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0xMC0wNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gSW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB3b3JrIGlu
IHByb2dyZXNzIHBhdGNoLiBUaGUgZ29hbCBpcyB0byBnZXQgdGhlIEVXUyBib3RzIGNsZWFuIAor
ICAgICAgICBmaXJzdC4gVGhlbiBpdCBtYXkgYmUgc3BsaXQgaW50byBzbWFsbGVyIHBhdGNoZXMu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VX
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xldmVs
Rm9yU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdHUFVCYWRn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVzdHJv
eURlY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
SWRlbnRpZmllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJh
d2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBs
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVy
OjpEcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05h
dGl2ZUltYWdlOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6bmF0aXZlSW1hZ2VQdHIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmltYWdl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
TmF0aXZlSW1hZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpzb3VyY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVz
dGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
SW1hZ2VCdWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6On5EZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjcmVhdGVEcmF3
TmF0aXZlSW1hZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVsZWdhdGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6OndpbGxB
cHBlbmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMTAtMDYgIEFuZHJlcyBHb256YWxl
eiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXNpZGVudGlhbCBFeGVjdXRp
dmUgT3JkZXIgcGFnZXMgbm90IGFjY2Vzc2libGUgd2l0aCBTYWZhcmkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ0
ZDQ1Njk4MGNiZjE4MTM2YWVhOTg2MWZkMDUxMmVkN2NmYzE4MzYuLjA3NDAyYzFkODMwMTZlMDU1
YjI4ZjRlMzBhNzE2YzgwZmVlZmVlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDIw
LTEwLTA3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgR1BVIHJlbmRlcmluZyByZXNvdXJjZSBjYWNo
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW1vdGVDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFn
ZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdHUFVCYWRnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd05hdGl2ZUltYWdlSXRlbSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd0ltYWdlQnVmZmVy
SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
YXBwbHlSZXNvdXJjZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxOYXRpdmVJbWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OnBhaW50KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
cjo6flJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjpjb21taXRGbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjppbWFnZUJ1ZmZlcklkZW50aWZpZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRyYXdHUFVCYWRnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVy
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURy
YXdOYXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpyZWxlYXNlUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6
OlJlbW90ZVJlc291cmNlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpzaG91bGREcmF3R1BVQmFkZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpkcmF3R1BVQmFkZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVy
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdO
YXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZWxlYXNlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjphZGRSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVt
b3ZlQ2xpZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVh
c2VSZW1vdGVDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29uc3QpOgorCiAyMDIwLTEwLTA2ICBQ
ZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBw
cm9jZXNzXSBEb24ndCB1c2UgJ2lkJyBhcyBhIHBhcmFtZXRlciBvciB2YXJpYWJsZSBuYW1lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCA1ZGMxYjlmZTZhNjVkODMwMzU2OTA4Nzk1OTFjY2QyYmVhNmQy
MmIwLi4wZmE1NzZmNWFiMWUxNDAxNGM2YjRjNzcxMDU0N2EzZWVkMTZlMjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTExOTIsNiArMTE5Miw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTEy
MDUsNiArMTIwNiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjY2RiZGI1ZTQwYzIxMzM3ZGQ5MmY0YjNhNTBhN2JlMzA4MzRiYTFkLi4wYzJmMmQ1Mjcy
NWE0NjE2Y2QxOTFjN2IzYzJjNjU5ZWNlNmQ4NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY3LDYgKzIxNjcsOCBAQAog
CQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJh
bWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUyM0UxRjBC
MDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTcyQkVGQTFBMjUxQkVGRkUwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
QkVGQTE5MjUxQkVGRkQwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkRDQTFFODI1
MjNERkMwMDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRENBMUU2MjUyM0RFNTUwMEM5QjIwRCAvKiBOYXRp
dmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rvcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTNDRkU2
MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLzsgfTsKIAkJNzU3
OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFODEwRDBDRTBCMzAwN0ZDMEFDIC8q
IE1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNN
ZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1NzkzRUM3MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5oICovOyB9OwpA
QCAtOTk0Miw3ICs5OTQ0LDkgQEAKIAkJNzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJCQUMzQUMyM0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQUQyM0UxRTU0NTAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyQkVGQTE5MjUxQkVGRkQwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQzE4QTNGMjMwQjA0Qjcw
MDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVBh
aW50aW5nT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFNjI1
MjNERTU1MDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZl
SW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQy
RjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0
MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNjIzNiw2ICsyNjI0MCw3IEBACiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQx
OTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCTZCMzQ4MDkyMEVFRjUw
RDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5RjQwMDIy
QzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyRENBMUU2MjUyM0RFNTUwMEM5QjIwRCAv
KiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQ
YXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAog
CQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICov
LApAQCAtMjYyNTMsNiArMjYyNTgsNyBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAv
KiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9u
LmggKi8sCisJCQkJNzJCRUZBMTkyNTFCRUZGRDAwREQ3OEQyIC8qIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllci5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1vdGVWaWRl
b1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJlbW90ZVZp
ZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmlu
Z01vZGUuaCAqLywKQEAgLTMzMTg4LDYgKzMzMTk0LDcgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0Mw
MDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5
NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjM0
ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyRENBMUU4MjUyM0RGQzAwMEM5QjIwRCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0
aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4
OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNTYwLDYgKzMzNTY3
LDcgQEAKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90
ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQkVG
QTFBMjUxQkVGRkUwMERENzhEMiAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3M0ExNTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92
ZUZvcm1hdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2
RTU4MSAvKiBSZW1vdmVOb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuY3BwCmluZGV4IGI2NzdmMWQ0MDg3YzI1YWEzYjliZDc4NmU3MzFjMDU2Mjg1
ZDc2MGQuLjU0ZWYyYjY5NTc0ZGEzNTUzMmY1ZmY0ZDk2MzFmZTE3ZWU2ZDc3ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC02MDIsMTAgKzYwMiwxNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZykgb3Zl
cnJpZGUgeyB9CiAKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2
ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICB9Cisg
ICAgCiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKICAgICBi
b29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFn
ZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVz
ID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbmF0aXZl
SW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYp
IG92ZXJyaWRlIHsgfQorCiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29u
c3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDVjYzkzMzgzMjU3NGRjYmViZWQ4
MmMyYzBiY2U4ZjAwYzJiY2E3MmUuLjgyZDI5MTljODNjYTdjNDBiZWIzZjkwMmY4YzZjNzhiZWU3
ZWJkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDExLDYgKzQxMSwxNyBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVy
OjpkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmIGltYWdlLCBsbwogICAgICAgICBjYWNo
ZWRJbWFnZS0+ZGVjb2RlZFNpemVDaGFuZ2VkKGltYWdlLCBkZWx0YSk7CiB9CiAKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFn
ZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hl
ZEltYWdlcykgeworICAgICAgICBpZiAoJmltYWdlICE9IGNhY2hlZEltYWdlLT5pbWFnZSgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5h
dGl2ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBjYWNoZWRJ
bWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UobmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwor
fQorCiB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkaWREcmF3KGNvbnN0
IEltYWdlJiBpbWFnZSkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZElt
YWdlcykKQEAgLTQzNCw2ICs0NDUsMTIgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VP
YnNlcnZlcjo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEkKICAgICAg
ICAgY2FjaGVkSW1hZ2UtPmltYWdlRnJhbWVBdmFpbGFibGUoaW1hZ2UsIGFuaW1hdGluZ1N0YXRl
LCBjaGFuZ2VSZWN0LCBkZWNvZGluZ1N0YXR1cyk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OkNh
Y2hlZEltYWdlT2JzZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdl
JiBpbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQoreworICAgIGZvciAo
YXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQorICAgICAgICBjYWNoZWRJbWFnZS0+
bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoaW1hZ2UsIG5hdGl2ZUltYWdlKTsKK30KKwogdm9p
ZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6Y2hhbmdlZEluUmVjdChjb25zdCBJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiB7CiAgICAgZm9yIChhdXRvIGNhY2hl
ZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCkBAIC02ODksNiArNzA2LDE2IEBAIHZvaWQgQ2FjaGVk
SW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1h
dGluZ1N0YXRlIGFuCiAgICAgICAgIG1fY2xpZW50c1dhaXRpbmdGb3JBc3luY0RlY29kaW5nLmNs
ZWFyKCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVk
KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQor
eworICAgIGlmICgmaW1hZ2UgIT0gbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+IGNsaWVudFdhbGtlciht
X2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50ID0gY2xpZW50
V2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3ll
ZChuYXRpdmVJbWFnZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29u
c3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewogICAgIGlmICgmaW1hZ2Ug
IT0gbV9pbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5k
ZXggNzJkNTljMWZmNDg0NWMyMzI3NTkyMGJjOGQxMmYyNzM0MzI3ZjcyYy4uMmZkMmQzMDA4YTMx
NTM5ZjUzMzRkYmYyNGM5NjVhMDZiOTBiYWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKQEAgLTE0OSwxMCArMTQ5LDE0IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoY29uc3QgSW1hZ2UmLCBFbmNvZGVkRGF0
YVN0YXR1cykgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IElt
YWdlJiwgbG9uZyBsb25nIGRlbHRhKSBmaW5hbDsKKworICAgICAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBJbWFnZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgZmluYWw7CiAKICAgICAg
ICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdT
dGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVz
ID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpIGZpbmFsOworICAgICAgICB2b2lkIG5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSBm
aW5hbDsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYs
IGNvbnN0IEludFJlY3QqKSBmaW5hbDsKICAgICAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZShjb25zdCBJbWFnZSYpIGZpbmFsOwogCkBAIC0xNjQsNiArMTY4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKTsKICAgICBib29sIGNhbkRlc3Ryb3lEZWNv
ZGVkRGF0YShjb25zdCBJbWFnZSYpOwogICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAg
ICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiwgY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25z
dCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFn
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVu
dC5oCmluZGV4IGJhNjQ0NWI3ZWE3ZWQ5NjNkNjFiZmYzMGYyOGE5YTRlZDdmOWMxMzYuLjI2MDRl
YzJiMzM4NzMyNThkOTM3ZDVlN2E5YzdkZGJhMTExZGMwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMu
aCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ2LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBuZXcgZGVj
b2RlZCBmcmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUgb3Igd2hlbiBhbiBhbmlt
YXRlZCBpbWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IGZyYW1lLgogICAgIHZp
cnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZElt
YWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVj
dCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0dXJuIFZpc2libGVJblZp
ZXdwb3J0U3RhdGU6Ok5vOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2ls
bEJlRGVzdHJveWVkKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0
NzZhMzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjcwYzdhNTcyMDE1OGUxZDAx
YmQ3YWMxYzMyYzE1YjhmYzk4MWQ1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0
cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUs
MjQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorc3RhdGljIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IEJpdG1hcElt
YWdlJiBpbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCit7CisgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMg
YW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgorICAgIEludFNpemUgc3Vic2Ft
cGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJbWFnZSk7CisgICAgaWYgKG9w
dGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQorICAgICAgICBzdWJzYW1w
bGVkSW1hZ2VTaXplID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworCisg
ICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBp
bWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCisgICAg
RmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJ
bWFnZVNpemUgIT0gc3JjU2l6ZSkKKyAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChz
cmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxl
ZEltYWdlU2l6ZSkpOworCisgICAgaWYgKGltYWdlLmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAg
aW1hZ2UuaW1hZ2VPYnNlcnZlcigpLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIG5h
dGl2ZUltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBvcHRpb25zKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5h
dGl2ZUltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBvcHRpb25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3QuaXNFbXB0eSgpKQpAQCAtMjky
LDkgKzMxMSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlv
biA9IG9wdGlvbnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VP
cmllbnRhdGlvbjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRp
b24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdl
KCp0aGlzLCBpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShv
cmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAg
ICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJ
bnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqdGhpcywgaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNp
emUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5n
U3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCkBA
IC0zNzksNyArMzk4LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBCaXRtYXBJbWFnZTo6c3Vic2FtcGxp
bmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsKICNpZiBVU0UoQ0cp
CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQorICAgIGlmIChjb250ZXh0Lmhhc1BsYXRmb3Jt
Q29udGV4dCgpICYmIENHQ29udGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkg
PT0ga0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAgIHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0OwogCiAgICAgZmxvYXQgc2NhbGUgPSBzdGQ6Om1pbihmbG9hdCgxKSwgc3RkOjptYXgo
c2NhbGVGYWN0b3Iud2lkdGgoKSwgc2NhbGVGYWN0b3IuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4
IDI2NWNiNTdkMzkzOTUwMzhhNjI5ZjM1YmNkNjg2M2FhNDQ0MzljNjcuLmU4NGM0M2Y5YjcxZWM1
OWQ0ZjhiMmE4NzNlYjFkNjAwODMyMjg1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDI1LDYgKzQyNSw0MCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgcmVzdG9yZVBsYXRmb3JtU3Rh
dGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHUFVCYWRnZShjb25zdCBGbG9h
dFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIGJhZGdlUG9zaXRpb24sIGNv
bnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqdGhpcyk7CisKKyAgICBzZXRTaG91bGRBbnRpYWxp
YXMoZmFsc2UpOworICAgIHNldFN0cm9rZUNvbG9yKGNvbG9yKTsKKyAgICBzdHJva2VSZWN0KGNv
bnRhaW5lclJlY3QsIDAuNSk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBmb250U2l6ZSA9IDEwOwor
ICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIkFyaWFsIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNw
ZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoZm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlv
blZhbHVlKDUwMCkpOworCisgICAgRm9udENhc2NhZGUgY2FzY2FkZShXVEZNb3ZlKGZvbnREZXNj
cmlwdGlvbikpOworICAgIGNhc2NhZGUudXBkYXRlKG51bGxwdHIpOworCisgICAgVGV4dFJ1biB0
ZXh0UnVuKHRleHQpOworICAgIGZsb2F0IHRleHRXaWR0aCA9IGNhc2NhZGUud2lkdGgodGV4dFJ1
bik7CisgICAgCisgICAgRmxvYXRSZWN0IGJhZGdlUmVjdChiYWRnZVBvc2l0aW9uLCBGbG9hdFNp
emUodGV4dFdpZHRoICsgMiwgZm9udFNpemUgKyAyKSk7CisgICAgaWYgKGJhZGdlUG9zaXRpb24u
eCgpID09IGNvbnRhaW5lclJlY3QubWF4WCgpKQorICAgICAgICBiYWRnZVJlY3Quc2V0WChiYWRn
ZVBvc2l0aW9uLngoKSAtIGJhZGdlUmVjdC53aWR0aCgpKTsKKworICAgIGlmIChiYWRnZVBvc2l0
aW9uLnkoKSA9PSBjb250YWluZXJSZWN0Lm1heFkoKSkKKyAgICAgICAgYmFkZ2VSZWN0LnNldFko
YmFkZ2VQb3NpdGlvbi55KCkgLSBiYWRnZVJlY3QuaGVpZ2h0KCkpOworCisgICAgZmlsbFJlY3Qo
YmFkZ2VSZWN0LCBjb2xvcik7CisgICAgCisgICAgc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7
CisgICAgY2FzY2FkZS5kcmF3VGV4dCgqdGhpcywgdGV4dFJ1biwgRmxvYXRQb2ludChiYWRnZVJl
Y3QueCgpICsgMSwgYmFkZ2VSZWN0LnkoKSArIDEgKyBmb250U2l6ZSkpOworfQorCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgZWxsaXBzZUNvbG9yLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTcyOSw2ICs3NjMsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMsIGNhY2hlZEltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsYXRmb3Jt
RHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0lt
YWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKQEAg
LTc0NSw3ICs3OTIsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVu
dEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGlu
YXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBAIC03NTcsNyArODA0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9p
bXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNw
YWNpbmcsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRp
b25RdWFsaXR5KCkpOwpAQCAtNzcwLDcgKzgxNyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBp
bWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBvcHRpb25zKTsKIAogICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRp
bGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CkBAIC03OTcsNiArODQ0LDkgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5
Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAg
IGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCAwODhmMmU1Mzk2YjliNDM4NTg4N2VjMDFmYWNhOGU3ZGQ5MGUxODA3Li41MWZjYTRkNjI4
YjM5YjEwYWE4ZWZiNGZiNGU4MThjYmMxMTJmMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODYsNiArODYsNyBAQCBj
bGFzcyBHbHlwaEJ1ZmZlcjsKICNlbmRpZgogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFz
cyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CkBAIC0zMzMsMTAgKzMzNCw2IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8p
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQogICAgIHZv
aWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CkBA
IC0zNTUsNiArMzUyLDggQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhY2suc2l6ZSgpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdHUFVCYWRnZShjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIGJhZGdlUG9zaXRpb24sIGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiB0ZXh0
KTsKKyAgICAKICAgICAvLyBUaGVzZSBkcmF3IG1ldGhvZHMgd2lsbCBkbyBib3RoIHN0cm9raW5n
IGFuZCBmaWxsaW5nLgogICAgIC8vIEZJWE1FOiAuLi5leGNlcHQgZHJhd1JlY3QoKSwgd2hpY2gg
ZmlsbHMgcHJvcGVybHkgYnV0IGFsd2F5cyBzdHJva2VzCiAgICAgLy8gdXNpbmcgYSAxLXBpeGVs
IHN0cm9rZSBpbnNldCBmcm9tIHRoZSByZWN0IGJvcmRlcnMgKG9mIHRoZSBjb3JyZWN0CkBAIC0z
ODIsNiArMzgxLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9LCBDYWNoZWRJ
bWFnZSogPSBudWxscHRyKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0
aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02NDksNiArNjUwLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0
IENvbG9yJik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOworCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5n
TW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgQ29sb3ImKTsKIAog
ICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdpZHRoKGZsb2F0KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaAppbmRleCA4YmM5YzFjMmVjYzBjYmZjMzgyNmFhMWUwMTkxMzFjODkzNzJk
M2ZlLi5lNTJiYzRlMjE5MjI4YzJiNDM2NTUyODY5MGU3Njk3NTIwOGJjMDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAg
dmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxl
UnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwot
I2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmLCBDYWNoZWRJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBkMzlmZWFhODJmMzcxY2Y4YWFmNzZkMjdmMzM1NzNm
MzUxOThkMDg5Li5lYTRkNjNhOTRlZDZjZjAyMjNmZDllYTA1MDg4YTM3YmQ3MTJkNmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTMyLDggKzMyLDkgQEAK
ICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25z
LmgiCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC03Miw3ICs3
Myw2IEBAIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dEltcGw7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1zdHJ1Y3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnM7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZp
ZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3
aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBkMTQ2NDkyYzRhOGRmOTM1Y2FmOTRi
OWZiOTU1OTA5YWFkMWNiYWYwLi5kYmUwMjVlZTllMWE0NDBmMDJlYTk2NjRhMzRmOThhMGY2YzUx
YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERp
c3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiB9
CiAKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBEaXNwbGF5TGlzdDo6
RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgeyB9
CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
aW5kZXggYzAxMGEwZjBjZmNkOGM1ZTdhYjZjOTRjNWMzYzM2ZjQ4Mzg2ZDAxZi4uNThmYzE0ODM2
ZDkyYWEyMDAxOWYyMGZlZWRjNTU3MWU5YWI1ZTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMxLDEzICsz
MSwxNCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaApp
bmRleCA4YjA4OWU1OTRjMWFmY2NlZTRmZmI1MDcxMTU5Nzg3NDY5NWNiMmRlLi4xNjJlZjQ3ZjRh
ZjZlNDU3Yzc2MWZjNzExYTE1YzFhMTQ5ZWE4ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC00NSwxMCArNDUsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoY29uc3QgSW1h
Z2UmLCBFbmNvZGVkRGF0YVN0YXR1cykgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBkZWNvZGVkU2l6
ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcgZGVsdGEpID0gMDsKIAorICAgIHZpcnR1
YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNvbnN0IElt
YWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25z
dCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdl
JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSA9IDA7CisgICAgCiAgICAgdmlydHVhbCB2b2lkIGNo
YW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVs
bHB0cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25z
dCBJbWFnZSYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNzc1MDMyMjM5YTVkNWFiYWE3NjNmN2EyNjNlZDdjYjI0
NTk4MjY1Mi4uNDU1MTVjNTlhMWZmMjg0Y2Q4ZDI4MDM4MzdiMDg1YjUwMjJkNmMwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAt
MTMwLDggKzEzMCwxMCBAQCB2b2lkIEltYWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEoc2l6
ZV90IGZyYW1lQ291bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpCiAgICAgQVNTRVJUKGZyYW1lQ291
bnQgPD0gbV9mcmFtZXMuc2l6ZSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBmcmFtZUNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChpbmRleCA9PSBleGNsdWRl
RnJhbWUpCisgICAgICAgIGlmIChpbmRleCA9PSBleGNsdWRlRnJhbWUgfHwgIW1fZnJhbWVzW2lu
ZGV4XS5uYXRpdmVJbWFnZSgpKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICht
X2ltYWdlICYmIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIG1faW1hZ2Ut
PmltYWdlT2JzZXJ2ZXIoKS0+bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKm1faW1hZ2UsIG1f
ZnJhbWVzW2luZGV4XS5uYXRpdmVJbWFnZSgpKTsKICAgICAgICAgZGVjb2RlZFNpemUgKz0gbV9m
cmFtZXNbaW5kZXhdLmNsZWFySW1hZ2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IDZiMmQ4MWUzNWIwOGNmNzRmNGYz
NjFhZWJjNzRmMzEyOWM3ZDliN2YuLjRiNDFjZjg5ZDg5NzJjNmYxZTZmZWZkZTg5OTkyZDZiOWU0
ZjViYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaApAQCAtMjcsNTIgKzI3LDE2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW1h
Z2VQYWludGluZ09wdGlvbnMuaCIKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYgVVNFKENB
SVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQotI2luY2x1
ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLSNpZiBVU0UoRElSRUNUMkQpCi0jaW5jbHVk
ZSAiQ09NUHRyLmgiCi0jaW5jbHVkZSA8ZDJkMS5oPgotI2luY2x1ZGUgPHdpbmNvZGVjLmg+Ci0j
ZW5kaWYKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKLQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01Q
dHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRl
ZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5H
REkpCi10eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlm
CiAKIFdFQkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJik7CiBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJik7Ci0KLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7Ci1XRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29u
dGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmIHNvdXJjZSk7Ci0KIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCi1jbGFzcyBOYXRpdmVJbWFnZUhhbmRsZSB7Ci1wdWJs
aWM6Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7Ci19OwotICAgIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2Q3N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFkMDdjOTU4MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Cit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJP
KQorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUg
IlNoYXJlZEJpdG1hcC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVT
RShDRykKK3R5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOworI2Vs
aWYgVVNFKERJUkVDVDJEKQordHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdl
UHRyOworI2VsaWYgVVNFKENBSVJPKQordHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBO
YXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShXSU5HREkpCit0eXBlZGVmIFJlZlB0cjxTaGFyZWRC
aXRtYXA+IE5hdGl2ZUltYWdlUHRyOworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmFmNTQyZGZlYzg0N2FiYzM3MWFhMmYxZThlNGI4ZGQ5ZmIxMTBlNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBhMTA0NjU2Y2I1ZDVkZGVhMDMyMWRhYTQ0YTA0NDY1
MTc1MDg4ZTRmLi4yYWI5Y2UzYmJhMjVlYTU0ODU0NDhmMzRhYTc3N2FmZTA0ZTczNGVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTYgKzEyMywxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVj
dCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBz
dGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZv
cm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBz
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmlu
ZGV4IDNkNDZhNTA1M2IxN2M5YTNlZjlmODJiMjBiNGQ5NzFmMDJhNTQzZTYuLjgyZDI3YmQ2NWE4
ZTYwYmRhNzY5MjYzMzJlYWI0YjJhMDNhNGM1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcApAQCAtMjc5LDEzICsyNzksMTkgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG8KICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdy
YXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSopCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0Nv
bnRleHQoKS5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNv
bnRleHQsIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKIH0KIAorYm9vbCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxl
bWVudGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gc3Vy
ZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCmluZGV4IDMxYmE3MTYxN2VmYTQ1NmMxMWYwNDNhMTlhNDQ5M2Zk
NTg1YjIzZTUuLjBiZmY3ODE3ZWRhNWQyZDllZTNiMWM3NDhlYWQyOTljOGIzMWZhNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03NCw3ICs3NCw5IEBAIHB1YmxpYzoK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CisgICAgCisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IDYzZmI1ZGQ2MWJhYmNjY2Y3MDkwNGU1NmQyZjlkNGU1YWQ1
OGNhYzUuLmFjYjFlNGU0Y2FiOTZiZTRiY2QwOWZmYzVhMjhjZTk5ODE2ZmYwNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTI4MCwxNiArMjgwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpy
ZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9y
bUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwt
PmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICNpZiAhTE9HX0RJU0FCTEVECiAgICAg
TW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFn
ZUNHLmNwcAppbmRleCA1Y2M1YzIwN2I0NGE0ODM1YmUyZTA4MDI4YTNhNzEwOTVhNTVlMWUwLi40
MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsz
XSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBo
YXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJ
bnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotICAg
IGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKLSAgICAgICAg
c3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUo
KTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNh
bXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdl
LgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJz
YW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1h
cFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1
YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25z
KTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKLXsKLSAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29u
dGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNl
LndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29u
dGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOwotCi0gICAgQ0dGbG9h
dCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7Ci0gICAgQ0dGbG9hdCBkZXN0
WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55KCk7Ci0KLSAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1h
Z2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdl
cyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDYxMDY0YTg4NjNiNDBmMTkwNWRhYTQwNTMzODdjMjI0
YjY0MjNhOGEuLjI0ZjZhZjljYTc3NmVjMjgyYTc4MjZmMmFiNDgyZTE4ZmFiYmJiODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw4ICs2Miw5IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUg
OiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCiAgICAgRHJh
d1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJF
Q1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IERyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgogICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmlu
ZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3NGE1YTg1NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZm
NGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpE
cmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3
aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRl
bGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0
Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxp
c3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJl
Y3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlz
dCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBp
bml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAgfSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmluZGV4IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3
YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZlODBhZDI5M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdj
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0Nv
bnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVy
KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9
IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxwdHIpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+
KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3Jk
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDg2
NzJiMWI0NzA4NDc2OTAxODUwODQ5NTlhNzdhZjQyZmRiODA0M2YuLjAzY2FlZjA1OWQwZTllMDU2
ZGM0MWJhNTc1N2M1YTM3MGRlYjNlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNs
YXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+
LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGlj
IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogCiBwdWJs
aWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgogCiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1
bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2Vu
ZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRl
eHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0
aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNp
emUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBu
dWxscHRyKQorICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdD
b250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZGJmMTg4NGEyMWEzNDlmNmFhMDMzMzdmNzZlZDU5
MjkyM2MwNGRlMy4uODhmODg4OWFlYjM3YmE2ZmU4ZjYzYTYxMTlmNDFkOGFkNDg4ZTcxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKQEAgLTEwNSw5ICsxMDQs
MTEgQEAgc2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkSW1hZ2U+KGl0ZW0pKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihk
b3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSkpOwotI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0
dXJuIHNpemVvZihkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAg
ICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSkpOwogI2VuZGlm
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXplb2Yo
ZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKQEAgLTcwMCwzMiArNzAxLDIyIEBAIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRT
Y2FsZWRJbWFnZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVT
RShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlVHlwZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJh
d2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSNpZiBVU0UoQ0cpCi0gICAgLy8g
RklYTUU6IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2UgZm9yIENhaXJvLgogICAgICwgbV9pbWFnZShp
bWFnZSkKLSNlbmRpZgogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0
aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKICAgICAsIG1f
b3B0aW9ucyhvcHRpb25zKQogewotI2lmICFVU0UoQ0cpCi0gICAgVU5VU0VEX1BBUkFNKGltYWdl
KTsKLSNlbmRpZgogfQogCiBEcmF3TmF0aXZlSW1hZ2U6On5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdl
KG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29w
dGlvbnMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0jZW5kaWYKKyAgICBB
U1NFUlQobmF0aXZlSW1hZ2VQdHIoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0
aXZlSW1hZ2VQdHIoKSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3Qs
IG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCkBAIC03MzYsNiArNzI3LDMzIEBA
IHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVt
LmRlc3RpbmF0aW9uUmVjdCgpKTsKICAgICByZXR1cm4gdHM7CiB9CisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCitEcmF3SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQorICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZl
cikKKyAgICAsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKKyAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQorICAgICwgbV9zcmNSZWN0
KHNyY1JlY3QpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30KKworRHJhd0ltYWdlQnVm
ZmVyOjp+RHJhd0ltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OworCit2b2lkIERyYXdJbWFnZUJ1ZmZl
cjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICAvLyBTaG91bGQgYmUgaGFu
ZGxlZCBieSB0aGUgZGVsZWdhdGUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1h
Z2VCdWZmZXImIGl0ZW0pCit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0
ZW0mPihpdGVtKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1yZXNvdXJjZS1pZGVudGlm
aWVyIiwgaXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAgcmV0dXJuIHRzOworfQog
I2VuZGlmCiAKIERyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCkBAIC0xNDI3LDggKzE0NDUsOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ltYWdlOiB0cyA8PCAiZHJhdy1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdUaWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2Fs
ZWQtaW1hZ2UiOyBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFr
OworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogI2VuZGlmCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwpAQCAt
MTUyOCwxMCArMTU0NywxMyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZElt
YWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSk7
CiAgICAgICAgIGJyZWFrOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2
ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgdHMgPDwgZG93bmNh
c3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1Bh
dHRlcm4+KGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZjA1NTg2
OWUxN2FhYTk2NjRlYjUzZmIxYmVlNzk1ODA2NDI4ZDM2My4uYzhhYzAwZTM0ZTA5NWYyMmVkYjBi
NmJlNTgyYTg3MGM4YmVhNjA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEu
aCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgogCkBAIC0xNDMwLDMyICsxNDMxLDUzIEBAIE9wdGlvbmFsPFJlZjxEcmF3VGlsZWRTY2Fs
ZWRJbWFnZT4+IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAg
ICAgcmV0dXJuIERyYXdUaWxlZFNjYWxlZEltYWdlOjpjcmVhdGUoKmltYWdlSGFuZGxlLT5pbWFn
ZSwgKmRlc3RpbmF0aW9uLCAqc291cmNlLCAqdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUs
ICppbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykg
fHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJ
dGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
ICAgIHVzaW5nIE5hdGl2ZUltYWdlVHlwZSA9IFZhcmlhbnQ8TmF0aXZlSW1hZ2VQdHIsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgCisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIVdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPihtX2ltYWdlKSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBXVEY6OmdldDxSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI+KG1faW1hZ2UpOworICAgIH0KKworICAgIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlUHRyKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PE5hdGl2ZUltYWdlUHRyPihtX2ltYWdl
KTsKKyAgICB9CisjZWxzZQorICAgIHVzaW5nIE5hdGl2ZUltYWdlVHlwZSA9IE5hdGl2ZUltYWdl
UHRyOworICAgIAorICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZTsgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFn
ZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlVHlwZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemU7IH0KICAgICBGbG9hdFJlY3Qgc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdl
Pj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlVHlwZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0jaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG1f
aW1hZ2U7Ci0jZW5kaWYKKyAgICBOYXRpdmVJbWFnZVR5cGUgbV9pbWFnZTsKICAgICBGbG9hdFNp
emUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZs
b2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNDY1LDEwICsxNDg3LDcgQEAgcHJpdmF0ZToKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlSGFuZGxlIGhh
bmRsZSB7IG1faW1hZ2UgfTsKLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKLSNlbmRpZgorICAgIGVu
Y29kZXIgPDwgbV9pbWFnZTsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwogICAgIGVuY29k
ZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CkBAIC0x
NDc4LDEyICsxNDk3LDEwIEBAIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxSZWY8RHJh
d05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSNpZiBVU0UoQ0cpCi0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VIYW5kbGU+IGhhbmRsZTsK
LSAgICBkZWNvZGVyID4+IGhhbmRsZTsKLSAgICBpZiAoIWhhbmRsZSkKKyAgICBPcHRpb25hbDxO
YXRpdmVJbWFnZVR5cGU+IGltYWdlOworICAgIGRlY29kZXIgPj4gaW1hZ2U7CisgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSNlbmRpZgogCiAgICAgT3B0aW9u
YWw8RmxvYXRTaXplPiBpbWFnZVNpemU7CiAgICAgZGVjb2RlciA+PiBpbWFnZVNpemU7CkBAIC0x
NTA1LDE0ICsxNTIyLDc1IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0
aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFn
ZVB0ciBpbWFnZSA9IGhhbmRsZS0+aW1hZ2U7Ci0jZWxzZQotICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlID0gbnVsbHB0cjsKLSNlbmRpZgotICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0
ZShpbWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25z
KTsKKyAgICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXpl
LCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQotI2VuZGlmCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCitjbGFzcyBEcmF3SW1hZ2VCdWZmZXIgOiBwdWJsaWMgRHJh
d2luZ0l0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RHJhd0ltYWdlQnVmZmVyPiBjcmVh
dGUoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRHJhd0ltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgZGVz
dGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfkRyYXdJbWFnZUJ1ZmZlcigpOworCisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyOyB9CisgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjUmVjdDsgfQorICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0ltYWdlQnVmZmVyKFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisKKyAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorCisgICAgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIEZsb2F0UmVj
dCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgIEltYWdl
UGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+
Cit2b2lkIERyYXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBlbmNvZGVy
IDw8IG1fZGVzdGluYXRpb25SZWN0OworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVu
Y29kZXIgPDwgbV9vcHRpb25zOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9u
YWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXI7CisgICAgaWYgKCFyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOwor
ICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gc291cmNl
OworICAgIGRlY29kZXIgPj4gc291cmNlOworICAgIGlmICghc291cmNlKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9w
dGlvbnM7CisgICAgZGVjb2RlciA+PiBvcHRpb25zOworICAgIGlmICghb3B0aW9ucykKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBEcmF3SW1hZ2VCdWZmZXI6OmNy
ZWF0ZSgqcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCAqZGVzdGluYXRpb24sICpzb3VyY2UsICpv
cHRpb25zKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIGNsYXNzIERyYXdQ
YXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKQEAgLTI5MjQsMTAgKzMwMDIs
MTMgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3du
Y2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKLSNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZl
SW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgZW5jb2RlciA8PCBk
b3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgZW5jb2RlciA8PCBkb3du
Y2FzdDxEcmF3UGF0dGVybj4oKnRoaXMpOwpAQCAtMzExMiwxMSArMzE5MywxNSBAQCBPcHRpb25h
bDxSZWY8SXRlbT4+IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAo
YXV0byBpdGVtID0gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkp
OwogICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVD
VDJEKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgaWYgKGF1
dG8gaXRlbSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAg
ICAgIGJyZWFrOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3SW1hZ2VCdWZmZXI6
OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1Bh
dHRlcm46OmRlY29kZShkZWNvZGVyKSkKQEAgLTMyNzAsOCArMzM1NSw5IEBAIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3R2x5cGhzKQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKLSNpZiBVU0UoQ0cpIHx8
IFVTRShDQUlSTykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
TmF0aXZlSW1hZ2UpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZUJ1ZmZlcikKICNlbmRpZgogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQpAQCAtMzMzMSw5ICszNDE3LDEw
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZSwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlLAot
I2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi0gICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyLAogI2VuZGlmCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0
aXZlSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVy
biwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYmQwNDM4YzZhNGIyNTZjODg1NmJiMTI5YTNh
YjVmYTIzZTc4ZGM4YS4uZGNjYzAyZDE3ZWUwNjQxMzhjYmY4OWE3ZDkyNTdmNTBjYTUxYzMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJE
aXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC0zNywxMCAr
MzgsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAK
LVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0s
IE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IEdyYXBoaWNz
Q29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKQogICAg
ICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIp
CisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNw
bGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENs
aXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlh
bENsaXAgfSk7CkBAIC01MiwxNSArNTMsMTUgQEAgUmVjb3JkZXI6On5SZWNvcmRlcigpCiAgICAg
TE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNwbGF5
TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OnB1dEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBX
ZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3Jj
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZWNvcmRlcjo6cHV0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYgaW1h
Z2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiB7Ci0gICAgYXBwZW5kSXRlbShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRGb3JtYXQsIGlt
YWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KSk7CisgICAgYXBwZW5kSXRl
bShQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBk
ZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0
ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsKLSAgICBpZiAobV9vYnNlcnZlcikKLSAgICAgICAgbV9v
YnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAg
ICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtKGl0ZW0pOwogCiAgICAgaWYgKGl0ZW0uaXNE
cmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpAQCAtMTM2LDEzICsxMzcsMzMgQEAgSW1hZ2VEcmF3
UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXQKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiB9
CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotdm9pZCBSZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucywgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKQogeworICAgIGlmIChtX2RlbGVnYXRlICYm
IGNhY2hlZEltYWdlKSB7CisgICAgICAgIGlmIChhdXRvIGRyYXdOYXRpdmVJbWFnZUl0ZW0gPSBt
X2RlbGVnYXRlLT5jcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVtKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCAqY2FjaGVkSW1hZ2UpKSB7CisgICAgICAgICAgICBE
cmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKGRy
YXdOYXRpdmVJbWFnZUl0ZW0ucmVsZWFzZU5vbk51bGwoKSkpOworICAgICAgICAgICAgdXBkYXRl
SXRlbUV4dGVudChuZXdJdGVtKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFw
cGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsK
IH0KLSNlbmRpZgorCitib29sIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFt
X2RlbGVnYXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRyYXdJbWFnZUJ1
ZmZlckl0ZW0gPSBtX2RlbGVnYXRlLT5jcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKKyAgICBpZiAoIWRyYXdJbWFnZUJ1ZmZlckl0
ZW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0g
ZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oZHJhd0ltYWdlQnVmZmVySXRlbS5yZWxl
YXNlTm9uTnVsbCgpKSk7CisgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
ZDI3MGM1ZDkwOGFjNjhkNzgwODM2M2JiYTkxYjJlNzYxYWVkYzkyYi4uZWZhYzZiYWNlNzQyY2M4
NzBmZGRhYzE0Y2RkZjg3ZDg1YzQyODUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9y
IEltYWdlOjpUaWxlUnVsZS4KKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApA
QCAtNTMsMTcgKzU0LDE5IEBAIGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4
dEltcGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKLSAgICBjbGFzcyBPYnNlcnZlcjsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgY2xhc3MgRGVs
ZWdhdGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlz
cGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVyKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9y
bWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOwogCiAg
ICAgc2l6ZV90IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUNv
dW50KCk7IH0KIAotICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBjbGFzcyBEZWxlZ2F0ZSB7CiAg
ICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpIHsgfQorICAgICAgICB2aXJ0
dWFsIH5EZWxlZ2F0ZSgpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxJdGVtPiBjcmVhdGVE
cmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmLCBDYWNoZWRJbWFnZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICAgICAgdmly
dHVhbCBSZWZQdHI8SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFw
cGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICB9OwogCkBAIC0xMDIsOSArMTA1LDkgQEAg
cHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQ
b2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSNpZiBVU0UoQ0cpIHx8IFVT
RShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2VuZGlmCisKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2UqKSBvdmVycmlkZTsKKyAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CkBAIC0xODMs
NyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwog
CiAgICAgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2
ZXI7CisgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAKICAgICBWZWN0b3I8Q29udGV4dFN0YXRl
LCAzMj4gbV9zdGF0ZVN0YWNrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggY2VhMmE2ZWEwNDQ1MzRmZjQ1NDRl
YTIxMDljMjYxN2Q3OTdjYTJmMS4uMWJjMjI2YzM5MGJhZGNkYWQzMzFhZjI0OWY1NTYxNGYxM2E1
MzVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCBJbWFnZURyYXdSZXN1bHQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3Jh
cGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqKQogewogICAgIHN0
cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAgICAgIHZp
cnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKQEAgLTU3MCw2ICs1NzAsMTIgQEAg
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdAogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRp
dmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwg
c3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7
CiB9CiAKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4g
ZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwg
RmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkZTI0YWI4YmQ1MjQz
MmNlMjkzYTgwZjZiNGY5ODYwZjIyMmZhN2ZmLi5hMjk3MjA2MWNhODM4ZDZkNTJlNTVjNjMzOWE3
ZDkzYjRiMDIzYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCkBAIC02Nyw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3
UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0
aW9ucyYsIFdlYkNvcmU6OkNhY2hlZEltYWdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1h
Z2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2Vi
Q29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0
ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDM3NDA3MTcxNWJjYjc5MWQ1ODlkNTBkOTliMjlj
NjZiMDEwYjcwODEuLjU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVjOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDE2ICsyMDcsMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6
cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8
SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250
ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6
ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hh
ZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjQ3YTdhZDRjZDI5
NTM4ZTRlYWY0MGJkODAzNjk2ODYwMDhiODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQotCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCi0j
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIDogbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICwg
bV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotewotfQotCi12
b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y3JlYXRlQmFja2VuZChj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19
Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21taXRGbHVz
aENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewot
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRp
ZmllciwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJlOTIwZWZkZGMxNzlmNjNmZDRmZDI0YmNmNzkxMzI0MTA5NWU2MzUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
LQotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgotI2luY2x1ZGUgIkltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVy
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9E
aXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7
Ci1jbGFzcyBJbWFnZURhdGE7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5KCkgPSBkZWZhdWx0OwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUg
cmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0g
ICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0
ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIp
OwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSk7Ci0gICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIpOwotCi1wcml2YXRlOgotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCA4MWI4OTc4ZDBlNzkxMTU3ZjljN2U0OTcwMzk4MTdlNDc5NTllNTE0Li41YjNhODcxMmVm
YzE0YzJmNDdlYmE0YjI1YzVkMmM2YmI4OTg3ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTI3LDI5ICsyNywyOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJl
cGxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNr
ZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6
Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHksIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
ZXI6OkRlbGVnYXRlIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+Owog
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0OwogICAgIHVzaW5nIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHksIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihzaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHksIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAg
ICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSkKLSAgICAg
ICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkocmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgICAgICwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsK
LSAgICAgICAgY3JlYXRlQmFja2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2Vu
ZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5k
LT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW1vdGVDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJh
Y2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29s
b3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KCkKQEAgLTYxLDkgKzYxLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dDsKLSAg
ICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwotCiAgICAgdm9p
ZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoZGlzcGxheUxp
c3QuaXRlbUNvdW50KCkpIHsKQEAgLTcyLDI3ICs2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOwotICAgICAgICBtX2JhY2tlbmQtPmZs
dXNoQ29udGV4dCgpOwotICAgICAgICBjb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVy
KTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEo
V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKLSAgICB9Ci0KLSAg
ICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGl0ZW0udHlwZSgp
ICE9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpIHsKKyAgICAgICAgICAgIGF1dG8m
IHB1dEltYWdlRGF0YUl0ZW0gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0
SW1hZ2VEYXRhJj4oaXRlbSk7CisgICAgICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1hZ2VEYXRh
SXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBwdXRJbWFn
ZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwgcHV0SW1h
Z2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KIAotICAgICAgICBhdXRvJiBwdXRJbWFnZURhdGFJdGVtID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YSY+KGl0ZW0pOwotICAgICAgICBwdXRJbWFn
ZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmlt
YWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5k
ZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmFw
cGx5UmVzb3VyY2VJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIH0KKyAgICAKKyAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IGRiYjU1YmEzYzIyMGRlODZmMThhNTMzY2ZhMDg3MThmMzg5MjRmMDguLjMwYjVkYzM0
ZDA0MDY4ZDgzZDZmNDg3NDA3OWFmZmU1MTZjYTBkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1l
c3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjYsNTkgKzY2LDQ2IEBAIHVpbnQ2
NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUlu
dDY0KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorYm9vbCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKERpc3BsYXlMaXN0OjpJdGVt
JiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byogZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKLSAg
ICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJl
bW90ZUFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKLSAg
ICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2Rl
OjpSZW1vdGVBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJl
bW90ZVVuYWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBVbmFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7
Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVm
ZmVySWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmFwcGx5UmVzb3VyY2VJdGVtKGl0ZW0sIGNv
bnRleHQpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUlt
YWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBtZXNz
YWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJvb2wg
Zm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVy
SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
V1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKLSAgICAgICAg
YXV0byBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwg
c3JjUmVjdCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVmZXJl
bmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOwotICAgIH0KKyAgICBtX3JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcmVhdGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250
ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAg
ICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlz
dCwgc2hvdWxkRHJhd0dQVUJhZGdlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRD
b21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZs
dXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VC
dWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIGZsdXNoSWRl
bnRpZmllcik7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuZmx1c2hEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgc2hvdWxkRHJhd0dQVUJhZGdlLCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEoV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3Jj
UmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGltYWdlRGF0YSA9IG1fcmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFSZWZl
cmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAg
ICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlLCByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
cmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDY3
NjRhYzEwYzVlN2UwMmE0Yzk3ODc3YjljNWU1NWNhMGI3OGNiMWUuLjA2MjI4ZmVmOTRlYWU5ZjIz
YTcxMmRhNDgxYWJiNmFlZjAxMGZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgK
QEAgLTI4LDI0ICsyOCwyMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVm
ZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNs
dWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiB9CitjbGFzcyBGbG9h
dFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBSZW5k
ZXJpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw3ICs1
OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyOyB9CisgICAgYm9vbCBhcHBseVJlc291cmNlSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCisgICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4KKyAgICB2b2lkIHJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
YWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC03Mywx
NCArNzUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9p
ZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWxlYXNlSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwot
ICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIEltYWdlQnVmZmVySWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7
Ci0KLSAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHk+PjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3
aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29s
IHNob3VsZERyYXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29sIHNob3VsZERyYXdHUFVCYWRn
ZSwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3Qg
V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzk4YzhiNGVk
YjU3ZjVhZDA4MmJhODFjMTAwOGIwZGNkZWZkZjE4YS4uZDRlZWM0ZjliYzEzZmM0Mjk1ZDRmMzBj
MzA1NDZkODNlZDE4ODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yMywxMSArMjMsMTIgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgUmVsZWFzZUlt
YWdlQnVmZmVyKFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllcikKLSAgICB2b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIEZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QgZGlzcGxheUxpc3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJ
ZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpCi0gICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJL
aXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpIC0+IChJUEM6
OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVh
dGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0
LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIEZsdXNoSW1hZ2VCdWZmZXJE
cmF3aW5nQ29udGV4dEFuZENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qg
ZGlzcGxheUxpc3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBXZWJLaXQ6OkltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICBHZXRJbWFnZURhdGEoZW51
bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBX
ZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBp
bWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyIGltYWdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNl
KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxZDlmYTcxM2RkNjY0YzJlYzZjNjJlOTRmNmZmMjk2OGUx
NzdkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKK3sKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmNvbnRhaW5z
KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+IGltYWdlOworCisgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVy
aW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlID0gQWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisKKyAgICBpZiAoIWltYWdlIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVu
ZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkKKyAgICAgICAgaW1hZ2UgPSBVbmFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgaWYgKGltYWdlKSB7CisgICAgICAgIG1fcmVt
b3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUoaW1hZ2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVz
aERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZSht
X3Nob3VsZERyYXdHUFVCYWRnZSwgc2hvdWxkRHJhd0dQVUJhZGdlKTsKKyAgICBhdXRvIGltYWdl
ID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisgICAgaWYgKGltYWdlKQorICAgICAgICBpbWFnZS0+Zmx1c2hEcmF3aW5nQ29udGV4dChk
aXNwbGF5TGlzdCk7CisgICAgcmV0dXJuIGltYWdlOworfQorCitJbWFnZUJ1ZmZlciogUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJh
ZGdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
eworICAgIGF1dG8gaW1hZ2UgPSBmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBzaG91
bGREcmF3R1BVQmFkZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKGltYWdl
KQorICAgICAgICBpbWFnZS0+Zmx1c2hDb250ZXh0KCk7CisgICAgcmV0dXJuIGltYWdlOworfQor
CitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmdldEltYWdlRGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikg
Y29uc3QKK3sKKyAgICBpZiAoYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
LmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmdl
dEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZU5hdGl2
ZUltYWdlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZSk7CisgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdHUFVCYWRnZShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBjb25zdCBTdHJpbmcmIHRleHQpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Nob3VsZERyYXdH
UFVCYWRnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQuZHJhd0dQVUJhZGdlKGNvbnRh
aW5lclJlY3QsIGNvbnRhaW5lclJlY3QubWF4WE1heFlDb3JuZXIoKSwgY29sb3IsIHRleHQpOwor
fQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd05hdGl2ZUltYWdlSXRlbShj
b25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAoreworICAgIGF1dG8mIGRyYXdJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxp
c3Q6OkRyYXdOYXRpdmVJbWFnZSY+KGl0ZW0pOworICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyID0gZHJhd0l0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgaWYgKCFy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8gaW1hZ2UgPSBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5nZXQoZHJhd0l0ZW0ucmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBkcmF3SXRlbS5pbWFn
ZVNpemUoKSwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVtLnNvdXJjZSgpLCBk
cmF3SXRlbS5vcHRpb25zKCkpOworICAgIGRyYXdHUFVCYWRnZShjb250ZXh0LCBkcmF3SXRlbS5k
ZXN0aW5hdGlvblJlY3QoKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCwgIklNQUdFIl9zKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdJbWFn
ZUJ1ZmZlckl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNv
bnN0IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXImPihpdGVtKTsKKyAgICBhdXRvIGltYWdl
ID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KGRyYXdJdGVtLnJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbWFnZS0+ZHJhdyhjb250ZXh0LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgZHJh
d0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgZHJhd0dQVUJhZGdlKGNv
bnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBXZWJDb3JlOjpDb2xvcjo6Ymx1ZSwg
IkNBTlZBUyJfcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRl
bSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGlmIChpdGVtLnR5cGUo
KSA9PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0
dXJuIGRyYXdOYXRpdmVJbWFnZUl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgaWYgKGl0ZW0udHlw
ZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZHJhd0ltYWdlQnVmZmVySXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
K3sKKyAgICBpZiAobV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZW1vdGVOYXRpdmVJ
bWFnZUhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJl
dHVybjsKKyAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFw
cGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRmYzA1MmMyODQ2OTZlYjc2NGRh
YjZkY2VlN2YwN2ZlNmFmYzhmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9S
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxh
eUxpc3Q7CitjbGFzcyBJdGVtOworfQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmKTsKKworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBmbHVzaERy
YXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIGJv
b2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIGJvb2wgc2hvdWxkRHJh
d0dQVUJhZGdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKKworICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7CisKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUltYWdl
QnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2luZyBSZW1v
dGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+OworCisgICAgdm9pZCBkcmF3R1BVQmFk
Z2UoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBj
b250YWluZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgdGV4dCkg
Y29uc3Q7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgYm9v
bCBkcmF3SW1hZ2VCdWZmZXJJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZl
ckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlTmF0aXZlSW1h
Z2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisgICAgYm9vbCBt
X3Nob3VsZERyYXdHUFVCYWRnZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGZhY2QyZjdhZmI1YTM5MmVlMjA5NjdhNzZmZDQxZTE0
ZGZiMTUwYjkuLjE1OGM0ZWY5N2MyZTk5Yjg3NjY3OTM2ZWI0MGE1ZTE4NzhkMThiM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE3LDExICsyMTcsMTMg
QEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAg
J1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIn
LAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAog
ICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlbmRlcmluZ01vZGUnLAog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApAQCAtMjQwLDcgKzI0Miw2IEBAIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJL
aXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyJywKLSAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jlc29sdmVySWRl
bnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCBlMGJiYmJjNWJhMjMxOGJmYThlNjMxOTZkNTRlZWJiODkwMzY0NDQxLi5hMDc3
NTMwOTU3YmE4ZDQ3ZDU0MjliYWRkNjY3NTc1NTRkMDYyMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAsNyArMTEwMCw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2
b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIE5hdGl2ZUltYWdlUHRyIGlt
YWdlKQorc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGF1dG8gaW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKGltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKQEAgLTExNDMsNyArMTE0Myw3IEBAIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNv
ZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgTmF0aXZlSW1hZ2VQdHIg
aW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBib29sIGhhc0ltYWdl
ID0gISFpbWFnZTsKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwpAQCAtMTE2NiwxNCArMTE2Niwx
NCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxOYXRpdmVJ
bWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgogICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFn
ZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZUhh
bmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZUhhbmRsZSYg
aW1hZ2VIYW5kbGUpCit2b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewotICAgIGVu
Y29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UuZ2V0KCkp
OworICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOwogfQogCi1i
b29sIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdlSGFuZGxlKQorYm9vbCBBcmd1bWVudENvZGVy
PE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShkZWNvZGVy
LCBpbWFnZUhhbmRsZS5pbWFnZSk7CisgICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1h
Z2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMDVk
MDM1NTRiOWVjYTlhMDQxYzM2OGVmNDUzODgyNDQzNGNlNmUyMy4uOWYzYjEwNjY5MzMzYmEzMDE1
Mjk3ODNjOWUxZTkxZWFiYTRjYWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0lu
ZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1h
Z2VQdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC0xMDUsNyArMTA2LDYgQEAgY2xhc3MgS2V5ZnJhbWVW
YWx1ZUxpc3Q7CiBjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgTGF5b3V0UG9pbnQ7CiBjbGFzcyBM
aW5lYXJUaW1pbmdGdW5jdGlvbjsKLWNsYXNzIE5hdGl2ZUltYWdlSGFuZGxlOwogY2xhc3MgTm90
aWZpY2F0aW9uOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uOwpAQCAtNDE2LDkgKzQxNiw5IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhhbmRs
ZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRp
dmVJbWFnZUhhbmRsZT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRsZSYpOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA3MzBkYTY0OGYyYjJm
ZTllNzg0ZmQwNDA1MmUxOTBmMGQwYmYyMWFkLi43NGYwZDI1YjljZDQxZTc3ZmUxNTNjNzUzZGEw
ZDFmYjRhMDZhNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwCkBAIC0xMDYsMTIgKzEwNiwyNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3ND
b250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAKIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKQogewot
ICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwgMSwgZGVzdGlu
YXRpb24sIHNvdXJjZSk7CisgICAgcGFpbnQoY29udGV4dCwgMSwgZGVzdGluYXRpb24sIHNvdXJj
ZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBkcmF3TmF0aXZlSW1hZ2UobWFr
ZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIHNjYWxlRmFjdG9yLCBkZXN0aW5hdGlvbiwgc291cmNl
KTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisgICAgCisgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24ueCgpLCBkZXN0
aW5hdGlvbi55KCksIHNvdXJjZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsKKyAgICBDR0Nv
bnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKKyAgICAKKyAgICBhdXRvIGltYWdlID0g
bWFrZUNHSW1hZ2VDb3B5KCk7CisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBpbWFnZVdpZHRo
ID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworICAgIAorICAg
IENHRmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2UueCgpOworICAgIENHRmxv
YXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkgKyBzb3VyY2UueSgpOwor
ICAgIAorICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgs
IGRlc3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKKyAgICAKKyAg
ICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7CiB9CiAKIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCBiYzJjNDk0M2FlYmU1Y2NhZjhiOTQ3ZWQ3MWFlMDMwZjRmMzJkOTgzLi4xZjYxMzE4OTI4ZTlk
MTY2Y2E1ZjAyZmU3OTdkZjQyNjk3YTRlNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0LDggKzI0LDgg
QEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKLUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcApAQCAtNTUxLDggKzU1MSw4IEBAIFdlYlByb2Nlc3Mv
TWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKLVdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjVmZjg2ZGIzZDIzZjBjYWEyOGIyZTZjNzM1ZWNmNDM5ZmIxZDA2
OS4uNDcxNTE0ZjUzZmIzM2M1NzA5MmEyNTExMGQ3MTZkMDFjNDZmYzM3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODY0LDcgKzM4
NjQsNiBAQAogCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MDY0MEEzMjQwNzFBNjEw
MEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NTA2
NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQ0MjQwOEFC
QjMwMERFNEQyRiAvKiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDE0NiwxMCArNDE0NSw3IEBACiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdENjI5NSAvKiBX
S1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGgg
PSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MUZCODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0ZVNpbXVsYXRl
ZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVJbWFn
ZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAwQzI0MDk3QTAy
MDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAx
MTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDEyMjQwOTkwNkUw
MDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkzMSAvKiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzUyNDA3ODU3RjAwNEQyOTMxIC8q
IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8q
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNTksNiArNDE1NSwxMCBAQAogCQk3MjdBN0Y0OTI0
MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYx
Nzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFOTI1MjQyNENFMDBD
OUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNv
dXJjZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRENBMUVBMjUyNDI0
Q0UwMEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MkRDQTFFQjI1MjcxNDUxMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRENBMUVDMjUyNzE0NTEwMEM5QjIwRCAvKiBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0MTg3Q0NGOUYwMEMz
OUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkQ0MTg3RDFDMDEwMEMzOUM5RSAv
KiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODAyNiwxNyArODAyNiwxNyBAQAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDRE
MjkzMSAvKiBjb2NvYSAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDQyNDA4QUJCMzAwREU0RDJGIC8q
IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmggKi8sCi0JCQkJNTUwNjQwQTUyNDA3MUNDMDAw
QUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4
RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAog
CQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3
RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCTcyN0E3RjQ5MjQw
OEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovLAotCQkJCTcyMjc4MDBDMjQw
OTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLywK
IAkJCQk3MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oICovLAogCQkJCTU1MDY0MEEwMjQwNzE5RTEwMEFBRTA0NSAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluICovLAorCQkJCTcyRENBMUVBMjUy
NDI0Q0UwMEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLywKKwkJCQk3MkRDQTFF
OTI1MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovLAogCQkJCTU1MDY0
MDlGMjQwNzE5NkEwMEFBRTA0NSAvKiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKQEAgLTgwNDYsMTIgKzgwNDYsMTIgQEAKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0
RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAotCQkJCTcyMjc4MDEx
MjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
Y3BwICovLAotCQkJCTcyMjc4MDEyMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYg
LyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1MDY0MEEyMjQwNzFBNjEwMEFB
RTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0MEEz
MjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKIAkJ
CQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJCTcyRENBMUVCMjUyNzE0NTEwMEM5QjIwRCAvKiBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwICovLAorCQkJCTcyRENBMUVDMjUyNzE0NTEwMEM5QjIwRCAv
KiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhp
Y3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMWJjOWFlODdkYzhkNzI0MjhhMGI4MDlj
YWQwZDgwYTRjZDFjYjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlcklk
ZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIEltYWdlQnVm
ZmVySWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgSW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gT2Jq
ZWN0SWRlbnRpZmllcjxJbWFnZUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmgKaW5kZXggZTg0OTE2NjQ1MTQ1OTYyODdlZjJjNzhmOTA3NmUxZDQzODIxOTFmMi4uMzQyYjA1
ZTA3ODY4NzZmM2Y2NDZhNDhiZGJkOGJlNjFjZDA1ZGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApA
QCAtMjgsNiArMjgsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZWNvcmRlci5oPgpAQCAt
MzcsMTAgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFj
a2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CitjbGFz
cyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VC
dWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ciwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUgewogICAg
IHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVy
OjptX2RyYXdpbmdDb250ZXh0OworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVy
Ojpjb250ZXh0OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJ
bWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCkKQEAgLTUzLDE0ICs1NiwyMCBAQCBwdWJsaWM6CiAKICAgICB+
UmVtb3RlSW1hZ2VCdWZmZXIoKQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZWxlYXNlSW1hZ2VCdWZm
ZXIoKnRoaXMpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291
cmNlSWRlbnRpZmllcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQot
ICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUpCi0gICAgICAgICwgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDog
QmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICAgICAgLCBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCiAg
ICAgeworICAgICAgICBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC0+cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKICAgICB9CiAKICAgICB2b2lkIGNyZWF0ZUJh
Y2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKSBv
dmVycmlkZQpAQCAtNjgsMjMgKzc3LDUyIEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJUKCFt
X2JhY2tlbmQpOwogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3Zl
KGhhbmRsZSkpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIEJhY2tlbmRUeXBl
KiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBp
ZiAoIW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIm
PigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZCgpOworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndh
aXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2Vu
ZC5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1
c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4
dC5kaXNwbGF5TGlzdCgpOworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8
ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+ZHJhd0dQVUJhZGdlKGNvbnRleHQoKSwgV2ViQ29y
ZTo6RmxvYXRSZWN0KHsgfSwgbV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpKSwgV2ViQ29yZTo6Q29s
b3I6OmRhcmtHcmVlbiwgIkdQVSJfcyk7CisgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENv
bW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29u
dGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VSZW1vdGVD
bGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBkaXNwbGF5TGlzdC5j
bGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRl
CiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gY29uc3Rf
Y2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlM
aXN0KCk7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+UmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5
TGlzdCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZl
cio+KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3Vu
dCgpKSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcykt
PmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlzcGxheUxp
c3QuY2xlYXIoKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0YSBpcyBzeW5j
aHJvbm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUgQ29tbWl0SW1h
Z2VCdWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlR2V0SW1hZ2VEYXRh
KG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0KIAogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVz
dFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQg
PSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlk
ZQpAQCAtOTUsMjYgKzEzMywzMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJhd2luZ0NvbnRl
eHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVj
dCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoQ29udGV4
dCgpIG92ZXJyaWRlCisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVh
dGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykgb3Zl
cnJpZGUKICAgICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICAgICAgbV9i
YWNrZW5kLT5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShpbWFnZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQorICAgIFJlZlB0
cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRl
eHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpKQot
ICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5n
Q29udGV4dEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoIW1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5jcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVt
KGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBjYWNoZWRJbWFn
ZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQg
d2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSA9
IDUxMjsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3Bs
YXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+PSBEaXNwbGF5
TGlzdEJhdGNoU2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGlzcGxh
eUxpc3QuaXRlbUNvdW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmbHVzaERyYXdpbmdD
b250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKICAgICB9
CisKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NzE1MGM3YjA3OTNhZmU5YWM1YzgzYTlhYzc0NmJhMzE4ZTUxYjhmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
aCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVy
ZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3RJdGVtcy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAg
ICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKSkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0g
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQot
Ci1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcigpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS4KLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KCkpOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRh
KG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdl
RGF0YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZl
cigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OndhaXRGb3JD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQotewotICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQgJiYgIWlzQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLT53YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYmIGlzUGVu
ZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNv
bW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNo
SW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgbV9pbWFnZUJ1ZmZlcklkZW50
aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21taXQoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBpZiAo
IW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fc2VudEZs
dXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwot
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQo
ZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckNvbW1pdEltYWdlQnVm
ZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNo
SWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVu
dGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgK
aW5kZXggNjIwNDE4ZDc4YzI3ZjI4YzU3NDkwMmMyZTFiYTlhMjM3MTc1MTdiOS4uODI0NjBhMTZj
ZWJmMzQ5YTkzNGJiODE2NDQxZDAwOTVkZTExMjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTI5LDExICsyOSw5IEBACiAKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRl
bnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVy
aW5nTW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTQyLDM3ICs0MCwy
MCBAQCBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLQogY2xhc3Mg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpOwotCi0gICAgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4gU2VlIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7CiAKLSAgICB2b2lk
IGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7Ci0KLXByb3Rl
Y3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpOwotCi0gICAg
dmlydHVhbCBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCA9IDA7CiAgICAgYm9vbCBpc1Bl
bmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3Jl
Y2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRh
PiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0gICAgdm9pZCB3
YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci0gICAgdm9pZCB3YWl0Rm9yQ29tbWl0
SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKKyAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCisgICAgeworICAgICAg
ICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOworICAgIH0KIAot
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFu
ZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0KLXByaXZh
dGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ7Ci0gICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlm
aWVyIHsgSW1hZ2VCdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Citwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpID0gZGVmYXVsdDsK
IAogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsK
ICAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOTk1MzQxNzg3ZWRhMjBhNTU0
ZTRkNjdiYTUzZGM2OThhNTM3MGNjMC4uMjM0NDk5NmE0MTA0YzljN2ViNmFiYzg1MjgyZDEyYzZl
YWNhMWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5TWVzc2FnZXMuaCIKQEAgLTM5LDEyICs0MCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKQorc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZShXZWJQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKSk7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChwYWdlKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQoKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZChXZWJQYWdlJiBwYWdlKQorICAgIDogbV9yZW1vdGVSZXNvdXJjZUNhY2hl
KCp0aGlzLCBwYWdlKQogewogICAgIC8vIFJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNl
aXZlciBpbiB0aGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uCiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2
ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CkBAIC04Niw0MCAr
ODgsODIgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWl0Rm9yQ29tbWl0SW1hZ2VC
dWZmZXJGbHVzaENvbnRleHQoKQogICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0
SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFf
cywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2
ZXMpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRyYXdHUFVCYWRnZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLmRyYXdHUFVCYWRnZShjb250ZXh0LCBjb250YWluZXJSZWN0LCBjb2xvciwgdGV4
dCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBTaG91bGRBY2Nl
bGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNob3VsZEFjY2Vs
ZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2Nl
bGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAg
ICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPmltYWdl
QnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzaG91bGRBY2NlbGVyYXRlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VJbWFnZUJ1ZmZlcihpbWFnZSk7Cit9CisKK1JlZlB0cjxE
aXNwbGF5TGlzdDo6SXRlbT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJhd0ltYWdl
QnVmZmVySXRlbShJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQor
eworICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlRHJhd0ltYWdlQnVmZmVy
SXRlbShpbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHJlbW90ZUNsaWVudElkZW50
aWZpZXIpOworfQorCitSZWZQdHI8RGlzcGxheUxpc3Q6Okl0ZW0+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucywgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlQ2xpZW50
KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlQ2xpZW50KHJlbW90ZUNsaWVudElk
ZW50aWZpZXIpOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQoreworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgPSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJl
c291cmNlSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Q2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcjsKK30KIAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVt
b3RlVW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsK
LSAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgcmV0
dXJuIGltYWdlQnVmZmVyOwotICAgIH0KK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbW90ZUdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZSBpbWFnZURhdGFSZWZlcmVuY2U7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOworICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2Uu
YnVmZmVyKCk7Cit9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBt
X3JlbW90ZVJlc291cmNlQ2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitJbWFnZUJ1
ZmZlckZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCit7CisgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmll
ciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUuc2hv
dWxkRHJhd0dQVUJhZGdlKCksIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiBzZW50
Rmx1c2hJZGVudGlmaWVyOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVh
c2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVy
KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsK
LSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2
ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VO
VVNFRChmb3VuZCwgZm91bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVm
ZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIG1fcmVtb3RlUmVzb3VyY2VD
YWNoZS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElk
ZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0
KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChm
bHVzaElkZW50aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAppbmRleCBmNDk2MTU4ZTdkNDBlZWIwNWFjMzk0MzRhZjI0NjMzYmFiYzdmMGVmLi5iYmFmOTM1
Y2RkMTIxNTc3OWQ5ZTdmZWFmODEyYTM4YjNjNjhkYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaApAQCAtMjksMzEgKzI5LDM2IEBACiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2lu
Y2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgog
I2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2Rl
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlz
cGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQorY2xhc3MgRmxvYXRTaXplOworZW51bSBjbGFzcyBD
b2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQYWdlOworCiBjbGFzcyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kCiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAg
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKCk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoV2ViUGFnZSYpOwog
CiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQotCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
LgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBv
dmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtNjEsMjEgKzY2LDMzIEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSk7Ci0gICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKTsKLQogICAgIGJvb2wgd2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
OwogICAgIGJvb2wgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7CiAKKyAg
ICAvLyBSZXNvdWNlIGNhY2hlLgorICAgIHZvaWQgZHJhd0dQVUJhZGdlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmLCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6
Q2FjaGVkSW1hZ2UmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZv
aWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHJlbW90ZUdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciByZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVSZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToK
LSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChXZWJQYWdlJik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lk
IGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUs
IEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNo
Q29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9p
ZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIHVzaW5nIEltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRlbnRpZmllciwg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OwotICAgIEltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAgIFJlbW90ZVJl
c291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDEyYTdiZjhkYTRjODI1NzBiY2EzNmExMzVmZDcx
YWYyNTg4YjY0ZDUuLjJjMGY3ZThhMTIwM2YyNjg2NTJhMDBmYzFmN2IxN2RhNTk5ZDJhYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTIzLDgg
KzIzLDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXpl
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJL
aXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgdm9p
ZCBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIg
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
KFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lk
IENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0Y2Q5ZmUxMTc1
YTU0Y2VmN2Y5YTI2MDczYTNiNWYyOGJlMjkxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAg
LTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
ZEltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNhY2hlOjpS
ZW1vdGVSZXNvdXJjZUNhY2hlKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQsIFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAsIG1fcGFnZShwYWdlKQoreworfQorCitib29s
IFJlbW90ZVJlc291cmNlQ2FjaGU6OnNob3VsZERyYXdHUFVCYWRnZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNob3dEZWJ1Z0JvcmRlcnMoKTsK
K30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkcmF3R1BVQmFkZ2UoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmICghc2hvdWxkRHJhd0dQVUJh
ZGdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBGbG9hdFJlY3QgYm9yZGVyUmVjdCA9IGNvbnRh
aW5lclJlY3Q7CisgICAgYm9yZGVyUmVjdC5pbmZsYXRlKC0xKTsKKyAgICBjb250ZXh0LmRyYXdH
UFVCYWRnZShib3JkZXJSZWN0LCBib3JkZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGNvbG9yLCB0
ZXh0KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2Vs
ZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UpCit7CisgICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxkQWNjZWxl
cmF0ZTo6WWVzKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlID0gQWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVk
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkp
IHsKKyAgICAgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChpbWFnZS5nZXQo
KSwgaW1hZ2UtPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIG1fcmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRkKGltYWdlLT5yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIoKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGltYWdl
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFj
Y2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCkpIHsKKyAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdl
LmdldCgpLCBpbWFnZS0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICBtX3Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmFkZChpbWFnZS0+cmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCksIGltYWdlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwor
ICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2Fj
aGU6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNo
TWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+
Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRp
Zmllcik7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlm
aWVyKQoreworICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gZmluZEltYWdlQnVm
ZmVyRm9yQ2xpZW50KGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8g
Rmx1c2ggdGhlIERyYXdpbmdDb250ZXh0IG9mIHRoZSBzb3VyY2UgSW1hZ2VCdWZmZXIgc28gdGhp
cyBJbWFnZUJ1ZmZlciBnZXRzIGFuIHVwZGF0ZWQgaW1hZ2UuCisgICAgaW1hZ2UuZmx1c2hEcmF3
aW5nQ29udGV4dCgpOworICAgIHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdl
QnVmZmVyOjpjcmVhdGUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyID0gZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KGNhY2hlZEltYWdl
LCBpbWFnZSwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKworUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBm
cm9tIHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVt
b3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNob3VsZCBoYXZl
IGJlZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9vbCBmb3VuZCA9
IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworCisg
ICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNz
IGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQ
ZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVy
biByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmll
ciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlTmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQoreworICAgIC8vIFJlbW92ZSB0aGUgcmVzb3VyY2UgZnJv
bSB0aGUgY2FjaGUuCisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBtX3JlbW90
ZU5hdGl2ZUltYWdlSGFzaE1hcC50YWtlKGltYWdlKTsKKworICAgIC8vIFRlbGwgdGhlIEdQVSBw
cm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlIHVubGVzcyBpdCdzIHBlbmRpbmcgcmVwbGF5
aW5nIGJhY2suCisgICAgaWYgKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmVs
ZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZEltYWdlQnVmZmVy
Rm9yQ2xpZW50KEltYWdlQnVmZmVyJiBpbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQoJmltYWdlKTsKKyAgICBhZGRSZW1v
dGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZE5hdGl2ZUltYWdlRm9yQ2xp
ZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmll
cikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlTmF0aXZl
SW1hZ2VIYXNoTWFwLmVuc3VyZShpbWFnZSwgWyZdIHsKKyAgICAgICAgY2FjaGVkSW1hZ2UuYWRk
Q2xpZW50KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5y
ZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisK
KyAgICBhZGRSZW1vdGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGll
bnRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQor
Cit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIXJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWRkIHRoZSAicmVzb3VyY2Ug
LT4gY2xpZW50IiBkZXBlbmRlbmN5IGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4K
KyAgICBhdXRvJiBjbGllbnRzID0gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLmVuc3Vy
ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgIHJldHVybiBSZW1vdGVD
bGllbnRzSGFzaFNldCgpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGNsaWVudHMu
YWRkKHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworfQorCitWZWN0b3I8UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQoUmVtb3Rl
UmVzb3VyY2VDbGllbnRzSGFzaE1hcCYgcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgVmVj
dG9yPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJl
bW92ZWQ7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5k
ZW5jaWVzIGZyb20gcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4KKyAgICBmb3IgKGF1dG8m
IHBhaXIgOiByZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwKSB7CisgICAgICAgIHBhaXIudmFs
dWUucmVtb3ZlKHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAocGFpci52YWx1
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3Zl
ZC5hcHBlbmQocGFpci5rZXkpOworICAgIH0KKworICAgIC8vIFJldHVybiBhIGxpc3Qgb2YgdGhl
IHVucmVmZXJlbmNlZCByZXNvdXJjZXMuCisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlQ2xpZW50
c1RvQmVSZW1vdmVkOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX3JlbW90ZVJlc291cmNl
Q2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5jb250YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpKTsKKyAgICAKKyAgICAvLyBJZiB3ZSBoYXZlIHJlY29yZGVkIHRoZSByZXNvdXJjZSAt
PiBjbGllbnQgZGVwZW5kZW5jeSBiZWZvcmUgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNo
TWFwLCBtb3ZlIHRoaXMKKyAgICAvLyBkZXBlbmRlbmN5IHRvIG1fcmVtb3RlUmVzb3VyY2VDbGll
bnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLiBPdGhlcndpc2UgcmVtb3ZlIHRoZSByZXNvdXJjZSBm
cm9tIHRoZSBjYWNoZWQuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5j
b250YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291
cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5y
ZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIC8vIFJlbW92
ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSBtX3JlbW90ZVJl
c291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAs
IHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50
c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBSZW1v
dmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVS
ZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNl
Q2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpIHsK
KyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzIGZyb20gbV9yZW1v
dGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgICAgIG1fcmVtb3Rl
UmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92
ZSB0aGlzIHJlc291cmNlLgorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3Rl
UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJkYTcyZTUzNzYyNzE4OGZlZTAw
NDJiZGNhNmM4YTA0MGFhNzE5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0wLDAgKzEsMTAw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEltYWdlQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIEl0ZW07Cit9CitlbnVtIGNs
YXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworY2xhc3MgQ29sb3I7CitjbGFzcyBGbG9hdFJlY3Q7
CitjbGFzcyBGbG9hdFNpemU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDsKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgOiBwdWJsaWMg
V2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNl
Q2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIFdlYlBhZ2UmKTsKKworICAgIGJvb2wgc2hv
dWxkRHJhd0dQVUJhZGdlKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3R1BVQmFkZ2UoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjb250YWluZXJSZWN0
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgdGV4dCk7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCBjcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVz
aENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+
IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW0+IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6OkNhY2hlZElt
YWdlJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAKKyAgICBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6
OkltYWdlQnVmZmVyJik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOworICAgIHZv
aWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlQ2xp
ZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47
CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciosIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNp
bmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1v
dGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVudHNIYXNoU2V0PjsKKyAgICB1c2luZyBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKj47CisKKyAg
ICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUgeyByZWxlYXNlTmF0aXZlSW1hZ2UoaW1hZ2UpOyB9CisK
KyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZEltYWdlQnVmZmVyRm9y
Q2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZE5hdGl2
ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29uc3QgV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZFJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGll
bnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVJbWFn
ZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlTmF0
aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAgIFJlbW90ZVJl
c291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwOworICAg
IFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5k
aW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcDsKKyAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgV2ViUGFn
ZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDc2YzBkMWZjOGFhMDkw
ZGRlNDYyY2IyMWUyNGEyMzRmMTAwYWNmZTEuLjhiMWUzMDg5MTIyODU5NmNmZTA3YTJmOTE3MWU3
ODVkMjUyM2Y3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04OTcsNyArODk3LDcgQEAg
UmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEaXNw
bGF5UmVmcmVzaE1vbml0b3IoUGxhdGYKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIFdlYkNocm9t
ZUNsaWVudDo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpOworICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUobV9wYWdl
KTsKICAgICByZXR1cm4gKm1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="426759"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410740</attachid>
            <date>2020-10-07 02:25:44 -0700</date>
            <delta_ts>2020-10-07 02:33:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217342-20201007022543.patch</filename>
            <type>text/plain</type>
            <size>187526</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVlMmVhNmQ0MGE3NWY5
ODIzNWZlYzQyNDg3ZDQ0MWIwMDBlNzdhYy4uYjEzYjFmNjVkZTNjNDYwMjQzNzJkYmI4MDMyOGZi
OWI1MWVjNWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMC0xMC0wNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gSW1wbGVtZW50IEdQVSByZW5kZXJpbmcgcmVzb3VyY2UgY2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB3b3JrIGlu
IHByb2dyZXNzIHBhdGNoLiBUaGUgZ29hbCBpcyB0byBnZXQgdGhlIEVXUyBib3RzIGNsZWFuIAor
ICAgICAgICBmaXJzdC4gVGhlbiBpdCBtYXkgYmUgc3BsaXQgaW50byBzbWFsbGVyIHBhdGNoZXMu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VX
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xldmVs
Rm9yU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdHUFVCYWRn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVzdHJv
eURlY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
SWRlbnRpZmllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJh
d2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBs
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVy
OjpEcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05h
dGl2ZUltYWdlOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6bmF0aXZlSW1hZ2VQdHIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmltYWdl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
TmF0aXZlSW1hZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpzb3VyY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVz
dGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
SW1hZ2VCdWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6On5EZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjcmVhdGVEcmF3
TmF0aXZlSW1hZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVsZWdhdGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6OndpbGxB
cHBlbmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2Up
OgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorCiAyMDIwLTEwLTA2ICBB
bmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVzaWRl
bnRpYWwgRXhlY3V0aXZlIE9yZGVyIHBhZ2VzIG5vdCBhY2Nlc3NpYmxlIHdpdGggU2FmYXJpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0NGQ0NTY5ODBjYmYxODEzNmFlYTk4NjFmZDA1MTJlZDdjZmMxODM2Li4wNzQw
MmMxZDgzMDE2ZTA1NWIyOGY0ZTMwYTcxNmM4MGZlZWZlZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEwNCBAQAorMjAyMC0xMC0wNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IEdQVSByZW5kZXJpbmcg
cmVzb3VyY2UgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNzM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291
cmNlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpm
bHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3R1BVQmFkZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0
ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRy
YXdJbWFnZUJ1ZmZlckl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVOYXRpdmVJ
bWFnZSk6CisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjplbmNvZGUpOiBEZWxldGVkLgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkcmF3R1BVQmFkZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURy
YXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlQ2FjaGVOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUdldElt
YWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUZsdXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6c2hvdWxkRHJhd0dQVUJhZGdlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6ZHJhd0dQVUJhZGdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNo
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURy
YXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6cmVsZWFzZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6ZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6YWRkUmVtb3RlQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpyZWxlYXNlUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjplbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGNvbnN0KToKKwog
MjAyMC0xMC0wNiAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtN
ZWRpYSBpbiBHUFUgcHJvY2Vzc10gRG9uJ3QgdXNlICdpZCcgYXMgYSBwYXJhbWV0ZXIgb3IgdmFy
aWFibGUgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNWRjMWI5ZmU2YTY1ZDgzMDM1NjkwODc5
NTkxY2NkMmJlYTZkMjJiMC4uMGZhNTc2ZjVhYjFlMTQwMTRjNmI0Yzc3MTA1NDdhM2VlZDE2ZTI3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTkyLDYgKzExOTIsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5oCkBAIC0xMjA1LDYgKzEyMDYsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVnaW9uLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkUmVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggY2NkYmRiNWU0MGMyMTMzN2RkOTJmNGIzYTUwYTdiZTMwODM0YmEx
ZC4uMGMyZjJkNTI3MjVhNDYxNmNkMTkxYzdiM2MyYzY1OWVjZTZkODZlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2Nyw2
ICsyMTY3LDggQEAKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2
MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8q
IEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
QkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3MkJFRkExQTI1MUJFRkZFMDBERDc4RDIgLyogUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MkJFRkExOTI1MUJFRkZEMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzJEQ0ExRTgyNTIzREZDMDAwQzlCMjBEIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkRDQTFFNjI1MjNERTU1MDBD
OUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmgg
Ki87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0Uw
QjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAw
N0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNzBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZl
bnQuaCAqLzsgfTsKQEAgLTk5NDIsNyArOTk0NCw5IEBACiAJCTcyQkFDM0FCMjNFMUU1NDQwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0FDMjNFMUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFD
M0FEMjNFMUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkJFRkExOTI1MUJFRkZEMDBERDc4RDIgLyogUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkMx
OEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzJEQ0ExRTYyNTIzREU1NTAwQzlCMjBEIC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
RTQxNzYxMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzJFNDE3NjIxQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYyMzYsNiArMjYyNDAsNyBAQAogCQkJCTMxNEJFM0E1
MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQk2
QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCAqLywKIAkJCQk1NUEzMzZG
NjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKKwkJCQk3MkRDQTFFNjI1MjNE
RTU1MDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0
MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8q
IFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNh
bFN0YXRlLmNwcCAqLywKQEAgLTI2MjUzLDYgKzI2MjU4LDcgQEAKIAkJCQkwNzRFODJCOTE4QTY5
RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0Uz
NTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhB
QUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTcyQkVGQTE5MjUxQkVGRkQwMERENzhEMiAvKiBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLywKIAkJCQkwNzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIg
LyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJCTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhG
MiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4
MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0zMzE4OCw2ICszMzE5NCw3IEBACiAJCQkJQTgx
ODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNkIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MkRDQTFFODI1MjNERkMwMDBDOUIyMEQgLyogTmF0aXZlSW1hZ2VQdHIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVO
b2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAg
LyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBB
RjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MzU2MCw2ICszMzU2Nyw3IEBACiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90
ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyog
UmVtb3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEy
MDRFQyAvKiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MkJFRkExQTI1MUJFRkZFMDBERDc4RDIgLyogUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVt
b3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1
RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUw
NTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCBiNjc3ZjFkNDA4N2MyNWFhM2I5YmQ3
ODZlNzMxYzA1NjI4NWQ3NjBkLi41NGVmMmI2OTU3NGRhMzU1MzJmNWZmNGQ5NjMxZmUxN2VlNmQ3
N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtNjAyLDEwICs2MDIsMTcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBs
b25nIGxvbmcpIG92ZXJyaWRlIHsgfQogCisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
SW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBu
YXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCisgICAgeworICAgICAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7CisgICAgfQorICAgIAogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpIG92ZXJyaWRl
IHsgfQogCiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0
IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogPSBudWxscHRyLCBE
ZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiwgY29uc3QgTmF0
aXZlSW1hZ2VQdHImKSBvdmVycmlkZSB7IH0KKwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9CiAgICAgdm9p
ZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA1Y2M5MzM4
MzI1NzRkY2JlYmVkODJjMmMwYmNlOGYwMGMyYmNhNzJlLi44MmQyOTE5YzgzY2E3YzQwYmViM2Y5
MDJmOGM2Yzc4YmVlN2ViZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKQEAgLTQxMSw2ICs0MTEsMTcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVk
SW1hZ2VPYnNlcnZlcjo6ZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiBpbWFnZSwgbG8K
ICAgICAgICAgY2FjaGVkSW1hZ2UtPmRlY29kZWRTaXplQ2hhbmdlZChpbWFnZSwgZGVsdGEpOwog
fQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZm9yIChhdXRvIGNhY2hlZElt
YWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAgaWYgKCZpbWFnZSAhPSBjYWNoZWRJbWFn
ZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucywgY2FjaGVkSW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6
ZGlkRHJhdyhjb25zdCBJbWFnZSYgaW1hZ2UpCiB7CiAgICAgZm9yIChhdXRvIGNhY2hlZEltYWdl
IDogbV9jYWNoZWRJbWFnZXMpCkBAIC00MzQsNiArNDQ1LDEyIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6
OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmIGlt
YWdlLCBJCiAgICAgICAgIGNhY2hlZEltYWdlLT5pbWFnZUZyYW1lQXZhaWxhYmxlKGltYWdlLCBh
bmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCwgZGVjb2RpbmdTdGF0dXMpOwogfQogCit2b2lkIENh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3ll
ZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSkK
K3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKKyAgICAgICAg
Y2FjaGVkSW1hZ2UtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGltYWdlLCBuYXRpdmVJbWFn
ZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmNoYW5nZWRJ
blJlY3QoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewogICAgIGZv
ciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpAQCAtNjg5LDYgKzcwNiwxNiBA
QCB2b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFn
ZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSBhbgogICAgICAgICBtX2NsaWVudHNXYWl0aW5nRm9yQXN5
bmNEZWNvZGluZy5jbGVhcigpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpuYXRpdmVJbWFnZVdp
bGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBu
YXRpdmVJbWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEltYWdlQ2xpZW50PiBj
bGllbnRXYWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkSW1hZ2VDbGllbnQqIGNs
aWVudCA9IGNsaWVudFdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+bmF0aXZlSW1hZ2VX
aWxsQmVEZXN0cm95ZWQobmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpjaGFu
Z2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICAg
ICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IDcyZDU5YzFmZjQ4NDVjMjMyNzU5MjBiYzhkMTJmMjczNDMyN2Y3MmMu
LjJmZDJkMzAwOGEzMTUzOWY1MzM0ZGJmMjRjOTY1YTA2YjkwYmFlNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0OSwxNCBAQCBwcml2
YXRlOgogCiAgICAgICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKGNvbnN0IEltYWdl
JiwgRW5jb2RlZERhdGFTdGF0dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRlY29kZWRTaXplQ2hh
bmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisKKyAgICAgICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpIGZp
bmFsOwogCiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikg
ZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIElt
YWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBE
ZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKKyAgICAgICAg
dm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJikgZmluYWw7CisgICAgICAgIAogICAgICAgICB2b2lkIGNoYW5nZWRJblJlY3Qo
Y29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIApAQCAtMTY0LDYgKzE2OCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJik7CiAgICAgYm9vbCBj
YW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKTsKICAgICB2b2lkIGltYWdlRnJhbWVB
dmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0
KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6
SW52YWxpZCk7CisgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFn
ZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoY29uc3QgSW1hZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2VDbGllbnQuaAppbmRleCBiYTY0NDViN2VhN2VkOTYzZDYxYmZmMzBmMjhhOWE0ZWQ3
ZjljMTM2Li4yNjA0ZWMyYjMzODczMjU4ZDkzN2Q1ZTdhOWM3ZGRiYTExMWRjMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApAQCAtMjQs
NiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJJbWFnZVR5cGVzLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00Niw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlZCB3
aGVuIGEgbmV3IGRlY29kZWQgZnJhbWUgZm9yIGEgbGFyZ2UgaW1hZ2UgaXMgYXZhaWxhYmxlIG9y
IHdoZW4gYW4gYW5pbWF0ZWQgaW1hZ2UgaXMgcmVhZHkgdG8gYWR2YW5jZSB0byB0aGUgbmV4dCBm
cmFtZS4KICAgICB2aXJ0dWFsIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWls
YWJsZShDYWNoZWRJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QpIHsgaW1hZ2VDaGFuZ2VkKCZpbWFnZSwgY2hhbmdlUmVjdCk7IHJldHVy
biBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObzsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBu
YXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBOYXRpdmVJbWFnZVB0ciYpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJikg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAppbmRleCBiNDc2YTM1YjgyZDkzNzA4ZDNiMGYyYjRkMWE2ZDI1NDgxMmQwZTExLi43MGM3
YTU3MjAxNThlMWQwMWJkN2FjMWMzMmMxNWI4ZmM5ODFkNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2lu
Y2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBA
IC0yMDQsNiArMjA1LDI0IEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQog
I2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKK3N0YXRpYyB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBCaXRtYXBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFn
ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIFN1YnNhbXBsaW5nIG1heSBo
YXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KKyAgICBJ
bnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZlSW1hZ2Up
OworICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKKyAg
ICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3Nl
ZFNpemUoKTsKKworICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1
bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVk
IGltYWdlLgorICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlm
IChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVj
dCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7
IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKKworICAgIGlmIChpbWFnZS5pbWFnZU9ic2VydmVy
KCkpCisgICAgICAgIGltYWdlLmltYWdlT2JzZXJ2ZXIoKS0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBjb250ZXh0LCBuYXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1w
dHkoKSkKQEAgLTI5Miw5ICszMTEsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1
dG8gb3JpZW50YXRpb24gPSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0
aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlv
biA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShz
aXplKG9yaWVudGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRy
YXdOYXRpdmVJbWFnZSgqdGhpcywgaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJ
bnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAg
ICB9IGVsc2UKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVj
dCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoKnRoaXMsIGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50
RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKIApAQCAtMzc5LDcgKzM5OCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwgQml0bWFwSW1h
Z2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRleHQmIGNvCiB7
CiAjaWYgVVNFKENHKQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJh
d2luZyBpbnRvIFBERiBjb250ZXh0cy4KLSAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKKyAgICBpZiAoY29udGV4
dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSAmJiBDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQo
MSksIHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAppbmRleCAyNjVjYjU3ZDM5Mzk1MDM4YTYyOWYzNWJjZDY4NjNhYTQ0NDM5YzY3Li5l
ODRjNDNmOWI3MWVjNTlkNGY4YjJhODczZWIxZDYwMDgzMjI4NTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQy
NSw2ICs0MjUsNDAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJlc3Rv
cmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R1BVQmFk
Z2UoY29uc3QgRmxvYXRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBiYWRn
ZVBvc2l0aW9uLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnRoaXMpOworCisgICAgc2V0
U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKKyAgICBzZXRTdHJva2VDb2xvcihjb2xvcik7CisgICAg
c3Ryb2tlUmVjdChjb250YWluZXJSZWN0LCAwLjUpOworCisgICAgY29uc3QgdW5zaWduZWQgZm9u
dFNpemUgPSAxMDsKKyAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsK
KyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJBcmlhbCIpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKGZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24u
c2V0Q29tcHV0ZWRTaXplKGZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0
KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKKworICAgIEZvbnRDYXNjYWRlIGNhc2NhZGUoV1RG
TW92ZShmb250RGVzY3JpcHRpb24pKTsKKyAgICBjYXNjYWRlLnVwZGF0ZShudWxscHRyKTsKKwor
ICAgIFRleHRSdW4gdGV4dFJ1bih0ZXh0KTsKKyAgICBmbG9hdCB0ZXh0V2lkdGggPSBjYXNjYWRl
LndpZHRoKHRleHRSdW4pOworICAgIAorICAgIEZsb2F0UmVjdCBiYWRnZVJlY3QoYmFkZ2VQb3Np
dGlvbiwgRmxvYXRTaXplKHRleHRXaWR0aCArIDIsIGZvbnRTaXplICsgMikpOworICAgIGlmIChi
YWRnZVBvc2l0aW9uLngoKSA9PSBjb250YWluZXJSZWN0Lm1heFgoKSkKKyAgICAgICAgYmFkZ2VS
ZWN0LnNldFgoYmFkZ2VQb3NpdGlvbi54KCkgLSBiYWRnZVJlY3Qud2lkdGgoKSk7CisKKyAgICBp
ZiAoYmFkZ2VQb3NpdGlvbi55KCkgPT0gY29udGFpbmVyUmVjdC5tYXhZKCkpCisgICAgICAgIGJh
ZGdlUmVjdC5zZXRZKGJhZGdlUG9zaXRpb24ueSgpIC0gYmFkZ2VSZWN0LmhlaWdodCgpKTsKKwor
ICAgIGZpbGxSZWN0KGJhZGdlUmVjdCwgY29sb3IpOworICAgIAorICAgIHNldEZpbGxDb2xvcihD
b2xvcjo6d2hpdGUpOworICAgIGNhc2NhZGUuZHJhd1RleHQoKnRoaXMsIHRleHRSdW4sIEZsb2F0
UG9pbnQoYmFkZ2VSZWN0LngoKSArIDEsIGJhZGdlUmVjdC55KCkgKyAxICsgZm9udFNpemUpKTsK
K30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRv
d0NvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC03MjksNiArNzYzLDE5
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKK3sKKyAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pbXBsKSB7CisgICAg
ICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zLCBjYWNoZWRJbWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAg
cmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXpl
KCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5n
T3B0aW9ucyk7CkBAIC03NDUsNyArNzkyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdl
LmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2Uo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzU3LDcgKzgwNCw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwp
CisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9u
cy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc3MCw3ICs4MTcsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlm
IChtX2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBt
X2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2Nh
bGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1h
Z2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpAQCAtNzk3
LDYgKzg0NCw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAg
ICAgIHJldHVybjsKKwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKICAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRp
b25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggMDg4ZjJlNTM5NmI5YjQzODU4ODdlYzAxZmFjYThlN2RkOTBlMTgw
Ny4uNTFmY2E0ZDYyOGIzOWIxMGFhOGVmYjRmYjRlODE4Y2JjMTEyZjFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg2
LDYgKzg2LDcgQEAgY2xhc3MgR2x5cGhCdWZmZXI7CiAjZW5kaWYKIAogY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOworY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xh
c3MgR3JhZGllbnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwpAQCAtMzMzLDEwICszMzQs
NiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKLSNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkg
fHwgVVNFKENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pOwotI2VuZGlmCi0KICNpZiBVU0UoQ0cpIHx8IFVTRShESVJF
Q1QyRCkKICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxs
UGF0dGVybigpOwpAQCAtMzU1LDYgKzM1Miw4IEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25l
ZCBzdGFja1NpemUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLnNpemUoKTsgfQogCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3R1BVQmFkZ2UoY29uc3QgRmxvYXRSZWN0JiBjb250YWluZXJS
ZWN0LCBjb25zdCBGbG9hdFBvaW50JiBiYWRnZVBvc2l0aW9uLCBjb25zdCBDb2xvciYsIGNvbnN0
IFN0cmluZyYgdGV4dCk7CisgICAgCiAgICAgLy8gVGhlc2UgZHJhdyBtZXRob2RzIHdpbGwgZG8g
Ym90aCBzdHJva2luZyBhbmQgZmlsbGluZy4KICAgICAvLyBGSVhNRTogLi4uZXhjZXB0IGRyYXdS
ZWN0KCksIHdoaWNoIGZpbGxzIHByb3Blcmx5IGJ1dCBhbHdheXMgc3Ryb2tlcwogICAgIC8vIHVz
aW5nIGEgMS1waXhlbCBzdHJva2UgaW5zZXQgZnJvbSB0aGUgcmVjdCBib3JkZXJzIChvZiB0aGUg
Y29ycmVjdApAQCAtMzgyLDYgKzM4MSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSwgQ2FjaGVkSW1hZ2UqID0gbnVsbHB0cik7CisKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFn
ZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRp
b24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJv
bUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpAQCAtNjQ5LDYgKzY1MCw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmLCBjb25zdCBDb2xvciYpOwogCisgICAgdm9pZCBwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKTsKKwogICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0Fu
ZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcs
IENvbG9yJik7CiAKICAgICBmbG9hdCBkYXNoZWRMaW5lQ29ybmVyV2lkdGhGb3JTdHJva2VXaWR0
aChmbG9hdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGJjOWMxYzJlY2MwY2JmYzM4MjZhYTFl
MDE5MTMxYzg5MzcyZDNmZS4uZTUyYmM0ZTIxOTIyOGMyYjQzNjU1Mjg2OTBlNzY5NzUyMDhiYzA2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEltcGwuaApAQCAtNzIsOSArNzIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJ
bWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSA9IDA7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVT
RShESVJFQ1QyRCkKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKLSNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2UqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggZDM5ZmVhYTgyZjM3MWNmOGFh
Zjc2ZDI3ZjMzNTczZjM1MTk4ZDA4OS4uZWE0ZDYzYTk0ZWQ2Y2YwMjIzZmQ5ZWEwNTA4OGEzN2Jk
NzEyZDZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0z
Miw4ICszMiw5IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NU
eXBlcy5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBh
aW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRp
dmVJbWFnZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgpAQCAtNzIsNyArNzMsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotc3Ry
dWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFz
cyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVk
IGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZDE0NjQ5MmM0
YThkZjkzNWNhZjk0YjlmYjk1NTkwOWFhZDFjYmFmMC4uZGJlMDI1ZWU5ZTFhNDQwZjAyZWE5NjY0
YTM0Zjk4YTBmNmM1MWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIERyYXdp
bmdDb250ZXh0OwogfQogCkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYpIHsgfQogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9y
bSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCmluZGV4IGMwMTBhMGYwY2ZjZDhjNWU3YWI2Yzk0YzVjM2MzNmY0ODM4NmQw
MWYuLjU4ZmMxNDgzNmQ5MmFhMjAwMTlmMjBmZWVkYzU1NzFlOWFiNWU5NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
CkBAIC0zMSwxMyArMzEsMTQgQEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNs
dWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNs
dWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiBjbGFzcyBIb3N0V2luZG93Owog
Y2xhc3MgSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZU9ic2VydmVyLmgKaW5kZXggOGIwODllNTk0YzFhZmNjZWU0ZmZiNTA3MTE1OTc4NzQ2OTVjYjJk
ZS4uMTYyZWY0N2Y0YWY2ZTQ1N2M3NjFmYzcxMWExNWMxYTE0OWVhOGY1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaApAQCAtNDUsMTAg
KzQ1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFu
Z2VkKGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIHsgfTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBsb25nIGRlbHRhKSA9IDA7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RHJhdyhjb25zdCBJbWFnZSYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5EZXN0cm95RGVj
b2RlZERhdGEoY29uc3QgSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVB
dmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0
KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6
SW52YWxpZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3ll
ZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgPSAwOworICAgIAogICAgIHZp
cnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCA9IG51bGxwdHIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoY29uc3QgSW1hZ2UmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc3NTAzMjIzOWE1ZDVhYmFhNzYz
ZjdhMjYzZWQ3Y2IyNDU5ODI2NTIuLjQ1NTE1YzU5YTFmZjI4NGNkOGQyODAzODM3YjA4NWI1MDIy
ZDZjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKQEAgLTEzMCw4ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZGVzdHJveURl
Y29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogICAgIEFT
U0VSVChmcmFtZUNvdW50IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgZnJhbWVDb3VudDsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5k
ZXggPT0gZXhjbHVkZUZyYW1lKQorICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lIHx8
ICFtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAg
ICAgICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVk
KCptX2ltYWdlLCBtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSk7CiAgICAgICAgIGRlY29k
ZWRTaXplICs9IG1fZnJhbWVzW2luZGV4XS5jbGVhckltYWdlKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFl
MzViMDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmLi40YjQxY2Y4OWQ4OTcyYzZmMWU2ZmVm
ZGU4OTk5MmQ2YjllNGY1YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKQEAgLTI3LDUyICsyNywxNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsK
LSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2VsaWYgVVNFKFdJ
TkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKERJUkVD
VDJEKQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgPGQyZDEuaD4KLSNpbmNsdWRlIDx3
aW5jb2RlYy5oPgotI2VuZGlmCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIElu
dFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0KLSNpZiBVU0UoQ0cpCi10eXBlZGVmIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShESVJFQ1QyRCkK
LXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShD
QUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7Ci0j
ZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFn
ZVB0cjsKLSNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwotCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwotCiB2b2lkIGNsZWFyTmF0aXZlSW1h
Z2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotY2xhc3MgTmF0aXZlSW1hZ2VI
YW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOwotfTsKLSAgICAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0MDcxZDA3Yzk1ODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNl
bGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdE
SSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJ
bWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFw
PiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5cGVkZWYgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0UoV0lOR0RJKQordHlwZWRlZiBS
ZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbmRpZgorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZjU0MmRmZWM4NDdhYmMzNzFhYTJmMWU4ZTRiOGRk
OWZiMTEwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGU+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYTEwNDY1NmNiNWQ1ZGRlYTAz
MjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1NDg1NDQ4ZjM0YWE3NzdhZmUw
NGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE2ICsxMjMs
MTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1D
b250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5z
dHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2
ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3TmF0aXZl
SW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBo
YSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcAppbmRleCAzZDQ2YTUwNTNiMTdjOWEzZWY5ZjgyYjIwYjRkOTcxZjAyYTU0M2U2
Li44MmQyN2JkNjVhOGU2MGJkYTc2OTI2MzMyZWFiNGIyYTAzYTRjNTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI3OSwxMyArMjc5LDE5IEBAIEltYWdlRHJh
d1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxl
ZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVk
SW1hZ2UqKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRl
ID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklY
TUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCAzMWJhNzE2MTdlZmE0NTZjMTFm
MDQzYTE5YTQ0OTNmZDU4NWIyM2U1Li4wYmZmNzgxN2VkYTVkMmQ5ZWUzYjFjNzQ4ZWFkMjk5Yzhi
MzFmYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsNyArNzQs
OSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJ
bWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNoZWRJ
bWFnZSopIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA2M2ZiNWRkNjFiYWJjY2NmNzA5MDRl
NTZkMmY5ZDRlNWFkNThjYWM1Li5hY2IxZTRlNGNhYjk2YmU0YmNkMDlmZmM1YTI4Y2U5OTgxNmZm
MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yODAsMTYgKzI4MCwxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9E
ZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdl
KGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAjaWYgIUxPR19E
SVNBQkxFRAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggNWNjNWMyMDdiNDRhNDgzNWJlMmUwODAyOGEzYTcx
MDk1YTU1ZTFlMC4uNDAwZDZlZjBhNDU3N2Q1ZDdjYzViZDljYjY0NmE1YmFkZWJkYWRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCkBAIC02OSw0MCArNjgsNiBAQCBDb2xvciBuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAg
ICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICAvLyBTdWJz
YW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBz
aXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXpl
KGltYWdlKTsKLSAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0
KCkpCi0gICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXplLnRy
YW5zcG9zZWRTaXplKCk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBv
ZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vi
c2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsK
LSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3Rl
ZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9h
dFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3Jj
UmVjdCwgb3B0aW9ucyk7Ci19Ci0KLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3Rv
ciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCi17
Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7
Ci0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwotCi0gICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24ueCgpLCBkZXN0aW5hdGlv
bi55KCksIHNvdXJjZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsKLSAgICBDR0NvbnRleHRT
Y2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKLQotICAgIENHRmxvYXQgaW1hZ2VIZWlnaHQgPSBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOwotICAgIENHRmxvYXQg
aW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgLyBzY2FsZUZhY3RvcjsK
LQotICAgIENHRmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2UueCgpOwotICAg
IENHRmxvYXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkgKyBzb3VyY2Uu
eSgpOwotCi0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0
WCwgZGVzdFksIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOwotCi0gICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOwotfQotCiB2b2lkIGNsZWFyTmF0aXZl
SW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogI2lmIENBQ0hF
X1NVQklNQUdFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA2MTA2NGE4ODYzYjQwZjE5MDVk
YWE0MDUzMzg3YzIyNGI2NDIzYThhLi4yNGY2YWY5Y2E3NzZlYzI4MmE3ODI2ZjJhYjQ4MmUxOGZh
YmJiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjIsOCArNjIsOSBAQCBlbnVtIGNs
YXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0ltYWdlLAogICAgIERyYXdUaWxlZElt
YWdlLAogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlLAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KSB8fCBVU0UoRElSRUNUMkQpCiAgICAgRHJhd05hdGl2ZUltYWdlLAorI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKyAgICBEcmF3SW1hZ2VCdWZmZXIsCiAjZW5kaWYKICAgICBEcmF3UGF0dGVybiwK
ICAgICBEcmF3UmVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmNwcAppbmRleCAyM2NjMDdlOGFlNDQyYmRjZWEwZDM2NzRhNWE4NTUxYzY1Y2ZkYzg3
Li5kNDYxN2QzNTE2ZjRmM2U1MWQ3NWQ2NDQzNGE2YTM5NDU3YTAwMDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCkBAIC0zMyw5ICszMyw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1EcmF3
aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6T2JzZXJ2ZXIqIG9i
c2VydmVyKQorRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6
OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0
JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3Jk
ZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3Rh
dGUoKSwgRmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBvYnNlcnZlcik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQs
IG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxv
Z2ljYWxTaXplKSwgaW5pdGlhbENUTSwgZGVsZWdhdGUpOwogICAgIH0pCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAppbmRleCA3YjY3M2YzMmFk
ODE1YTUwMDgxYjdlN2FiMTA4MTMxNzE3ZmRlNTQzLi4yMmVkMjU2ZTgwYWQyOTNhMDUyMDY5Yjc0
MzA4OGExMzUxZjQ3Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNs
YXNzIERyYXdpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29y
ZGVyOjpPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29u
dGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKIAogICAg
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJh
d2luZ0NvbnRleHQmPigqdGhpcykubV9jb250ZXh0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVj
b3JkZXImIHJlY29yZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaAppbmRleCA4NjcyYjFiNDcwODQ3NjkwMTg1MDg0OTU5YTc3YWY0MmZkYjgwNDNmLi4wM2Nh
ZWYwNTlkMGU5ZTA1NmRjNDFiYTU3NTdjNWEzNzBkZWIzZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+Ci1jbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVy
PEJhY2tlbmRUeXBlPiwgcHVibGljIFJlY29yZGVyOjpPYnNlcnZlciB7CitjbGFzcyBJbWFnZUJ1
ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRU
eXBlPjsKIAogcHVibGljOgpAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIEltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBkYXRhQmFja2VuZCwgY29uc3Qg
RmxvYXRTaXplJiBzaXplKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1v
dmUoZGF0YUJhY2tlbmQpKQotICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlh
bERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRl
eHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpKQogICAgIHsKICAgICB9CiAK
LSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogbV9kcmF3
aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisg
ICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZWNvcmRlcjo6RGVsZWdhdGUq
IGRlbGVnYXRlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGlu
aXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgZGVsZWdhdGUpCiAgICAgewogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGRiZjE4ODRhMjFhMzQ5ZjZh
YTAzMzM3Zjc2ZWQ1OTI5MjNjMDRkZTMuLjg4Zjg4ODlhZWIzN2JhNmZlOGY2M2E2MTE5ZjQxZDhh
ZDQ4OGU3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRm9u
dENhc2NhZGUuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cpCkBA
IC0xMDUsOSArMTA0LDExIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBp
dGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdlPihpdGVt
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAgIHJl
dHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsKLSNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6
CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKSk7
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0
ZW0pKTsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CkBAIC03MDAsMzIgKzcw
MSwyMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi0jaWYg
VVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLURyYXdOYXRpdmVJbWFnZTo6
RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0
aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCi0jaWYgVVNF
KENHKQotICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4KICAg
ICAsIG1faW1hZ2UoaW1hZ2UpCi0jZW5kaWYKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkK
ICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1Jl
Y3QpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKLSNpZiAhVVNFKENHKQotICAgIFVOVVNF
RF9QQVJBTShpbWFnZSk7Ci0jZW5kaWYKIH0KIAogRHJhd05hdGl2ZUltYWdlOjp+RHJhd05hdGl2
ZUltYWdlKCkgPSBkZWZhdWx0OwogCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1f
c3JjUmVjdCwgbV9vcHRpb25zKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwot
I2VuZGlmCisgICAgQVNTRVJUKG5hdGl2ZUltYWdlUHRyKCkpOworICAgIGNvbnRleHQuZHJhd05h
dGl2ZUltYWdlKG5hdGl2ZUltYWdlUHRyKCksIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVj
dCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpAQCAtNzM2
LDYgKzcyNywzMyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVz
dC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CiAgICAgcmV0dXJuIHRzOwogfQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorRHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZmZXIo
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAg
ICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisK
K0RyYXdJbWFnZUJ1ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9pZCBE
cmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8g
U2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNv
bnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVz
b3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJl
dHVybiB0czsKK30KICNlbmRpZgogCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQpAQCAtMTQyNyw4ICsxNDQ1LDkgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwgImRy
YXctdGlsZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8p
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUt
aW1hZ2UiOyBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICNl
bmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJu
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3Qi
OyBicmVhazsKQEAgLTE1MjgsMTAgKzE1NDcsMTMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVk
SW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRvd25j
YXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAg
IHRzIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CmluZGV4IGYwNTU4NjllMTdhYWE5NjY0ZWI1M2ZiMWJlZTc5NTgwNjQyOGQzNjMuLmM4YWMwMGUz
NGUwOTVmMjJlZGIwYjZiZTU4MmE4NzBjOGJlYTYwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtMTQzMCwzMiArMTQzMSw1MyBAQCBPcHRpb25hbDxSZWY8
RHJhd1RpbGVkU2NhbGVkSW1hZ2U+PiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZQogICAgIHJldHVybiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6Y3JlYXRlKCppbWFn
ZUhhbmRsZS0+aW1hZ2UsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKnRpbGVTY2FsZUZhY3Rvciwg
aFJ1bGUsIHZSdWxlLCAqaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi0jaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1
YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1h
Z2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKyAgICB1c2luZyBOYXRpdmVJbWFnZVR5cGUgPSBWYXJpYW50PE5hdGl2ZUlt
YWdlUHRyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIAorICAgIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlbW90ZVJlc291cmNlSWRlbnRpZmll
cj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gV1RG
OjpnZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPihtX2ltYWdlKTsKKyAgICB9CisKKyAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0cigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
IVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TmF0aXZlSW1hZ2VQdHI+KG1faW1hZ2UpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6OmdldDxOYXRpdmVJbWFn
ZVB0cj4obV9pbWFnZSk7CisgICAgfQorI2Vsc2UKKyAgICB1c2luZyBOYXRpdmVJbWFnZVR5cGUg
PSBOYXRpdmVJbWFnZVB0cjsKKyAgICAKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0
cigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyNlbmRpZgorCisgICAgc3RhdGljIFJlZjxE
cmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAgIH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpOwogCisgICAgRmxvYXRT
aXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRS
ZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBk
ZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAg
IEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7
IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERy
YXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotI2lmIFVTRShDRykKLSAgICBOYXRp
dmVJbWFnZVB0ciBtX2ltYWdlOwotI2VuZGlmCisgICAgTmF0aXZlSW1hZ2VUeXBlIG1faW1hZ2U7
CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9u
UmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTQ2NSwxMCArMTQ4Nyw3IEBAIHBy
aXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBOYXRpdmVJ
bWFnZUhhbmRsZSBoYW5kbGUgeyBtX2ltYWdlIH07Ci0gICAgZW5jb2RlciA8PCBoYW5kbGU7Ci0j
ZW5kaWYKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CiAgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6
ZTsKICAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OwogICAgIGVuY29kZXIgPDwgbV9z
cmNSZWN0OwpAQCAtMTQ3OCwxMiArMTQ5NywxMCBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0
aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0jaWYgVVNFKENHKQotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlSGFu
ZGxlPiBoYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFoYW5kbGUpCisg
ICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VUeXBlPiBpbWFnZTsKKyAgICBkZWNvZGVyID4+IGltYWdl
OworICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYK
IAogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXplOwogICAgIGRlY29kZXIgPj4gaW1h
Z2VTaXplOwpAQCAtMTUwNSwxNCArMTUyMiw3NSBAQCBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUlt
YWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSNpZiBVU0UoQ0cpCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBoYW5kbGUtPmltYWdlOwotI2Vsc2UKLSAgICBOYXRp
dmVJbWFnZVB0ciBpbWFnZSA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICByZXR1cm4gRHJhd05hdGl2
ZUltYWdlOjpjcmVhdGUoaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNS
ZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCppbWFn
ZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKIH0K
LSNlbmRpZgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorY2xhc3MgRHJhd0ltYWdlQnVmZmVy
IDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERyYXdJbWFn
ZUJ1ZmZlcj4gY3JlYXRlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZmZXIoKTsKKworICAgIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50aW5n
T3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+
PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdJ
bWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKwor
ICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsK
KyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0IG1fc3JjUmVj
dDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7
CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fc3Jj
UmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VCdWZmZXI6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbW90ZVJlc291cmNlSWRl
bnRpZmllcj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBk
ZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGlu
YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAoIXNvdXJjZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRp
bmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9w
dGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd0lt
YWdlQnVmZmVyOjpjcmVhdGUoKnJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgKmRlc3RpbmF0aW9u
LCAqc291cmNlLCAqb3B0aW9ucyk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CkBAIC0y
OTI0LDEwICszMDAyLDEzIEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAgIGVu
Y29kZXIgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCp0aGlzKTsKICAgICAgICAg
YnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8RHJhd05hdGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAg
IGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7CisgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGVu
Y29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKQEAgLTMxMTIsMTEgKzMxOTMs
MTUgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoZGVj
b2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdU
Rk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8p
IHx8IFVTRShESVJFQ1QyRCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAg
ICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgq
aXRlbSkpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJh
d0ltYWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgaWYgKGF1dG8g
aXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUoZGVjb2RlcikpCkBAIC0zMjcwLDggKzMzNTUsOSBA
QCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0dseXBocykKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2UpCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkSW1hZ2UpCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkU2NhbGVkSW1hZ2UpCi0j
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlM
SVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiAjZW5k
aWYKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3UGF0dGVybikK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3UmVjdCkKQEAgLTMz
MzEsOSArMzQxNywxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0ltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1Rp
bGVkSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRT
Y2FsZWRJbWFnZSwKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQot
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
UmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGJkMDQzOGM2YTRiMjU2
Yzg4NTZiYjEyOWEzYWI1ZmEyM2U3OGRjOGEuLmRjY2MwMmQxN2VlMDY0MTM4Y2JmODlhN2Q5MjU3
ZjUwY2E1MWMzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgpAQCAtMzcsMTAgKzM4LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBpbml0aWFsQ1RNLCBPYnNlcnZlciogb2JzZXJ2ZXIpCitSZWNvcmRlcjo6UmVjb3JkZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCiAg
ICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFu
c2Zvcm0oKSkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgLCBtX29ic2Vy
dmVyKG9ic2VydmVyKQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKIHsKICAgICBMT0dfV0lU
SF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdpdGggY2xpcCAi
IDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUsIGluaXRp
YWxDVE0sIGluaXRpYWxDbGlwIH0pOwpAQCAtNTIsMTUgKzUzLDE1IEBAIFJlY29yZGVyOjp+UmVj
b3JkZXIoKQogICAgIExPRyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4l
cyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogfQogCi12b2lkIFJlY29y
ZGVyOjpwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZv
cm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKK3ZvaWQgUmVjb3JkZXI6
OnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJ
bWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQogewotICAg
IGFwcGVuZEl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6Y3JlYXRlKGlu
cHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCkpOwor
ICAgIGFwcGVuZEl0ZW0oUHV0SW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRGb3JtYXQsIGltYWdlRGF0
YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pCiB7Ci0gICAgaWYgKG1fb2JzZXJ2ZXIp
Ci0gICAgICAgIG1fb2JzZXJ2ZXItPndpbGxBcHBlbmRJdGVtKGl0ZW0pOworICAgIGlmIChtX2Rl
bGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbShpdGVtKTsKIAogICAg
IGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKQogI2lmIFVTRShDRykKQEAgLTEzNiwxMyArMTM3LDMz
IEBAIEltYWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkUmVjb3JkOwogfQogCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1Qy
RCkKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKIHsKKyAgICBpZiAo
bV9kZWxlZ2F0ZSAmJiBjYWNoZWRJbWFnZSkgeworICAgICAgICBpZiAoYXV0byBkcmF3TmF0aXZl
SW1hZ2VJdGVtID0gbV9kZWxlZ2F0ZS0+Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgKmNhY2hlZEltYWdlKSkgewor
ICAgICAgICAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4o
YXBwZW5kSXRlbShkcmF3TmF0aXZlSW1hZ2VJdGVtLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAg
ICAgICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisKICAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERy
YXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRl
bnQobmV3SXRlbSk7CiB9Ci0jZW5kaWYKKworYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
eworICAgIGlmICghbV9kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBkcmF3SW1hZ2VCdWZmZXJJdGVtID0gbV9kZWxlZ2F0ZS0+Y3JlYXRlRHJhd0ltYWdlQnVmZmVy
SXRlbShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CisgICAgaWYgKCFkcmF3
SW1hZ2VCdWZmZXJJdGVtKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEcmF3aW5nSXRl
bSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKGRyYXdJbWFnZUJ1
ZmZlckl0ZW0ucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRl
bSk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCmluZGV4IGQyNzBjNWQ5MDhhYzY4ZDc4MDgzNjNiYmE5MWIyZTc2MWFlZGM5MmIuLmVm
YWM2YmFjZTc0MmNjODcwZmRkYWMxNGNkZGY4N2Q4NWM0Mjg1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUgIklt
YWdlLmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1bGUuCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKQEAgLTUzLDE3ICs1NCwxOSBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgT2JzZXJ2
ZXI7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxh
eUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5p
dGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIE9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNz
Q29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0
ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0
Rm9ybWF0KTsKIAogICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bs
YXlMaXN0Lml0ZW1Db3VudCgpOyB9CiAKLSAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgY2xhc3Mg
RGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0K
KyAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KKyAgICAgICAgdmlydHVhbCBSZWZQdHI8
SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2UmKSB7IHJldHVybiBudWxscHRyOyB9
CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0o
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAgICAgdmlydHVh
bCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgfTsKIApAQCAtMTAy
LDkgKzEwNSw5IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGls
ZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0jaWYg
VVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSNlbmRpZgorCisgICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7
CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJy
aWRlOwpAQCAtMTgzLDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgQ29udGV4dFN0YXRlJiBjdXJy
ZW50U3RhdGUoKTsKIAogICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIE9ic2Vy
dmVyKiBtX29ic2VydmVyOworICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgVmVjdG9y
PENvbnRleHRTdGF0ZSwgMzI+IG1fc3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjMxZDM3NWIwMmRhMDk3OTI4OWFjYzIw
MGRkODYyZmFlMTM0MTA0Yi4uNGI1ZTNlNDNiMDM5NjRhNTFjMjczZTViZTdhZWRiMGRmMWFhOTFm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAi
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluVGhyZWFkTm90aWZpZXIuaCIKICNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggY2VhMmE2ZWEwNDQ1MzRm
ZjQ1NDRlYTIxMDljMjYxN2Q3OTdjYTJmMS4uMWJjMjI2YzM5MGJhZGNkYWQzMzFhZjI0OWY1NTYx
NGYxM2E1MzVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCBJbWFnZURyYXdSZXN1bHQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUlt
cGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2Nh
bGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqKQogewog
ICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAg
ICAgIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKQEAgLTU3MCw2ICs1NzAs
MTIgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERy
YXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0
UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKSk7CiB9CiAKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzdHJ1Y3QgRHJhd1Bh
dHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5z
Zm9ybSwgRmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkZTI0YWI4
YmQ1MjQzMmNlMjkzYTgwZjZiNGY5ODYwZjIyMmZhN2ZmLi5hMjk3MjA2MWNhODM4ZDZkNTJlNTVj
NjMzOWE3ZDkzYjRiMDIzYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Nyw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6Oklt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVz
dWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworCisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyYsIFdlYkNvcmU6OkNhY2hlZEltYWdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBk
cmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDM3NDA3MTcxNWJjYjc5MWQ1ODlkNTBk
OTliMjljNjZiMDEwYjcwODEuLjU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVj
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDE2ICsyMDcsMTEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJl
Y3QyRDo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBD
T01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2lt
cGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZv
cm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJl
Y3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3Qy
RDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjQ3YTdh
ZDRjZDI5NTM4ZTRlYWY0MGJkODAzNjk2ODYwMDhiODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCi0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIDogbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQot
ICAgICwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotewot
fQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y3JlYXRlQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
KSk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21t
aXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVy
KQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNo
SWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJlOTIwZWZkZGMxNzlmNjNmZDRmZDI0YmNmNzkxMzI0MTA5NWU2MzUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKLQotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgotI2luY2x1ZGUg
IkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVp
bnQ4X3Q7Ci1jbGFzcyBJbWFnZURhdGE7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkgPSBkZWZhdWx0OwotCi0gICAgLy8gTWVzc2FnZXMg
dG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW4uCi0gICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaERy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3Qp
IGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmLCBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIpOwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSk7Ci0gICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VC
dWZmZXJGbHVzaElkZW50aWZpZXIpOwotCi1wcml2YXRlOgotICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAgSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAppbmRleCA4MWI4OTc4ZDBlNzkxMTU3ZjljN2U0OTcwMzk4MTdlNDc5NTllNTE0Li41YjNh
ODcxMmVmYzE0YzJmNDdlYmE0YjI1YzVkMmM2YmI4OTg3ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKQEAgLTI3LDI5ICsyNywyOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5j
bHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdFJlcGxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHksIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5ZXI6OkRlbGVnYXRlIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJs
aWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKICAgICB1c2luZyBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5
cGU+OwogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0OwogICAgIHVz
aW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CisgICAgdXNpbmcgQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKIAogcHVibGljOgotICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0g
ICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYg
YmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisg
ICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYg
YmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHksIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSkK
LSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkocmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgICAgICwgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQog
ICAgIHsKLSAgICAgICAgY3JlYXRlQmFja2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1f
YmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9i
YWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKCkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW1vdGVD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tl
bmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2Vu
ZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5KCkKQEAgLTYxLDkgKzYxLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29udGV4
dDsKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwotCiAg
ICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoZGlz
cGxheUxpc3QuaXRlbUNvdW50KCkpIHsKQEAgLTcyLDI3ICs2OSwxOCBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOwotICAgICAgICBtX2JhY2tl
bmQtPmZsdXNoQ29udGV4dCgpOwotICAgICAgICBjb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVu
dGlmaWVyKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFn
ZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBhcHBs
eShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKLSAgICB9
Ci0KLSAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGl0ZW0u
dHlwZSgpICE9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpIHsKKyAgICAgICAgICAg
IGF1dG8mIHB1dEltYWdlRGF0YUl0ZW0gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhJj4oaXRlbSk7CisgICAgICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1h
Z2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBw
dXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwg
cHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KIAotICAgICAgICBhdXRvJiBwdXRJbWFnZURhdGFJdGVtID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YSY+KGl0ZW0pOwotICAgICAgICBw
dXRJbWFnZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJ
dGVtLmltYWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRh
SXRlbS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmFwcGx5UmVzb3VyY2VJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIH0KKyAgICAKKyAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IGRiYjU1YmEzYzIyMGRlODZmMThhNTMzY2ZhMDg3MThmMzg5MjRmMDguLjMw
YjVkYzM0ZDA0MDY4ZDgzZDZmNDg3NDA3OWFmZmU1MTZjYTBkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eU1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjYsNTkgKzY2LDQ2IEBA
IHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LnRvVUludDY0KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorYm9vbCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKERpc3BsYXlMaXN0
OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byogZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KTsKLSAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuY29udGFpbnMoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OlJlbW90ZUFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmllcikp
IHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIg
PSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpKSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGlt
YWdlQnVmZmVySWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmFwcGx5UmVzb3VyY2VJdGVtKGl0
ZW0sIGNvbnRleHQpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVs
ZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZl
ciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAg
IGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdl
QnVmZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIg
aW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VE
YXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKLSAg
ICAgICAgYXV0byBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZv
cm1hdCwgc3JjUmVjdCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRh
UmVmZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOwotICAgIH0KKyAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcmVhdGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9k
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZl
ckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
bV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
KQotICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7
CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuZmx1c2hEcmF3aW5nQ29udGV4dChkaXNw
bGF5TGlzdCwgc2hvdWxkRHJhd0dQVUJhZGdlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwog
fQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCwgYm9vbCBzaG91bGREcmF3R1BVQmFkZ2UsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAg
aW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIGZs
dXNoSWRlbnRpZmllcik7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuZmx1c2hEcmF3
aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgc2hvdWxkRHJhd0dQVUJhZGdlLCByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJl
Y3Qgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGltYWdlRGF0YSA9IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
K3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdl
LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmlu
ZGV4IDY3NjRhYzEwYzVlN2UwMmE0Yzk3ODc3YjljNWU1NWNhMGI3OGNiMWUuLjA2MjI4ZmVmOTRl
YWU5ZjIzYTcxMmRhNDgxYWJiNmFlZjAxMGZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmgKQEAgLTI4LDI0ICsyOCwyMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIklt
YWdlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
LSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRT
aXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiB9CitjbGFz
cyBGbG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFz
cyBSZW5kZXJpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
OSw3ICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyOyB9CisgICAgYm9vbCBhcHBseVJlc291cmNlSXRlbShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCisgICAgLy8gTWVzc2Fn
ZXMgdG8gYmUgc2VudC4KKyAgICB2b2lkIHJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBA
IC03MywxNCArNzUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0g
ICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWxl
YXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZl
ckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpOwotICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIEltYWdlQnVmZmVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYm
KT4mJik7Ci0KLSAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1h
cDxJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk+PjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFw
IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBib29sIHNob3VsZERyYXdH
UFVCYWRnZSwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2Uo
Y29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFdlYWtQdHI8R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzk4
YzhiNGVkYjU3ZjVhZDA4MmJhODFjMTAwOGIwZGNkZWZkZjE4YS4uZDRlZWM0ZjliYzEzZmM0Mjk1
ZDRmMzBjMzA1NDZkODNlZDE4ODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMywxMSArMjMsMTIgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBOb3RSZWZD
b3VudGVkIHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBs
b2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgUmVs
ZWFzZUltYWdlQnVmZmVyKFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllcikKLSAgICB2b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYktpdDo6SW1hZ2VC
dWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIEZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIg
Zmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZl
cklkZW50aWZpZXIpCi0gICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0
LCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpIC0+
IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3Bs
YXlMaXN0LCBib29sIHNob3VsZERyYXdHUFVCYWRnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIEZsdXNoSW1hZ2VC
dWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QgZGlzcGxheUxpc3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBXZWJLaXQ6OkltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICBHZXRJbWFnZURh
dGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVy
ZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDYWNoZU5hdGl2ZUltYWdlKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGltYWdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgUmVsZWFzZVJlbW90ZVJl
c291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxZDlmYTcxM2RkNjY0YzJlYzZjNjJlOTRmNmZm
Mjk2OGUxNzdkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMCwwICsxLDE1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlBs
YXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKK3sKK30KKwordm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmNv
bnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlOworCisgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0g
UmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlID0gQWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBpZiAoIWltYWdlIHx8IHJlbmRlcmluZ01vZGUg
PT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkKKyAgICAgICAgaW1hZ2UgPSBV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgaWYgKGltYWdlKSB7CisgICAgICAg
IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IFdURk1vdmUoaW1hZ2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCitJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIFNldEZvclNjb3BlPGJvb2w+IGNo
YW5nZShtX3Nob3VsZERyYXdHUFVCYWRnZSwgc2hvdWxkRHJhd0dQVUJhZGdlKTsKKyAgICBhdXRv
IGltYWdlID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgaWYgKGltYWdlKQorICAgICAgICBpbWFnZS0+Zmx1c2hEcmF3aW5nQ29u
dGV4dChkaXNwbGF5TGlzdCk7CisgICAgcmV0dXJuIGltYWdlOworfQorCitJbWFnZUJ1ZmZlciog
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNv
bnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGJvb2wgc2hvdWxkRHJh
d0dQVUJhZGdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIGF1dG8gaW1hZ2UgPSBmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0
LCBzaG91bGREcmF3R1BVQmFkZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYg
KGltYWdlKQorICAgICAgICBpbWFnZS0+Zmx1c2hDb250ZXh0KCk7CisgICAgcmV0dXJuIGltYWdl
OworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmdldElt
YWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikgY29uc3QKK3sKKyAgICBpZiAoYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJI
YXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gaW1h
Z2UtPmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90
ZU5hdGl2ZUltYWdlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZSk7
CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdHUFVCYWRnZShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY29udGFpbmVyUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHRleHQpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Nob3Vs
ZERyYXdHUFVCYWRnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQuZHJhd0dQVUJhZGdl
KGNvbnRhaW5lclJlY3QsIGNvbnRhaW5lclJlY3QubWF4WE1heFlDb3JuZXIoKSwgY29sb3IsIHRl
eHQpOworfQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6ZHJhd05hdGl2ZUltYWdl
SXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAoreworICAgIGF1dG8mIGRyYXdJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZSY+KGl0ZW0pOworICAgIGF1dG8gcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyID0gZHJhd0l0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAg
aWYgKCFyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gaW1hZ2UgPSBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5nZXQoZHJhd0l0ZW0u
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBkcmF3SXRl
bS5pbWFnZVNpemUoKSwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVtLnNvdXJj
ZSgpLCBkcmF3SXRlbS5vcHRpb25zKCkpOworICAgIGRyYXdHUFVCYWRnZShjb250ZXh0LCBkcmF3
SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCwgIklNQUdFIl9zKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRy
YXdJbWFnZUJ1ZmZlckl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19j
YXN0PGNvbnN0IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXImPihpdGVtKTsKKyAgICBhdXRv
IGltYWdlID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KGRyYXdJdGVtLnJlbW90ZVJl
c291cmNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpbWFnZS0+ZHJhdyhjb250ZXh0LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3Qo
KSwgZHJhd0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgZHJhd0dQVUJh
ZGdlKGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBXZWJDb3JlOjpDb2xvcjo6
Ymx1ZSwgIkNBTlZBUyJfcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRl
bSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGlmIChpdGVt
LnR5cGUoKSA9PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKKyAgICAg
ICAgcmV0dXJuIGRyYXdOYXRpdmVJbWFnZUl0ZW0oaXRlbSwgY29udGV4dCk7CisgICAgaWYgKGl0
ZW0udHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQorICAg
ICAgICByZXR1cm4gZHJhd0ltYWdlQnVmZmVySXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAobV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAucmVtb3ZlKHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZW1vdGVO
YXRpdmVJbWFnZUhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAg
ICAgIHJldHVybjsKKyAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhh
dmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRmYzA1MmMyODQ2OTZl
Yjc2NGRhYjZkY2VlN2YwN2ZlNmFmYzhmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3Mg
RGlzcGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQorfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFzcyBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKKworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBm
bHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYsIGJvb2wgc2hvdWxkRHJhd0dQVUJhZGdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBmbHVzaERyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIGJvb2wgc2hv
dWxkRHJhd0dQVUJhZGdlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3Jj
UmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKKworICAgIHZv
aWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBib29sIGFwcGx5UmVzb3VyY2VJ
dGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CisKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHVzaW5nIFJlbW90
ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2lu
ZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+OworCisgICAgdm9pZCBkcmF3
R1BVQmFkZ2UoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYg
dGV4dCkgY29uc3Q7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Cisg
ICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXJJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICBSZW1vdGVJbWFn
ZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlTmF0
aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisgICAg
Ym9vbCBtX3Nob3VsZERyYXdHUFVCYWRnZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGZhY2QyZjdhZmI1YTM5MmVlMjA5NjdhNzZm
ZDQxZTE0ZGZiMTUwYjkuLjE1OGM0ZWY5N2MyZTk5Yjg3NjY3OTM2ZWI0MGE1ZTE4NzhkMThiM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE3LDExICsy
MTcsMTMgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHInLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVy
SUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlbmRlcmluZ01v
ZGUnLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLApAQCAtMjQwLDcgKzI0Miw2
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6
TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jlc29s
dmVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCBlMGJiYmJjNWJhMjMxOGJmYThlNjMxOTZkNTRlZWJiODkwMzY0NDQx
Li5hMDc3NTMwOTU3YmE4ZDQ3ZDU0MjliYWRkNjY3NTc1NTRkMDYyMTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAsNyArMTEw
MCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIE5hdGl2ZUltYWdl
UHRyIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogICAgIGF1dG8gaW1hZ2VTaXplID0g
bmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKQEAgLTExNDMsNyArMTE0Myw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVy
JiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2
b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBib29sIGhh
c0ltYWdlID0gISFpbWFnZTsKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwpAQCAtMTE2NiwxNCAr
MTE2NiwxNCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxO
YXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgogICAgIHJldHVybiBkZWNvZGVOYXRp
dmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJ
bWFnZUhhbmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZUhh
bmRsZSYgaW1hZ2VIYW5kbGUpCit2b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewot
ICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2Uu
Z2V0KCkpOworICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOwog
fQogCi1ib29sIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdlSGFuZGxlKQorYm9vbCBBcmd1bWVu
dENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShk
ZWNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZSk7CisgICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsTmF0
aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZv
bnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYg
Zm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggMDVkMDM1NTRiOWVjYTlhMDQxYzM2OGVmNDUzODgyNDQzNGNlNmUyMy4uOWYzYjEwNjY5MzMz
YmEzMDE1Mjk3ODNjOWUxZTkxZWFiYTRjYWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0
aXZlSW1hZ2VQdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC0xMDUsNyArMTA2LDYgQEAgY2xhc3MgS2V5
ZnJhbWVWYWx1ZUxpc3Q7CiBjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgTGF5b3V0UG9pbnQ7CiBj
bGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbjsKLWNsYXNzIE5hdGl2ZUltYWdlSGFuZGxlOwogY2xh
c3MgTm90aWZpY2F0aW9uOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOwpAQCAtNDE2LDkgKzQxNiw5IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFn
ZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZUhhbmRsZT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhbmRs
ZSYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA3MzBkYTY0
OGYyYjJmZTllNzg0ZmQwNDA1MmUxOTBmMGQwYmYyMWFkLi43NGYwZDI1YjljZDQxZTc3ZmUxNTNj
NzUzZGEwZDFmYjRhMDZhNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9T
aGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVh
YmxlQml0bWFwQ0cuY3BwCkBAIC0xMDYsMTIgKzEwNiwyNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAK
IHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNl
KQogewotICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwgMSwg
ZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgcGFpbnQoY29udGV4dCwgMSwgZGVzdGluYXRpb24s
IHNvdXJjZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBkcmF3TmF0aXZlSW1h
Z2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIHNjYWxlRmFjdG9yLCBkZXN0aW5hdGlvbiwg
c291cmNlKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisgICAgCisgICAg
Q0dDb250ZXh0Q2xpcFRvUmVjdChjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24ueCgp
LCBkZXN0aW5hdGlvbi55KCksIHNvdXJjZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsKKyAg
ICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKKyAgICAKKyAgICBhdXRvIGlt
YWdlID0gbWFrZUNHSW1hZ2VDb3B5KCk7CisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBpbWFn
ZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworICAg
IAorICAgIENHRmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2UueCgpOworICAg
IENHRmxvYXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkgKyBzb3VyY2Uu
eSgpOworICAgIAorICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1ha2Uo
ZGVzdFgsIGRlc3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKKyAg
ICAKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7CiB9CiAKIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCBiYzJjNDk0M2FlYmU1Y2NhZjhiOTQ3ZWQ3MWFlMDMwZjRmMzJkOTgzLi4xZjYxMzE4
OTI4ZTlkMTY2Y2E1ZjAyZmU3OTdkZjQyNjk3YTRlNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0LDgg
KzI0LDggQEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKLUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcApAQCAtNTUxLDggKzU1MSw4IEBAIFdlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAog
CiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKLVdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjVmZjg2ZGIzZDIzZjBjYWEyOGIyZTZjNzM1ZWNmNDM5
ZmIxZDA2OS4uNDcxNTE0ZjUzZmIzM2M1NzA5MmEyNTExMGQ3MTZkMDFjNDZmYzM3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODY0
LDcgKzM4NjQsNiBAQAogCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MDY0MEEzMjQw
NzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQ0
MjQwOEFCQjMwMERFNEQyRiAvKiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDE0NiwxMCArNDE0NSw3IEBACiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdENjI5
NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07
IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MUZCODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0ZVNp
bXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8q
IFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAwQzI0
MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjI3ODAxMTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDEyMjQw
OTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzUyNDA3ODU3RjAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzYyNDA3ODhGMDAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNTksNiArNDE1NSwxMCBAQAogCQk3MjdB
N0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4
RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tl
ck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9y
UGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkRDQTFFOTI1MjQy
NENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZXNvdXJjZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRENBMUVB
MjUyNDI0Q0UwMEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MkRDQTFFQjI1MjcxNDUxMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRENBMUVDMjUyNzE0NTEwMEM5QjIwRCAvKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0MTg3Q0NG
OUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3Rv
cmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkQ0MTg3RDFDMDEwMEMz
OUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODAyNiwxNyArODAyNiwxNyBAQAogCQkJCTcyN0E3RjMzMjQwNzg1
MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDQyNDA4QUJCMzAwREU0
RDJGIC8qIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmggKi8sCi0JCQkJNTUwNjQwQTUyNDA3
MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM3
MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
ICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxh
dGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhC
RDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCTcyN0E3
RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovLAotCQkJCTcyMjc4
MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNw
cCAqLywKIAkJCQk3MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLAogCQkJCTU1MDY0MEEwMjQwNzE5RTEwMEFB
RTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluICovLAorCQkJCTcyRENB
MUVBMjUyNDI0Q0UwMEM5QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLywKKwkJCQk3
MkRDQTFFOTI1MjQyNENFMDBDOUIyMEQgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovLAogCQkJ
CTU1MDY0MDlGMjQwNzE5NkEwMEFBRTA0NSAvKiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKQEAgLTgwNDYsMTIgKzgwNDYsMTIgQEAK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTVBRDA5NDMyNDA4QTBF
NjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAotCQkJCTcy
Mjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkuY3BwICovLAotCQkJCTcyMjc4MDEyMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBE
RTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1MDY0MEEyMjQwNzFB
NjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1
MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAq
LywKIAkJCQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTcyRENBMUVCMjUyNzE0NTEwMEM5QjIwRCAvKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovLAorCQkJCTcyRENBMUVDMjUyNzE0NTEwMEM5
QjIwRCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
Z3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlm
aWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMWJjOWFlODdkYzhkNzI0Mjhh
MGI4MDljYWQwZDgwYTRjZDFjYjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlcklkZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIElt
YWdlQnVmZmVySWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKaW5kZXggZTg0OTE2NjQ1MTQ1OTYyODdlZjJjNzhmOTA3NmUxZDQzODIxOTFmMi4u
MzQyYjA1ZTA3ODY4NzZmM2Y2NDZhNDhiZGJkOGJlNjFjZDA1ZGYzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaApAQCAtMjgsNiArMjgsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZWNvcmRlci5o
PgpAQCAtMzcsMTAgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBS
ZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7
CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUg
ewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyOjpjb250ZXh0OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwg
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKQEAgLTUzLDE0ICs1NiwyMCBAQCBwdWJsaWM6CiAK
ICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIoKQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZsdXNoRHJhd2lu
Z0NvbnRleHQoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZWxlYXNlSW1h
Z2VCdWZmZXIoKnRoaXMpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90
ZVJlc291cmNlSWRlbnRpZmllcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUpCi0gICAgICAg
ICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihzaXplLCByZW5kZXJpbmdNb2RlLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAg
ICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICAgICAgLCBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCkpCiAgICAgeworICAgICAgICBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5n
TW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKICAgICB9CiAKICAgICB2b2lkIGNy
ZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFu
ZGxlKSBvdmVycmlkZQpAQCAtNjgsMjMgKzc3LDUyIEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNT
RVJUKCFtX2JhY2tlbmQpOwogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRl
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBX
VEZNb3ZlKGhhbmRsZSkpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIEJhY2tl
bmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBpZiAoIW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VC
dWZmZXImPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1f
YmFja2VuZC5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2Vu
ZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5n
Q29udGV4dC5kaXNwbGF5TGlzdCgpOworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3Vu
dCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+ZHJhd0dQVUJhZGdlKGNvbnRleHQoKSwg
V2ViQ29yZTo6RmxvYXRSZWN0KHsgfSwgbV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpKSwgV2ViQ29y
ZTo6Q29sb3I6OmRhcmtHcmVlbiwgIkdQVSJfcyk7CisgICAgICAgIG1fc2VudEZsdXNoSWRlbnRp
ZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZs
dXNoQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VS
ZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBkaXNwbGF5
TGlzdC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3Qs
IG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92
ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0g
Y29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5tX2RyYXdpbmdDb250ZXh0LmRp
c3BsYXlMaXN0KCk7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlz
KS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChk
aXNwbGF5TGlzdCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFn
ZUJ1ZmZlcio+KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJbWFn
ZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0
ZW1Db3VudCgpKSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4o
dGhpcyktPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlz
cGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0YSBp
cyBzeW5jaHJvbm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUgQ29t
bWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlR2V0SW1h
Z2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIH0KIAogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRh
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZGVzdFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQgPSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBv
dmVycmlkZQpAQCAtOTUsMjYgKzEzMywzMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJhd2lu
Z0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwg
c3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNo
Q29udGV4dCgpIG92ZXJyaWRlCisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
PiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICAg
ICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShpbWFn
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQorICAg
IFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdl
SXRlbShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1h
Z2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2lu
Z0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3Vu
dCgpKQotICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hE
cmF3aW5nQ29udGV4dEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5jcmVhdGVEcmF3TmF0aXZlSW1h
Z2VJdGVtKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBjYWNo
ZWRJbWFnZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KLSAgICAKKwogICAg
IHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNo
U2l6ZSA9IDUxMjsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0
LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+PSBE
aXNwbGF5TGlzdEJhdGNoU2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAo
ZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmbHVzaERy
YXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsK
ICAgICB9CisKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3NzE1MGM3YjA3OTNhZmU5YWM1YzgzYTlhYzc0NmJhMzE4ZTUx
YjhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXIuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdlRGF0
YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKSkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkuCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIp
LCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkp
OwotfQotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcigpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS4KLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKCkpOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1h
Z2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGE6OlJlcGx5
KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNl
LmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6Ondh
aXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQotewotICAgIGlmIChtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQgJiYgIWlzQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci19Ci0KLXZv
aWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNvbW1pdEltYWdlQnVm
ZmVyRmx1c2hDb250ZXh0KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYm
IGlzUGVuZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2Fp
dEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgbV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21t
aXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAg
ICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
c2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRD
b21taXQoZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckNvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
IGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1
c2hJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyLmgKaW5kZXggNjIwNDE4ZDc4YzI3ZjI4YzU3NDkwMmMyZTFiYTlhMjM3MTc1MTdiOS4uODI0
NjBhMTZjZWJmMzQ5YTkzNGJiODE2NDQxZDAwOTVkZTExMjNhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTI5LDExICsyOSw5IEBACiAKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyaW5nTW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTQyLDM3
ICs0MCwyMCBAQCBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90Owog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLQog
Y2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmly
dHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpOwotCi0gICAgSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2VCdWZmZXJJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4g
U2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7CiAKLSAg
ICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7Ci0K
LXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpOwot
Ci0gICAgdmlydHVhbCBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCA9IDA7CiAgICAgYm9v
bCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAh
PSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0gICAg
dm9pZCB3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci0gICAgdm9pZCB3YWl0Rm9y
Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKKyAgICB2b2lkIGNvbW1pdEZsdXNoQ29u
dGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCisgICAgewor
ICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOworICAg
IH0KIAotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29u
dGV4dEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0K
LXByaXZhdGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7Ci0gICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyIHsgSW1hZ2VCdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Citwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpID0gZGVm
YXVsdDsKIAogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRp
ZmllcjsKICAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVu
dGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOTk1MzQxNzg3ZWRh
MjBhNTU0ZTRkNjdiYTUzZGM2OThhNTM3MGNjMC4uMjM0NDk5NmE0MTA0YzljN2ViNmFiYzg1Mjgy
ZDEyYzZlYWNhMWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKQEAgLTM5LDEyICs0MCwxMyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKQor
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShXZWJQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKSk7
CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZChwYWdlKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZChXZWJQYWdlJiBwYWdlKQorICAgIDogbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlKCp0aGlzLCBwYWdlKQogewogICAgIC8vIFJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1lc3Nh
Z2VSZWNlaXZlciBpbiB0aGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uCiAgICAgSVBDOjpNZXNzYWdl
UmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CkBAIC04
Niw0MCArODgsODIgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWl0Rm9yQ29tbWl0
SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQogICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2Fn
ZUFycml2ZXMpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRyYXdHUFVCYWRn
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY29udGFpbmVyUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLmRyYXdHUFVCYWRnZShjb250ZXh0LCBjb250YWluZXJSZWN0LCBjb2xv
ciwgdGV4dCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBTaG91
bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNob3Vs
ZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1v
dGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAg
ICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXIt
PmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzaG91bGRBY2NlbGVyYXRl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VJbWFnZUJ1ZmZlcihpbWFnZSk7Cit9CisKK1Jl
ZlB0cjxEaXNwbGF5TGlzdDo6SXRlbT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJh
d0ltYWdlQnVmZmVySXRlbShJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlm
aWVyKQoreworICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlRHJhd0ltYWdl
QnVmZmVySXRlbShpbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHJlbW90ZUNsaWVu
dElkZW50aWZpZXIpOworfQorCitSZWZQdHI8RGlzcGxheUxpc3Q6Okl0ZW0+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oaW1hZ2UsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlLCByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3Rl
Q2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQor
eworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlQ2xpZW50KHJlbW90ZUNs
aWVudElkZW50aWZpZXIpOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpD
cmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1Jl
bW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNo
ZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Q2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30KIAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhp
cykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1
ZmZlci0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAg
ICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAgIH0KK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVj
dCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOworICAgIHJldHVybiBpbWFnZURhdGFSZWZl
cmVuY2UuYnVmZmVyKCk7Cit9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGRpc3BsYXlM
aXN0LCBtX3JlbW90ZVJlc291cmNlQ2FjaGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVG
bHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRl
bnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZl
ckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlQ2Fj
aGUuc2hvdWxkRHJhd0dQVUJhZGdlKCksIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVy
biBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4g
cmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgQVNT
RVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGUsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGlt
YWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
b21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hD
b250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29u
dGV4dChmbHVzaElkZW50aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaAppbmRleCBmNDk2MTU4ZTdkNDBlZWIwNWFjMzk0MzRhZjI0NjMzYmFiYzdmMGVmLi5i
YmFmOTM1Y2RkMTIxNTc3OWQ5ZTdmZWFmODEyYTM4YjNjNjhkYWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtMjksMzEgKzI5LDM2IEBACiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5o
IgotI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJp
bmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xh
c3MgRGlzcGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQorY2xhc3MgRmxvYXRTaXplOworZW51bSBj
bGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVp
bnQ4X3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQYWdlOworCiBjbGFz
cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gewogcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKCk7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoV2ViUGFn
ZSYpOwogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAotICAgIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQotCiAgICAgLy8gSVBDOjpNZXNzYWdl
U2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtNjEsMjEgKzY2LDMzIEBAIHB1YmxpYzoKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSk7Ci0gICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXJJZGVudGlmaWVyKTsKLQogICAgIGJvb2wgd2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCgpOwogICAgIGJvb2wgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7
CiAKKyAgICAvLyBSZXNvdWNlIGNhY2hlLgorICAgIHZvaWQgZHJhd0dQVUJhZGdlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGFpbmVyUmVj
dCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICB2b2lkIHJlbGVhc2VJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KKyAgICBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHJlbW90ZUdldEltYWdlRGF0
YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciByZW1vdGVGbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKwogcHJp
dmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZChXZWJQYWdlJik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAg
ICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIHVzaW5n
IEltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRlbnRp
ZmllciwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OwotICAgIEltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAgIFJl
bW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwogICAgIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDEyYTdiZjhkYTRjODI1NzBiY2EzNmEx
MzVmZDcxYWYyNTg4YjY0ZDUuLjJjMGY3ZThhMTIwM2YyNjg2NTJhMDBmYzFmN2IxN2RhNTk5ZDJh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAg
LTIzLDggKzIzLDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJ
bnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
LCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0g
ICAgdm9pZCBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChXZWJLaXQ6OkltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBi
YWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAg
ICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0Y2Q5
ZmUxMTc1YTU0Y2VmN2Y5YTI2MDczYTNiNWYyOGJlMjkxNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHAKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCisjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NhY2hlZEltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQsIFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAsIG1fcGFnZShwYWdlKQoreworfQor
Citib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6OnNob3VsZERyYXdHUFVCYWRnZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNob3dEZWJ1Z0JvcmRl
cnMoKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkcmF3R1BVQmFkZ2UoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmICghc2hvdWxkRHJh
d0dQVUJhZGdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBGbG9hdFJlY3QgYm9yZGVyUmVjdCA9
IGNvbnRhaW5lclJlY3Q7CisgICAgYm9yZGVyUmVjdC5pbmZsYXRlKC0xKTsKKyAgICBjb250ZXh0
LmRyYXdHUFVCYWRnZShib3JkZXJSZWN0LCBib3JkZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGNv
bG9yLCB0ZXh0KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3Vs
ZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxk
QWNjZWxlcmF0ZTo6WWVzKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlID0gQWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2Vs
ZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCkpIHsKKyAgICAgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChpbWFn
ZS5nZXQoKSwgaW1hZ2UtPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRkKGltYWdlLT5yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJu
IGltYWdlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBVbmFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1v
dGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkpIHsKKyAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRk
KGltYWdlLmdldCgpLCBpbWFnZS0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAg
ICBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmFkZChpbWFnZS0+cmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGlt
YWdlOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1
ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKK30KKwordm9pZCBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNo
SWRlbnRpZmllcik7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gZmluZElt
YWdlQnVmZmVyRm9yQ2xpZW50KGltYWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgLy8gRmx1c2ggdGhlIERyYXdpbmdDb250ZXh0IG9mIHRoZSBzb3VyY2UgSW1hZ2VCdWZmZXIg
c28gdGhpcyBJbWFnZUJ1ZmZlciBnZXRzIGFuIHVwZGF0ZWQgaW1hZ2UuCisgICAgaW1hZ2UuZmx1
c2hEcmF3aW5nQ29udGV4dCgpOworICAgIHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0ltYWdlQnVmZmVyOjpjcmVhdGUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bT4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8g
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KGNhY2hl
ZEltYWdlLCBpbWFnZSwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30K
KworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNv
dXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9
IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQocmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNob3Vs
ZCBoYXZlIGJlZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9vbCBm
b3VuZCA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3ZlKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQp
OworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2Ug
dW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVz
b3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRl
bnRpZmllciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlTmF0aXZlSW1hZ2UoY29uc3QgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdlKQoreworICAgIC8vIFJlbW92ZSB0aGUgcmVzb3Vy
Y2UgZnJvbSB0aGUgY2FjaGUuCisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBt
X3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC50YWtlKGltYWdlKTsKKworICAgIC8vIFRlbGwgdGhl
IEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlIHVubGVzcyBpdCdzIHBlbmRpbmcg
cmVwbGF5aW5nIGJhY2suCisgICAgaWYgKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAg
ICAgcmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQor
CitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZEltYWdl
QnVmZmVyRm9yQ2xpZW50KEltYWdlQnVmZmVyJiBpbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQoJmltYWdlKTsKKyAgICBh
ZGRSZW1vdGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZmluZE5hdGl2ZUltYWdl
Rm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3Rl
TmF0aXZlSW1hZ2VIYXNoTWFwLmVuc3VyZShpbWFnZSwgWyZdIHsKKyAgICAgICAgY2FjaGVkSW1h
Z2UuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5yZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CisKKyAgICBhZGRSZW1vdGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1v
dGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
OworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudChSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIXJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWRkIHRoZSAicmVz
b3VyY2UgLT4gY2xpZW50IiBkZXBlbmRlbmN5IGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcC4KKyAgICBhdXRvJiBjbGllbnRzID0gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFw
LmVuc3VyZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgIHJldHVybiBS
ZW1vdGVDbGllbnRzSGFzaFNldCgpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGNs
aWVudHMuYWRkKHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworfQorCitWZWN0b3I8UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQo
UmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCYgcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1h
cCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7Cisg
ICAgVmVjdG9yPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VDbGllbnRz
VG9CZVJlbW92ZWQ7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQg
ZGVwZW5kZW5jaWVzIGZyb20gcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4KKyAgICBmb3Ig
KGF1dG8mIHBhaXIgOiByZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwKSB7CisgICAgICAgIHBh
aXIudmFsdWUucmVtb3ZlKHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAocGFp
ci52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0Jl
UmVtb3ZlZC5hcHBlbmQocGFpci5rZXkpOworICAgIH0KKworICAgIC8vIFJldHVybiBhIGxpc3Qg
b2YgdGhlIHVucmVmZXJlbmNlZCByZXNvdXJjZXMuCisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNl
Q2xpZW50c1RvQmVSZW1vdmVkOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVh
c2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX3JlbW90ZVJl
c291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5jb250YWlucyhyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpKTsKKyAgICAKKyAgICAvLyBJZiB3ZSBoYXZlIHJlY29yZGVkIHRoZSByZXNv
dXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jeSBiZWZvcmUgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVu
dHNIYXNoTWFwLCBtb3ZlIHRoaXMKKyAgICAvLyBkZXBlbmRlbmN5IHRvIG1fcmVtb3RlUmVzb3Vy
Y2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLiBPdGhlcndpc2UgcmVtb3ZlIHRoZSByZXNv
dXJjZSBmcm9tIHRoZSBjYWNoZWQuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcC5jb250YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90
ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5yZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIC8v
IFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSBtX3Jl
bW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNl
Q2xpZW50c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAv
LyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9y
ZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgZm9yIChhdXRv
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJl
c291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRpZmll
cikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzIGZyb20g
bV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgICAgIG1f
cmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLnJlbW92ZShyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRv
IHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJkYTcyZTUzNzYyNzE4
OGZlZTAwNDJiZGNhNmM4YTA0MGFhNzE5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0wLDAg
KzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEltYWdlQ2xpZW50Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQ
dHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIEl0ZW07Cit9Citl
bnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworY2xhc3MgQ29sb3I7CitjbGFzcyBGbG9h
dFJlY3Q7CitjbGFzcyBGbG9hdFNpemU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgOiBw
dWJsaWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQgeworcHVibGljOgorICAgIFJlbW90ZVJl
c291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIFdlYlBhZ2UmKTsKKworICAgIGJv
b2wgc2hvdWxkRHJhd0dQVUJhZGdlKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3R1BVQmFkZ2UoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjb250YWlu
ZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgdGV4dCk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZm
ZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW0+IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW0+IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6OkNh
Y2hlZEltYWdlJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAKKyAg
ICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUltYWdlQnVmZmVyKFdl
YkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwor
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVt
b3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcj47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJD
b3JlOjpJbWFnZUJ1ZmZlciosIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47Cisg
ICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1c2lu
ZyBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVudHNIYXNoU2V0PjsKKyAgICB1c2luZyBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKj47
CisKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IFdlYkNvcmU6Ok5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUgeyByZWxlYXNlTmF0aXZlSW1hZ2UoaW1hZ2Up
OyB9CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZEltYWdlQnVm
ZmVyRm9yQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmlu
ZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlQ2xpZW50SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZFJlbW90ZUNsaWVudChXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VDbGll
bnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGll
bnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1v
dmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZW1v
dGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVt
b3RlTmF0aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAgIFJl
bW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFw
OworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVu
dHNQZW5kaW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcDsKKyAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAg
V2ViUGFnZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDc2YzBkMWZj
OGFhMDkwZGRlNDYyY2IyMWUyNGEyMzRmMTAwYWNmZTEuLjhiMWUzMDg5MTIyODU5NmNmZTA3YTJm
OTE3MWU3ODVkMjUyM2Y3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04OTcsNyArODk3
LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGYKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIFdl
YkNocm9tZUNsaWVudDo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpOworICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUo
bV9wYWdlKTsKICAgICByZXR1cm4gKm1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="426758"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>