<?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>227721</bug_id>
          
          <creation_ts>2021-07-06 14:30:03 -0700</creation_ts>
          <short_desc>[Cairo] Merge PlatformContextCairo into GraphicsContextCairo</short_desc>
          <delta_ts>2021-07-12 12:18:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>annulen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775087</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-06 14:30:03 -0700</bug_when>
    <thetext>[Cairo] Merge PlatformContextCairo into GraphicsContextCairo

PlatformContextCairo was originally introduced to separate Cairo
specific code from the platform-independent GraphicsContext.
However, GraphicsContext is a virtual class nowadays. And,
GraphicsContextCairo is a Cairo specifix concrete class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775090</commentid>
    <comment_count>1</comment_count>
      <attachid>432972</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-06 14:31:13 -0700</bug_when>
    <thetext>Created attachment 432972
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775091</commentid>
    <comment_count>2</comment_count>
      <attachid>432973</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-06 14:31:51 -0700</bug_when>
    <thetext>Created attachment 432973
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775099</commentid>
    <comment_count>3</comment_count>
      <attachid>432975</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-06 14:44:53 -0700</bug_when>
    <thetext>Created attachment 432975
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775149</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-06 17:20:04 -0700</bug_when>
    <thetext>EWS style checker failed.

&gt; ERROR: Source/WebCore/platform/graphics/cairo/GraphicsContextGLCairo.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]

check-webkit-style considers &quot;GraphicsContext.h&quot; is the primary header for GraphicsContextGLCairo.cpp.
I think GraphicsContextGLCairo.cpp should be renamed to GraphicsContextGLOpenGLCairo.cpp to make &quot;GraphicsContextGLOpenGL.h&quot; the primary header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775153</commentid>
    <comment_count>5</comment_count>
      <attachid>432992</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-06 17:30:57 -0700</bug_when>
    <thetext>Created attachment 432992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775342</commentid>
    <comment_count>6</comment_count>
      <attachid>432992</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-07-07 11:09:24 -0700</bug_when>
    <thetext>Comment on attachment 432992
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775400</commentid>
    <comment_count>7</comment_count>
      <attachid>432992</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-07 12:44:06 -0700</bug_when>
    <thetext>Comment on attachment 432992
Patch

Clearing flags on attachment: 432992

Committed r279658 (239471@main): &lt;https://commits.webkit.org/239471@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775401</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-07 12:44:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775402</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-07 12:45:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/80284526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775919</commentid>
    <comment_count>10</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-08 21:43:42 -0700</bug_when>
    <thetext>This change causes new test crashes.
Filed: Bug 227827 – [WinCairo] drag tests are crashing after r279658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776406</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-07-12 12:18:38 -0700</bug_when>
    <thetext>Nice, thank you for doing some follow-through on the refactor! This is great :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432972</attachid>
            <date>2021-07-06 14:31:13 -0700</date>
            <delta_ts>2021-07-06 14:31:51 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>547</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
LmNwcAppbmRleCBmZjU1ZDM1MjM0MjcuLjI5MTkwYzc4OTg5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcApAQCAtMTAwLDcg
KzEwMCw3IEBAIHZvaWQgQ3VybFN0cmVhbTo6YXBwZW5kTW9uaXRvcmluZ0ZkKGZkX3NldCYgcmVh
ZGZkcywgZmRfc2V0JiB3cml0ZWZkcywgZmRfc2V0JiBlCiAgICAgaWYgKG1fc2VuZEJ1ZmZlcnMu
c2l6ZSgpKQogICAgICAgICBGRF9TRVQoKnNvY2tldCwgJndyaXRlZmRzKTsKIAotICAgIGlmICht
YXhmZCA8ICpzb2NrZXQpCisgICAgaWYgKG1heGZkIDwgc3RhdGljX2Nhc3Q8aW50Pigqc29ja2V0
KSkKICAgICAgICAgbWF4ZmQgPSAqc29ja2V0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432973</attachid>
            <date>2021-07-06 14:31:51 -0700</date>
            <delta_ts>2021-07-06 14:50:26 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>76875</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ2Fpcm8uY21ha2UKaW5kZXggMjM3ZWJmYmI4MDMzLi4xZmIwZTlk
NWNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlCkBAIC0xNiw3ICsxNiw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uaAogKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0IGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAppbmRleCAxOTdlMzNjZGMzNzUuLjYzMzI1MTE0
MWI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zNyw1
ICszNyw0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fp
cm8uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOTQ5YmJj
NGI0ZjguLjZiOWRkMTdiNTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU0LDkgKzU0LDkgQEAgY2xhc3MgUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQ7CiB0eXBlZGVmIFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dERpcmVj
dDJEIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYgVVNFKENBSVJPKQogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CitjbGFzcyBHcmFwaGljc0Nv
bnRleHRDYWlybzsKIH0KLXR5cGVkZWYgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8gUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQ7Cit0eXBlZGVmIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENh
aXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2Vsc2UKIHR5cGVkZWYgdm9pZCBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggN2ZhZTc3
N2MzOTY2Li41NmYwZDFiZjA2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDIsMTIgKzQy
LDEyIEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDYWly
by5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtMTczLDcgKzE3Myw3IEBAIGVudW0gUGF0aERyYXdpbmdT
dHlsZSB7CiAgICAgRmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyB2
b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgbGF5ZXJP
cmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hh
ZG93U3RhdGUpCitzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoR3JhcGhpY3NDb250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0
IEZsb2F0UG9pbnQmIGxheWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CiAg
ICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdp
biksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHsgc2hh
ZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxw
aGEsIFNoYWRvd1N0YXRlKCkpOwpAQCAtMTgxLDE0ICsxODEsMTQgQEAgc3RhdGljIHZvaWQgZHJh
d1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IEltYWdlQnUKIH0KIAogLy8gRklYTUU6IFRoaXMgaXMgbW9zdGx5IHNhbWUgYXMgZHJhd1NoYWRv
d0xheWVyQnVmZmVyLCBzbyB3ZSBzaG91bGQgbWVyZ2UgdHdvLgotc3RhdGljIHZvaWQgZHJhd1No
YWRvd0ltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVm
ZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3N0YXRpYyB2b2lk
IGRyYXdTaGFkb3dJbWFnZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJ
bWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAg
ICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSkpIHsKICAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1D
b250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0
ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBm
aWxsU2hhZG93QnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIElt
YWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29u
c3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkK
K3N0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGxh
eWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQogewogICAgIHNhdmUocGxhdGZvcm1Db250ZXh0KTsKIApAQCAtMjAzLDcg
KzIwMyw3IEBAIHN0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAgICAgcmVzdG9yZShwbGF0Zm9ybUNv
bnRleHQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJj
ZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBz
aGFkb3dTdGF0ZSwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCitzdGF0aWMgaW5saW5l
IHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJv
a2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgUGF0aERyYXdpbmdTdHls
ZSBkcmF3aW5nU3R5bGUpCiB7CiAgICAgU2hhZG93Qmx1ciBzaGFkb3coeyBzaGFkb3dTdGF0ZS5i
bHVyLCBzaGFkb3dTdGF0ZS5ibHVyIH0sIHNoYWRvd1N0YXRlLm9mZnNldCwgc2hhZG93U3RhdGUu
Y29sb3IsIHNoYWRvd1N0YXRlLmlnbm9yZVRyYW5zZm9ybXMpOwogICAgIGlmIChzaGFkb3cudHlw
ZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGCiB9CiAKIAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fp
cm9QYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxT
b3VyY2UmIGZpbGxTb3VyY2UpCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbEN1cnJlbnRDYWlyb1Bh
dGgoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJj
ZSYgZmlsbFNvdXJjZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigp
OwogICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyB2b2lkIGRy
YXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCog
c2NhbGVkRm9uCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFk
b3dTdGF0ZSwgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlLCBjb25zdCBGbG9h
dFNpemUmIHNoYWRvd09mZnNldCwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCwgZG91YmxlIHN5
bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYgZ2x5cGhzLCBG
b250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK3N0YXRpYyB2b2lkIGRyYXdHbHlw
aHNTaGFkb3coR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29s
b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRG
b250LCBkb3VibGUgc3ludGhldGljQm9sZE9mZnNldCwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBo
X3Q+JiBnbHlwaHMsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewogICAg
IFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9
LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25v
cmVUcmFuc2Zvcm1zKTsKICAgICBpZiAoIXRleHREcmF3aW5nTW9kZS5jb250YWlucyhUZXh0RHJh
d2luZ01vZGU6OkZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cp
CkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGJvb2wgY2Fpcm9TdXJmYWNlSGFzQWxwaGEoY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlKQogLy8gRklYTUU6IEZpeCBHcmFwaGljc0NvbnRleHQ6OmNv
bXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKQogLy8gdG8gYmUgYSBz
dGF0aWMgcHVibGljIGZ1bmN0aW9uIHRoYXQgb3BlcmF0ZXMgb24gQ1RNIGFuZCBzdHJva2VUaGlj
a25lc3MKIC8vIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHVzaW5nIGFuIHVuZGVybHlpbmcgR3JhcGhp
Y3NDb250ZXh0IG9iamVjdC4KLUZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlh
c2luZ01vZGVGb3JUZXh0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywgQ29sb3Im
IGNvbG9yLCBmbG9hdCBzdHJva2VUaGlja25lc3MpCitGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3Vu
ZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJp
bnRpbmcsIENvbG9yJiBjb2xvciwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQogewogICAgIEZsb2F0
UG9pbnQgb3JpZ2luID0gcG9pbnQ7CiAgICAgZmxvYXQgdGhpY2tuZXNzID0gc3RkOjptYXgoc3Ry
b2tlVGhpY2tuZXNzLCAwLjVmKTsKQEAgLTQ0NywxMiArNDQ3LDEyIEBAIHN0YXRpYyBWZWN0b3I8
RmxvYXRQb2ludD4gY2VudGVyTGluZUFuZEN1dE9mZkNvcm5lcnMoYm9vbCBpc1ZlcnRpY2FsTGlu
ZSwgZmxvYXQKIAogbmFtZXNwYWNlIFN0YXRlIHsKIAotdm9pZCBzZXRTdHJva2VUaGlja25lc3Mo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgc3Ryb2tlVGhpY2tu
ZXNzKQordm9pZCBzZXRTdHJva2VUaGlja25lc3MoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQogewogICAgIGNhaXJvX3NldF9saW5l
X3dpZHRoKHBsYXRmb3JtQ29udGV4dC5jcigpLCBzdHJva2VUaGlja25lc3MpOwogfQogCi12b2lk
IHNldFN0cm9rZVN0eWxlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIFN0
cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQordm9pZCBzZXRTdHJva2VTdHlsZShHcmFwaGljc0NvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkKIHsKICAg
ICBzdGF0aWMgY29uc3QgZG91YmxlIGRhc2hQYXR0ZXJuW10gPSB7IDUuMCwgNS4wIH07CiAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBkb3RQYXR0ZXJuW10gPSB7IDEuMCwgMS4wIH07CkBAIC00Nzgs
MTIgKzQ3OCwxMiBAQCB2b2lkIHNldFN0cm9rZVN0eWxlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eQogICAgIH0KIH0KIAotdm9pZCBz
ZXRDb21wb3NpdGVPcGVyYXRpb24oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQordm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGNhaXJvX3NldF9vcGVyYXRvcihwbGF0Zm9ybUNvbnRl
eHQuY3IoKSwgdG9DYWlyb09wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdGlvbiwgYmxlbmRNb2RlKSk7
CiB9CiAKLXZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGJvb2wgZW5hYmxlKQordm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgYm9vbCBlbmFibGUpCiB7CiAgICAgLy8g
V2hlbiB0cnVlLCB1c2UgdGhlIGRlZmF1bHQgQ2Fpcm8gYmFja2VuZCBhbnRpYWxpYXMgbW9kZSAo
dXN1YWxseSB0aGlzCiAgICAgLy8gZW5hYmxlcyBzdGFuZGFyZCAnZ3JheXNjYWxlJyBhbnRpYWxp
YXNpbmcpOyBmYWxzZSB0byBleHBsaWNpdGx5IGRpc2FibGUKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2
b2lkIHNldFNob3VsZEFudGlhbGlhcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBib29sIGVuYWJsZSkKICAgICBjYWlyb19zZXRfYW50aWFsaWFzKHBsYXRmb3JtQ29udGV4
dC5jcigpLCBlbmFibGUgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElB
U19OT05FKTsKIH0KIAotdm9pZCBzZXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2b2lkIHNldENUTShH
cmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSkKIHsKICAgICBjb25zdCBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0Nh
aXJvTWF0cml4KHRyYW5zZm9ybSk7CiAgICAgY2Fpcm9fc2V0X21hdHJpeChwbGF0Zm9ybUNvbnRl
eHQuY3IoKSwgJm1hdHJpeCk7CkBAIC01MDAsMjEgKzUwMCwyMSBAQCB2b2lkIHNldENUTShQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZgogICAgICAgICBncmFwaGljc0NvbnRleHRQcml2YXRlLT5zZXRDVE0odHJhbnNmb3Jt
KTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIGdldENUTShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0KQorQWZmaW5lVHJhbnNmb3JtIGdldENUTShHcmFwaGljc0NvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0KQogewogICAgIGNhaXJvX21hdHJpeF90IG07CiAgICAgY2Fpcm9f
Z2V0X21hdHJpeChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgJm0pOwogICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0obS54eCwgbS55eCwgbS54eSwgbS55eSwgbS54MCwgbS55MCk7CiB9CiAKLUludFJl
Y3QgZ2V0Q2xpcEJvdW5kcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQor
SW50UmVjdCBnZXRDbGlwQm91bmRzKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQpCiB7CiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwogICAgIGNhaXJvX2NsaXBfZXh0ZW50
cyhwbGF0Zm9ybUNvbnRleHQuY3IoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsKICAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKSk7CiB9
CiAKLUZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK0Zsb2F0UmVjdCByb3VuZFRv
RGV2aWNlUGl4ZWxzKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBGbG9hdFJlY3QgcmVzdWx0OwogICAgIGRvdWJsZSB4
ID0gcmVjdC54KCk7CkBAIC01NTIsNyArNTUyLDcgQEAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQ
aXhlbHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXQK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0KFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCitib29sIGlzQWNjZWxlcmF0ZWRDb250
ZXh0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgcmV0dXJu
IGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoY2Fpcm9fZ2V0X3RhcmdldChwbGF0Zm9ybUNvbnRleHQu
Y3IoKSkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9HTDsKIH0KQEAgLTYwNyw3ICs2MDcsNyBAQCBi
b29sIFNoYWRvd1N0YXRlOjppc1Zpc2libGUoKSBjb25zdAogICAgIHJldHVybiBjb2xvci5pc1Zp
c2libGUoKSAmJiAob2Zmc2V0LndpZHRoKCkgfHwgb2Zmc2V0LmhlaWdodCgpIHx8IGJsdXIpOwog
fQogCi1ib29sIFNoYWRvd1N0YXRlOjppc1JlcXVpcmVkKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQpIGNvbnN0Citib29sIFNoYWRvd1N0YXRlOjppc1JlcXVpcmVkKEdyYXBo
aWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gV2UgY2Fu
J3QgYXZvaWQgU2hhZG93Qmx1ciBpZiB0aGUgc2hhZG93IGhhcyBibHVyLgogICAgIGlmIChjb2xv
ci5pc1Zpc2libGUoKSAmJiBibHVyKQpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgU2hhZG93U3Rh
dGU6OmlzUmVxdWlyZWQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBzZXRMaW5lQ2FwKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIExpbmVDYXAgbGluZUNhcCkKK3ZvaWQgc2V0TGluZUNh
cChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBMaW5lQ2FwIGxpbmVDYXAp
CiB7CiAgICAgY2Fpcm9fbGluZV9jYXBfdCBjYWlyb0NhcCB7IH07CiAgICAgc3dpdGNoIChsaW5l
Q2FwKSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBzZXRMaW5lQ2FwKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIExpbmVDYXAgbGluZUNhcCkKICAgICBjYWlyb19zZXRf
bGluZV9jYXAocGxhdGZvcm1Db250ZXh0LmNyKCksIGNhaXJvQ2FwKTsKIH0KIAotdm9pZCBzZXRM
aW5lRGFzaChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBEYXNo
QXJyYXkmIGRhc2hlcywgZmxvYXQgZGFzaE9mZnNldCkKK3ZvaWQgc2V0TGluZURhc2goR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRGFzaEFycmF5JiBkYXNoZXMs
IGZsb2F0IGRhc2hPZmZzZXQpCiB7CiAgICAgaWYgKHN0ZDo6YWxsX29mKGRhc2hlcy5iZWdpbigp
LCBkYXNoZXMuZW5kKCksIFtdKGF1dG8mIGRhc2gpIHsgcmV0dXJuICFkYXNoOyB9KSkKICAgICAg
ICAgY2Fpcm9fc2V0X2Rhc2gocGxhdGZvcm1Db250ZXh0LmNyKCksIDAsIDAsIDApOwpAQCAtNjUx
LDcgKzY1MSw3IEBAIHZvaWQgc2V0TGluZURhc2goUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRGFzaEFycmF5JiBkYXNoZXMsCiAgICAgICAgIGNhaXJvX3NldF9k
YXNoKHBsYXRmb3JtQ29udGV4dC5jcigpLCBkYXNoZXMuZGF0YSgpLCBkYXNoZXMuc2l6ZSgpLCBk
YXNoT2Zmc2V0KTsKIH0KIAotdm9pZCBzZXRMaW5lSm9pbihQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBMaW5lSm9pbiBsaW5lSm9pbikKK3ZvaWQgc2V0TGluZUpvaW4oR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgTGluZUpvaW4gbGluZUpvaW4pCiB7
CiAgICAgY2Fpcm9fbGluZV9qb2luX3QgY2Fpcm9Kb2luIHsgfTsKICAgICBzd2l0Y2ggKGxpbmVK
b2luKSB7CkBAIC02NjgsMTIgKzY2OCwxMiBAQCB2b2lkIHNldExpbmVKb2luKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIExpbmVKb2luIGxpbmVKb2luKQogICAgIGNhaXJv
X3NldF9saW5lX2pvaW4ocGxhdGZvcm1Db250ZXh0LmNyKCksIGNhaXJvSm9pbik7CiB9CiAKLXZv
aWQgc2V0TWl0ZXJMaW1pdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBm
bG9hdCBtaXRlckxpbWl0KQordm9pZCBzZXRNaXRlckxpbWl0KEdyYXBoaWNzQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0IG1pdGVyTGltaXQpCiB7CiAgICAgY2Fpcm9fc2V0X21p
dGVyX2xpbWl0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBtaXRlckxpbWl0KTsKIH0KIAotdm9pZCBm
aWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0
YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZmlsbFJlY3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGaWxsU291cmNlJiBm
aWxsU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgY2Fpcm9f
dCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIApAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQg
ZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zCiAgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250
ZXh0LCBmaWxsU291cmNlKTsKIH0KIAotdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBmaWxsUmVjdChHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewog
ICAgIGlmIChzaGFkb3dTdGF0ZS5pc1Zpc2libGUoKSkgewogICAgICAgICBTaGFkb3dCbHVyIHNo
YWRvdyh7IHNoYWRvd1N0YXRlLmJsdXIsIHNoYWRvd1N0YXRlLmJsdXIgfSwgc2hhZG93U3RhdGUu
b2Zmc2V0LCBzaGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7
CkBAIC03MDQsNyArNzA0LDcgQEAgdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnMKICAgICBmaWxsUmVj
dFdpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQuY3IoKSwgcmVjdCwgY29sb3IpOwogfQogCi12b2lk
IGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY2Fpcm9fcGF0dGVybl90KiBwbGF0Zm9ybVBhdHRlcm4pCit2b2lkIGZp
bGxSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY2Fpcm9fcGF0dGVybl90KiBwbGF0Zm9ybVBhdHRlcm4pCiB7CiAgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIApAQCAtNzEzLDcgKzcxMyw3IEBAIHZv
aWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjYWlyCiAgICAgY2Fpcm9fZmlsbChjcik7CiB9CiAKLXZvaWQgZmls
bFJvdW5kZWRSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU2hhZG93
U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBmaWxsUm91bmRlZFJlY3QoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAg
aWYgKHNoYWRvd1N0YXRlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93
KHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZz
ZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKQEAg
LTc0NCw3ICs3NDQsNyBAQCB2b2lkIGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJvdW5kZWRSZQogICAgIGNhaXJvX3Jlc3Rv
cmUoY3IpOwogfQogCi12b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291
cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBj
b25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3Rh
dGUpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGxldmVyYWdlIHRoZSBzcGVjaWZpZWQg
Y29sb3IuCiAKQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UgogICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3VyY2Um
IGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZmlsbFBh
dGgoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0
aCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlKQogewogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKQEAg
LTc5Nyw3ICs3OTcsNyBAQCB2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbAogICAgIGZpbGxDdXJyZW50
Q2Fpcm9QYXRoKHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSk7CiB9CiAKLXZvaWQgc3Ryb2tl
UmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3Vy
Y2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgc3Ryb2tlUmVjdChHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGZsb2F0IGxpbmVXaWR0aCwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0
IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3Jt
Q29udGV4dC5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtODExLDcgKzgxMSw3IEBAIHZv
aWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGZsCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQg
c3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQ
YXRoJiBwYXRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93
U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBzdHJva2VQYXRoKEdyYXBoaWNzQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IFN0cm9rZVNvdXJjZSYg
c3Ryb2tlU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIApAQCAtODIxLDcgKzgyMSw3IEBAIHZv
aWQgc3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBQYXRoJiBwYXRoLCBjb25zdCBTCiAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKIH0KIAotdm9pZCBj
bGVhclJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0KQordm9pZCBjbGVhclJlY3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGNhaXJvX3QqIGNyID0g
cGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKQEAgLTgzMiw3ICs4MzIsNyBAQCB2b2lkIGNsZWFyUmVj
dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd0dseXBocyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxs
U291cmNlLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93U3Rh
dGUmIHNoYWRvd1N0YXRlLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2Zv
bnRfdCogc2NhbGVkRm9udCwgZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3Rv
cjxjYWlyb19nbHlwaF90PiYgZ2x5cGhzLCBmbG9hdCB4T2Zmc2V0LCBUZXh0RHJhd2luZ01vZGVG
bGFncyB0ZXh0RHJhd2luZ01vZGUsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgY29uc3QgRmxvYXRT
aXplJiBzaGFkb3dPZmZzZXQsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgRm9udFNtb290aGlu
Z01vZGUgZm9udFNtb290aGluZ01vZGUpCit2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29u
c3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dT
dGF0ZSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxl
ZEZvbnQsIGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5
cGhfdD4mIGdseXBocywgZmxvYXQgeE9mZnNldCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERy
YXdpbmdNb2RlLCBmbG9hdCBzdHJva2VUaGlja25lc3MsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRT
bW9vdGhpbmdNb2RlKQogewogICAgIGRyYXdHbHlwaHNTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBz
aGFkb3dTdGF0ZSwgdGV4dERyYXdpbmdNb2RlLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0NvbG9yLCBw
b2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCBmb250U21vb3Ro
aW5nTW9kZSk7CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwg
Y29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5z
YXZlKCk7CiAKQEAgLTg4OSwxMyArODg5LDEzIEBAIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzCiAg
ICAgcGxhdGZvcm1Db250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3UGF0dGVybihQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQordm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEZJ
WE1FOiBJbnZlc3RpZ2F0ZSB3aHkgdGhlIHNpemUgaGFzIHRvIGJlIHBhc3NlZCBpbiBhcyBhbiBJ
bnRSZWN0LgogICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNy
KCksIHN1cmZhY2UsIHNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9D
YWlyb09wZXJhdG9yKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1v
ZGUoKSksIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSwgZGVzdFJlY3QpOwogfQogCi12
b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBvcmlnaW5hbFNyY1JlY3QsIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYg
c2hhZG93U3RhdGUsIE9yaWVudGF0aW9uU2l6aW5nIG9yaWVudGF0aW9uU2l6aW5nKQordm9pZCBk
cmF3U3VyZmFjZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlLCBPcmllbnRhdGlvblNpemluZyBvcmllbnRhdGlvblNpemluZykKIHsKICAgICAvLyBB
dm9pZCBpbnZhbGlkIGNhaXJvIG1hdHJpeCB3aXRoIHNtYWxsIHZhbHVlcy4KICAgICBpZiAoc3Rk
OjpmYWJzKGRlc3RSZWN0LndpZHRoKCkpIDwgMC41ZiB8fCBzdGQ6OmZhYnMoZGVzdFJlY3QuaGVp
Z2h0KCkpIDwgMC41ZikKQEAgLTk4NSw3ICs5ODUsNyBAQCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdSZWN0KFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzLCBjb25zdCBDb2xvciYgZmlsbENvbG9yLCBTdHJva2VTdHlsZSBzdHJv
a2VTdHlsZSwgY29uc3QgQ29sb3ImIHN0cm9rZUNvbG9yKQordm9pZCBkcmF3UmVjdChHcmFwaGlj
c0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcywgY29uc3QgQ29sb3ImIGZpbGxDb2xvciwgU3Ryb2tlU3R5bGUg
c3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcikKIHsKICAgICAvLyBGSVhNRTog
aG93IHNob3VsZCBib3JkZXJUaGlja25lc3MgYmUgdXNlZD8KICAgICBVTlVTRURfUEFSQU0oYm9y
ZGVyVGhpY2tuZXNzKTsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgZHJhd1JlY3QoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBm
bG9hCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd0xpbmUoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludDIsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBjb25zdCBD
b2xvciYgc3Ryb2tlQ29sb3IsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgYm9vbCBzaG91bGRBbnRp
YWxpYXMpCit2b2lkIGRyYXdMaW5lKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBT
dHJva2VTdHlsZSBzdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImIHN0cm9rZUNvbG9yLCBmbG9hdCBz
dHJva2VUaGlja25lc3MsIGJvb2wgc2hvdWxkQW50aWFsaWFzKQogewogICAgIGJvb2wgaXNWZXJ0
aWNhbExpbmUgPSAocG9pbnQxLngoKSArIHN0cm9rZVRoaWNrbmVzcyA9PSBwb2ludDIueCgpKTsK
ICAgICBmbG9hdCBzdHJva2VXaWR0aCA9IGlzVmVydGljYWxMaW5lID8gcG9pbnQyLnkoKSAtIHBv
aW50MS55KCkgOiBwb2ludDIueCgpIC0gcG9pbnQxLngoKTsKQEAgLTEwNjQsNyArMTA2NCw3IEBA
IHZvaWQgZHJhd0xpbmUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjCiAgICAgICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY2Fp
cm9Db250ZXh0LCBDQUlST19BTlRJQUxJQVNfREVGQVVMVCk7CiB9CiAKLXZvaWQgZHJhd0xpbmVz
Rm9yVGV4dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdp
ZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVVbmRlcmxpbmVzLCBjb25zdCBDb2xvciYg
Y29sb3IpCit2b2lkIGRyYXdMaW5lc0ZvclRleHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHN0cm9rZVRoaWNrbmVz
cywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5k
ZXJsaW5lcywgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIENvbG9yIG1vZGlmaWVkQ29sb3Ig
PSBjb2xvcjsKICAgICBGbG9hdFJlY3QgYm91bmRzID0gY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRp
YWxpYXNpbmdNb2RlRm9yVGV4dChwbGF0Zm9ybUNvbnRleHQsIHBvaW50LCB3aWR0aHMubGFzdCgp
LCBwcmludGluZywgbW9kaWZpZWRDb2xvciwgc3Ryb2tlVGhpY2tuZXNzKTsKQEAgLTEwOTAsNyAr
MTA5MCw3IEBAIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7
CiB9CiAKLXZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERvY3VtZW50TWFya2Vy
TGluZVN0eWxlIHN0eWxlKQordm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKEdyYXBoaWNz
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9j
dW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCiB7CiAgICAgaWYgKHN0eWxlLm1vZGUgIT0gRG9j
dW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nCiAgICAgICAgICYmIHN0eWxlLm1v
ZGUgIT0gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkdyYW1tYXIpCkBAIC0xMTA4LDcg
KzExMDgsNyBAQCB2b2lkIGRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYQogICAgIGNhaXJvX3Jlc3RvcmUoY3Ip
OwogfQogCi12b2lkIGRyYXdFbGxpcHNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvciwgU3Ry
b2tlU3R5bGUgc3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvciwgZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzKQordm9pZCBkcmF3RWxsaXBzZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBmaWxsQ29s
b3IsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IsIGZs
b2F0IHN0cm9rZVRoaWNrbmVzcykKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dC5jcigpOwogCkBAIC0xMTMzLDcgKzExMzMsNyBAQCB2b2lkIGRyYXdFbGxpcHNlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgYwog
ICAgICAgICBjYWlyb19uZXdfcGF0aChjcik7CiB9CiAKLXZvaWQgZHJhd0ZvY3VzUmluZyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBmbG9h
dCB3aWR0aCwgY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBkcmF3Rm9jdXNSaW5nKEdyYXBoaWNz
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdp
ZHRoLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkcmF3
IHBhdGhzIHRoYXQgZGVzY3JpYmUgYSByZWN0YW5nbGUgd2l0aCByb3VuZGVkIGNvcm5lcnMKICAg
ICAvLyBzbyBhcyB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IHdlIGRyYXcgcmVjdGFuZ3VsYXIg
Zm9jdXMgcmluZ3MuCkBAIC0xMTYyLDcgKzExNjIsNyBAQCB2b2lkIGRyYXdGb2N1c1JpbmcoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgZmxv
YQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdGb2N1c1JpbmcoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4m
IHJlY3RzLCBmbG9hdCB3aWR0aCwgY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBkcmF3Rm9jdXNS
aW5nKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAg
ICBQYXRoIHBhdGg7CiAgICAgdW5zaWduZWQgcmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwpAQCAt
MTE3OCwyMyArMTE3OCwyMyBAQCB2b2lkIGRyYXdGb2N1c1JpbmcoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdAogICAgIGRyYXdGb2N1
c1JpbmcocGxhdGZvcm1Db250ZXh0LCBwYXRoLCB3aWR0aCwgY29sb3IpOwogfQogCi12b2lkIHNh
dmUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKK3ZvaWQgc2F2ZShHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQogewotICAgIHBsYXRmb3JtQ29udGV4
dC5zYXZlKCk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNhdmVJbnRlcm5hbCgpOwogCiAgICAgaWYg
KGF1dG8qIGdyYXBoaWNzQ29udGV4dFByaXZhdGUgPSBwbGF0Zm9ybUNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0UHJpdmF0ZSgpKQogICAgICAgICBncmFwaGljc0NvbnRleHRQcml2YXRlLT5zYXZlKCk7
CiB9CiAKLXZvaWQgcmVzdG9yZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
KQordm9pZCByZXN0b3JlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7
Ci0gICAgcGxhdGZvcm1Db250ZXh0LnJlc3RvcmUoKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQucmVz
dG9yZUludGVybmFsKCk7CiAKICAgICBpZiAoYXV0byogZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSA9
IHBsYXRmb3JtQ29udGV4dC5ncmFwaGljc0NvbnRleHRQcml2YXRlKCkpCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dFByaXZhdGUtPnJlc3RvcmUoKTsKIH0KIAotdm9pZCB0cmFuc2xhdGUoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKK3ZvaWQg
dHJhbnNsYXRlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0IHgs
IGZsb2F0IHkpCiB7CiAgICAgY2Fpcm9fdHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dC5jcigpLCB4
LCB5KTsKIApAQCAtMTIwMiw3ICsxMjAyLDcgQEAgdm9pZCB0cmFuc2xhdGUoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0UHJpdmF0ZS0+dHJhbnNsYXRlKHgsIHkpOwogfQogCi12b2lkIHJvdGF0ZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCBhbmdsZUluUmFkaWFu
cykKK3ZvaWQgcm90YXRlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZs
b2F0IGFuZ2xlSW5SYWRpYW5zKQogewogICAgIGNhaXJvX3JvdGF0ZShwbGF0Zm9ybUNvbnRleHQu
Y3IoKSwgYW5nbGVJblJhZGlhbnMpOwogCkBAIC0xMjEwLDcgKzEyMTAsNyBAQCB2b2lkIHJvdGF0
ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCBhbmdsZUluUmFk
aWFucykKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZS0+cm90YXRlKGFuZ2xlSW5SYWRp
YW5zKTsKIH0KIAotdm9pZCBzY2FsZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIHNjYWxlKEdyYXBoaWNzQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBjYWly
b19zY2FsZShwbGF0Zm9ybUNvbnRleHQuY3IoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKIApAQCAtMTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBzY2FsZShQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dFByaXZhdGUtPnNjYWxlKHNpemUpOwogfQogCi12b2lkIGNvbmNhdENUTShQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKK3ZvaWQgY29uY2F0Q1RNKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIGNvbnN0
IGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgodHJhbnNmb3JtKTsKICAgICBj
YWlyb190cmFuc2Zvcm0ocGxhdGZvcm1Db250ZXh0LmNyKCksICZtYXRyaXgpOwpAQCAtMTIyNywx
MyArMTIyNywxMyBAQCB2b2lkIGNvbmNhdENUTShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYQogICAgICAgICBncmFwaGljc0Nv
bnRleHRQcml2YXRlLT5jb25jYXRDVE0odHJhbnNmb3JtKTsKIH0KIAotdm9pZCBiZWdpblRyYW5z
cGFyZW5jeUxheWVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0
IG9wYWNpdHkpCit2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoR3JhcGhpY3NDb250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBjYWlyb19wdXNoX2dy
b3VwKHBsYXRmb3JtQ29udGV4dC5jcigpKTsKICAgICBwbGF0Zm9ybUNvbnRleHQubGF5ZXJzKCku
YXBwZW5kKG9wYWNpdHkpOwogfQogCi12b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCit2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVy
KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291cmNl
KGNyKTsKQEAgLTEyNDgsNyArMTI0OCw3IEBAIHN0YXRpYyB2b2lkIGRvQ2xpcFdpdGhBbnRpYWxp
YXMoY2Fpcm9fdCogY3IsIGNhaXJvX2FudGlhbGlhc190IGFudGlhbGlhcykKICAgICBjYWlyb19z
ZXRfYW50aWFsaWFzKGNyLCBzYXZlZEFudGlhbGlhc1J1bGUpOwogfQogCi12b2lkIGNsaXAoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5j
cigpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBjbGlwKFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZS0+Y2xpcChyZWN0KTsKIH0KIAotdm9p
ZCBjbGlwT3V0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3ZvaWQgY2xpcE91dChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBw
bGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7CkBAIC0xMjc5
LDcgKzEyNzksNyBAQCB2b2lkIGNsaXBPdXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGNhaXJvX3NldF9maWxsX3J1bGUo
Y3IsIHNhdmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIGNsaXBPdXQoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCkKK3ZvaWQgY2xpcE91dChHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoKQogewog
ICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgZG91YmxlIHgxLCB5
MSwgeDIsIHkyOwpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgdm9pZCBjbGlwT3V0KFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgY2Fpcm9f
c2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQgY2xpcFBhdGgoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgV2lu
ZFJ1bGUgY2xpcFJ1bGUpCit2b2lkIGNsaXBQYXRoKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIGNsaXBSdWxlKQogewogICAg
IGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKQEAgLTEzMTEsNyArMTMxMSw3
IEBAIHZvaWQgY2xpcFBhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0
ZS0+Y2xpcChwYXRoKTsKIH0KIAotdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihQbGF0Zm9ybUNvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIHBsYXRmb3JtQ29udGV4dC5wdXNoSW1hZ2VNYXNr
KGltYWdlLCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCmluZGV4IDNkZDkwMTM0ZDE0NS4u
N2RkOWFlNzJiMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBG
bG9hdFJlY3Q7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgRmxvYXRTaXplOwogY2xh
c3MgUGF0aDsKLWNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogCiBzdHJ1Y3QgR3JhcGhpY3ND
b250ZXh0U3RhdGU7CiAKQEAgLTU1LDE5ICs1NCwxOSBAQCBuYW1lc3BhY2UgQ2Fpcm8gewogCiBu
YW1lc3BhY2UgU3RhdGUgewogCi12b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIGZsb2F0KTsKLXZvaWQgc2V0U3Ryb2tlU3R5bGUoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBTdHJva2VTdHlsZSk7Cit2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhHcmFwaGljc0NvbnRl
eHRDYWlybyYsIGZsb2F0KTsKK3ZvaWQgc2V0U3Ryb2tlU3R5bGUoR3JhcGhpY3NDb250ZXh0Q2Fp
cm8mLCBTdHJva2VTdHlsZSk7CiAKLXZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci12b2lkIHNldFNo
b3VsZEFudGlhbGlhcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGJvb2wpOwordm9pZCBzZXRDb21w
b3NpdGVPcGVyYXRpb24oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKTsKK3ZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKEdyYXBoaWNzQ29udGV4dENhaXJv
JiwgYm9vbCk7CiAKLXZvaWQgc2V0Q1RNKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJik7Ci1BZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKFBsYXRmb3JtQ29udGV4dENh
aXJvJik7Cit2b2lkIHNldENUTShHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOworQWZmaW5lVHJhbnNmb3JtIGdldENUTShHcmFwaGljc0NvbnRleHRDYWlybyYp
OwogCi1JbnRSZWN0IGdldENsaXBCb3VuZHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKTsKLUZsb2F0
UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxv
YXRSZWN0Jik7CitJbnRSZWN0IGdldENsaXBCb3VuZHMoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mKTsK
K0Zsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29u
c3QgRmxvYXRSZWN0Jik7CiAKLWJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mKTsKK2Jvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoR3JhcGhpY3NDb250ZXh0Q2Fp
cm8mKTsKIAogfSAvLyBuYW1lc3BhY2UgU3RhdGUKIApAQCAtMTE1LDcgKzExNCw3IEBAIHN0cnVj
dCBTaGFkb3dTdGF0ZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhZG93U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3Q7Ci0gICAgYm9vbCBpc1JlcXVpcmVkKFBsYXRmb3JtQ29udGV4dENhaXJvJikgY29uc3Q7Cisg
ICAgYm9vbCBpc1JlcXVpcmVkKEdyYXBoaWNzQ29udGV4dENhaXJvJikgY29uc3Q7CiAKICAgICBG
bG9hdFNpemUgb2Zmc2V0OwogICAgIGZsb2F0IGJsdXIgeyAwIH07CkBAIC0xMjYsNTMgKzEyNSw1
MyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGUgewogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGdsb2JhbENv
bXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfTsKIH07CiAK
LXZvaWQgc2V0TGluZUNhcChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIExpbmVDYXApOwotdm9pZCBz
ZXRMaW5lRGFzaChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IERhc2hBcnJheSYsIGZsb2F0
KTsKLXZvaWQgc2V0TGluZUpvaW4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBMaW5lSm9pbik7Ci12
b2lkIHNldE1pdGVyTGltaXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBmbG9hdCk7Ci0KLXZvaWQg
ZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
aWxsU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZmlsbFJlY3QoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IFNoYWRv
d1N0YXRlJik7Ci12b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxv
YXRSZWN0JiwgY2Fpcm9fcGF0dGVybl90Kik7Ci12b2lkIGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9y
bUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIGNv
bnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYs
IGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBmaWxsUGF0aChQ
bGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBGaWxsU291cmNlJiwgY29u
c3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3Qg
UGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGNs
ZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwotCi12b2lk
IGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29u
c3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+
JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgQ29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7Ci0KLXZvaWQgZHJhd1BsYXRmb3JtSW1h
Z2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxv
YXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwgT3JpZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5n
ID0gT3JpZW50YXRpb25TaXppbmc6Ok5vcm1hbCk7Ci0KLXZvaWQgZHJhd1JlY3QoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJv
a2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKLXZvaWQgZHJhd0xpbmUoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFN0cm9rZVN0eWxlLCBj
b25zdCBDb2xvciYsIGZsb2F0LCBib29sKTsKLXZvaWQgZHJhd0xpbmVzRm9yVGV4dChQbGF0Zm9y
bUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0
IERhc2hBcnJheSYsIGJvb2wsIGJvb2wsIGNvbnN0IENvbG9yJik7Ci12b2lkIGRyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBE
b2N1bWVudE1hcmtlckxpbmVTdHlsZSk7Ci12b2lkIGRyYXdFbGxpcHNlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29u
c3QgQ29sb3ImLCBmbG9hdCk7Ci0KLXZvaWQgZHJhd0ZvY3VzUmluZyhQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNvbnN0IFBhdGgmLCBmbG9hdCwgY29uc3QgQ29sb3ImKTsKLXZvaWQgZHJhd0ZvY3Vz
UmluZyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxv
YXQsIGNvbnN0IENvbG9yJik7Ci0KLXZvaWQgc2F2ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwot
dm9pZCByZXN0b3JlKFBsYXRmb3JtQ29udGV4dENhaXJvJik7Ci0KLXZvaWQgdHJhbnNsYXRlKFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgZmxvYXQsIGZsb2F0KTsKLXZvaWQgcm90YXRlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgZmxvYXQpOwotdm9pZCBzY2FsZShQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNvbnN0IEZsb2F0U2l6ZSYpOwotdm9pZCBjb25jYXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLQotdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVy
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgZmxvYXQpOwotdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXll
cihQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwotCi12b2lkIGNsaXAoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKLXZvaWQgY2xpcE91dChQbGF0Zm9ybUNvbnRleHRDYWly
byYsIGNvbnN0IEZsb2F0UmVjdCYpOwotdm9pZCBjbGlwT3V0KFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY29uc3QgUGF0aCYpOwotdm9pZCBjbGlwUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNv
bnN0IFBhdGgmLCBXaW5kUnVsZSk7Ci0KLXZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKK3ZvaWQg
c2V0TGluZUNhcChHcmFwaGljc0NvbnRleHRDYWlybyYsIExpbmVDYXApOwordm9pZCBzZXRMaW5l
RGFzaChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KTsKK3Zv
aWQgc2V0TGluZUpvaW4oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBMaW5lSm9pbik7Cit2b2lkIHNl
dE1pdGVyTGltaXQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBmbG9hdCk7CisKK3ZvaWQgZmlsbFJl
Y3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGaWxsU291
cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZmlsbFJlY3QoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IFNoYWRvd1N0YXRl
Jik7Cit2b2lkIGZpbGxSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0
JiwgY2Fpcm9fcGF0dGVybl90Kik7Cit2b2lkIGZpbGxSb3VuZGVkUmVjdChHcmFwaGljc0NvbnRl
eHRDYWlybyYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IFNo
YWRvd1N0YXRlJik7Cit2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKEdyYXBoaWNzQ29udGV4
dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0
IEZpbGxTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBmaWxsUGF0aChHcmFwaGlj
c0NvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU2hh
ZG93U3RhdGUmKTsKK3ZvaWQgc3Ryb2tlUmVjdChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0
IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0
ZSYpOwordm9pZCBzdHJva2VQYXRoKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgUGF0aCYs
IGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGNsZWFyUmVj
dChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOworCit2b2lkIGRyYXdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ry
b2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9f
c2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxv
YXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
Q29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7CisKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25z
dCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHRDYWlybyYs
IGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1
cmZhY2UoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNv
bnN0IFNoYWRvd1N0YXRlJiwgT3JpZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5nID0gT3Jp
ZW50YXRpb25TaXppbmc6Ok5vcm1hbCk7CisKK3ZvaWQgZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHls
ZSwgY29uc3QgQ29sb3ImKTsKK3ZvaWQgZHJhd0xpbmUoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFN0cm9rZVN0eWxlLCBjb25zdCBD
b2xvciYsIGZsb2F0LCBib29sKTsKK3ZvaWQgZHJhd0xpbmVzRm9yVGV4dChHcmFwaGljc0NvbnRl
eHRDYWlybyYsIGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hB
cnJheSYsIGJvb2wsIGJvb2wsIGNvbnN0IENvbG9yJik7Cit2b2lkIGRyYXdEb3RzRm9yRG9jdW1l
bnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSk7Cit2b2lkIGRyYXdFbGxpcHNlKEdyYXBoaWNzQ29udGV4dENhaXJv
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29s
b3ImLCBmbG9hdCk7CisKK3ZvaWQgZHJhd0ZvY3VzUmluZyhHcmFwaGljc0NvbnRleHRDYWlybyYs
IGNvbnN0IFBhdGgmLCBmbG9hdCwgY29uc3QgQ29sb3ImKTsKK3ZvaWQgZHJhd0ZvY3VzUmluZyhH
cmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQsIGNv
bnN0IENvbG9yJik7CisKK3ZvaWQgc2F2ZShHcmFwaGljc0NvbnRleHRDYWlybyYpOwordm9pZCBy
ZXN0b3JlKEdyYXBoaWNzQ29udGV4dENhaXJvJik7CisKK3ZvaWQgdHJhbnNsYXRlKEdyYXBoaWNz
Q29udGV4dENhaXJvJiwgZmxvYXQsIGZsb2F0KTsKK3ZvaWQgcm90YXRlKEdyYXBoaWNzQ29udGV4
dENhaXJvJiwgZmxvYXQpOwordm9pZCBzY2FsZShHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0
IEZsb2F0U2l6ZSYpOwordm9pZCBjb25jYXRDVE0oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKwordm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKEdyYXBo
aWNzQ29udGV4dENhaXJvJiwgZmxvYXQpOwordm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcihHcmFw
aGljc0NvbnRleHRDYWlybyYpOworCit2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBj
b25zdCBGbG9hdFJlY3QmKTsKK3ZvaWQgY2xpcE91dChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNv
bnN0IEZsb2F0UmVjdCYpOwordm9pZCBjbGlwT3V0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29u
c3QgUGF0aCYpOwordm9pZCBjbGlwUGF0aChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IFBh
dGgmLCBXaW5kUnVsZSk7CisKK3ZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogfSAvLyBuYW1l
c3BhY2UgQ2Fpcm8KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDUzODBmOWVj
NmIzOC4uYTdhZjBjZWI1MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IlBhdHRlcm4uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUg
IlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3Bw
CmluZGV4IDllODJlNGEyZWVhOC4uYTQxYzY3OTc0MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcApAQCAt
MzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29s
b3JCbGVuZGluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGQ4Yzk0
Y2IwNzY4Zi4uNzQyYTNlNjMwZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBA
IC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAKICNpZiBQTEFURk9STShX
SU4pCkBAIC01NywxMSArNTYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGlj
c0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8oUmVmUHRyPGNhaXJvX3Q+JiYgY3Ip
Ci0gICAgOiBtX3BsYXRmb3JtQ29udGV4dChXVEZNb3ZlKGNyKSkKLSAgICAsIG1fcHJpdmF0ZSht
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRl
eHQuY3IoKSkpCisvLyBFbmNhcHN1bGF0ZXMgdGhlIGFkZGl0aW9uYWwgcGFpbnRpbmcgc3RhdGUg
aW5mb3JtYXRpb24gd2Ugc3RvcmUgZm9yIGVhY2gKKy8vIHB1c2hlZCBncmFwaGljcyBzdGF0ZS4K
K2NsYXNzIEdyYXBoaWNzQ29udGV4dENhaXJvOjpDYWlyb1N0YXRlIHsKK3B1YmxpYzoKKyAgICBD
YWlyb1N0YXRlKCkgPSBkZWZhdWx0OworCisgICAgc3RydWN0IHsKKyAgICAgICAgUmVmUHRyPGNh
aXJvX3BhdHRlcm5fdD4gcGF0dGVybjsKKyAgICAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4Owor
ICAgIH0gbV9tYXNrOworfTsKKworR3JhcGhpY3NDb250ZXh0Q2Fpcm86OkdyYXBoaWNzQ29udGV4
dENhaXJvKFJlZlB0cjxjYWlyb190PiYmIGNvbnRleHQpCisgICAgOiBtX2NyKFdURk1vdmUoY29u
dGV4dCkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU+KGNyKCkpKQogewotICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29u
dGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKKyAgICBtX2NhaXJvU3RhdGVTdGFjay5hcHBl
bmQoQ2Fpcm9TdGF0ZSgpKTsKKyAgICBtX2NhaXJvU3RhdGUgPSAmbV9jYWlyb1N0YXRlU3RhY2su
bGFzdCgpOwogfQogCiBHcmFwaGljc0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8o
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQpAQCAtNjksMTAgKzgxLDcgQEAgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OkdyYXBoaWNzQ29udGV4dENhaXJvKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkK
IHsKIH0KIAotR3JhcGhpY3NDb250ZXh0Q2Fpcm86On5HcmFwaGljc0NvbnRleHRDYWlybygpCi17
Ci0gICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShudWxscHRy
KTsKLX0KK0dyYXBoaWNzQ29udGV4dENhaXJvOjp+R3JhcGhpY3NDb250ZXh0Q2Fpcm8oKSA9IGRl
ZmF1bHQ7CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0Q2Fpcm86Omhhc1BsYXRmb3JtQ29udGV4dCgp
IGNvbnN0CiB7CkBAIC04NSwxNSArOTQsMTUgQEAgQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSkgY28KICAg
ICByZXR1cm4gQ2Fpcm86OlN0YXRlOjpnZXRDVE0oKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAot
UGxhdGZvcm1Db250ZXh0Q2Fpcm8qIEdyYXBoaWNzQ29udGV4dENhaXJvOjpwbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0Q2Fpcm8qIEdyYXBoaWNzQ29udGV4dENhaXJvOjpw
bGF0Zm9ybUNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiAmbV9wbGF0Zm9ybUNvbnRleHQ7
CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0Q2Fpcm8qPih0aGlzKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6c2F2ZSgpCiB7CiAgICAgR3JhcGhpY3NDb250
ZXh0OjpzYXZlKCk7Ci0gICAgQ2Fpcm86OnNhdmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBD
YWlybzo6c2F2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJlc3Rv
cmUoKQpAQCAtMTAyLDcgKzExMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJlc3Rv
cmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKTsK
LSAgICBDYWlybzo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOworICAgIENhaXJvOjpyZXN0
b3JlKCp0aGlzKTsKIH0KIAogLy8gRHJhd3MgYSBmaWxsZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJv
a2VkIGJvcmRlci4KQEAgLTExMCwxMyArMTE5LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
CiB7CiAgICAgQVNTRVJUKCFyZWN0LmlzRW1wdHkoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlz
LT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOworICAgIENhaXJvOjpkcmF3UmVjdCgqdGhpcywgcmVjdCwgYm9yZGVy
VGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJv
a2VDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgp
OwotICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2
ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86
OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKCp0aGlz
LCBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7
IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEs
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0
byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMTI2LDE0
ICsxMzUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmUoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdMaW5lKCpwbGF0
Zm9ybUNvbnRleHQoKSwgcG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMp
OworICAgIENhaXJvOjpkcmF3TGluZSgqdGhpcywgcG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9r
ZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5z
aG91bGRBbnRpYWxpYXMpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IHVzZWQgdG8gZHJh
dyB0aGUgbGl0dGxlIGNpcmNsZXMgdXNlZCBpbiBsaXN0cy4KIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdFbGxpcHNlKCpwbGF0Zm9ybUNv
bnRleHQoKSwgcmVjdCwgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUu
c3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CisgICAgQ2Fpcm86OmRyYXdFbGxp
cHNlKCp0aGlzLCByZWN0LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0
ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTE0Miw3ICsxNTEs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRo
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0g
ICAgQ2Fpcm86OmZpbGxQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fpcm86OkZpbGxT
b3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6Zmls
bFBhdGgoKnRoaXMsIHBhdGgsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRv
d1N0YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnN0cm9rZVBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTE1MSwxOCArMTYwLDE4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q2Fpcm86OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpzdHJva2VQ
YXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSks
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpzdHJva2VQYXRoKCp0aGlz
LCBwYXRoLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAg
Q2Fpcm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgQ2Fpcm86OkZpbGxTb3Vy
Y2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZmlsbFJl
Y3QoKnRoaXMsIHJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIENhaXJvOjpm
aWxsUmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUoKSkpOworICAgIENhaXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQpA
QCAtMTcyLDkgKzE4MSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIGlmICghcGF0dGVy
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2Fpcm86OnNhdmUobV9wbGF0Zm9ybUNvbnRleHQp
OwotICAgIENhaXJvOjpmaWxsUmVjdChtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCwgcGF0dGVybi5n
ZXQoKSk7Ci0gICAgQ2Fpcm86OnJlc3RvcmUobV9wbGF0Zm9ybUNvbnRleHQpOworICAgIENhaXJv
OjpzYXZlKCp0aGlzKTsKKyAgICBDYWlybzo6ZmlsbFJlY3QoKnRoaXMsIHJlY3QsIHBhdHRlcm4u
Z2V0KCkpOworICAgIENhaXJvOjpyZXN0b3JlKCp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQpAQCAtMTgyLDE5ICsxOTEsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIEMKICAg
ICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJl
dmlvdXNPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwogCi0gICAgQ2Fpcm86OlN0
YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24obV9wbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9w
ZXJhdG9yLCBibGVuZE1vZGUpOwotICAgIENhaXJvOjpmaWxsUmVjdChtX3BsYXRmb3JtQ29udGV4
dCwgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwotICAgIENhaXJvOjpT
dGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGxhdGZvcm1Db250ZXh0LCBwcmV2aW91c09w
ZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3Np
dGVPcGVyYXRpb24oKnRoaXMsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgIENh
aXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOworICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBwcmV2
aW91c09wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIENhaXJvOjpjbGlw
KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7CisgICAgQ2Fpcm86OmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlwUGF0aChjb25zdCBQYXRoJiBw
YXRoLCBXaW5kUnVsZSBjbGlwUnVsZSkKIHsKLSAgICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3Jt
Q29udGV4dCgpLCBwYXRoLCBjbGlwUnVsZSk7CisgICAgQ2Fpcm86OmNsaXBQYXRoKCp0aGlzLCBw
YXRoLCBjbGlwUnVsZSk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNsaXBC
b3VuZHMoKSBjb25zdApAQCAtMjA1LDcgKzIxNCw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmNsaXBCb3VuZHMoKSBjb25zdAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkKIHsKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZm
ZXIobV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCp0aGlzLCBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQg
d2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMjE2LDcgKzIyNSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYg
cGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiAg
ICAgcmV0dXJuOwogI2Vsc2UKLSAgICBDYWlybzo6ZHJhd0ZvY3VzUmluZygqcGxhdGZvcm1Db250
ZXh0KCksIHBhdGgsIHdpZHRoLCBjb2xvcik7CisgICAgQ2Fpcm86OmRyYXdGb2N1c1JpbmcoKnRo
aXMsIHBhdGgsIHdpZHRoLCBjb2xvcik7CiAjZW5kaWYKIH0KIApAQCAtMjI4LDcgKzIzNyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZs
b2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3CiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiAgICAg
cmV0dXJuOwogI2Vsc2UKLSAgICBDYWlybzo6ZHJhd0ZvY3VzUmluZygqcGxhdGZvcm1Db250ZXh0
KCksIHJlY3RzLCB3aWR0aCwgY29sb3IpOworICAgIENhaXJvOjpkcmF3Rm9jdXNSaW5nKCp0aGlz
LCByZWN0cywgd2lkdGgsIGNvbG9yKTsKICNlbmRpZgogfQogCkBAIC0yMzYsMzIgKzI0NSwzMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBmbG9hdCB0aGljawogewogICAgIGlmICh3aWR0aHMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgQ2Fpcm86OmRyYXdMaW5lc0ZvclRleHQoKnBsYXRmb3JtQ29u
dGV4dCgpLCBwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxp
bmVzLCBtX3N0YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBDYWlybzo6ZHJhd0xpbmVzRm9yVGV4dCgq
dGhpcywgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5l
cywgbV9zdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKIHsKLSAgICBDYWlybzo6ZHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcigqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIHN0eWxlKTsKKyAgICBDYWlybzo6ZHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcigqdGhpcywgcmVjdCwgc3R5bGUpOwogfQogCiBGbG9hdFJl
Y3QgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQogewogICAgIFVOVVNFRF9QQVJB
TShyb3VuZGluZ01vZGUpOwotICAgIHJldHVybiBDYWlybzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQ
aXhlbHMoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0KTsKKyAgICByZXR1cm4gQ2Fpcm86OlN0YXRl
Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKCp0aGlzLCByZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB7Ci0gICAgQ2Fpcm86OnRy
YW5zbGF0ZSgqcGxhdGZvcm1Db250ZXh0KCksIHgsIHkpOworICAgIENhaXJvOjp0cmFuc2xhdGUo
KnRoaXMsIHgsIHkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjp1cGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6
c2V0U3Ryb2tlVGhpY2tuZXNzKG1fcGxhdGZvcm1Db250ZXh0LCBzdGF0ZS5zdHJva2VUaGlja25l
c3MpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcygqdGhpcywgc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKTsKIAogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VT
dHlsZShtX3BsYXRmb3JtQ29udGV4dCwgc3RhdGUuc3Ryb2tlU3R5bGUpOworICAgICAgICBDYWly
bzo6U3RhdGU6OnNldFN0cm9rZVN0eWxlKCp0aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7CiAKICAg
ICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSB7CiAgICAg
ICAgIGlmIChzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgewpAQCAtMjczLDg4ICsyODIs
ODggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGkKICAgICB9CiAKICAgICBpZiAoZmxhZ3MgJiBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKQotICAgICAgICBD
YWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BsYXRmb3JtQ29udGV4dCwgc3Rh
dGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSk7CisgICAgICAgIENhaXJvOjpT
dGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRv
ciwgc3RhdGUuYmxlbmRNb2RlKTsKIAogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hv
dWxkQW50aWFsaWFzKG1fcGxhdGZvcm1Db250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwor
ICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcygqdGhpcywgc3RhdGUuc2hv
dWxkQW50aWFsaWFzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y29uY2F0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewotICAgIENhaXJvOjpjb25jYXRD
VE0oKnBsYXRmb3JtQ29udGV4dCgpLCB0cmFuc2Zvcm0pOworICAgIENhaXJvOjpjb25jYXRDVE0o
KnRoaXMsIHRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKLSAgICBDYWlybzo6U3RhdGU6
OnNldENUTSgqcGxhdGZvcm1Db250ZXh0KCksIHRyYW5zZm9ybSk7CisgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDVE0oKnRoaXMsIHRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsKICAgICBHcmFwaGlj
c0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7Ci0gICAgQ2Fpcm86OmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBvcGFjaXR5KTsKKyAgICBD
YWlybzo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcigqdGhpcywgb3BhY2l0eSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICAgICBHcmFw
aGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Ci0gICAgQ2Fpcm86OmVuZFRyYW5z
cGFyZW5jeUxheWVyKCpwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgQ2Fpcm86OmVuZFRyYW5zcGFy
ZW5jeUxheWVyKCp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y2xlYXJS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBDYWlybzo6Y2xlYXJSZWN0KCpwbGF0
Zm9ybUNvbnRleHQoKSwgcmVjdCk7CisgICAgQ2Fpcm86OmNsZWFyUmVjdCgqdGhpcywgcmVjdCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5z
dGF0ZSgpOwotICAgIENhaXJvOjpzdHJva2VSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwg
bGluZVdpZHRoLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CisgICAgQ2Fpcm86OnN0cm9rZVJlY3QoKnRoaXMsIHJlY3QsIGxpbmVXaWR0aCwg
Q2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNh
cCkKIHsKLSAgICBDYWlybzo6c2V0TGluZUNhcCgqcGxhdGZvcm1Db250ZXh0KCksIGxpbmVDYXAp
OworICAgIENhaXJvOjpzZXRMaW5lQ2FwKCp0aGlzLCBsaW5lQ2FwKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRDYWlybzo6c2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBkYXNoZXMsIGZs
b2F0IGRhc2hPZmZzZXQpCiB7Ci0gICAgQ2Fpcm86OnNldExpbmVEYXNoKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgZGFzaGVzLCBkYXNoT2Zmc2V0KTsKKyAgICBDYWlybzo6c2V0TGluZURhc2goKnRoaXMs
IGRhc2hlcywgZGFzaE9mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNl
dExpbmVKb2luKExpbmVKb2luIGxpbmVKb2luKQogewotICAgIENhaXJvOjpzZXRMaW5lSm9pbigq
cGxhdGZvcm1Db250ZXh0KCksIGxpbmVKb2luKTsKKyAgICBDYWlybzo6c2V0TGluZUpvaW4oKnRo
aXMsIGxpbmVKb2luKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6c2V0TWl0ZXJM
aW1pdChmbG9hdCBtaXRlcikKIHsKLSAgICBDYWlybzo6c2V0TWl0ZXJMaW1pdCgqcGxhdGZvcm1D
b250ZXh0KCksIG1pdGVyKTsKKyAgICBDYWlybzo6c2V0TWl0ZXJMaW1pdCgqdGhpcywgbWl0ZXIp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBh
dGgpCiB7Ci0gICAgQ2Fpcm86OmNsaXBPdXQoKnBsYXRmb3JtQ29udGV4dCgpLCBwYXRoKTsKKyAg
ICBDYWlybzo6Y2xpcE91dCgqdGhpcywgcGF0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OnJvdGF0ZShmbG9hdCByYWRpYW5zKQogewotICAgIENhaXJvOjpyb3RhdGUoKnBsYXRm
b3JtQ29udGV4dCgpLCByYWRpYW5zKTsKKyAgICBDYWlybzo6cm90YXRlKCp0aGlzLCByYWRpYW5z
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6c2NhbGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplKQogewotICAgIENhaXJvOjpzY2FsZSgqcGxhdGZvcm1Db250ZXh0KCksIHNpemUpOwor
ICAgIENhaXJvOjpzY2FsZSgqdGhpcywgc2l6ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIENhaXJvOjpjbGlw
T3V0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7CisgICAgQ2Fpcm86OmNsaXBPdXQoKnRoaXMs
IHJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUm91bmRlZFJlY3RJ
bXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
LSAgICBDYWlybzo6ZmlsbFJvdW5kZWRSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgY29s
b3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSk7CisgICAgQ2Fpcm86OmZpbGxSb3VuZGVk
UmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVS
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC0zNjMsNyArMzcyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0
YXRlKCk7Ci0gICAgQ2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSgqdGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0
ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dENhaXJvOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMzcyLDcgKzM4MSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwg
Y29uc3QgRmxvYXRTaXplCiAgICAgICAgIHJldHVybjsKIAogICAgIFVOVVNFRF9QQVJBTShzcGFj
aW5nKTsKLSAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRpdmVJ
bWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2VTaXplKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgQ2Fpcm86
OmRyYXdQYXR0ZXJuKCp0aGlzLCBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIElu
dFNpemUoaW1hZ2VTaXplKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgb3B0aW9ucyk7CiB9CiAKIFJlbmRlcmluZ01vZGUgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OnJlbmRlcmluZ01vZGUoKSBjb25zdApAQCAtNDAzLDEyICs0MTIsNzIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKgogICAgICAgICBmb250U21vb3RoaW5nID0gRm9udFNtb290aGluZ01vZGU6Ok5v
U21vb3RoaW5nOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJv
OjpkcmF3R2x5cGhzKG1fcGxhdGZvcm1Db250ZXh0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSks
IENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAorICAgIENhaXJvOjpkcmF3R2x5cGhzKCp0aGlz
LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAog
ICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3lu
dGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCiAgICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQs
IHN0YXRlLnNoYWRvd0NvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nKTsKIH0KIAorY2Fpcm9f
dCogR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jci5n
ZXQoKTsKK30KKworVmVjdG9yPGZsb2F0PiYgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmxheWVycygp
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJv
OjpzYXZlSW50ZXJuYWwoKQoreworICAgIG1fY2Fpcm9TdGF0ZVN0YWNrLmFwcGVuZChDYWlyb1N0
YXRlKCkpOworICAgIG1fY2Fpcm9TdGF0ZSA9ICZtX2NhaXJvU3RhdGVTdGFjay5sYXN0KCk7CisK
KyAgICBjYWlyb19zYXZlKG1fY3IuZ2V0KCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpyZXN0b3JlSW50ZXJuYWwoKQoreworICAgIGlmIChtX2NhaXJvU3RhdGVTdGFjay5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NhaXJvU3RhdGUtPm1fbWFzay5w
YXR0ZXJuKSB7CisgICAgICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UobV9jci5nZXQoKSk7
CisKKyAgICAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4OworICAgICAgICBjYWlyb19nZXRfbWF0
cml4KG1fY3IuZ2V0KCksICZtYXRyaXgpOworICAgICAgICBjYWlyb19zZXRfbWF0cml4KG1fY3Iu
Z2V0KCksICZtX2NhaXJvU3RhdGUtPm1fbWFzay5tYXRyaXgpOworICAgICAgICBjYWlyb19tYXNr
KG1fY3IuZ2V0KCksIG1fY2Fpcm9TdGF0ZS0+bV9tYXNrLnBhdHRlcm4uZ2V0KCkpOworICAgICAg
ICBjYWlyb19zZXRfbWF0cml4KG1fY3IuZ2V0KCksICZtYXRyaXgpOworICAgIH0KKworICAgIG1f
Y2Fpcm9TdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICBBU1NFUlQoIW1fY2Fpcm9TdGF0ZVN0
YWNrLmlzRW1wdHkoKSk7CisgICAgbV9jYWlyb1N0YXRlID0gJm1fY2Fpcm9TdGF0ZVN0YWNrLmxh
c3QoKTsKKworICAgIGNhaXJvX3Jlc3RvcmUobV9jci5nZXQoKSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OnB1c2hJbWFnZU1hc2soY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgLy8gV2UgbXVzdCBjYWxsIHNhdmVQbGF0Zm9y
bVN0YXRlIGF0IGxlYXN0IG9uY2UgYmVmb3JlIHdlIGNhbiB1c2UgaW1hZ2UgbWFza2luZywKKyAg
ICAvLyBzaW5jZSB3ZSBhY3R1YWxseSBhcHBseSB0aGUgbWFzayBpbiByZXN0b3JlUGxhdGZvcm1T
dGF0ZS4KKyAgICBBU1NFUlQoIW1fY2Fpcm9TdGF0ZVN0YWNrLmlzRW1wdHkoKSk7CisgICAgbV9j
YWlyb1N0YXRlLT5tX21hc2sucGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRl
X2Zvcl9zdXJmYWNlKHN1cmZhY2UpKTsKKyAgICBjYWlyb19nZXRfbWF0cml4KG1fY3IuZ2V0KCks
ICZtX2NhaXJvU3RhdGUtPm1fbWFzay5tYXRyaXgpOworCisgICAgY2Fpcm9fbWF0cml4X3QgbWF0
cml4OworICAgIGNhaXJvX21hdHJpeF9pbml0X3RyYW5zbGF0ZSgmbWF0cml4LCAtcmVjdC54KCks
IC1yZWN0LnkoKSk7CisgICAgY2Fpcm9fcGF0dGVybl9zZXRfbWF0cml4KG1fY2Fpcm9TdGF0ZS0+
bV9tYXNrLnBhdHRlcm4uZ2V0KCksICZtYXRyaXgpOworCisgICAgY2Fpcm9fcHVzaF9ncm91cCht
X2NyLmdldCgpKTsKK30KKworR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBHcmFwaGlj
c0NvbnRleHRDYWlybzo6Z3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
VVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXggYmFjYWEzN2M2MTYzLi5k
MmJjNmY5NTYzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApAQCAtMjksNyArMjksNiBA
QAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAKIHR5cGVkZWYgc3RydWN0IF9jYWlybyBjYWly
b190OwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwpAQCAt
NDMsMTMgKzQyLDEzIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBHcmFwaGlj
c0NvbnRleHRDYWlybyhIREMsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7IC8vIEZJWE1FOiBUbyBi
ZSByZW1vdmVkLgotICAgIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dENhaXJvKFBsYXRmb3JtQ29u
dGV4dENhaXJvKik7CisgICAgZXhwbGljaXQgR3JhcGhpY3NDb250ZXh0Q2Fpcm8oR3JhcGhpY3ND
b250ZXh0Q2Fpcm8qKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0Q2Fp
cm8oKTsKIAogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAg
IEdyYXBoaWNzQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAog
ICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKQEAgLTExMyw4ICsxMTIsMjIgQEAg
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogZGVwcmVjYXRlZFBy
aXZhdGVDb250ZXh0KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorICAgIGNhaXJvX3QqIGNyKCkg
Y29uc3Q7CisgICAgVmVjdG9yPGZsb2F0PiYgbGF5ZXJzKCk7CisgICAgdm9pZCBzYXZlSW50ZXJu
YWwoKTsKKyAgICB2b2lkIHJlc3RvcmVJbnRlcm5hbCgpOworICAgIHZvaWQgcHVzaEltYWdlTWFz
ayhjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUqIGdyYXBoaWNzQ29udGV4dFByaXZhdGUoKTsKKwogcHJpdmF0ZToK
LSAgICBtdXRhYmxlIFBsYXRmb3JtQ29udGV4dENhaXJvIG1fcGxhdGZvcm1Db250ZXh0OworICAg
IFJlZlB0cjxjYWlyb190PiBtX2NyOworCisgICAgY2xhc3MgQ2Fpcm9TdGF0ZTsKKyAgICBDYWly
b1N0YXRlKiBtX2NhaXJvU3RhdGU7CisgICAgV1RGOjpWZWN0b3I8Q2Fpcm9TdGF0ZT4gbV9jYWly
b1N0YXRlU3RhY2s7CisKKyAgICAvLyBUcmFuc3BhcmVuY3kgbGF5ZXJzLgorICAgIFZlY3Rvcjxm
bG9hdD4gbV9sYXllcnM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlPiBtX3ByaXZhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJv
LmNwcAppbmRleCBkOTZiNWQ0N2Q2NmEuLmMwNTczN2UzZjQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0R0xDYWlyby5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAj
aW5jbHVkZSA8Y2Fpcm8uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNhaXJvLmgKaW5kZXggYmZjMDAzNTc4OTczLi5mZDMxYTAyMDEwZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaApAQCAt
MjksOCArMjksNiBAQAogCiAjaWYgVVNFKENBSVJPKQogCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250
ZXh0Q2Fpcm8uaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmlu
ZGV4IGUwZTlhYTdkMDM3NS4uOTZjNzYxMzU0MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgi
CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NjY4N2QwOTdhZTEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICog
Q29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChjKSAyMDEyLCBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlIDxj
YWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEVuY2Fwc3VsYXRlcyB0aGUgYWRk
aXRpb25hbCBwYWludGluZyBzdGF0ZSBpbmZvcm1hdGlvbiB3ZSBzdG9yZSBmb3IgZWFjaAotLy8g
cHVzaGVkIGdyYXBoaWNzIHN0YXRlLgotY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OlN0YXRl
IHsKLXB1YmxpYzoKLSAgICBTdGF0ZSgpID0gZGVmYXVsdDsKLQotICAgIHN0cnVjdCB7Ci0gICAg
ICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IHBhdHRlcm47Ci0gICAgICAgIGNhaXJvX21hdHJp
eF90IG1hdHJpeDsKLSAgICB9IG1fbWFzazsKLX07Ci0KLVBsYXRmb3JtQ29udGV4dENhaXJvOjpQ
bGF0Zm9ybUNvbnRleHRDYWlybyhSZWZQdHI8Y2Fpcm9fdD4mJiBjcikKLSAgICA6IG1fY3IoV1RG
TW92ZShjcikpCi17Ci0gICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChTdGF0ZSgpKTsKLSAgICBtX3N0
YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fp
cm86OnJlc3RvcmUoKQotewotICAgIGlmIChtX3N0YXRlU3RhY2suaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV9zdGF0ZS0+bV9tYXNrLnBhdHRlcm4pIHsKLSAgICAgICAg
Y2Fpcm9fcG9wX2dyb3VwX3RvX3NvdXJjZShtX2NyLmdldCgpKTsKLQotICAgICAgICBjYWlyb19t
YXRyaXhfdCBtYXRyaXg7Ci0gICAgICAgIGNhaXJvX2dldF9tYXRyaXgobV9jci5nZXQoKSwgJm1h
dHJpeCk7Ci0gICAgICAgIGNhaXJvX3NldF9tYXRyaXgobV9jci5nZXQoKSwgJm1fc3RhdGUtPm1f
bWFzay5tYXRyaXgpOwotICAgICAgICBjYWlyb19tYXNrKG1fY3IuZ2V0KCksIG1fc3RhdGUtPm1f
bWFzay5wYXR0ZXJuLmdldCgpKTsKLSAgICAgICAgY2Fpcm9fc2V0X21hdHJpeChtX2NyLmdldCgp
LCAmbWF0cml4KTsKLSAgICB9Ci0KLSAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwotICAg
IEFTU0VSVCghbV9zdGF0ZVN0YWNrLmlzRW1wdHkoKSk7Ci0gICAgbV9zdGF0ZSA9ICZtX3N0YXRl
U3RhY2subGFzdCgpOwotCi0gICAgY2Fpcm9fcmVzdG9yZShtX2NyLmdldCgpKTsKLX0KLQotUGxh
dGZvcm1Db250ZXh0Q2Fpcm86On5QbGF0Zm9ybUNvbnRleHRDYWlybygpID0gZGVmYXVsdDsKLQot
dm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6c2F2ZSgpCi17Ci0gICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZChTdGF0ZSgpKTsKLSAgICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7Ci0KLSAg
ICBjYWlyb19zYXZlKG1fY3IuZ2V0KCkpOwotfQotCi12b2lkIFBsYXRmb3JtQ29udGV4dENhaXJv
OjpwdXNoSW1hZ2VNYXNrKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0
JiByZWN0KQotewotICAgIC8vIFdlIG11c3QgY2FsbCBzYXZlUGxhdGZvcm1TdGF0ZSBhdCBsZWFz
dCBvbmNlIGJlZm9yZSB3ZSBjYW4gdXNlIGltYWdlIG1hc2tpbmcsCi0gICAgLy8gc2luY2Ugd2Ug
YWN0dWFsbHkgYXBwbHkgdGhlIG1hc2sgaW4gcmVzdG9yZVBsYXRmb3JtU3RhdGUuCi0gICAgQVNT
RVJUKCFtX3N0YXRlU3RhY2suaXNFbXB0eSgpKTsKLSAgICBtX3N0YXRlLT5tX21hc2sucGF0dGVy
biA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UpKTsK
LSAgICBjYWlyb19nZXRfbWF0cml4KG1fY3IuZ2V0KCksICZtX3N0YXRlLT5tX21hc2subWF0cml4
KTsKLQotICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeDsKLSAgICBjYWlyb19tYXRyaXhfaW5pdF90
cmFuc2xhdGUoJm1hdHJpeCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwotICAgIGNhaXJvX3BhdHRl
cm5fc2V0X21hdHJpeChtX3N0YXRlLT5tX21hc2sucGF0dGVybi5nZXQoKSwgJm1hdHJpeCk7Ci0K
LSAgICBjYWlyb19wdXNoX2dyb3VwKG1fY3IuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU1ZTE4OWFkMzYyLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250
ZXh0Q2Fpcm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKENBSVJPKQotCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7Ci1zdHJ1
Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7Ci0KLW5hbWVzcGFjZSBDYWlybyB7Ci1zdHJ1Y3QgRmls
bFNvdXJjZTsKLXN0cnVjdCBTdHJva2VTb3VyY2U7Ci1zdHJ1Y3QgU2hhZG93U3RhdGU7Ci19Ci0K
LS8vIFRoaXMgY2xhc3MgaG9sZHMgaW5mb3JtYXRpb24gdGhhdCB3b3VsZCBub3JtYWxseSBiZSBw
cml2YXRlIHRvIEdyYXBoaWNzQ29udGV4dCwgZXhjZXB0IHRoYXQgd2Ugd2FudCB0byBhbGxvdyBh
Y2Nlc3MKLS8vIHRvIGl0IGluIEZvbnQgYW5kIEltYWdlIGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRv
IHNlcGFyYXRlIHRoZSBjb25jZXJucyBvZiBDYWlyby1zcGVjaWZpYwotLy8gY29kZSBmcm9tIHRo
ZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQuCi0KLWNsYXNzIFBsYXRmb3Jt
Q29udGV4dENhaXJvIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7Ci1wdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUGxhdGZvcm1Db250ZXh0Q2Fpcm8oUmVmUHRyPGNhaXJvX3Q+JiYpOwotICAgIH5QbGF0Zm9y
bUNvbnRleHRDYWlybygpOwotCi0gICAgY2Fpcm9fdCogY3IoKSBjb25zdCB7IHJldHVybiBtX2Ny
LmdldCgpOyB9Ci0KLSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGdyYXBoaWNz
Q29udGV4dFByaXZhdGUoKSB7IHJldHVybiBtX2dyYXBoaWNzQ29udGV4dFByaXZhdGU7IH0KLSAg
ICB2b2lkIHNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUoR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlKiBncmFwaGljc0NvbnRleHRQcml2YXRlKSB7IG1fZ3JhcGhpY3NDb250ZXh0UHJpdmF0
ZSA9IGdyYXBoaWNzQ29udGV4dFByaXZhdGU7IH0KLQotICAgIFZlY3RvcjxmbG9hdD4mIGxheWVy
cygpIHsgcmV0dXJuIG1fbGF5ZXJzOyB9Ci0KLSAgICB2b2lkIHNhdmUoKTsKLSAgICB2b2lkIHJl
c3RvcmUoKTsKLQotICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9jcjsKLQot
ICAgIC8vIEtlZXBpbmcgYSBwb2ludGVyIHRvIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSBoZXJlIGVuYWJsZXMgY2FsbGluZwotICAgIC8vIFdpbmRvd3Mtc3BlY2lmaWMgbWV0aG9kcyBm
cm9tIENhaXJvT3BlcmF0aW9ucyAod2hlcmUgb25seSBQbGF0Zm9ybUNvbnRleHRDYWlybwotICAg
IC8vIGNhbiBiZSBsZXZlcmFnZWQpLgotICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSogbV9ncmFwaGljc0NvbnRleHRQcml2YXRlIHsgbnVsbHB0ciB9OwotCi0gICAgY2xhc3MgU3Rh
dGU7Ci0gICAgU3RhdGUqIG1fc3RhdGU7Ci0gICAgV1RGOjpWZWN0b3I8U3RhdGU+IG1fc3RhdGVT
dGFjazsKLQotICAgIC8vIFRyYW5zcGFyZW5jeSBsYXllcnMuCi0gICAgVmVjdG9yPGZsb2F0PiBt
X2xheWVyczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShD
QUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKaW5kZXggNWIwNmIzN2JhZDU2Li5jZjFmY2RmZTM4NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBA
IC00NCw3ICs0NCw3IEBACiBuYW1lc3BhY2UgTmljb3NpYSB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIGNvbnRleHRGb3JSZXBsYXkoUGFpbnRpbmdP
cGVyYXRpb25SZXBsYXkmIG9wZXJhdGlvblJlcGxheSkKK0dyYXBoaWNzQ29udGV4dENhaXJvJiBj
b250ZXh0Rm9yUmVwbGF5KFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiBvcGVyYXRpb25SZXBsYXkp
CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8m
PihvcGVyYXRpb25SZXBsYXkpLnBsYXRmb3JtQ29udGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5n
Q29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAppbmRleCA4ZDQyNTc2OTlm
YzkuLjQxNzBmMWUyOTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBh
aW50aW5nQ29udGV4dENhaXJvLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIk5pY29z
aWFCdWZmZXIuaCIKICNpbmNsdWRlICJOaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIgog
I2luY2x1ZGUgIk5pY29zaWFQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2lu
Y2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nT3Bl
cmF0aW9uUmVwbGF5Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaAppbmRleCA3
ZDgxZWViNTkzZGUuLjQ4NGNkZGNjN2MyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb25SZXBs
YXlDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaApAQCAtMjgsMjAgKzI4
LDE3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
aCIKICNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaCIKIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87Ci19Ci0KIG5hbWVzcGFjZSBOaWNv
c2lhIHsKIAogc3RydWN0IFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8gOiBQYWludGluZ09w
ZXJhdGlvblJlcGxheSB7Ci0gICAgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXlDYWlybyhXZWJDb3Jl
OjpQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQorICAgIFBhaW50aW5nT3Bl
cmF0aW9uUmVwbGF5Q2Fpcm8oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCkKICAgICAgICAgOiBwbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQogICAg
IHsgfQogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dDsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RpcmVjdDJET3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCmluZGV4IDVkMTk2MDgwY2RlNC4uNDdlMjk5MzYwN2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0
MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIEZsb2F0UmVjdDsK
IGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBQYXRoOwot
Y2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CiAKIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKaW5kZXggMmNiZjZkMTkwYTkxLi4x
YzMwZjM4M2RiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBHcmFwaGljc0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8oSERDIGRj
LCBib29sIGhhc0FscGhhKQogewogfQogCi1HcmFwaGljc0NvbnRleHRDYWlybzo6R3JhcGhpY3ND
b250ZXh0Q2Fpcm8oUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCkKK0dyYXBo
aWNzQ29udGV4dENhaXJvOjpHcmFwaGljc0NvbnRleHRDYWlybyhHcmFwaGljc0NvbnRleHRDYWly
byogcGxhdGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0Q2Fpcm8ocGxhdGZvcm1D
b250ZXh0LT5jcigpKQogewogfQpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCBzZXRSR0JB
Qml0bWFwQWxwaGEodW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVk
IGNoYQogICAgICAgICBieXRlc1tpICsgM10gPSBsZXZlbDsKIH0KIAotc3RhdGljIHZvaWQgZHJh
d0JpdG1hcFRvQ29udGV4dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBESUJQaXhlbERhdGEmIHBpeGVsRGF0YSwgY29uc3QgSW50U2l6ZSYgdHJhbnNsYXRlKQor
c3RhdGljIHZvaWQgZHJhd0JpdG1hcFRvQ29udGV4dChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBESUJQaXhlbERhdGEmIHBpeGVsRGF0YSwgY29uc3QgSW50U2l6
ZSYgdHJhbnNsYXRlKQogewogICAgIC8vIE5lZWQgdG8gbWFrZSBhIGNhaXJvX3N1cmZhY2VfdCBv
dXQgb2YgdGhlIGJpdG1hcCdzIHBpeGVsIGJ1ZmZlciBhbmQgdGhlbiBkcmF3CiAgICAgLy8gaXQg
aW50byBvdXIgY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5jcHAKaW5kZXggYTQ1OTc1M2YxNzNlLi45ZjAzYThhMjA1YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC0zNSw3ICszNSw2
IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpZiBVU0UoQ0FJUk8pCiAjaW5jbHVk
ZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIK
ICNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCmluZGV4IDI4OTZjN2YzYjBkMi4uYzRmMzE2
OTIxY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFy
VGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJU
aGVtZUd0ay5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpZiAhVVNFKEdUSzQpCiAKICNpbmNsdWRl
ICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
Vmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWly
b1dpbi5jcHAKaW5kZXggMzMwZjA0ZjUyZGEyLi5hYmY5ODllOTQxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcApAQCAtMjgsNyAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiQml0bWFwSW5mby5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWly
by5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC0zOSwxMiAr
MzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIGRlYWxsb2NDb250ZXh0KFBs
YXRmb3JtQ29udGV4dENhaXJvKiB0YXJnZXQpCit2b2lkIGRlYWxsb2NDb250ZXh0KEdyYXBoaWNz
Q29udGV4dENhaXJvKiB0YXJnZXQpCiB7CiAgICAgZGVsZXRlIHRhcmdldDsKIH0KIAotR0RJT2Jq
ZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIFBsYXRmb3JtQ29u
dGV4dENhaXJvKiogdGFyZ2V0UmVmKQorR0RJT2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERD
IGRjLCBJbnRTaXplIHNpemUsIEdyYXBoaWNzQ29udGV4dENhaXJvKiogdGFyZ2V0UmVmKQogewog
ICAgIEJpdG1hcEluZm8gYm1wSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZShzaXplKTsKIApAQCAt
MTE5LDcgKzExOSw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYg
aW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSkKICAgICBpZiAoIWRzdERDKQogICAgICAgICBnb3Rv
IGV4aXQ7CiAKLSAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogdGFyZ2V0Q29udGV4dDsKKyAgICBH
cmFwaGljc0NvbnRleHRDYWlybyogdGFyZ2V0Q29udGV4dDsKICAgICBoYm1wID0gYWxsb2NJbWFn
ZShkc3REQy5nZXQoKSwgZHN0U2l6ZSwgJnRhcmdldENvbnRleHQpOwogICAgIGlmICghaGJtcCkK
ICAgICAgICAgZ290byBleGl0OwpAQCAtMTUzLDcgKzE1Myw3IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKICAgICBp
ZiAoIXdvcmtpbmdEQykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBQbGF0Zm9ybUNvbnRleHRD
YWlybyogZHJhd0NvbnRleHQgPSAwOworICAgIEdyYXBoaWNzQ29udGV4dENhaXJvKiBkcmF3Q29u
dGV4dCA9IDA7CiAgICAgYXV0byBoYm1wID0gYWxsb2NJbWFnZSh3b3JraW5nREMuZ2V0KCksIElu
dFNpemUoaW1nLT5zaXplKCkpLCAmZHJhd0NvbnRleHQpOwogICAgIGlmICghaGJtcCB8fCAhZHJh
d0NvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKaW5kZXggY2NmY2M2NjhmMWY1Li5jOGNjNWFh
OGZjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1h
Z2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFn
ZUNhaXJvLmNwcApAQCAtMzAsOCArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtQ29udGV4dENhaXJvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRD
YWlyby5oPgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFnZUNy
ZWF0ZUNhaXJvU3VyZmFjZShXS0ltYWdlUmVmIGltYWdlUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGVjNTFiYzIx
NjAwYy4uNjZiNTgwYzk4YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fp
cm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9DYWlyb09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0
aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDYWlyby5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0Ns
aWVudEd0ay5jcHAKaW5kZXggNzRmNDZjY2JmMTEzLi45MDg0ZGZiMDhiNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVu
dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0
ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkRhdGEuaD4KICNpbmNs
dWRlIDxjYWlyby5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCAzOTliMWU4MGEz
ZDguLjJmMjFmMmJlZjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC0zNyw3ICsz
Nyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDYWlyby5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAK
aW5kZXggZTM2ZTgxYTFhODMxLi45M2FhN2Q2YWUyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxjYWlyby13aW4zMi5oPgogI2VuZGlmCiAKQEAg
LTE3NTYsNyArMTc1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNwb29sUGFnZXMoSERDIHByaW50
REMsIFVJTlQgc3RhcnRQYWdlLCBVSU5UIGVuZFBhZ2UsIHZvaWQqIGN0CiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAgICAgfQogCi0gICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gcGxhdGZvcm1Db250
ZXh0KGNyKTsKKyAgICBHcmFwaGljc0NvbnRleHRDYWlybyBwbGF0Zm9ybUNvbnRleHQoY3IpOwog
ICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4ID0gJnBsYXRmb3JtQ29udGV4dDsKICAg
ICBjYWlyb19kZXN0cm95KGNyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXgg
NDA2MjM1NDY5NjZiLi40MzYwNTRmZDlkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
aApAQCAtNjAsOSArNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU09iamVj
dFJlZjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsK
ICNlbGlmIFVTRShDQUlSTykKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFBsYXRmb3JtQ29u
dGV4dENhaXJvOworY2xhc3MgR3JhcGhpY3NDb250ZXh0Q2Fpcm87CiB9Ci10eXBlZGVmIGNsYXNz
IFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Owor
dHlwZWRlZiBjbGFzcyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybyBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDsKICNlbmRpZgogCiBjbGFzcyBXZWJGcmFtZTsK
</data>
<flag name="commit-queue"
          id="455069"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432975</attachid>
            <date>2021-07-06 14:44:53 -0700</date>
            <delta_ts>2021-07-06 17:30:43 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>77017</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ2Fpcm8uY21ha2UKaW5kZXggMjM3ZWJmYmI4MDMzLi4xZmIwZTlk
NWNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlCkBAIC0xNiw3ICsxNiw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uaAogKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0IGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAppbmRleCAxOTdlMzNjZGMzNzUuLjYzMzI1MTE0
MWI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zNyw1
ICszNyw0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fp
cm8uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOTQ5YmJj
NGI0ZjguLjZiOWRkMTdiNTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU0LDkgKzU0LDkgQEAgY2xhc3MgUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQ7CiB0eXBlZGVmIFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dERpcmVj
dDJEIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYgVVNFKENBSVJPKQogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CitjbGFzcyBHcmFwaGljc0Nv
bnRleHRDYWlybzsKIH0KLXR5cGVkZWYgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8gUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQ7Cit0eXBlZGVmIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENh
aXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2Vsc2UKIHR5cGVkZWYgdm9pZCBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggN2ZhZTc3
N2MzOTY2Li41NmYwZDFiZjA2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDIsMTIgKzQy
LDEyIEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDYWly
by5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtMTczLDcgKzE3Myw3IEBAIGVudW0gUGF0aERyYXdpbmdT
dHlsZSB7CiAgICAgRmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyB2
b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgbGF5ZXJP
cmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hh
ZG93U3RhdGUpCitzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoR3JhcGhpY3NDb250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0
IEZsb2F0UG9pbnQmIGxheWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CiAg
ICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdp
biksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHsgc2hh
ZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxw
aGEsIFNoYWRvd1N0YXRlKCkpOwpAQCAtMTgxLDE0ICsxODEsMTQgQEAgc3RhdGljIHZvaWQgZHJh
d1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IEltYWdlQnUKIH0KIAogLy8gRklYTUU6IFRoaXMgaXMgbW9zdGx5IHNhbWUgYXMgZHJhd1NoYWRv
d0xheWVyQnVmZmVyLCBzbyB3ZSBzaG91bGQgbWVyZ2UgdHdvLgotc3RhdGljIHZvaWQgZHJhd1No
YWRvd0ltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVm
ZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3N0YXRpYyB2b2lk
IGRyYXdTaGFkb3dJbWFnZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJ
bWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAg
ICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSkpIHsKICAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1D
b250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0
ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBm
aWxsU2hhZG93QnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIElt
YWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29u
c3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkK
K3N0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGxh
eWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQogewogICAgIHNhdmUocGxhdGZvcm1Db250ZXh0KTsKIApAQCAtMjAzLDcg
KzIwMyw3IEBAIHN0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAgICAgcmVzdG9yZShwbGF0Zm9ybUNv
bnRleHQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJj
ZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBz
aGFkb3dTdGF0ZSwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCitzdGF0aWMgaW5saW5l
IHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJv
a2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgUGF0aERyYXdpbmdTdHls
ZSBkcmF3aW5nU3R5bGUpCiB7CiAgICAgU2hhZG93Qmx1ciBzaGFkb3coeyBzaGFkb3dTdGF0ZS5i
bHVyLCBzaGFkb3dTdGF0ZS5ibHVyIH0sIHNoYWRvd1N0YXRlLm9mZnNldCwgc2hhZG93U3RhdGUu
Y29sb3IsIHNoYWRvd1N0YXRlLmlnbm9yZVRyYW5zZm9ybXMpOwogICAgIGlmIChzaGFkb3cudHlw
ZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGCiB9CiAKIAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fp
cm9QYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxT
b3VyY2UmIGZpbGxTb3VyY2UpCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbEN1cnJlbnRDYWlyb1Bh
dGgoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJj
ZSYgZmlsbFNvdXJjZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigp
OwogICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyB2b2lkIGRy
YXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCog
c2NhbGVkRm9uCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFk
b3dTdGF0ZSwgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlLCBjb25zdCBGbG9h
dFNpemUmIHNoYWRvd09mZnNldCwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCwgZG91YmxlIHN5
bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYgZ2x5cGhzLCBG
b250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK3N0YXRpYyB2b2lkIGRyYXdHbHlw
aHNTaGFkb3coR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29s
b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRG
b250LCBkb3VibGUgc3ludGhldGljQm9sZE9mZnNldCwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBo
X3Q+JiBnbHlwaHMsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewogICAg
IFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9
LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25v
cmVUcmFuc2Zvcm1zKTsKICAgICBpZiAoIXRleHREcmF3aW5nTW9kZS5jb250YWlucyhUZXh0RHJh
d2luZ01vZGU6OkZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cp
CkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGJvb2wgY2Fpcm9TdXJmYWNlSGFzQWxwaGEoY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlKQogLy8gRklYTUU6IEZpeCBHcmFwaGljc0NvbnRleHQ6OmNv
bXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKQogLy8gdG8gYmUgYSBz
dGF0aWMgcHVibGljIGZ1bmN0aW9uIHRoYXQgb3BlcmF0ZXMgb24gQ1RNIGFuZCBzdHJva2VUaGlj
a25lc3MKIC8vIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHVzaW5nIGFuIHVuZGVybHlpbmcgR3JhcGhp
Y3NDb250ZXh0IG9iamVjdC4KLUZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlh
c2luZ01vZGVGb3JUZXh0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywgQ29sb3Im
IGNvbG9yLCBmbG9hdCBzdHJva2VUaGlja25lc3MpCitGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3Vu
ZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJp
bnRpbmcsIENvbG9yJiBjb2xvciwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQogewogICAgIEZsb2F0
UG9pbnQgb3JpZ2luID0gcG9pbnQ7CiAgICAgZmxvYXQgdGhpY2tuZXNzID0gc3RkOjptYXgoc3Ry
b2tlVGhpY2tuZXNzLCAwLjVmKTsKQEAgLTQ0NywxMiArNDQ3LDEyIEBAIHN0YXRpYyBWZWN0b3I8
RmxvYXRQb2ludD4gY2VudGVyTGluZUFuZEN1dE9mZkNvcm5lcnMoYm9vbCBpc1ZlcnRpY2FsTGlu
ZSwgZmxvYXQKIAogbmFtZXNwYWNlIFN0YXRlIHsKIAotdm9pZCBzZXRTdHJva2VUaGlja25lc3Mo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgc3Ryb2tlVGhpY2tu
ZXNzKQordm9pZCBzZXRTdHJva2VUaGlja25lc3MoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQogewogICAgIGNhaXJvX3NldF9saW5l
X3dpZHRoKHBsYXRmb3JtQ29udGV4dC5jcigpLCBzdHJva2VUaGlja25lc3MpOwogfQogCi12b2lk
IHNldFN0cm9rZVN0eWxlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIFN0
cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQordm9pZCBzZXRTdHJva2VTdHlsZShHcmFwaGljc0NvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkKIHsKICAg
ICBzdGF0aWMgY29uc3QgZG91YmxlIGRhc2hQYXR0ZXJuW10gPSB7IDUuMCwgNS4wIH07CiAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBkb3RQYXR0ZXJuW10gPSB7IDEuMCwgMS4wIH07CkBAIC00Nzgs
MTIgKzQ3OCwxMiBAQCB2b2lkIHNldFN0cm9rZVN0eWxlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eQogICAgIH0KIH0KIAotdm9pZCBz
ZXRDb21wb3NpdGVPcGVyYXRpb24oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQordm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGNhaXJvX3NldF9vcGVyYXRvcihwbGF0Zm9ybUNvbnRl
eHQuY3IoKSwgdG9DYWlyb09wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdGlvbiwgYmxlbmRNb2RlKSk7
CiB9CiAKLXZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGJvb2wgZW5hYmxlKQordm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgYm9vbCBlbmFibGUpCiB7CiAgICAgLy8g
V2hlbiB0cnVlLCB1c2UgdGhlIGRlZmF1bHQgQ2Fpcm8gYmFja2VuZCBhbnRpYWxpYXMgbW9kZSAo
dXN1YWxseSB0aGlzCiAgICAgLy8gZW5hYmxlcyBzdGFuZGFyZCAnZ3JheXNjYWxlJyBhbnRpYWxp
YXNpbmcpOyBmYWxzZSB0byBleHBsaWNpdGx5IGRpc2FibGUKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2
b2lkIHNldFNob3VsZEFudGlhbGlhcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBib29sIGVuYWJsZSkKICAgICBjYWlyb19zZXRfYW50aWFsaWFzKHBsYXRmb3JtQ29udGV4
dC5jcigpLCBlbmFibGUgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElB
U19OT05FKTsKIH0KIAotdm9pZCBzZXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2b2lkIHNldENUTShH
cmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSkKIHsKICAgICBjb25zdCBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0Nh
aXJvTWF0cml4KHRyYW5zZm9ybSk7CiAgICAgY2Fpcm9fc2V0X21hdHJpeChwbGF0Zm9ybUNvbnRl
eHQuY3IoKSwgJm1hdHJpeCk7CkBAIC01MDAsMjEgKzUwMCwyMSBAQCB2b2lkIHNldENUTShQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZgogICAgICAgICBncmFwaGljc0NvbnRleHRQcml2YXRlLT5zZXRDVE0odHJhbnNmb3Jt
KTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIGdldENUTShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0KQorQWZmaW5lVHJhbnNmb3JtIGdldENUTShHcmFwaGljc0NvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0KQogewogICAgIGNhaXJvX21hdHJpeF90IG07CiAgICAgY2Fpcm9f
Z2V0X21hdHJpeChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgJm0pOwogICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0obS54eCwgbS55eCwgbS54eSwgbS55eSwgbS54MCwgbS55MCk7CiB9CiAKLUludFJl
Y3QgZ2V0Q2xpcEJvdW5kcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQor
SW50UmVjdCBnZXRDbGlwQm91bmRzKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQpCiB7CiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwogICAgIGNhaXJvX2NsaXBfZXh0ZW50
cyhwbGF0Zm9ybUNvbnRleHQuY3IoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsKICAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKSk7CiB9
CiAKLUZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK0Zsb2F0UmVjdCByb3VuZFRv
RGV2aWNlUGl4ZWxzKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBGbG9hdFJlY3QgcmVzdWx0OwogICAgIGRvdWJsZSB4
ID0gcmVjdC54KCk7CkBAIC01NTIsNyArNTUyLDcgQEAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQ
aXhlbHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXQK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0KFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCitib29sIGlzQWNjZWxlcmF0ZWRDb250
ZXh0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgcmV0dXJu
IGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoY2Fpcm9fZ2V0X3RhcmdldChwbGF0Zm9ybUNvbnRleHQu
Y3IoKSkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9HTDsKIH0KQEAgLTYwNyw3ICs2MDcsNyBAQCBi
b29sIFNoYWRvd1N0YXRlOjppc1Zpc2libGUoKSBjb25zdAogICAgIHJldHVybiBjb2xvci5pc1Zp
c2libGUoKSAmJiAob2Zmc2V0LndpZHRoKCkgfHwgb2Zmc2V0LmhlaWdodCgpIHx8IGJsdXIpOwog
fQogCi1ib29sIFNoYWRvd1N0YXRlOjppc1JlcXVpcmVkKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQpIGNvbnN0Citib29sIFNoYWRvd1N0YXRlOjppc1JlcXVpcmVkKEdyYXBo
aWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gV2UgY2Fu
J3QgYXZvaWQgU2hhZG93Qmx1ciBpZiB0aGUgc2hhZG93IGhhcyBibHVyLgogICAgIGlmIChjb2xv
ci5pc1Zpc2libGUoKSAmJiBibHVyKQpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgU2hhZG93U3Rh
dGU6OmlzUmVxdWlyZWQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBzZXRMaW5lQ2FwKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIExpbmVDYXAgbGluZUNhcCkKK3ZvaWQgc2V0TGluZUNh
cChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBMaW5lQ2FwIGxpbmVDYXAp
CiB7CiAgICAgY2Fpcm9fbGluZV9jYXBfdCBjYWlyb0NhcCB7IH07CiAgICAgc3dpdGNoIChsaW5l
Q2FwKSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBzZXRMaW5lQ2FwKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIExpbmVDYXAgbGluZUNhcCkKICAgICBjYWlyb19zZXRf
bGluZV9jYXAocGxhdGZvcm1Db250ZXh0LmNyKCksIGNhaXJvQ2FwKTsKIH0KIAotdm9pZCBzZXRM
aW5lRGFzaChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBEYXNo
QXJyYXkmIGRhc2hlcywgZmxvYXQgZGFzaE9mZnNldCkKK3ZvaWQgc2V0TGluZURhc2goR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRGFzaEFycmF5JiBkYXNoZXMs
IGZsb2F0IGRhc2hPZmZzZXQpCiB7CiAgICAgaWYgKHN0ZDo6YWxsX29mKGRhc2hlcy5iZWdpbigp
LCBkYXNoZXMuZW5kKCksIFtdKGF1dG8mIGRhc2gpIHsgcmV0dXJuICFkYXNoOyB9KSkKICAgICAg
ICAgY2Fpcm9fc2V0X2Rhc2gocGxhdGZvcm1Db250ZXh0LmNyKCksIDAsIDAsIDApOwpAQCAtNjUx
LDcgKzY1MSw3IEBAIHZvaWQgc2V0TGluZURhc2goUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRGFzaEFycmF5JiBkYXNoZXMsCiAgICAgICAgIGNhaXJvX3NldF9k
YXNoKHBsYXRmb3JtQ29udGV4dC5jcigpLCBkYXNoZXMuZGF0YSgpLCBkYXNoZXMuc2l6ZSgpLCBk
YXNoT2Zmc2V0KTsKIH0KIAotdm9pZCBzZXRMaW5lSm9pbihQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBMaW5lSm9pbiBsaW5lSm9pbikKK3ZvaWQgc2V0TGluZUpvaW4oR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgTGluZUpvaW4gbGluZUpvaW4pCiB7
CiAgICAgY2Fpcm9fbGluZV9qb2luX3QgY2Fpcm9Kb2luIHsgfTsKICAgICBzd2l0Y2ggKGxpbmVK
b2luKSB7CkBAIC02NjgsMTIgKzY2OCwxMiBAQCB2b2lkIHNldExpbmVKb2luKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIExpbmVKb2luIGxpbmVKb2luKQogICAgIGNhaXJv
X3NldF9saW5lX2pvaW4ocGxhdGZvcm1Db250ZXh0LmNyKCksIGNhaXJvSm9pbik7CiB9CiAKLXZv
aWQgc2V0TWl0ZXJMaW1pdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBm
bG9hdCBtaXRlckxpbWl0KQordm9pZCBzZXRNaXRlckxpbWl0KEdyYXBoaWNzQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0IG1pdGVyTGltaXQpCiB7CiAgICAgY2Fpcm9fc2V0X21p
dGVyX2xpbWl0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBtaXRlckxpbWl0KTsKIH0KIAotdm9pZCBm
aWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0
YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZmlsbFJlY3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGaWxsU291cmNlJiBm
aWxsU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgY2Fpcm9f
dCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIApAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQg
ZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zCiAgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250
ZXh0LCBmaWxsU291cmNlKTsKIH0KIAotdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBmaWxsUmVjdChHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewog
ICAgIGlmIChzaGFkb3dTdGF0ZS5pc1Zpc2libGUoKSkgewogICAgICAgICBTaGFkb3dCbHVyIHNo
YWRvdyh7IHNoYWRvd1N0YXRlLmJsdXIsIHNoYWRvd1N0YXRlLmJsdXIgfSwgc2hhZG93U3RhdGUu
b2Zmc2V0LCBzaGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7
CkBAIC03MDQsNyArNzA0LDcgQEAgdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnMKICAgICBmaWxsUmVj
dFdpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQuY3IoKSwgcmVjdCwgY29sb3IpOwogfQogCi12b2lk
IGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY2Fpcm9fcGF0dGVybl90KiBwbGF0Zm9ybVBhdHRlcm4pCit2b2lkIGZp
bGxSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY2Fpcm9fcGF0dGVybl90KiBwbGF0Zm9ybVBhdHRlcm4pCiB7CiAgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIApAQCAtNzEzLDcgKzcxMyw3IEBAIHZv
aWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjYWlyCiAgICAgY2Fpcm9fZmlsbChjcik7CiB9CiAKLXZvaWQgZmls
bFJvdW5kZWRSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU2hhZG93
U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBmaWxsUm91bmRlZFJlY3QoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAg
aWYgKHNoYWRvd1N0YXRlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93
KHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZz
ZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKQEAg
LTc0NCw3ICs3NDQsNyBAQCB2b2lkIGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJvdW5kZWRSZQogICAgIGNhaXJvX3Jlc3Rv
cmUoY3IpOwogfQogCi12b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291
cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBj
b25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3Rh
dGUpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGxldmVyYWdlIHRoZSBzcGVjaWZpZWQg
Y29sb3IuCiAKQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UgogICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3VyY2Um
IGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZmlsbFBh
dGgoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0
aCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlKQogewogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKQEAg
LTc5Nyw3ICs3OTcsNyBAQCB2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbAogICAgIGZpbGxDdXJyZW50
Q2Fpcm9QYXRoKHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSk7CiB9CiAKLXZvaWQgc3Ryb2tl
UmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3Vy
Y2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgc3Ryb2tlUmVjdChHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGZsb2F0IGxpbmVXaWR0aCwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0
IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3Jt
Q29udGV4dC5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtODExLDcgKzgxMSw3IEBAIHZv
aWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGZsCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQg
c3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQ
YXRoJiBwYXRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93
U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBzdHJva2VQYXRoKEdyYXBoaWNzQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IFN0cm9rZVNvdXJjZSYg
c3Ryb2tlU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIApAQCAtODIxLDcgKzgyMSw3IEBAIHZv
aWQgc3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBQYXRoJiBwYXRoLCBjb25zdCBTCiAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKIH0KIAotdm9pZCBj
bGVhclJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0KQordm9pZCBjbGVhclJlY3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGNhaXJvX3QqIGNyID0g
cGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKQEAgLTgzMiw3ICs4MzIsNyBAQCB2b2lkIGNsZWFyUmVj
dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd0dseXBocyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxs
U291cmNlLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93U3Rh
dGUmIHNoYWRvd1N0YXRlLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2Zv
bnRfdCogc2NhbGVkRm9udCwgZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3Rv
cjxjYWlyb19nbHlwaF90PiYgZ2x5cGhzLCBmbG9hdCB4T2Zmc2V0LCBUZXh0RHJhd2luZ01vZGVG
bGFncyB0ZXh0RHJhd2luZ01vZGUsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgY29uc3QgRmxvYXRT
aXplJiBzaGFkb3dPZmZzZXQsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgRm9udFNtb290aGlu
Z01vZGUgZm9udFNtb290aGluZ01vZGUpCit2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29u
c3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dT
dGF0ZSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxl
ZEZvbnQsIGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5
cGhfdD4mIGdseXBocywgZmxvYXQgeE9mZnNldCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERy
YXdpbmdNb2RlLCBmbG9hdCBzdHJva2VUaGlja25lc3MsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRT
bW9vdGhpbmdNb2RlKQogewogICAgIGRyYXdHbHlwaHNTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBz
aGFkb3dTdGF0ZSwgdGV4dERyYXdpbmdNb2RlLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0NvbG9yLCBw
b2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCBmb250U21vb3Ro
aW5nTW9kZSk7CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwg
Y29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5z
YXZlKCk7CiAKQEAgLTg4OSwxMyArODg5LDEzIEBAIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzCiAg
ICAgcGxhdGZvcm1Db250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3UGF0dGVybihQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQordm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEZJ
WE1FOiBJbnZlc3RpZ2F0ZSB3aHkgdGhlIHNpemUgaGFzIHRvIGJlIHBhc3NlZCBpbiBhcyBhbiBJ
bnRSZWN0LgogICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNy
KCksIHN1cmZhY2UsIHNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9D
YWlyb09wZXJhdG9yKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1v
ZGUoKSksIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSwgZGVzdFJlY3QpOwogfQogCi12
b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBvcmlnaW5hbFNyY1JlY3QsIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYg
c2hhZG93U3RhdGUsIE9yaWVudGF0aW9uU2l6aW5nIG9yaWVudGF0aW9uU2l6aW5nKQordm9pZCBk
cmF3U3VyZmFjZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlLCBPcmllbnRhdGlvblNpemluZyBvcmllbnRhdGlvblNpemluZykKIHsKICAgICAvLyBB
dm9pZCBpbnZhbGlkIGNhaXJvIG1hdHJpeCB3aXRoIHNtYWxsIHZhbHVlcy4KICAgICBpZiAoc3Rk
OjpmYWJzKGRlc3RSZWN0LndpZHRoKCkpIDwgMC41ZiB8fCBzdGQ6OmZhYnMoZGVzdFJlY3QuaGVp
Z2h0KCkpIDwgMC41ZikKQEAgLTk4NSw3ICs5ODUsNyBAQCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdSZWN0KFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzLCBjb25zdCBDb2xvciYgZmlsbENvbG9yLCBTdHJva2VTdHlsZSBzdHJv
a2VTdHlsZSwgY29uc3QgQ29sb3ImIHN0cm9rZUNvbG9yKQordm9pZCBkcmF3UmVjdChHcmFwaGlj
c0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcywgY29uc3QgQ29sb3ImIGZpbGxDb2xvciwgU3Ryb2tlU3R5bGUg
c3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcikKIHsKICAgICAvLyBGSVhNRTog
aG93IHNob3VsZCBib3JkZXJUaGlja25lc3MgYmUgdXNlZD8KICAgICBVTlVTRURfUEFSQU0oYm9y
ZGVyVGhpY2tuZXNzKTsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgZHJhd1JlY3QoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBm
bG9hCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd0xpbmUoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludDIsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBjb25zdCBD
b2xvciYgc3Ryb2tlQ29sb3IsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgYm9vbCBzaG91bGRBbnRp
YWxpYXMpCit2b2lkIGRyYXdMaW5lKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBT
dHJva2VTdHlsZSBzdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImIHN0cm9rZUNvbG9yLCBmbG9hdCBz
dHJva2VUaGlja25lc3MsIGJvb2wgc2hvdWxkQW50aWFsaWFzKQogewogICAgIGJvb2wgaXNWZXJ0
aWNhbExpbmUgPSAocG9pbnQxLngoKSArIHN0cm9rZVRoaWNrbmVzcyA9PSBwb2ludDIueCgpKTsK
ICAgICBmbG9hdCBzdHJva2VXaWR0aCA9IGlzVmVydGljYWxMaW5lID8gcG9pbnQyLnkoKSAtIHBv
aW50MS55KCkgOiBwb2ludDIueCgpIC0gcG9pbnQxLngoKTsKQEAgLTEwNjQsNyArMTA2NCw3IEBA
IHZvaWQgZHJhd0xpbmUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjCiAgICAgICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY2Fp
cm9Db250ZXh0LCBDQUlST19BTlRJQUxJQVNfREVGQVVMVCk7CiB9CiAKLXZvaWQgZHJhd0xpbmVz
Rm9yVGV4dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdp
ZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVVbmRlcmxpbmVzLCBjb25zdCBDb2xvciYg
Y29sb3IpCit2b2lkIGRyYXdMaW5lc0ZvclRleHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHN0cm9rZVRoaWNrbmVz
cywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5k
ZXJsaW5lcywgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIENvbG9yIG1vZGlmaWVkQ29sb3Ig
PSBjb2xvcjsKICAgICBGbG9hdFJlY3QgYm91bmRzID0gY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRp
YWxpYXNpbmdNb2RlRm9yVGV4dChwbGF0Zm9ybUNvbnRleHQsIHBvaW50LCB3aWR0aHMubGFzdCgp
LCBwcmludGluZywgbW9kaWZpZWRDb2xvciwgc3Ryb2tlVGhpY2tuZXNzKTsKQEAgLTEwOTAsNyAr
MTA5MCw3IEBAIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7
CiB9CiAKLXZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERvY3VtZW50TWFya2Vy
TGluZVN0eWxlIHN0eWxlKQordm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKEdyYXBoaWNz
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9j
dW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCiB7CiAgICAgaWYgKHN0eWxlLm1vZGUgIT0gRG9j
dW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nCiAgICAgICAgICYmIHN0eWxlLm1v
ZGUgIT0gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkdyYW1tYXIpCkBAIC0xMTA4LDcg
KzExMDgsNyBAQCB2b2lkIGRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYQogICAgIGNhaXJvX3Jlc3RvcmUoY3Ip
OwogfQogCi12b2lkIGRyYXdFbGxpcHNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvciwgU3Ry
b2tlU3R5bGUgc3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvciwgZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzKQordm9pZCBkcmF3RWxsaXBzZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBmaWxsQ29s
b3IsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IsIGZs
b2F0IHN0cm9rZVRoaWNrbmVzcykKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dC5jcigpOwogCkBAIC0xMTMzLDcgKzExMzMsNyBAQCB2b2lkIGRyYXdFbGxpcHNlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgYwog
ICAgICAgICBjYWlyb19uZXdfcGF0aChjcik7CiB9CiAKLXZvaWQgZHJhd0ZvY3VzUmluZyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBmbG9h
dCB3aWR0aCwgY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBkcmF3Rm9jdXNSaW5nKEdyYXBoaWNz
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdp
ZHRoLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkcmF3
IHBhdGhzIHRoYXQgZGVzY3JpYmUgYSByZWN0YW5nbGUgd2l0aCByb3VuZGVkIGNvcm5lcnMKICAg
ICAvLyBzbyBhcyB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IHdlIGRyYXcgcmVjdGFuZ3VsYXIg
Zm9jdXMgcmluZ3MuCkBAIC0xMTYyLDcgKzExNjIsNyBAQCB2b2lkIGRyYXdGb2N1c1JpbmcoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgZmxv
YQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdGb2N1c1JpbmcoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4m
IHJlY3RzLCBmbG9hdCB3aWR0aCwgY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBkcmF3Rm9jdXNS
aW5nKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAg
ICBQYXRoIHBhdGg7CiAgICAgdW5zaWduZWQgcmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwpAQCAt
MTE3OCwyMyArMTE3OCwyMyBAQCB2b2lkIGRyYXdGb2N1c1JpbmcoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdAogICAgIGRyYXdGb2N1
c1JpbmcocGxhdGZvcm1Db250ZXh0LCBwYXRoLCB3aWR0aCwgY29sb3IpOwogfQogCi12b2lkIHNh
dmUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKK3ZvaWQgc2F2ZShHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQogewotICAgIHBsYXRmb3JtQ29udGV4
dC5zYXZlKCk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNhdmVJbnRlcm5hbCgpOwogCiAgICAgaWYg
KGF1dG8qIGdyYXBoaWNzQ29udGV4dFByaXZhdGUgPSBwbGF0Zm9ybUNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0UHJpdmF0ZSgpKQogICAgICAgICBncmFwaGljc0NvbnRleHRQcml2YXRlLT5zYXZlKCk7
CiB9CiAKLXZvaWQgcmVzdG9yZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
KQordm9pZCByZXN0b3JlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7
Ci0gICAgcGxhdGZvcm1Db250ZXh0LnJlc3RvcmUoKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQucmVz
dG9yZUludGVybmFsKCk7CiAKICAgICBpZiAoYXV0byogZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSA9
IHBsYXRmb3JtQ29udGV4dC5ncmFwaGljc0NvbnRleHRQcml2YXRlKCkpCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dFByaXZhdGUtPnJlc3RvcmUoKTsKIH0KIAotdm9pZCB0cmFuc2xhdGUoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKK3ZvaWQg
dHJhbnNsYXRlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0IHgs
IGZsb2F0IHkpCiB7CiAgICAgY2Fpcm9fdHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dC5jcigpLCB4
LCB5KTsKIApAQCAtMTIwMiw3ICsxMjAyLDcgQEAgdm9pZCB0cmFuc2xhdGUoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0UHJpdmF0ZS0+dHJhbnNsYXRlKHgsIHkpOwogfQogCi12b2lkIHJvdGF0ZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCBhbmdsZUluUmFkaWFu
cykKK3ZvaWQgcm90YXRlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZs
b2F0IGFuZ2xlSW5SYWRpYW5zKQogewogICAgIGNhaXJvX3JvdGF0ZShwbGF0Zm9ybUNvbnRleHQu
Y3IoKSwgYW5nbGVJblJhZGlhbnMpOwogCkBAIC0xMjEwLDcgKzEyMTAsNyBAQCB2b2lkIHJvdGF0
ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCBhbmdsZUluUmFk
aWFucykKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZS0+cm90YXRlKGFuZ2xlSW5SYWRp
YW5zKTsKIH0KIAotdm9pZCBzY2FsZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIHNjYWxlKEdyYXBoaWNzQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBjYWly
b19zY2FsZShwbGF0Zm9ybUNvbnRleHQuY3IoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKIApAQCAtMTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBzY2FsZShQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dFByaXZhdGUtPnNjYWxlKHNpemUpOwogfQogCi12b2lkIGNvbmNhdENUTShQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKK3ZvaWQgY29uY2F0Q1RNKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIGNvbnN0
IGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgodHJhbnNmb3JtKTsKICAgICBj
YWlyb190cmFuc2Zvcm0ocGxhdGZvcm1Db250ZXh0LmNyKCksICZtYXRyaXgpOwpAQCAtMTIyNywx
MyArMTIyNywxMyBAQCB2b2lkIGNvbmNhdENUTShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYQogICAgICAgICBncmFwaGljc0Nv
bnRleHRQcml2YXRlLT5jb25jYXRDVE0odHJhbnNmb3JtKTsKIH0KIAotdm9pZCBiZWdpblRyYW5z
cGFyZW5jeUxheWVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0
IG9wYWNpdHkpCit2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoR3JhcGhpY3NDb250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBjYWlyb19wdXNoX2dy
b3VwKHBsYXRmb3JtQ29udGV4dC5jcigpKTsKICAgICBwbGF0Zm9ybUNvbnRleHQubGF5ZXJzKCku
YXBwZW5kKG9wYWNpdHkpOwogfQogCi12b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCit2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVy
KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291cmNl
KGNyKTsKQEAgLTEyNDgsNyArMTI0OCw3IEBAIHN0YXRpYyB2b2lkIGRvQ2xpcFdpdGhBbnRpYWxp
YXMoY2Fpcm9fdCogY3IsIGNhaXJvX2FudGlhbGlhc190IGFudGlhbGlhcykKICAgICBjYWlyb19z
ZXRfYW50aWFsaWFzKGNyLCBzYXZlZEFudGlhbGlhc1J1bGUpOwogfQogCi12b2lkIGNsaXAoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5j
cigpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBjbGlwKFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZS0+Y2xpcChyZWN0KTsKIH0KIAotdm9p
ZCBjbGlwT3V0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3ZvaWQgY2xpcE91dChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBw
bGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7CkBAIC0xMjc5
LDcgKzEyNzksNyBAQCB2b2lkIGNsaXBPdXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGNhaXJvX3NldF9maWxsX3J1bGUo
Y3IsIHNhdmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIGNsaXBPdXQoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCkKK3ZvaWQgY2xpcE91dChHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoKQogewog
ICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgZG91YmxlIHgxLCB5
MSwgeDIsIHkyOwpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgdm9pZCBjbGlwT3V0KFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgY2Fpcm9f
c2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQgY2xpcFBhdGgoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgV2lu
ZFJ1bGUgY2xpcFJ1bGUpCit2b2lkIGNsaXBQYXRoKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIGNsaXBSdWxlKQogewogICAg
IGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKQEAgLTEzMTEsNyArMTMxMSw3
IEBAIHZvaWQgY2xpcFBhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0
ZS0+Y2xpcChwYXRoKTsKIH0KIAotdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihQbGF0Zm9ybUNvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIHBsYXRmb3JtQ29udGV4dC5wdXNoSW1hZ2VNYXNr
KGltYWdlLCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCmluZGV4IDNkZDkwMTM0ZDE0NS4u
N2RkOWFlNzJiMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBG
bG9hdFJlY3Q7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgRmxvYXRTaXplOwogY2xh
c3MgUGF0aDsKLWNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogCiBzdHJ1Y3QgR3JhcGhpY3ND
b250ZXh0U3RhdGU7CiAKQEAgLTU1LDE5ICs1NCwxOSBAQCBuYW1lc3BhY2UgQ2Fpcm8gewogCiBu
YW1lc3BhY2UgU3RhdGUgewogCi12b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIGZsb2F0KTsKLXZvaWQgc2V0U3Ryb2tlU3R5bGUoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBTdHJva2VTdHlsZSk7Cit2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhHcmFwaGljc0NvbnRl
eHRDYWlybyYsIGZsb2F0KTsKK3ZvaWQgc2V0U3Ryb2tlU3R5bGUoR3JhcGhpY3NDb250ZXh0Q2Fp
cm8mLCBTdHJva2VTdHlsZSk7CiAKLXZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci12b2lkIHNldFNo
b3VsZEFudGlhbGlhcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGJvb2wpOwordm9pZCBzZXRDb21w
b3NpdGVPcGVyYXRpb24oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKTsKK3ZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKEdyYXBoaWNzQ29udGV4dENhaXJv
JiwgYm9vbCk7CiAKLXZvaWQgc2V0Q1RNKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJik7Ci1BZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKFBsYXRmb3JtQ29udGV4dENh
aXJvJik7Cit2b2lkIHNldENUTShHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOworQWZmaW5lVHJhbnNmb3JtIGdldENUTShHcmFwaGljc0NvbnRleHRDYWlybyYp
OwogCi1JbnRSZWN0IGdldENsaXBCb3VuZHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKTsKLUZsb2F0
UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxv
YXRSZWN0Jik7CitJbnRSZWN0IGdldENsaXBCb3VuZHMoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mKTsK
K0Zsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29u
c3QgRmxvYXRSZWN0Jik7CiAKLWJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mKTsKK2Jvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoR3JhcGhpY3NDb250ZXh0Q2Fp
cm8mKTsKIAogfSAvLyBuYW1lc3BhY2UgU3RhdGUKIApAQCAtMTE1LDcgKzExNCw3IEBAIHN0cnVj
dCBTaGFkb3dTdGF0ZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhZG93U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3Q7Ci0gICAgYm9vbCBpc1JlcXVpcmVkKFBsYXRmb3JtQ29udGV4dENhaXJvJikgY29uc3Q7Cisg
ICAgYm9vbCBpc1JlcXVpcmVkKEdyYXBoaWNzQ29udGV4dENhaXJvJikgY29uc3Q7CiAKICAgICBG
bG9hdFNpemUgb2Zmc2V0OwogICAgIGZsb2F0IGJsdXIgeyAwIH07CkBAIC0xMjYsNTMgKzEyNSw1
MyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGUgewogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGdsb2JhbENv
bXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfTsKIH07CiAK
LXZvaWQgc2V0TGluZUNhcChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIExpbmVDYXApOwotdm9pZCBz
ZXRMaW5lRGFzaChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IERhc2hBcnJheSYsIGZsb2F0
KTsKLXZvaWQgc2V0TGluZUpvaW4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBMaW5lSm9pbik7Ci12
b2lkIHNldE1pdGVyTGltaXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBmbG9hdCk7Ci0KLXZvaWQg
ZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
aWxsU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZmlsbFJlY3QoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IFNoYWRv
d1N0YXRlJik7Ci12b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxv
YXRSZWN0JiwgY2Fpcm9fcGF0dGVybl90Kik7Ci12b2lkIGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9y
bUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIGNv
bnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYs
IGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBmaWxsUGF0aChQ
bGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBGaWxsU291cmNlJiwgY29u
c3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3Qg
UGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGNs
ZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwotCi12b2lk
IGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29u
c3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+
JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgQ29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7Ci0KLXZvaWQgZHJhd1BsYXRmb3JtSW1h
Z2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxv
YXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwgT3JpZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5n
ID0gT3JpZW50YXRpb25TaXppbmc6Ok5vcm1hbCk7Ci0KLXZvaWQgZHJhd1JlY3QoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJv
a2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKLXZvaWQgZHJhd0xpbmUoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFN0cm9rZVN0eWxlLCBj
b25zdCBDb2xvciYsIGZsb2F0LCBib29sKTsKLXZvaWQgZHJhd0xpbmVzRm9yVGV4dChQbGF0Zm9y
bUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0
IERhc2hBcnJheSYsIGJvb2wsIGJvb2wsIGNvbnN0IENvbG9yJik7Ci12b2lkIGRyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBE
b2N1bWVudE1hcmtlckxpbmVTdHlsZSk7Ci12b2lkIGRyYXdFbGxpcHNlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29u
c3QgQ29sb3ImLCBmbG9hdCk7Ci0KLXZvaWQgZHJhd0ZvY3VzUmluZyhQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNvbnN0IFBhdGgmLCBmbG9hdCwgY29uc3QgQ29sb3ImKTsKLXZvaWQgZHJhd0ZvY3Vz
UmluZyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxv
YXQsIGNvbnN0IENvbG9yJik7Ci0KLXZvaWQgc2F2ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwot
dm9pZCByZXN0b3JlKFBsYXRmb3JtQ29udGV4dENhaXJvJik7Ci0KLXZvaWQgdHJhbnNsYXRlKFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgZmxvYXQsIGZsb2F0KTsKLXZvaWQgcm90YXRlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgZmxvYXQpOwotdm9pZCBzY2FsZShQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNvbnN0IEZsb2F0U2l6ZSYpOwotdm9pZCBjb25jYXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLQotdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVy
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgZmxvYXQpOwotdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXll
cihQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwotCi12b2lkIGNsaXAoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKLXZvaWQgY2xpcE91dChQbGF0Zm9ybUNvbnRleHRDYWly
byYsIGNvbnN0IEZsb2F0UmVjdCYpOwotdm9pZCBjbGlwT3V0KFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY29uc3QgUGF0aCYpOwotdm9pZCBjbGlwUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNv
bnN0IFBhdGgmLCBXaW5kUnVsZSk7Ci0KLXZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKK3ZvaWQg
c2V0TGluZUNhcChHcmFwaGljc0NvbnRleHRDYWlybyYsIExpbmVDYXApOwordm9pZCBzZXRMaW5l
RGFzaChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KTsKK3Zv
aWQgc2V0TGluZUpvaW4oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBMaW5lSm9pbik7Cit2b2lkIHNl
dE1pdGVyTGltaXQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBmbG9hdCk7CisKK3ZvaWQgZmlsbFJl
Y3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGaWxsU291
cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZmlsbFJlY3QoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IFNoYWRvd1N0YXRl
Jik7Cit2b2lkIGZpbGxSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0
JiwgY2Fpcm9fcGF0dGVybl90Kik7Cit2b2lkIGZpbGxSb3VuZGVkUmVjdChHcmFwaGljc0NvbnRl
eHRDYWlybyYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IFNo
YWRvd1N0YXRlJik7Cit2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKEdyYXBoaWNzQ29udGV4
dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0
IEZpbGxTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBmaWxsUGF0aChHcmFwaGlj
c0NvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU2hh
ZG93U3RhdGUmKTsKK3ZvaWQgc3Ryb2tlUmVjdChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0
IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0
ZSYpOwordm9pZCBzdHJva2VQYXRoKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgUGF0aCYs
IGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGNsZWFyUmVj
dChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOworCit2b2lkIGRyYXdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ry
b2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9f
c2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxv
YXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
Q29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7CisKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25z
dCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHRDYWlybyYs
IGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1
cmZhY2UoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNv
bnN0IFNoYWRvd1N0YXRlJiwgT3JpZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5nID0gT3Jp
ZW50YXRpb25TaXppbmc6Ok5vcm1hbCk7CisKK3ZvaWQgZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHls
ZSwgY29uc3QgQ29sb3ImKTsKK3ZvaWQgZHJhd0xpbmUoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFN0cm9rZVN0eWxlLCBjb25zdCBD
b2xvciYsIGZsb2F0LCBib29sKTsKK3ZvaWQgZHJhd0xpbmVzRm9yVGV4dChHcmFwaGljc0NvbnRl
eHRDYWlybyYsIGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hB
cnJheSYsIGJvb2wsIGJvb2wsIGNvbnN0IENvbG9yJik7Cit2b2lkIGRyYXdEb3RzRm9yRG9jdW1l
bnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSk7Cit2b2lkIGRyYXdFbGxpcHNlKEdyYXBoaWNzQ29udGV4dENhaXJv
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29s
b3ImLCBmbG9hdCk7CisKK3ZvaWQgZHJhd0ZvY3VzUmluZyhHcmFwaGljc0NvbnRleHRDYWlybyYs
IGNvbnN0IFBhdGgmLCBmbG9hdCwgY29uc3QgQ29sb3ImKTsKK3ZvaWQgZHJhd0ZvY3VzUmluZyhH
cmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQsIGNv
bnN0IENvbG9yJik7CisKK3ZvaWQgc2F2ZShHcmFwaGljc0NvbnRleHRDYWlybyYpOwordm9pZCBy
ZXN0b3JlKEdyYXBoaWNzQ29udGV4dENhaXJvJik7CisKK3ZvaWQgdHJhbnNsYXRlKEdyYXBoaWNz
Q29udGV4dENhaXJvJiwgZmxvYXQsIGZsb2F0KTsKK3ZvaWQgcm90YXRlKEdyYXBoaWNzQ29udGV4
dENhaXJvJiwgZmxvYXQpOwordm9pZCBzY2FsZShHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0
IEZsb2F0U2l6ZSYpOwordm9pZCBjb25jYXRDVE0oR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKwordm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKEdyYXBo
aWNzQ29udGV4dENhaXJvJiwgZmxvYXQpOwordm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcihHcmFw
aGljc0NvbnRleHRDYWlybyYpOworCit2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBj
b25zdCBGbG9hdFJlY3QmKTsKK3ZvaWQgY2xpcE91dChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNv
bnN0IEZsb2F0UmVjdCYpOwordm9pZCBjbGlwT3V0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29u
c3QgUGF0aCYpOwordm9pZCBjbGlwUGF0aChHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IFBh
dGgmLCBXaW5kUnVsZSk7CisKK3ZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogfSAvLyBuYW1l
c3BhY2UgQ2Fpcm8KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDUzODBmOWVj
NmIzOC4uYTdhZjBjZWI1MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IlBhdHRlcm4uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUg
IlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3Bw
CmluZGV4IDllODJlNGEyZWVhOC4uYTQxYzY3OTc0MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcApAQCAt
MzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29s
b3JCbGVuZGluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGQ4Yzk0
Y2IwNzY4Zi4uNzQyYTNlNjMwZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBA
IC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAKICNpZiBQTEFURk9STShX
SU4pCkBAIC01NywxMSArNTYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGlj
c0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8oUmVmUHRyPGNhaXJvX3Q+JiYgY3Ip
Ci0gICAgOiBtX3BsYXRmb3JtQ29udGV4dChXVEZNb3ZlKGNyKSkKLSAgICAsIG1fcHJpdmF0ZSht
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRl
eHQuY3IoKSkpCisvLyBFbmNhcHN1bGF0ZXMgdGhlIGFkZGl0aW9uYWwgcGFpbnRpbmcgc3RhdGUg
aW5mb3JtYXRpb24gd2Ugc3RvcmUgZm9yIGVhY2gKKy8vIHB1c2hlZCBncmFwaGljcyBzdGF0ZS4K
K2NsYXNzIEdyYXBoaWNzQ29udGV4dENhaXJvOjpDYWlyb1N0YXRlIHsKK3B1YmxpYzoKKyAgICBD
YWlyb1N0YXRlKCkgPSBkZWZhdWx0OworCisgICAgc3RydWN0IHsKKyAgICAgICAgUmVmUHRyPGNh
aXJvX3BhdHRlcm5fdD4gcGF0dGVybjsKKyAgICAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4Owor
ICAgIH0gbV9tYXNrOworfTsKKworR3JhcGhpY3NDb250ZXh0Q2Fpcm86OkdyYXBoaWNzQ29udGV4
dENhaXJvKFJlZlB0cjxjYWlyb190PiYmIGNvbnRleHQpCisgICAgOiBtX2NyKFdURk1vdmUoY29u
dGV4dCkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU+KGNyKCkpKQogewotICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29u
dGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKKyAgICBtX2NhaXJvU3RhdGVTdGFjay5hcHBl
bmQoQ2Fpcm9TdGF0ZSgpKTsKKyAgICBtX2NhaXJvU3RhdGUgPSAmbV9jYWlyb1N0YXRlU3RhY2su
bGFzdCgpOwogfQogCiBHcmFwaGljc0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8o
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQpAQCAtNjksMTAgKzgxLDcgQEAgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OkdyYXBoaWNzQ29udGV4dENhaXJvKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkK
IHsKIH0KIAotR3JhcGhpY3NDb250ZXh0Q2Fpcm86On5HcmFwaGljc0NvbnRleHRDYWlybygpCi17
Ci0gICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShudWxscHRy
KTsKLX0KK0dyYXBoaWNzQ29udGV4dENhaXJvOjp+R3JhcGhpY3NDb250ZXh0Q2Fpcm8oKSA9IGRl
ZmF1bHQ7CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0Q2Fpcm86Omhhc1BsYXRmb3JtQ29udGV4dCgp
IGNvbnN0CiB7CkBAIC04NSwxNSArOTQsMTUgQEAgQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSkgY28KICAg
ICByZXR1cm4gQ2Fpcm86OlN0YXRlOjpnZXRDVE0oKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAot
UGxhdGZvcm1Db250ZXh0Q2Fpcm8qIEdyYXBoaWNzQ29udGV4dENhaXJvOjpwbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0Q2Fpcm8qIEdyYXBoaWNzQ29udGV4dENhaXJvOjpw
bGF0Zm9ybUNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiAmbV9wbGF0Zm9ybUNvbnRleHQ7
CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0Q2Fpcm8qPih0aGlzKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6c2F2ZSgpCiB7CiAgICAgR3JhcGhpY3NDb250
ZXh0OjpzYXZlKCk7Ci0gICAgQ2Fpcm86OnNhdmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBD
YWlybzo6c2F2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJlc3Rv
cmUoKQpAQCAtMTAyLDcgKzExMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJlc3Rv
cmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKTsK
LSAgICBDYWlybzo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOworICAgIENhaXJvOjpyZXN0
b3JlKCp0aGlzKTsKIH0KIAogLy8gRHJhd3MgYSBmaWxsZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJv
a2VkIGJvcmRlci4KQEAgLTExMCwxMyArMTE5LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
CiB7CiAgICAgQVNTRVJUKCFyZWN0LmlzRW1wdHkoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlz
LT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOworICAgIENhaXJvOjpkcmF3UmVjdCgqdGhpcywgcmVjdCwgYm9yZGVy
VGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJv
a2VDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgp
OwotICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2
ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86
OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKCp0aGlz
LCBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7
IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEs
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0
byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMTI2LDE0
ICsxMzUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmUoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdMaW5lKCpwbGF0
Zm9ybUNvbnRleHQoKSwgcG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMp
OworICAgIENhaXJvOjpkcmF3TGluZSgqdGhpcywgcG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9r
ZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5z
aG91bGRBbnRpYWxpYXMpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IHVzZWQgdG8gZHJh
dyB0aGUgbGl0dGxlIGNpcmNsZXMgdXNlZCBpbiBsaXN0cy4KIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdFbGxpcHNlKCpwbGF0Zm9ybUNv
bnRleHQoKSwgcmVjdCwgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUu
c3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CisgICAgQ2Fpcm86OmRyYXdFbGxp
cHNlKCp0aGlzLCByZWN0LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0
ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTE0Miw3ICsxNTEs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRo
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0g
ICAgQ2Fpcm86OmZpbGxQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fpcm86OkZpbGxT
b3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6Zmls
bFBhdGgoKnRoaXMsIHBhdGgsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRv
d1N0YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnN0cm9rZVBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTE1MSwxOCArMTYwLDE4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q2Fpcm86OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpzdHJva2VQ
YXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSks
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpzdHJva2VQYXRoKCp0aGlz
LCBwYXRoLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAg
Q2Fpcm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgQ2Fpcm86OkZpbGxTb3Vy
Y2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZmlsbFJl
Y3QoKnRoaXMsIHJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIENhaXJvOjpm
aWxsUmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUoKSkpOworICAgIENhaXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQpA
QCAtMTcyLDkgKzE4MSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIGlmICghcGF0dGVy
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2Fpcm86OnNhdmUobV9wbGF0Zm9ybUNvbnRleHQp
OwotICAgIENhaXJvOjpmaWxsUmVjdChtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCwgcGF0dGVybi5n
ZXQoKSk7Ci0gICAgQ2Fpcm86OnJlc3RvcmUobV9wbGF0Zm9ybUNvbnRleHQpOworICAgIENhaXJv
OjpzYXZlKCp0aGlzKTsKKyAgICBDYWlybzo6ZmlsbFJlY3QoKnRoaXMsIHJlY3QsIHBhdHRlcm4u
Z2V0KCkpOworICAgIENhaXJvOjpyZXN0b3JlKCp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQpAQCAtMTgyLDE5ICsxOTEsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIEMKICAg
ICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJl
dmlvdXNPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwogCi0gICAgQ2Fpcm86OlN0
YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24obV9wbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9w
ZXJhdG9yLCBibGVuZE1vZGUpOwotICAgIENhaXJvOjpmaWxsUmVjdChtX3BsYXRmb3JtQ29udGV4
dCwgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwotICAgIENhaXJvOjpT
dGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGxhdGZvcm1Db250ZXh0LCBwcmV2aW91c09w
ZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3Np
dGVPcGVyYXRpb24oKnRoaXMsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgIENh
aXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOworICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBwcmV2
aW91c09wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIENhaXJvOjpjbGlw
KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7CisgICAgQ2Fpcm86OmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlwUGF0aChjb25zdCBQYXRoJiBw
YXRoLCBXaW5kUnVsZSBjbGlwUnVsZSkKIHsKLSAgICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3Jt
Q29udGV4dCgpLCBwYXRoLCBjbGlwUnVsZSk7CisgICAgQ2Fpcm86OmNsaXBQYXRoKCp0aGlzLCBw
YXRoLCBjbGlwUnVsZSk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNsaXBC
b3VuZHMoKSBjb25zdApAQCAtMjA1LDcgKzIxNCw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmNsaXBCb3VuZHMoKSBjb25zdAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkKIHsKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZm
ZXIobV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCp0aGlzLCBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQg
d2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMjE2LDcgKzIyNSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYg
cGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiAg
ICAgcmV0dXJuOwogI2Vsc2UKLSAgICBDYWlybzo6ZHJhd0ZvY3VzUmluZygqcGxhdGZvcm1Db250
ZXh0KCksIHBhdGgsIHdpZHRoLCBjb2xvcik7CisgICAgQ2Fpcm86OmRyYXdGb2N1c1JpbmcoKnRo
aXMsIHBhdGgsIHdpZHRoLCBjb2xvcik7CiAjZW5kaWYKIH0KIApAQCAtMjI4LDcgKzIzNyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZs
b2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3CiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiAgICAg
cmV0dXJuOwogI2Vsc2UKLSAgICBDYWlybzo6ZHJhd0ZvY3VzUmluZygqcGxhdGZvcm1Db250ZXh0
KCksIHJlY3RzLCB3aWR0aCwgY29sb3IpOworICAgIENhaXJvOjpkcmF3Rm9jdXNSaW5nKCp0aGlz
LCByZWN0cywgd2lkdGgsIGNvbG9yKTsKICNlbmRpZgogfQogCkBAIC0yMzYsMzIgKzI0NSwzMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBmbG9hdCB0aGljawogewogICAgIGlmICh3aWR0aHMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgQ2Fpcm86OmRyYXdMaW5lc0ZvclRleHQoKnBsYXRmb3JtQ29u
dGV4dCgpLCBwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxp
bmVzLCBtX3N0YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBDYWlybzo6ZHJhd0xpbmVzRm9yVGV4dCgq
dGhpcywgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5l
cywgbV9zdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKIHsKLSAgICBDYWlybzo6ZHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcigqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIHN0eWxlKTsKKyAgICBDYWlybzo6ZHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcigqdGhpcywgcmVjdCwgc3R5bGUpOwogfQogCiBGbG9hdFJl
Y3QgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQogewogICAgIFVOVVNFRF9QQVJB
TShyb3VuZGluZ01vZGUpOwotICAgIHJldHVybiBDYWlybzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQ
aXhlbHMoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0KTsKKyAgICByZXR1cm4gQ2Fpcm86OlN0YXRl
Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKCp0aGlzLCByZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB7Ci0gICAgQ2Fpcm86OnRy
YW5zbGF0ZSgqcGxhdGZvcm1Db250ZXh0KCksIHgsIHkpOworICAgIENhaXJvOjp0cmFuc2xhdGUo
KnRoaXMsIHgsIHkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjp1cGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6
c2V0U3Ryb2tlVGhpY2tuZXNzKG1fcGxhdGZvcm1Db250ZXh0LCBzdGF0ZS5zdHJva2VUaGlja25l
c3MpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcygqdGhpcywgc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKTsKIAogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VT
dHlsZShtX3BsYXRmb3JtQ29udGV4dCwgc3RhdGUuc3Ryb2tlU3R5bGUpOworICAgICAgICBDYWly
bzo6U3RhdGU6OnNldFN0cm9rZVN0eWxlKCp0aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7CiAKICAg
ICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSB7CiAgICAg
ICAgIGlmIChzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgewpAQCAtMjczLDg4ICsyODIs
ODggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGkKICAgICB9CiAKICAgICBpZiAoZmxhZ3MgJiBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKQotICAgICAgICBD
YWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BsYXRmb3JtQ29udGV4dCwgc3Rh
dGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSk7CisgICAgICAgIENhaXJvOjpT
dGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRv
ciwgc3RhdGUuYmxlbmRNb2RlKTsKIAogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hv
dWxkQW50aWFsaWFzKG1fcGxhdGZvcm1Db250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwor
ICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcygqdGhpcywgc3RhdGUuc2hv
dWxkQW50aWFsaWFzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y29uY2F0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewotICAgIENhaXJvOjpjb25jYXRD
VE0oKnBsYXRmb3JtQ29udGV4dCgpLCB0cmFuc2Zvcm0pOworICAgIENhaXJvOjpjb25jYXRDVE0o
KnRoaXMsIHRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKLSAgICBDYWlybzo6U3RhdGU6
OnNldENUTSgqcGxhdGZvcm1Db250ZXh0KCksIHRyYW5zZm9ybSk7CisgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDVE0oKnRoaXMsIHRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsKICAgICBHcmFwaGlj
c0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7Ci0gICAgQ2Fpcm86OmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBvcGFjaXR5KTsKKyAgICBD
YWlybzo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcigqdGhpcywgb3BhY2l0eSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICAgICBHcmFw
aGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Ci0gICAgQ2Fpcm86OmVuZFRyYW5z
cGFyZW5jeUxheWVyKCpwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgQ2Fpcm86OmVuZFRyYW5zcGFy
ZW5jeUxheWVyKCp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y2xlYXJS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBDYWlybzo6Y2xlYXJSZWN0KCpwbGF0
Zm9ybUNvbnRleHQoKSwgcmVjdCk7CisgICAgQ2Fpcm86OmNsZWFyUmVjdCgqdGhpcywgcmVjdCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5z
dGF0ZSgpOwotICAgIENhaXJvOjpzdHJva2VSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwg
bGluZVdpZHRoLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CisgICAgQ2Fpcm86OnN0cm9rZVJlY3QoKnRoaXMsIHJlY3QsIGxpbmVXaWR0aCwg
Q2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNh
cCkKIHsKLSAgICBDYWlybzo6c2V0TGluZUNhcCgqcGxhdGZvcm1Db250ZXh0KCksIGxpbmVDYXAp
OworICAgIENhaXJvOjpzZXRMaW5lQ2FwKCp0aGlzLCBsaW5lQ2FwKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRDYWlybzo6c2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBkYXNoZXMsIGZs
b2F0IGRhc2hPZmZzZXQpCiB7Ci0gICAgQ2Fpcm86OnNldExpbmVEYXNoKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgZGFzaGVzLCBkYXNoT2Zmc2V0KTsKKyAgICBDYWlybzo6c2V0TGluZURhc2goKnRoaXMs
IGRhc2hlcywgZGFzaE9mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNl
dExpbmVKb2luKExpbmVKb2luIGxpbmVKb2luKQogewotICAgIENhaXJvOjpzZXRMaW5lSm9pbigq
cGxhdGZvcm1Db250ZXh0KCksIGxpbmVKb2luKTsKKyAgICBDYWlybzo6c2V0TGluZUpvaW4oKnRo
aXMsIGxpbmVKb2luKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6c2V0TWl0ZXJM
aW1pdChmbG9hdCBtaXRlcikKIHsKLSAgICBDYWlybzo6c2V0TWl0ZXJMaW1pdCgqcGxhdGZvcm1D
b250ZXh0KCksIG1pdGVyKTsKKyAgICBDYWlybzo6c2V0TWl0ZXJMaW1pdCgqdGhpcywgbWl0ZXIp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBh
dGgpCiB7Ci0gICAgQ2Fpcm86OmNsaXBPdXQoKnBsYXRmb3JtQ29udGV4dCgpLCBwYXRoKTsKKyAg
ICBDYWlybzo6Y2xpcE91dCgqdGhpcywgcGF0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OnJvdGF0ZShmbG9hdCByYWRpYW5zKQogewotICAgIENhaXJvOjpyb3RhdGUoKnBsYXRm
b3JtQ29udGV4dCgpLCByYWRpYW5zKTsKKyAgICBDYWlybzo6cm90YXRlKCp0aGlzLCByYWRpYW5z
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6c2NhbGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplKQogewotICAgIENhaXJvOjpzY2FsZSgqcGxhdGZvcm1Db250ZXh0KCksIHNpemUpOwor
ICAgIENhaXJvOjpzY2FsZSgqdGhpcywgc2l6ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIENhaXJvOjpjbGlw
T3V0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7CisgICAgQ2Fpcm86OmNsaXBPdXQoKnRoaXMs
IHJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUm91bmRlZFJlY3RJ
bXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
LSAgICBDYWlybzo6ZmlsbFJvdW5kZWRSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgY29s
b3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSk7CisgICAgQ2Fpcm86OmZpbGxSb3VuZGVk
UmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVS
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC0zNjMsNyArMzcyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0
YXRlKCk7Ci0gICAgQ2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSgqdGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0
ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dENhaXJvOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMzcyLDcgKzM4MSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwg
Y29uc3QgRmxvYXRTaXplCiAgICAgICAgIHJldHVybjsKIAogICAgIFVOVVNFRF9QQVJBTShzcGFj
aW5nKTsKLSAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRpdmVJ
bWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2VTaXplKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgQ2Fpcm86
OmRyYXdQYXR0ZXJuKCp0aGlzLCBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIElu
dFNpemUoaW1hZ2VTaXplKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgb3B0aW9ucyk7CiB9CiAKIFJlbmRlcmluZ01vZGUgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OnJlbmRlcmluZ01vZGUoKSBjb25zdApAQCAtNDAzLDEyICs0MTIsNzIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKgogICAgICAgICBmb250U21vb3RoaW5nID0gRm9udFNtb290aGluZ01vZGU6Ok5v
U21vb3RoaW5nOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJv
OjpkcmF3R2x5cGhzKG1fcGxhdGZvcm1Db250ZXh0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSks
IENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAorICAgIENhaXJvOjpkcmF3R2x5cGhzKCp0aGlz
LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAog
ICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3lu
dGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCiAgICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQs
IHN0YXRlLnNoYWRvd0NvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nKTsKIH0KIAorY2Fpcm9f
dCogR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jci5n
ZXQoKTsKK30KKworVmVjdG9yPGZsb2F0PiYgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmxheWVycygp
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJv
OjpzYXZlSW50ZXJuYWwoKQoreworICAgIG1fY2Fpcm9TdGF0ZVN0YWNrLmFwcGVuZChDYWlyb1N0
YXRlKCkpOworICAgIG1fY2Fpcm9TdGF0ZSA9ICZtX2NhaXJvU3RhdGVTdGFjay5sYXN0KCk7CisK
KyAgICBjYWlyb19zYXZlKG1fY3IuZ2V0KCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpyZXN0b3JlSW50ZXJuYWwoKQoreworICAgIGlmIChtX2NhaXJvU3RhdGVTdGFjay5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NhaXJvU3RhdGUtPm1fbWFzay5w
YXR0ZXJuKSB7CisgICAgICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UobV9jci5nZXQoKSk7
CisKKyAgICAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4OworICAgICAgICBjYWlyb19nZXRfbWF0
cml4KG1fY3IuZ2V0KCksICZtYXRyaXgpOworICAgICAgICBjYWlyb19zZXRfbWF0cml4KG1fY3Iu
Z2V0KCksICZtX2NhaXJvU3RhdGUtPm1fbWFzay5tYXRyaXgpOworICAgICAgICBjYWlyb19tYXNr
KG1fY3IuZ2V0KCksIG1fY2Fpcm9TdGF0ZS0+bV9tYXNrLnBhdHRlcm4uZ2V0KCkpOworICAgICAg
ICBjYWlyb19zZXRfbWF0cml4KG1fY3IuZ2V0KCksICZtYXRyaXgpOworICAgIH0KKworICAgIG1f
Y2Fpcm9TdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICBBU1NFUlQoIW1fY2Fpcm9TdGF0ZVN0
YWNrLmlzRW1wdHkoKSk7CisgICAgbV9jYWlyb1N0YXRlID0gJm1fY2Fpcm9TdGF0ZVN0YWNrLmxh
c3QoKTsKKworICAgIGNhaXJvX3Jlc3RvcmUobV9jci5nZXQoKSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OnB1c2hJbWFnZU1hc2soY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgLy8gV2UgbXVzdCBjYWxsIHNhdmVQbGF0Zm9y
bVN0YXRlIGF0IGxlYXN0IG9uY2UgYmVmb3JlIHdlIGNhbiB1c2UgaW1hZ2UgbWFza2luZywKKyAg
ICAvLyBzaW5jZSB3ZSBhY3R1YWxseSBhcHBseSB0aGUgbWFzayBpbiByZXN0b3JlUGxhdGZvcm1T
dGF0ZS4KKyAgICBBU1NFUlQoIW1fY2Fpcm9TdGF0ZVN0YWNrLmlzRW1wdHkoKSk7CisgICAgbV9j
YWlyb1N0YXRlLT5tX21hc2sucGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRl
X2Zvcl9zdXJmYWNlKHN1cmZhY2UpKTsKKyAgICBjYWlyb19nZXRfbWF0cml4KG1fY3IuZ2V0KCks
ICZtX2NhaXJvU3RhdGUtPm1fbWFzay5tYXRyaXgpOworCisgICAgY2Fpcm9fbWF0cml4X3QgbWF0
cml4OworICAgIGNhaXJvX21hdHJpeF9pbml0X3RyYW5zbGF0ZSgmbWF0cml4LCAtcmVjdC54KCks
IC1yZWN0LnkoKSk7CisgICAgY2Fpcm9fcGF0dGVybl9zZXRfbWF0cml4KG1fY2Fpcm9TdGF0ZS0+
bV9tYXNrLnBhdHRlcm4uZ2V0KCksICZtYXRyaXgpOworCisgICAgY2Fpcm9fcHVzaF9ncm91cCht
X2NyLmdldCgpKTsKK30KKworR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBHcmFwaGlj
c0NvbnRleHRDYWlybzo6Z3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
VVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXggYmFjYWEzN2M2MTYzLi5k
MmJjNmY5NTYzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApAQCAtMjksNyArMjksNiBA
QAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAKIHR5cGVkZWYgc3RydWN0IF9jYWlybyBjYWly
b190OwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwpAQCAt
NDMsMTMgKzQyLDEzIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBHcmFwaGlj
c0NvbnRleHRDYWlybyhIREMsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7IC8vIEZJWE1FOiBUbyBi
ZSByZW1vdmVkLgotICAgIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dENhaXJvKFBsYXRmb3JtQ29u
dGV4dENhaXJvKik7CisgICAgZXhwbGljaXQgR3JhcGhpY3NDb250ZXh0Q2Fpcm8oR3JhcGhpY3ND
b250ZXh0Q2Fpcm8qKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0Q2Fp
cm8oKTsKIAogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAg
IEdyYXBoaWNzQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAog
ICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKQEAgLTExMyw4ICsxMTIsMjIgQEAg
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogZGVwcmVjYXRlZFBy
aXZhdGVDb250ZXh0KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorICAgIGNhaXJvX3QqIGNyKCkg
Y29uc3Q7CisgICAgVmVjdG9yPGZsb2F0PiYgbGF5ZXJzKCk7CisgICAgdm9pZCBzYXZlSW50ZXJu
YWwoKTsKKyAgICB2b2lkIHJlc3RvcmVJbnRlcm5hbCgpOworICAgIHZvaWQgcHVzaEltYWdlTWFz
ayhjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUqIGdyYXBoaWNzQ29udGV4dFByaXZhdGUoKTsKKwogcHJpdmF0ZToK
LSAgICBtdXRhYmxlIFBsYXRmb3JtQ29udGV4dENhaXJvIG1fcGxhdGZvcm1Db250ZXh0OworICAg
IFJlZlB0cjxjYWlyb190PiBtX2NyOworCisgICAgY2xhc3MgQ2Fpcm9TdGF0ZTsKKyAgICBDYWly
b1N0YXRlKiBtX2NhaXJvU3RhdGU7CisgICAgV1RGOjpWZWN0b3I8Q2Fpcm9TdGF0ZT4gbV9jYWly
b1N0YXRlU3RhY2s7CisKKyAgICAvLyBUcmFuc3BhcmVuY3kgbGF5ZXJzLgorICAgIFZlY3Rvcjxm
bG9hdD4gbV9sYXllcnM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlPiBtX3ByaXZhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJv
LmNwcAppbmRleCBkOTZiNWQ0N2Q2NmEuLmNjY2I1NzI0YTRjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0R0xDYWlyby5jcHAKQEAgLTMxLDExICszMSwxMSBAQAogI2lmIEVOQUJMRShXRUJHTCkg
JiYgVVNFKENBSVJPKQogCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIlBpeGVsQnVmZmVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIK
ICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCmluZGV4IGJmYzAw
MzU3ODk3My4uZmQzMWEwMjAxMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKQEAgLTI5LDggKzI5LDYgQEAKIAogI2lmIFVTRShDQUlS
TykKIAotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBlMGU5YWE3ZDAzNzUuLjk2Yzc2MTM1NDFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtMzgsNyArMzgsNiBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDYWlyby5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2ODdkMDk3YWUxLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29y
cG9yYXRpb24KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotCi0j
aWYgVVNFKENBSVJPKQotCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBFbmNhcHN1bGF0ZXMgdGhlIGFkZGl0aW9uYWwgcGFpbnRpbmcgc3RhdGUgaW5mb3Jt
YXRpb24gd2Ugc3RvcmUgZm9yIGVhY2gKLS8vIHB1c2hlZCBncmFwaGljcyBzdGF0ZS4KLWNsYXNz
IFBsYXRmb3JtQ29udGV4dENhaXJvOjpTdGF0ZSB7Ci1wdWJsaWM6Ci0gICAgU3RhdGUoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBzdHJ1Y3QgewotICAgICAgICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBw
YXR0ZXJuOwotICAgICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXg7Ci0gICAgfSBtX21hc2s7Ci19
OwotCi1QbGF0Zm9ybUNvbnRleHRDYWlybzo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8oUmVmUHRyPGNh
aXJvX3Q+JiYgY3IpCi0gICAgOiBtX2NyKFdURk1vdmUoY3IpKQotewotICAgIG1fc3RhdGVTdGFj
ay5hcHBlbmQoU3RhdGUoKSk7Ci0gICAgbV9zdGF0ZSA9ICZtX3N0YXRlU3RhY2subGFzdCgpOwot
fQotCi12b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpyZXN0b3JlKCkKLXsKLSAgICBpZiAobV9z
dGF0ZVN0YWNrLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fc3RhdGUt
Pm1fbWFzay5wYXR0ZXJuKSB7Ci0gICAgICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UobV9j
ci5nZXQoKSk7Ci0KLSAgICAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4OwotICAgICAgICBjYWly
b19nZXRfbWF0cml4KG1fY3IuZ2V0KCksICZtYXRyaXgpOwotICAgICAgICBjYWlyb19zZXRfbWF0
cml4KG1fY3IuZ2V0KCksICZtX3N0YXRlLT5tX21hc2subWF0cml4KTsKLSAgICAgICAgY2Fpcm9f
bWFzayhtX2NyLmdldCgpLCBtX3N0YXRlLT5tX21hc2sucGF0dGVybi5nZXQoKSk7Ci0gICAgICAg
IGNhaXJvX3NldF9tYXRyaXgobV9jci5nZXQoKSwgJm1hdHJpeCk7Ci0gICAgfQotCi0gICAgbV9z
dGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICBBU1NFUlQoIW1fc3RhdGVTdGFjay5pc0VtcHR5
KCkpOwotICAgIG1fc3RhdGUgPSAmbV9zdGF0ZVN0YWNrLmxhc3QoKTsKLQotICAgIGNhaXJvX3Jl
c3RvcmUobV9jci5nZXQoKSk7Ci19Ci0KLVBsYXRmb3JtQ29udGV4dENhaXJvOjp+UGxhdGZvcm1D
b250ZXh0Q2Fpcm8oKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OnNh
dmUoKQotewotICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoU3RhdGUoKSk7Ci0gICAgbV9zdGF0ZSA9
ICZtX3N0YXRlU3RhY2subGFzdCgpOwotCi0gICAgY2Fpcm9fc2F2ZShtX2NyLmdldCgpKTsKLX0K
LQotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6cHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNl
X3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICAvLyBXZSBtdXN0IGNh
bGwgc2F2ZVBsYXRmb3JtU3RhdGUgYXQgbGVhc3Qgb25jZSBiZWZvcmUgd2UgY2FuIHVzZSBpbWFn
ZSBtYXNraW5nLAotICAgIC8vIHNpbmNlIHdlIGFjdHVhbGx5IGFwcGx5IHRoZSBtYXNrIGluIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlLgotICAgIEFTU0VSVCghbV9zdGF0ZVN0YWNrLmlzRW1wdHkoKSk7
Ci0gICAgbV9zdGF0ZS0+bV9tYXNrLnBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19wYXR0ZXJuX2Ny
ZWF0ZV9mb3Jfc3VyZmFjZShzdXJmYWNlKSk7Ci0gICAgY2Fpcm9fZ2V0X21hdHJpeChtX2NyLmdl
dCgpLCAmbV9zdGF0ZS0+bV9tYXNrLm1hdHJpeCk7Ci0KLSAgICBjYWlyb19tYXRyaXhfdCBtYXRy
aXg7Ci0gICAgY2Fpcm9fbWF0cml4X2luaXRfdHJhbnNsYXRlKCZtYXRyaXgsIC1yZWN0LngoKSwg
LXJlY3QueSgpKTsKLSAgICBjYWlyb19wYXR0ZXJuX3NldF9tYXRyaXgobV9zdGF0ZS0+bV9tYXNr
LnBhdHRlcm4uZ2V0KCksICZtYXRyaXgpOwotCi0gICAgY2Fpcm9fcHVzaF9ncm91cChtX2NyLmdl
dCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFlNWUxODlhZDM2Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIFVTRShDQUlSTykKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUg
IlJlZlB0ckNhaXJvLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlOwotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOwotCi1u
YW1lc3BhY2UgQ2Fpcm8gewotc3RydWN0IEZpbGxTb3VyY2U7Ci1zdHJ1Y3QgU3Ryb2tlU291cmNl
Owotc3RydWN0IFNoYWRvd1N0YXRlOwotfQotCi0vLyBUaGlzIGNsYXNzIGhvbGRzIGluZm9ybWF0
aW9uIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgcHJpdmF0ZSB0byBHcmFwaGljc0NvbnRleHQsIGV4
Y2VwdCB0aGF0IHdlIHdhbnQgdG8gYWxsb3cgYWNjZXNzCi0vLyB0byBpdCBpbiBGb250IGFuZCBJ
bWFnZSBjb2RlLiBUaGlzIGFsbG93cyB1cyB0byBzZXBhcmF0ZSB0aGUgY29uY2VybnMgb2YgQ2Fp
cm8tc3BlY2lmaWMKLS8vIGNvZGUgZnJvbSB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhp
Y3NDb250ZXh0LgotCi1jbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybyB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8pOwotcHVibGljOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtQ29udGV4dENhaXJvKFJlZlB0
cjxjYWlyb190PiYmKTsKLSAgICB+UGxhdGZvcm1Db250ZXh0Q2Fpcm8oKTsKLQotICAgIGNhaXJv
X3QqIGNyKCkgY29uc3QgeyByZXR1cm4gbV9jci5nZXQoKTsgfQotCi0gICAgR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlKiBncmFwaGljc0NvbnRleHRQcml2YXRlKCkgeyByZXR1cm4gbV9n
cmFwaGljc0NvbnRleHRQcml2YXRlOyB9Ci0gICAgdm9pZCBzZXRHcmFwaGljc0NvbnRleHRQcml2
YXRlKEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogZ3JhcGhpY3NDb250ZXh0UHJpdmF0
ZSkgeyBtX2dyYXBoaWNzQ29udGV4dFByaXZhdGUgPSBncmFwaGljc0NvbnRleHRQcml2YXRlOyB9
Ci0KLSAgICBWZWN0b3I8ZmxvYXQ+JiBsYXllcnMoKSB7IHJldHVybiBtX2xheWVyczsgfQotCi0g
ICAgdm9pZCBzYXZlKCk7Ci0gICAgdm9pZCByZXN0b3JlKCk7Ci0KLSAgICB2b2lkIHB1c2hJbWFn
ZU1hc2soY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVmUHRyPGNhaXJvX3Q+IG1fY3I7Ci0KLSAgICAvLyBLZWVwaW5nIGEgcG9pbnRlciB0byBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgaGVyZSBlbmFibGVzIGNhbGxpbmcKLSAgICAv
LyBXaW5kb3dzLXNwZWNpZmljIG1ldGhvZHMgZnJvbSBDYWlyb09wZXJhdGlvbnMgKHdoZXJlIG9u
bHkgUGxhdGZvcm1Db250ZXh0Q2Fpcm8KLSAgICAvLyBjYW4gYmUgbGV2ZXJhZ2VkKS4KLSAgICBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSB7
IG51bGxwdHIgfTsKLQotICAgIGNsYXNzIFN0YXRlOwotICAgIFN0YXRlKiBtX3N0YXRlOwotICAg
IFdURjo6VmVjdG9yPFN0YXRlPiBtX3N0YXRlU3RhY2s7Ci0KLSAgICAvLyBUcmFuc3BhcmVuY3kg
bGF5ZXJzLgotICAgIFZlY3RvcjxmbG9hdD4gbV9sYXllcnM7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDViMDZiMzdiYWQ1
Ni4uY2YxZmNkZmUzODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQAogbmFtZXNwYWNlIE5p
Y29zaWEgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBsYXRmb3JtQ29udGV4dENhaXJv
JiBjb250ZXh0Rm9yUmVwbGF5KFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiBvcGVyYXRpb25SZXBs
YXkpCitHcmFwaGljc0NvbnRleHRDYWlybyYgY29udGV4dEZvclJlcGxheShQYWludGluZ09wZXJh
dGlvblJlcGxheSYgb3BlcmF0aW9uUmVwbGF5KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxQ
YWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvJj4ob3BlcmF0aW9uUmVwbGF5KS5wbGF0Zm9ybUNv
bnRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRl
eHRDYWlyby5jcHAKaW5kZXggOGQ0MjU3Njk5ZmM5Li40MTcwZjFlMjk0OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBh
aW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKQEAgLTM2
LDcgKzM2LDYgQEAKICNpbmNsdWRlICJOaWNvc2lhQnVmZmVyLmgiCiAjaW5jbHVkZSAiTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCIKICNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdPcGVy
YXRpb25SZXBsYXlDYWlyby5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAj
aW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPHV0
aWxpdHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ09w
ZXJhdGlvblJlcGxheUNhaXJvLmgKaW5kZXggN2Q4MWVlYjU5M2RlLi40ODRjZGRjYzdjMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYVBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ09wZXJhdGlv
blJlcGxheUNhaXJvLmgKQEAgLTI4LDIwICsyOCwxNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiTmljb3NpYVBhaW50aW5n
T3BlcmF0aW9uLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFBsYXRmb3JtQ29udGV4
dENhaXJvOwotfQotCiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIHN0cnVjdCBQYWludGluZ09wZXJh
dGlvblJlcGxheUNhaXJvIDogUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkgewotICAgIFBhaW50aW5n
T3BlcmF0aW9uUmVwbGF5Q2Fpcm8oV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCkKKyAgICBQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgIDogcGxhdGZvcm1D
b250ZXh0KHBsYXRmb3JtQ29udGV4dCkKICAgICB7IH0KIAotICAgIFdlYkNvcmU6OlBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQ7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRl
eCA1ZDE5NjA4MGNkZTQuLjQ3ZTI5OTM2MDdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaApAQCAtNDgs
NyArNDgsNiBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xh
c3MgRmxvYXRTaXplOwogY2xhc3MgUGF0aDsKLWNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwog
CiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9X
aW4uY3BwCmluZGV4IDJjYmY2ZDE5MGE5MS4uMWMzMGYzODNkYjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDYWlyb1dpbi5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OkdyYXBoaWNzQ29udGV4dENhaXJvKEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIHsKIH0KIAotR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OkdyYXBoaWNzQ29udGV4dENhaXJvKFBsYXRmb3JtQ29udGV4dENh
aXJvKiBwbGF0Zm9ybUNvbnRleHQpCitHcmFwaGljc0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm8oR3JhcGhpY3NDb250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdy
YXBoaWNzQ29udGV4dENhaXJvKHBsYXRmb3JtQ29udGV4dC0+Y3IoKSkKIHsKIH0KQEAgLTg0LDcg
Kzg0LDcgQEAgc3RhdGljIHZvaWQgc2V0UkdCQUJpdG1hcEFscGhhKHVuc2lnbmVkIGNoYXIqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBjaGEKICAgICAgICAgYnl0ZXNbaSArIDNdID0g
bGV2ZWw7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdCaXRtYXBUb0NvbnRleHQoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRElCUGl4ZWxEYXRhJiBwaXhlbERhdGEs
IGNvbnN0IEludFNpemUmIHRyYW5zbGF0ZSkKK3N0YXRpYyB2b2lkIGRyYXdCaXRtYXBUb0NvbnRl
eHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRElCUGl4ZWxE
YXRhJiBwaXhlbERhdGEsIGNvbnN0IEludFNpemUmIHRyYW5zbGF0ZSkKIHsKICAgICAvLyBOZWVk
IHRvIG1ha2UgYSBjYWlyb19zdXJmYWNlX3Qgb3V0IG9mIHRoZSBiaXRtYXAncyBwaXhlbCBidWZm
ZXIgYW5kIHRoZW4gZHJhdwogICAgIC8vIGl0IGludG8gb3VyIGNvbnRleHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGE0NTk3NTNmMTcz
ZS4uOWYwM2E4YTIwNWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNw
cAppbmRleCAyODk2YzdmM2IwZDIuLmM0ZjMxNjkyMWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaWYgIVVTRShHVEs0KQogCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZVNj
cm9sbGJhci5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDMzMGYwNGY1MmRhMi4u
YWJmOTg5ZTk0MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcElu
Zm8uaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNsdWRlICJIV25kREMuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgpAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBkZWFsbG9jQ29udGV4dChQbGF0Zm9ybUNvbnRleHRDYWlybyogdGFyZ2V0KQor
dm9pZCBkZWFsbG9jQ29udGV4dChHcmFwaGljc0NvbnRleHRDYWlybyogdGFyZ2V0KQogewogICAg
IGRlbGV0ZSB0YXJnZXQ7CiB9CiAKLUdESU9iamVjdDxIQklUTUFQPiBhbGxvY0ltYWdlKEhEQyBk
YywgSW50U2l6ZSBzaXplLCBQbGF0Zm9ybUNvbnRleHRDYWlybyoqIHRhcmdldFJlZikKK0dESU9i
amVjdDxIQklUTUFQPiBhbGxvY0ltYWdlKEhEQyBkYywgSW50U2l6ZSBzaXplLCBHcmFwaGljc0Nv
bnRleHRDYWlybyoqIHRhcmdldFJlZikKIHsKICAgICBCaXRtYXBJbmZvIGJtcEluZm8gPSBCaXRt
YXBJbmZvOjpjcmVhdGUoc2l6ZSk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBEcmFnSW1hZ2VSZWYg
c2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpCiAg
ICAgaWYgKCFkc3REQykKICAgICAgICAgZ290byBleGl0OwogCi0gICAgUGxhdGZvcm1Db250ZXh0
Q2Fpcm8qIHRhcmdldENvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0Q2Fpcm8qIHRhcmdldENv
bnRleHQ7CiAgICAgaGJtcCA9IGFsbG9jSW1hZ2UoZHN0REMuZ2V0KCksIGRzdFNpemUsICZ0YXJn
ZXRDb250ZXh0KTsKICAgICBpZiAoIWhibXApCiAgICAgICAgIGdvdG8gZXhpdDsKQEAgLTE1Myw3
ICsxNTMsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgaWYgKCF3b3JraW5nREMpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIGRyYXdDb250ZXh0ID0gMDsKKyAgICBH
cmFwaGljc0NvbnRleHRDYWlybyogZHJhd0NvbnRleHQgPSAwOwogICAgIGF1dG8gaGJtcCA9IGFs
bG9jSW1hZ2Uod29ya2luZ0RDLmdldCgpLCBJbnRTaXplKGltZy0+c2l6ZSgpKSwgJmRyYXdDb250
ZXh0KTsKICAgICBpZiAoIWhibXAgfHwgIWRyYXdDb250ZXh0KQogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3Bw
CmluZGV4IGNjZmNjNjY4ZjFmNS4uYzhjYzVhYThmY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKQEAgLTMwLDggKzMwLDcgQEAK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3Qu
aCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxjYWlyby5oPgog
CiBjYWlyb19zdXJmYWNlX3QqIFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoV0tJbWFnZVJlZiBp
bWFnZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJs
ZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJp
dG1hcENhaXJvLmNwcAppbmRleCBlYzUxYmMyMTYwMGMuLjY2YjU4MGM5OGFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9PcGVyYXRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENh
aXJvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDc0ZjQ2Y2NiZjEx
My4uOTA4NGRmYjA4YjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTM3
LDcgKzM3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWxlY3Rpb25EYXRhLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHAKaW5kZXggMzk5YjFlODBhM2Q4Li4yZjIxZjJiZWYzYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGUzNmU4MWExYTgzMS4uOTNhYTdkNmFl
Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgog
I2VsaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8
Y2Fpcm8td2luMzIuaD4KICNlbmRpZgogCkBAIC0xNzU2LDcgKzE3NTYsNyBAQCBIUkVTVUxUIFdl
YkZyYW1lOjpzcG9vbFBhZ2VzKEhEQyBwcmludERDLCBVSU5UIHN0YXJ0UGFnZSwgVUlOVCBlbmRQ
YWdlLCB2b2lkKiBjdAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0KIAotICAgIFBsYXRm
b3JtQ29udGV4dENhaXJvIHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgR3JhcGhpY3NDb250ZXh0
Q2Fpcm8gcGxhdGZvcm1Db250ZXh0KGNyKTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCog
cGN0eCA9ICZwbGF0Zm9ybUNvbnRleHQ7CiAgICAgY2Fpcm9fZGVzdHJveShjcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDQwNjIzNTQ2OTY2Yi4uNDM2MDU0ZmQ5ZGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTYwLDkgKzYwLDkgQEAgdHlwZWRlZiBz
dHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRl
eHQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZWxpZiBVU0UoQ0FJUk8pCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybzsKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dENhaXJvOwogfQotdHlwZWRlZiBjbGFzcyBXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWly
byBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKK3R5cGVkZWYgY2xhc3MgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Q2Fpcm8gUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKIAogY2xhc3Mg
V2ViRnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432992</attachid>
            <date>2021-07-06 17:30:57 -0700</date>
            <delta_ts>2021-07-07 12:44:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227721-20210707093055.patch</filename>
            <type>text/plain</type>
            <size>87615</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY2OGY3ZGEzYjU4ZmU1
NmRmODNlZDg1NDc4NmQ1MTU0MWUzMjUzNS4uNGIwZDJmMGZkMWJhOGNlMTdmMDQ4NGQ3YzQ1OTdh
NTg1ZTM4NTg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAyMS0wNy0wNiAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAgICAgICBbQ2Fpcm9d
IE1lcmdlIFBsYXRmb3JtQ29udGV4dENhaXJvIGludG8gR3JhcGhpY3NDb250ZXh0Q2Fpcm8KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsYXRmb3JtQ29u
dGV4dENhaXJvIHdhcyBpbnRyb2R1Y2VkIHRvIHNlcGFyYXRlIENhaXJvIHNwZWNpZmljCisgICAg
ICAgIGNvZGUgZnJvbSB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IGNs
YXNzLiBIb3dldmVyLAorICAgICAgICBHcmFwaGljc0NvbnRleHQgaXMgYSBhYnN0cmFjdCBjbGFz
cyBzaW5jZSByMjc4MDYyLiBBbmQsCisgICAgICAgIEdyYXBoaWNzQ29udGV4dENhaXJvIGlzIGEg
Q2Fpcm8gc3BlY2lmaWMgY29uY3JldGUgY2xhc3MuCisKKyAgICAgICAgU29tZSBtb2RpZmljYXRp
b25zIGFyZSBuZWVkZWQgdG8gbWVyZ2UgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gaW50bworICAgICAg
ICBHcmFwaGljc0NvbnRleHRDYWlyby4gUmVuYW1lZCBtX3N0YXRlIHRvIG1fY2Fpcm9TdGF0ZS4g
UmVuYW1lZAorICAgICAgICBzYXZlKCkgYW5kIHJlc3RvcmUoKSB0byBzYXZlSW50ZXJuYWwoKSBh
bmQgcmVzdG9yZUludGVybmFsKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWlyby5jbWFrZToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJh
d1NoYWRvd0xheWVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxTaGFkb3dCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhaXJvOjpmaWxsQ3VycmVudENhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6
ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6Y29tcHV0ZUxpbmVC
b3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWly
bzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6
U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6
c2V0U2hvdWxkQW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6c2V0
Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6Z2V0Q1RNKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6Z2V0Q2xpcEJvdW5kcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWlybzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2Fpcm86OlN0YXRlOjppc0FjY2VsZXJhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWlybzo6U2hhZG93U3RhdGU6OmlzUmVxdWlyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2Fpcm86OnNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnNldExpbmVEYXNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJD
b3JlOjpDYWlybzo6c2V0TWl0ZXJMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6Zmls
bFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxSb3VuZGVkUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpzdHJv
a2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpzdHJva2VQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhaXJvOjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWlybzo6ZHJhd1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWlybzo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd0Vs
bGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdGb2N1c1JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OnNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnJlc3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWlybzo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpzY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWlybzo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpl
bmRUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6Y2xpcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWlybzo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWly
bzo6Y2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpHcmFwaGljc0NvbnRleHRDYWlybyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6cGxhdGZvcm1Db250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpzYXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpyZXN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dENhaXJvOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDYWlybzo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWly
bzo6Y2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNs
aXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJv
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJv
OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENh
aXJvOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvOjpjb25jYXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q2Fpcm86OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRD
YWlybzo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzo6c3Ryb2tlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRDYWlybzo6c2V0TGluZUNhcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDYWlybzo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm86OnNldExpbmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENhaXJvOjpzZXRNaXRlckxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENhaXJvOjpjbGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJv
Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUm91bmRlZFJl
Y3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWly
bzo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86
OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpsYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNhdmVJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6cmVzdG9yZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpwdXNoSW1hZ2VNYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpncmFwaGljc0NvbnRl
eHRQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjp+R3Jh
cGhpY3NDb250ZXh0Q2Fpcm8pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRm
b3JtQ29udGV4dENhaXJvLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpjb250ZXh0Rm9yUmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdPcGVyYXRp
b25SZXBsYXlDYWlyby5oOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdPcGVyYXRpb25SZXBs
YXlDYWlybzo6UGFpbnRpbmdPcGVyYXRpb25SZXBsYXlDYWlybyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8pOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JpdG1hcFRvQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVhbGxvY0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6YWxsb2NJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorCiAyMDIxLTA3LTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIExpdmUgVGV4dCBzaG91bGQgbm90IGJlIHZpc2libGUgaW4gdmlkZW8g
dGh1bWJuYWlsIGltYWdlcyBiZWhpbmQgIlNraXAgQWQiIGJ1dHRvbiBvbiBZb3VUdWJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGEyYmQzZDUyOGI4ODk1ZWJkYjYzNmZmZGU2OTRjYTU4ZWRiOTM4NjIuLmYxMzJmZDA1
NGYzYTYzZDM0OWE3YTAzZjYzNTRhNDJmMDBiZGZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjEtMDctMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CisKKyAgICAgICAgW0NhaXJvXSBNZXJnZSBQbGF0Zm9ybUNvbnRleHRDYWlybyBpbnRvIEdyYXBo
aWNzQ29udGV4dENhaXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAq
IFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6CisKIDIwMjEt
MDctMDUgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KIAogICAgICAg
ICBbR1RLXSBLaW5ldGljIHNjcm9sbGluZyBpbnRlcmZlcmVzIHdpdGggZ2VzdHVyZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA1YzliNTNmM2JjNjc4M2I5Yjk3ZDhlOGIxZGFmZDMx
NjQ2YjdjYjE5Li41NjhjOWFiZWIzNWJkNjExYzNhN2I4ZjlmYmJlY2MxNWMzNTA0M2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDctMDYgIEZ1
amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW0NhaXJv
XSBNZXJnZSBQbGF0Zm9ybUNvbnRleHRDYWlybyBpbnRvIEdyYXBoaWNzQ29udGV4dENhaXJvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzcG9vbFBhZ2VzKToKKyAgICAgICAgKiBXZWJGcmFt
ZS5oOgorCiAyMDIxLTA2LTAzICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5dIFJlbW92ZSB1bnVzZWQgR3JhcGhpY3NDb250ZXh0OjpzaG91
bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2Fpcm8uY21ha2UKaW5k
ZXggMjM3ZWJmYmI4MDMzOGQzMTNkMmE1MWE3N2UyODMwOWQ3MDVmYmY2OS4uMWZiMGU5ZDVjZWUz
YjNkZjRlZTFlOTZlYjhkNzUwMTZhZDY4N2ZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2Fpcm8u
Y21ha2UKQEAgLTE2LDcgKzE2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bs
YXRmb3JtQ29udGV4dENhaXJvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJD
YWlyby5oCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXND
YWlyby50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CmluZGV4
IDE5N2UzM2NkYzM3NTM4YWM5MDBjODdkNTRkOWM2YzNmMzU2OWY1YWMuLjYzMzI1MTE0MWI0Yzcw
YmUxMjg2YWVlZTZiNmM3MzE3ZTM4YjI4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNDYWlyby50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291
cmNlc0NhaXJvLnR4dApAQCAtMzcsNSArMzcsNCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bnRSZWN0Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWly
by5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMTk0OWJiYzRiNGY4MTViNDk2MDJlNjdiODYyODBkYjlhNzM3YmVlYS4u
NmI5ZGQxN2I1NTVmYWI1MWVkY2JjNTE5OTc0MmUyNzFkMDViZDI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU0LDkg
KzU0LDkgQEAgY2xhc3MgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ7CiB0eXBlZGVmIFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dERpcmVjdDJEIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYg
VVNFKENBSVJPKQogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fp
cm87CitjbGFzcyBHcmFwaGljc0NvbnRleHRDYWlybzsKIH0KLXR5cGVkZWYgV2ViQ29yZTo6UGxh
dGZvcm1Db250ZXh0Q2Fpcm8gUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7Cit0eXBlZGVmIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dENhaXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2Vsc2UK
IHR5cGVkZWYgdm9pZCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0
aW9ucy5jcHAKaW5kZXggN2ZhZTc3N2MzOTY2YjRjNDg2ZGUyMjMyYjE5MTEzMjMxZmQ5MmRmMC4u
NTZmMGQxYmYwNjUyZWE0NGU2MzAxOTNkYjQ0OWQxNjZmZmM4MzM4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQYXRoLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNhaXJvLmg+CkBAIC0xNzMsNyArMTczLDcg
QEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsKICAgICBGaWxsQW5kU3Ryb2tlID0gRmlsbCArIFN0
cm9rZQogfTsKIAotc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25z
dCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3N0YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXll
ckJ1ZmZlcihHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZl
ciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgbGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0
U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAg
aWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpIHsKICAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250
ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBz
aGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CkBAIC0xODEsMTQgKzE4MSwx
NCBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdQogfQogCiAvLyBGSVhNRTogVGhpcyBpcyBtb3N0
bHkgc2FtZSBhcyBkcmF3U2hhZG93TGF5ZXJCdWZmZXIsIHNvIHdlIHNob3VsZCBtZXJnZSB0d28u
Ci1zdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlKQorc3RhdGljIHZvaWQgZHJhd1NoYWRvd0ltYWdlKEdyYXBoaWNzQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRl
JiBzaGFkb3dTdGF0ZSkKIHsKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2Uu
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewogICAgICAgICBkcmF3UGxh
dGZvcm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9w
ZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9
CiB9CiAKLXN0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UG9p
bnQmIGxheWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSwgY29uc3QgU2hhZG93
U3RhdGUmIHNoYWRvd1N0YXRlKQorc3RhdGljIHZvaWQgZmlsbFNoYWRvd0J1ZmZlcihHcmFwaGlj
c0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwg
Y29uc3QgRmxvYXRQb2ludCYgbGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXpl
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgc2F2ZShwbGF0Zm9ybUNv
bnRleHQpOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIHZvaWQgZmlsbFNoYWRvd0J1ZmZl
cihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYKICAg
ICByZXN0b3JlKHBsYXRmb3JtQ29udGV4dCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3
UGF0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
aWxsU291cmNlJiBmaWxsU291cmNlLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwg
Y29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBQYXRoRHJhd2luZ1N0eWxlIGRyYXdpbmdT
dHlsZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBjb25z
dCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0
YXRlLCBQYXRoRHJhd2luZ1N0eWxlIGRyYXdpbmdTdHlsZSkKIHsKICAgICBTaGFkb3dCbHVyIHNo
YWRvdyh7IHNoYWRvd1N0YXRlLmJsdXIsIHNoYWRvd1N0YXRlLmJsdXIgfSwgc2hhZG93U3RhdGUu
b2Zmc2V0LCBzaGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7
CiAgICAgaWYgKHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCkBAIC0yNjYs
NyArMjY2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEYKIH0KIAogCi1zdGF0aWMgaW5saW5l
IHZvaWQgZmlsbEN1cnJlbnRDYWlyb1BhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSkKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlKQogewogICAgIGNhaXJvX3QqIGNyID0g
cGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CkBAIC0zMTksNyArMzE5
LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBj
YWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb24KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGRy
YXdHbHlwaHNTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJh
d2luZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hh
ZG93Q29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjYWlyb19zY2FsZWRfZm9udF90KiBz
Y2FsZWRGb250LCBkb3VibGUgc3ludGhldGljQm9sZE9mZnNldCwgY29uc3QgVmVjdG9yPGNhaXJv
X2dseXBoX3Q+JiBnbHlwaHMsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQor
c3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIFRleHREcmF3aW5nTW9k
ZUZsYWdzIHRleHREcmF3aW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGNv
bnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNhaXJvX3Nj
YWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25z
dCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBocywgRm9udFNtb290aGluZ01vZGUgZm9udFNt
b290aGluZ01vZGUpCiB7CiAgICAgU2hhZG93Qmx1ciBzaGFkb3coeyBzaGFkb3dTdGF0ZS5ibHVy
LCBzaGFkb3dTdGF0ZS5ibHVyIH0sIHNoYWRvd1N0YXRlLm9mZnNldCwgc2hhZG93U3RhdGUuY29s
b3IsIHNoYWRvd1N0YXRlLmlnbm9yZVRyYW5zZm9ybXMpOwogICAgIGlmICghdGV4dERyYXdpbmdN
b2RlLmNvbnRhaW5zKFRleHREcmF3aW5nTW9kZTo6RmlsbCkgfHwgc2hhZG93LnR5cGUoKSA9PSBT
aGFkb3dCbHVyOjpOb1NoYWRvdykKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgYm9vbCBjYWly
b1N1cmZhY2VIYXNBbHBoYShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAvLyBGSVhNRTogRml4
IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dCgpCiAvLyB0byBiZSBhIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gdGhhdCBvcGVyYXRlcyBv
biBDVE0gYW5kIHN0cm9rZVRoaWNrbmVzcwogLy8gYXJndW1lbnRzIGluc3RlYWQgb2YgdXNpbmcg
YW4gdW5kZXJseWluZyBHcmFwaGljc0NvbnRleHQgb2JqZWN0LgotRmxvYXRSZWN0IGNvbXB1dGVM
aW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBi
b29sIHByaW50aW5nLCBDb2xvciYgY29sb3IsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykKK0Zsb2F0
UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KEdyYXBoaWNz
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBm
bG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywgQ29sb3ImIGNvbG9yLCBmbG9hdCBzdHJva2VUaGlj
a25lc3MpCiB7CiAgICAgRmxvYXRQb2ludCBvcmlnaW4gPSBwb2ludDsKICAgICBmbG9hdCB0aGlj
a25lc3MgPSBzdGQ6Om1heChzdHJva2VUaGlja25lc3MsIDAuNWYpOwpAQCAtNDQ3LDEyICs0NDcs
MTIgQEAgc3RhdGljIFZlY3RvcjxGbG9hdFBvaW50PiBjZW50ZXJMaW5lQW5kQ3V0T2ZmQ29ybmVy
cyhib29sIGlzVmVydGljYWxMaW5lLCBmbG9hdAogCiBuYW1lc3BhY2UgU3RhdGUgewogCi12b2lk
IHNldFN0cm9rZVRoaWNrbmVzcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
LCBmbG9hdCBzdHJva2VUaGlja25lc3MpCit2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhHcmFwaGlj
c0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCBzdHJva2VUaGlja25lc3MpCiB7
CiAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgocGxhdGZvcm1Db250ZXh0LmNyKCksIHN0cm9rZVRo
aWNrbmVzcyk7CiB9CiAKLXZvaWQgc2V0U3Ryb2tlU3R5bGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCit2b2lkIHNldFN0cm9r
ZVN0eWxlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIFN0cm9rZVN0eWxl
IHN0cm9rZVN0eWxlKQogewogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZGFzaFBhdHRlcm5bXSA9
IHsgNS4wLCA1LjAgfTsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGRvdFBhdHRlcm5bXSA9IHsg
MS4wLCAxLjAgfTsKQEAgLTQ3OCwxMiArNDc4LDEyIEBAIHZvaWQgc2V0U3Ryb2tlU3R5bGUoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5
CiAgICAgfQogfQogCi12b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRp
b24sIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgY2Fpcm9fc2V0X29w
ZXJhdG9yKHBsYXRmb3JtQ29udGV4dC5jcigpLCB0b0NhaXJvT3BlcmF0b3IoY29tcG9zaXRlT3Bl
cmF0aW9uLCBibGVuZE1vZGUpKTsKIH0KIAotdm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgYm9vbCBlbmFibGUpCit2b2lkIHNldFNo
b3VsZEFudGlhbGlhcyhHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBib29s
IGVuYWJsZSkKIHsKICAgICAvLyBXaGVuIHRydWUsIHVzZSB0aGUgZGVmYXVsdCBDYWlybyBiYWNr
ZW5kIGFudGlhbGlhcyBtb2RlICh1c3VhbGx5IHRoaXMKICAgICAvLyBlbmFibGVzIHN0YW5kYXJk
ICdncmF5c2NhbGUnIGFudGlhbGlhc2luZyk7IGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlzYWJsZQpA
QCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGJvb2wgZW5hYmxlKQogICAgIGNhaXJvX3NldF9hbnRp
YWxpYXMocGxhdGZvcm1Db250ZXh0LmNyKCksIGVuYWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZB
VUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwogfQogCi12b2lkIHNldENUTShQbGF0Zm9ybUNv
bnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKK3ZvaWQgc2V0Q1RNKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIGNvbnN0IGNhaXJvX21h
dHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgodHJhbnNmb3JtKTsKICAgICBjYWlyb19zZXRf
bWF0cml4KHBsYXRmb3JtQ29udGV4dC5jcigpLCAmbWF0cml4KTsKQEAgLTUwMCwyMSArNTAwLDIx
IEBAIHZvaWQgc2V0Q1RNKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dFByaXZh
dGUtPnNldENUTSh0cmFuc2Zvcm0pOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCitBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RN
KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgY2Fpcm9fbWF0
cml4X3QgbTsKICAgICBjYWlyb19nZXRfbWF0cml4KHBsYXRmb3JtQ29udGV4dC5jcigpLCAmbSk7
CiAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybShtLnh4LCBtLnl4LCBtLnh5LCBtLnl5LCBtLngw
LCBtLnkwKTsKIH0KIAotSW50UmVjdCBnZXRDbGlwQm91bmRzKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQpCitJbnRSZWN0IGdldENsaXBCb3VuZHMoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKIHsKICAgICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7CiAg
ICAgY2Fpcm9fY2xpcF9leHRlbnRzKHBsYXRmb3JtQ29udGV4dC5jcigpLCAmeDEsICZ5MSwgJngy
LCAmeTIpOwogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh4MSwgeTEsIHgy
IC0geDEsIHkyIC0geTEpKTsKIH0KIAotRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQorRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEZsb2F0UmVjdCBy
ZXN1bHQ7CiAgICAgZG91YmxlIHggPSByZWN0LngoKTsKQEAgLTU1Miw3ICs1NTIsNyBAQCBGbG9h
dFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGbG9hdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgaXNBY2Nl
bGVyYXRlZENvbnRleHQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKK2Jv
b2wgaXNBY2NlbGVyYXRlZENvbnRleHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCkKIHsKICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShjYWlyb19nZXRfdGFy
Z2V0KHBsYXRmb3JtQ29udGV4dC5jcigpKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0dMOwogfQpA
QCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgU2hhZG93U3RhdGU6OmlzVmlzaWJsZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbG9yLmlzVmlzaWJsZSgpICYmIChvZmZzZXQud2lkdGgoKSB8fCBvZmZzZXQu
aGVpZ2h0KCkgfHwgYmx1cik7CiB9CiAKLWJvb2wgU2hhZG93U3RhdGU6OmlzUmVxdWlyZWQoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkgY29uc3QKK2Jvb2wgU2hhZG93U3Rh
dGU6OmlzUmVxdWlyZWQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkgY29u
c3QKIHsKICAgICAvLyBXZSBjYW4ndCBhdm9pZCBTaGFkb3dCbHVyIGlmIHRoZSBzaGFkb3cgaGFz
IGJsdXIuCiAgICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpICYmIGJsdXIpCkBAIC02MjYsNyArNjI2
LDcgQEAgYm9vbCBTaGFkb3dTdGF0ZTo6aXNSZXF1aXJlZChQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIHNldExp
bmVDYXAoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgTGluZUNhcCBsaW5l
Q2FwKQordm9pZCBzZXRMaW5lQ2FwKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIExpbmVDYXAgbGluZUNhcCkKIHsKICAgICBjYWlyb19saW5lX2NhcF90IGNhaXJvQ2FwIHsg
fTsKICAgICBzd2l0Y2ggKGxpbmVDYXApIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIHNldExp
bmVDYXAoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgTGluZUNhcCBsaW5l
Q2FwKQogICAgIGNhaXJvX3NldF9saW5lX2NhcChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgY2Fpcm9D
YXApOwogfQogCi12b2lkIHNldExpbmVEYXNoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IERhc2hBcnJheSYgZGFzaGVzLCBmbG9hdCBkYXNoT2Zmc2V0KQordm9p
ZCBzZXRMaW5lRGFzaChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBEYXNoQXJyYXkmIGRhc2hlcywgZmxvYXQgZGFzaE9mZnNldCkKIHsKICAgICBpZiAoc3RkOjph
bGxfb2YoZGFzaGVzLmJlZ2luKCksIGRhc2hlcy5lbmQoKSwgW10oYXV0byYgZGFzaCkgeyByZXR1
cm4gIWRhc2g7IH0pKQogICAgICAgICBjYWlyb19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQuY3Io
KSwgMCwgMCwgMCk7CkBAIC02NTEsNyArNjUxLDcgQEAgdm9pZCBzZXRMaW5lRGFzaChQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBEYXNoQXJyYXkmIGRhc2hlcywK
ICAgICAgICAgY2Fpcm9fc2V0X2Rhc2gocGxhdGZvcm1Db250ZXh0LmNyKCksIGRhc2hlcy5kYXRh
KCksIGRhc2hlcy5zaXplKCksIGRhc2hPZmZzZXQpOwogfQogCi12b2lkIHNldExpbmVKb2luKFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIExpbmVKb2luIGxpbmVKb2luKQor
dm9pZCBzZXRMaW5lSm9pbihHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBM
aW5lSm9pbiBsaW5lSm9pbikKIHsKICAgICBjYWlyb19saW5lX2pvaW5fdCBjYWlyb0pvaW4geyB9
OwogICAgIHN3aXRjaCAobGluZUpvaW4pIHsKQEAgLTY2OCwxMiArNjY4LDEyIEBAIHZvaWQgc2V0
TGluZUpvaW4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgTGluZUpvaW4g
bGluZUpvaW4pCiAgICAgY2Fpcm9fc2V0X2xpbmVfam9pbihwbGF0Zm9ybUNvbnRleHQuY3IoKSwg
Y2Fpcm9Kb2luKTsKIH0KIAotdm9pZCBzZXRNaXRlckxpbWl0KFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0IG1pdGVyTGltaXQpCit2b2lkIHNldE1pdGVyTGltaXQo
R3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgbWl0ZXJMaW1pdCkK
IHsKICAgICBjYWlyb19zZXRfbWl0ZXJfbGltaXQocGxhdGZvcm1Db250ZXh0LmNyKCksIG1pdGVy
TGltaXQpOwogfQogCi12b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNv
dXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBmaWxsUmVjdChHcmFw
aGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dT
dGF0ZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogCkBAIC02
ODIsNyArNjgyLDcgQEAgdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnMKICAgICBmaWxsQ3VycmVudENh
aXJvUGF0aChwbGF0Zm9ybUNvbnRleHQsIGZpbGxTb3VyY2UpOwogfQogCi12b2lkIGZpbGxSZWN0
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUp
Cit2b2lkIGZpbGxSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTaGFkb3dTdGF0
ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgaWYgKHNoYWRvd1N0YXRlLmlzVmlzaWJsZSgpKSB7CiAg
ICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUu
Ymx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0
ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKQEAgLTcwNCw3ICs3MDQsNyBAQCB2b2lkIGZpbGxSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29ucwogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dC5jcigpLCByZWN0
LCBjb2xvcik7CiB9CiAKLXZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjYWlyb19wYXR0ZXJuX3QqIHBsYXRm
b3JtUGF0dGVybikKK3ZvaWQgZmlsbFJlY3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjYWlyb19wYXR0ZXJuX3QqIHBsYXRmb3Jt
UGF0dGVybikKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogCkBA
IC03MTMsNyArNzEzLDcgQEAgdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNhaXIKICAgICBjYWlyb19maWxs
KGNyKTsKIH0KIAotdm9pZCBmaWxsUm91bmRlZFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGZpbGxSb3VuZGVk
UmVjdChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFNoYWRvd1N0YXRlJiBz
aGFkb3dTdGF0ZSkKIHsKICAgICBpZiAoc2hhZG93U3RhdGUuaXNWaXNpYmxlKCkpIHsKICAgICAg
ICAgU2hhZG93Qmx1ciBzaGFkb3coeyBzaGFkb3dTdGF0ZS5ibHVyLCBzaGFkb3dTdGF0ZS5ibHVy
IH0sIHNoYWRvd1N0YXRlLm9mZnNldCwgc2hhZG93U3RhdGUuY29sb3IsIHNoYWRvd1N0YXRlLmln
bm9yZVRyYW5zZm9ybXMpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0
IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkK
K3ZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNo
YWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgbGV2
ZXJhZ2UgdGhlIHNwZWNpZmllZCBjb2xvci4KIApAQCAtNzg4LDcgKzc4OCw3IEBAIHZvaWQgZmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgRmxvYXRSCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZmlsbFBh
dGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0
aCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlKQordm9pZCBmaWxsUGF0aChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9y
bUNvbnRleHQuY3IoKTsKIApAQCAtNzk3LDcgKzc5Nyw3IEBAIHZvaWQgZmlsbFBhdGgoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgY29uc3Qg
RmlsCiAgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNl
KTsKIH0KIAotdm9pZCBzdHJva2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoLCBjb25zdCBTdHJv
a2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQor
dm9pZCBzdHJva2VSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoLCBjb25zdCBTdHJva2VTb3VyY2Um
IHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGNh
aXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CkBA
IC04MTEsNyArODExLDcgQEAgdm9pZCBzdHJva2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmwKICAgICBjYWlyb19yZXN0
b3JlKGNyKTsKIH0KIAotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IFN0cm9rZVNvdXJjZSYgc3Ryb2tl
U291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIHN0cm9rZVBhdGgo
R3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwg
Y29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFk
b3dTdGF0ZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogCkBA
IC04MjEsNyArODIxLDcgQEAgdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IFMKICAgICBjYWlyb19zdHJv
a2UoY3IpOwogfQogCi12b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIGNsZWFyUmVjdChHcmFwaGlj
c0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIApAQCAtODMyLDcgKzgz
Miw3IEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAot
dm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFN0cm9rZVNvdXJjZSYgc3Ryb2tlU291
cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250LCBkb3VibGUgc3ludGhldGljQm9s
ZE9mZnNldCwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiBnbHlwaHMsIGZsb2F0IHhPZmZz
ZXQsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSwgZmxvYXQgc3Ryb2tlVGhp
Y2tuZXNzLCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgY29uc3QgQ29sb3ImIHNoYWRv
d0NvbG9yLCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK3ZvaWQgZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291
cmNlJiBmaWxsU291cmNlLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3Qg
U2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9f
c2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCwgZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNv
bnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYgZ2x5cGhzLCBmbG9hdCB4T2Zmc2V0LCBUZXh0RHJh
d2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgY29u
c3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgRm9u
dFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUpCiB7CiAgICAgZHJhd0dseXBoc1NoYWRv
dyhwbGF0Zm9ybUNvbnRleHQsIHNoYWRvd1N0YXRlLCB0ZXh0RHJhd2luZ01vZGUsIHNoYWRvd09m
ZnNldCwgc2hhZG93Q29sb3IsIHBvaW50LCBzY2FsZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0
LCBnbHlwaHMsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIApAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQg
ZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
aWxsU291cmNlJiBmaWxsU291CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJh
d1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBm
bG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBk
cmF3UGxhdGZvcm1JbWFnZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMs
IGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAg
ICAgcGxhdGZvcm1Db250ZXh0LnNhdmUoKTsKIApAQCAtODg5LDEzICs4ODksMTMgQEAgdm9pZCBk
cmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
YWlyb19zdXJmYWNlX3QqIHMKICAgICBwbGF0Zm9ybUNvbnRleHQucmVzdG9yZSgpOwogfQogCi12
b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHdoeSB0aGUgc2l6ZSBoYXMgdG8g
YmUgcGFzc2VkIGluIGFzIGFuIEludFJlY3QuCiAgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4
dChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgc3VyZmFjZSwgc2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRv
cigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKSwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgp
LCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgT3JpZW50YXRpb25TaXppbmcgb3JpZW50
YXRpb25TaXppbmcpCit2b2lkIGRyYXdTdXJmYWNlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFNyY1JlY3QsIEludGVycG9sYXRpb25R
dWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIE9yaWVudGF0aW9uU2l6aW5nIG9yaWVudGF0aW9u
U2l6aW5nKQogewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGggc21hbGwg
dmFsdWVzLgogICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVmIHx8IHN0
ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtOTg1LDcgKzk4NSw3IEBAIHZv
aWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQg
ZHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MsIGNvbnN0IENvbG9yJiBmaWxsQ29s
b3IsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IpCit2
b2lkIGRyYXdSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzLCBjb25zdCBDb2xvciYgZmls
bENvbG9yLCBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImIHN0cm9rZUNvbG9y
KQogewogICAgIC8vIEZJWE1FOiBob3cgc2hvdWxkIGJvcmRlclRoaWNrbmVzcyBiZSB1c2VkPwog
ICAgIFVOVVNFRF9QQVJBTShib3JkZXJUaGlja25lc3MpOwpAQCAtMTAwNyw3ICsxMDA3LDcgQEAg
dm9pZCBkcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGZsb2EKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9p
ZCBkcmF3TGluZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgU3Ryb2tlU3R5bGUg
c3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvciwgZmxvYXQgc3Ryb2tlVGhpY2tu
ZXNzLCBib29sIHNob3VsZEFudGlhbGlhcykKK3ZvaWQgZHJhd0xpbmUoR3JhcGhpY3NDb250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludDIsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYg
c3Ryb2tlQ29sb3IsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgYm9vbCBzaG91bGRBbnRpYWxpYXMp
CiB7CiAgICAgYm9vbCBpc1ZlcnRpY2FsTGluZSA9IChwb2ludDEueCgpICsgc3Ryb2tlVGhpY2tu
ZXNzID09IHBvaW50Mi54KCkpOwogICAgIGZsb2F0IHN0cm9rZVdpZHRoID0gaXNWZXJ0aWNhbExp
bmUgPyBwb2ludDIueSgpIC0gcG9pbnQxLnkoKSA6IHBvaW50Mi54KCkgLSBwb2ludDEueCgpOwpA
QCAtMTA2NCw3ICsxMDY0LDcgQEAgdm9pZCBkcmF3TGluZShQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGMKICAgICAgICAgY2Fp
cm9fc2V0X2FudGlhbGlhcyhjYWlyb0NvbnRleHQsIENBSVJPX0FOVElBTElBU19ERUZBVUxUKTsK
IH0KIAotdm9pZCBkcmF3TGluZXNGb3JUZXh0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCBzdHJva2VUaGlja25lc3Ms
IGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZVVuZGVy
bGluZXMsIGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgZHJhd0xpbmVzRm9yVGV4dChHcmFwaGlj
c0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
ZmxvYXQgc3Ryb2tlVGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmlu
dGluZywgYm9vbCBkb3VibGVVbmRlcmxpbmVzLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
Q29sb3IgbW9kaWZpZWRDb2xvciA9IGNvbG9yOwogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBjb21w
dXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KHBsYXRmb3JtQ29udGV4dCwg
cG9pbnQsIHdpZHRocy5sYXN0KCksIHByaW50aW5nLCBtb2RpZmllZENvbG9yLCBzdHJva2VUaGlj
a25lc3MpOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgdm9pZCBkcmF3TGluZXNGb3JUZXh0KFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHAKICAg
ICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCit2b2lkIGRyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKIHsKICAgICBp
ZiAoc3R5bGUubW9kZSAhPSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6U3BlbGxpbmcK
ICAgICAgICAgJiYgc3R5bGUubW9kZSAhPSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6
R3JhbW1hcikKQEAgLTExMDgsNyArMTEwOCw3IEBAIHZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hCiAg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd0VsbGlwc2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgZmlsbENvbG9yLCBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImIHN0
cm9rZUNvbG9yLCBmbG9hdCBzdHJva2VUaGlja25lc3MpCit2b2lkIGRyYXdFbGxpcHNlKEdyYXBo
aWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGZpbGxDb2xvciwgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUsIGNvbnN0IENv
bG9yJiBzdHJva2VDb2xvciwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQogewogICAgIGNhaXJvX3Qq
IGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKQEAgLTExMzMsNyArMTEzMyw3IEBAIHZvaWQg
ZHJhd0VsbGlwc2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjCiAgICAgICAgIGNhaXJvX25ld19wYXRoKGNyKTsKIH0KIAotdm9p
ZCBkcmF3Rm9jdXNSaW5nKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIGRy
YXdGb2N1c1JpbmcoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
UGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGRyYXcgcGF0aHMgdGhhdCBkZXNjcmliZSBhIHJlY3RhbmdsZSB3aXRo
IHJvdW5kZWQgY29ybmVycwogICAgIC8vIHNvIGFzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cg
d2UgZHJhdyByZWN0YW5ndWxhciBmb2N1cyByaW5ncy4KQEAgLTExNjIsNyArMTE2Miw3IEBAIHZv
aWQgZHJhd0ZvY3VzUmluZyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBQYXRoJiBwYXRoLCBmbG9hCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQg
ZHJhd0ZvY3VzUmluZyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLCBjb25zdCBDb2xvciYgY29s
b3IpCit2b2lkIGRyYXdGb2N1c1JpbmcoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQogewogICAgIFBhdGggcGF0aDsKICAgICB1bnNpZ25lZCByZWN0Q291bnQg
PSByZWN0cy5zaXplKCk7CkBAIC0xMTc4LDIzICsxMTc4LDIzIEBAIHZvaWQgZHJhd0ZvY3VzUmlu
ZyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBWZWN0b3I8Rmxv
YXRSZWN0CiAgICAgZHJhd0ZvY3VzUmluZyhwbGF0Zm9ybUNvbnRleHQsIHBhdGgsIHdpZHRoLCBj
b2xvcik7CiB9CiAKLXZvaWQgc2F2ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0KQordm9pZCBzYXZlKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiB7
Ci0gICAgcGxhdGZvcm1Db250ZXh0LnNhdmUoKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2F2ZUlu
dGVybmFsKCk7CiAKICAgICBpZiAoYXV0byogZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSA9IHBsYXRm
b3JtQ29udGV4dC5ncmFwaGljc0NvbnRleHRQcml2YXRlKCkpCiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dFByaXZhdGUtPnNhdmUoKTsKIH0KIAotdm9pZCByZXN0b3JlKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQpCit2b2lkIHJlc3RvcmUoR3JhcGhpY3NDb250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCkKIHsKLSAgICBwbGF0Zm9ybUNvbnRleHQucmVzdG9yZSgpOworICAg
IHBsYXRmb3JtQ29udGV4dC5yZXN0b3JlSW50ZXJuYWwoKTsKIAogICAgIGlmIChhdXRvKiBncmFw
aGljc0NvbnRleHRQcml2YXRlID0gcGxhdGZvcm1Db250ZXh0LmdyYXBoaWNzQ29udGV4dFByaXZh
dGUoKSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZS0+cmVzdG9yZSgpOwogfQogCi12
b2lkIHRyYW5zbGF0ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9h
dCB4LCBmbG9hdCB5KQordm9pZCB0cmFuc2xhdGUoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBjYWlyb190cmFuc2xhdGUocGxh
dGZvcm1Db250ZXh0LmNyKCksIHgsIHkpOwogCkBAIC0xMjAyLDcgKzEyMDIsNyBAQCB2b2lkIHRy
YW5zbGF0ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5KQogICAgICAgICBncmFwaGljc0NvbnRleHRQcml2YXRlLT50cmFuc2xhdGUoeCwgeSk7
CiB9CiAKLXZvaWQgcm90YXRlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IGZsb2F0IGFuZ2xlSW5SYWRpYW5zKQordm9pZCByb3RhdGUoR3JhcGhpY3NDb250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgYW5nbGVJblJhZGlhbnMpCiB7CiAgICAgY2Fpcm9fcm90
YXRlKHBsYXRmb3JtQ29udGV4dC5jcigpLCBhbmdsZUluUmFkaWFucyk7CiAKQEAgLTEyMTAsNyAr
MTIxMCw3IEBAIHZvaWQgcm90YXRlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGZsb2F0IGFuZ2xlSW5SYWRpYW5zKQogICAgICAgICBncmFwaGljc0NvbnRleHRQcml2YXRl
LT5yb3RhdGUoYW5nbGVJblJhZGlhbnMpOwogfQogCi12b2lkIHNjYWxlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3ZvaWQgc2Nh
bGUoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRTaXpl
JiBzaXplKQogewogICAgIGNhaXJvX3NjYWxlKHBsYXRmb3JtQ29udGV4dC5jcigpLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogCkBAIC0xMjE4LDcgKzEyMTgsNyBAQCB2b2lkIHNjYWxl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZS0+c2NhbGUoc2l6ZSk7CiB9CiAK
LXZvaWQgY29uY2F0Q1RNKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQordm9pZCBjb25jYXRDVE0oR3JhcGhpY3ND
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0pCiB7CiAgICAgY29uc3QgY2Fpcm9fbWF0cml4X3QgbWF0cml4ID0gdG9DYWlyb01hdHJp
eCh0cmFuc2Zvcm0pOwogICAgIGNhaXJvX3RyYW5zZm9ybShwbGF0Zm9ybUNvbnRleHQuY3IoKSwg
Jm1hdHJpeCk7CkBAIC0xMjI3LDEzICsxMjI3LDEzIEBAIHZvaWQgY29uY2F0Q1RNKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJh
CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dFByaXZhdGUtPmNvbmNhdENUTSh0cmFuc2Zvcm0pOwog
fQogCi12b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXll
cihHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCBvcGFjaXR5KQog
ewogICAgIGNhaXJvX3B1c2hfZ3JvdXAocGxhdGZvcm1Db250ZXh0LmNyKCkpOwogICAgIHBsYXRm
b3JtQ29udGV4dC5sYXllcnMoKS5hcHBlbmQob3BhY2l0eSk7CiB9CiAKLXZvaWQgZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKK3ZvaWQg
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogICAgIGNhaXJv
X3BvcF9ncm91cF90b19zb3VyY2UoY3IpOwpAQCAtMTI0OCw3ICsxMjQ4LDcgQEAgc3RhdGljIHZv
aWQgZG9DbGlwV2l0aEFudGlhbGlhcyhjYWlyb190KiBjciwgY2Fpcm9fYW50aWFsaWFzX3QgYW50
aWFsaWFzKQogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3IsIHNhdmVkQW50aWFsaWFzUnVsZSk7
CiB9CiAKLXZvaWQgY2xpcChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0Lngo
KSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CkBAIC0xMjY2LDcgKzEy
NjYsNyBAQCB2b2lkIGNsaXAoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBncmFwaGljc0NvbnRleHRQcml2YXRlLT5j
bGlwKHJlY3QpOwogfQogCi12b2lkIGNsaXBPdXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBjbGlwT3V0KEdyYXBoaWNz
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
ICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogICAgIGRvdWJsZSB4MSwg
eTEsIHgyLCB5MjsKQEAgLTEyNzksNyArMTI3OSw3IEBAIHZvaWQgY2xpcE91dChQbGF0Zm9ybUNv
bnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
Y2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQgY2xpcE91
dChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRo
KQordm9pZCBjbGlwT3V0KEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IFBhdGgmIHBhdGgpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3Io
KTsKICAgICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lk
IGNsaXBPdXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0
aCYgcGF0aCkKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0K
IAotdm9pZCBjbGlwUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBjbGlwUnVsZSkKK3ZvaWQgY2xpcFBhdGgoR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1
bGUgY2xpcFJ1bGUpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsK
IApAQCAtMTMxMSw3ICsxMzExLDcgQEAgdm9pZCBjbGlwUGF0aChQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZQogICAgICAgICBn
cmFwaGljc0NvbnRleHRQcml2YXRlLT5jbGlwKHBhdGgpOwogfQogCi12b2lkIGNsaXBUb0ltYWdl
QnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZh
Y2VfdCogaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIGNsaXBUb0ltYWdl
QnVmZmVyKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZh
Y2VfdCogaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgcGxhdGZvcm1D
b250ZXh0LnB1c2hJbWFnZU1hc2soaW1hZ2UsIGRlc3RSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgK
aW5kZXggM2RkOTAxMzRkMTQ1YjNhNzA2ZWE1NTU0YWQyMDI4OTJhOTgxZTQ3MC4uN2RkOWFlNzJi
MzIzNWY1YTEwMzNhOTY2MzE2NTgxOTQ0ZGM1ZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTQ3
LDcgKzQ3LDYgQEAgY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNs
YXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFBhdGg7Ci1jbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybzsK
IAogc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOwogCkBAIC01NSwxOSArNTQsMTkgQEAgbmFt
ZXNwYWNlIENhaXJvIHsKIAogbmFtZXNwYWNlIFN0YXRlIHsKIAotdm9pZCBzZXRTdHJva2VUaGlj
a25lc3MoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBmbG9hdCk7Ci12b2lkIHNldFN0cm9rZVN0eWxl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgU3Ryb2tlU3R5bGUpOwordm9pZCBzZXRTdHJva2VUaGlj
a25lc3MoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBmbG9hdCk7Cit2b2lkIHNldFN0cm9rZVN0eWxl
KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgU3Ryb2tlU3R5bGUpOwogCi12b2lkIHNldENvbXBvc2l0
ZU9wZXJhdGlvbihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpOwotdm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBi
b29sKTsKK3ZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKEdyYXBoaWNzQ29udGV4dENhaXJvJiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Cit2b2lkIHNldFNob3VsZEFudGlhbGlhcyhH
cmFwaGljc0NvbnRleHRDYWlybyYsIGJvb2wpOwogCi12b2lkIHNldENUTShQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotQWZmaW5lVHJhbnNmb3JtIGdldENU
TShQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwordm9pZCBzZXRDVE0oR3JhcGhpY3NDb250ZXh0Q2Fp
cm8mLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKK0FmZmluZVRyYW5zZm9ybSBnZXRDVE0oR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mKTsKIAotSW50UmVjdCBnZXRDbGlwQm91bmRzKFBsYXRmb3JtQ29u
dGV4dENhaXJvJik7Ci1GbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOworSW50UmVjdCBnZXRDbGlwQm91bmRzKEdyYXBo
aWNzQ29udGV4dENhaXJvJik7CitGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhHcmFwaGlj
c0NvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi1ib29sIGlzQWNjZWxlcmF0ZWRD
b250ZXh0KFBsYXRmb3JtQ29udGV4dENhaXJvJik7Citib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0
KEdyYXBoaWNzQ29udGV4dENhaXJvJik7CiAKIH0gLy8gbmFtZXNwYWNlIFN0YXRlCiAKQEAgLTEx
NSw3ICsxMTQsNyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGUgewogICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYWRvd1N0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAgICBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0OwotICAgIGJvb2wgaXNSZXF1aXJlZChQbGF0Zm9ybUNvbnRl
eHRDYWlybyYpIGNvbnN0OworICAgIGJvb2wgaXNSZXF1aXJlZChHcmFwaGljc0NvbnRleHRDYWly
byYpIGNvbnN0OwogCiAgICAgRmxvYXRTaXplIG9mZnNldDsKICAgICBmbG9hdCBibHVyIHsgMCB9
OwpAQCAtMTI2LDUzICsxMjUsNTMgQEAgc3RydWN0IFNoYWRvd1N0YXRlIHsKICAgICBDb21wb3Np
dGVPcGVyYXRvciBnbG9iYWxDb21wb3NpdGVPcGVyYXRvciB7IENvbXBvc2l0ZU9wZXJhdG9yOjpT
b3VyY2VPdmVyIH07CiB9OwogCi12b2lkIHNldExpbmVDYXAoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBMaW5lQ2FwKTsKLXZvaWQgc2V0TGluZURhc2goUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25z
dCBEYXNoQXJyYXkmLCBmbG9hdCk7Ci12b2lkIHNldExpbmVKb2luKFBsYXRmb3JtQ29udGV4dENh
aXJvJiwgTGluZUpvaW4pOwotdm9pZCBzZXRNaXRlckxpbWl0KFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgZmxvYXQpOwotCi12b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lk
IGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNhaXJvX3BhdHRlcm5fdCopOwotdm9pZCBmaWxs
Um91bmRlZFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiwgY29uc3QgQ29sb3ImLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBmaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUm
KTsKLXZvaWQgZmlsbFBhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29u
c3QgRmlsbFNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIHN0cm9rZVJlY3QoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgU3Ryb2tl
U291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgc3Ryb2tlUGF0aChQbGF0Zm9ybUNv
bnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwotdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBG
bG9hdFJlY3QmKTsKLQotdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29u
c3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUsIGNvbnN0IFZl
Y3RvcjxjYWlyb19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgRm9udFNtb290aGluZ01vZGUpOwotCi12
b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFj
ZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1BhdHRl
cm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXpl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fp
cm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJw
b2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6
aW5nIG9wZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwotCi12b2lk
IGRyYXdSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQs
IGNvbnN0IENvbG9yJiwgU3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJik7Ci12b2lkIGRyYXdMaW5l
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImLCBmbG9hdCwgYm9vbCk7Ci12b2lkIGRyYXdM
aW5lc0ZvclRleHQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFBvaW50JiwgZmxv
YXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmLCBib29sLCBib29sLCBjb25zdCBDb2xvciYp
Owotdm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKFBsYXRmb3JtQ29udGV4dENhaXJvJiwg
Y29uc3QgRmxvYXRSZWN0JiwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpOwotdm9pZCBkcmF3RWxs
aXBzZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9y
JiwgU3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJiwgZmxvYXQpOwotCi12b2lkIGRyYXdGb2N1c1Jp
bmcoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgZmxvYXQsIGNvbnN0IENvbG9y
Jik7Ci12b2lkIGRyYXdGb2N1c1JpbmcoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBWZWN0
b3I8RmxvYXRSZWN0PiYsIGZsb2F0LCBjb25zdCBDb2xvciYpOwotCi12b2lkIHNhdmUoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mKTsKLXZvaWQgcmVzdG9yZShQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwot
Ci12b2lkIHRyYW5zbGF0ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGZsb2F0LCBmbG9hdCk7Ci12
b2lkIHJvdGF0ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGZsb2F0KTsKLXZvaWQgc2NhbGUoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFNpemUmKTsKLXZvaWQgY29uY2F0Q1RNKFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0KLXZvaWQgYmVn
aW5UcmFuc3BhcmVuY3lMYXllcihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGZsb2F0KTsKLXZvaWQg
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKTsKLQotdm9pZCBjbGlw
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7Ci12b2lkIGNsaXBPdXQo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKLXZvaWQgY2xpcE91dChQ
bGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmKTsKLXZvaWQgY2xpcFBhdGgoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwotCi12b2lkIGNsaXBUb0lt
YWdlQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3Qg
RmxvYXRSZWN0Jik7Cit2b2lkIHNldExpbmVDYXAoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBMaW5l
Q2FwKTsKK3ZvaWQgc2V0TGluZURhc2goR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBEYXNo
QXJyYXkmLCBmbG9hdCk7Cit2b2lkIHNldExpbmVKb2luKEdyYXBoaWNzQ29udGV4dENhaXJvJiwg
TGluZUpvaW4pOwordm9pZCBzZXRNaXRlckxpbWl0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgZmxv
YXQpOworCit2b2lkIGZpbGxSZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGZpbGxS
ZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3Im
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBmaWxsUmVjdChHcmFwaGljc0NvbnRleHRDYWly
byYsIGNvbnN0IEZsb2F0UmVjdCYsIGNhaXJvX3BhdHRlcm5fdCopOwordm9pZCBmaWxsUm91bmRl
ZFJlY3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29u
c3QgQ29sb3ImLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZShHcmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3Zv
aWQgZmlsbFBhdGgoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29uc3QgRmls
bFNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIHN0cm9rZVJlY3QoR3JhcGhpY3ND
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgU3Ryb2tlU291cmNl
JiwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgc3Ryb2tlUGF0aChHcmFwaGljc0NvbnRleHRD
YWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0
ZSYpOwordm9pZCBjbGVhclJlY3QoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJl
Y3QmKTsKKwordm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmls
bFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjxj
YWlyb19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgRm9udFNtb290aGluZ01vZGUpOworCit2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6aW5nIG9w
ZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOworCit2b2lkIGRyYXdS
ZWN0KEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQsIGNvbnN0
IENvbG9yJiwgU3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJik7Cit2b2lkIGRyYXdMaW5lKEdyYXBo
aWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBT
dHJva2VTdHlsZSwgY29uc3QgQ29sb3ImLCBmbG9hdCwgYm9vbCk7Cit2b2lkIGRyYXdMaW5lc0Zv
clRleHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhp
Y2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmLCBib29sLCBib29sLCBjb25zdCBDb2xvciYpOwordm9p
ZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY29uc3Qg
RmxvYXRSZWN0JiwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpOwordm9pZCBkcmF3RWxsaXBzZShH
cmFwaGljc0NvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgU3Ry
b2tlU3R5bGUsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworCit2b2lkIGRyYXdGb2N1c1JpbmcoR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgZmxvYXQsIGNvbnN0IENvbG9yJik7Cit2
b2lkIGRyYXdGb2N1c1JpbmcoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBWZWN0b3I8Rmxv
YXRSZWN0PiYsIGZsb2F0LCBjb25zdCBDb2xvciYpOworCit2b2lkIHNhdmUoR3JhcGhpY3NDb250
ZXh0Q2Fpcm8mKTsKK3ZvaWQgcmVzdG9yZShHcmFwaGljc0NvbnRleHRDYWlybyYpOworCit2b2lk
IHRyYW5zbGF0ZShHcmFwaGljc0NvbnRleHRDYWlybyYsIGZsb2F0LCBmbG9hdCk7Cit2b2lkIHJv
dGF0ZShHcmFwaGljc0NvbnRleHRDYWlybyYsIGZsb2F0KTsKK3ZvaWQgc2NhbGUoR3JhcGhpY3ND
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFNpemUmKTsKK3ZvaWQgY29uY2F0Q1RNKEdyYXBoaWNz
Q29udGV4dENhaXJvJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisKK3ZvaWQgYmVnaW5UcmFu
c3BhcmVuY3lMYXllcihHcmFwaGljc0NvbnRleHRDYWlybyYsIGZsb2F0KTsKK3ZvaWQgZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mKTsKKwordm9pZCBjbGlwKEdyYXBo
aWNzQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7Cit2b2lkIGNsaXBPdXQoR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKK3ZvaWQgY2xpcE91dChHcmFwaGlj
c0NvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmKTsKK3ZvaWQgY2xpcFBhdGgoR3JhcGhpY3NDb250
ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgV2luZFJ1bGUpOworCit2b2lkIGNsaXBUb0ltYWdlQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRS
ZWN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIENhaXJvCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
LmNwcAppbmRleCA1MzgwZjllYzZiMzgwOGU5ZTU2Nzk0NGE3MGQ1ZWI1ODc5NTYwOGFkLi5hN2Fm
MGNlYjUyNDkwNDA0MWVlMTJkNTFmODljNmRmMTZjYjM2MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTQyLDcg
KzQyLDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDllODJlNGEyZWVhODBkMjAzZTExZGUyN2JjNDUxY2Ey
ZjVkMWVkZjIuLmE0MWM2Nzk3NDBmN2Y1MzFhMjBjZWQxOTRkNzg0Y2EwNzFiNDM3ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRp
ZW50Q2Fpcm8uY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAKaW5kZXggZDhjOTRjYjA3NjhmY2QzNzA4ODcwZDU3OTQ4ZWM3MzMyYTNhNWI2ZS4uNzQy
YTNlNjMwZGUyZTAzZWMxMGQwYjQzM2I2NWQ1YzFjMjAxNTE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcApAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgog
CiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtNTcsMTEgKzU2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotR3JhcGhpY3NDb250ZXh0Q2Fpcm86OkdyYXBoaWNzQ29udGV4dENhaXJvKFJlZlB0
cjxjYWlyb190PiYmIGNyKQotICAgIDogbV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShjcikpCi0g
ICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpKQorLy8gRW5jYXBzdWxhdGVzIHRoZSBhZGRpdGlvbmFs
IHBhaW50aW5nIHN0YXRlIGluZm9ybWF0aW9uIHdlIHN0b3JlIGZvciBlYWNoCisvLyBwdXNoZWQg
Z3JhcGhpY3Mgc3RhdGUuCitjbGFzcyBHcmFwaGljc0NvbnRleHRDYWlybzo6Q2Fpcm9TdGF0ZSB7
CitwdWJsaWM6CisgICAgQ2Fpcm9TdGF0ZSgpID0gZGVmYXVsdDsKKworICAgIHN0cnVjdCB7Cisg
ICAgICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IHBhdHRlcm47CisgICAgICAgIGNhaXJvX21h
dHJpeF90IG1hdHJpeDsKKyAgICB9IG1fbWFzazsKK307CisKK0dyYXBoaWNzQ29udGV4dENhaXJv
OjpHcmFwaGljc0NvbnRleHRDYWlybyhSZWZQdHI8Y2Fpcm9fdD4mJiBjb250ZXh0KQorICAgIDog
bV9jcihXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihjcigpKSkKIHsKLSAgICBtX3BsYXRmb3JtQ29udGV4
dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9jYWly
b1N0YXRlU3RhY2suYXBwZW5kKENhaXJvU3RhdGUoKSk7CisgICAgbV9jYWlyb1N0YXRlID0gJm1f
Y2Fpcm9TdGF0ZVN0YWNrLmxhc3QoKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0Q2Fpcm86OkdyYXBo
aWNzQ29udGV4dENhaXJvKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKQEAgLTY5LDEwICs4MSw3
IEBAIEdyYXBoaWNzQ29udGV4dENhaXJvOjpHcmFwaGljc0NvbnRleHRDYWlybyhjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dENhaXJvOjp+R3JhcGhpY3ND
b250ZXh0Q2Fpcm8oKQotewotICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4
dFByaXZhdGUobnVsbHB0cik7Ci19CitHcmFwaGljc0NvbnRleHRDYWlybzo6fkdyYXBoaWNzQ29u
dGV4dENhaXJvKCkgPSBkZWZhdWx0OwogCiBib29sIEdyYXBoaWNzQ29udGV4dENhaXJvOjpoYXNQ
bGF0Zm9ybUNvbnRleHQoKSBjb25zdAogewpAQCAtODUsMTUgKzk0LDE1IEBAIEFmZmluZVRyYW5z
Zm9ybSBHcmFwaGljc0NvbnRleHRDYWlybzo6Z2V0Q1RNKEluY2x1ZGVEZXZpY2VTY2FsZSBpbmNs
dWRlU2NhbGUpIGNvCiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6Z2V0Q1RNKCpwbGF0Zm9ybUNv
bnRleHQoKSk7CiB9CiAKLVBsYXRmb3JtQ29udGV4dENhaXJvKiBHcmFwaGljc0NvbnRleHRDYWly
bzo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dENhaXJvKiBHcmFwaGlj
c0NvbnRleHRDYWlybzo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gJm1f
cGxhdGZvcm1Db250ZXh0OworICAgIHJldHVybiBjb25zdF9jYXN0PEdyYXBoaWNzQ29udGV4dENh
aXJvKj4odGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNhdmUoKQogewog
ICAgIEdyYXBoaWNzQ29udGV4dDo6c2F2ZSgpOwotICAgIENhaXJvOjpzYXZlKCpwbGF0Zm9ybUNv
bnRleHQoKSk7CisgICAgQ2Fpcm86OnNhdmUoKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpyZXN0b3JlKCkKQEAgLTEwMiw3ICsxMTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpyZXN0b3JlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlKCk7Ci0gICAgQ2Fpcm86OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgpKTsK
KyAgICBDYWlybzo6cmVzdG9yZSgqdGhpcyk7CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3Rh
bmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIuCkBAIC0xMTAsMTMgKzExOSwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IGJvcmRlclRoaWNrbmVzcwogewogICAgIEFTU0VSVCghcmVjdC5pc0VtcHR5KCkpOwogICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3Jt
Q29udGV4dCgpLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUu
c3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBDYWlybzo6ZHJhd1JlY3QoKnRo
aXMsIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VT
dHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJv
OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8mIHN0YXRl
ID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3Jt
Q29udGV4dCgpLCBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpkcmF3UGxh
dGZvcm1JbWFnZSgqdGhpcywgbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0
UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogLy8gVGhp
cyBpcyBvbmx5IHVzZWQgdG8gZHJhdyBib3JkZXJzLCBzbyB3ZSBzaG91bGQgbm90IGRyYXcgc2hh
ZG93cy4KQEAgLTEyNiwxNCArMTM1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJv
OjpkcmF3TGluZSgqcGxhdGZvcm1Db250ZXh0KCksIHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJv
a2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUu
c2hvdWxkQW50aWFsaWFzKTsKKyAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9p
bnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKIH0KIAogLy8gVGhpcyBtZXRob2QgaXMg
b25seSB1c2VkIHRvIGRyYXcgdGhlIGxpdHRsZSBjaXJjbGVzIHVzZWQgaW4gbGlzdHMuCiB2b2lk
IEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3RWxs
aXBzZSgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ry
b2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOworICAg
IENhaXJvOjpkcmF3RWxsaXBzZSgqdGhpcywgcmVjdCwgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5z
dHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CkBAIC0xNDIsNyArMTUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZmlsbFBhdGgo
Y29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpmaWxsUGF0aCgqcGxhdGZvcm1Db250ZXh0KCksIHBh
dGgsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7
CisgICAgQ2Fpcm86OmZpbGxQYXRoKCp0aGlzLCBwYXRoLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0
ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dENhaXJvOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0xNTEsMTggKzE2MCwxOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAg
ICBDYWlybzo6c3Ryb2tlUGF0aCgqcGxhdGZvcm1Db250ZXh0KCksIHBhdGgsIENhaXJvOjpTdHJv
a2VTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6
c3Ryb2tlUGF0aCgqdGhpcywgcGF0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSksIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlz
LT5zdGF0ZSgpOwotICAgIENhaXJvOjpmaWxsUmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgQ2Fpcm86OmZpbGxSZWN0KCp0aGlzLCByZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSks
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikK
IHsKLSAgICBDYWlybzo6ZmlsbFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBjb2xvciwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKCkpKTsKKyAgICBDYWlybzo6ZmlsbFJlY3QoKnRoaXMs
IHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUoKSkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRp
ZW50JiBncmFkaWVudCkKQEAgLTE3Miw5ICsxODEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkK
ICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIAotICAgIENhaXJvOjpzYXZlKG1f
cGxhdGZvcm1Db250ZXh0KTsKLSAgICBDYWlybzo6ZmlsbFJlY3QobV9wbGF0Zm9ybUNvbnRleHQs
IHJlY3QsIHBhdHRlcm4uZ2V0KCkpOwotICAgIENhaXJvOjpyZXN0b3JlKG1fcGxhdGZvcm1Db250
ZXh0KTsKKyAgICBDYWlybzo6c2F2ZSgqdGhpcyk7CisgICAgQ2Fpcm86OmZpbGxSZWN0KCp0aGlz
LCByZWN0LCBwYXR0ZXJuLmdldCgpKTsKKyAgICBDYWlybzo6cmVzdG9yZSgqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTE4MiwxOSArMTkxLDE5IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENvbXBv
c2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsK
IAotICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGxhdGZvcm1Db250
ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKLSAgICBDYWlybzo6ZmlsbFJlY3Qo
bV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKLSAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BsYXRmb3JtQ29u
dGV4dCwgcHJldmlvdXNPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIENhaXJvOjpT
dGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBjb21wb3NpdGVPcGVyYXRvciwgYmxl
bmRNb2RlKTsKKyAgICBDYWlybzo6ZmlsbFJlY3QoKnRoaXMsIHJlY3QsIGNvbG9yLCBDYWlybzo6
U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbigqdGhpcywgcHJldmlvdXNPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
LSAgICBDYWlybzo6Y2xpcCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QpOworICAgIENhaXJvOjpj
bGlwKCp0aGlzLCByZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y2xpcFBh
dGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgY2xpcFJ1bGUpCiB7Ci0gICAgQ2Fpcm86OmNs
aXBQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgY2xpcFJ1bGUpOworICAgIENhaXJvOjpj
bGlwUGF0aCgqdGhpcywgcGF0aCwgY2xpcFJ1bGUpOwogfQogCiBJbnRSZWN0IEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpjbGlwQm91bmRzKCkgY29uc3QKQEAgLTIwNSw3ICsyMTQsNyBAQCBJbnRSZWN0
IEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlwQm91bmRzKCkgY29uc3QKIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBidWZm
ZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86
OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CisgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1
ZmZlcigqdGhpcywgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3Qp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBh
dGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikK
QEAgLTIxNiw3ICsyMjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3Rm9jdXNS
aW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZgogICAgIFVOVVNFRF9Q
QVJBTShvZmZzZXQpOwogICAgIHJldHVybjsKICNlbHNlCi0gICAgQ2Fpcm86OmRyYXdGb2N1c1Jp
bmcoKnBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLCB3aWR0aCwgY29sb3IpOworICAgIENhaXJvOjpk
cmF3Rm9jdXNSaW5nKCp0aGlzLCBwYXRoLCB3aWR0aCwgY29sb3IpOwogI2VuZGlmCiB9CiAKQEAg
LTIyOCw3ICsyMzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3Rm9jdXNSaW5n
KGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgdwogICAgIFVOVVNFRF9QQVJB
TShvZmZzZXQpOwogICAgIHJldHVybjsKICNlbHNlCi0gICAgQ2Fpcm86OmRyYXdGb2N1c1Jpbmco
KnBsYXRmb3JtQ29udGV4dCgpLCByZWN0cywgd2lkdGgsIGNvbG9yKTsKKyAgICBDYWlybzo6ZHJh
d0ZvY3VzUmluZygqdGhpcywgcmVjdHMsIHdpZHRoLCBjb2xvcik7CiAjZW5kaWYKIH0KIApAQCAt
MjM2LDMyICsyNDUsMzIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmVzRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpY2sKIHsKICAgICBpZiAod2lk
dGhzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIENhaXJvOjpkcmF3TGluZXNGb3JU
ZXh0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGlu
ZywgZG91YmxlVW5kZXJsaW5lcywgbV9zdGF0ZS5zdHJva2VDb2xvcik7CisgICAgQ2Fpcm86OmRy
YXdMaW5lc0ZvclRleHQoKnRoaXMsIHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcs
IGRvdWJsZVVuZGVybGluZXMsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dENhaXJvOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCiB7Ci0gICAgQ2Fpcm86OmRy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBzdHlsZSk7
CisgICAgQ2Fpcm86OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoKnRoaXMsIHJlY3QsIHN0eWxl
KTsKIH0KIAogRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dENhaXJvOjpyb3VuZFRvRGV2aWNlUGl4
ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0ocm91bmRpbmdNb2RlKTsKLSAgICByZXR1cm4gQ2Fpcm86OlN0YXRl
Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7CisgICAgcmV0
dXJuIENhaXJvOjpTdGF0ZTo6cm91bmRUb0RldmljZVBpeGVscygqdGhpcywgcmVjdCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQog
ewotICAgIENhaXJvOjp0cmFuc2xhdGUoKnBsYXRmb3JtQ29udGV4dCgpLCB4LCB5KTsKKyAgICBD
YWlybzo6dHJhbnNsYXRlKCp0aGlzLCB4LCB5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRD
YWlybzo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBpZiAoZmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKQotICAgICAg
ICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcyhtX3BsYXRmb3JtQ29udGV4dCwgc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VUaGlj
a25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CiAKICAgICBpZiAoZmxhZ3MgJiBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpCi0gICAgICAgIENhaXJvOjpT
dGF0ZTo6c2V0U3Ryb2tlU3R5bGUobV9wbGF0Zm9ybUNvbnRleHQsIHN0YXRlLnN0cm9rZVN0eWxl
KTsKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VTdHlsZSgqdGhpcywgc3RhdGUuc3Ry
b2tlU3R5bGUpOwogCiAgICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d0NoYW5nZSkgewogICAgICAgICBpZiAoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsK
QEAgLTI3Myw4OCArMjgyLDg4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpCiAgICAgfQogCiAg
ICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNo
YW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24obV9wbGF0
Zm9ybUNvbnRleHQsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpOwor
ICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUu
Y29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSk7CiAKICAgICBpZiAoZmxhZ3MgJiBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKQotICAgICAgICBDYWly
bzo6U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcyhtX3BsYXRmb3JtQ29udGV4dCwgc3RhdGUuc2hv
dWxkQW50aWFsaWFzKTsKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMo
KnRoaXMsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKLSAg
ICBDYWlybzo6Y29uY2F0Q1RNKCpwbGF0Zm9ybUNvbnRleHQoKSwgdHJhbnNmb3JtKTsKKyAgICBD
YWlybzo6Y29uY2F0Q1RNKCp0aGlzLCB0cmFuc2Zvcm0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7Ci0g
ICAgQ2Fpcm86OlN0YXRlOjpzZXRDVE0oKnBsYXRmb3JtQ29udGV4dCgpLCB0cmFuc2Zvcm0pOwor
ICAgIENhaXJvOjpTdGF0ZTo6c2V0Q1RNKCp0aGlzLCB0cmFuc2Zvcm0pOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dENhaXJvOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkp
CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkp
OwotICAgIENhaXJvOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKCpwbGF0Zm9ybUNvbnRleHQoKSwg
b3BhY2l0eSk7CisgICAgQ2Fpcm86OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKnRoaXMsIG9wYWNp
dHkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjplbmRUcmFuc3BhcmVuY3lMYXll
cigpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpOwotICAg
IENhaXJvOjplbmRUcmFuc3BhcmVuY3lMYXllcigqcGxhdGZvcm1Db250ZXh0KCkpOworICAgIENh
aXJvOjplbmRUcmFuc3BhcmVuY3lMYXllcigqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgQ2Fpcm86
OmNsZWFyUmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QpOworICAgIENhaXJvOjpjbGVhclJl
Y3QoKnRoaXMsIHJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogewogICAgIGF1dG8m
IHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6c3Ryb2tlUmVjdCgqcGxhdGZvcm1D
b250ZXh0KCksIHJlY3QsIGxpbmVXaWR0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSksIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpzdHJva2VSZWN0KCp0aGlzLCBy
ZWN0LCBsaW5lV2lkdGgsIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93
U3RhdGUoc3RhdGUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6c2V0TGluZUNh
cChMaW5lQ2FwIGxpbmVDYXApCiB7Ci0gICAgQ2Fpcm86OnNldExpbmVDYXAoKnBsYXRmb3JtQ29u
dGV4dCgpLCBsaW5lQ2FwKTsKKyAgICBDYWlybzo6c2V0TGluZUNhcCgqdGhpcywgbGluZUNhcCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNldExpbmVEYXNoKGNvbnN0IERhc2hB
cnJheSYgZGFzaGVzLCBmbG9hdCBkYXNoT2Zmc2V0KQogewotICAgIENhaXJvOjpzZXRMaW5lRGFz
aCgqcGxhdGZvcm1Db250ZXh0KCksIGRhc2hlcywgZGFzaE9mZnNldCk7CisgICAgQ2Fpcm86OnNl
dExpbmVEYXNoKCp0aGlzLCBkYXNoZXMsIGRhc2hPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpzZXRMaW5lSm9pbihMaW5lSm9pbiBsaW5lSm9pbikKIHsKLSAgICBDYWly
bzo6c2V0TGluZUpvaW4oKnBsYXRmb3JtQ29udGV4dCgpLCBsaW5lSm9pbik7CisgICAgQ2Fpcm86
OnNldExpbmVKb2luKCp0aGlzLCBsaW5lSm9pbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXIpCiB7Ci0gICAgQ2Fpcm86OnNldE1pdGVy
TGltaXQoKnBsYXRmb3JtQ29udGV4dCgpLCBtaXRlcik7CisgICAgQ2Fpcm86OnNldE1pdGVyTGlt
aXQoKnRoaXMsIG1pdGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y2xpcE91
dChjb25zdCBQYXRoJiBwYXRoKQogewotICAgIENhaXJvOjpjbGlwT3V0KCpwbGF0Zm9ybUNvbnRl
eHQoKSwgcGF0aCk7CisgICAgQ2Fpcm86OmNsaXBPdXQoKnRoaXMsIHBhdGgpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dENhaXJvOjpyb3RhdGUoZmxvYXQgcmFkaWFucykKIHsKLSAgICBDYWly
bzo6cm90YXRlKCpwbGF0Zm9ybUNvbnRleHQoKSwgcmFkaWFucyk7CisgICAgQ2Fpcm86OnJvdGF0
ZSgqdGhpcywgcmFkaWFucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnNjYWxl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBDYWlybzo6c2NhbGUoKnBsYXRmb3JtQ29u
dGV4dCgpLCBzaXplKTsKKyAgICBDYWlybzo6c2NhbGUoKnRoaXMsIHNpemUpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
LSAgICBDYWlybzo6Y2xpcE91dCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QpOworICAgIENhaXJv
OjpjbGlwT3V0KCp0aGlzLCByZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6
ZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IpCiB7Ci0gICAgQ2Fpcm86OmZpbGxSb3VuZGVkUmVjdCgqcGxhdGZvcm1Db250
ZXh0KCksIHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUoKSkpOworICAgIENh
aXJvOjpmaWxsUm91bmRlZFJlY3QoKnRoaXMsIHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUoKSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMzYzLDcgKzM3Miw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZSgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgQ2Fpcm86OkZpbGxT
b3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKnRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgQ2Fpcm86
OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIG5hdGl2ZUlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTM3Miw3ICsz
ODEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UGF0dGVybihOYXRpdmVJbWFn
ZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZQogICAgICAgICByZXR1cm47CiAKICAgICBV
TlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNv
bnRleHQoKSwgbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJbnRTaXplKGltYWdl
U2l6ZSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlv
bnMpOworICAgIENhaXJvOjpkcmF3UGF0dGVybigqdGhpcywgbmF0aXZlSW1hZ2UucGxhdGZvcm1J
bWFnZSgpLmdldCgpLCBJbnRTaXplKGltYWdlU2l6ZSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiBSZW5kZXJpbmdNb2RlIEdyYXBo
aWNzQ29udGV4dENhaXJvOjpyZW5kZXJpbmdNb2RlKCkgY29uc3QKQEAgLTQwMywxMiArNDEyLDcy
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCoKICAgICAgICAgZm9udFNtb290aGluZyA9IEZvbnRT
bW9vdGhpbmdNb2RlOjpOb1Ntb290aGluZzsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3Rh
dGUoKTsKLSAgICBDYWlybzo6ZHJhd0dseXBocyhtX3BsYXRmb3JtQ29udGV4dCwgQ2Fpcm86OkZp
bGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKKyAgICBDYWlybzo6
ZHJhd0dseXBocygqdGhpcywgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tl
U291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQs
IHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zmc2V0LAog
ICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3Rh
dGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwKICAgICAgICAgZm9udFNtb290aGlu
Zyk7CiB9CiAKK2NhaXJvX3QqIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY3IuZ2V0KCk7Cit9CisKK1ZlY3RvcjxmbG9hdD4mIEdyYXBoaWNzQ29udGV4
dENhaXJvOjpsYXllcnMoKQoreworICAgIHJldHVybiBtX2xheWVyczsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHRDYWlybzo6c2F2ZUludGVybmFsKCkKK3sKKyAgICBtX2NhaXJvU3RhdGVTdGFj
ay5hcHBlbmQoQ2Fpcm9TdGF0ZSgpKTsKKyAgICBtX2NhaXJvU3RhdGUgPSAmbV9jYWlyb1N0YXRl
U3RhY2subGFzdCgpOworCisgICAgY2Fpcm9fc2F2ZShtX2NyLmdldCgpKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRDYWlybzo6cmVzdG9yZUludGVybmFsKCkKK3sKKyAgICBpZiAobV9jYWly
b1N0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jYWly
b1N0YXRlLT5tX21hc2sucGF0dGVybikgeworICAgICAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291
cmNlKG1fY3IuZ2V0KCkpOworCisgICAgICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeDsKKyAgICAg
ICAgY2Fpcm9fZ2V0X21hdHJpeChtX2NyLmdldCgpLCAmbWF0cml4KTsKKyAgICAgICAgY2Fpcm9f
c2V0X21hdHJpeChtX2NyLmdldCgpLCAmbV9jYWlyb1N0YXRlLT5tX21hc2subWF0cml4KTsKKyAg
ICAgICAgY2Fpcm9fbWFzayhtX2NyLmdldCgpLCBtX2NhaXJvU3RhdGUtPm1fbWFzay5wYXR0ZXJu
LmdldCgpKTsKKyAgICAgICAgY2Fpcm9fc2V0X21hdHJpeChtX2NyLmdldCgpLCAmbWF0cml4KTsK
KyAgICB9CisKKyAgICBtX2NhaXJvU3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgQVNTRVJU
KCFtX2NhaXJvU3RhdGVTdGFjay5pc0VtcHR5KCkpOworICAgIG1fY2Fpcm9TdGF0ZSA9ICZtX2Nh
aXJvU3RhdGVTdGFjay5sYXN0KCk7CisKKyAgICBjYWlyb19yZXN0b3JlKG1fY3IuZ2V0KCkpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpwdXNoSW1hZ2VNYXNrKGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIC8vIFdlIG11c3Qg
Y2FsbCBzYXZlUGxhdGZvcm1TdGF0ZSBhdCBsZWFzdCBvbmNlIGJlZm9yZSB3ZSBjYW4gdXNlIGlt
YWdlIG1hc2tpbmcsCisgICAgLy8gc2luY2Ugd2UgYWN0dWFsbHkgYXBwbHkgdGhlIG1hc2sgaW4g
cmVzdG9yZVBsYXRmb3JtU3RhdGUuCisgICAgQVNTRVJUKCFtX2NhaXJvU3RhdGVTdGFjay5pc0Vt
cHR5KCkpOworICAgIG1fY2Fpcm9TdGF0ZS0+bV9tYXNrLnBhdHRlcm4gPSBhZG9wdFJlZihjYWly
b19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzdXJmYWNlKSk7CisgICAgY2Fpcm9fZ2V0X21h
dHJpeChtX2NyLmdldCgpLCAmbV9jYWlyb1N0YXRlLT5tX21hc2subWF0cml4KTsKKworICAgIGNh
aXJvX21hdHJpeF90IG1hdHJpeDsKKyAgICBjYWlyb19tYXRyaXhfaW5pdF90cmFuc2xhdGUoJm1h
dHJpeCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOworICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJp
eChtX2NhaXJvU3RhdGUtPm1fbWFzay5wYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKKworICAgIGNh
aXJvX3B1c2hfZ3JvdXAobV9jci5nZXQoKSk7Cit9CisKK0dyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZSogR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmdyYXBoaWNzQ29udGV4dFByaXZhdGUoKQor
eworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCmluZGV4
IGJhY2FhMzdjNjE2MzVmNWFkZjBmNDg1YTZmODJkYzdlYTg2ZmIwZDguLmQyYmM2Zjk1NjNkZmU3
MzYyNzA1ZmIzMWRmZjEwOTkwYmU4MzJlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApA
QCAtMjksNyArMjksNiBAQAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAKIHR5cGVkZWYgc3Ry
dWN0IF9jYWlybyBjYWlyb190OwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9f
c3VyZmFjZV90OwpAQCAtNDMsMTMgKzQyLDEzIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICBHcmFwaGljc0NvbnRleHRDYWlybyhIREMsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7
IC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkLgotICAgIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dENh
aXJvKFBsYXRmb3JtQ29udGV4dENhaXJvKik7CisgICAgZXhwbGljaXQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm8oR3JhcGhpY3NDb250ZXh0Q2Fpcm8qKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB+R3Jh
cGhpY3NDb250ZXh0Q2Fpcm8oKTsKIAogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29u
c3QgZmluYWw7Ci0gICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCgpIGNv
bnN0IGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKQEAgLTEx
Myw4ICsxMTIsMjIgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSogZGVwcmVjYXRlZFByaXZhdGVDb250ZXh0KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorICAg
IGNhaXJvX3QqIGNyKCkgY29uc3Q7CisgICAgVmVjdG9yPGZsb2F0PiYgbGF5ZXJzKCk7CisgICAg
dm9pZCBzYXZlSW50ZXJuYWwoKTsKKyAgICB2b2lkIHJlc3RvcmVJbnRlcm5hbCgpOworICAgIHZv
aWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGdyYXBoaWNzQ29udGV4dFByaXZhdGUo
KTsKKwogcHJpdmF0ZToKLSAgICBtdXRhYmxlIFBsYXRmb3JtQ29udGV4dENhaXJvIG1fcGxhdGZv
cm1Db250ZXh0OworICAgIFJlZlB0cjxjYWlyb190PiBtX2NyOworCisgICAgY2xhc3MgQ2Fpcm9T
dGF0ZTsKKyAgICBDYWlyb1N0YXRlKiBtX2NhaXJvU3RhdGU7CisgICAgV1RGOjpWZWN0b3I8Q2Fp
cm9TdGF0ZT4gbV9jYWlyb1N0YXRlU3RhY2s7CisKKyAgICAvLyBUcmFuc3BhcmVuY3kgbGF5ZXJz
LgorICAgIFZlY3RvcjxmbG9hdD4gbV9sYXllcnM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPiBtX3ByaXZhdGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRHTENhaXJvLmNwcAppbmRleCBkOTZiNWQ0N2Q2NmFlOGJjNDQ1MGZlYzNmMzllMjdh
MjA5YjUwNWM0Li5jY2NiNTcyNGE0Y2Q5MmZmMGJmOGU3MzgzYzVkOWZlNjg5ZDc3Yjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRHTENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAjaWYg
RU5BQkxFKFdFQkdMKSAmJiBVU0UoQ0FJUk8pCiAKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdl
U291cmNlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8u
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJv
LmgKaW5kZXggYmZjMDAzNTc4OTczODg2MjA1MmU3NjIwN2U2NzBhNmFiZDdkNDg5YS4uZmQzMWEw
MjAxMGUxN2ExZWRlNTRiMjczOTUzMzJiY2E4ZjI5NjEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCkBAIC0yOSw4ICsyOSw2IEBACiAK
ICNpZiBVU0UoQ0FJUk8pCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5kZXggZTBlOWFhN2QwMzc1
NjllZWZjNDE4MmE3MGM2NmU3Y2RkZmJjMDViYS4uOTZjNzYxMzU0MWJkYzY1OGE3ODdhYjAzZTc3
ODE4ODM0ZDMxODVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAt
MzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENhaXJvLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJv
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2ODdkMDk3YWUxYjgyMTU4
ZmU1MzUxNWE5NTRhN2UyOGQyOWZkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChjKSAyMDA4
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDEy
LCBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENh
aXJvLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlIDxjYWlyby5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIEVuY2Fwc3VsYXRlcyB0aGUgYWRkaXRpb25hbCBwYWludGluZyBz
dGF0ZSBpbmZvcm1hdGlvbiB3ZSBzdG9yZSBmb3IgZWFjaAotLy8gcHVzaGVkIGdyYXBoaWNzIHN0
YXRlLgotY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OlN0YXRlIHsKLXB1YmxpYzoKLSAgICBT
dGF0ZSgpID0gZGVmYXVsdDsKLQotICAgIHN0cnVjdCB7Ci0gICAgICAgIFJlZlB0cjxjYWlyb19w
YXR0ZXJuX3Q+IHBhdHRlcm47Ci0gICAgICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeDsKLSAgICB9
IG1fbWFzazsKLX07Ci0KLVBsYXRmb3JtQ29udGV4dENhaXJvOjpQbGF0Zm9ybUNvbnRleHRDYWly
byhSZWZQdHI8Y2Fpcm9fdD4mJiBjcikKLSAgICA6IG1fY3IoV1RGTW92ZShjcikpCi17Ci0gICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChTdGF0ZSgpKTsKLSAgICBtX3N0YXRlID0gJm1fc3RhdGVTdGFj
ay5sYXN0KCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OnJlc3RvcmUoKQotewot
ICAgIGlmIChtX3N0YXRlU3RhY2suaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAobV9zdGF0ZS0+bV9tYXNrLnBhdHRlcm4pIHsKLSAgICAgICAgY2Fpcm9fcG9wX2dyb3VwX3Rv
X3NvdXJjZShtX2NyLmdldCgpKTsKLQotICAgICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXg7Ci0g
ICAgICAgIGNhaXJvX2dldF9tYXRyaXgobV9jci5nZXQoKSwgJm1hdHJpeCk7Ci0gICAgICAgIGNh
aXJvX3NldF9tYXRyaXgobV9jci5nZXQoKSwgJm1fc3RhdGUtPm1fbWFzay5tYXRyaXgpOwotICAg
ICAgICBjYWlyb19tYXNrKG1fY3IuZ2V0KCksIG1fc3RhdGUtPm1fbWFzay5wYXR0ZXJuLmdldCgp
KTsKLSAgICAgICAgY2Fpcm9fc2V0X21hdHJpeChtX2NyLmdldCgpLCAmbWF0cml4KTsKLSAgICB9
Ci0KLSAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIEFTU0VSVCghbV9zdGF0ZVN0
YWNrLmlzRW1wdHkoKSk7Ci0gICAgbV9zdGF0ZSA9ICZtX3N0YXRlU3RhY2subGFzdCgpOwotCi0g
ICAgY2Fpcm9fcmVzdG9yZShtX2NyLmdldCgpKTsKLX0KLQotUGxhdGZvcm1Db250ZXh0Q2Fpcm86
On5QbGF0Zm9ybUNvbnRleHRDYWlybygpID0gZGVmYXVsdDsKLQotdm9pZCBQbGF0Zm9ybUNvbnRl
eHRDYWlybzo6c2F2ZSgpCi17Ci0gICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChTdGF0ZSgpKTsKLSAg
ICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7Ci0KLSAgICBjYWlyb19zYXZlKG1fY3Iu
Z2V0KCkpOwotfQotCi12b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpwdXNoSW1hZ2VNYXNrKGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQotewotICAgIC8v
IFdlIG11c3QgY2FsbCBzYXZlUGxhdGZvcm1TdGF0ZSBhdCBsZWFzdCBvbmNlIGJlZm9yZSB3ZSBj
YW4gdXNlIGltYWdlIG1hc2tpbmcsCi0gICAgLy8gc2luY2Ugd2UgYWN0dWFsbHkgYXBwbHkgdGhl
IG1hc2sgaW4gcmVzdG9yZVBsYXRmb3JtU3RhdGUuCi0gICAgQVNTRVJUKCFtX3N0YXRlU3RhY2su
aXNFbXB0eSgpKTsKLSAgICBtX3N0YXRlLT5tX21hc2sucGF0dGVybiA9IGFkb3B0UmVmKGNhaXJv
X3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UpKTsKLSAgICBjYWlyb19nZXRfbWF0
cml4KG1fY3IuZ2V0KCksICZtX3N0YXRlLT5tX21hc2subWF0cml4KTsKLQotICAgIGNhaXJvX21h
dHJpeF90IG1hdHJpeDsKLSAgICBjYWlyb19tYXRyaXhfaW5pdF90cmFuc2xhdGUoJm1hdHJpeCwg
LXJlY3QueCgpLCAtcmVjdC55KCkpOwotICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJpeChtX3N0
YXRlLT5tX21hc2sucGF0dGVybi5nZXQoKSwgJm1hdHJpeCk7Ci0KLSAgICBjYWlyb19wdXNoX2dy
b3VwKG1fY3IuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWU1ZTE4OWFkMzYyMjNlZTJhYjBiZjBhOGMyY2ExMzZmMDNiZWE5MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCisrKyAvZGV2
L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
LSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKLXN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZTsKLQotbmFtZXNwYWNlIENhaXJvIHsKLXN0cnVjdCBGaWxsU291cmNlOwotc3RydWN0IFN0
cm9rZVNvdXJjZTsKLXN0cnVjdCBTaGFkb3dTdGF0ZTsKLX0KLQotLy8gVGhpcyBjbGFzcyBob2xk
cyBpbmZvcm1hdGlvbiB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHByaXZhdGUgdG8gR3JhcGhpY3ND
b250ZXh0LCBleGNlcHQgdGhhdCB3ZSB3YW50IHRvIGFsbG93IGFjY2VzcwotLy8gdG8gaXQgaW4g
Rm9udCBhbmQgSW1hZ2UgY29kZS4gVGhpcyBhbGxvd3MgdXMgdG8gc2VwYXJhdGUgdGhlIGNvbmNl
cm5zIG9mIENhaXJvLXNwZWNpZmljCi0vLyBjb2RlIGZyb20gdGhlIHBsYXRmb3JtLWluZGVwZW5k
ZW50IEdyYXBoaWNzQ29udGV4dC4KLQotY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRm
b3JtQ29udGV4dENhaXJvKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBQbGF0Zm9ybUNvbnRleHRD
YWlybyhSZWZQdHI8Y2Fpcm9fdD4mJik7Ci0gICAgflBsYXRmb3JtQ29udGV4dENhaXJvKCk7Ci0K
LSAgICBjYWlyb190KiBjcigpIGNvbnN0IHsgcmV0dXJuIG1fY3IuZ2V0KCk7IH0KLQotICAgIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpIHsg
cmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZTsgfQotICAgIHZvaWQgc2V0R3JhcGhpY3ND
b250ZXh0UHJpdmF0ZShHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGdyYXBoaWNzQ29u
dGV4dFByaXZhdGUpIHsgbV9ncmFwaGljc0NvbnRleHRQcml2YXRlID0gZ3JhcGhpY3NDb250ZXh0
UHJpdmF0ZTsgfQotCi0gICAgVmVjdG9yPGZsb2F0PiYgbGF5ZXJzKCkgeyByZXR1cm4gbV9sYXll
cnM7IH0KLQotICAgIHZvaWQgc2F2ZSgpOwotICAgIHZvaWQgcmVzdG9yZSgpOwotCi0gICAgdm9p
ZCBwdXNoSW1hZ2VNYXNrKGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYpOwotCi1w
cml2YXRlOgotICAgIFJlZlB0cjxjYWlyb190PiBtX2NyOwotCi0gICAgLy8gS2VlcGluZyBhIHBv
aW50ZXIgdG8gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIGhlcmUgZW5hYmxlcyBjYWxs
aW5nCi0gICAgLy8gV2luZG93cy1zcGVjaWZpYyBtZXRob2RzIGZyb20gQ2Fpcm9PcGVyYXRpb25z
ICh3aGVyZSBvbmx5IFBsYXRmb3JtQ29udGV4dENhaXJvCi0gICAgLy8gY2FuIGJlIGxldmVyYWdl
ZCkuCi0gICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2dyYXBoaWNzQ29udGV4
dFByaXZhdGUgeyBudWxscHRyIH07Ci0KLSAgICBjbGFzcyBTdGF0ZTsKLSAgICBTdGF0ZSogbV9z
dGF0ZTsKLSAgICBXVEY6OlZlY3RvcjxTdGF0ZT4gbV9zdGF0ZVN0YWNrOwotCi0gICAgLy8gVHJh
bnNwYXJlbmN5IGxheWVycy4KLSAgICBWZWN0b3I8ZmxvYXQ+IG1fbGF5ZXJzOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCA1
YjA2YjM3YmFkNTZmZWY5NzIwNDFmZDc5MmVkNzMxOTFmYTY0MDdjLi5jZjFmY2RmZTM4NDJlYWRi
MzMzOWYyMDYyYWNmZjE5YjUzNWJlYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQAogbmFt
ZXNwYWNlIE5pY29zaWEgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBsYXRmb3JtQ29u
dGV4dENhaXJvJiBjb250ZXh0Rm9yUmVwbGF5KFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiBvcGVy
YXRpb25SZXBsYXkpCitHcmFwaGljc0NvbnRleHRDYWlybyYgY29udGV4dEZvclJlcGxheShQYWlu
dGluZ09wZXJhdGlvblJlcGxheSYgb3BlcmF0aW9uUmVwbGF5KQogewogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvJj4ob3BlcmF0aW9uUmVwbGF5KS5w
bGF0Zm9ybUNvbnRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWlu
dGluZ0NvbnRleHRDYWlyby5jcHAKaW5kZXggOGQ0MjU3Njk5ZmM5NTBiNTVkZTdhNDU0YzM1MzFh
NDg5OGUzOTY4OS4uNDE3MGYxZTI5NDliNDUxYTY1MGVlYTdlMGI5MzBjMGRmZmYzZGE3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNw
cApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIk5pY29zaWFCdWZmZXIuaCIKICNpbmNsdWRl
ICJOaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIgogI2luY2x1ZGUgIk5pY29zaWFQYWlu
dGluZ09wZXJhdGlvblJlcGxheUNhaXJvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5j
bHVkZSA8dXRpbGl0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBh
aW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaAppbmRleCA3ZDgxZWViNTkzZGUzZTZmMjA2ODNm
NzQ1ODgyMTY2MWIzZmU1ZjY4Li40ODRjZGRjYzdjMmIxZGE1OTU3ZmEwOTM4NzI1YTlhZTcyMDli
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdP
cGVyYXRpb25SZXBsYXlDYWlyby5oCkBAIC0yOCwyMCArMjgsMTcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIk5pY29zaWFQ
YWludGluZ09wZXJhdGlvbi5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBQbGF0Zm9y
bUNvbnRleHRDYWlybzsKLX0KLQogbmFtZXNwYWNlIE5pY29zaWEgewogCiBzdHJ1Y3QgUGFpbnRp
bmdPcGVyYXRpb25SZXBsYXlDYWlybyA6IFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5IHsKLSAgICBQ
YWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQpCisgICAgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXlDYWlybyhXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICA6IHBs
YXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCiAgICAgeyB9CiAKLSAgICBXZWJDb3JlOjpQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0OworICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25z
LmgKaW5kZXggNWQxOTYwODBjZGU0NTUwNzA1YzM5N2VmOTljOTZjODQ5Njg3OTZjYS4uNDdlMjk5
MzYwN2FkNTFmZWJhYTZjYzcyZGZjMjY1MTM3MDMyNDc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaApA
QCAtNDgsNyArNDgsNiBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0
OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgUGF0aDsKLWNsYXNzIFBsYXRmb3JtQ29udGV4dENh
aXJvOwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q2Fpcm9XaW4uY3BwCmluZGV4IDJjYmY2ZDE5MGE5MWU0NGI5YTNjMGEzNzlhMGU3OTIzOTI5ZmEx
ZmUuLjFjMzBmMzgzZGIxNTYyZTE2MDA4OWNiMzEyOGNkZDk2MWM1OTM1MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWly
b1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzIsNyArNzIsNyBAQCBHcmFwaGljc0NvbnRleHRD
YWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8oSERDIGRjLCBib29sIGhhc0FscGhhKQogewogfQog
Ci1HcmFwaGljc0NvbnRleHRDYWlybzo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8oUGxhdGZvcm1Db250
ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCkKK0dyYXBoaWNzQ29udGV4dENhaXJvOjpHcmFwaGlj
c0NvbnRleHRDYWlybyhHcmFwaGljc0NvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0KQogICAg
IDogR3JhcGhpY3NDb250ZXh0Q2Fpcm8ocGxhdGZvcm1Db250ZXh0LT5jcigpKQogewogfQpAQCAt
ODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCBzZXRSR0JBQml0bWFwQWxwaGEodW5zaWduZWQgY2hh
ciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGNoYQogICAgICAgICBieXRlc1tpICsg
M10gPSBsZXZlbDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0JpdG1hcFRvQ29udGV4dChQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBESUJQaXhlbERhdGEmIHBpeGVs
RGF0YSwgY29uc3QgSW50U2l6ZSYgdHJhbnNsYXRlKQorc3RhdGljIHZvaWQgZHJhd0JpdG1hcFRv
Q29udGV4dChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBESUJQ
aXhlbERhdGEmIHBpeGVsRGF0YSwgY29uc3QgSW50U2l6ZSYgdHJhbnNsYXRlKQogewogICAgIC8v
IE5lZWQgdG8gbWFrZSBhIGNhaXJvX3N1cmZhY2VfdCBvdXQgb2YgdGhlIGJpdG1hcCdzIHBpeGVs
IGJ1ZmZlciBhbmQgdGhlbiBkcmF3CiAgICAgLy8gaXQgaW50byBvdXIgY29udGV4dC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggYTQ1OTc1
M2YxNzNlMWI2YjUwZDkzMmM4NGViYWY2YmMyMTU1YmViMy4uOWYwM2E4YTIwNWFhMmRlODdmNmI5
MjY5NTNkOWI1ZTY1NTViM2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2lmIFVTRShDQUlSTykKICNpbmNsdWRlICJDYWlyb09wZXJhdGlvbnMuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRo
ZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0
ay5jcHAKaW5kZXggMjg5NmM3ZjNiMGQyNzhkYjA5YjgwMDkzNDczZmI2YmZhOGZjMjEzZi4uYzRm
MzE2OTIxY2QxZGNhOTI1OGQyZTU3MGQxZDlhYjc0N2FkMGFiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAjaWYgIVVTRShHVEs0KQogCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVt
ZVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDMzMGYwNGY1MmRh
MjdmYjE2OThmMmYyMGIyNmM0MGU5NDQ1YjIyN2MuLmFiZjk4OWU5NDEyODlhMTFmN2U5ZDhmYTEy
OWJlYmY2Y2ZhYjc2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNhaXJvV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQml0bWFw
SW5mby5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIGRlYWxsb2NDb250ZXh0KFBsYXRmb3JtQ29udGV4dENhaXJvKiB0YXJnZXQp
Cit2b2lkIGRlYWxsb2NDb250ZXh0KEdyYXBoaWNzQ29udGV4dENhaXJvKiB0YXJnZXQpCiB7CiAg
ICAgZGVsZXRlIHRhcmdldDsKIH0KIAotR0RJT2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERD
IGRjLCBJbnRTaXplIHNpemUsIFBsYXRmb3JtQ29udGV4dENhaXJvKiogdGFyZ2V0UmVmKQorR0RJ
T2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIEdyYXBoaWNz
Q29udGV4dENhaXJvKiogdGFyZ2V0UmVmKQogewogICAgIEJpdG1hcEluZm8gYm1wSW5mbyA9IEJp
dG1hcEluZm86OmNyZWF0ZShzaXplKTsKIApAQCAtMTE5LDcgKzExOSw3IEBAIERyYWdJbWFnZVJl
ZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSkK
ICAgICBpZiAoIWRzdERDKQogICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICBQbGF0Zm9ybUNvbnRl
eHRDYWlybyogdGFyZ2V0Q29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHRDYWlybyogdGFyZ2V0
Q29udGV4dDsKICAgICBoYm1wID0gYWxsb2NJbWFnZShkc3REQy5nZXQoKSwgZHN0U2l6ZSwgJnRh
cmdldENvbnRleHQpOwogICAgIGlmICghaGJtcCkKICAgICAgICAgZ290byBleGl0OwpAQCAtMTUz
LDcgKzE1Myw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2Uq
IGltZywgSW1hZ2VPcmllbnRhdGlvbikKICAgICBpZiAoIXdvcmtpbmdEQykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogZHJhd0NvbnRleHQgPSAwOworICAg
IEdyYXBoaWNzQ29udGV4dENhaXJvKiBkcmF3Q29udGV4dCA9IDA7CiAgICAgYXV0byBoYm1wID0g
YWxsb2NJbWFnZSh3b3JraW5nREMuZ2V0KCksIEludFNpemUoaW1nLT5zaXplKCkpLCAmZHJhd0Nv
bnRleHQpOwogICAgIGlmICghaGJtcCB8fCAhZHJhd0NvbnRleHQpCiAgICAgICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5j
cHAKaW5kZXggY2NmY2M2NjhmMWY1NDE3ZjUwMGMwYjI0OGEzNTQ4OTk2NmY5MWUxYS4uYzhjYzVh
YThmY2I5NDgyMGJkZGQ3OTU2NTMxZjE2ZjIxNDI4NjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBAIC0zMCw4ICszMCw3IEBA
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4K
IAogY2Fpcm9fc3VyZmFjZV90KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYg
aW1hZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFi
bGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAKaW5kZXggZWM1MWJjMjE2MDBjNGY5Y2MyZDVjOTRhYjZlYjhlODE5ZGZj
MzA5Yi4uNjZiNTgwYzk4YWZlNGYxNzg5MzVhYWUzMDM2ZGY1MzI4NDkxYWRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9PcGVyYXRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENh
aXJvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDc0ZjQ2Y2NiZjEx
M2Y3YzZiZjk5YTJhMTgyYjg4ZjQxN2MzMzBjMjMuLjkwODRkZmIwOGI2NjFlZmFlY2I4ZmExMjA4
YzNmMjlhODA3YzU0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtMzcs
NyArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlbGVjdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxjYWlyby5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmNwcAppbmRleCAzOTliMWU4MGEzZDg0ZDFkMGQzMDA5NmFjNDQ2NTBhYzk4ZjU4MTVj
Li4yZjIxZjJiZWYzYzliYmY2MzEyMzUyMGNkZjlmODc5NjcxODVjYTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCBlMzZlODFhMWE4MzEzYjRiMTU1MTUxZjU3
MDMwNTNmMTJiNDg5OTJkLi45M2FhN2Q2YWUyNzdiNzFkZDhhZWI0MWU2ZmVkZTYwY2RlMDBiOThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAK
ICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2Vs
aWYgVVNFKENBSVJPKQotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8Y2Fp
cm8td2luMzIuaD4KICNlbmRpZgogCkBAIC0xNzU2LDcgKzE3NTYsNyBAQCBIUkVTVUxUIFdlYkZy
YW1lOjpzcG9vbFBhZ2VzKEhEQyBwcmludERDLCBVSU5UIHN0YXJ0UGFnZSwgVUlOVCBlbmRQYWdl
LCB2b2lkKiBjdAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0KIAotICAgIFBsYXRmb3Jt
Q29udGV4dENhaXJvIHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgR3JhcGhpY3NDb250ZXh0Q2Fp
cm8gcGxhdGZvcm1Db250ZXh0KGNyKTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0
eCA9ICZwbGF0Zm9ybUNvbnRleHQ7CiAgICAgY2Fpcm9fZGVzdHJveShjcik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDQwNjIzNTQ2OTY2YjFkNWU3MmFiNDc5ZmRhODMwNDk0
NGUzNjdkMzYuLjQzNjA1NGZkOWRkYjQ3Y2EzMjk2YjExNzk4MTQzNGVjMTg5N2RhZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtNjAsOSArNjAsOSBAQCB0eXBlZGVmIHN0cnVj
dCBPcGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNlbGlmIFVTRShDQUlSTykKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOworY2xhc3MgR3JhcGhpY3NDb250ZXh0
Q2Fpcm87CiB9Ci10eXBlZGVmIGNsYXNzIFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0OwordHlwZWRlZiBjbGFzcyBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDYWlybyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNlbmRpZgogCiBjbGFzcyBXZWJG
cmFtZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>