<?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>212477</bug_id>
          
          <creation_ts>2020-05-28 10:35:41 -0700</creation_ts>
          <short_desc>Extended Color: ColorMatrix should support smaller matrices and be constexpr</short_desc>
          <delta_ts>2020-05-29 11:15:18 -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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1656910</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-28 10:35:41 -0700</bug_when>
    <thetext>The current ColorMatrix code always uses a 4x5 matrix. This is unnecessary for most (if not all) of the uses. We can do better by templatizing it and while we are at it, making it support constexpr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656911</commentid>
    <comment_count>1</comment_count>
      <attachid>400476</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-28 10:37:32 -0700</bug_when>
    <thetext>Created attachment 400476
proof of concept

Here is a proof-of-concept. Not sure if the actual matrix match is 100% right yet, but the code nicely compiles down to:

:-) samweinig:~&gt; otool -Vx a.out 
a.out:
(__TEXT,__text) section
_main:
0000000100000f4a	pushq	%rbp
0000000100000f4b	movq	%rsp, %rbp
0000000100000f4e	leaq	0x53(%rip), %rdi ## literal pool for: &quot;%f, %f, %f, %f\n&quot;
0000000100000f55	movsd	0x3b(%rip), %xmm0
0000000100000f5d	movsd	0x3b(%rip), %xmm3
0000000100000f65	movaps	%xmm0, %xmm1
0000000100000f68	movaps	%xmm0, %xmm2
0000000100000f6b	movb	$0x4, %al
0000000100000f6d	callq	0x100000f76 ## symbol stub for: _printf
0000000100000f72	xorl	%eax, %eax
0000000100000f74	popq	%rbp
0000000100000f75	retq

when compiled with `clang++ -std=c++17 -Os matrix.cpp`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656912</commentid>
    <comment_count>2</comment_count>
      <attachid>400477</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-28 10:38:36 -0700</bug_when>
    <thetext>Created attachment 400477
matrix.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656927</commentid>
    <comment_count>3</comment_count>
      <attachid>400482</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-28 11:05:09 -0700</bug_when>
    <thetext>Created attachment 400482
proof of concept</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656966</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-05-28 12:45:47 -0700</bug_when>
    <thetext>This is awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656967</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-05-28 12:47:32 -0700</bug_when>
    <thetext>Our Color Team is on fire these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657011</commentid>
    <comment_count>6</comment_count>
      <attachid>400504</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-28 14:11:33 -0700</bug_when>
    <thetext>Created attachment 400504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657078</commentid>
    <comment_count>7</comment_count>
      <attachid>400521</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-28 16:25:39 -0700</bug_when>
    <thetext>Created attachment 400521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657115</commentid>
    <comment_count>8</comment_count>
      <attachid>400532</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-28 17:55:13 -0700</bug_when>
    <thetext>Created attachment 400532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657266</commentid>
    <comment_count>9</comment_count>
      <attachid>400585</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-29 08:28:54 -0700</bug_when>
    <thetext>Created attachment 400585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657304</commentid>
    <comment_count>10</comment_count>
      <attachid>400596</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-29 10:10:10 -0700</bug_when>
    <thetext>Created attachment 400596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657354</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-29 11:14:20 -0700</bug_when>
    <thetext>Committed r262304: &lt;https://trac.webkit.org/changeset/262304&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400596.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657355</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-29 11:15:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/63766184&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>400476</attachid>
            <date>2020-05-28 10:37:32 -0700</date>
            <delta_ts>2020-05-28 10:38:16 -0700</delta_ts>
            <desc>proof of concept</desc>
            <filename>matrix.diff</filename>
            <type>text/plain</type>
            <size>15526</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0
aWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTYgKzI2
LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIK
IAotI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1GbG9hdENvbXBvbmVudHM6OkZsb2F0Q29tcG9uZW50cyhjb25z
dCBDb2xvciYgY29sb3IpCi17Ci0gICAgY29sb3IuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21w
b25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKLX0KLQogQ29sb3JDb21w
b25lbnRzOjpDb2xvckNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBmbG9hdENvbXBv
bmVudHMpCiB7CiAgICAgY29tcG9uZW50c1swXSA9IGNsYW1wZWRDb2xvckNvbXBvbmVudChmbG9h
dENvbXBvbmVudHMuY29tcG9uZW50c1swXSk7CkBAIC02OSwxOCArNjMsNiBAQCBmbG9hdCByZ2JU
b0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+
KHN0ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOwogfQogCi1GbG9h
dENvbXBvbmVudHMgc1JHQkNvbG9yVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IENvbG9yJiBjb2xv
cikKLXsKLSAgICBmbG9hdCByLCBnLCBiLCBhOwotICAgIGNvbG9yLmdldFJHQkEociwgZywgYiwg
YSk7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChyKSwK
LSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChnKSwKLSAgICAgICAgcmdiVG9MaW5l
YXJDb2xvckNvbXBvbmVudChiKSwKLSAgICAgICAgYQotICAgIH07Ci19Ci0KIEZsb2F0Q29tcG9u
ZW50cyByZ2JUb0xpbmVhckNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBSR0JDb2xv
cikKIHsKICAgICByZXR1cm4gewpAQCAtMTA1LDEzICs4NywxMiBAQCBzdGF0aWMgRmxvYXRDb21w
b25lbnRzIHh5elRvTGluZWFyU1JHQihjCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvU1JHQgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4
Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKLSAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9
IHsKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXggeHl6VG9MaW5lYXJTUkdCTWF0cml4KHsKICAg
ICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwgMC4wZiwgMC4wZiwK
ICAgICAgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwgMC4wZiwgMC4w
ZiwKICAgICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZiwgMC4wZiwg
MC4wZiwKICAgICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgMS4w
ZiwgMC4wZiwKLSAgICB9OwotICAgIENvbG9yTWF0cml4IHh5elRvTGluZWFyU1JHQk1hdHJpeCh2
YWx1ZXMpOworICAgIH0pOwogICAgIHJldHVybiB4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNm
b3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7CiB9CiAKQEAgLTExOSwzOSArMTAw
LDM2IEBAIHN0YXRpYyBGbG9hdENvbXBvbmVudHMgbGluZWFyU1JHQlRvWFlaKGMKIHsKICAgICAv
LyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5i
cnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAotICAg
IGNvbnN0IGZsb2F0IHZhbHVlc1tdID0geworICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeCBsaW5l
YXJTUkdCVG9YWVpNYXRyaXgoewogICAgICAgICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAu
MTgwNDM3NWYsIDAuMGYsIDAuMGYsCiAgICAgICAgIDAuMjEyNjcyOWYsICAwLjcxNTE1MjJmLCAg
MC4wNzIxNzUwZiwgMC4wZiwgMC4wZiwKICAgICAgICAgMC4wMTkzMzM5ZiwgIDAuMTE5MTkyMGYs
ICAwLjk1MDMwNDFmLCAwLjBmLCAwLjBmLAogICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAg
ICAgIDAuMGYsICAgICAgIDEuMGYsIDAuMGYsCi0gICAgfTsKLSAgICBDb2xvck1hdHJpeCBsaW5l
YXJTUkdCVG9YWVpNYXRyaXgodmFsdWVzKTsKKyAgICB9KTsKICAgICByZXR1cm4gbGluZWFyU1JH
QlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOwog
fQogCiBzdGF0aWMgRmxvYXRDb21wb25lbnRzIFhZWlRvTGluZWFyUDMoY29uc3QgRmxvYXRDb21w
b25lbnRzJiBYWVpDb21wb25lbnRzKQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0IGZsb2F0IHZhbHVl
c1tdID0geworICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeCB4eXpUb0xpbmVhclNSR0JNYXRyaXgo
ewogICAgICAgICAgMi40OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3OTE5MTIzOWYsIC0w
LjQwMjcxMDc4NDQ1MDcxNjhmLCAwLjBmLCAwLjBmLAogICAgICAgICAtMC44Mjk0ODg5Njk1NjE1
NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0MzZmLCAwLjBmLCAw
LjBmLAogICAgICAgICAgMC4wMzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcyMzg5MjY4MDQxOGYs
ICAwLjk1Njg4NDUyNDAwNzY4NzJmLCAwLjBmLCAwLjBmLAogICAgICAgICAgMC4wZiwgICAgICAg
ICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAxLjBm
LCAwLjBmLAotICAgIH07Ci0gICAgQ29sb3JNYXRyaXggeHl6VG9MaW5lYXJTUkdCTWF0cml4KHZh
bHVlcyk7CisgICAgfSk7CiAgICAgcmV0dXJuIHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIAogc3RhdGljIEZsb2F0Q29t
cG9uZW50cyBsaW5lYXJQM1RvWFlaKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgWFlaQ29tcG9uZW50
cykKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1j
b252ZXJzaW9uLWNvZGUKLSAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9IHsKKyAgICBjb25zdGV4
cHIgQ29sb3JNYXRyaXggbGluZWFyUDNUb1hZWk1hdHJpeCh7CiAgICAgICAgIDAuNDg2NTcwOTQ4
NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4MjE3Mjg1MjM0MzYzZiwgMC4wZiwg
MC4wZiwKICAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42OTE3Mzg1MjE4MzY1MDY0Ziwg
MC4wNzkyODY5MTQwOTM3NDVmLCAwLjBmLCAwLjBmLAogICAgICAgICAwLjBmLCAgICAgICAgICAg
ICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYsIDAuMGYsIDAuMGYs
CiAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMGYs
ICAgICAgICAgICAgICAgMS4wZiwgMC4wZiwKLSAgICB9OwotICAgIENvbG9yTWF0cml4IGxpbmVh
clAzVG9YWVpNYXRyaXgodmFsdWVzKTsKKyAgICB9KTsKICAgICByZXR1cm4gbGluZWFyUDNUb1hZ
Wk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIApA
QCAtMjkzLDQ3ICsyNzEsNiBAQCBGbG9hdENvbXBvbmVudHMgaHNsVG9TUkdCKGNvbnN0IEZsb2F0
Q29tCiAgICAgfTsKIH0KIAotQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KCkKLXsKLSAgICBtYWtl
SWRlbnRpdHkoKTsKLX0KLQotQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KGNvbnN0IGZsb2F0IHZh
bHVlc1syMF0pCi17Ci0gICAgbV9tYXRyaXhbMF1bMF0gPSB2YWx1ZXNbMF07Ci0gICAgbV9tYXRy
aXhbMF1bMV0gPSB2YWx1ZXNbMV07Ci0gICAgbV9tYXRyaXhbMF1bMl0gPSB2YWx1ZXNbMl07Ci0g
ICAgbV9tYXRyaXhbMF1bM10gPSB2YWx1ZXNbM107Ci0gICAgbV9tYXRyaXhbMF1bNF0gPSB2YWx1
ZXNbNF07Ci0KLSAgICBtX21hdHJpeFsxXVswXSA9IHZhbHVlc1s1XTsKLSAgICBtX21hdHJpeFsx
XVsxXSA9IHZhbHVlc1s2XTsKLSAgICBtX21hdHJpeFsxXVsyXSA9IHZhbHVlc1s3XTsKLSAgICBt
X21hdHJpeFsxXVszXSA9IHZhbHVlc1s4XTsKLSAgICBtX21hdHJpeFsxXVs0XSA9IHZhbHVlc1s5
XTsKLQotICAgIG1fbWF0cml4WzJdWzBdID0gdmFsdWVzWzEwXTsKLSAgICBtX21hdHJpeFsyXVsx
XSA9IHZhbHVlc1sxMV07Ci0gICAgbV9tYXRyaXhbMl1bMl0gPSB2YWx1ZXNbMTJdOwotICAgIG1f
bWF0cml4WzJdWzNdID0gdmFsdWVzWzEzXTsKLSAgICBtX21hdHJpeFsyXVs0XSA9IHZhbHVlc1sx
NF07Ci0KLSAgICBtX21hdHJpeFszXVswXSA9IHZhbHVlc1sxNV07Ci0gICAgbV9tYXRyaXhbM11b
MV0gPSB2YWx1ZXNbMTZdOwotICAgIG1fbWF0cml4WzNdWzJdID0gdmFsdWVzWzE3XTsKLSAgICBt
X21hdHJpeFszXVszXSA9IHZhbHVlc1sxOF07Ci0gICAgbV9tYXRyaXhbM11bNF0gPSB2YWx1ZXNb
MTldOwotfQotCi12b2lkIENvbG9yTWF0cml4OjptYWtlSWRlbnRpdHkoKQotewotICAgIG1lbXNl
dChtX21hdHJpeCwgMCwgc2l6ZW9mKG1fbWF0cml4KSk7Ci0gICAgbV9tYXRyaXhbMF1bMF0gPSAx
OwotICAgIG1fbWF0cml4WzFdWzFdID0gMTsKLSAgICBtX21hdHJpeFsyXVsyXSA9IDE7Ci0gICAg
bV9tYXRyaXhbM11bM10gPSAxOwotfQotCiBDb2xvck1hdHJpeCBDb2xvck1hdHJpeDo6Z3JheXNj
YWxlTWF0cml4KGZsb2F0IGFtb3VudCkKIHsKICAgICBDb2xvck1hdHJpeCBtYXRyaXg7CkBAIC0z
NDEsMTcgKzI3OCwxNyBAQCBDb2xvck1hdHJpeCBDb2xvck1hdHJpeDo6Z3JheXNjYWxlTWF0cml4
CiAgICAgZmxvYXQgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBhbW91bnQsIDAuMCwgMS4w
KTsKIAogICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZm
ZWN0cy0xLyNncmF5c2NhbGVFcXVpdmFsZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0g
MC4yMTI2ZiArIDAuNzg3NGYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhb
MF1bMV0gPSAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5t
X21hdHJpeFswXVsyXSA9IDAuMDcyMmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQ7Ci0KLSAg
ICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIG9uZU1pbnVzQW1v
dW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsxXSA9IDAuNzE1MmYgKyAwLjI4NDhmICogb25l
TWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzJdID0gMC4wNzIyZiAtIDAuMDcy
MmYgKiBvbmVNaW51c0Ftb3VudDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjEy
NmYgLSAwLjIxMjZmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzFd
ID0gMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRy
aXhbMl1bMl0gPSAwLjA3MjJmICsgMC45Mjc4ZiAqIG9uZU1pbnVzQW1vdW50OworICAgIG1hdHJp
eC5zZXQoMCwgMCwgMC4yMTI2ZiArIDAuNzg3NGYgKiBvbmVNaW51c0Ftb3VudCk7CisgICAgbWF0
cml4LnNldCgwLCAxLCAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50KTsKKyAgICBt
YXRyaXguc2V0KDAsIDIsIDAuMDcyMmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQpOworCisg
ICAgbWF0cml4LnNldCgxLCAwLCAwLjIxMjZmIC0gMC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50KTsK
KyAgICBtYXRyaXguc2V0KDEsIDEsIDAuNzE1MmYgKyAwLjI4NDhmICogb25lTWludXNBbW91bnQp
OworICAgIG1hdHJpeC5zZXQoMSwgMiwgMC4wNzIyZiAtIDAuMDcyMmYgKiBvbmVNaW51c0Ftb3Vu
dCk7CisKKyAgICBtYXRyaXguc2V0KDIsIDAsIDAuMjEyNmYgLSAwLjIxMjZmICogb25lTWludXNB
bW91bnQpOworICAgIG1hdHJpeC5zZXQoMiwgMSwgMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51
c0Ftb3VudCk7CisgICAgbWF0cml4LnNldCgyLCAyLCAwLjA3MjJmICsgMC45Mjc4ZiAqIG9uZU1p
bnVzQW1vdW50KTsKICAgICAKICAgICByZXR1cm4gbWF0cml4OwogfQpAQCAtMzYxLDE3ICsyOTgs
MTcgQEAgQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OnNhdHVyYXRpb25NYXRyaQogICAgIENvbG9y
TWF0cml4IG1hdHJpeDsKIAogICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9maWx0ZXItZWZmZWN0cy0xLyNmZUNvbG9yTWF0cml4RWxlbWVudAotICAgIG1hdHJpeC5tX21h
dHJpeFswXVswXSA9IDAuMjEzZiArIDAuNzg3ZiAqIGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRy
aXhbMF1bMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4
WzBdWzJdID0gMC4wNzJmIC0gMC4wNzJmICogYW1vdW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4
WzFdWzBdID0gMC4yMTNmIC0gMC4yMTNmICogYW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsx
XVsxXSA9IDAuNzE1ZiArIDAuMjg1ZiAqIGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1b
Ml0gPSAwLjA3MmYgLSAwLjA3MmYgKiBhbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMl1b
MF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzFd
ID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9
IDAuMDcyZiArIDAuOTI4ZiAqIGFtb3VudDsKKyAgICBtYXRyaXguc2V0KDAsIDAsIDAuMjEzZiAr
IDAuNzg3ZiAqIGFtb3VudCk7CisgICAgbWF0cml4LnNldCgwLCAxLCAwLjcxNWYgLSAwLjcxNWYg
KiBhbW91bnQpOworICAgIG1hdHJpeC5zZXQoMCwgMiwgMC4wNzJmIC0gMC4wNzJmICogYW1vdW50
KTsKKworICAgIG1hdHJpeC5zZXQoMSwgMCwgMC4yMTNmIC0gMC4yMTNmICogYW1vdW50KTsKKyAg
ICBtYXRyaXguc2V0KDEsIDEsIDAuNzE1ZiArIDAuMjg1ZiAqIGFtb3VudCk7CisgICAgbWF0cml4
LnNldCgxLCAyLCAwLjA3MmYgLSAwLjA3MmYgKiBhbW91bnQpOworCisgICAgbWF0cml4LnNldCgy
LCAwLCAwLjIxM2YgLSAwLjIxM2YgKiBhbW91bnQpOworICAgIG1hdHJpeC5zZXQoMiwgMSwgMC43
MTVmIC0gMC43MTVmICogYW1vdW50KTsKKyAgICBtYXRyaXguc2V0KDIsIDIsIDAuMDcyZiArIDAu
OTI4ZiAqIGFtb3VudCk7CiAKICAgICByZXR1cm4gbWF0cml4OwogfQpAQCAtMzg0LDE3ICszMjEs
MTcgQEAgQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6Omh1ZVJvdGF0ZU1hdHJpeAogICAgIENvbG9y
TWF0cml4IG1hdHJpeDsKIAogICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9maWx0ZXItZWZmZWN0cy0xLyNmZUNvbG9yTWF0cml4RWxlbWVudAotICAgIG1hdHJpeC5tX21h
dHJpeFswXVswXSA9IDAuMjEzZiArIGNvc0h1ZSAqIDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZjsK
LSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMV0gPSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcxNWYgLSBz
aW5IdWUgKiAwLjcxNWY7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzJdID0gMC4wNzJmIC0gY29z
SHVlICogMC4wNzJmICsgc2luSHVlICogMC45MjhmOwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzFd
WzBdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNmICsgc2luSHVlICogMC4xNDNmOwotICAgIG1h
dHJpeC5tX21hdHJpeFsxXVsxXSA9IDAuNzE1ZiArIGNvc0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAq
IDAuMTQwZjsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAwLjA3MmYgLSBjb3NIdWUgKiAw
LjA3MmYgLSBzaW5IdWUgKiAwLjI4M2Y7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMF0gPSAw
LjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUgKiAwLjc4N2Y7Ci0gICAgbWF0cml4Lm1f
bWF0cml4WzJdWzFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmICsgc2luSHVlICogMC43MTVm
OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9IDAuMDcyZiArIGNvc0h1ZSAqIDAuOTI4ZiAr
IHNpbkh1ZSAqIDAuMDcyZjsKKyAgICBtYXRyaXguc2V0KDAsIDAsIDAuMjEzZiArIGNvc0h1ZSAq
IDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZik7CisgICAgbWF0cml4LnNldCgwLCAxLCAwLjcxNWYg
LSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcxNWYpOworICAgIG1hdHJpeC5zZXQoMCwg
MiwgMC4wNzJmIC0gY29zSHVlICogMC4wNzJmICsgc2luSHVlICogMC45MjhmKTsKKworICAgIG1h
dHJpeC5zZXQoMSwgMCwgMC4yMTNmIC0gY29zSHVlICogMC4yMTNmICsgc2luSHVlICogMC4xNDNm
KTsKKyAgICBtYXRyaXguc2V0KDEsIDEsIDAuNzE1ZiArIGNvc0h1ZSAqIDAuMjg1ZiArIHNpbkh1
ZSAqIDAuMTQwZik7CisgICAgbWF0cml4LnNldCgxLCAyLCAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3
MmYgLSBzaW5IdWUgKiAwLjI4M2YpOworCisgICAgbWF0cml4LnNldCgyLCAwLCAwLjIxM2YgLSBj
b3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUgKiAwLjc4N2YpOworICAgIG1hdHJpeC5zZXQoMiwgMSwg
MC43MTVmIC0gY29zSHVlICogMC43MTVmICsgc2luSHVlICogMC43MTVmKTsKKyAgICBtYXRyaXgu
c2V0KDIsIDIsIDAuMDcyZiArIGNvc0h1ZSAqIDAuOTI4ZiArIHNpbkh1ZSAqIDAuMDcyZik7CiAK
ICAgICByZXR1cm4gbWF0cml4OwogfQpAQCAtNDA2LDE3ICszNDMsMTcgQEAgQ29sb3JNYXRyaXgg
Q29sb3JNYXRyaXg6OnNlcGlhTWF0cml4KGZsbwogICAgIGZsb2F0IG9uZU1pbnVzQW1vdW50ID0g
Y2xhbXBUbygxIC0gYW1vdW50LCAwLjAsIDEuMCk7CiAKICAgICAvLyBWYWx1ZXMgZnJvbSBodHRw
czovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jc2VwaWFFcXVpdmFsZW50Ci0gICAg
bWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4zOTNmICsgMC42MDdmICogb25lTWludXNBbW91bnQ7
Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzFdID0gMC43NjlmIC0gMC43NjlmICogb25lTWludXNB
bW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzJdID0gMC4xODlmIC0gMC4xODlmICogb25l
TWludXNBbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjM0OWYgLSAwLjM0
OWYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAwLjY4NmYg
KyAwLjMxNGYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAw
LjE2OGYgLSAwLjE2OGYgKiBvbmVNaW51c0Ftb3VudDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsy
XVswXSA9IDAuMjcyZiAtIDAuMjcyZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21h
dHJpeFsyXVsxXSA9IDAuNTM0ZiAtIDAuNTM0ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJp
eC5tX21hdHJpeFsyXVsyXSA9IDAuMTMxZiArIDAuODY5ZiAqIG9uZU1pbnVzQW1vdW50OworICAg
IG1hdHJpeC5zZXQoMCwgMCwgMC4zOTNmICsgMC42MDdmICogb25lTWludXNBbW91bnQpOworICAg
IG1hdHJpeC5zZXQoMCwgMSwgMC43NjlmIC0gMC43NjlmICogb25lTWludXNBbW91bnQpOworICAg
IG1hdHJpeC5zZXQoMCwgMiwgMC4xODlmIC0gMC4xODlmICogb25lTWludXNBbW91bnQpOworCisg
ICAgbWF0cml4LnNldCgxLCAwLCAwLjM0OWYgLSAwLjM0OWYgKiBvbmVNaW51c0Ftb3VudCk7Cisg
ICAgbWF0cml4LnNldCgxLCAxLCAwLjY4NmYgKyAwLjMxNGYgKiBvbmVNaW51c0Ftb3VudCk7Cisg
ICAgbWF0cml4LnNldCgxLCAyLCAwLjE2OGYgLSAwLjE2OGYgKiBvbmVNaW51c0Ftb3VudCk7CisK
KyAgICBtYXRyaXguc2V0KDIsIDAsIDAuMjcyZiAtIDAuMjcyZiAqIG9uZU1pbnVzQW1vdW50KTsK
KyAgICBtYXRyaXguc2V0KDIsIDEsIDAuNTM0ZiAtIDAuNTM0ZiAqIG9uZU1pbnVzQW1vdW50KTsK
KyAgICBtYXRyaXguc2V0KDIsIDIsIDAuMTMxZiArIDAuODY5ZiAqIG9uZU1pbnVzQW1vdW50KTsK
IAogICAgIHJldHVybiBtYXRyaXg7CiB9CkBAIC00MjgsMTAgKzM2NSwxMCBAQCB2b2lkIENvbG9y
TWF0cml4Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVuCiAgICAgZmxvYXQgYmx1ZSA9IGNvbG9yQ29t
cG9uZW50cy5jb21wb25lbnRzWzJdOwogICAgIGZsb2F0IGFscGhhID0gY29sb3JDb21wb25lbnRz
LmNvbXBvbmVudHNbM107CiAKLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1swXSA9IG1f
bWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4WzBd
WzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBtX21hdHJpeFswXVs0XTsKLSAg
ICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSA9IG1fbWF0cml4WzFdWzBdICogcmVkICsg
bV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFdWzJdICogYmx1ZSArIG1fbWF0cml4
WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMuY29t
cG9uZW50c1syXSA9IG1fbWF0cml4WzJdWzBdICogcmVkICsgbV9tYXRyaXhbMl1bMV0gKiBncmVl
biArIG1fbWF0cml4WzJdWzJdICogYmx1ZSArIG1fbWF0cml4WzJdWzNdICogYWxwaGEgKyBtX21h
dHJpeFsyXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1szXSA9IG1fbWF0cml4
WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiArIG1fbWF0cml4WzNdWzJdICog
Ymx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJpeFszXVs0XTsKKyAgICBjb2xv
ckNvbXBvbmVudHMuY29tcG9uZW50c1swXSA9IGdldCgwLCAwKSAqIHJlZCArIGdldCgwLCAxKSAq
IGdyZWVuICsgZ2V0KDAsIDIpICogYmx1ZSArIGdldCgwLCAzKSAqIGFscGhhICsgZ2V0KDAsIDQp
OworICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzFdID0gZ2V0KDEsIDApICogcmVkICsg
Z2V0KDEsIDEpICogZ3JlZW4gKyBnZXQoMSwgMikgKiBibHVlICsgZ2V0KDEsIDMpICogYWxwaGEg
KyBnZXQoMSwgNCk7CisgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gPSBnZXQoMiwg
MCkgKiByZWQgKyBnZXQoMiwgMSkgKiBncmVlbiArIGdldCgyLCAyKSAqIGJsdWUgKyBnZXQoMiwg
MykgKiBhbHBoYSArIGdldCgyLCA0KTsKKyAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sz
XSA9IGdldCgzLCAwKSAqIHJlZCArIGdldCgzLCAxKSAqIGdyZWVuICsgZ2V0KDMsIDIpICogYmx1
ZSArIGdldCgzLCAzKSAqIGFscGhhICsgZ2V0KDMsIDQpOwogfQogCiBGbG9hdENvbXBvbmVudHMg
Q29sb3JNYXRyaXg6OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYgY29sb3JDb21wb25lbnRzKSBjb25zdApAQCAtNDQyLDEwICszNzksMTAgQEAgRmxvYXRD
b21wb25lbnRzIENvbG9yTWF0cml4Ojp0cmFuc2Zvcm1lZAogICAgIGZsb2F0IGFscGhhID0gY29s
b3JDb21wb25lbnRzLmNvbXBvbmVudHNbM107CiAKICAgICByZXR1cm4gewotICAgICAgICBtX21h
dHJpeFswXVswXSAqIHJlZCArIG1fbWF0cml4WzBdWzFdICogZ3JlZW4gKyBtX21hdHJpeFswXVsy
XSAqIGJsdWUgKyBtX21hdHJpeFswXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMF1bNF0sCi0gICAg
ICAgIG1fbWF0cml4WzFdWzBdICogcmVkICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0
cml4WzFdWzJdICogYmx1ZSArIG1fbWF0cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0
XSwKLSAgICAgICAgbV9tYXRyaXhbMl1bMF0gKiByZWQgKyBtX21hdHJpeFsyXVsxXSAqIGdyZWVu
ICsgbV9tYXRyaXhbMl1bMl0gKiBibHVlICsgbV9tYXRyaXhbMl1bM10gKiBhbHBoYSArIG1fbWF0
cml4WzJdWzRdLAotICAgICAgICBtX21hdHJpeFszXVswXSAqIHJlZCArIG1fbWF0cml4WzNdWzFd
ICogZ3JlZW4gKyBtX21hdHJpeFszXVsyXSAqIGJsdWUgKyBtX21hdHJpeFszXVszXSAqIGFscGhh
ICsgbV9tYXRyaXhbM11bNF0KKyAgICAgICAgZ2V0KDAsIDApICogcmVkICsgZ2V0KDAsIDEpICog
Z3JlZW4gKyBnZXQoMCwgMikgKiBibHVlICsgZ2V0KDAsIDMpICogYWxwaGEgKyBnZXQoMCwgNCks
CisgICAgICAgIGdldCgxLCAwKSAqIHJlZCArIGdldCgxLCAxKSAqIGdyZWVuICsgZ2V0KDEsIDIp
ICogYmx1ZSArIGdldCgxLCAzKSAqIGFscGhhICsgZ2V0KDEsIDQpLAorICAgICAgICBnZXQoMiwg
MCkgKiByZWQgKyBnZXQoMiwgMSkgKiBncmVlbiArIGdldCgyLCAyKSAqIGJsdWUgKyBnZXQoMiwg
MykgKiBhbHBoYSArIGdldCgyLCA0KSwKKyAgICAgICAgZ2V0KDMsIDApICogcmVkICsgZ2V0KDMs
IDEpICogZ3JlZW4gKyBnZXQoMywgMikgKiBibHVlICsgZ2V0KDMsIDMpICogYWxwaGEgKyBnZXQo
MywgNCkKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2MTgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDggKzMxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb2xvcjsK
LQogc3RydWN0IEZsb2F0Q29tcG9uZW50cyB7CiAgICAgRmxvYXRDb21wb25lbnRzKGZsb2F0IGEg
PSAwLCBmbG9hdCBiID0gMCwgZmxvYXQgYyA9IDAsIGZsb2F0IGQgPSAwKQogICAgIHsKQEAgLTUw
LDggKzQ4LDYgQEAgc3RydWN0IEZsb2F0Q29tcG9uZW50cyB7CiAgICAgICAgIGNvbXBvbmVudHNb
M10gPSB2YWx1ZXNbM107CiAgICAgfQogCi0gICAgRmxvYXRDb21wb25lbnRzKGNvbnN0IENvbG9y
Jik7Ci0KICAgICBGbG9hdENvbXBvbmVudHMmIG9wZXJhdG9yKz0oY29uc3QgRmxvYXRDb21wb25l
bnRzJiByaHMpCiAgICAgewogICAgICAgICBjb21wb25lbnRzWzBdICs9IHJocy5jb21wb25lbnRz
WzBdOwpAQCAtMTAxLDYgKzk3LDEyIEBAIHN0cnVjdCBGbG9hdENvbXBvbmVudHMgewogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+Cisg
ICAgZmxvYXQgZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wb25lbnRzW05d
OworICAgIH0KKwogICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+IGNvbXBvbmVudHM7CiB9OwogCkBA
IC0xNzYsNyArMTc4LDYgQEAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXRPZlBpeGVsKHVuc2ln
bgogZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7CiBmbG9hdCByZ2JUb0xp
bmVhckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIAotRmxvYXRDb21wb25lbnRzIHNSR0JDb2xvclRv
TGluZWFyQ29tcG9uZW50cyhjb25zdCBDb2xvciYpOwogRmxvYXRDb21wb25lbnRzIHJnYlRvTGlu
ZWFyQ29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKIEZsb2F0Q29tcG9uZW50cyBs
aW5lYXJUb1JHQkNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJik7CiAKQEAgLTE5Niwx
NyArMTk3LDU0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29sb3JNYXRyaXggaHVlUm90YXRlTWF0
cml4KGZsb2F0IGFuZ2xlSW5EZWdyZWVzKTsKICAgICBzdGF0aWMgQ29sb3JNYXRyaXggc2VwaWFN
YXRyaXgoZmxvYXQpOwogCi0gICAgQ29sb3JNYXRyaXgoKTsKLSAgICBDb2xvck1hdHJpeChjb25z
dCBmbG9hdFsyMF0pOworICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeCgpCisgICAgICAgIDogbV9t
YXRyaXggeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwIH0KKyAgICB7CisgICAgICAgIHNldCgwLCAwLCAxLjBmKTsKKyAgICAgICAgc2V0
KDEsIDEsIDEuMGYpOworICAgICAgICBzZXQoMiwgMiwgMS4wZik7CisgICAgICAgIHNldCgzLCAz
LCAxLjBmKTsKKyAgICB9CisKKworICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeChjb25zdCBmbG9h
dCgmdmFsdWVzKVsyMF0pCisgICAgICAgIDogbV9tYXRyaXggeworICAgICAgICAgICAgdmFsdWVz
WzBdLCAgdmFsdWVzWzFdLCAgdmFsdWVzWzJdLCAgdmFsdWVzWzNdLCAgdmFsdWVzWzRdLAorICAg
ICAgICAgICAgdmFsdWVzWzVdLCAgdmFsdWVzWzZdLCAgdmFsdWVzWzddLCAgdmFsdWVzWzhdLCAg
dmFsdWVzWzldLAorICAgICAgICAgICAgdmFsdWVzWzEwXSwgdmFsdWVzWzExXSwgdmFsdWVzWzEy
XSwgdmFsdWVzWzEzXSwgdmFsdWVzWzE0XSwKKyAgICAgICAgICAgIHZhbHVlc1sxNV0sIHZhbHVl
c1sxNl0sIHZhbHVlc1sxN10sIHZhbHVlc1sxOF0sIHZhbHVlc1sxOV0KKyAgICAgICAgfQorICAg
IHsKKyAgICB9CiAgICAgCiAgICAgdm9pZCB0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoRmxvYXRD
b21wb25lbnRzJikgY29uc3Q7CiAgICAgRmxvYXRDb21wb25lbnRzIHRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IHZvaWQgbWFrZUlkZW50aXR5KCk7CisgICAgY29uc3RleHByIHZvaWQgc2V0KHVuc2lnbmVkIHJv
dywgdW5zaWduZWQgY29sdW1uLCBmbG9hdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fbWF0cml4
Wyhyb3cgKiA1KSArIGNvbHVtbl0gPSB2YWx1ZTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgZmxv
YXQgZ2V0KHVuc2lnbmVkIHJvdywgdW5zaWduZWQgY29sdW1uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbWF0cml4Wyhyb3cgKiA1KSArIGNvbHVtbl07CisgICAgfQogCi0gICAgZmxvYXQgbV9t
YXRyaXhbNF1bNV07CisgICAgZmxvYXQgbV9tYXRyaXhbMjBdOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCituYW1lc3BhY2Ugc3RkIHsKKwordGVtcGxhdGU8Pgorc3RydWN0IHR1cGxl
X3NpemU8V2ViQ29yZTo6RmxvYXRDb21wb25lbnRzPiA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8
c3RkOjpzaXplX3QsIDQ+IHsKK307CisKK3RlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+CitzdHJ1Y3Qg
dHVwbGVfZWxlbWVudDxOLCBXZWJDb3JlOjpGbG9hdENvbXBvbmVudHM+IHsKKyAgICB1c2luZyB0
eXBlID0gZmxvYXQ7Cit9OworCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>400477</attachid>
            <date>2020-05-28 10:38:36 -0700</date>
            <delta_ts>2020-05-28 11:05:09 -0700</delta_ts>
            <desc>matrix.cpp</desc>
            <filename>matrix.cpp</filename>
            <type>text/x-csrc</type>
            <size>4261</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KI2luY2x1ZGUgPHN0
ZGlvLmg+CgpuYW1lc3BhY2UgV2ViQ29yZSB7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3Qg
Q29sb3JDb21wb25lbnRzIHsKICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IFNpemUgPSA0OyAK
ICAgIAogICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cygpCiAgICAgICAgOiBjb21wb25lbnRz
IHsgMCwgMCwgMCwgMCB9CiAgICB7CiAgICB9CiAgICAKICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHMoVCBhLCBUIGIsIFQgYywgVCBkKQogICAgICAgIDogY29tcG9uZW50cyB7IGEsIGIsIGMs
IGQgfQogICAgewogICAgfQoKICAgIHN0ZDo6YXJyYXk8VCwgU2l6ZT4gY29tcG9uZW50czsKfTsK
CnRlbXBsYXRlPHNpemVfdCBDb2x1bW5zLCBzaXplX3QgUm93cz4KY2xhc3MgQ29sb3JNYXRyaXgg
ewpwdWJsaWM6CiAgICB1c2luZyBBcnJheVR5cGUgPSBzdGQ6OmFycmF5PGZsb2F0LCBSb3dzICog
Q29sdW1ucz47CiAgICAKICAgIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gZ3Jh
eXNjYWxlTWF0cml4KGZsb2F0KTsKICAgIC8vIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8
MywgMz4gc2F0dXJhdGlvbk1hdHJpeChmbG9hdCk7CiAgICAvLyBzdGF0aWMgY29uc3RleHByIENv
bG9yTWF0cml4PDMsIDM+IGh1ZVJvdGF0ZU1hdHJpeChmbG9hdCBhbmdsZUluRGVncmVlcyk7CiAg
ICAvLyBzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHNlcGlhTWF0cml4KGZsb2F0
KTsKCiAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXgoY29uc3QgQXJyYXlUeXBlJiBpbnB1dCkKICAg
ICAgICA6IG1fbWF0cml4IHsgaW5wdXQgfQogICAgewogICAgfQoKICAgIGNvbnN0ZXhwciB2b2lk
IHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JikgY29uc3Q7
CiAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPGZsb2F0PiB0cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JikgY29uc3Q7Cgpwcml2YXRlOgog
ICAgY29uc3RleHByIGZsb2F0IGF0KHNpemVfdCByb3csIHNpemVfdCBjb2x1bW4pIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIG1fbWF0cml4Wyhyb3cgKiBDb2x1bW5zKSArIGNvbHVtbl07CiAg
ICB9CgogICAgQXJyYXlUeXBlIG1fbWF0cml4Owp9OwoKdGVtcGxhdGU8c2l6ZV90IENvbHVtbnMs
IHNpemVfdCBSb3dzPgpjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gQ29sb3JNYXRyaXg8Q29s
dW1ucywgUm93cz46OmdyYXlzY2FsZU1hdHJpeChmbG9hdCBhbW91bnQpCnsKICAgIGZsb2F0IG9u
ZU1pbnVzQW1vdW50ID0gc3RkOjpjbGFtcCgxLjBmIC0gYW1vdW50LCAwLjBmLCAxLjBmKTsKICAg
IHJldHVybiBDb2xvck1hdHJpeDwzLCAzPiB7ewogICAgICAgIDAuMjEyNmYgKyAwLjc4NzRmICog
b25lTWludXNBbW91bnQsIDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQsIDAuMDcy
MmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQsIAogICAgICAgIDAuMjEyNmYgLSAwLjIxMjZm
ICogb25lTWludXNBbW91bnQsIDAuNzE1MmYgKyAwLjI4NDhmICogb25lTWludXNBbW91bnQsIDAu
MDcyMmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQsCiAgICAgICAgMC4yMTI2ZiAtIDAuMjEy
NmYgKiBvbmVNaW51c0Ftb3VudCwgMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3VudCwg
MC4wNzIyZiArIDAuOTI3OGYgKiBvbmVNaW51c0Ftb3VudAogICAgfX07Cn0KCgp0ZW1wbGF0ZTxz
aXplX3QgQ29sdW1ucywgc2l6ZV90IFJvd3M+CmNvbnN0ZXhwciB2b2lkIENvbG9yTWF0cml4PENv
bHVtbnMsIFJvd3M+Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoQ29sb3JDb21wb25lbnRzPGZs
b2F0PiYgaW5wdXRWZWN0b3IpIGNvbnN0CnsKICAgIGlucHV0VmVjdG9yID0gdHJhbnNmb3JtZWRD
b2xvckNvbXBvbmVudHMoaW5wdXRWZWN0b3IpOwp9Cgp0ZW1wbGF0ZTxzaXplX3QgQ29sdW1ucywg
c2l6ZV90IFJvd3M+CmNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IENvbG9yTWF0cml4
PENvbHVtbnMsIFJvd3M+Ojp0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhjb25zdCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQ+JiBpbnB1dFZlY3RvcikgY29uc3QKewogICAgc3RhdGljX2Fzc2VydChD
b2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplID49IFJvd3MpOyAgICAKICAgIAogICAgQ29sb3JD
b21wb25lbnRzPGZsb2F0PiByZXN1bHQ7CiAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBS
b3dzOyArK3JvdykgewoKICAgICAgICBpZiBjb25zdGV4cHIgKENvbHVtbnMgPT0gQ29sb3JDb21w
b25lbnRzPGZsb2F0Pjo6U2l6ZSkgewogICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAw
OyBjb2x1bW4gPCBDb2x1bW5zOyArK2NvbHVtbikKICAgICAgICAgICAgICAgIHJlc3VsdC5jb21w
b25lbnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRWZWN0b3IuY29tcG9uZW50c1tj
b2x1bW5dOwogICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKENvbHVtbnMgPj0gQ29sb3JDb21w
b25lbnRzPGZsb2F0Pjo6U2l6ZSkgewogICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAw
OyBjb2x1bW4gPCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyArK2NvbHVtbikKICAgICAg
ICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5w
dXRWZWN0b3IuY29tcG9uZW50c1tjb2x1bW5dOyAgICAgICAgCiAgICAgICAgICAgIGZvciAoc2l6
ZV90IGFkZGl0aW9uYWxDb2x1bW4gPSBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyBhZGRp
dGlvbmFsQ29sdW1uIDwgQ29sdW1uczsgKythZGRpdGlvbmFsQ29sdW1uKQogICAgICAgICAgICAg
ICAgcmVzdWx0LmNvbXBvbmVudHNbcm93XSArPSBhdChyb3csIGFkZGl0aW9uYWxDb2x1bW4pOwog
ICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKENvbHVtbnMgPCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+OjpTaXplKSB7CiAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNvbHVtbiA8
IENvbHVtbnM7ICsrY29sdW1uKQogICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93
XSArPSBhdChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvci5jb21wb25lbnRzW2NvbHVtbl07CiAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhc2UgaW5wdXRWZWN0b3Iuc2l6ZSgpID4gQ29sdW1u
cywgbWF5IG5vdCBiZSBjb21wbGV0ZWx5IGNvbnNpZGVyZWQuCiAgICAgICAgfQogICAgfQogICAg
aWYgY29uc3RleHByIChDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplID4gUm93cykgewogICAg
ICAgIGZvciAoc2l6ZV90IGFkZGl0aW9uYWxSb3cgPSBSb3dzOyBhZGRpdGlvbmFsUm93IDwgQ29s
b3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZTsgKythZGRpdGlvbmFsUm93KSB7CiAgICAgICAgICAg
IHJlc3VsdC5jb21wb25lbnRzW2FkZGl0aW9uYWxSb3ddID0gaW5wdXRWZWN0b3IuY29tcG9uZW50
c1thZGRpdGlvbmFsUm93XTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKfQoK
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKCmludCBtYWluIChpbnQgYXJnYywgY2hhciBjb25zdCAq
YXJndltdKQp7CiAgICBjb25zdGV4cHIgYXV0byBtYXRyaXggPSBXZWJDb3JlOjpDb2xvck1hdHJp
eDwzLCAzPjo6Z3JheXNjYWxlTWF0cml4KDIpOwogICAgY29uc3RleHByIGF1dG8gY29tcG9uZW50
cyA9IFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50cyB7IC41ZiAsIC43ZiAsIC4zZiAsIC4xZiB9OwoK
ICAgIGNvbnN0ZXhwciBhdXRvIHRyYW5zZm9ybWVkQ29tcG9uZW50cyA9IG1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhjb21wb25lbnRzKTsKICAgIAogICAgcHJpbnRmKCIlZiwgJWYs
ICVmLCAlZlxuIiwgdHJhbnNmb3JtZWRDb21wb25lbnRzLmNvbXBvbmVudHNbMF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZENvbXBvbmVudHMuY29tcG9uZW50c1sx
XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkQ29tcG9uZW50cy5j
b21wb25lbnRzWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRD
b21wb25lbnRzLmNvbXBvbmVudHNbM10pOwoKICAgIHJldHVybiAwOwp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>400482</attachid>
            <date>2020-05-28 11:05:09 -0700</date>
            <delta_ts>2020-05-28 11:05:09 -0700</delta_ts>
            <desc>proof of concept</desc>
            <filename>matrix.cpp</filename>
            <type>text/x-csrc</type>
            <size>4348</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KI2luY2x1ZGUgPHN0
ZGlvLmg+CgpuYW1lc3BhY2UgV2ViQ29yZSB7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3Qg
Q29sb3JDb21wb25lbnRzIHsKICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IFNpemUgPSA0OyAK
ICAgIAogICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cygpCiAgICAgICAgOiBjb21wb25lbnRz
IHsgMCwgMCwgMCwgMCB9CiAgICB7CiAgICB9CiAgICAKICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHMoVCBhLCBUIGIsIFQgYywgVCBkKQogICAgICAgIDogY29tcG9uZW50cyB7IGEsIGIsIGMs
IGQgfQogICAgewogICAgfQoKICAgIHN0ZDo6YXJyYXk8VCwgU2l6ZT4gY29tcG9uZW50czsKfTsK
CnRlbXBsYXRlPHNpemVfdCBDb2x1bW5zLCBzaXplX3QgUm93cz4KY2xhc3MgQ29sb3JNYXRyaXgg
ewpwdWJsaWM6CiAgICB1c2luZyBBcnJheVR5cGUgPSBzdGQ6OmFycmF5PGZsb2F0LCBSb3dzICog
Q29sdW1ucz47CiAgICAKICAgIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gZ3Jh
eXNjYWxlTWF0cml4KGZsb2F0KTsKICAgIC8vIHN0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8
MywgMz4gc2F0dXJhdGlvbk1hdHJpeChmbG9hdCk7CiAgICAvLyBzdGF0aWMgY29uc3RleHByIENv
bG9yTWF0cml4PDMsIDM+IGh1ZVJvdGF0ZU1hdHJpeChmbG9hdCBhbmdsZUluRGVncmVlcyk7CiAg
ICAvLyBzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHNlcGlhTWF0cml4KGZsb2F0
KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5Ucz4KICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBD
b2xvck1hdHJpeChUcyAuLi5pbnB1dCkKICAgICAgICA6IG1fbWF0cml4IHt7IGlucHV0IC4uLiB9
fQogICAgewogICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mLi4uKFRzKSA9PSBSb3dzICogQ29s
dW1ucyk7CiAgICB9CgogICAgY29uc3RleHByIHZvaWQgdHJhbnNmb3JtQ29sb3JDb21wb25lbnRz
KENvbG9yQ29tcG9uZW50czxmbG9hdD4mKSBjb25zdDsKICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+IHRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9u
ZW50czxmbG9hdD4mKSBjb25zdDsKCnByaXZhdGU6CiAgICBjb25zdGV4cHIgZmxvYXQgYXQoc2l6
ZV90IHJvdywgc2l6ZV90IGNvbHVtbikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXRy
aXhbKHJvdyAqIENvbHVtbnMpICsgY29sdW1uXTsKICAgIH0KCiAgICBBcnJheVR5cGUgbV9tYXRy
aXg7Cn07Cgp0ZW1wbGF0ZTxzaXplX3QgQ29sdW1ucywgc2l6ZV90IFJvd3M+CmNvbnN0ZXhwciBD
b2xvck1hdHJpeDwzLCAzPiBDb2xvck1hdHJpeDxDb2x1bW5zLCBSb3dzPjo6Z3JheXNjYWxlTWF0
cml4KGZsb2F0IGFtb3VudCkKewogICAgZmxvYXQgb25lTWludXNBbW91bnQgPSBzdGQ6OmNsYW1w
KDEuMGYgLSBhbW91bnQsIDAuMGYsIDEuMGYpOwogICAgcmV0dXJuIENvbG9yTWF0cml4PDMsIDM+
IHsKICAgICAgICAwLjIxMjZmICsgMC43ODc0ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjcxNTJmIC0g
MC43MTUyZiAqIG9uZU1pbnVzQW1vdW50LCAwLjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1v
dW50LCAKICAgICAgICAwLjIxMjZmIC0gMC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjcxNTJm
ICsgMC4yODQ4ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVz
QW1vdW50LAogICAgICAgIDAuMjEyNmYgLSAwLjIxMjZmICogb25lTWludXNBbW91bnQsIDAuNzE1
MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQsIDAuMDcyMmYgKyAwLjkyNzhmICogb25lTWlu
dXNBbW91bnQKICAgIH07Cn0KCgp0ZW1wbGF0ZTxzaXplX3QgQ29sdW1ucywgc2l6ZV90IFJvd3M+
CmNvbnN0ZXhwciB2b2lkIENvbG9yTWF0cml4PENvbHVtbnMsIFJvd3M+Ojp0cmFuc2Zvcm1Db2xv
ckNvbXBvbmVudHMoQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgaW5wdXRWZWN0b3IpIGNvbnN0CnsK
ICAgIGlucHV0VmVjdG9yID0gdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoaW5wdXRWZWN0b3Ip
Owp9Cgp0ZW1wbGF0ZTxzaXplX3QgQ29sdW1ucywgc2l6ZV90IFJvd3M+CmNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQ+IENvbG9yTWF0cml4PENvbHVtbnMsIFJvd3M+Ojp0cmFuc2Zvcm1l
ZENvbG9yQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBpbnB1dFZlY3Rv
cikgY29uc3QKewogICAgc3RhdGljX2Fzc2VydChDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXpl
ID49IFJvd3MpOyAgICAKICAgIAogICAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiByZXN1bHQ7CiAg
ICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBSb3dzOyArK3JvdykgewoKICAgICAgICBpZiBj
b25zdGV4cHIgKENvbHVtbnMgPT0gQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZSkgewogICAg
ICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBDb2x1bW5zOyArK2NvbHVt
bikKICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzW3Jvd10gKz0gYXQocm93LCBjb2x1
bW4pICogaW5wdXRWZWN0b3IuY29tcG9uZW50c1tjb2x1bW5dOwogICAgICAgIH0gZWxzZSBpZiBj
b25zdGV4cHIgKENvbHVtbnMgPj0gQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZSkgewogICAg
ICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+OjpTaXplOyArK2NvbHVtbikKICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRz
W3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRWZWN0b3IuY29tcG9uZW50c1tjb2x1bW5d
OyAgICAgICAgCiAgICAgICAgICAgIGZvciAoc2l6ZV90IGFkZGl0aW9uYWxDb2x1bW4gPSBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyBhZGRpdGlvbmFsQ29sdW1uIDwgQ29sdW1uczsgKyth
ZGRpdGlvbmFsQ29sdW1uKQogICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93XSAr
PSBhdChyb3csIGFkZGl0aW9uYWxDb2x1bW4pOwogICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIg
KENvbHVtbnMgPCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplKSB7CiAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNvbHVtbiA8IENvbHVtbnM7ICsrY29sdW1uKQogICAgICAg
ICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93XSArPSBhdChyb3csIGNvbHVtbikgKiBpbnB1
dFZlY3Rvci5jb21wb25lbnRzW2NvbHVtbl07CiAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNh
c2UgaW5wdXRWZWN0b3Iuc2l6ZSgpID4gQ29sdW1ucywgbWF5IG5vdCBiZSBjb21wbGV0ZWx5IGNv
bnNpZGVyZWQuCiAgICAgICAgfQogICAgfQogICAgaWYgY29uc3RleHByIChDb2xvckNvbXBvbmVu
dHM8ZmxvYXQ+OjpTaXplID4gUm93cykgewogICAgICAgIGZvciAoc2l6ZV90IGFkZGl0aW9uYWxS
b3cgPSBSb3dzOyBhZGRpdGlvbmFsUm93IDwgQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZTsg
KythZGRpdGlvbmFsUm93KSB7CiAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzW2FkZGl0aW9u
YWxSb3ddID0gaW5wdXRWZWN0b3IuY29tcG9uZW50c1thZGRpdGlvbmFsUm93XTsKICAgICAgICB9
CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKCmlu
dCBtYWluIChpbnQgYXJnYywgY2hhciBjb25zdCAqYXJndltdKQp7CiAgICBjb25zdGV4cHIgYXV0
byBtYXRyaXggPSBXZWJDb3JlOjpDb2xvck1hdHJpeDwzLCAzPjo6Z3JheXNjYWxlTWF0cml4KDIp
OwogICAgY29uc3RleHByIGF1dG8gY29tcG9uZW50cyA9IFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50
cyB7IC41ZiAsIC43ZiAsIC4zZiAsIC4xZiB9OwoKICAgIGNvbnN0ZXhwciBhdXRvIHRyYW5zZm9y
bWVkQ29tcG9uZW50cyA9IG1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhjb21wb25l
bnRzKTsKICAgIAogICAgcHJpbnRmKCIlZiwgJWYsICVmLCAlZlxuIiwgdHJhbnNmb3JtZWRDb21w
b25lbnRzLmNvbXBvbmVudHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm1lZENvbXBvbmVudHMuY29tcG9uZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zZm9ybWVkQ29tcG9uZW50cy5jb21wb25lbnRzWzJdLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRDb21wb25lbnRzLmNvbXBvbmVudHNbM10pOwoK
ICAgIHJldHVybiAwOwp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400504</attachid>
            <date>2020-05-28 14:11:33 -0700</date>
            <delta_ts>2020-05-28 16:25:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212477-20200528141132.patch</filename>
            <type>text/plain</type>
            <size>32465</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDIwLTA1LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQ29sb3JN
YXRyaXggc2hvdWxkIHN1cHBvcnQgc21hbGxlciBtYXRyaWNlcyBhbmQgYmUgY29uc3RleHByCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yQ29tcG9uZW50czo6Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yQ29tcG9uZW50czo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNv
bXBvbmVudHM6Om9wZXJhdG9yKyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBv
bmVudHM6Om9wZXJhdG9yLyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6
OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgorICAgICAgICAoV2ViQ29y
ZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JNYXRyaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6Q29sb3JNYXRyaXgp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OmF0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmdyYXlzY2FsZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcGlhQ29s
b3JNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6c2F0dXJhdGlvbkNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6Omh1ZVJvdGF0ZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6
OlJvd3M+Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Um93cz46OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4
eXpUb0xpbmVhclNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyU1JHQlRvWFlaKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhZWlRvTGluZWFyUDMpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFy
UDNUb1hZWik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmZhc3RNdWx0aXBseUJ5MjU1KToKKyAgICAgICAgKFdlYkNvcmU6
OmZhc3REaXZpZGVCeTI1NSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OmludmVyc2VU
cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaDoKKworMjAyMC0wNS0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5kZWQgQ29sb3I6IENvbG9yTWF0cml4IHNob3VsZCBz
dXBwb3J0IHNtYWxsZXIgbWF0cmljZXMgYW5kIGJlIGNvbnN0ZXhwcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBv
bmVudHM6OkNvbG9yQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM6Om9wZXJhdG9yKz0pOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVy
YXRvcisgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRv
ci8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRvciog
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjphYnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpnZXQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6cGVyQ29tcG9uZW50TWF4KToKKyAgICAgICAgKFdlYkNvcmU6OnBlckNvbXBvbmVu
dE1pbik6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbG9yTWF0cml4OjphdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpncmF5c2Nh
bGVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpzZXBpYUNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6OnNhdHVyYXRpb25Db2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpodWVSb3RhdGVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpSb3dzPjo6dHJhbnNm
b3JtQ29sb3JDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvd3M+Ojp0cmFu
c2Zvcm1lZENvbG9yQ29tcG9uZW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6eHl6VG9MaW5lYXJTUkdC
KToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclNSR0JUb1hZWik6CisgICAgICAgIChXZWJDb3Jl
OjpYWVpUb0xpbmVhclAzKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclAzVG9YWVopOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpmYXN0TXVsdGlwbHlCeTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpmYXN0RGl2aWRlQnky
NTUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246
OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludmVydExpZ2h0bmVz
c0ZpbHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjppbnZlcnNlVHJhbnNmb3JtQ29sb3Ig
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmg6CisKIDIwMjAtMDUtMjggIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFsgbWFjT1MgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L3JvbGVzLWV4cG9z
ZWQuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAy
NjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTg3Miw3ICsxODcyLDYgQEAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCi1wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvck1hdHJpeC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVz
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMTY0LDcgKzEwMTY0LDYgQEAKIAkJN0M5REJGRUExQTlD
NDg5RjAwMEQ2QjI1IC8qIEhUTUxBdHRhY2htZW50RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5REJGRUIx
QTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5REJGRUMxQTlDNDlCMTAwMEQ2QjI1IC8q
IEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTdDQUM2QUU2MjQ3RjA4MUYwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb2xvck1hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDQUM2QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2xvck1hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0FDNkFFQzI0
N0YxQzUxMDBFNjFENTkgLyogQ29sb3JDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbG9yQ29tcG9uZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Q0I1Q0EzRDFFNTI1QzZDMDBGQUVGMTMgLyogTWVkaWFRdWVyeUV4cHJlc3Npb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFRdWVyeUV4cHJlc3Np
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0MjYsNyArMjU0MjUsNiBA
QAogCQkJCUIyNzUzNTM5MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLAogCQkJCTdDQUM2
QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMuaCAqLywKIAkJCQkzMTAzQjdE
RTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCi0JCQkJN0NBQzZBRTYyNDdGMDgx
RjAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmNwcCAqLywKIAkJCQk3Q0FDNkFFODI0N0YwODIwMDBF
NjFENTkgLyogQ29sb3JNYXRyaXguaCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIg
LyogQ29sb3JTcGFjZS5oICovLAogCQkJCTBGRTZDNzZCMUZCRkI3QTYwMDI1QzA1MyAvKiBDb2xv
clV0aWxpdGllcy5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjYyMjUyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDE3ICszNCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKLSAgICBDb2xvckNvbXBvbmVudHMo
VCBhID0gMCwgVCBiID0gMCwgVCBjID0gMCwgVCBkID0gMCkKKyAgICBjb25zdGV4cHIgc3RhdGlj
IHNpemVfdCBTaXplID0gNDsKKworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMoVCBhID0g
MCwgVCBiID0gMCwgVCBjID0gMCwgVCBkID0gMCkKICAgICAgICAgOiBjb21wb25lbnRzIHsgYSwg
YiwgYywgZCB9CiAgICAgewogICAgIH0KIAotICAgIENvbG9yQ29tcG9uZW50cyhjb25zdCBzdGQ6
OmFycmF5PFQsIDQ+JiB2YWx1ZXMpCisgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyhjb25z
dCBzdGQ6OmFycmF5PFQsIFNpemU+JiB2YWx1ZXMpCiAgICAgICAgIDogY29tcG9uZW50cyB7IHZh
bHVlcyB9CiAgICAgewogICAgIH0KIAotICAgIENvbG9yQ29tcG9uZW50cyYgb3BlcmF0b3IrPShj
b25zdCBDb2xvckNvbXBvbmVudHMmIHJocykKKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRz
JiBvcGVyYXRvcis9KGNvbnN0IENvbG9yQ29tcG9uZW50cyYgcmhzKQogICAgIHsKICAgICAgICAg
Y29tcG9uZW50c1swXSArPSByaHMuY29tcG9uZW50c1swXTsKICAgICAgICAgY29tcG9uZW50c1sx
XSArPSByaHMuY29tcG9uZW50c1sxXTsKQEAgLTUzLDcgKzU1LDcgQEAgc3RydWN0IENvbG9yQ29t
cG9uZW50cyB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBDb2xvckNvbXBv
bmVudHMgb3BlcmF0b3IrKFQgcmhzKSBjb25zdAorICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVu
dHMgb3BlcmF0b3IrKFQgcmhzKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHsKICAgICAg
ICAgICAgIGNvbXBvbmVudHNbMF0gKyByaHMsCkBAIC02Myw3ICs2NSw3IEBAIHN0cnVjdCBDb2xv
ckNvbXBvbmVudHMgewogICAgICAgICB9OwogICAgIH0KIAotICAgIENvbG9yQ29tcG9uZW50cyBv
cGVyYXRvci8oVCBkZW5vbWluYXRvcikgY29uc3QKKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzIG9wZXJhdG9yLyhUIGRlbm9taW5hdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IHsKICAgICAgICAgICAgIGNvbXBvbmVudHNbMF0gLyBkZW5vbWluYXRvciwKQEAgLTczLDcgKzc1
LDcgQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAgICAgICAgIH07CiAgICAgfQogCi0gICAg
Q29sb3JDb21wb25lbnRzIG9wZXJhdG9yKihUIGZhY3RvcikgY29uc3QKKyAgICBjb25zdGV4cHIg
Q29sb3JDb21wb25lbnRzIG9wZXJhdG9yKihUIGZhY3RvcikgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiB7CiAgICAgICAgICAgICBjb21wb25lbnRzWzBdICogZmFjdG9yLApAQCAtODMsNyAr
ODUsNyBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICAgICAgfTsKICAgICB9CiAKLSAg
ICBDb2xvckNvbXBvbmVudHMgYWJzKCkgY29uc3QKKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzIGFicygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgc3Rk
OjphYnMoY29tcG9uZW50c1swXSksCkBAIC05NCwxNyArOTYsMTcgQEAgc3RydWN0IENvbG9yQ29t
cG9uZW50cyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgTj4KLSAgICBUIGdl
dCgpIGNvbnN0CisgICAgY29uc3RleHByIFQgZ2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBjb21wb25lbnRzW05dOwogICAgIH0KIAotICAgIHN0ZDo6YXJyYXk8VCwgND4gY29tcG9u
ZW50czsKKyAgICBzdGQ6OmFycmF5PFQsIFNpemU+IGNvbXBvbmVudHM7CiB9OwogCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1h
eChjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYg
YikKK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENv
bG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewogICAg
IHJldHVybiB7CiAgICAgICAgIHN0ZDo6bWF4KGEuY29tcG9uZW50c1swXSwgYi5jb21wb25lbnRz
WzBdKSwKQEAgLTExNSw3ICsxMTcsNyBAQCBpbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNv
bXBvbmVudE1hCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgQ29sb3JDb21wb25l
bnRzPFQ+IHBlckNvbXBvbmVudE1pbihjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0
IENvbG9yQ29tcG9uZW50czxUPiYgYikKK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVy
Q29tcG9uZW50TWluKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21w
b25lbnRzPFQ+JiBiKQogewogICAgIHJldHVybiB7CiAgICAgICAgIHN0ZDo6bWluKGEuY29tcG9u
ZW50c1swXSwgYi5jb21wb25lbnRzWzBdKSwKQEAgLTEyNiwxMyArMTI4LDEzIEBAIGlubGluZSBD
b2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBj
b25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQog
ewogICAgIHJldHVybiBhLmNvbXBvbmVudHMgPT0gYi5jb21wb25lbnRzOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xvckNvbXBvbmVu
dHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKK2NvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVu
dHM8VD4mIGIpCiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KQEAgLTE0Miw3ICsxNDQsNyBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yQ29tcG9uCiBuYW1lc3BhY2Ugc3Rk
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHR1cGxlX3NpemU8V2ViQ29yZTo6Q29s
b3JDb21wb25lbnRzPFQ+PiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6
ZV90LCA0PiB7CitjbGFzcyB0dXBsZV9zaXplPFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czxUPj4g
OiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgV2ViQ29yZTo6Q29s
b3JDb21wb25lbnRzPFQ+OjpTaXplPiB7CiB9OwogCiB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOLCB0
eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JN
YXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yTWF0cml4LmNwcAkocmV2aXNpb24gMjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguY3BwCShub25leGlzdGVudCkKQEAgLTEsMTg0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb2xvck1hdHJpeC5o
IgotCi0jaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Db2xvck1hdHJpeDo6Q29sb3JNYXRyaXgo
KQotewotICAgIG1ha2VJZGVudGl0eSgpOwotfQotCi1Db2xvck1hdHJpeDo6Q29sb3JNYXRyaXgo
Y29uc3QgZmxvYXQgdmFsdWVzWzIwXSkKLXsKLSAgICBtX21hdHJpeFswXVswXSA9IHZhbHVlc1sw
XTsKLSAgICBtX21hdHJpeFswXVsxXSA9IHZhbHVlc1sxXTsKLSAgICBtX21hdHJpeFswXVsyXSA9
IHZhbHVlc1syXTsKLSAgICBtX21hdHJpeFswXVszXSA9IHZhbHVlc1szXTsKLSAgICBtX21hdHJp
eFswXVs0XSA9IHZhbHVlc1s0XTsKLQotICAgIG1fbWF0cml4WzFdWzBdID0gdmFsdWVzWzVdOwot
ICAgIG1fbWF0cml4WzFdWzFdID0gdmFsdWVzWzZdOwotICAgIG1fbWF0cml4WzFdWzJdID0gdmFs
dWVzWzddOwotICAgIG1fbWF0cml4WzFdWzNdID0gdmFsdWVzWzhdOwotICAgIG1fbWF0cml4WzFd
WzRdID0gdmFsdWVzWzldOwotCi0gICAgbV9tYXRyaXhbMl1bMF0gPSB2YWx1ZXNbMTBdOwotICAg
IG1fbWF0cml4WzJdWzFdID0gdmFsdWVzWzExXTsKLSAgICBtX21hdHJpeFsyXVsyXSA9IHZhbHVl
c1sxMl07Ci0gICAgbV9tYXRyaXhbMl1bM10gPSB2YWx1ZXNbMTNdOwotICAgIG1fbWF0cml4WzJd
WzRdID0gdmFsdWVzWzE0XTsKLQotICAgIG1fbWF0cml4WzNdWzBdID0gdmFsdWVzWzE1XTsKLSAg
ICBtX21hdHJpeFszXVsxXSA9IHZhbHVlc1sxNl07Ci0gICAgbV9tYXRyaXhbM11bMl0gPSB2YWx1
ZXNbMTddOwotICAgIG1fbWF0cml4WzNdWzNdID0gdmFsdWVzWzE4XTsKLSAgICBtX21hdHJpeFsz
XVs0XSA9IHZhbHVlc1sxOV07Ci19Ci0KLXZvaWQgQ29sb3JNYXRyaXg6Om1ha2VJZGVudGl0eSgp
Ci17Ci0gICAgbWVtc2V0KG1fbWF0cml4LCAwLCBzaXplb2YobV9tYXRyaXgpKTsKLSAgICBtX21h
dHJpeFswXVswXSA9IDE7Ci0gICAgbV9tYXRyaXhbMV1bMV0gPSAxOwotICAgIG1fbWF0cml4WzJd
WzJdID0gMTsKLSAgICBtX21hdHJpeFszXVszXSA9IDE7Ci19Ci0KLUNvbG9yTWF0cml4IENvbG9y
TWF0cml4OjpncmF5c2NhbGVNYXRyaXgoZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4
IG1hdHJpeDsKLQotICAgIGZsb2F0IG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gYW1vdW50
LCAwLjAsIDEuMCk7Ci0KLSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIv
ZmlsdGVyLWVmZmVjdHMtMS8jZ3JheXNjYWxlRXF1aXZhbGVudAotICAgIG1hdHJpeC5tX21hdHJp
eFswXVswXSA9IDAuMjEyNmYgKyAwLjc4NzRmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4
Lm1fbWF0cml4WzBdWzFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3VudDsKLSAg
ICBtYXRyaXgubV9tYXRyaXhbMF1bMl0gPSAwLjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1v
dW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzBdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBv
bmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAwLjcxNTJmICsgMC4y
ODQ4ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsyXSA9IDAuMDcy
MmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMl1b
MF0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21h
dHJpeFsyXVsxXSA9IDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0
cml4Lm1fbWF0cml4WzJdWzJdID0gMC4wNzIyZiArIDAuOTI3OGYgKiBvbmVNaW51c0Ftb3VudDsK
LSAgICAKLSAgICByZXR1cm4gbWF0cml4OwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6
c2F0dXJhdGlvbk1hdHJpeChmbG9hdCBhbW91bnQpCi17Ci0gICAgQ29sb3JNYXRyaXggbWF0cml4
OwotCi0gICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZl
Y3RzLTEvI2ZlQ29sb3JNYXRyaXhFbGVtZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0g
MC4yMTNmICsgMC43ODdmICogYW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsxXSA9IDAu
NzE1ZiAtIDAuNzE1ZiAqIGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMl0gPSAwLjA3
MmYgLSAwLjA3MmYgKiBhbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjIx
M2YgLSAwLjIxM2YgKiBhbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzFdID0gMC43MTVm
ICsgMC4yODVmICogYW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsyXSA9IDAuMDcyZiAt
IDAuMDcyZiAqIGFtb3VudDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjEzZiAt
IDAuMjEzZiAqIGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjcxNWYgLSAw
LjcxNWYgKiBhbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzJdID0gMC4wNzJmICsgMC45
MjhmICogYW1vdW50OwotCi0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQotQ29sb3JNYXRyaXggQ29s
b3JNYXRyaXg6Omh1ZVJvdGF0ZU1hdHJpeChmbG9hdCBhbmdsZUluRGVncmVlcykKLXsKLSAgICBm
bG9hdCBjb3NIdWUgPSBjb3MoZGVnMnJhZChhbmdsZUluRGVncmVlcykpOwotICAgIGZsb2F0IHNp
bkh1ZSA9IHNpbihkZWcycmFkKGFuZ2xlSW5EZWdyZWVzKSk7Ci0KLSAgICBDb2xvck1hdHJpeCBt
YXRyaXg7Ci0KLSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVy
LWVmZmVjdHMtMS8jZmVDb2xvck1hdHJpeEVsZW1lbnQKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1b
MF0gPSAwLjIxM2YgKyBjb3NIdWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAwLjIxM2Y7Ci0gICAgbWF0
cml4Lm1fbWF0cml4WzBdWzFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmIC0gc2luSHVlICog
MC43MTVmOwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsyXSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAu
MDcyZiArIHNpbkh1ZSAqIDAuOTI4ZjsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsxXVswXSA9IDAu
MjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiArIHNpbkh1ZSAqIDAuMTQzZjsKLSAgICBtYXRyaXgubV9t
YXRyaXhbMV1bMV0gPSAwLjcxNWYgKyBjb3NIdWUgKiAwLjI4NWYgKyBzaW5IdWUgKiAwLjE0MGY7
Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmIC0g
c2luSHVlICogMC4yODNmOwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yMTNmIC0g
Y29zSHVlICogMC4yMTNmIC0gc2luSHVlICogMC43ODdmOwotICAgIG1hdHJpeC5tX21hdHJpeFsy
XVsxXSA9IDAuNzE1ZiAtIGNvc0h1ZSAqIDAuNzE1ZiArIHNpbkh1ZSAqIDAuNzE1ZjsKLSAgICBt
YXRyaXgubV9tYXRyaXhbMl1bMl0gPSAwLjA3MmYgKyBjb3NIdWUgKiAwLjkyOGYgKyBzaW5IdWUg
KiAwLjA3MmY7Ci0KLSAgICByZXR1cm4gbWF0cml4OwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1h
dHJpeDo6c2VwaWFNYXRyaXgoZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4IG1hdHJp
eDsKLQotICAgIGZsb2F0IG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gYW1vdW50LCAwLjAs
IDEuMCk7Ci0KLSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVy
LWVmZmVjdHMtMS8jc2VwaWFFcXVpdmFsZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0g
MC4zOTNmICsgMC42MDdmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBd
WzFdID0gMC43NjlmIC0gMC43NjlmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0
cml4WzBdWzJdID0gMC4xODlmIC0gMC4xODlmICogb25lTWludXNBbW91bnQ7Ci0KLSAgICBtYXRy
aXgubV9tYXRyaXhbMV1bMF0gPSAwLjM0OWYgLSAwLjM0OWYgKiBvbmVNaW51c0Ftb3VudDsKLSAg
ICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAwLjY4NmYgKyAwLjMxNGYgKiBvbmVNaW51c0Ftb3Vu
dDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAwLjE2OGYgLSAwLjE2OGYgKiBvbmVNaW51
c0Ftb3VudDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjcyZiAtIDAuMjcyZiAq
IG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAuNTM0ZiAtIDAu
NTM0ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9IDAuMTMx
ZiArIDAuODY5ZiAqIG9uZU1pbnVzQW1vdW50OwotCi0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQot
dm9pZCBDb2xvck1hdHJpeDo6dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKENvbG9yQ29tcG9uZW50
czxmbG9hdD4mIGNvbG9yQ29tcG9uZW50cykgY29uc3QKLXsKLSAgICBhdXRvIFtyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYV0gPSBjb2xvckNvbXBvbmVudHM7Ci0KLSAgICBjb2xvckNvbXBvbmVudHMu
Y29tcG9uZW50c1swXSA9IG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBn
cmVlbiArIG1fbWF0cml4WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBt
X21hdHJpeFswXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSA9IG1fbWF0
cml4WzFdWzBdICogcmVkICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFdWzJd
ICogYmx1ZSArIG1fbWF0cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0XTsKLSAgICBj
b2xvckNvbXBvbmVudHMuY29tcG9uZW50c1syXSA9IG1fbWF0cml4WzJdWzBdICogcmVkICsgbV9t
YXRyaXhbMl1bMV0gKiBncmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSArIG1fbWF0cml4WzJd
WzNdICogYWxwaGEgKyBtX21hdHJpeFsyXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9u
ZW50c1szXSA9IG1fbWF0cml4WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiAr
IG1fbWF0cml4WzNdWzJdICogYmx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJp
eFszXVs0XTsKLX0KLQotQ29sb3JDb21wb25lbnRzPGZsb2F0PiBDb2xvck1hdHJpeDo6dHJhbnNm
b3JtZWRDb2xvckNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY29sb3JD
b21wb25lbnRzKSBjb25zdAotewotICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9
IGNvbG9yQ29tcG9uZW50czsKLQotICAgIHJldHVybiB7Ci0gICAgICAgIG1fbWF0cml4WzBdWzBd
ICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4WzBdWzJdICogYmx1ZSAr
IG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBtX21hdHJpeFswXVs0XSwKLSAgICAgICAgbV9tYXRy
aXhbMV1bMF0gKiByZWQgKyBtX21hdHJpeFsxXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMV1bMl0g
KiBibHVlICsgbV9tYXRyaXhbMV1bM10gKiBhbHBoYSArIG1fbWF0cml4WzFdWzRdLAotICAgICAg
ICBtX21hdHJpeFsyXVswXSAqIHJlZCArIG1fbWF0cml4WzJdWzFdICogZ3JlZW4gKyBtX21hdHJp
eFsyXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsyXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMl1bNF0s
Ci0gICAgICAgIG1fbWF0cml4WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiAr
IG1fbWF0cml4WzNdWzJdICogYmx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJp
eFszXVs0XQotICAgIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAkocmV2aXNpb24g
MjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXgu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzEgKzI1LDExMyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
bmFtZXNwYWNlIFdlYkNvcmUgeworI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzOworbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgbGlrZWx5IGJlIHJlcGxhY2VkIGJ5IGEgZ2Vu
ZXJpYyBtYXRyaXggY2xhc3MuIE90aGVyIHRoYW4KLS8vIHRoZSBzcGVjaWZpYyBtYXRyaXggY29u
c3R1Y3RvcnMsIHRoZXJlIGlzIG5vdGhpbmcgY29sb3Igc3BlY2lmaWMgYWJvdXQgdGhpcy4KLS8v
IEZ1dGhlcm1vcmUsIG1vc3QgdGhlc2UgZG9uJ3QgbmVlZCB0byBiZSA0eDUgbWF0cmljZXMgd2l0
aCBtb3N0IG9ubHkgbmVlZGluZwotLy8gYSAzeDMgbWF0cml4LgordGVtcGxhdGU8c2l6ZV90IENv
bHVtbnMsIHNpemVfdCBSb3dzPgogY2xhc3MgQ29sb3JNYXRyaXggewogcHVibGljOgotICAgIHN0
YXRpYyBDb2xvck1hdHJpeCBncmF5c2NhbGVNYXRyaXgoZmxvYXQpOwotICAgIHN0YXRpYyBDb2xv
ck1hdHJpeCBzYXR1cmF0aW9uTWF0cml4KGZsb2F0KTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXgg
aHVlUm90YXRlTWF0cml4KGZsb2F0IGFuZ2xlSW5EZWdyZWVzKTsKLSAgICBzdGF0aWMgQ29sb3JN
YXRyaXggc2VwaWFNYXRyaXgoZmxvYXQpOwotCi0gICAgQ29sb3JNYXRyaXgoKTsKLSAgICBDb2xv
ck1hdHJpeChjb25zdCBmbG9hdFsyMF0pOworICAgIHVzaW5nIEFycmF5VHlwZSA9IHN0ZDo6YXJy
YXk8ZmxvYXQsIFJvd3MgKiBDb2x1bW5zPjsKICAgICAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9y
Q29tcG9uZW50cyhDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JikgY29uc3Q7Ci0gICAgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiB0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JikgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uVHM+CisgICAg
ZXhwbGljaXQgY29uc3RleHByIENvbG9yTWF0cml4KFRzIC4uLmlucHV0KQorICAgICAgICA6IG1f
bWF0cml4IHt7IGlucHV0IC4uLiB9fQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YuLi4oVHMpID09IFJvd3MgKiBDb2x1bW5zKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgdm9p
ZCB0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoQ29sb3JDb21wb25lbnRzPGZsb2F0PiYpIGNvbnN0
OworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIG1ha2VJZGVudGl0eSgpOworICAgIGNvbnN0ZXhwciBmbG9hdCBhdChzaXpl
X3Qgcm93LCBzaXplX3QgY29sdW1uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWF0
cml4Wyhyb3cgKiBDb2x1bW5zKSArIGNvbHVtbl07CisgICAgfQogCi0gICAgZmxvYXQgbV9tYXRy
aXhbNF1bNV07CisgICAgQXJyYXlUeXBlIG1fbWF0cml4OwogfTsKIAorLy8gRklYTUU6IFRoZXNl
IGFyZSBvbmx5IHVzZWQgaW4gRmlsdGVyT3BlcmF0aW9ucy5jcHAuIENvbnNpZGVyIG1vdmluZyB0
aGVtIHRoZXJlLgorY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGdyYXlzY2FsZUNvbG9yTWF0
cml4KGZsb2F0IGFtb3VudCkKK3sKKyAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5v
cmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jZ3JheXNjYWxlRXF1aXZhbGVudAorICAgIGZsb2F0IG9u
ZU1pbnVzQW1vdW50ID0gc3RkOjpjbGFtcCgxLjBmIC0gYW1vdW50LCAwLjBmLCAxLjBmKTsKKyAg
ICByZXR1cm4gQ29sb3JNYXRyaXg8MywgMz4geworICAgICAgICAwLjIxMjZmICsgMC43ODc0ZiAq
IG9uZU1pbnVzQW1vdW50LCAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50LCAwLjA3
MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1vdW50LAorICAgICAgICAwLjIxMjZmIC0gMC4yMTI2
ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjcxNTJmICsgMC4yODQ4ZiAqIG9uZU1pbnVzQW1vdW50LCAw
LjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1vdW50LAorICAgICAgICAwLjIxMjZmIC0gMC4y
MTI2ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50
LCAwLjA3MjJmICsgMC45Mjc4ZiAqIG9uZU1pbnVzQW1vdW50CisgICAgfTsKK30KKworY29uc3Rl
eHByIENvbG9yTWF0cml4PDMsIDM+IHNlcGlhQ29sb3JNYXRyaXgoZmxvYXQgYW1vdW50KQorewor
ICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0x
LyNzZXBpYUVxdWl2YWxlbnQKKyAgICBmbG9hdCBvbmVNaW51c0Ftb3VudCA9IHN0ZDo6Y2xhbXAo
MS4wZiAtIGFtb3VudCwgMC4wZiwgMS4wZik7CisgICAgcmV0dXJuIENvbG9yTWF0cml4PDMsIDM+
IHsKKyAgICAgICAgMC4zOTNmICsgMC42MDdmICogb25lTWludXNBbW91bnQsIDAuNzY5ZiAtIDAu
NzY5ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjE4OWYgLSAwLjE4OWYgKiBvbmVNaW51c0Ftb3VudCwK
KyAgICAgICAgMC4zNDlmIC0gMC4zNDlmICogb25lTWludXNBbW91bnQsIDAuNjg2ZiArIDAuMzE0
ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjE2OGYgLSAwLjE2OGYgKiBvbmVNaW51c0Ftb3VudCwKKyAg
ICAgICAgMC4yNzJmIC0gMC4yNzJmICogb25lTWludXNBbW91bnQsIDAuNTM0ZiAtIDAuNTM0ZiAq
IG9uZU1pbnVzQW1vdW50LCAwLjEzMWYgKyAwLjg2OWYgKiBvbmVNaW51c0Ftb3VudAorICAgIH07
Cit9CisKK2NvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBzYXR1cmF0aW9uQ29sb3JNYXRyaXgo
ZmxvYXQgYW1vdW50KQoreworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9maWx0ZXItZWZmZWN0cy0xLyNmZUNvbG9yTWF0cml4RWxlbWVudAorICAgIHJldHVybiBDb2xv
ck1hdHJpeDwzLCAzPiB7CisgICAgICAgIDAuMjEzZiArIDAuNzg3ZiAqIGFtb3VudCwgIDAuNzE1
ZiAtIDAuNzE1ZiAqIGFtb3VudCwgMC4wNzJmIC0gMC4wNzJmICogYW1vdW50LAorICAgICAgICAw
LjIxM2YgLSAwLjc4N2YgKiBhbW91bnQsICAwLjcxNWYgKyAwLjcxNWYgKiBhbW91bnQsIDAuMDcy
ZiAtIDAuMDcyZiAqIGFtb3VudCwKKyAgICAgICAgMC4yMTNmIC0gMC43ODdmICogYW1vdW50LCAg
MC43MTVmIC0gMC43MTVmICogYW1vdW50LCAwLjA3MmYgKyAwLjA3MmYgKiBhbW91bnQKKyAgICB9
OworfQorCisvLyBOT1RFOiBodWVSb3RhdGVDb2xvck1hdHJpeCBpcyBub3QgY29uc3RleHByIGR1
ZSB0byB1c2Ugb2YgY29zL3NpbiB3aGljaCBhcmUgbm90IGNvbnN0ZXhwciB5ZXQuCitpbmxpbmUg
Q29sb3JNYXRyaXg8MywgMz4gaHVlUm90YXRlQ29sb3JNYXRyaXgoZmxvYXQgYW5nbGVJbkRlZ3Jl
ZXMpCit7CisgICAgZmxvYXQgY29zSHVlID0gY29zKGRlZzJyYWQoYW5nbGVJbkRlZ3JlZXMpKTsK
KyAgICBmbG9hdCBzaW5IdWUgPSBzaW4oZGVnMnJhZChhbmdsZUluRGVncmVlcykpOworCisgICAg
Ly8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI2Zl
Q29sb3JNYXRyaXhFbGVtZW50CisgICAgcmV0dXJuIENvbG9yTWF0cml4PDMsIDM+IHsKKyAgICAg
ICAgMC4yMTNmICsgY29zSHVlICogMC43ODdmIC0gc2luSHVlICogMC4yMTNmLCAwLjcxNWYgLSBj
b3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcxNWYsIDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcy
ZiArIHNpbkh1ZSAqIDAuOTI4ZiwKKyAgICAgICAgMC4yMTNmIC0gY29zSHVlICogMC4yMTNmICsg
c2luSHVlICogMC4xNDNmLCAwLjcxNWYgKyBjb3NIdWUgKiAwLjI4NWYgKyBzaW5IdWUgKiAwLjE0
MGYsIDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiAtIHNpbkh1ZSAqIDAuMjgzZiwKKyAgICAgICAg
MC4yMTNmIC0gY29zSHVlICogMC4yMTNmIC0gc2luSHVlICogMC43ODdmLCAwLjcxNWYgLSBjb3NI
dWUgKiAwLjcxNWYgKyBzaW5IdWUgKiAwLjcxNWYsIDAuMDcyZiArIGNvc0h1ZSAqIDAuOTI4ZiAr
IHNpbkh1ZSAqIDAuMDcyZgorICAgIH07Cit9CisKK3RlbXBsYXRlPHNpemVfdCBDb2x1bW5zLCBz
aXplX3QgUm93cz4KK2NvbnN0ZXhwciB2b2lkIENvbG9yTWF0cml4PENvbHVtbnMsIFJvd3M+Ojp0
cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgaW5wdXRWZWN0
b3IpIGNvbnN0Cit7CisgICAgaW5wdXRWZWN0b3IgPSB0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhpbnB1dFZlY3Rvcik7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBDb2x1bW5zLCBzaXplX3QgUm93
cz4KK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IENvbG9yTWF0cml4PENvbHVtbnMs
IFJvd3M+Ojp0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+JiBpbnB1dFZlY3RvcikgY29uc3QKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KENvbG9yQ29t
cG9uZW50czxmbG9hdD46OlNpemUgPj0gUm93cyk7CisgICAgCisgICAgQ29sb3JDb21wb25lbnRz
PGZsb2F0PiByZXN1bHQ7CisgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgUm93czsgKyty
b3cpIHsKKyAgICAgICAgaWYgY29uc3RleHByIChDb2x1bW5zID09IENvbG9yQ29tcG9uZW50czxm
bG9hdD46OlNpemUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNvbHVt
biA8IENvbHVtbnM7ICsrY29sdW1uKQorICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRz
W3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRWZWN0b3IuY29tcG9uZW50c1tjb2x1bW5d
OworICAgICAgICB9IGVsc2UgaWYgY29uc3RleHByIChDb2x1bW5zID49IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNv
bHVtbiA8IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7ICsrY29sdW1uKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5jb21wb25lbnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRW
ZWN0b3IuY29tcG9uZW50c1tjb2x1bW5dOworICAgICAgICAgICAgZm9yIChzaXplX3QgYWRkaXRp
b25hbENvbHVtbiA9IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7IGFkZGl0aW9uYWxDb2x1
bW4gPCBDb2x1bW5zOyArK2FkZGl0aW9uYWxDb2x1bW4pCisgICAgICAgICAgICAgICAgcmVzdWx0
LmNvbXBvbmVudHNbcm93XSArPSBhdChyb3csIGFkZGl0aW9uYWxDb2x1bW4pOworICAgICAgICB9
IGVsc2UgaWYgY29uc3RleHByIChDb2x1bW5zIDwgQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6
ZSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgY29sdW1uID0gMDsgY29sdW1uIDwgQ29sdW1u
czsgKytjb2x1bW4pCisgICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93XSArPSBh
dChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvci5jb21wb25lbnRzW2NvbHVtbl07CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgY29uc3RleHByIChDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXpl
ID4gUm93cykgeworICAgICAgICBmb3IgKHNpemVfdCBhZGRpdGlvbmFsUm93ID0gUm93czsgYWRk
aXRpb25hbFJvdyA8IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7ICsrYWRkaXRpb25hbFJv
dykKKyAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzW2FkZGl0aW9uYWxSb3ddID0gaW5wdXRW
ZWN0b3IuY29tcG9uZW50c1thZGRpdGlvbmFsUm93XTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAy
NjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEzICs4MCwxMSBAQCBzdGF0aWMgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiB4eXpUb0xpbmVhCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvU1JHQgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4
Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKLSAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9
IHsKLSAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwgMC4wZiwg
MC4wZiwKLSAgICAgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwgMC4w
ZiwgMC4wZiwKLSAgICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZiwg
MC4wZiwgMC4wZiwKLSAgICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAg
ICAgMS4wZiwgMC4wZiwKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5l
YXJTUkdCTWF0cml4IHsKKyAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1
MzE0ZiwKKyAgICAgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwKKyAg
ICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZgogICAgIH07Ci0gICAg
Q29sb3JNYXRyaXggeHl6VG9MaW5lYXJTUkdCTWF0cml4KHZhbHVlcyk7CiAgICAgcmV0dXJuIHh5
elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25l
bnRzKTsKIH0KIApAQCAtOTQsMzkgKzkyLDMzIEBAIHN0YXRpYyBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+IGxpbmVhclNSR0IKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9T
UkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5f
UkdCX1hZWl9NYXRyaXguaHRtbAotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0gewotICAgICAg
ICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsIDAuMGYsIDAuMGYsCi0gICAg
ICAgIDAuMjEyNjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwgMC4wZiwgMC4wZiwKLSAg
ICAgICAgMC4wMTkzMzM5ZiwgIDAuMTE5MTkyMGYsICAwLjk1MDMwNDFmLCAwLjBmLCAwLjBmLAot
ICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgIDEuMGYsIDAuMGYs
CisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclNSR0JUb1hZWk1hdHJpeCB7
CisgICAgICAgIDAuNDEyNDU2NGYsICAwLjM1NzU3NjFmLCAgMC4xODA0Mzc1ZiwKKyAgICAgICAg
MC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLAorICAgICAgICAwLjAxOTMzMzlm
LCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYKICAgICB9OwotICAgIENvbG9yTWF0cml4IGxpbmVh
clNSR0JUb1hZWk1hdHJpeCh2YWx1ZXMpOwogICAgIHJldHVybiBsaW5lYXJTUkdCVG9YWVpNYXRy
aXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7CiB9CiAKIHN0YXRp
YyBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IFhZWlRvTGluZWFyUDMoY29uc3QgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiYgWFlaQ29tcG9uZW50cykKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKLSAgICBjb25zdCBmbG9hdCB2
YWx1ZXNbXSA9IHsKLSAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYxNzkx
OTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgLTAuODI5
NDg4OTY5NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2
ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4
OTI2ODA0MThmLCAgMC45NTY4ODQ1MjQwMDc2ODcyZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgIDAu
MGYsICAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAg
ICAgICAgMS4wZiwgMC4wZiwKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9M
aW5lYXJTUkdCTWF0cml4IHsKKyAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4
MzYxNzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKKyAgICAgICAgLTAuODI5NDg4OTY5
NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2ZiwKKyAg
ICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0MThmLCAgMC45NTY4
ODQ1MjQwMDc2ODcyZgogICAgIH07Ci0gICAgQ29sb3JNYXRyaXggeHl6VG9MaW5lYXJTUkdCTWF0
cml4KHZhbHVlcyk7CiAgICAgcmV0dXJuIHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1l
ZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIAogc3RhdGljIENvbG9yQ29tcG9u
ZW50czxmbG9hdD4gbGluZWFyUDNUb1hZWihjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBY
WVpDb21wb25lbnRzKQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29s
b3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0gewot
ICAgICAgICAwLjQ4NjU3MDk0ODY0ODIxNjJmLCAwLjI2NTY2NzY5MzE2OTA5MzFmLCAwLjE5ODIx
NzI4NTIzNDM2M2YsIDAuMGYsIDAuMGYsCi0gICAgICAgIDAuMjI4OTc0NTY0MDY5NzQ4OGYsIDAu
NjkxNzM4NTIxODM2NTA2NGYsIDAuMDc5Mjg2OTE0MDkzNzQ1ZiwgMC4wZiwgMC4wZiwKLSAgICAg
ICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wNDUxMTMzODE4NTg5MDI2ZiwgMS4wNDM5NDQzNjg5
MDA5NzZmLCAwLjBmLCAwLjBmLAotICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjBmLCAg
ICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgIDEuMGYsIDAuMGYsCisgICAgY29uc3Rl
eHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclAzVG9YWVpNYXRyaXggeworICAgICAgICAwLjQ4
NjU3MDk0ODY0ODIxNjJmLCAwLjI2NTY2NzY5MzE2OTA5MzFmLCAwLjE5ODIxNzI4NTIzNDM2M2Ys
CisgICAgICAgIDAuMjI4OTc0NTY0MDY5NzQ4OGYsIDAuNjkxNzM4NTIxODM2NTA2NGYsIDAuMDc5
Mjg2OTE0MDkzNzQ1ZiwKKyAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wNDUxMTMzODE4
NTg5MDI2ZiwgMS4wNDM5NDQzNjg5MDA5NzZmCiAgICAgfTsKLSAgICBDb2xvck1hdHJpeCBsaW5l
YXJQM1RvWFlaTWF0cml4KHZhbHVlcyk7CiAgICAgcmV0dXJuIGxpbmVhclAzVG9YWVpNYXRyaXgu
dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAko
cmV2aXNpb24gMjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVu
dHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yQ29tcG9uZW50czsKIAogLy8gMC0x
IGNvbXBvbmVudHMsIHJlc3VsdCBpcyBjbGFtcGVkLgogZmxvYXQgbGluZWFyVG9SR0JDb2xvckNv
bXBvbmVudChmbG9hdCk7CkBAIC02MywxMiArNjMsMTIgQEAgaW5saW5lIHVpbnQ4X3Qgcm91bmRB
bmRDbGFtcENvbG9yQ2hhbm5lbAogICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6cm91bmQodmFs
dWUpLCAwLmYsIDI1NS5mKTsKIH0KIAotaW5saW5lIHVpbnQxNl90IGZhc3RNdWx0aXBseUJ5MjU1
KHVpbnQxNl90IHZhbHVlKQorY29uc3RleHByIHVpbnQxNl90IGZhc3RNdWx0aXBseUJ5MjU1KHVp
bnQxNl90IHZhbHVlKQogewogICAgIHJldHVybiAodmFsdWUgPDwgOCkgLSB2YWx1ZTsKIH0KIAot
aW5saW5lIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZfdCB2YWx1ZSkKK2NvbnN0ZXhw
ciB1aW50MTZfdCBmYXN0RGl2aWRlQnkyNTUodWludDE2X3QgdmFsdWUpCiB7CiAgICAgLy8gV2hp
bGUgdGhpcyBpcyBhbiBhcHByb3hpbWF0ZSBhbGdvcml0aG0gZm9yIGRpdmlzaW9uIGJ5IDI1NSwg
aXQgZ2l2ZXMgcGVyZmVjdGx5IGFjY3VyYXRlIHJlc3VsdHMgZm9yIDE2LWJpdCB2YWx1ZXMuCiAg
ICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgZ2l2ZXMgYWNjdXJhdGUgcmVzdWx0cyBmb3IgMTYtYml0
IHZhbHVlcywgd2Ugc2hvdWxkIGdldCB0aGlzIG9wdGltaXphdGlvbiBpbnRvIGNvbXBpbGVycyBs
aWtlIGNsYW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjYyMjUy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwyMiArODksMjIgQEAgYm9vbCBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjp0cgogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAg
ICAgY2FzZSBHUkFZU0NBTEU6IHsKLSAgICAgICAgQ29sb3JNYXRyaXggbWF0cml4ID0gQ29sb3JN
YXRyaXg6OmdyYXlzY2FsZU1hdHJpeChtX2Ftb3VudCk7CisgICAgICAgIGF1dG8gbWF0cml4ID0g
Z3JheXNjYWxlQ29sb3JNYXRyaXgobV9hbW91bnQpOwogICAgICAgICBtYXRyaXgudHJhbnNmb3Jt
Q29sb3JDb21wb25lbnRzKGNvbG9yQ29tcG9uZW50cyk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBjYXNlIFNFUElBOiB7Ci0gICAgICAgIENvbG9yTWF0cml4IG1hdHJpeCA9IENv
bG9yTWF0cml4OjpzZXBpYU1hdHJpeChtX2Ftb3VudCk7CisgICAgICAgIGF1dG8gbWF0cml4ID0g
c2VwaWFDb2xvck1hdHJpeChtX2Ftb3VudCk7CiAgICAgICAgIG1hdHJpeC50cmFuc2Zvcm1Db2xv
ckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGNhc2UgSFVFX1JPVEFURTogewotICAgICAgICBDb2xvck1hdHJpeCBtYXRyaXggPSBD
b2xvck1hdHJpeDo6aHVlUm90YXRlTWF0cml4KG1fYW1vdW50KTsKKyAgICAgICAgYXV0byBtYXRy
aXggPSBodWVSb3RhdGVDb2xvck1hdHJpeChtX2Ftb3VudCk7CiAgICAgICAgIG1hdHJpeC50cmFu
c2Zvcm1Db2xvckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIGNhc2UgU0FUVVJBVEU6IHsKLSAgICAgICAgQ29sb3JNYXRyaXggbWF0
cml4ID0gQ29sb3JNYXRyaXg6OnNhdHVyYXRpb25NYXRyaXgobV9hbW91bnQpOworICAgICAgICBh
dXRvIG1hdHJpeCA9IHNhdHVyYXRpb25Db2xvck1hdHJpeChtX2Ftb3VudCk7CiAgICAgICAgIG1h
dHJpeC50cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjM3LDE0ICsyMzcsMTIgQEAgYm9vbCBJbnZlcnRMaWdo
dG5lc3NGaWx0ZXJPcGVyYXRpb246OnRyYQogICAgIHNSR0JDb2xvckNvbXBvbmVudHMgPSBoc2xU
b1NSR0IoaHNsQ29tcG9uZW50cyk7CiAgICAgCiAgICAgLy8gQXBwbHkgdGhlIG1hdHJpeC4gU2Vl
IHJkYXI6Ly9wcm9ibGVtLzQxMTQ2NjUwIGZvciBob3cgdGhpcyBtYXRyaXggd2FzIGRlcml2ZWQu
Ci0gICAgY29uc3QgZmxvYXQgbWF0cml4VmFsdWVzWzIwXSA9IHsKLSAgICAgICAtMC43NzAsICAw
LjA1OSwgLTAuMDg5LCAwLCAxLAotICAgICAgICAwLjAzMCwgLTAuNzQxLCAtMC4wODksIDAsIDEs
Ci0gICAgICAgIDAuMDMwLCAgMC4wNTksIC0wLjg5MCwgMCwgMSwKLSAgICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAgICAxLCAwCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDUsIDQ+IHRvRGFy
a01vZGVNYXRyaXggeworICAgICAgIC0wLjc3MGYsICAwLjA1OWYsIC0wLjA4OWYsIDAuMGYsIDEu
MGYsCisgICAgICAgIDAuMDMwZiwgLTAuNzQxZiwgLTAuMDg5ZiwgMC4wZiwgMS4wZiwKKyAgICAg
ICAgMC4wMzBmLCAgMC4wNTlmLCAtMC44OTBmLCAwLjBmLCAxLjBmLAorICAgICAgICAgIDAuMGYs
ICAgIDAuMGYsICAgIDAuMGYsIDEuMGYsIDAuMGYKICAgICB9OwotCi0gICAgQ29sb3JNYXRyaXgg
dG9EYXJrTW9kZU1hdHJpeChtYXRyaXhWYWx1ZXMpOwogICAgIHRvRGFya01vZGVNYXRyaXgudHJh
bnNmb3JtQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvckNvbXBvbmVudHMpOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMjU0LDEzICsyNTIsMTIgQEAgYm9vbCBJbnZlcnRMaWdodG5lc3NGaWx0ZXJP
cGVyYXRpb246OmludgogICAgIGF1dG8gcmdiQ29tcG9uZW50cyA9IHNSR0JDb2xvckNvbXBvbmVu
dHM7CiAKICAgICAvLyBBcHBseSB0aGUgbWF0cml4LgotICAgIGNvbnN0IGZsb2F0IG1hdHJpeFZh
bHVlc1syMF0gPSB7Ci0gICAgICAgIC0xLjMwMCwgLTAuMDk3LCAgMC4xNDcsIDAsIDEuMjUsCi0g
ICAgICAgIC0wLjA0OSwgLTEuMzQ3LCAgMC4xNDYsIDAsIDEuMjUsCi0gICAgICAgIC0wLjA0OSwg
LTAuMDk3LCAtMS4xMDQsIDAsIDEuMjUsCi0gICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
IDEsIDAKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8NSwgND4gdG9MaWdodE1vZGVNYXRyaXgg
eworICAgICAgICAtMS4zMDBmLCAtMC4wOTdmLCAgMC4xNDdmLCAwLjBmLCAxLjI1ZiwKKyAgICAg
ICAgLTAuMDQ5ZiwgLTEuMzQ3ZiwgIDAuMTQ2ZiwgMC4wZiwgMS4yNWYsCisgICAgICAgIC0wLjA0
OWYsIC0wLjA5N2YsIC0xLjEwNGYsIDAuMGYsIDEuMjVmLAorICAgICAgICAgICAwLjBmLCAgICAw
LjBmLCAgICAwLjBmLCAxLjBmLCAgMC4wZgogICAgIH07Ci0gICAgQ29sb3JNYXRyaXggdG9MaWdo
dE1vZGVNYXRyaXgobWF0cml4VmFsdWVzKTsKICAgICB0b0xpZ2h0TW9kZU1hdHJpeC50cmFuc2Zv
cm1Db2xvckNvbXBvbmVudHMocmdiQ29tcG9uZW50cyk7CiAKICAgICAvLyBDb252ZXJ0IHRvIEhT
TC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAkocmV2aXNpb24gMjYyMjUyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOwogY2xhc3MgRmlsdGVyRWZmZWN0Owog
c3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb2xvckNvbXBvbmVudHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yQ29tcG9u
ZW50czsKIAogY2xhc3MgRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEZpbHRlck9wZXJhdGlvbj4gewogcHVibGljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400521</attachid>
            <date>2020-05-28 16:25:39 -0700</date>
            <delta_ts>2020-05-28 17:55:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212477-20200528162538.patch</filename>
            <type>text/plain</type>
            <size>32749</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQ29sb3JN
YXRyaXggc2hvdWxkIHN1cHBvcnQgc21hbGxlciBtYXRyaWNlcyBhbmQgYmUgY29uc3RleHByCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yQ29tcG9uZW50czo6Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yQ29tcG9uZW50czo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNv
bXBvbmVudHM6Om9wZXJhdG9yKyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBv
bmVudHM6Om9wZXJhdG9yLyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6
OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgorICAgICAgICAoV2ViQ29y
ZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JNYXRyaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6Q29sb3JNYXRyaXgp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OmF0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmdyYXlzY2FsZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcGlhQ29s
b3JNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6c2F0dXJhdGlvbkNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6Omh1ZVJvdGF0ZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yTWF0cml4Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JNYXRyaXg6OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4
eXpUb0xpbmVhclNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyU1JHQlRvWFlaKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhZWlRvTGluZWFyUDMpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFy
UDNUb1hZWik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmZhc3RNdWx0aXBseUJ5MjU1KToKKyAgICAgICAgKFdlYkNvcmU6
OmZhc3REaXZpZGVCeTI1NSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OmludmVyc2VU
cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaDoKKwogMjAyMC0wNS0yOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBEZWJ1ZyBdIGFjY2Vzc2liaWxp
dHkvcm9sZXMtZXhwb3NlZC5odG1sIGlzIGEgZmxha3kgdGltZW91dApJbmRleDogU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQJKHJldmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODcyLDcgKzE4NzIsNiBAQCBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5j
cHAKLXBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAxNjQsNyArMTAxNjQsNiBAQAog
CQk3QzlEQkZFQTFBOUM0ODlGMDAwRDZCMjUgLyogSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzlEQkZFQjFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlEQkZFQzFBOUM0
OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0NBQzZBRTYyNDdGMDgxRjAwRTYxRDU5IC8qIENvbG9yTWF0cml4
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yTWF0cml4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbG9yTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQjVDQTNEMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5
RXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVF1ZXJ5RXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTQy
Niw3ICsyNTQyNSw2IEBACiAJCQkJQjI3NTM1MzkwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmgg
Ki8sCiAJCQkJN0NBQzZBRUMyNDdGMUM1MTAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oICov
LAogCQkJCTMxMDNCN0RFMURCMDE1NTYwMDhCQjg5MCAvKiBDb2xvckhhc2guaCAqLywKLQkJCQk3
Q0FDNkFFNjI0N0YwODFGMDBFNjFENTkgLyogQ29sb3JNYXRyaXguY3BwICovLAogCQkJCTdDQUM2
QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovLAogCQkJCTkzODJERjU3MTBB
OEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAw
MjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyNjIy
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNzcgKzM0LDEwMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKLSAgICBD
b2xvckNvbXBvbmVudHMoVCBhID0gMCwgVCBiID0gMCwgVCBjID0gMCwgVCBkID0gMCkKLSAgICAg
ICAgOiBjb21wb25lbnRzIHsgYSwgYiwgYywgZCB9Ci0gICAgewotICAgIH0KLQotICAgIENvbG9y
Q29tcG9uZW50cyhjb25zdCBzdGQ6OmFycmF5PFQsIDQ+JiB2YWx1ZXMpCi0gICAgICAgIDogY29t
cG9uZW50cyB7IHZhbHVlcyB9Ci0gICAgewotICAgIH0KLQotICAgIENvbG9yQ29tcG9uZW50cyYg
b3BlcmF0b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmIHJocykKLSAgICB7Ci0gICAgICAgIGNv
bXBvbmVudHNbMF0gKz0gcmhzLmNvbXBvbmVudHNbMF07Ci0gICAgICAgIGNvbXBvbmVudHNbMV0g
Kz0gcmhzLmNvbXBvbmVudHNbMV07Ci0gICAgICAgIGNvbXBvbmVudHNbMl0gKz0gcmhzLmNvbXBv
bmVudHNbMl07Ci0gICAgICAgIGNvbXBvbmVudHNbM10gKz0gcmhzLmNvbXBvbmVudHNbM107Ci0g
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBDb2xvckNvbXBvbmVudHMgb3BlcmF0
b3IrKFQgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGNv
bXBvbmVudHNbMF0gKyByaHMsCi0gICAgICAgICAgICBjb21wb25lbnRzWzFdICsgcmhzLAotICAg
ICAgICAgICAgY29tcG9uZW50c1syXSArIHJocywKLSAgICAgICAgICAgIGNvbXBvbmVudHNbM10g
KyByaHMKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBDb2xvckNvbXBvbmVudHMgb3BlcmF0b3Iv
KFQgZGVub21pbmF0b3IpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gewotICAgICAgICAg
ICAgY29tcG9uZW50c1swXSAvIGRlbm9taW5hdG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1sx
XSAvIGRlbm9taW5hdG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1syXSAvIGRlbm9taW5hdG9y
LAotICAgICAgICAgICAgY29tcG9uZW50c1szXSAvIGRlbm9taW5hdG9yCi0gICAgICAgIH07Ci0g
ICAgfQotCi0gICAgQ29sb3JDb21wb25lbnRzIG9wZXJhdG9yKihUIGZhY3RvcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBjb21wb25lbnRzWzBdICogZmFjdG9y
LAotICAgICAgICAgICAgY29tcG9uZW50c1sxXSAqIGZhY3RvciwKLSAgICAgICAgICAgIGNvbXBv
bmVudHNbMl0gKiBmYWN0b3IsCi0gICAgICAgICAgICBjb21wb25lbnRzWzNdICogZmFjdG9yCi0g
ICAgICAgIH07Ci0gICAgfQotCi0gICAgQ29sb3JDb21wb25lbnRzIGFicygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1swXSks
Ci0gICAgICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzFdKSwKLSAgICAgICAgICAgIHN0ZDo6
YWJzKGNvbXBvbmVudHNbMl0pLAotICAgICAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1szXSkK
LSAgICAgICAgfTsKLSAgICB9CisgICAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgU2l6ZSA9IDQ7
CisKKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzKFQgYSA9IDAsIFQgYiA9IDAsIFQgYyA9
IDAsIFQgZCA9IDApOworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMoY29uc3Qgc3RkOjph
cnJheTxULCBTaXplPiYpOworCisgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyYgb3BlcmF0
b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmKTsKKworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHMgb3BlcmF0b3IrKFQpIGNvbnN0OworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMg
b3BlcmF0b3IvKFQpIGNvbnN0OworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMgb3BlcmF0
b3IqKFQpIGNvbnN0OworCisgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyBhYnMoKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+Ci0gICAgVCBnZXQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbTl07Ci0gICAgfQorICAgIGNvbnN0ZXhwciBU
IGdldCgpIGNvbnN0OwogCi0gICAgc3RkOjphcnJheTxULCA0PiBjb21wb25lbnRzOworICAgIHN0
ZDo6YXJyYXk8VCwgU2l6ZT4gY29tcG9uZW50czsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Citjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+OjpDb2xvckNvbXBvbmVudHMoVCBhLCBUIGIs
IFQgYywgVCBkKQorICAgIDogY29tcG9uZW50cyB7IGEsIGIsIGMsIGQgfQoreworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPjo6Q29sb3JDb21w
b25lbnRzKGNvbnN0IHN0ZDo6YXJyYXk8VCwgQ29sb3JDb21wb25lbnRzPFQ+OjpTaXplPiYgdmFs
dWVzKQorICAgIDogY29tcG9uZW50cyB7IHZhbHVlcyB9Cit7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+Citjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+JiBDb2xvckNvbXBvbmVudHM8VD46
Om9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJiByaHMpCit7CisgICAgY29tcG9uZW50
c1swXSArPSByaHMuY29tcG9uZW50c1swXTsKKyAgICBjb21wb25lbnRzWzFdICs9IHJocy5jb21w
b25lbnRzWzFdOworICAgIGNvbXBvbmVudHNbMl0gKz0gcmhzLmNvbXBvbmVudHNbMl07CisgICAg
Y29tcG9uZW50c1szXSArPSByaHMuY29tcG9uZW50c1szXTsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENv
bG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrKFQgcmhzKSBjb25zdAoreworICAgIHJldHVybiB7
CisgICAgICAgIGNvbXBvbmVudHNbMF0gKyByaHMsCisgICAgICAgIGNvbXBvbmVudHNbMV0gKyBy
aHMsCisgICAgICAgIGNvbXBvbmVudHNbMl0gKyByaHMsCisgICAgICAgIGNvbXBvbmVudHNbM10g
KyByaHMKKyAgICB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3RleHByIENvbG9y
Q29tcG9uZW50czxUPiBDb2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yLyhUIGRlbm9taW5hdG9y
KSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIGNvbXBvbmVudHNbMF0gLyBkZW5vbWlu
YXRvciwKKyAgICAgICAgY29tcG9uZW50c1sxXSAvIGRlbm9taW5hdG9yLAorICAgICAgICBjb21w
b25lbnRzWzJdIC8gZGVub21pbmF0b3IsCisgICAgICAgIGNvbXBvbmVudHNbM10gLyBkZW5vbWlu
YXRvcgorICAgIH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgQ29sb3JD
b21wb25lbnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IqKFQgZmFjdG9yKSBjb25z
dAoreworICAgIHJldHVybiB7CisgICAgICAgIGNvbXBvbmVudHNbMF0gKiBmYWN0b3IsCisgICAg
ICAgIGNvbXBvbmVudHNbMV0gKiBmYWN0b3IsCisgICAgICAgIGNvbXBvbmVudHNbMl0gKiBmYWN0
b3IsCisgICAgICAgIGNvbXBvbmVudHNbM10gKiBmYWN0b3IKKyAgICB9OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBDb2xvckNvbXBvbmVu
dHM8VD46OmFicygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc3RkOjphYnMoY29t
cG9uZW50c1swXSksCisgICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVudHNbMV0pLAorICAgICAgICBz
dGQ6OmFicyhjb21wb25lbnRzWzJdKSwKKyAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1szXSkK
KyAgICB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8c3RkOjpzaXplX3Qg
Tj4KK2NvbnN0ZXhwciBUIENvbG9yQ29tcG9uZW50czxUPjo6Z2V0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gY29tcG9uZW50c1tOXTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBD
b2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENvbG9yQ29tcG9uZW50czxU
PiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQorY29uc3RleHByIENvbG9yQ29tcG9u
ZW50czxUPiBwZXJDb21wb25lbnRNYXgoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25z
dCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgc3RkOjpt
YXgoYS5jb21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pLApAQCAtMTE1LDcgKzEzOCw3IEBA
IGlubGluZSBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWEKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWlubGluZSBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWluKGNv
bnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQor
Y29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25lbnRNaW4oY29uc3QgQ29sb3JD
b21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCiB7CiAgICAgcmV0
dXJuIHsKICAgICAgICAgc3RkOjptaW4oYS5jb21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0p
LApAQCAtMTI2LDEzICsxNDksMTMgQEAgaW5saW5lIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21w
b25lbnRNaQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYg
YikKK2NvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBh
LCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCiB7CiAgICAgcmV0dXJuIGEuY29tcG9uZW50
cyA9PSBiLmNvbXBvbmVudHM7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21w
b25lbnRzPFQ+JiBiKQorY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xvckNvbXBv
bmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKIHsKICAgICByZXR1cm4g
IShhID09IGIpOwogfQpAQCAtMTQyLDcgKzE2NSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgQ29sb3JDb21wb24KIG5hbWVzcGFjZSBzdGQgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotY2xhc3MgdHVwbGVfc2l6ZTxXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM8VD4+IDogcHVibGlj
IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIDQ+IHsKK2NsYXNzIHR1cGxlX3Np
emU8V2ViQ29yZTo6Q29sb3JDb21wb25lbnRzPFQ+PiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2Nv
bnN0YW50PHN0ZDo6c2l6ZV90LCBXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM8VD46OlNpemU+IHsK
IH07CiAKIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguY3BwCShyZXZpc2lv
biAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJp
eC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNvbG9yTWF0cml4LmgiCi0KLSNpbmNsdWRlICJDb2xvckNvbXBv
bmVudHMuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUNvbG9yTWF0cml4OjpDb2xvck1hdHJpeCgpCi17Ci0gICAgbWFrZUlkZW50aXR5KCk7
Ci19Ci0KLUNvbG9yTWF0cml4OjpDb2xvck1hdHJpeChjb25zdCBmbG9hdCB2YWx1ZXNbMjBdKQot
ewotICAgIG1fbWF0cml4WzBdWzBdID0gdmFsdWVzWzBdOwotICAgIG1fbWF0cml4WzBdWzFdID0g
dmFsdWVzWzFdOwotICAgIG1fbWF0cml4WzBdWzJdID0gdmFsdWVzWzJdOwotICAgIG1fbWF0cml4
WzBdWzNdID0gdmFsdWVzWzNdOwotICAgIG1fbWF0cml4WzBdWzRdID0gdmFsdWVzWzRdOwotCi0g
ICAgbV9tYXRyaXhbMV1bMF0gPSB2YWx1ZXNbNV07Ci0gICAgbV9tYXRyaXhbMV1bMV0gPSB2YWx1
ZXNbNl07Ci0gICAgbV9tYXRyaXhbMV1bMl0gPSB2YWx1ZXNbN107Ci0gICAgbV9tYXRyaXhbMV1b
M10gPSB2YWx1ZXNbOF07Ci0gICAgbV9tYXRyaXhbMV1bNF0gPSB2YWx1ZXNbOV07Ci0KLSAgICBt
X21hdHJpeFsyXVswXSA9IHZhbHVlc1sxMF07Ci0gICAgbV9tYXRyaXhbMl1bMV0gPSB2YWx1ZXNb
MTFdOwotICAgIG1fbWF0cml4WzJdWzJdID0gdmFsdWVzWzEyXTsKLSAgICBtX21hdHJpeFsyXVsz
XSA9IHZhbHVlc1sxM107Ci0gICAgbV9tYXRyaXhbMl1bNF0gPSB2YWx1ZXNbMTRdOwotCi0gICAg
bV9tYXRyaXhbM11bMF0gPSB2YWx1ZXNbMTVdOwotICAgIG1fbWF0cml4WzNdWzFdID0gdmFsdWVz
WzE2XTsKLSAgICBtX21hdHJpeFszXVsyXSA9IHZhbHVlc1sxN107Ci0gICAgbV9tYXRyaXhbM11b
M10gPSB2YWx1ZXNbMThdOwotICAgIG1fbWF0cml4WzNdWzRdID0gdmFsdWVzWzE5XTsKLX0KLQot
dm9pZCBDb2xvck1hdHJpeDo6bWFrZUlkZW50aXR5KCkKLXsKLSAgICBtZW1zZXQobV9tYXRyaXgs
IDAsIHNpemVvZihtX21hdHJpeCkpOwotICAgIG1fbWF0cml4WzBdWzBdID0gMTsKLSAgICBtX21h
dHJpeFsxXVsxXSA9IDE7Ci0gICAgbV9tYXRyaXhbMl1bMl0gPSAxOwotICAgIG1fbWF0cml4WzNd
WzNdID0gMTsKLX0KLQotQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OmdyYXlzY2FsZU1hdHJpeChm
bG9hdCBhbW91bnQpCi17Ci0gICAgQ29sb3JNYXRyaXggbWF0cml4OwotCi0gICAgZmxvYXQgb25l
TWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBhbW91bnQsIDAuMCwgMS4wKTsKLQotICAgIC8vIFZh
bHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNncmF5c2Nh
bGVFcXVpdmFsZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4yMTI2ZiArIDAuNzg3
NGYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMV0gPSAwLjcxNTJm
IC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsyXSA9
IDAuMDcyMmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRy
aXhbMV1bMF0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJp
eC5tX21hdHJpeFsxXVsxXSA9IDAuNzE1MmYgKyAwLjI4NDhmICogb25lTWludXNBbW91bnQ7Ci0g
ICAgbWF0cml4Lm1fbWF0cml4WzFdWzJdID0gMC4wNzIyZiAtIDAuMDcyMmYgKiBvbmVNaW51c0Ft
b3VudDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjEyNmYgLSAwLjIxMjZmICog
b25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzFdID0gMC43MTUyZiAtIDAu
NzE1MmYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMl0gPSAwLjA3
MjJmICsgMC45Mjc4ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIAotICAgIHJldHVybiBtYXRyaXg7
Ci19Ci0KLUNvbG9yTWF0cml4IENvbG9yTWF0cml4OjpzYXR1cmF0aW9uTWF0cml4KGZsb2F0IGFt
b3VudCkKLXsKLSAgICBDb2xvck1hdHJpeCBtYXRyaXg7Ci0KLSAgICAvLyBWYWx1ZXMgZnJvbSBo
dHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jZmVDb2xvck1hdHJpeEVsZW1l
bnQKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAwLjIxM2YgKyAwLjc4N2YgKiBhbW91bnQ7
Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzFdID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50Owot
ICAgIG1hdHJpeC5tX21hdHJpeFswXVsyXSA9IDAuMDcyZiAtIDAuMDcyZiAqIGFtb3VudDsKLQot
ICAgIG1hdHJpeC5tX21hdHJpeFsxXVswXSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFtb3VudDsKLSAg
ICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAwLjcxNWYgKyAwLjI4NWYgKiBhbW91bnQ7Ci0gICAg
bWF0cml4Lm1fbWF0cml4WzFdWzJdID0gMC4wNzJmIC0gMC4wNzJmICogYW1vdW50OwotCi0gICAg
bWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yMTNmIC0gMC4yMTNmICogYW1vdW50OwotICAgIG1h
dHJpeC5tX21hdHJpeFsyXVsxXSA9IDAuNzE1ZiAtIDAuNzE1ZiAqIGFtb3VudDsKLSAgICBtYXRy
aXgubV9tYXRyaXhbMl1bMl0gPSAwLjA3MmYgKyAwLjkyOGYgKiBhbW91bnQ7Ci0KLSAgICByZXR1
cm4gbWF0cml4OwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6aHVlUm90YXRlTWF0cml4
KGZsb2F0IGFuZ2xlSW5EZWdyZWVzKQotewotICAgIGZsb2F0IGNvc0h1ZSA9IGNvcyhkZWcycmFk
KGFuZ2xlSW5EZWdyZWVzKSk7Ci0gICAgZmxvYXQgc2luSHVlID0gc2luKGRlZzJyYWQoYW5nbGVJ
bkRlZ3JlZXMpKTsKLQotICAgIENvbG9yTWF0cml4IG1hdHJpeDsKLQotICAgIC8vIFZhbHVlcyBm
cm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNmZUNvbG9yTWF0cml4
RWxlbWVudAotICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9IDAuMjEzZiArIGNvc0h1ZSAqIDAu
Nzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZjsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMV0gPSAwLjcx
NWYgLSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcxNWY7Ci0gICAgbWF0cml4Lm1fbWF0
cml4WzBdWzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmICsgc2luSHVlICogMC45MjhmOwot
Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzBdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNmICsg
c2luSHVlICogMC4xNDNmOwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsxXSA9IDAuNzE1ZiArIGNv
c0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAqIDAuMTQwZjsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1b
Ml0gPSAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3MmYgLSBzaW5IdWUgKiAwLjI4M2Y7Ci0KLSAgICBt
YXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUg
KiAwLjc4N2Y7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzFdID0gMC43MTVmIC0gY29zSHVlICog
MC43MTVmICsgc2luSHVlICogMC43MTVmOwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9IDAu
MDcyZiArIGNvc0h1ZSAqIDAuOTI4ZiArIHNpbkh1ZSAqIDAuMDcyZjsKLQotICAgIHJldHVybiBt
YXRyaXg7Ci19Ci0KLUNvbG9yTWF0cml4IENvbG9yTWF0cml4OjpzZXBpYU1hdHJpeChmbG9hdCBh
bW91bnQpCi17Ci0gICAgQ29sb3JNYXRyaXggbWF0cml4OwotCi0gICAgZmxvYXQgb25lTWludXNB
bW91bnQgPSBjbGFtcFRvKDEgLSBhbW91bnQsIDAuMCwgMS4wKTsKLQotICAgIC8vIFZhbHVlcyBm
cm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNzZXBpYUVxdWl2YWxl
bnQKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAwLjM5M2YgKyAwLjYwN2YgKiBvbmVNaW51
c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMV0gPSAwLjc2OWYgLSAwLjc2OWYgKiBv
bmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMl0gPSAwLjE4OWYgLSAwLjE4
OWYgKiBvbmVNaW51c0Ftb3VudDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsxXVswXSA9IDAuMzQ5
ZiAtIDAuMzQ5ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsxXSA9
IDAuNjg2ZiArIDAuMzE0ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsx
XVsyXSA9IDAuMTY4ZiAtIDAuMTY4ZiAqIG9uZU1pbnVzQW1vdW50OwotCi0gICAgbWF0cml4Lm1f
bWF0cml4WzJdWzBdID0gMC4yNzJmIC0gMC4yNzJmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0
cml4Lm1fbWF0cml4WzJdWzFdID0gMC41MzRmIC0gMC41MzRmICogb25lTWludXNBbW91bnQ7Ci0g
ICAgbWF0cml4Lm1fbWF0cml4WzJdWzJdID0gMC4xMzFmICsgMC44NjlmICogb25lTWludXNBbW91
bnQ7Ci0KLSAgICByZXR1cm4gbWF0cml4OwotfQotCi12b2lkIENvbG9yTWF0cml4Ojp0cmFuc2Zv
cm1Db2xvckNvbXBvbmVudHMoQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY29sb3JDb21wb25lbnRz
KSBjb25zdAotewotICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yQ29t
cG9uZW50czsKLQotICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzBdID0gbV9tYXRyaXhb
MF1bMF0gKiByZWQgKyBtX21hdHJpeFswXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMF1bMl0gKiBi
bHVlICsgbV9tYXRyaXhbMF1bM10gKiBhbHBoYSArIG1fbWF0cml4WzBdWzRdOwotICAgIGNvbG9y
Q29tcG9uZW50cy5jb21wb25lbnRzWzFdID0gbV9tYXRyaXhbMV1bMF0gKiByZWQgKyBtX21hdHJp
eFsxXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMV1bMl0gKiBibHVlICsgbV9tYXRyaXhbMV1bM10g
KiBhbHBoYSArIG1fbWF0cml4WzFdWzRdOwotICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRz
WzJdID0gbV9tYXRyaXhbMl1bMF0gKiByZWQgKyBtX21hdHJpeFsyXVsxXSAqIGdyZWVuICsgbV9t
YXRyaXhbMl1bMl0gKiBibHVlICsgbV9tYXRyaXhbMl1bM10gKiBhbHBoYSArIG1fbWF0cml4WzJd
WzRdOwotICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzNdID0gbV9tYXRyaXhbM11bMF0g
KiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11bMl0gKiBibHVlICsg
bV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdOwotfQotCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQ+IENvbG9yTWF0cml4Ojp0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhjb25z
dCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb2xvckNvbXBvbmVudHMpIGNvbnN0Ci17Ci0gICAg
YXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdID0gY29sb3JDb21wb25lbnRzOwotCi0gICAg
cmV0dXJuIHsKLSAgICAgICAgbV9tYXRyaXhbMF1bMF0gKiByZWQgKyBtX21hdHJpeFswXVsxXSAq
IGdyZWVuICsgbV9tYXRyaXhbMF1bMl0gKiBibHVlICsgbV9tYXRyaXhbMF1bM10gKiBhbHBoYSAr
IG1fbWF0cml4WzBdWzRdLAotICAgICAgICBtX21hdHJpeFsxXVswXSAqIHJlZCArIG1fbWF0cml4
WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsxXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsxXVszXSAq
IGFscGhhICsgbV9tYXRyaXhbMV1bNF0sCi0gICAgICAgIG1fbWF0cml4WzJdWzBdICogcmVkICsg
bV9tYXRyaXhbMl1bMV0gKiBncmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSArIG1fbWF0cml4
WzJdWzNdICogYWxwaGEgKyBtX21hdHJpeFsyXVs0XSwKLSAgICAgICAgbV9tYXRyaXhbM11bMF0g
KiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11bMl0gKiBibHVlICsg
bV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdCi0gICAgfTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvck1hdHJpeC5oCShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwz
MSArMjUsMTA4IEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5j
bHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBD
b2xvckNvbXBvbmVudHM7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBsaWtlbHkgYmUgcmVwbGFjZWQgYnkgYSBnZW5lcmljIG1hdHJpeCBjbGFzcy4gT3RoZXIg
dGhhbgotLy8gdGhlIHNwZWNpZmljIG1hdHJpeCBjb25zdHVjdG9ycywgdGhlcmUgaXMgbm90aGlu
ZyBjb2xvciBzcGVjaWZpYyBhYm91dCB0aGlzLgotLy8gRnV0aGVybW9yZSwgbW9zdCB0aGVzZSBk
b24ndCBuZWVkIHRvIGJlIDR4NSBtYXRyaWNlcyB3aXRoIG1vc3Qgb25seSBuZWVkaW5nCi0vLyBh
IDN4MyBtYXRyaXguCit0ZW1wbGF0ZTxzaXplX3QgQ29sdW1ucywgc2l6ZV90IFJvd3M+CiBjbGFz
cyBDb2xvck1hdHJpeCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENvbG9yTWF0cml4IGdyYXlzY2Fs
ZU1hdHJpeChmbG9hdCk7Ci0gICAgc3RhdGljIENvbG9yTWF0cml4IHNhdHVyYXRpb25NYXRyaXgo
ZmxvYXQpOwotICAgIHN0YXRpYyBDb2xvck1hdHJpeCBodWVSb3RhdGVNYXRyaXgoZmxvYXQgYW5n
bGVJbkRlZ3JlZXMpOwotICAgIHN0YXRpYyBDb2xvck1hdHJpeCBzZXBpYU1hdHJpeChmbG9hdCk7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uVHM+CisgICAgZXhwbGljaXQgY29uc3RleHByIENv
bG9yTWF0cml4KFRzIC4uLmlucHV0KQorICAgICAgICA6IG1fbWF0cml4IHt7IGlucHV0IC4uLiB9
fQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YuLi4oVHMpID09IFJvd3MgKiBD
b2x1bW5zKTsKKyAgICB9CiAKLSAgICBDb2xvck1hdHJpeCgpOwotICAgIENvbG9yTWF0cml4KGNv
bnN0IGZsb2F0WzIwXSk7Ci0gICAgCi0gICAgdm9pZCB0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMo
Q29sb3JDb21wb25lbnRzPGZsb2F0PiYpIGNvbnN0OwotICAgIENvbG9yQ29tcG9uZW50czxmbG9h
dD4gdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0
PiYpIGNvbnN0OworICAgIGNvbnN0ZXhwciB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhD
b2xvckNvbXBvbmVudHM8ZmxvYXQ+JikgY29uc3Q7CisgICAgY29uc3RleHByIENvbG9yQ29tcG9u
ZW50czxmbG9hdD4gdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZvaWQgbWFrZUlkZW50aXR5KCk7
CisgICAgY29uc3RleHByIGZsb2F0IGF0KHNpemVfdCByb3csIHNpemVfdCBjb2x1bW4pIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9tYXRyaXhbKHJvdyAqIENvbHVtbnMpICsgY29sdW1u
XTsKKyAgICB9CiAKLSAgICBmbG9hdCBtX21hdHJpeFs0XVs1XTsKKyAgICBzdGQ6OmFycmF5PGZs
b2F0LCBSb3dzICogQ29sdW1ucz4gbV9tYXRyaXg7CiB9OwogCisvLyBGSVhNRTogVGhlc2UgYXJl
IG9ubHkgdXNlZCBpbiBGaWx0ZXJPcGVyYXRpb25zLmNwcC4gQ29uc2lkZXIgbW92aW5nIHRoZW0g
dGhlcmUuCitjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gZ3JheXNjYWxlQ29sb3JNYXRyaXgo
ZmxvYXQgYW1vdW50KQoreworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9maWx0ZXItZWZmZWN0cy0xLyNncmF5c2NhbGVFcXVpdmFsZW50CisgICAgZmxvYXQgb25lTWlu
dXNBbW91bnQgPSBzdGQ6OmNsYW1wKDEuMGYgLSBhbW91bnQsIDAuMGYsIDEuMGYpOworICAgIHJl
dHVybiBDb2xvck1hdHJpeDwzLCAzPiB7CisgICAgICAgIDAuMjEyNmYgKyAwLjc4NzRmICogb25l
TWludXNBbW91bnQsIDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQsIDAuMDcyMmYg
LSAwLjA3MjJmICogb25lTWludXNBbW91bnQsCisgICAgICAgIDAuMjEyNmYgLSAwLjIxMjZmICog
b25lTWludXNBbW91bnQsIDAuNzE1MmYgKyAwLjI4NDhmICogb25lTWludXNBbW91bnQsIDAuMDcy
MmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQsCisgICAgICAgIDAuMjEyNmYgLSAwLjIxMjZm
ICogb25lTWludXNBbW91bnQsIDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQsIDAu
MDcyMmYgKyAwLjkyNzhmICogb25lTWludXNBbW91bnQKKyAgICB9OworfQorCitjb25zdGV4cHIg
Q29sb3JNYXRyaXg8MywgMz4gc2VwaWFDb2xvck1hdHJpeChmbG9hdCBhbW91bnQpCit7CisgICAg
Ly8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI3Nl
cGlhRXF1aXZhbGVudAorICAgIGZsb2F0IG9uZU1pbnVzQW1vdW50ID0gc3RkOjpjbGFtcCgxLjBm
IC0gYW1vdW50LCAwLjBmLCAxLjBmKTsKKyAgICByZXR1cm4gQ29sb3JNYXRyaXg8MywgMz4gewor
ICAgICAgICAwLjM5M2YgKyAwLjYwN2YgKiBvbmVNaW51c0Ftb3VudCwgMC43NjlmIC0gMC43Njlm
ICogb25lTWludXNBbW91bnQsIDAuMTg5ZiAtIDAuMTg5ZiAqIG9uZU1pbnVzQW1vdW50LAorICAg
ICAgICAwLjM0OWYgLSAwLjM0OWYgKiBvbmVNaW51c0Ftb3VudCwgMC42ODZmICsgMC4zMTRmICog
b25lTWludXNBbW91bnQsIDAuMTY4ZiAtIDAuMTY4ZiAqIG9uZU1pbnVzQW1vdW50LAorICAgICAg
ICAwLjI3MmYgLSAwLjI3MmYgKiBvbmVNaW51c0Ftb3VudCwgMC41MzRmIC0gMC41MzRmICogb25l
TWludXNBbW91bnQsIDAuMTMxZiArIDAuODY5ZiAqIG9uZU1pbnVzQW1vdW50CisgICAgfTsKK30K
KworY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHNhdHVyYXRpb25Db2xvck1hdHJpeChmbG9h
dCBhbW91bnQpCit7CisgICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Zp
bHRlci1lZmZlY3RzLTEvI2ZlQ29sb3JNYXRyaXhFbGVtZW50CisgICAgcmV0dXJuIENvbG9yTWF0
cml4PDMsIDM+IHsKKyAgICAgICAgMC4yMTNmICsgMC43ODdmICogYW1vdW50LCAgMC43MTVmIC0g
MC43MTVmICogYW1vdW50LCAwLjA3MmYgLSAwLjA3MmYgKiBhbW91bnQsCisgICAgICAgIDAuMjEz
ZiAtIDAuNzg3ZiAqIGFtb3VudCwgIDAuNzE1ZiArIDAuNzE1ZiAqIGFtb3VudCwgMC4wNzJmIC0g
MC4wNzJmICogYW1vdW50LAorICAgICAgICAwLjIxM2YgLSAwLjc4N2YgKiBhbW91bnQsICAwLjcx
NWYgLSAwLjcxNWYgKiBhbW91bnQsIDAuMDcyZiArIDAuMDcyZiAqIGFtb3VudAorICAgIH07Cit9
CisKKy8vIE5PVEU6IGh1ZVJvdGF0ZUNvbG9yTWF0cml4IGlzIG5vdCBjb25zdGV4cHIgZHVlIHRv
IHVzZSBvZiBjb3Mvc2luIHdoaWNoIGFyZSBub3QgY29uc3RleHByIHlldC4KK2lubGluZSBDb2xv
ck1hdHJpeDwzLCAzPiBodWVSb3RhdGVDb2xvck1hdHJpeChmbG9hdCBhbmdsZUluRGVncmVlcykK
K3sKKyAgICBmbG9hdCBjb3NIdWUgPSBjb3MoZGVnMnJhZChhbmdsZUluRGVncmVlcykpOworICAg
IGZsb2F0IHNpbkh1ZSA9IHNpbihkZWcycmFkKGFuZ2xlSW5EZWdyZWVzKSk7CisKKyAgICAvLyBW
YWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jZmVDb2xv
ck1hdHJpeEVsZW1lbnQKKyAgICByZXR1cm4gQ29sb3JNYXRyaXg8MywgMz4geworICAgICAgICAw
LjIxM2YgKyBjb3NIdWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAwLjIxM2YsIDAuNzE1ZiAtIGNvc0h1
ZSAqIDAuNzE1ZiAtIHNpbkh1ZSAqIDAuNzE1ZiwgMC4wNzJmIC0gY29zSHVlICogMC4wNzJmICsg
c2luSHVlICogMC45MjhmLAorICAgICAgICAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgKyBzaW5I
dWUgKiAwLjE0M2YsIDAuNzE1ZiArIGNvc0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAqIDAuMTQwZiwg
MC4wNzJmIC0gY29zSHVlICogMC4wNzJmIC0gc2luSHVlICogMC4yODNmLAorICAgICAgICAwLjIx
M2YgLSBjb3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUgKiAwLjc4N2YsIDAuNzE1ZiAtIGNvc0h1ZSAq
IDAuNzE1ZiArIHNpbkh1ZSAqIDAuNzE1ZiwgMC4wNzJmICsgY29zSHVlICogMC45MjhmICsgc2lu
SHVlICogMC4wNzJmCisgICAgfTsKK30KKwordGVtcGxhdGU8c2l6ZV90IENvbHVtbnMsIHNpemVf
dCBSb3dzPgorY29uc3RleHByIHZvaWQgQ29sb3JNYXRyaXg8Q29sdW1ucywgUm93cz46OnRyYW5z
Zm9ybUNvbG9yQ29tcG9uZW50cyhDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBpbnB1dFZlY3Rvcikg
Y29uc3QKK3sKKyAgICBpbnB1dFZlY3RvciA9IHRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGlu
cHV0VmVjdG9yKTsKK30KKwordGVtcGxhdGU8c2l6ZV90IENvbHVtbnMsIHNpemVfdCBSb3dzPgor
Y29uc3RleHByIENvbG9yQ29tcG9uZW50czxmbG9hdD4gQ29sb3JNYXRyaXg8Q29sdW1ucywgUm93
cz46OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9h
dD4mIGlucHV0VmVjdG9yKSBjb25zdAoreworICAgIHN0YXRpY19hc3NlcnQoQ29sb3JDb21wb25l
bnRzPGZsb2F0Pjo6U2l6ZSA+PSBSb3dzKTsKKyAgICAKKyAgICBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+IHJlc3VsdDsKKyAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBSb3dzOyArK3Jvdykg
eworICAgICAgICBpZiBjb25zdGV4cHIgKENvbHVtbnMgPD0gQ29sb3JDb21wb25lbnRzPGZsb2F0
Pjo6U2l6ZSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgY29sdW1uID0gMDsgY29sdW1uIDwg
Q29sdW1uczsgKytjb2x1bW4pCisgICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93
XSArPSBhdChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvci5jb21wb25lbnRzW2NvbHVtbl07Cisg
ICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKENvbHVtbnMgPiBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+OjpTaXplKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAwOyBjb2x1bW4g
PCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyArK2NvbHVtbikKKyAgICAgICAgICAgICAg
ICByZXN1bHQuY29tcG9uZW50c1tyb3ddICs9IGF0KHJvdywgY29sdW1uKSAqIGlucHV0VmVjdG9y
LmNvbXBvbmVudHNbY29sdW1uXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGFkZGl0aW9uYWxD
b2x1bW4gPSBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyBhZGRpdGlvbmFsQ29sdW1uIDwg
Q29sdW1uczsgKythZGRpdGlvbmFsQ29sdW1uKQorICAgICAgICAgICAgICAgIHJlc3VsdC5jb21w
b25lbnRzW3Jvd10gKz0gYXQocm93LCBhZGRpdGlvbmFsQ29sdW1uKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiBjb25zdGV4cHIgKENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemUgPiBSb3dz
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGFkZGl0aW9uYWxSb3cgPSBSb3dzOyBhZGRpdGlvbmFs
Um93IDwgQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZTsgKythZGRpdGlvbmFsUm93KQorICAg
ICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbYWRkaXRpb25hbFJvd10gPSBpbnB1dFZlY3Rvci5j
b21wb25lbnRzW2FkZGl0aW9uYWxSb3ddOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjI1MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODAsMTMgKzgwLDExIEBAIHN0YXRpYyBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+IHh5elRvTGluZWEKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9F
cW5fUkdCX1hZWl9NYXRyaXguaHRtbAotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0gewotICAg
ICAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5ODUzMTRmLCAwLjBmLCAwLjBmLAot
ICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLCAwLjBmLCAwLjBm
LAotICAgICAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1NzIyNTJmLCAwLjBmLCAw
LjBmLAotICAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAxLjBm
LCAwLjBmLAorICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhclNSR0JN
YXRyaXggeworICAgICAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5ODUzMTRmLAor
ICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLAorICAgICAgICAg
MC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1NzIyNTJmCiAgICAgfTsKLSAgICBDb2xvck1h
dHJpeCB4eXpUb0xpbmVhclNSR0JNYXRyaXgodmFsdWVzKTsKICAgICByZXR1cm4geHl6VG9MaW5l
YXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOwog
fQogCkBAIC05NCwzOSArOTIsMzMgQEAgc3RhdGljIENvbG9yQ29tcG9uZW50czxmbG9hdD4gbGlu
ZWFyU1JHQgogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKICAg
ICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFla
X01hdHJpeC5odG1sCi0gICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7Ci0gICAgICAgIDAuNDEy
NDU2NGYsICAwLjM1NzU3NjFmLCAgMC4xODA0Mzc1ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4y
MTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLCAwLjBmLCAwLjBmLAotICAgICAgICAw
LjAxOTMzMzlmLCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYsIDAuMGYsIDAuMGYsCi0gICAgICAg
IDAuMGYsICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgMS4wZiwgMC4wZiwKKyAgICBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyU1JHQlRvWFlaTWF0cml4IHsKKyAgICAg
ICAgMC40MTI0NTY0ZiwgIDAuMzU3NTc2MWYsICAwLjE4MDQzNzVmLAorICAgICAgICAwLjIxMjY3
MjlmLCAgMC43MTUxNTIyZiwgIDAuMDcyMTc1MGYsCisgICAgICAgIDAuMDE5MzMzOWYsICAwLjEx
OTE5MjBmLCAgMC45NTAzMDQxZgogICAgIH07Ci0gICAgQ29sb3JNYXRyaXggbGluZWFyU1JHQlRv
WFlaTWF0cml4KHZhbHVlcyk7CiAgICAgcmV0dXJuIGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFu
c2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIAogc3RhdGljIENvbG9y
Q29tcG9uZW50czxmbG9hdD4gWFlaVG9MaW5lYXJQMyhjb25zdCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+JiBYWVpDb21wb25lbnRzKQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1td
ID0gewotICAgICAgICAgMi40OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3OTE5MTIzOWYs
IC0wLjQwMjcxMDc4NDQ1MDcxNjhmLCAwLjBmLCAwLjBmLAotICAgICAgICAtMC44Mjk0ODg5Njk1
NjE1NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0MzZmLCAwLjBm
LCAwLjBmLAotICAgICAgICAgMC4wMzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcyMzg5MjY4MDQx
OGYsICAwLjk1Njg4NDUyNDAwNzY4NzJmLCAwLjBmLCAwLjBmLAotICAgICAgICAgMC4wZiwgICAg
ICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAx
LjBmLCAwLjBmLAorICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhclNS
R0JNYXRyaXggeworICAgICAgICAgMi40OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3OTE5
MTIzOWYsIC0wLjQwMjcxMDc4NDQ1MDcxNjhmLAorICAgICAgICAtMC44Mjk0ODg5Njk1NjE1NzQ3
ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0MzZmLAorICAgICAgICAg
MC4wMzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcyMzg5MjY4MDQxOGYsICAwLjk1Njg4NDUyNDAw
NzY4NzJmCiAgICAgfTsKLSAgICBDb2xvck1hdHJpeCB4eXpUb0xpbmVhclNSR0JNYXRyaXgodmFs
dWVzKTsKICAgICByZXR1cm4geHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKFhZWkNvbXBvbmVudHMpOwogfQogCiBzdGF0aWMgQ29sb3JDb21wb25lbnRzPGZs
b2F0PiBsaW5lYXJQM1RvWFlaKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIFhZWkNvbXBv
bmVudHMpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29s
b3ItY29udmVyc2lvbi1jb2RlCi0gICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7Ci0gICAgICAg
IDAuNDg2NTcwOTQ4NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4MjE3Mjg1MjM0
MzYzZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42OTE3Mzg1
MjE4MzY1MDY0ZiwgMC4wNzkyODY5MTQwOTM3NDVmLCAwLjBmLCAwLjBmLAotICAgICAgICAwLjBm
LCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYs
IDAuMGYsIDAuMGYsCi0gICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAg
ICAgICAgIDAuMGYsICAgICAgICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICBjb25zdGV4cHIgQ29s
b3JNYXRyaXg8MywgMz4gbGluZWFyUDNUb1hZWk1hdHJpeCB7CisgICAgICAgIDAuNDg2NTcwOTQ4
NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4MjE3Mjg1MjM0MzYzZiwKKyAgICAg
ICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42OTE3Mzg1MjE4MzY1MDY0ZiwgMC4wNzkyODY5MTQw
OTM3NDVmLAorICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZm
LCAxLjA0Mzk0NDM2ODkwMDk3NmYKICAgICB9OwotICAgIENvbG9yTWF0cml4IGxpbmVhclAzVG9Y
WVpNYXRyaXgodmFsdWVzKTsKICAgICByZXR1cm4gbGluZWFyUDNUb1hZWk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lv
biAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9uZW50czsKK3Rl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzOwogCiAvLyAwLTEgY29tcG9u
ZW50cywgcmVzdWx0IGlzIGNsYW1wZWQuCiBmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50
KGZsb2F0KTsKQEAgLTYzLDEyICs2MywxMiBAQCBpbmxpbmUgdWludDhfdCByb3VuZEFuZENsYW1w
Q29sb3JDaGFubmVsCiAgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoc3RkOjpyb3VuZCh2YWx1ZSksIDAu
ZiwgMjU1LmYpOwogfQogCi1pbmxpbmUgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2
X3QgdmFsdWUpCitjb25zdGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3Qg
dmFsdWUpCiB7CiAgICAgcmV0dXJuICh2YWx1ZSA8PCA4KSAtIHZhbHVlOwogfQogCi1pbmxpbmUg
dWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90IHZhbHVlKQorY29uc3RleHByIHVpbnQx
Nl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZfdCB2YWx1ZSkKIHsKICAgICAvLyBXaGlsZSB0aGlz
IGlzIGFuIGFwcHJveGltYXRlIGFsZ29yaXRobSBmb3IgZGl2aXNpb24gYnkgMjU1LCBpdCBnaXZl
cyBwZXJmZWN0bHkgYWNjdXJhdGUgcmVzdWx0cyBmb3IgMTYtYml0IHZhbHVlcy4KICAgICAvLyBG
SVhNRTogU2luY2UgdGhpcyBnaXZlcyBhY2N1cmF0ZSByZXN1bHRzIGZvciAxNi1iaXQgdmFsdWVz
LCB3ZSBzaG91bGQgZ2V0IHRoaXMgb3B0aW1pemF0aW9uIGludG8gY29tcGlsZXJzIGxpa2UgY2xh
bmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9y
cGhvbG9neS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJGRU1vcnBob2xvZ3kuaCIKIAorI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1
ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiSW1h
Z2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNjIyNTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDIyICs4OSwyMiBAQCBib29sIEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OnRyCiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAg
ICBjYXNlIEdSQVlTQ0FMRTogewotICAgICAgICBDb2xvck1hdHJpeCBtYXRyaXggPSBDb2xvck1h
dHJpeDo6Z3JheXNjYWxlTWF0cml4KG1fYW1vdW50KTsKKyAgICAgICAgYXV0byBtYXRyaXggPSBn
cmF5c2NhbGVDb2xvck1hdHJpeChtX2Ftb3VudCk7CiAgICAgICAgIG1hdHJpeC50cmFuc2Zvcm1D
b2xvckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIGNhc2UgU0VQSUE6IHsKLSAgICAgICAgQ29sb3JNYXRyaXggbWF0cml4ID0gQ29s
b3JNYXRyaXg6OnNlcGlhTWF0cml4KG1fYW1vdW50KTsKKyAgICAgICAgYXV0byBtYXRyaXggPSBz
ZXBpYUNvbG9yTWF0cml4KG1fYW1vdW50KTsKICAgICAgICAgbWF0cml4LnRyYW5zZm9ybUNvbG9y
Q29tcG9uZW50cyhjb2xvckNvbXBvbmVudHMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgY2FzZSBIVUVfUk9UQVRFOiB7Ci0gICAgICAgIENvbG9yTWF0cml4IG1hdHJpeCA9IENv
bG9yTWF0cml4OjpodWVSb3RhdGVNYXRyaXgobV9hbW91bnQpOworICAgICAgICBhdXRvIG1hdHJp
eCA9IGh1ZVJvdGF0ZUNvbG9yTWF0cml4KG1fYW1vdW50KTsKICAgICAgICAgbWF0cml4LnRyYW5z
Zm9ybUNvbG9yQ29tcG9uZW50cyhjb2xvckNvbXBvbmVudHMpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgY2FzZSBTQVRVUkFURTogewotICAgICAgICBDb2xvck1hdHJpeCBtYXRy
aXggPSBDb2xvck1hdHJpeDo6c2F0dXJhdGlvbk1hdHJpeChtX2Ftb3VudCk7CisgICAgICAgIGF1
dG8gbWF0cml4ID0gc2F0dXJhdGlvbkNvbG9yTWF0cml4KG1fYW1vdW50KTsKICAgICAgICAgbWF0
cml4LnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhjb2xvckNvbXBvbmVudHMpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzcsMTQgKzIzNywxMiBAQCBib29sIEludmVydExpZ2h0
bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhCiAgICAgc1JHQkNvbG9yQ29tcG9uZW50cyA9IGhzbFRv
U1JHQihoc2xDb21wb25lbnRzKTsKICAgICAKICAgICAvLyBBcHBseSB0aGUgbWF0cml4LiBTZWUg
cmRhcjovL3Byb2JsZW0vNDExNDY2NTAgZm9yIGhvdyB0aGlzIG1hdHJpeCB3YXMgZGVyaXZlZC4K
LSAgICBjb25zdCBmbG9hdCBtYXRyaXhWYWx1ZXNbMjBdID0gewotICAgICAgIC0wLjc3MCwgIDAu
MDU5LCAtMC4wODksIDAsIDEsCi0gICAgICAgIDAuMDMwLCAtMC43NDEsIC0wLjA4OSwgMCwgMSwK
LSAgICAgICAgMC4wMzAsICAwLjA1OSwgLTAuODkwLCAwLCAxLAotICAgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgIDEsIDAKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8NSwgND4gdG9EYXJr
TW9kZU1hdHJpeCB7CisgICAgICAgLTAuNzcwZiwgIDAuMDU5ZiwgLTAuMDg5ZiwgMC4wZiwgMS4w
ZiwKKyAgICAgICAgMC4wMzBmLCAtMC43NDFmLCAtMC4wODlmLCAwLjBmLCAxLjBmLAorICAgICAg
ICAwLjAzMGYsICAwLjA1OWYsIC0wLjg5MGYsIDAuMGYsIDEuMGYsCisgICAgICAgICAgMC4wZiwg
ICAgMC4wZiwgICAgMC4wZiwgMS4wZiwgMC4wZgogICAgIH07Ci0KLSAgICBDb2xvck1hdHJpeCB0
b0RhcmtNb2RlTWF0cml4KG1hdHJpeFZhbHVlcyk7CiAgICAgdG9EYXJrTW9kZU1hdHJpeC50cmFu
c2Zvcm1Db2xvckNvbXBvbmVudHMoc1JHQkNvbG9yQ29tcG9uZW50cyk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0yNTQsMTMgKzI1MiwxMiBAQCBib29sIEludmVydExpZ2h0bmVzc0ZpbHRlck9w
ZXJhdGlvbjo6aW52CiAgICAgYXV0byByZ2JDb21wb25lbnRzID0gc1JHQkNvbG9yQ29tcG9uZW50
czsKIAogICAgIC8vIEFwcGx5IHRoZSBtYXRyaXguCi0gICAgY29uc3QgZmxvYXQgbWF0cml4VmFs
dWVzWzIwXSA9IHsKLSAgICAgICAgLTEuMzAwLCAtMC4wOTcsICAwLjE0NywgMCwgMS4yNSwKLSAg
ICAgICAgLTAuMDQ5LCAtMS4zNDcsICAwLjE0NiwgMCwgMS4yNSwKLSAgICAgICAgLTAuMDQ5LCAt
MC4wOTcsIC0xLjEwNCwgMCwgMS4yNSwKLSAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
MSwgMAorICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDw1LCA0PiB0b0xpZ2h0TW9kZU1hdHJpeCB7
CisgICAgICAgIC0xLjMwMGYsIC0wLjA5N2YsICAwLjE0N2YsIDAuMGYsIDEuMjVmLAorICAgICAg
ICAtMC4wNDlmLCAtMS4zNDdmLCAgMC4xNDZmLCAwLjBmLCAxLjI1ZiwKKyAgICAgICAgLTAuMDQ5
ZiwgLTAuMDk3ZiwgLTEuMTA0ZiwgMC4wZiwgMS4yNWYsCisgICAgICAgICAgIDAuMGYsICAgIDAu
MGYsICAgIDAuMGYsIDEuMGYsICAwLjBmCiAgICAgfTsKLSAgICBDb2xvck1hdHJpeCB0b0xpZ2h0
TW9kZU1hdHJpeChtYXRyaXhWYWx1ZXMpOwogICAgIHRvTGlnaHRNb2RlTWF0cml4LnRyYW5zZm9y
bUNvbG9yQ29tcG9uZW50cyhyZ2JDb21wb25lbnRzKTsKIAogICAgIC8vIENvbnZlcnQgdG8gSFNM
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CiBjbGFzcyBGaWx0ZXJFZmZlY3Q7CiBz
dHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IENvbG9yQ29tcG9uZW50czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25l
bnRzOwogCiBjbGFzcyBGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RmlsdGVyT3BlcmF0aW9uPiB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400532</attachid>
            <date>2020-05-28 17:55:13 -0700</date>
            <delta_ts>2020-05-29 08:28:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212477-20200528175512.patch</filename>
            <type>text/plain</type>
            <size>32417</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQ29sb3JN
YXRyaXggc2hvdWxkIHN1cHBvcnQgc21hbGxlciBtYXRyaWNlcyBhbmQgYmUgY29uc3RleHByCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yQ29tcG9uZW50czo6Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yQ29tcG9uZW50czo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNv
bXBvbmVudHM6Om9wZXJhdG9yKyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBv
bmVudHM6Om9wZXJhdG9yLyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6
OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgorICAgICAgICAoV2ViQ29y
ZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JNYXRyaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6Q29sb3JNYXRyaXgp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OmF0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmdyYXlzY2FsZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcGlhQ29s
b3JNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6c2F0dXJhdGlvbkNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6Omh1ZVJvdGF0ZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yTWF0cml4Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JNYXRyaXg6OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4
eXpUb0xpbmVhclNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyU1JHQlRvWFlaKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhZWlRvTGluZWFyUDMpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFy
UDNUb1hZWik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmZhc3RNdWx0aXBseUJ5MjU1KToKKyAgICAgICAgKFdlYkNvcmU6
OmZhc3REaXZpZGVCeTI1NSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OmludmVyc2VU
cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaDoKKwogMjAyMC0wNS0yOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBEZWJ1ZyBdIGFjY2Vzc2liaWxp
dHkvcm9sZXMtZXhwb3NlZC5odG1sIGlzIGEgZmxha3kgdGltZW91dApJbmRleDogU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQJKHJldmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODcyLDcgKzE4NzIsNiBAQCBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5j
cHAKLXBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAxNjQsNyArMTAxNjQsNiBAQAog
CQk3QzlEQkZFQTFBOUM0ODlGMDAwRDZCMjUgLyogSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzlEQkZFQjFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlEQkZFQzFBOUM0
OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0NBQzZBRTYyNDdGMDgxRjAwRTYxRDU5IC8qIENvbG9yTWF0cml4
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yTWF0cml4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbG9yTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQjVDQTNEMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5
RXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVF1ZXJ5RXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTQy
Niw3ICsyNTQyNSw2IEBACiAJCQkJQjI3NTM1MzkwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmgg
Ki8sCiAJCQkJN0NBQzZBRUMyNDdGMUM1MTAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oICov
LAogCQkJCTMxMDNCN0RFMURCMDE1NTYwMDhCQjg5MCAvKiBDb2xvckhhc2guaCAqLywKLQkJCQk3
Q0FDNkFFNjI0N0YwODFGMDBFNjFENTkgLyogQ29sb3JNYXRyaXguY3BwICovLAogCQkJCTdDQUM2
QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovLAogCQkJCTkzODJERjU3MTBB
OEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAw
MjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyNjIy
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNzcgKzM0LDkwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBDb2xvckNvbXBvbmVudHMgewotICAgIENv
bG9yQ29tcG9uZW50cyhUIGEgPSAwLCBUIGIgPSAwLCBUIGMgPSAwLCBUIGQgPSAwKQorICAgIGNv
bnN0ZXhwciBzdGF0aWMgc2l6ZV90IFNpemUgPSA0OworCisgICAgY29uc3RleHByIENvbG9yQ29t
cG9uZW50cyhUIGEgPSAwLCBUIGIgPSAwLCBUIGMgPSAwLCBUIGQgPSAwKQogICAgICAgICA6IGNv
bXBvbmVudHMgeyBhLCBiLCBjLCBkIH0KICAgICB7CiAgICAgfQogCi0gICAgQ29sb3JDb21wb25l
bnRzKGNvbnN0IHN0ZDo6YXJyYXk8VCwgND4mIHZhbHVlcykKLSAgICAgICAgOiBjb21wb25lbnRz
IHsgdmFsdWVzIH0KLSAgICB7Ci0gICAgfQorICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMm
IG9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJik7CiAKLSAgICBDb2xvckNvbXBvbmVu
dHMmIG9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJiByaHMpCi0gICAgewotICAgICAg
ICBjb21wb25lbnRzWzBdICs9IHJocy5jb21wb25lbnRzWzBdOwotICAgICAgICBjb21wb25lbnRz
WzFdICs9IHJocy5jb21wb25lbnRzWzFdOwotICAgICAgICBjb21wb25lbnRzWzJdICs9IHJocy5j
b21wb25lbnRzWzJdOwotICAgICAgICBjb21wb25lbnRzWzNdICs9IHJocy5jb21wb25lbnRzWzNd
OwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQorICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHMgb3BlcmF0b3IrKFQpIGNvbnN0OworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMg
b3BlcmF0b3IvKFQpIGNvbnN0OworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMgb3BlcmF0
b3IqKFQpIGNvbnN0OwogCi0gICAgQ29sb3JDb21wb25lbnRzIG9wZXJhdG9yKyhUIHJocykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBjb21wb25lbnRzWzBdICsg
cmhzLAotICAgICAgICAgICAgY29tcG9uZW50c1sxXSArIHJocywKLSAgICAgICAgICAgIGNvbXBv
bmVudHNbMl0gKyByaHMsCi0gICAgICAgICAgICBjb21wb25lbnRzWzNdICsgcmhzCi0gICAgICAg
IH07Ci0gICAgfQorICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMgYWJzKCkgY29uc3Q7CiAK
LSAgICBDb2xvckNvbXBvbmVudHMgb3BlcmF0b3IvKFQgZGVub21pbmF0b3IpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgY29tcG9uZW50c1swXSAvIGRlbm9taW5h
dG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1sxXSAvIGRlbm9taW5hdG9yLAotICAgICAgICAg
ICAgY29tcG9uZW50c1syXSAvIGRlbm9taW5hdG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1sz
XSAvIGRlbm9taW5hdG9yCi0gICAgICAgIH07Ci0gICAgfQorICAgIHRlbXBsYXRlPHN0ZDo6c2l6
ZV90IE4+CisgICAgY29uc3RleHByIFQgZ2V0KCkgY29uc3Q7CiAKLSAgICBDb2xvckNvbXBvbmVu
dHMgb3BlcmF0b3IqKFQgZmFjdG9yKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAg
ICAgICAgICAgIGNvbXBvbmVudHNbMF0gKiBmYWN0b3IsCi0gICAgICAgICAgICBjb21wb25lbnRz
WzFdICogZmFjdG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1syXSAqIGZhY3RvciwKLSAgICAg
ICAgICAgIGNvbXBvbmVudHNbM10gKiBmYWN0b3IKLSAgICAgICAgfTsKLSAgICB9CisgICAgc3Rk
OjphcnJheTxULCBTaXplPiBjb21wb25lbnRzOworfTsKIAotICAgIENvbG9yQ29tcG9uZW50cyBh
YnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHN0ZDo6YWJz
KGNvbXBvbmVudHNbMF0pLAotICAgICAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1sxXSksCi0g
ICAgICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzJdKSwKLSAgICAgICAgICAgIHN0ZDo6YWJz
KGNvbXBvbmVudHNbM10pCi0gICAgICAgIH07Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4mIENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0
b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmIHJocykKK3sKKyAgICBjb21wb25lbnRzWzBdICs9
IHJocy5jb21wb25lbnRzWzBdOworICAgIGNvbXBvbmVudHNbMV0gKz0gcmhzLmNvbXBvbmVudHNb
MV07CisgICAgY29tcG9uZW50c1syXSArPSByaHMuY29tcG9uZW50c1syXTsKKyAgICBjb21wb25l
bnRzWzNdICs9IHJocy5jb21wb25lbnRzWzNdOworICAgIHJldHVybiAqdGhpczsKK30KIAotICAg
IHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+Ci0gICAgVCBnZXQoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNvbXBvbmVudHNbTl07Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Nv
bnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvciso
VCByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY29tcG9uZW50c1swXSArIHJo
cywKKyAgICAgICAgY29tcG9uZW50c1sxXSArIHJocywKKyAgICAgICAgY29tcG9uZW50c1syXSAr
IHJocywKKyAgICAgICAgY29tcG9uZW50c1szXSArIHJocworICAgIH07Cit9CiAKLSAgICBzdGQ6
OmFycmF5PFQsIDQ+IGNvbXBvbmVudHM7Ci19OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0
ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvci8oVCBk
ZW5vbWluYXRvcikgY29uc3QKK3sKKyAgICByZXR1cm4geworICAgICAgICBjb21wb25lbnRzWzBd
IC8gZGVub21pbmF0b3IsCisgICAgICAgIGNvbXBvbmVudHNbMV0gLyBkZW5vbWluYXRvciwKKyAg
ICAgICAgY29tcG9uZW50c1syXSAvIGRlbm9taW5hdG9yLAorICAgICAgICBjb21wb25lbnRzWzNd
IC8gZGVub21pbmF0b3IKKyAgICB9OworfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxUPiBDb2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yKihUIGZh
Y3RvcikgY29uc3QKK3sKKyAgICByZXR1cm4geworICAgICAgICBjb21wb25lbnRzWzBdICogZmFj
dG9yLAorICAgICAgICBjb21wb25lbnRzWzFdICogZmFjdG9yLAorICAgICAgICBjb21wb25lbnRz
WzJdICogZmFjdG9yLAorICAgICAgICBjb21wb25lbnRzWzNdICogZmFjdG9yCisgICAgfTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29s
b3JDb21wb25lbnRzPFQ+OjphYnMoKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIHN0
ZDo6YWJzKGNvbXBvbmVudHNbMF0pLAorICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzFdKSwK
KyAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1syXSksCisgICAgICAgIHN0ZDo6YWJzKGNvbXBv
bmVudHNbM10pCisgICAgfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHN0
ZDo6c2l6ZV90IE4+Citjb25zdGV4cHIgVCBDb2xvckNvbXBvbmVudHM8VD46OmdldCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNvbXBvbmVudHNbTl07Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1pbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1heChjb25zdCBDb2xvckNv
bXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKK2NvbnN0ZXhwciBD
b2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENvbG9yQ29tcG9uZW50czxU
PiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewogICAgIHJldHVybiB7CiAgICAg
ICAgIHN0ZDo6bWF4KGEuY29tcG9uZW50c1swXSwgYi5jb21wb25lbnRzWzBdKSwKQEAgLTExNSw3
ICsxMjgsNyBAQCBpbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1hCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBv
bmVudE1pbihjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50
czxUPiYgYikKK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWluKGNv
bnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQog
ewogICAgIHJldHVybiB7CiAgICAgICAgIHN0ZDo6bWluKGEuY29tcG9uZW50c1swXSwgYi5jb21w
b25lbnRzWzBdKSwKQEAgLTEyNiwxMyArMTM5LDEzIEBAIGlubGluZSBDb2xvckNvbXBvbmVudHM8
VD4gcGVyQ29tcG9uZW50TWkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBv
bmVudHM8VD4mIGIpCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yQ29tcG9u
ZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewogICAgIHJldHVybiBh
LmNvbXBvbmVudHMgPT0gYi5jb21wb25lbnRzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0
IENvbG9yQ29tcG9uZW50czxUPiYgYikKK2NvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCiB7CiAg
ICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KQEAgLTE0Miw3ICsxNTUsNyBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENvbG9yQ29tcG9uCiBuYW1lc3BhY2Ugc3RkIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWNsYXNzIHR1cGxlX3NpemU8V2ViQ29yZTo6Q29sb3JDb21wb25lbnRzPFQ+
PiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCA0PiB7CitjbGFz
cyB0dXBsZV9zaXplPFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czxUPj4gOiBwdWJsaWMgc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzPFQ+
OjpTaXplPiB7CiB9OwogCiB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOLCB0eXBlbmFtZSBUPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNw
cAkocmV2aXNpb24gMjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JNYXRyaXguY3BwCShub25leGlzdGVudCkKQEAgLTEsMTg0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb2xvck1hdHJpeC5oIgotCi0jaW5jbHVkZSAi
Q29sb3JDb21wb25lbnRzLmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1Db2xvck1hdHJpeDo6Q29sb3JNYXRyaXgoKQotewotICAgIG1ha2VJ
ZGVudGl0eSgpOwotfQotCi1Db2xvck1hdHJpeDo6Q29sb3JNYXRyaXgoY29uc3QgZmxvYXQgdmFs
dWVzWzIwXSkKLXsKLSAgICBtX21hdHJpeFswXVswXSA9IHZhbHVlc1swXTsKLSAgICBtX21hdHJp
eFswXVsxXSA9IHZhbHVlc1sxXTsKLSAgICBtX21hdHJpeFswXVsyXSA9IHZhbHVlc1syXTsKLSAg
ICBtX21hdHJpeFswXVszXSA9IHZhbHVlc1szXTsKLSAgICBtX21hdHJpeFswXVs0XSA9IHZhbHVl
c1s0XTsKLQotICAgIG1fbWF0cml4WzFdWzBdID0gdmFsdWVzWzVdOwotICAgIG1fbWF0cml4WzFd
WzFdID0gdmFsdWVzWzZdOwotICAgIG1fbWF0cml4WzFdWzJdID0gdmFsdWVzWzddOwotICAgIG1f
bWF0cml4WzFdWzNdID0gdmFsdWVzWzhdOwotICAgIG1fbWF0cml4WzFdWzRdID0gdmFsdWVzWzld
OwotCi0gICAgbV9tYXRyaXhbMl1bMF0gPSB2YWx1ZXNbMTBdOwotICAgIG1fbWF0cml4WzJdWzFd
ID0gdmFsdWVzWzExXTsKLSAgICBtX21hdHJpeFsyXVsyXSA9IHZhbHVlc1sxMl07Ci0gICAgbV9t
YXRyaXhbMl1bM10gPSB2YWx1ZXNbMTNdOwotICAgIG1fbWF0cml4WzJdWzRdID0gdmFsdWVzWzE0
XTsKLQotICAgIG1fbWF0cml4WzNdWzBdID0gdmFsdWVzWzE1XTsKLSAgICBtX21hdHJpeFszXVsx
XSA9IHZhbHVlc1sxNl07Ci0gICAgbV9tYXRyaXhbM11bMl0gPSB2YWx1ZXNbMTddOwotICAgIG1f
bWF0cml4WzNdWzNdID0gdmFsdWVzWzE4XTsKLSAgICBtX21hdHJpeFszXVs0XSA9IHZhbHVlc1sx
OV07Ci19Ci0KLXZvaWQgQ29sb3JNYXRyaXg6Om1ha2VJZGVudGl0eSgpCi17Ci0gICAgbWVtc2V0
KG1fbWF0cml4LCAwLCBzaXplb2YobV9tYXRyaXgpKTsKLSAgICBtX21hdHJpeFswXVswXSA9IDE7
Ci0gICAgbV9tYXRyaXhbMV1bMV0gPSAxOwotICAgIG1fbWF0cml4WzJdWzJdID0gMTsKLSAgICBt
X21hdHJpeFszXVszXSA9IDE7Ci19Ci0KLUNvbG9yTWF0cml4IENvbG9yTWF0cml4OjpncmF5c2Nh
bGVNYXRyaXgoZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4IG1hdHJpeDsKLQotICAg
IGZsb2F0IG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gYW1vdW50LCAwLjAsIDEuMCk7Ci0K
LSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMt
MS8jZ3JheXNjYWxlRXF1aXZhbGVudAotICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9IDAuMjEy
NmYgKyAwLjc4NzRmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzFd
ID0gMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRy
aXhbMF1bMl0gPSAwLjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1vdW50OwotCi0gICAgbWF0
cml4Lm1fbWF0cml4WzFdWzBdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBvbmVNaW51c0Ftb3VudDsK
LSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAwLjcxNTJmICsgMC4yODQ4ZiAqIG9uZU1pbnVz
QW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsyXSA9IDAuMDcyMmYgLSAwLjA3MjJmICog
b25lTWludXNBbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjIxMjZmIC0g
MC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAu
NzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJd
WzJdID0gMC4wNzIyZiArIDAuOTI3OGYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICAKLSAgICByZXR1
cm4gbWF0cml4OwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6c2F0dXJhdGlvbk1hdHJp
eChmbG9hdCBhbW91bnQpCi17Ci0gICAgQ29sb3JNYXRyaXggbWF0cml4OwotCi0gICAgLy8gVmFs
dWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI2ZlQ29sb3JN
YXRyaXhFbGVtZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4yMTNmICsgMC43ODdm
ICogYW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsxXSA9IDAuNzE1ZiAtIDAuNzE1ZiAq
IGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMl0gPSAwLjA3MmYgLSAwLjA3MmYgKiBh
bW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBh
bW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzFdID0gMC43MTVmICsgMC4yODVmICogYW1v
dW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsyXSA9IDAuMDcyZiAtIDAuMDcyZiAqIGFtb3Vu
dDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFtb3Vu
dDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7
Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzJdID0gMC4wNzJmICsgMC45MjhmICogYW1vdW50Owot
Ci0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQotQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6Omh1ZVJv
dGF0ZU1hdHJpeChmbG9hdCBhbmdsZUluRGVncmVlcykKLXsKLSAgICBmbG9hdCBjb3NIdWUgPSBj
b3MoZGVnMnJhZChhbmdsZUluRGVncmVlcykpOwotICAgIGZsb2F0IHNpbkh1ZSA9IHNpbihkZWcy
cmFkKGFuZ2xlSW5EZWdyZWVzKSk7Ci0KLSAgICBDb2xvck1hdHJpeCBtYXRyaXg7Ci0KLSAgICAv
LyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jZmVD
b2xvck1hdHJpeEVsZW1lbnQKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAwLjIxM2YgKyBj
b3NIdWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAwLjIxM2Y7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBd
WzFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmIC0gc2luSHVlICogMC43MTVmOwotICAgIG1h
dHJpeC5tX21hdHJpeFswXVsyXSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiArIHNpbkh1ZSAq
IDAuOTI4ZjsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsxXVswXSA9IDAuMjEzZiAtIGNvc0h1ZSAq
IDAuMjEzZiArIHNpbkh1ZSAqIDAuMTQzZjsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAw
LjcxNWYgKyBjb3NIdWUgKiAwLjI4NWYgKyBzaW5IdWUgKiAwLjE0MGY7Ci0gICAgbWF0cml4Lm1f
bWF0cml4WzFdWzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmIC0gc2luSHVlICogMC4yODNm
OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNm
IC0gc2luSHVlICogMC43ODdmOwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAuNzE1ZiAt
IGNvc0h1ZSAqIDAuNzE1ZiArIHNpbkh1ZSAqIDAuNzE1ZjsKLSAgICBtYXRyaXgubV9tYXRyaXhb
Ml1bMl0gPSAwLjA3MmYgKyBjb3NIdWUgKiAwLjkyOGYgKyBzaW5IdWUgKiAwLjA3MmY7Ci0KLSAg
ICByZXR1cm4gbWF0cml4OwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6c2VwaWFNYXRy
aXgoZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4IG1hdHJpeDsKLQotICAgIGZsb2F0
IG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gYW1vdW50LCAwLjAsIDEuMCk7Ci0KLSAgICAv
LyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jc2Vw
aWFFcXVpdmFsZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4zOTNmICsgMC42MDdm
ICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzFdID0gMC43NjlmIC0g
MC43NjlmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzJdID0gMC4x
ODlmIC0gMC4xODlmICogb25lTWludXNBbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1b
MF0gPSAwLjM0OWYgLSAwLjM0OWYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRy
aXhbMV1bMV0gPSAwLjY4NmYgKyAwLjMxNGYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgu
bV9tYXRyaXhbMV1bMl0gPSAwLjE2OGYgLSAwLjE2OGYgKiBvbmVNaW51c0Ftb3VudDsKLQotICAg
IG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjcyZiAtIDAuMjcyZiAqIG9uZU1pbnVzQW1vdW50
OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAuNTM0ZiAtIDAuNTM0ZiAqIG9uZU1pbnVz
QW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9IDAuMTMxZiArIDAuODY5ZiAqIG9u
ZU1pbnVzQW1vdW50OwotCi0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQotdm9pZCBDb2xvck1hdHJp
eDo6dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGNvbG9y
Q29tcG9uZW50cykgY29uc3QKLXsKLSAgICBhdXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0g
PSBjb2xvckNvbXBvbmVudHM7Ci0KLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1swXSA9
IG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4
WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBtX21hdHJpeFswXVs0XTsK
LSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSA9IG1fbWF0cml4WzFdWzBdICogcmVk
ICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFdWzJdICogYmx1ZSArIG1fbWF0
cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMu
Y29tcG9uZW50c1syXSA9IG1fbWF0cml4WzJdWzBdICogcmVkICsgbV9tYXRyaXhbMl1bMV0gKiBn
cmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSArIG1fbWF0cml4WzJdWzNdICogYWxwaGEgKyBt
X21hdHJpeFsyXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1szXSA9IG1fbWF0
cml4WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiArIG1fbWF0cml4WzNdWzJd
ICogYmx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJpeFszXVs0XTsKLX0KLQot
Q29sb3JDb21wb25lbnRzPGZsb2F0PiBDb2xvck1hdHJpeDo6dHJhbnNmb3JtZWRDb2xvckNvbXBv
bmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY29sb3JDb21wb25lbnRzKSBjb25z
dAotewotICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yQ29tcG9uZW50
czsKLQotICAgIHJldHVybiB7Ci0gICAgICAgIG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRy
aXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNd
ICogYWxwaGEgKyBtX21hdHJpeFswXVs0XSwKLSAgICAgICAgbV9tYXRyaXhbMV1bMF0gKiByZWQg
KyBtX21hdHJpeFsxXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMV1bMl0gKiBibHVlICsgbV9tYXRy
aXhbMV1bM10gKiBhbHBoYSArIG1fbWF0cml4WzFdWzRdLAotICAgICAgICBtX21hdHJpeFsyXVsw
XSAqIHJlZCArIG1fbWF0cml4WzJdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsyXVsyXSAqIGJsdWUg
KyBtX21hdHJpeFsyXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMl1bNF0sCi0gICAgICAgIG1fbWF0
cml4WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiArIG1fbWF0cml4WzNdWzJd
ICogYmx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJpeFszXVs0XQotICAgIH07
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAkocmV2aXNpb24gMjYyMjUyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsMzEgKzI1LDEwOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhN
RTogVGhpcyBzaG91bGQgbGlrZWx5IGJlIHJlcGxhY2VkIGJ5IGEgZ2VuZXJpYyBtYXRyaXggY2xh
c3MuIE90aGVyIHRoYW4KLS8vIHRoZSBzcGVjaWZpYyBtYXRyaXggY29uc3R1Y3RvcnMsIHRoZXJl
IGlzIG5vdGhpbmcgY29sb3Igc3BlY2lmaWMgYWJvdXQgdGhpcy4KLS8vIEZ1dGhlcm1vcmUsIG1v
c3QgdGhlc2UgZG9uJ3QgbmVlZCB0byBiZSA0eDUgbWF0cmljZXMgd2l0aCBtb3N0IG9ubHkgbmVl
ZGluZwotLy8gYSAzeDMgbWF0cml4LgordGVtcGxhdGU8c2l6ZV90IENvbHVtbnMsIHNpemVfdCBS
b3dzPgogY2xhc3MgQ29sb3JNYXRyaXggewogcHVibGljOgotICAgIHN0YXRpYyBDb2xvck1hdHJp
eCBncmF5c2NhbGVNYXRyaXgoZmxvYXQpOwotICAgIHN0YXRpYyBDb2xvck1hdHJpeCBzYXR1cmF0
aW9uTWF0cml4KGZsb2F0KTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggaHVlUm90YXRlTWF0cml4
KGZsb2F0IGFuZ2xlSW5EZWdyZWVzKTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggc2VwaWFNYXRy
aXgoZmxvYXQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLlRzPgorICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBDb2xvck1hdHJpeChUcyAuLi5pbnB1dCkKKyAgICAgICAgOiBtX21hdHJpeCB7eyBp
bnB1dCAuLi4gfX0KKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mLi4uKFRzKSA9
PSBSb3dzICogQ29sdW1ucyk7CisgICAgfQogCi0gICAgQ29sb3JNYXRyaXgoKTsKLSAgICBDb2xv
ck1hdHJpeChjb25zdCBmbG9hdFsyMF0pOwotICAgIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JD
b21wb25lbnRzKENvbG9yQ29tcG9uZW50czxmbG9hdD4mKSBjb25zdDsKLSAgICBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+IHRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9u
ZW50czxmbG9hdD4mKSBjb25zdDsKKyAgICBjb25zdGV4cHIgdm9pZCB0cmFuc2Zvcm1Db2xvckNv
bXBvbmVudHMoQ29sb3JDb21wb25lbnRzPGZsb2F0PiYpIGNvbnN0OworICAgIGNvbnN0ZXhwciBD
b2xvckNvbXBvbmVudHM8ZmxvYXQ+IHRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IENv
bG9yQ29tcG9uZW50czxmbG9hdD4mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VJ
ZGVudGl0eSgpOworICAgIGNvbnN0ZXhwciBmbG9hdCBhdChzaXplX3Qgcm93LCBzaXplX3QgY29s
dW1uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWF0cml4Wyhyb3cgKiBDb2x1bW5z
KSArIGNvbHVtbl07CisgICAgfQogCi0gICAgZmxvYXQgbV9tYXRyaXhbNF1bNV07CisgICAgc3Rk
OjphcnJheTxmbG9hdCwgUm93cyAqIENvbHVtbnM+IG1fbWF0cml4OwogfTsKIAorLy8gRklYTUU6
IFRoZXNlIGFyZSBvbmx5IHVzZWQgaW4gRmlsdGVyT3BlcmF0aW9ucy5jcHAuIENvbnNpZGVyIG1v
dmluZyB0aGVtIHRoZXJlLgorY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGdyYXlzY2FsZUNv
bG9yTWF0cml4KGZsb2F0IGFtb3VudCkKK3sKKyAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3
dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jZ3JheXNjYWxlRXF1aXZhbGVudAorICAgIGZs
b2F0IG9uZU1pbnVzQW1vdW50ID0gc3RkOjpjbGFtcCgxLjBmIC0gYW1vdW50LCAwLjBmLCAxLjBm
KTsKKyAgICByZXR1cm4gQ29sb3JNYXRyaXg8MywgMz4geworICAgICAgICAwLjIxMjZmICsgMC43
ODc0ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50
LCAwLjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1vdW50LAorICAgICAgICAwLjIxMjZmIC0g
MC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjcxNTJmICsgMC4yODQ4ZiAqIG9uZU1pbnVzQW1v
dW50LCAwLjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1vdW50LAorICAgICAgICAwLjIxMjZm
IC0gMC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVz
QW1vdW50LCAwLjA3MjJmICsgMC45Mjc4ZiAqIG9uZU1pbnVzQW1vdW50CisgICAgfTsKK30KKwor
Y29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHNlcGlhQ29sb3JNYXRyaXgoZmxvYXQgYW1vdW50
KQoreworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZm
ZWN0cy0xLyNzZXBpYUVxdWl2YWxlbnQKKyAgICBmbG9hdCBvbmVNaW51c0Ftb3VudCA9IHN0ZDo6
Y2xhbXAoMS4wZiAtIGFtb3VudCwgMC4wZiwgMS4wZik7CisgICAgcmV0dXJuIENvbG9yTWF0cml4
PDMsIDM+IHsKKyAgICAgICAgMC4zOTNmICsgMC42MDdmICogb25lTWludXNBbW91bnQsIDAuNzY5
ZiAtIDAuNzY5ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjE4OWYgLSAwLjE4OWYgKiBvbmVNaW51c0Ft
b3VudCwKKyAgICAgICAgMC4zNDlmIC0gMC4zNDlmICogb25lTWludXNBbW91bnQsIDAuNjg2ZiAr
IDAuMzE0ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjE2OGYgLSAwLjE2OGYgKiBvbmVNaW51c0Ftb3Vu
dCwKKyAgICAgICAgMC4yNzJmIC0gMC4yNzJmICogb25lTWludXNBbW91bnQsIDAuNTM0ZiAtIDAu
NTM0ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjEzMWYgKyAwLjg2OWYgKiBvbmVNaW51c0Ftb3VudAor
ICAgIH07Cit9CisKK2NvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBzYXR1cmF0aW9uQ29sb3JN
YXRyaXgoZmxvYXQgYW1vdW50KQoreworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNmZUNvbG9yTWF0cml4RWxlbWVudAorICAgIHJldHVy
biBDb2xvck1hdHJpeDwzLCAzPiB7CisgICAgICAgIDAuMjEzZiArIDAuNzg3ZiAqIGFtb3VudCwg
IDAuNzE1ZiAtIDAuNzE1ZiAqIGFtb3VudCwgMC4wNzJmIC0gMC4wNzJmICogYW1vdW50LAorICAg
ICAgICAwLjIxM2YgLSAwLjc4N2YgKiBhbW91bnQsICAwLjcxNWYgKyAwLjcxNWYgKiBhbW91bnQs
IDAuMDcyZiAtIDAuMDcyZiAqIGFtb3VudCwKKyAgICAgICAgMC4yMTNmIC0gMC43ODdmICogYW1v
dW50LCAgMC43MTVmIC0gMC43MTVmICogYW1vdW50LCAwLjA3MmYgKyAwLjA3MmYgKiBhbW91bnQK
KyAgICB9OworfQorCisvLyBOT1RFOiBodWVSb3RhdGVDb2xvck1hdHJpeCBpcyBub3QgY29uc3Rl
eHByIGR1ZSB0byB1c2Ugb2YgY29zL3NpbiB3aGljaCBhcmUgbm90IGNvbnN0ZXhwciB5ZXQuCitp
bmxpbmUgQ29sb3JNYXRyaXg8MywgMz4gaHVlUm90YXRlQ29sb3JNYXRyaXgoZmxvYXQgYW5nbGVJ
bkRlZ3JlZXMpCit7CisgICAgZmxvYXQgY29zSHVlID0gY29zKGRlZzJyYWQoYW5nbGVJbkRlZ3Jl
ZXMpKTsKKyAgICBmbG9hdCBzaW5IdWUgPSBzaW4oZGVnMnJhZChhbmdsZUluRGVncmVlcykpOwor
CisgICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3Rz
LTEvI2ZlQ29sb3JNYXRyaXhFbGVtZW50CisgICAgcmV0dXJuIENvbG9yTWF0cml4PDMsIDM+IHsK
KyAgICAgICAgMC4yMTNmICsgY29zSHVlICogMC43ODdmIC0gc2luSHVlICogMC4yMTNmLCAwLjcx
NWYgLSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcxNWYsIDAuMDcyZiAtIGNvc0h1ZSAq
IDAuMDcyZiArIHNpbkh1ZSAqIDAuOTI4ZiwKKyAgICAgICAgMC4yMTNmIC0gY29zSHVlICogMC4y
MTNmICsgc2luSHVlICogMC4xNDNmLCAwLjcxNWYgKyBjb3NIdWUgKiAwLjI4NWYgKyBzaW5IdWUg
KiAwLjE0MGYsIDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiAtIHNpbkh1ZSAqIDAuMjgzZiwKKyAg
ICAgICAgMC4yMTNmIC0gY29zSHVlICogMC4yMTNmIC0gc2luSHVlICogMC43ODdmLCAwLjcxNWYg
LSBjb3NIdWUgKiAwLjcxNWYgKyBzaW5IdWUgKiAwLjcxNWYsIDAuMDcyZiArIGNvc0h1ZSAqIDAu
OTI4ZiArIHNpbkh1ZSAqIDAuMDcyZgorICAgIH07Cit9CisKK3RlbXBsYXRlPHNpemVfdCBDb2x1
bW5zLCBzaXplX3QgUm93cz4KK2NvbnN0ZXhwciB2b2lkIENvbG9yTWF0cml4PENvbHVtbnMsIFJv
d3M+Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgaW5w
dXRWZWN0b3IpIGNvbnN0Cit7CisgICAgaW5wdXRWZWN0b3IgPSB0cmFuc2Zvcm1lZENvbG9yQ29t
cG9uZW50cyhpbnB1dFZlY3Rvcik7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBDb2x1bW5zLCBzaXpl
X3QgUm93cz4KK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IENvbG9yTWF0cml4PENv
bHVtbnMsIFJvd3M+Ojp0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBpbnB1dFZlY3RvcikgY29uc3QKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KENv
bG9yQ29tcG9uZW50czxmbG9hdD46OlNpemUgPj0gUm93cyk7CisgICAgCisgICAgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiByZXN1bHQ7CisgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgUm93
czsgKytyb3cpIHsKKyAgICAgICAgaWYgY29uc3RleHByIChDb2x1bW5zIDw9IENvbG9yQ29tcG9u
ZW50czxmbG9hdD46OlNpemUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7
IGNvbHVtbiA8IENvbHVtbnM7ICsrY29sdW1uKQorICAgICAgICAgICAgICAgIHJlc3VsdC5jb21w
b25lbnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRWZWN0b3IuY29tcG9uZW50c1tj
b2x1bW5dOworICAgICAgICB9IGVsc2UgaWYgY29uc3RleHByIChDb2x1bW5zID4gQ29sb3JDb21w
b25lbnRzPGZsb2F0Pjo6U2l6ZSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgY29sdW1uID0g
MDsgY29sdW1uIDwgQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZTsgKytjb2x1bW4pCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93XSArPSBhdChyb3csIGNvbHVtbikgKiBp
bnB1dFZlY3Rvci5jb21wb25lbnRzW2NvbHVtbl07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBh
ZGRpdGlvbmFsQ29sdW1uID0gQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZTsgYWRkaXRpb25h
bENvbHVtbiA8IENvbHVtbnM7ICsrYWRkaXRpb25hbENvbHVtbikKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuY29tcG9uZW50c1tyb3ddICs9IGF0KHJvdywgYWRkaXRpb25hbENvbHVtbik7CisgICAg
ICAgIH0KKyAgICB9CisgICAgaWYgY29uc3RleHByIChDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpT
aXplID4gUm93cykgeworICAgICAgICBmb3IgKHNpemVfdCBhZGRpdGlvbmFsUm93ID0gUm93czsg
YWRkaXRpb25hbFJvdyA8IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7ICsrYWRkaXRpb25h
bFJvdykKKyAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzW2FkZGl0aW9uYWxSb3ddID0gaW5w
dXRWZWN0b3IuY29tcG9uZW50c1thZGRpdGlvbmFsUm93XTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCShyZXZpc2lv
biAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEzICs4MCwxMSBAQCBzdGF0aWMgQ29sb3JD
b21wb25lbnRzPGZsb2F0PiB4eXpUb0xpbmVhCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvU1JHQgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2lu
ZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKLSAgICBjb25zdCBmbG9hdCB2YWx1ZXNb
XSA9IHsKLSAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwgMC4w
ZiwgMC4wZiwKLSAgICAgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwg
MC4wZiwgMC4wZiwKLSAgICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUy
ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwg
ICAgICAgMS4wZiwgMC4wZiwKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9M
aW5lYXJTUkdCTWF0cml4IHsKKyAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40
OTg1MzE0ZiwKKyAgICAgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwK
KyAgICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZgogICAgIH07Ci0g
ICAgQ29sb3JNYXRyaXggeHl6VG9MaW5lYXJTUkdCTWF0cml4KHZhbHVlcyk7CiAgICAgcmV0dXJu
IHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21w
b25lbnRzKTsKIH0KIApAQCAtOTQsMzkgKzkyLDMzIEBAIHN0YXRpYyBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+IGxpbmVhclNSR0IKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9F
cW5fUkdCX1hZWl9NYXRyaXguaHRtbAotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0gewotICAg
ICAgICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsIDAuMGYsIDAuMGYsCi0g
ICAgICAgIDAuMjEyNjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwgMC4wZiwgMC4wZiwK
LSAgICAgICAgMC4wMTkzMzM5ZiwgIDAuMTE5MTkyMGYsICAwLjk1MDMwNDFmLCAwLjBmLCAwLjBm
LAotICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgIDEuMGYsIDAu
MGYsCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclNSR0JUb1hZWk1hdHJp
eCB7CisgICAgICAgIDAuNDEyNDU2NGYsICAwLjM1NzU3NjFmLCAgMC4xODA0Mzc1ZiwKKyAgICAg
ICAgMC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLAorICAgICAgICAwLjAxOTMz
MzlmLCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYKICAgICB9OwotICAgIENvbG9yTWF0cml4IGxp
bmVhclNSR0JUb1hZWk1hdHJpeCh2YWx1ZXMpOwogICAgIHJldHVybiBsaW5lYXJTUkdCVG9YWVpN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7CiB9CiAKIHN0
YXRpYyBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IFhZWlRvTGluZWFyUDMoY29uc3QgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiYgWFlaQ29tcG9uZW50cykKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKLSAgICBjb25zdCBmbG9h
dCB2YWx1ZXNbXSA9IHsKLSAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYx
NzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgLTAu
ODI5NDg4OTY5NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5
NDM2ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3
MjM4OTI2ODA0MThmLCAgMC45NTY4ODQ1MjQwMDc2ODcyZiwgMC4wZiwgMC4wZiwKLSAgICAgICAg
IDAuMGYsICAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAg
ICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6
VG9MaW5lYXJTUkdCTWF0cml4IHsKKyAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkz
MTM4MzYxNzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKKyAgICAgICAgLTAuODI5NDg4
OTY5NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2ZiwK
KyAgICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0MThmLCAgMC45
NTY4ODQ1MjQwMDc2ODcyZgogICAgIH07Ci0gICAgQ29sb3JNYXRyaXggeHl6VG9MaW5lYXJTUkdC
TWF0cml4KHZhbHVlcyk7CiAgICAgcmV0dXJuIHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIAogc3RhdGljIENvbG9yQ29t
cG9uZW50czxmbG9hdD4gbGluZWFyUDNUb1hZWihjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+
JiBYWVpDb21wb25lbnRzKQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
Y29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0g
ewotICAgICAgICAwLjQ4NjU3MDk0ODY0ODIxNjJmLCAwLjI2NTY2NzY5MzE2OTA5MzFmLCAwLjE5
ODIxNzI4NTIzNDM2M2YsIDAuMGYsIDAuMGYsCi0gICAgICAgIDAuMjI4OTc0NTY0MDY5NzQ4OGYs
IDAuNjkxNzM4NTIxODM2NTA2NGYsIDAuMDc5Mjg2OTE0MDkzNzQ1ZiwgMC4wZiwgMC4wZiwKLSAg
ICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wNDUxMTMzODE4NTg5MDI2ZiwgMS4wNDM5NDQz
Njg5MDA5NzZmLCAwLjBmLCAwLjBmLAotICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjBm
LCAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgIDEuMGYsIDAuMGYsCisgICAgY29u
c3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclAzVG9YWVpNYXRyaXggeworICAgICAgICAw
LjQ4NjU3MDk0ODY0ODIxNjJmLCAwLjI2NTY2NzY5MzE2OTA5MzFmLCAwLjE5ODIxNzI4NTIzNDM2
M2YsCisgICAgICAgIDAuMjI4OTc0NTY0MDY5NzQ4OGYsIDAuNjkxNzM4NTIxODM2NTA2NGYsIDAu
MDc5Mjg2OTE0MDkzNzQ1ZiwKKyAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wNDUxMTMz
ODE4NTg5MDI2ZiwgMS4wNDM5NDQzNjg5MDA5NzZmCiAgICAgfTsKLSAgICBDb2xvck1hdHJpeCBs
aW5lYXJQM1RvWFlaTWF0cml4KHZhbHVlcyk7CiAgICAgcmV0dXJuIGxpbmVhclAzVG9YWVpNYXRy
aXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMu
aAkocmV2aXNpb24gMjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvckNvbXBv
bmVudHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yQ29tcG9uZW50czsKIAogLy8g
MC0xIGNvbXBvbmVudHMsIHJlc3VsdCBpcyBjbGFtcGVkLgogZmxvYXQgbGluZWFyVG9SR0JDb2xv
ckNvbXBvbmVudChmbG9hdCk7CkBAIC02MywxMiArNjMsMTIgQEAgaW5saW5lIHVpbnQ4X3Qgcm91
bmRBbmRDbGFtcENvbG9yQ2hhbm5lbAogICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6cm91bmQo
dmFsdWUpLCAwLmYsIDI1NS5mKTsKIH0KIAotaW5saW5lIHVpbnQxNl90IGZhc3RNdWx0aXBseUJ5
MjU1KHVpbnQxNl90IHZhbHVlKQorY29uc3RleHByIHVpbnQxNl90IGZhc3RNdWx0aXBseUJ5MjU1
KHVpbnQxNl90IHZhbHVlKQogewogICAgIHJldHVybiAodmFsdWUgPDwgOCkgLSB2YWx1ZTsKIH0K
IAotaW5saW5lIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZfdCB2YWx1ZSkKK2NvbnN0
ZXhwciB1aW50MTZfdCBmYXN0RGl2aWRlQnkyNTUodWludDE2X3QgdmFsdWUpCiB7CiAgICAgLy8g
V2hpbGUgdGhpcyBpcyBhbiBhcHByb3hpbWF0ZSBhbGdvcml0aG0gZm9yIGRpdmlzaW9uIGJ5IDI1
NSwgaXQgZ2l2ZXMgcGVyZmVjdGx5IGFjY3VyYXRlIHJlc3VsdHMgZm9yIDE2LWJpdCB2YWx1ZXMu
CiAgICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgZ2l2ZXMgYWNjdXJhdGUgcmVzdWx0cyBmb3IgMTYt
Yml0IHZhbHVlcywgd2Ugc2hvdWxkIGdldCB0aGlzIG9wdGltaXphdGlvbiBpbnRvIGNvbXBpbGVy
cyBsaWtlIGNsYW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gMjYyMjUyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRkVNb3JwaG9sb2d5LmgiCiAKKyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMu
aCIKICNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAkocmV2aXNp
b24gMjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwyMiArODksMjIgQEAgYm9v
bCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjp0cgogewogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBHUkFZU0NBTEU6IHsKLSAgICAgICAgQ29sb3JNYXRyaXggbWF0cml4
ID0gQ29sb3JNYXRyaXg6OmdyYXlzY2FsZU1hdHJpeChtX2Ftb3VudCk7CisgICAgICAgIGF1dG8g
bWF0cml4ID0gZ3JheXNjYWxlQ29sb3JNYXRyaXgobV9hbW91bnQpOwogICAgICAgICBtYXRyaXgu
dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKGNvbG9yQ29tcG9uZW50cyk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICBjYXNlIFNFUElBOiB7Ci0gICAgICAgIENvbG9yTWF0cml4IG1h
dHJpeCA9IENvbG9yTWF0cml4OjpzZXBpYU1hdHJpeChtX2Ftb3VudCk7CisgICAgICAgIGF1dG8g
bWF0cml4ID0gc2VwaWFDb2xvck1hdHJpeChtX2Ftb3VudCk7CiAgICAgICAgIG1hdHJpeC50cmFu
c2Zvcm1Db2xvckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIGNhc2UgSFVFX1JPVEFURTogewotICAgICAgICBDb2xvck1hdHJpeCBt
YXRyaXggPSBDb2xvck1hdHJpeDo6aHVlUm90YXRlTWF0cml4KG1fYW1vdW50KTsKKyAgICAgICAg
YXV0byBtYXRyaXggPSBodWVSb3RhdGVDb2xvck1hdHJpeChtX2Ftb3VudCk7CiAgICAgICAgIG1h
dHJpeC50cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgU0FUVVJBVEU6IHsKLSAgICAgICAgQ29sb3JN
YXRyaXggbWF0cml4ID0gQ29sb3JNYXRyaXg6OnNhdHVyYXRpb25NYXRyaXgobV9hbW91bnQpOwor
ICAgICAgICBhdXRvIG1hdHJpeCA9IHNhdHVyYXRpb25Db2xvck1hdHJpeChtX2Ftb3VudCk7CiAg
ICAgICAgIG1hdHJpeC50cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjM3LDE0ICsyMzcsMTIgQEAgYm9vbCBJ
bnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OnRyYQogICAgIHNSR0JDb2xvckNvbXBvbmVu
dHMgPSBoc2xUb1NSR0IoaHNsQ29tcG9uZW50cyk7CiAgICAgCiAgICAgLy8gQXBwbHkgdGhlIG1h
dHJpeC4gU2VlIHJkYXI6Ly9wcm9ibGVtLzQxMTQ2NjUwIGZvciBob3cgdGhpcyBtYXRyaXggd2Fz
IGRlcml2ZWQuCi0gICAgY29uc3QgZmxvYXQgbWF0cml4VmFsdWVzWzIwXSA9IHsKLSAgICAgICAt
MC43NzAsICAwLjA1OSwgLTAuMDg5LCAwLCAxLAotICAgICAgICAwLjAzMCwgLTAuNzQxLCAtMC4w
ODksIDAsIDEsCi0gICAgICAgIDAuMDMwLCAgMC4wNTksIC0wLjg5MCwgMCwgMSwKLSAgICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAxLCAwCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDUs
IDQ+IHRvRGFya01vZGVNYXRyaXggeworICAgICAgIC0wLjc3MGYsICAwLjA1OWYsIC0wLjA4OWYs
IDAuMGYsIDEuMGYsCisgICAgICAgIDAuMDMwZiwgLTAuNzQxZiwgLTAuMDg5ZiwgMC4wZiwgMS4w
ZiwKKyAgICAgICAgMC4wMzBmLCAgMC4wNTlmLCAtMC44OTBmLCAwLjBmLCAxLjBmLAorICAgICAg
ICAgIDAuMGYsICAgIDAuMGYsICAgIDAuMGYsIDEuMGYsIDAuMGYKICAgICB9OwotCi0gICAgQ29s
b3JNYXRyaXggdG9EYXJrTW9kZU1hdHJpeChtYXRyaXhWYWx1ZXMpOwogICAgIHRvRGFya01vZGVN
YXRyaXgudHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvckNvbXBvbmVudHMpOwogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMjU0LDEzICsyNTIsMTIgQEAgYm9vbCBJbnZlcnRMaWdodG5l
c3NGaWx0ZXJPcGVyYXRpb246OmludgogICAgIGF1dG8gcmdiQ29tcG9uZW50cyA9IHNSR0JDb2xv
ckNvbXBvbmVudHM7CiAKICAgICAvLyBBcHBseSB0aGUgbWF0cml4LgotICAgIGNvbnN0IGZsb2F0
IG1hdHJpeFZhbHVlc1syMF0gPSB7Ci0gICAgICAgIC0xLjMwMCwgLTAuMDk3LCAgMC4xNDcsIDAs
IDEuMjUsCi0gICAgICAgIC0wLjA0OSwgLTEuMzQ3LCAgMC4xNDYsIDAsIDEuMjUsCi0gICAgICAg
IC0wLjA0OSwgLTAuMDk3LCAtMS4xMDQsIDAsIDEuMjUsCi0gICAgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgIDEsIDAKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8NSwgND4gdG9MaWdodE1v
ZGVNYXRyaXggeworICAgICAgICAtMS4zMDBmLCAtMC4wOTdmLCAgMC4xNDdmLCAwLjBmLCAxLjI1
ZiwKKyAgICAgICAgLTAuMDQ5ZiwgLTEuMzQ3ZiwgIDAuMTQ2ZiwgMC4wZiwgMS4yNWYsCisgICAg
ICAgIC0wLjA0OWYsIC0wLjA5N2YsIC0xLjEwNGYsIDAuMGYsIDEuMjVmLAorICAgICAgICAgICAw
LjBmLCAgICAwLjBmLCAgICAwLjBmLCAxLjBmLCAgMC4wZgogICAgIH07Ci0gICAgQ29sb3JNYXRy
aXggdG9MaWdodE1vZGVNYXRyaXgobWF0cml4VmFsdWVzKTsKICAgICB0b0xpZ2h0TW9kZU1hdHJp
eC50cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMocmdiQ29tcG9uZW50cyk7CiAKICAgICAvLyBDb252
ZXJ0IHRvIEhTTC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAkocmV2aXNpb24gMjYyMjUyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOwogY2xhc3MgRmlsdGVy
RWZmZWN0Owogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENv
bG9yQ29tcG9uZW50czsKIAogY2xhc3MgRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEZpbHRlck9wZXJhdGlvbj4gewogcHVibGljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400585</attachid>
            <date>2020-05-29 08:28:54 -0700</date>
            <delta_ts>2020-05-29 10:10:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212477-20200529082854.patch</filename>
            <type>text/plain</type>
            <size>32469</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQ29sb3JN
YXRyaXggc2hvdWxkIHN1cHBvcnQgc21hbGxlciBtYXRyaWNlcyBhbmQgYmUgY29uc3RleHByCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yQ29tcG9uZW50czo6Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yQ29tcG9uZW50czo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNv
bXBvbmVudHM6Om9wZXJhdG9yKyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBv
bmVudHM6Om9wZXJhdG9yLyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6
OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgorICAgICAgICAoV2ViQ29y
ZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JNYXRyaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6Q29sb3JNYXRyaXgp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OmF0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmdyYXlzY2FsZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcGlhQ29s
b3JNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6c2F0dXJhdGlvbkNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6Omh1ZVJvdGF0ZUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yTWF0cml4Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3JNYXRyaXg6OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4
eXpUb0xpbmVhclNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyU1JHQlRvWFlaKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhZWlRvTGluZWFyUDMpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFy
UDNUb1hZWik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmZhc3RNdWx0aXBseUJ5MjU1KToKKyAgICAgICAgKFdlYkNvcmU6
OmZhc3REaXZpZGVCeTI1NSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OmludmVyc2VU
cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaDoKKwogMjAyMC0wNS0yOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBEZWJ1ZyBdIGFjY2Vzc2liaWxp
dHkvcm9sZXMtZXhwb3NlZC5odG1sIGlzIGEgZmxha3kgdGltZW91dApJbmRleDogU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQJKHJldmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODcyLDcgKzE4NzIsNiBAQCBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5j
cHAKLXBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAxNjQsNyArMTAxNjQsNiBAQAog
CQk3QzlEQkZFQTFBOUM0ODlGMDAwRDZCMjUgLyogSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzlEQkZFQjFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlEQkZFQzFBOUM0
OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0NBQzZBRTYyNDdGMDgxRjAwRTYxRDU5IC8qIENvbG9yTWF0cml4
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yTWF0cml4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbG9yTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQjVDQTNEMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5
RXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVF1ZXJ5RXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTQy
Niw3ICsyNTQyNSw2IEBACiAJCQkJQjI3NTM1MzkwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmgg
Ki8sCiAJCQkJN0NBQzZBRUMyNDdGMUM1MTAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oICov
LAogCQkJCTMxMDNCN0RFMURCMDE1NTYwMDhCQjg5MCAvKiBDb2xvckhhc2guaCAqLywKLQkJCQk3
Q0FDNkFFNjI0N0YwODFGMDBFNjFENTkgLyogQ29sb3JNYXRyaXguY3BwICovLAogCQkJCTdDQUM2
QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovLAogCQkJCTkzODJERjU3MTBB
OEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAw
MjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyNjIy
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNzcgKzM0LDkwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBDb2xvckNvbXBvbmVudHMgewotICAgIENv
bG9yQ29tcG9uZW50cyhUIGEgPSAwLCBUIGIgPSAwLCBUIGMgPSAwLCBUIGQgPSAwKQorICAgIGNv
bnN0ZXhwciBzdGF0aWMgc2l6ZV90IFNpemUgPSA0OworCisgICAgY29uc3RleHByIENvbG9yQ29t
cG9uZW50cyhUIGEgPSAwLCBUIGIgPSAwLCBUIGMgPSAwLCBUIGQgPSAwKQogICAgICAgICA6IGNv
bXBvbmVudHMgeyBhLCBiLCBjLCBkIH0KICAgICB7CiAgICAgfQogCi0gICAgQ29sb3JDb21wb25l
bnRzKGNvbnN0IHN0ZDo6YXJyYXk8VCwgND4mIHZhbHVlcykKLSAgICAgICAgOiBjb21wb25lbnRz
IHsgdmFsdWVzIH0KLSAgICB7Ci0gICAgfQorICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMm
IG9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJik7CiAKLSAgICBDb2xvckNvbXBvbmVu
dHMmIG9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJiByaHMpCi0gICAgewotICAgICAg
ICBjb21wb25lbnRzWzBdICs9IHJocy5jb21wb25lbnRzWzBdOwotICAgICAgICBjb21wb25lbnRz
WzFdICs9IHJocy5jb21wb25lbnRzWzFdOwotICAgICAgICBjb21wb25lbnRzWzJdICs9IHJocy5j
b21wb25lbnRzWzJdOwotICAgICAgICBjb21wb25lbnRzWzNdICs9IHJocy5jb21wb25lbnRzWzNd
OwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQorICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHMgb3BlcmF0b3IrKFQpIGNvbnN0OworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMg
b3BlcmF0b3IvKFQpIGNvbnN0OworICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMgb3BlcmF0
b3IqKFQpIGNvbnN0OwogCi0gICAgQ29sb3JDb21wb25lbnRzIG9wZXJhdG9yKyhUIHJocykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBjb21wb25lbnRzWzBdICsg
cmhzLAotICAgICAgICAgICAgY29tcG9uZW50c1sxXSArIHJocywKLSAgICAgICAgICAgIGNvbXBv
bmVudHNbMl0gKyByaHMsCi0gICAgICAgICAgICBjb21wb25lbnRzWzNdICsgcmhzCi0gICAgICAg
IH07Ci0gICAgfQorICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMgYWJzKCkgY29uc3Q7CiAK
LSAgICBDb2xvckNvbXBvbmVudHMgb3BlcmF0b3IvKFQgZGVub21pbmF0b3IpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgY29tcG9uZW50c1swXSAvIGRlbm9taW5h
dG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1sxXSAvIGRlbm9taW5hdG9yLAotICAgICAgICAg
ICAgY29tcG9uZW50c1syXSAvIGRlbm9taW5hdG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1sz
XSAvIGRlbm9taW5hdG9yCi0gICAgICAgIH07Ci0gICAgfQorICAgIHRlbXBsYXRlPHN0ZDo6c2l6
ZV90IE4+CisgICAgY29uc3RleHByIFQgZ2V0KCkgY29uc3Q7CiAKLSAgICBDb2xvckNvbXBvbmVu
dHMgb3BlcmF0b3IqKFQgZmFjdG9yKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAg
ICAgICAgICAgIGNvbXBvbmVudHNbMF0gKiBmYWN0b3IsCi0gICAgICAgICAgICBjb21wb25lbnRz
WzFdICogZmFjdG9yLAotICAgICAgICAgICAgY29tcG9uZW50c1syXSAqIGZhY3RvciwKLSAgICAg
ICAgICAgIGNvbXBvbmVudHNbM10gKiBmYWN0b3IKLSAgICAgICAgfTsKLSAgICB9CisgICAgc3Rk
OjphcnJheTxULCBTaXplPiBjb21wb25lbnRzOworfTsKIAotICAgIENvbG9yQ29tcG9uZW50cyBh
YnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHN0ZDo6YWJz
KGNvbXBvbmVudHNbMF0pLAotICAgICAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1sxXSksCi0g
ICAgICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzJdKSwKLSAgICAgICAgICAgIHN0ZDo6YWJz
KGNvbXBvbmVudHNbM10pCi0gICAgICAgIH07Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4mIENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0
b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmIHJocykKK3sKKyAgICBjb21wb25lbnRzWzBdICs9
IHJocy5jb21wb25lbnRzWzBdOworICAgIGNvbXBvbmVudHNbMV0gKz0gcmhzLmNvbXBvbmVudHNb
MV07CisgICAgY29tcG9uZW50c1syXSArPSByaHMuY29tcG9uZW50c1syXTsKKyAgICBjb21wb25l
bnRzWzNdICs9IHJocy5jb21wb25lbnRzWzNdOworICAgIHJldHVybiAqdGhpczsKK30KIAotICAg
IHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+Ci0gICAgVCBnZXQoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNvbXBvbmVudHNbTl07Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Nv
bnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvciso
VCByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY29tcG9uZW50c1swXSArIHJo
cywKKyAgICAgICAgY29tcG9uZW50c1sxXSArIHJocywKKyAgICAgICAgY29tcG9uZW50c1syXSAr
IHJocywKKyAgICAgICAgY29tcG9uZW50c1szXSArIHJocworICAgIH07Cit9CiAKLSAgICBzdGQ6
OmFycmF5PFQsIDQ+IGNvbXBvbmVudHM7Ci19OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0
ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvci8oVCBk
ZW5vbWluYXRvcikgY29uc3QKK3sKKyAgICByZXR1cm4geworICAgICAgICBjb21wb25lbnRzWzBd
IC8gZGVub21pbmF0b3IsCisgICAgICAgIGNvbXBvbmVudHNbMV0gLyBkZW5vbWluYXRvciwKKyAg
ICAgICAgY29tcG9uZW50c1syXSAvIGRlbm9taW5hdG9yLAorICAgICAgICBjb21wb25lbnRzWzNd
IC8gZGVub21pbmF0b3IKKyAgICB9OworfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxUPiBDb2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yKihUIGZh
Y3RvcikgY29uc3QKK3sKKyAgICByZXR1cm4geworICAgICAgICBjb21wb25lbnRzWzBdICogZmFj
dG9yLAorICAgICAgICBjb21wb25lbnRzWzFdICogZmFjdG9yLAorICAgICAgICBjb21wb25lbnRz
WzJdICogZmFjdG9yLAorICAgICAgICBjb21wb25lbnRzWzNdICogZmFjdG9yCisgICAgfTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29s
b3JDb21wb25lbnRzPFQ+OjphYnMoKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIHN0
ZDo6YWJzKGNvbXBvbmVudHNbMF0pLAorICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzFdKSwK
KyAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1syXSksCisgICAgICAgIHN0ZDo6YWJzKGNvbXBv
bmVudHNbM10pCisgICAgfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHN0
ZDo6c2l6ZV90IE4+Citjb25zdGV4cHIgVCBDb2xvckNvbXBvbmVudHM8VD46OmdldCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNvbXBvbmVudHNbTl07Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1pbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1heChjb25zdCBDb2xvckNv
bXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKK2NvbnN0ZXhwciBD
b2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENvbG9yQ29tcG9uZW50czxU
PiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewogICAgIHJldHVybiB7CiAgICAg
ICAgIHN0ZDo6bWF4KGEuY29tcG9uZW50c1swXSwgYi5jb21wb25lbnRzWzBdKSwKQEAgLTExNSw3
ICsxMjgsNyBAQCBpbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1hCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBv
bmVudE1pbihjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50
czxUPiYgYikKK2NvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWluKGNv
bnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQog
ewogICAgIHJldHVybiB7CiAgICAgICAgIHN0ZDo6bWluKGEuY29tcG9uZW50c1swXSwgYi5jb21w
b25lbnRzWzBdKSwKQEAgLTEyNiwxMyArMTM5LDEzIEBAIGlubGluZSBDb2xvckNvbXBvbmVudHM8
VD4gcGVyQ29tcG9uZW50TWkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBv
bmVudHM8VD4mIGIpCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yQ29tcG9u
ZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewogICAgIHJldHVybiBh
LmNvbXBvbmVudHMgPT0gYi5jb21wb25lbnRzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0
IENvbG9yQ29tcG9uZW50czxUPiYgYikKK2NvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCiB7CiAg
ICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KQEAgLTE0Miw3ICsxNTUsNyBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENvbG9yQ29tcG9uCiBuYW1lc3BhY2Ugc3RkIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWNsYXNzIHR1cGxlX3NpemU8V2ViQ29yZTo6Q29sb3JDb21wb25lbnRzPFQ+
PiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCA0PiB7CitjbGFz
cyB0dXBsZV9zaXplPFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czxUPj4gOiBwdWJsaWMgc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzPFQ+
OjpTaXplPiB7CiB9OwogCiB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOLCB0eXBlbmFtZSBUPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNw
cAkocmV2aXNpb24gMjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JNYXRyaXguY3BwCShub25leGlzdGVudCkKQEAgLTEsMTg0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb2xvck1hdHJpeC5oIgotCi0jaW5jbHVkZSAi
Q29sb3JDb21wb25lbnRzLmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1Db2xvck1hdHJpeDo6Q29sb3JNYXRyaXgoKQotewotICAgIG1ha2VJ
ZGVudGl0eSgpOwotfQotCi1Db2xvck1hdHJpeDo6Q29sb3JNYXRyaXgoY29uc3QgZmxvYXQgdmFs
dWVzWzIwXSkKLXsKLSAgICBtX21hdHJpeFswXVswXSA9IHZhbHVlc1swXTsKLSAgICBtX21hdHJp
eFswXVsxXSA9IHZhbHVlc1sxXTsKLSAgICBtX21hdHJpeFswXVsyXSA9IHZhbHVlc1syXTsKLSAg
ICBtX21hdHJpeFswXVszXSA9IHZhbHVlc1szXTsKLSAgICBtX21hdHJpeFswXVs0XSA9IHZhbHVl
c1s0XTsKLQotICAgIG1fbWF0cml4WzFdWzBdID0gdmFsdWVzWzVdOwotICAgIG1fbWF0cml4WzFd
WzFdID0gdmFsdWVzWzZdOwotICAgIG1fbWF0cml4WzFdWzJdID0gdmFsdWVzWzddOwotICAgIG1f
bWF0cml4WzFdWzNdID0gdmFsdWVzWzhdOwotICAgIG1fbWF0cml4WzFdWzRdID0gdmFsdWVzWzld
OwotCi0gICAgbV9tYXRyaXhbMl1bMF0gPSB2YWx1ZXNbMTBdOwotICAgIG1fbWF0cml4WzJdWzFd
ID0gdmFsdWVzWzExXTsKLSAgICBtX21hdHJpeFsyXVsyXSA9IHZhbHVlc1sxMl07Ci0gICAgbV9t
YXRyaXhbMl1bM10gPSB2YWx1ZXNbMTNdOwotICAgIG1fbWF0cml4WzJdWzRdID0gdmFsdWVzWzE0
XTsKLQotICAgIG1fbWF0cml4WzNdWzBdID0gdmFsdWVzWzE1XTsKLSAgICBtX21hdHJpeFszXVsx
XSA9IHZhbHVlc1sxNl07Ci0gICAgbV9tYXRyaXhbM11bMl0gPSB2YWx1ZXNbMTddOwotICAgIG1f
bWF0cml4WzNdWzNdID0gdmFsdWVzWzE4XTsKLSAgICBtX21hdHJpeFszXVs0XSA9IHZhbHVlc1sx
OV07Ci19Ci0KLXZvaWQgQ29sb3JNYXRyaXg6Om1ha2VJZGVudGl0eSgpCi17Ci0gICAgbWVtc2V0
KG1fbWF0cml4LCAwLCBzaXplb2YobV9tYXRyaXgpKTsKLSAgICBtX21hdHJpeFswXVswXSA9IDE7
Ci0gICAgbV9tYXRyaXhbMV1bMV0gPSAxOwotICAgIG1fbWF0cml4WzJdWzJdID0gMTsKLSAgICBt
X21hdHJpeFszXVszXSA9IDE7Ci19Ci0KLUNvbG9yTWF0cml4IENvbG9yTWF0cml4OjpncmF5c2Nh
bGVNYXRyaXgoZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4IG1hdHJpeDsKLQotICAg
IGZsb2F0IG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gYW1vdW50LCAwLjAsIDEuMCk7Ci0K
LSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMt
MS8jZ3JheXNjYWxlRXF1aXZhbGVudAotICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9IDAuMjEy
NmYgKyAwLjc4NzRmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzFd
ID0gMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRy
aXhbMF1bMl0gPSAwLjA3MjJmIC0gMC4wNzIyZiAqIG9uZU1pbnVzQW1vdW50OwotCi0gICAgbWF0
cml4Lm1fbWF0cml4WzFdWzBdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBvbmVNaW51c0Ftb3VudDsK
LSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAwLjcxNTJmICsgMC4yODQ4ZiAqIG9uZU1pbnVz
QW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsyXSA9IDAuMDcyMmYgLSAwLjA3MjJmICog
b25lTWludXNBbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjIxMjZmIC0g
MC4yMTI2ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAu
NzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJd
WzJdID0gMC4wNzIyZiArIDAuOTI3OGYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICAKLSAgICByZXR1
cm4gbWF0cml4OwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6c2F0dXJhdGlvbk1hdHJp
eChmbG9hdCBhbW91bnQpCi17Ci0gICAgQ29sb3JNYXRyaXggbWF0cml4OwotCi0gICAgLy8gVmFs
dWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI2ZlQ29sb3JN
YXRyaXhFbGVtZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4yMTNmICsgMC43ODdm
ICogYW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsxXSA9IDAuNzE1ZiAtIDAuNzE1ZiAq
IGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMl0gPSAwLjA3MmYgLSAwLjA3MmYgKiBh
bW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBh
bW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzFdID0gMC43MTVmICsgMC4yODVmICogYW1v
dW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsyXSA9IDAuMDcyZiAtIDAuMDcyZiAqIGFtb3Vu
dDsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFtb3Vu
dDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7
Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzJdID0gMC4wNzJmICsgMC45MjhmICogYW1vdW50Owot
Ci0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQotQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6Omh1ZVJv
dGF0ZU1hdHJpeChmbG9hdCBhbmdsZUluRGVncmVlcykKLXsKLSAgICBmbG9hdCBjb3NIdWUgPSBj
b3MoZGVnMnJhZChhbmdsZUluRGVncmVlcykpOwotICAgIGZsb2F0IHNpbkh1ZSA9IHNpbihkZWcy
cmFkKGFuZ2xlSW5EZWdyZWVzKSk7Ci0KLSAgICBDb2xvck1hdHJpeCBtYXRyaXg7Ci0KLSAgICAv
LyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jZmVD
b2xvck1hdHJpeEVsZW1lbnQKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAwLjIxM2YgKyBj
b3NIdWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAwLjIxM2Y7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBd
WzFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmIC0gc2luSHVlICogMC43MTVmOwotICAgIG1h
dHJpeC5tX21hdHJpeFswXVsyXSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiArIHNpbkh1ZSAq
IDAuOTI4ZjsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsxXVswXSA9IDAuMjEzZiAtIGNvc0h1ZSAq
IDAuMjEzZiArIHNpbkh1ZSAqIDAuMTQzZjsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAw
LjcxNWYgKyBjb3NIdWUgKiAwLjI4NWYgKyBzaW5IdWUgKiAwLjE0MGY7Ci0gICAgbWF0cml4Lm1f
bWF0cml4WzFdWzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmIC0gc2luSHVlICogMC4yODNm
OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNm
IC0gc2luSHVlICogMC43ODdmOwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAuNzE1ZiAt
IGNvc0h1ZSAqIDAuNzE1ZiArIHNpbkh1ZSAqIDAuNzE1ZjsKLSAgICBtYXRyaXgubV9tYXRyaXhb
Ml1bMl0gPSAwLjA3MmYgKyBjb3NIdWUgKiAwLjkyOGYgKyBzaW5IdWUgKiAwLjA3MmY7Ci0KLSAg
ICByZXR1cm4gbWF0cml4OwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6c2VwaWFNYXRy
aXgoZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4IG1hdHJpeDsKLQotICAgIGZsb2F0
IG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gYW1vdW50LCAwLjAsIDEuMCk7Ci0KLSAgICAv
LyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8jc2Vw
aWFFcXVpdmFsZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4zOTNmICsgMC42MDdm
ICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzFdID0gMC43NjlmIC0g
MC43NjlmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzJdID0gMC4x
ODlmIC0gMC4xODlmICogb25lTWludXNBbW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1b
MF0gPSAwLjM0OWYgLSAwLjM0OWYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRy
aXhbMV1bMV0gPSAwLjY4NmYgKyAwLjMxNGYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgu
bV9tYXRyaXhbMV1bMl0gPSAwLjE2OGYgLSAwLjE2OGYgKiBvbmVNaW51c0Ftb3VudDsKLQotICAg
IG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjcyZiAtIDAuMjcyZiAqIG9uZU1pbnVzQW1vdW50
OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAuNTM0ZiAtIDAuNTM0ZiAqIG9uZU1pbnVz
QW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9IDAuMTMxZiArIDAuODY5ZiAqIG9u
ZU1pbnVzQW1vdW50OwotCi0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQotdm9pZCBDb2xvck1hdHJp
eDo6dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGNvbG9y
Q29tcG9uZW50cykgY29uc3QKLXsKLSAgICBhdXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0g
PSBjb2xvckNvbXBvbmVudHM7Ci0KLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1swXSA9
IG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4
WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBtX21hdHJpeFswXVs0XTsK
LSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSA9IG1fbWF0cml4WzFdWzBdICogcmVk
ICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFdWzJdICogYmx1ZSArIG1fbWF0
cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMu
Y29tcG9uZW50c1syXSA9IG1fbWF0cml4WzJdWzBdICogcmVkICsgbV9tYXRyaXhbMl1bMV0gKiBn
cmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSArIG1fbWF0cml4WzJdWzNdICogYWxwaGEgKyBt
X21hdHJpeFsyXVs0XTsKLSAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1szXSA9IG1fbWF0
cml4WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiArIG1fbWF0cml4WzNdWzJd
ICogYmx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJpeFszXVs0XTsKLX0KLQot
Q29sb3JDb21wb25lbnRzPGZsb2F0PiBDb2xvck1hdHJpeDo6dHJhbnNmb3JtZWRDb2xvckNvbXBv
bmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY29sb3JDb21wb25lbnRzKSBjb25z
dAotewotICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yQ29tcG9uZW50
czsKLQotICAgIHJldHVybiB7Ci0gICAgICAgIG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRy
aXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNd
ICogYWxwaGEgKyBtX21hdHJpeFswXVs0XSwKLSAgICAgICAgbV9tYXRyaXhbMV1bMF0gKiByZWQg
KyBtX21hdHJpeFsxXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMV1bMl0gKiBibHVlICsgbV9tYXRy
aXhbMV1bM10gKiBhbHBoYSArIG1fbWF0cml4WzFdWzRdLAotICAgICAgICBtX21hdHJpeFsyXVsw
XSAqIHJlZCArIG1fbWF0cml4WzJdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsyXVsyXSAqIGJsdWUg
KyBtX21hdHJpeFsyXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMl1bNF0sCi0gICAgICAgIG1fbWF0
cml4WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiArIG1fbWF0cml4WzNdWzJd
ICogYmx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJpeFszXVs0XQotICAgIH07
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAkocmV2aXNpb24gMjYyMjUyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsMzEgKzI1LDExMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgPG1hdGguaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29sb3JDb21wb25lbnRzOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhNRTogVGhpcyBz
aG91bGQgbGlrZWx5IGJlIHJlcGxhY2VkIGJ5IGEgZ2VuZXJpYyBtYXRyaXggY2xhc3MuIE90aGVy
IHRoYW4KLS8vIHRoZSBzcGVjaWZpYyBtYXRyaXggY29uc3R1Y3RvcnMsIHRoZXJlIGlzIG5vdGhp
bmcgY29sb3Igc3BlY2lmaWMgYWJvdXQgdGhpcy4KLS8vIEZ1dGhlcm1vcmUsIG1vc3QgdGhlc2Ug
ZG9uJ3QgbmVlZCB0byBiZSA0eDUgbWF0cmljZXMgd2l0aCBtb3N0IG9ubHkgbmVlZGluZwotLy8g
YSAzeDMgbWF0cml4LgordGVtcGxhdGU8c2l6ZV90IENvbHVtbnMsIHNpemVfdCBSb3dzPgogY2xh
c3MgQ29sb3JNYXRyaXggewogcHVibGljOgotICAgIHN0YXRpYyBDb2xvck1hdHJpeCBncmF5c2Nh
bGVNYXRyaXgoZmxvYXQpOwotICAgIHN0YXRpYyBDb2xvck1hdHJpeCBzYXR1cmF0aW9uTWF0cml4
KGZsb2F0KTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggaHVlUm90YXRlTWF0cml4KGZsb2F0IGFu
Z2xlSW5EZWdyZWVzKTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggc2VwaWFNYXRyaXgoZmxvYXQp
OwotCi0gICAgQ29sb3JNYXRyaXgoKTsKLSAgICBDb2xvck1hdHJpeChjb25zdCBmbG9hdFsyMF0p
OwotICAgIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKENvbG9yQ29tcG9uZW50
czxmbG9hdD4mKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHRyYW5zZm9ybWVk
Q29sb3JDb21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5Ucz4KKyAgICBleHBsaWNpdCBjb25zdGV4cHIgQ29sb3JN
YXRyaXgoVHMgLi4uaW5wdXQpCisgICAgICAgIDogbV9tYXRyaXgge3sgaW5wdXQgLi4uIH19Cisg
ICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZi4uLihUcykgPT0gUm93cyAqIENvbHVt
bnMpOworICAgIH0KKworICAgIGNvbnN0ZXhwciB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50
cyhDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JikgY29uc3Q7CisgICAgY29uc3RleHByIENvbG9yQ29t
cG9uZW50czxmbG9hdD4gdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiYpIGNvbnN0OworCisgICAgY29uc3RleHByIGZsb2F0IGF0KHNpemVfdCBy
b3csIHNpemVfdCBjb2x1bW4pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tYXRyaXhb
KHJvdyAqIENvbHVtbnMpICsgY29sdW1uXTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBt
YWtlSWRlbnRpdHkoKTsKLQotICAgIGZsb2F0IG1fbWF0cml4WzRdWzVdOworICAgIHN0ZDo6YXJy
YXk8ZmxvYXQsIFJvd3MgKiBDb2x1bW5zPiBtX21hdHJpeDsKIH07CiAKKy8vIEZJWE1FOiBUaGVz
ZSBhcmUgb25seSB1c2VkIGluIEZpbHRlck9wZXJhdGlvbnMuY3BwLiBDb25zaWRlciBtb3Zpbmcg
dGhlbSB0aGVyZS4KK2NvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBncmF5c2NhbGVDb2xvck1h
dHJpeChmbG9hdCBhbW91bnQpCit7CisgICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMu
b3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI2dyYXlzY2FsZUVxdWl2YWxlbnQKKyAgICBmbG9hdCBv
bmVNaW51c0Ftb3VudCA9IHN0ZDo6Y2xhbXAoMS4wZiAtIGFtb3VudCwgMC4wZiwgMS4wZik7Cisg
ICAgcmV0dXJuIENvbG9yTWF0cml4PDMsIDM+IHsKKyAgICAgICAgMC4yMTI2ZiArIDAuNzg3NGYg
KiBvbmVNaW51c0Ftb3VudCwgMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3VudCwgMC4w
NzIyZiAtIDAuMDcyMmYgKiBvbmVNaW51c0Ftb3VudCwKKyAgICAgICAgMC4yMTI2ZiAtIDAuMjEy
NmYgKiBvbmVNaW51c0Ftb3VudCwgMC43MTUyZiArIDAuMjg0OGYgKiBvbmVNaW51c0Ftb3VudCwg
MC4wNzIyZiAtIDAuMDcyMmYgKiBvbmVNaW51c0Ftb3VudCwKKyAgICAgICAgMC4yMTI2ZiAtIDAu
MjEyNmYgKiBvbmVNaW51c0Ftb3VudCwgMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3Vu
dCwgMC4wNzIyZiArIDAuOTI3OGYgKiBvbmVNaW51c0Ftb3VudAorICAgIH07Cit9CisKK2NvbnN0
ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBzZXBpYUNvbG9yTWF0cml4KGZsb2F0IGFtb3VudCkKK3sK
KyAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMt
MS8jc2VwaWFFcXVpdmFsZW50CisgICAgZmxvYXQgb25lTWludXNBbW91bnQgPSBzdGQ6OmNsYW1w
KDEuMGYgLSBhbW91bnQsIDAuMGYsIDEuMGYpOworICAgIHJldHVybiBDb2xvck1hdHJpeDwzLCAz
PiB7CisgICAgICAgIDAuMzkzZiArIDAuNjA3ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjc2OWYgLSAw
Ljc2OWYgKiBvbmVNaW51c0Ftb3VudCwgMC4xODlmIC0gMC4xODlmICogb25lTWludXNBbW91bnQs
CisgICAgICAgIDAuMzQ5ZiAtIDAuMzQ5ZiAqIG9uZU1pbnVzQW1vdW50LCAwLjY4NmYgKyAwLjMx
NGYgKiBvbmVNaW51c0Ftb3VudCwgMC4xNjhmIC0gMC4xNjhmICogb25lTWludXNBbW91bnQsCisg
ICAgICAgIDAuMjcyZiAtIDAuMjcyZiAqIG9uZU1pbnVzQW1vdW50LCAwLjUzNGYgLSAwLjUzNGYg
KiBvbmVNaW51c0Ftb3VudCwgMC4xMzFmICsgMC44NjlmICogb25lTWludXNBbW91bnQKKyAgICB9
OworfQorCitjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gc2F0dXJhdGlvbkNvbG9yTWF0cml4
KGZsb2F0IGFtb3VudCkKK3sKKyAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcv
VFIvZmlsdGVyLWVmZmVjdHMtMS8jZmVDb2xvck1hdHJpeEVsZW1lbnQKKyAgICByZXR1cm4gQ29s
b3JNYXRyaXg8MywgMz4geworICAgICAgICAwLjIxM2YgKyAwLjc4N2YgKiBhbW91bnQsICAwLjcx
NWYgLSAwLjcxNWYgKiBhbW91bnQsIDAuMDcyZiAtIDAuMDcyZiAqIGFtb3VudCwKKyAgICAgICAg
MC4yMTNmIC0gMC4yMTNmICogYW1vdW50LCAgMC43MTVmICsgMC4yODVmICogYW1vdW50LCAwLjA3
MmYgLSAwLjA3MmYgKiBhbW91bnQsCisgICAgICAgIDAuMjEzZiAtIDAuMjEzZiAqIGFtb3VudCwg
IDAuNzE1ZiAtIDAuNzE1ZiAqIGFtb3VudCwgMC4wNzJmICsgMC45MjhmICogYW1vdW50CisgICAg
fTsKK30KKworLy8gTk9URTogaHVlUm90YXRlQ29sb3JNYXRyaXggaXMgbm90IGNvbnN0ZXhwciBk
dWUgdG8gdXNlIG9mIGNvcy9zaW4gd2hpY2ggYXJlIG5vdCBjb25zdGV4cHIgeWV0LgoraW5saW5l
IENvbG9yTWF0cml4PDMsIDM+IGh1ZVJvdGF0ZUNvbG9yTWF0cml4KGZsb2F0IGFuZ2xlSW5EZWdy
ZWVzKQoreworICAgIGZsb2F0IGNvc0h1ZSA9IGNvcyhkZWcycmFkKGFuZ2xlSW5EZWdyZWVzKSk7
CisgICAgZmxvYXQgc2luSHVlID0gc2luKGRlZzJyYWQoYW5nbGVJbkRlZ3JlZXMpKTsKKworICAg
IC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNm
ZUNvbG9yTWF0cml4RWxlbWVudAorICAgIHJldHVybiBDb2xvck1hdHJpeDwzLCAzPiB7CisgICAg
ICAgIDAuMjEzZiArIGNvc0h1ZSAqIDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZiwgMC43MTVmIC0g
Y29zSHVlICogMC43MTVmIC0gc2luSHVlICogMC43MTVmLCAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3
MmYgKyBzaW5IdWUgKiAwLjkyOGYsCisgICAgICAgIDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiAr
IHNpbkh1ZSAqIDAuMTQzZiwgMC43MTVmICsgY29zSHVlICogMC4yODVmICsgc2luSHVlICogMC4x
NDBmLCAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3MmYgLSBzaW5IdWUgKiAwLjI4M2YsCisgICAgICAg
IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiAtIHNpbkh1ZSAqIDAuNzg3ZiwgMC43MTVmIC0gY29z
SHVlICogMC43MTVmICsgc2luSHVlICogMC43MTVmLCAwLjA3MmYgKyBjb3NIdWUgKiAwLjkyOGYg
KyBzaW5IdWUgKiAwLjA3MmYKKyAgICB9OworfQorCit0ZW1wbGF0ZTxzaXplX3QgQ29sdW1ucywg
c2l6ZV90IFJvd3M+Citjb25zdGV4cHIgdm9pZCBDb2xvck1hdHJpeDxDb2x1bW5zLCBSb3dzPjo6
dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGlucHV0VmVj
dG9yKSBjb25zdAoreworICAgIGlucHV0VmVjdG9yID0gdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVu
dHMoaW5wdXRWZWN0b3IpOworfQorCit0ZW1wbGF0ZTxzaXplX3QgQ29sdW1ucywgc2l6ZV90IFJv
d3M+Citjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBDb2xvck1hdHJpeDxDb2x1bW5z
LCBSb3dzPjo6dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRz
PGZsb2F0PiYgaW5wdXRWZWN0b3IpIGNvbnN0Cit7CisgICAgc3RhdGljX2Fzc2VydChDb2xvckNv
bXBvbmVudHM8ZmxvYXQ+OjpTaXplID49IFJvd3MpOworICAgIAorICAgIENvbG9yQ29tcG9uZW50
czxmbG9hdD4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IHJvdyA9IDA7IHJvdyA8IFJvd3M7ICsr
cm93KSB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoQ29sdW1ucyA8PSBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+OjpTaXplKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAwOyBjb2x1
bW4gPCBDb2x1bW5zOyArK2NvbHVtbikKKyAgICAgICAgICAgICAgICByZXN1bHQuY29tcG9uZW50
c1tyb3ddICs9IGF0KHJvdywgY29sdW1uKSAqIGlucHV0VmVjdG9yLmNvbXBvbmVudHNbY29sdW1u
XTsKKyAgICAgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoQ29sdW1ucyA+IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNv
bHVtbiA8IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7ICsrY29sdW1uKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5jb21wb25lbnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRW
ZWN0b3IuY29tcG9uZW50c1tjb2x1bW5dOworICAgICAgICAgICAgZm9yIChzaXplX3QgYWRkaXRp
b25hbENvbHVtbiA9IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7IGFkZGl0aW9uYWxDb2x1
bW4gPCBDb2x1bW5zOyArK2FkZGl0aW9uYWxDb2x1bW4pCisgICAgICAgICAgICAgICAgcmVzdWx0
LmNvbXBvbmVudHNbcm93XSArPSBhdChyb3csIGFkZGl0aW9uYWxDb2x1bW4pOworICAgICAgICB9
CisgICAgfQorICAgIGlmIGNvbnN0ZXhwciAoQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZSA+
IFJvd3MpIHsKKyAgICAgICAgZm9yIChzaXplX3QgYWRkaXRpb25hbFJvdyA9IFJvd3M7IGFkZGl0
aW9uYWxSb3cgPCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyArK2FkZGl0aW9uYWxSb3cp
CisgICAgICAgICAgICByZXN1bHQuY29tcG9uZW50c1thZGRpdGlvbmFsUm93XSA9IGlucHV0VmVj
dG9yLmNvbXBvbmVudHNbYWRkaXRpb25hbFJvd107CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYy
MjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMyArODAsMTEgQEAgc3RhdGljIENvbG9yQ29tcG9u
ZW50czxmbG9hdD4geHl6VG9MaW5lYQogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5o
dG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCi0gICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7
Ci0gICAgICAgICAzLjI0MDQ1NDJmLCAtMS41MzcxMzg1ZiwgLTAuNDk4NTMxNGYsIDAuMGYsIDAu
MGYsCi0gICAgICAgIC0wLjk2OTI2NjBmLCAgMS44NzYwMTA4ZiwgIDAuMDQxNTU2MGYsIDAuMGYs
IDAuMGYsCi0gICAgICAgICAwLjA1NTY0MzRmLCAtMC4yMDQwMjU5ZiwgIDEuMDU3MjI1MmYsIDAu
MGYsIDAuMGYsCi0gICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAg
IDEuMGYsIDAuMGYsCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFy
U1JHQk1hdHJpeCB7CisgICAgICAgICAzLjI0MDQ1NDJmLCAtMS41MzcxMzg1ZiwgLTAuNDk4NTMx
NGYsCisgICAgICAgIC0wLjk2OTI2NjBmLCAgMS44NzYwMTA4ZiwgIDAuMDQxNTU2MGYsCisgICAg
ICAgICAwLjA1NTY0MzRmLCAtMC4yMDQwMjU5ZiwgIDEuMDU3MjI1MmYKICAgICB9OwotICAgIENv
bG9yTWF0cml4IHh5elRvTGluZWFyU1JHQk1hdHJpeCh2YWx1ZXMpOwogICAgIHJldHVybiB4eXpU
b0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50
cyk7CiB9CiAKQEAgLTk0LDM5ICs5MiwzMyBAQCBzdGF0aWMgQ29sb3JDb21wb25lbnRzPGZsb2F0
PiBsaW5lYXJTUkdCCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JH
QgogICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JH
Ql9YWVpfTWF0cml4Lmh0bWwKLSAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9IHsKLSAgICAgICAg
MC40MTI0NTY0ZiwgIDAuMzU3NTc2MWYsICAwLjE4MDQzNzVmLCAwLjBmLCAwLjBmLAotICAgICAg
ICAwLjIxMjY3MjlmLCAgMC43MTUxNTIyZiwgIDAuMDcyMTc1MGYsIDAuMGYsIDAuMGYsCi0gICAg
ICAgIDAuMDE5MzMzOWYsICAwLjExOTE5MjBmLCAgMC45NTAzMDQxZiwgMC4wZiwgMC4wZiwKLSAg
ICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAxLjBmLCAwLjBmLAor
ICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJTUkdCVG9YWVpNYXRyaXggewor
ICAgICAgICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsCisgICAgICAgIDAu
MjEyNjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwKKyAgICAgICAgMC4wMTkzMzM5Ziwg
IDAuMTE5MTkyMGYsICAwLjk1MDMwNDFmCiAgICAgfTsKLSAgICBDb2xvck1hdHJpeCBsaW5lYXJT
UkdCVG9YWVpNYXRyaXgodmFsdWVzKTsKICAgICByZXR1cm4gbGluZWFyU1JHQlRvWFlaTWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOwogfQogCiBzdGF0aWMg
Q29sb3JDb21wb25lbnRzPGZsb2F0PiBYWVpUb0xpbmVhclAzKGNvbnN0IENvbG9yQ29tcG9uZW50
czxmbG9hdD4mIFhZWkNvbXBvbmVudHMpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCi0gICAgY29uc3QgZmxvYXQgdmFs
dWVzW10gPSB7Ci0gICAgICAgICAyLjQ5MzQ5NjkxMTk0MTQyNWYsICAtMC45MzEzODM2MTc5MTkx
MjM5ZiwgLTAuNDAyNzEwNzg0NDUwNzE2OGYsIDAuMGYsIDAuMGYsCi0gICAgICAgIC0wLjgyOTQ4
ODk2OTU2MTU3NDdmLCAgMS43NjI2NjQwNjAzMTgzNDYzZiwgIDAuMDIzNjI0Njg1ODQxOTQzNmYs
IDAuMGYsIDAuMGYsCi0gICAgICAgICAwLjAzNTg0NTgzMDI0Mzc4NDVmLCAtMC4wNzYxNzIzODky
NjgwNDE4ZiwgIDAuOTU2ODg0NTI0MDA3Njg3MmYsIDAuMGYsIDAuMGYsCi0gICAgICAgICAwLjBm
LCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAg
ICAgIDEuMGYsIDAuMGYsCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGlu
ZWFyU1JHQk1hdHJpeCB7CisgICAgICAgICAyLjQ5MzQ5NjkxMTk0MTQyNWYsICAtMC45MzEzODM2
MTc5MTkxMjM5ZiwgLTAuNDAyNzEwNzg0NDUwNzE2OGYsCisgICAgICAgIC0wLjgyOTQ4ODk2OTU2
MTU3NDdmLCAgMS43NjI2NjQwNjAzMTgzNDYzZiwgIDAuMDIzNjI0Njg1ODQxOTQzNmYsCisgICAg
ICAgICAwLjAzNTg0NTgzMDI0Mzc4NDVmLCAtMC4wNzYxNzIzODkyNjgwNDE4ZiwgIDAuOTU2ODg0
NTI0MDA3Njg3MmYKICAgICB9OwotICAgIENvbG9yTWF0cml4IHh5elRvTGluZWFyU1JHQk1hdHJp
eCh2YWx1ZXMpOwogICAgIHJldHVybiB4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRD
b2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7CiB9CiAKIHN0YXRpYyBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQ+IGxpbmVhclAzVG9YWVooY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgWFla
Q29tcG9uZW50cykKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9y
LyNjb2xvci1jb252ZXJzaW9uLWNvZGUKLSAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9IHsKLSAg
ICAgICAgMC40ODY1NzA5NDg2NDgyMTYyZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcy
ODUyMzQzNjNmLCAwLjBmLCAwLjBmLAotICAgICAgICAwLjIyODk3NDU2NDA2OTc0ODhmLCAwLjY5
MTczODUyMTgzNjUwNjRmLCAwLjA3OTI4NjkxNDA5Mzc0NWYsIDAuMGYsIDAuMGYsCi0gICAgICAg
IDAuMGYsICAgICAgICAgICAgICAgIDAuMDQ1MTEzMzgxODU4OTAyNmYsIDEuMDQzOTQ0MzY4OTAw
OTc2ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wZiwgICAg
ICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAxLjBmLCAwLjBmLAorICAgIGNvbnN0ZXhw
ciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJQM1RvWFlaTWF0cml4IHsKKyAgICAgICAgMC40ODY1
NzA5NDg2NDgyMTYyZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcyODUyMzQzNjNmLAor
ICAgICAgICAwLjIyODk3NDU2NDA2OTc0ODhmLCAwLjY5MTczODUyMTgzNjUwNjRmLCAwLjA3OTI4
NjkxNDA5Mzc0NWYsCisgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMDQ1MTEzMzgxODU4
OTAyNmYsIDEuMDQzOTQ0MzY4OTAwOTc2ZgogICAgIH07Ci0gICAgQ29sb3JNYXRyaXggbGluZWFy
UDNUb1hZWk1hdHJpeCh2YWx1ZXMpOwogICAgIHJldHVybiBsaW5lYXJQM1RvWFlaTWF0cml4LnRy
YW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJl
dmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRz
OwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNvbXBvbmVudHM7CiAKIC8vIDAtMSBj
b21wb25lbnRzLCByZXN1bHQgaXMgY2xhbXBlZC4KIGZsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21w
b25lbnQoZmxvYXQpOwpAQCAtNjMsMTIgKzYzLDEyIEBAIGlubGluZSB1aW50OF90IHJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWwKICAgICByZXR1cm4gc3RkOjpjbGFtcChzdGQ6OnJvdW5kKHZhbHVl
KSwgMC5mLCAyNTUuZik7CiB9CiAKLWlubGluZSB1aW50MTZfdCBmYXN0TXVsdGlwbHlCeTI1NSh1
aW50MTZfdCB2YWx1ZSkKK2NvbnN0ZXhwciB1aW50MTZfdCBmYXN0TXVsdGlwbHlCeTI1NSh1aW50
MTZfdCB2YWx1ZSkKIHsKICAgICByZXR1cm4gKHZhbHVlIDw8IDgpIC0gdmFsdWU7CiB9CiAKLWlu
bGluZSB1aW50MTZfdCBmYXN0RGl2aWRlQnkyNTUodWludDE2X3QgdmFsdWUpCitjb25zdGV4cHIg
dWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90IHZhbHVlKQogewogICAgIC8vIFdoaWxl
IHRoaXMgaXMgYW4gYXBwcm94aW1hdGUgYWxnb3JpdGhtIGZvciBkaXZpc2lvbiBieSAyNTUsIGl0
IGdpdmVzIHBlcmZlY3RseSBhY2N1cmF0ZSByZXN1bHRzIGZvciAxNi1iaXQgdmFsdWVzLgogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGlzIGdpdmVzIGFjY3VyYXRlIHJlc3VsdHMgZm9yIDE2LWJpdCB2
YWx1ZXMsIHdlIHNob3VsZCBnZXQgdGhpcyBvcHRpbWl6YXRpb24gaW50byBjb21waWxlcnMgbGlr
ZSBjbGFuZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAJKHJldmlzaW9uIDI2MjI1MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkZFTW9ycGhvbG9neS5oIgogCisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAj
aW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRl
ICJJbWFnZURhdGEuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2
MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMjIgKzg5LDIyIEBAIGJvb2wgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6dHIKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewogICAgIGNhc2UgR1JBWVNDQUxFOiB7Ci0gICAgICAgIENvbG9yTWF0cml4IG1hdHJpeCA9IENv
bG9yTWF0cml4OjpncmF5c2NhbGVNYXRyaXgobV9hbW91bnQpOworICAgICAgICBhdXRvIG1hdHJp
eCA9IGdyYXlzY2FsZUNvbG9yTWF0cml4KG1fYW1vdW50KTsKICAgICAgICAgbWF0cml4LnRyYW5z
Zm9ybUNvbG9yQ29tcG9uZW50cyhjb2xvckNvbXBvbmVudHMpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgY2FzZSBTRVBJQTogewotICAgICAgICBDb2xvck1hdHJpeCBtYXRyaXgg
PSBDb2xvck1hdHJpeDo6c2VwaWFNYXRyaXgobV9hbW91bnQpOworICAgICAgICBhdXRvIG1hdHJp
eCA9IHNlcGlhQ29sb3JNYXRyaXgobV9hbW91bnQpOwogICAgICAgICBtYXRyaXgudHJhbnNmb3Jt
Q29sb3JDb21wb25lbnRzKGNvbG9yQ29tcG9uZW50cyk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBjYXNlIEhVRV9ST1RBVEU6IHsKLSAgICAgICAgQ29sb3JNYXRyaXggbWF0cml4
ID0gQ29sb3JNYXRyaXg6Omh1ZVJvdGF0ZU1hdHJpeChtX2Ftb3VudCk7CisgICAgICAgIGF1dG8g
bWF0cml4ID0gaHVlUm90YXRlQ29sb3JNYXRyaXgobV9hbW91bnQpOwogICAgICAgICBtYXRyaXgu
dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKGNvbG9yQ29tcG9uZW50cyk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICBjYXNlIFNBVFVSQVRFOiB7Ci0gICAgICAgIENvbG9yTWF0cml4
IG1hdHJpeCA9IENvbG9yTWF0cml4OjpzYXR1cmF0aW9uTWF0cml4KG1fYW1vdW50KTsKKyAgICAg
ICAgYXV0byBtYXRyaXggPSBzYXR1cmF0aW9uQ29sb3JNYXRyaXgobV9hbW91bnQpOwogICAgICAg
ICBtYXRyaXgudHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKGNvbG9yQ29tcG9uZW50cyk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIzNywxNCArMjM3LDEyIEBAIGJvb2wgSW52ZXJ0
TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjp0cmEKICAgICBzUkdCQ29sb3JDb21wb25lbnRzID0g
aHNsVG9TUkdCKGhzbENvbXBvbmVudHMpOwogICAgIAogICAgIC8vIEFwcGx5IHRoZSBtYXRyaXgu
IFNlZSByZGFyOi8vcHJvYmxlbS80MTE0NjY1MCBmb3IgaG93IHRoaXMgbWF0cml4IHdhcyBkZXJp
dmVkLgotICAgIGNvbnN0IGZsb2F0IG1hdHJpeFZhbHVlc1syMF0gPSB7Ci0gICAgICAgLTAuNzcw
LCAgMC4wNTksIC0wLjA4OSwgMCwgMSwKLSAgICAgICAgMC4wMzAsIC0wLjc0MSwgLTAuMDg5LCAw
LCAxLAotICAgICAgICAwLjAzMCwgIDAuMDU5LCAtMC44OTAsIDAsIDEsCi0gICAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgMSwgMAorICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDw1LCA0PiB0
b0RhcmtNb2RlTWF0cml4IHsKKyAgICAgICAtMC43NzBmLCAgMC4wNTlmLCAtMC4wODlmLCAwLjBm
LCAxLjBmLAorICAgICAgICAwLjAzMGYsIC0wLjc0MWYsIC0wLjA4OWYsIDAuMGYsIDEuMGYsCisg
ICAgICAgIDAuMDMwZiwgIDAuMDU5ZiwgLTAuODkwZiwgMC4wZiwgMS4wZiwKKyAgICAgICAgICAw
LjBmLCAgICAwLjBmLCAgICAwLjBmLCAxLjBmLCAwLjBmCiAgICAgfTsKLQotICAgIENvbG9yTWF0
cml4IHRvRGFya01vZGVNYXRyaXgobWF0cml4VmFsdWVzKTsKICAgICB0b0RhcmtNb2RlTWF0cml4
LnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JDb21wb25lbnRzKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTI1NCwxMyArMjUyLDEyIEBAIGJvb2wgSW52ZXJ0TGlnaHRuZXNzRmls
dGVyT3BlcmF0aW9uOjppbnYKICAgICBhdXRvIHJnYkNvbXBvbmVudHMgPSBzUkdCQ29sb3JDb21w
b25lbnRzOwogCiAgICAgLy8gQXBwbHkgdGhlIG1hdHJpeC4KLSAgICBjb25zdCBmbG9hdCBtYXRy
aXhWYWx1ZXNbMjBdID0gewotICAgICAgICAtMS4zMDAsIC0wLjA5NywgIDAuMTQ3LCAwLCAxLjI1
LAotICAgICAgICAtMC4wNDksIC0xLjM0NywgIDAuMTQ2LCAwLCAxLjI1LAotICAgICAgICAtMC4w
NDksIC0wLjA5NywgLTEuMTA0LCAwLCAxLjI1LAotICAgICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAxLCAwCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDUsIDQ+IHRvTGlnaHRNb2RlTWF0
cml4IHsKKyAgICAgICAgLTEuMzAwZiwgLTAuMDk3ZiwgIDAuMTQ3ZiwgMC4wZiwgMS4yNWYsCisg
ICAgICAgIC0wLjA0OWYsIC0xLjM0N2YsICAwLjE0NmYsIDAuMGYsIDEuMjVmLAorICAgICAgICAt
MC4wNDlmLCAtMC4wOTdmLCAtMS4xMDRmLCAwLjBmLCAxLjI1ZiwKKyAgICAgICAgICAgMC4wZiwg
ICAgMC4wZiwgICAgMC4wZiwgMS4wZiwgIDAuMGYKICAgICB9OwotICAgIENvbG9yTWF0cml4IHRv
TGlnaHRNb2RlTWF0cml4KG1hdHJpeFZhbHVlcyk7CiAgICAgdG9MaWdodE1vZGVNYXRyaXgudHJh
bnNmb3JtQ29sb3JDb21wb25lbnRzKHJnYkNvbXBvbmVudHMpOwogCiAgICAgLy8gQ29udmVydCB0
byBIU0wuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgJKHJldmlzaW9uIDI2MjI1MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKIGNsYXNzIEZpbHRlckVmZmVj
dDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQ29sb3JDb21wb25lbnRzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvckNv
bXBvbmVudHM7CiAKIGNsYXNzIEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxGaWx0ZXJPcGVyYXRpb24+IHsKIHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400596</attachid>
            <date>2020-05-29 10:10:10 -0700</date>
            <delta_ts>2020-05-29 11:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212477-20200529101009.patch</filename>
            <type>text/plain</type>
            <size>34087</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDIwLTA1LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQ29sb3JN
YXRyaXggc2hvdWxkIHN1cHBvcnQgc21hbGxlciBtYXRyaWNlcyBhbmQgYmUgY29uc3RleHByCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIEFkZHMgdGhl
IGFiaWxpdHkgdG8gc3BlY2lmeSBhIENvbG9yTWF0cml4IHdpdGggYW55IG51bWJlciBvZiByb3dz
IG9yIGNvbHVtbnMsCisgICAgICAgICAgdXNlZnVsIGFzIG1vc3Qgb2YgdGhlIHVzZXMgQ29sb3JN
YXRyaXggZGlkIG5vdCBuZWVkIHRoZSBmdWxsIDV4NC4gVHJhbnNmb3JtYXRpb24KKyAgICAgICAg
ICBhY3QgYXMtaWYgdGhlIHRoZSBDb2xvck1hdHJpeCBpcyB0aGUgaWRlbnRpZnkgbWF0cml4IGZv
ciBhbnkgcm93cyBvciBjb2x1bW5zCisgICAgICAgICAgbm90IHByZXNlbnQuIEZvciBleGFtcGxl
LCB3aGVuIHRyYW5zZm9ybWluZyBhIENvbG9yQ29tcG9uZW50cywgd2hpY2ggaXMgNHgxLCBhIAor
ICAgICAgICAgIDN4MyBDb2xvck1hdHJpeCBvZiB0aGUgZm9ybToKKworICAgICAgICAgICAgICBb
IGEsIGIsIGMgXQorICAgICAgICAgICAgICBbIGQsIGUsIGYgXQorICAgICAgICAgICAgICBbIGcs
IGgsIGkgXQorICAgICAgICAgICAgICAKKyAgICAgICAgICB3aWxsIGJlaGF2ZSBhcy1pZiBpdCBs
b29rcyBsaWtlOgorICAgICAgICAgIAorICAgICAgICAgICAgICBbIGEsIGIsIGMsIDAgXQorICAg
ICAgICAgICAgICBbIGQsIGUsIGYsIDAgXQorICAgICAgICAgICAgICBbIGcsIGgsIGksIDAgXQor
ICAgICAgICAgICAgICBbIDAsIDAsIDAsIDEgXQorICAgICAgICAKKyAgICAgICAgICBJbiBwcmFj
dGljZSwgdGhpcyBtZWFucyB0aGF0IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgaW5wdXQgdmVj
dG9yIGlzIGxlZnQKKyAgICAgICAgICB1bm1vZGlmaWVkLgorCisgICAgICAgIC0gQWRkcyBhYmls
aXR5IHRvIHVzZSBDb2xvck1hdHJpeCBpbiBjb25zdGV4cHIgc3RhdGVtZW50cywgd2hpY2ggd2ls
bCBiZSB1c2VmdWwKKyAgICAgICAgICBmb3IgY29tcGlsZSB0aW1lIGNvbmNhdGVuYXRpb24gb2Yg
Y29sb3JzcGFjZSBjb252ZXJzaW9uIG1hdHJpY2VzIGluIGEgZnV0dXJlCisgICAgICAgICAgY2hh
bmdlIGJ1dCBpcyBhbHNvIHVzZWZ1bCBmb3IgaW1wcm92ZWQgc3BhY2UgZWZmaWNpZW5jeSBvZiBj
b25zdGFudCBtYXRyaWNlcworICAgICAgICAgIGFscmVhZHkgdXNlZC4KKworICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgUmVtb3ZlIENvbG9yTWF0cml4LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM6OkNvbG9yQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6
Om9wZXJhdG9yKz0pOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRv
cisgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRvci8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRvciogY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjphYnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpnZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6cGVyQ29tcG9uZW50TWF4KToKKyAgICAgICAgKFdlYkNvcmU6OnBlckNvbXBvbmVudE1p
bik6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yIT0pOgorICAgICAgICBNYWtlIGV2ZXJ5dGhpbmcgY29uc3RleHByIGFuZCBtb3ZlIGlt
cGxlbWVudGF0aW9ucyBvdXQgb2YgdGhlIGRlY2xhcmF0aW9ucyBmb3IgY2xhcml0eS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yTWF0cml4
OjphdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpncmF5c2NhbGVDb2xvck1hdHJpeCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXBpYUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OnNh
dHVyYXRpb25Db2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpodWVSb3RhdGVDb2xvck1h
dHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6dHJhbnNmb3JtQ29sb3JDb21w
b25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yTWF0cml4Ojp0cmFuc2Zvcm1lZENvbG9y
Q29tcG9uZW50cyk6CisgICAgICAgIFJlLXdyaXRlIGFzIGEgY2xhc3MgdGVtcGxhdGl6ZWQgb24g
dGhlIG51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zLiBNb3ZlcyBmYWN0b3J5IGZ1bmN0aW9ucwor
ICAgICAgICBvdXQgb2YgdGhlIGNsYXNzIHRvIGF2b2lkIGF3a3dhcmRuZXNzIG9mIGhhdmluZyB0
byBzcGVjaWZ5IGEgZHVtbXkgc2l6ZSB3aGVuIGNhbGxpbmcgdGhlbSAKKyAgICAgICAgKGUuZy4g
d2Ugd291bGRuJ3Qgd2FudCB5b3UgdG8gaGF2ZSB0byB3cml0ZSBDb2xvck1hdHJpeDwzLCAzPjo6
Z3JheXNjYWxlTWF0cml4KCksIGluc3RlYWQKKyAgICAgICAganVzdCBncmF5c2NhbGVDb2xvck1h
dHJpeCgpIGlzIG11Y2ggbmljZXIpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6eHl6VG9MaW5lYXJTUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbmVhclNSR0JUb1hZWik6CisgICAgICAgIChXZWJDb3JlOjpYWVpU
b0xpbmVhclAzKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclAzVG9YWVopOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OnRyYW5zZm9ybUNvbG9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlv
bjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW52ZXJ0TGlnaHRu
ZXNzRmlsdGVyT3BlcmF0aW9uOjppbnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAg
ICBBZG9wdCBuZXcgQ29sb3JNYXRyaXggaW50ZXJmYWNlLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgUmVtb3ZlIHVubmVj
ZXNzYXJ5IFQgaW4gZm9yd2FyZCBkZWNsYXJhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpmYXN0TXVsdGlwbHlC
eTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpmYXN0RGl2aWRlQnkyNTUpOgorICAgICAgICBBZGQg
c29tZSBtaXNzaW5nIGNvbnN0ZXhwcnMuCisKIDIwMjAtMDUtMjggIEFuZHJlcyBHb256YWxleiAg
PGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgRGVidWcgXSBhY2Nlc3Np
YmlsaXR5L3JvbGVzLWV4cG9zZWQuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTg3Miw3ICsxODcyLDYgQEAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMTY0LDcgKzEwMTY0LDYg
QEAKIAkJN0M5REJGRUExQTlDNDg5RjAwMEQ2QjI1IC8qIEhUTUxBdHRhY2htZW50RWxlbWVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M5REJGRUIxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5REJGRUMx
QTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDQUM2QUU2MjQ3RjA4MUYwMEU2MUQ1OSAvKiBDb2xvck1h
dHJpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvck1hdHJpeC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQUM2QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJp
eC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvck1hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0FDNkFFQzI0N0YxQzUxMDBFNjFENTkgLyogQ29sb3JDb21wb25lbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ29tcG9uZW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0I1Q0EzRDFFNTI1QzZDMDBGQUVGMTMgLyogTWVkaWFR
dWVyeUV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjU0MjYsNyArMjU0MjUsNiBAQAogCQkJCUIyNzUzNTM5MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xv
ci5oICovLAogCQkJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMu
aCAqLywKIAkJCQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCi0J
CQkJN0NBQzZBRTYyNDdGMDgxRjAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmNwcCAqLywKIAkJCQk3
Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCAqLywKIAkJCQk5MzgyREY1
NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovLAogCQkJCTBGRTZDNzZCMUZCRkI3
QTYwMDI1QzA1MyAvKiBDb2xvclV0aWxpdGllcy5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24g
MjYyMjUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25l
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDc3ICszNCw5MCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKLSAg
ICBDb2xvckNvbXBvbmVudHMoVCBhID0gMCwgVCBiID0gMCwgVCBjID0gMCwgVCBkID0gMCkKKyAg
ICBjb25zdGV4cHIgc3RhdGljIHNpemVfdCBTaXplID0gNDsKKworICAgIGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHMoVCBhID0gMCwgVCBiID0gMCwgVCBjID0gMCwgVCBkID0gMCkKICAgICAgICAg
OiBjb21wb25lbnRzIHsgYSwgYiwgYywgZCB9CiAgICAgewogICAgIH0KIAotICAgIENvbG9yQ29t
cG9uZW50cyhjb25zdCBzdGQ6OmFycmF5PFQsIDQ+JiB2YWx1ZXMpCi0gICAgICAgIDogY29tcG9u
ZW50cyB7IHZhbHVlcyB9Ci0gICAgewotICAgIH0KKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzJiBvcGVyYXRvcis9KGNvbnN0IENvbG9yQ29tcG9uZW50cyYpOwogCi0gICAgQ29sb3JDb21w
b25lbnRzJiBvcGVyYXRvcis9KGNvbnN0IENvbG9yQ29tcG9uZW50cyYgcmhzKQotICAgIHsKLSAg
ICAgICAgY29tcG9uZW50c1swXSArPSByaHMuY29tcG9uZW50c1swXTsKLSAgICAgICAgY29tcG9u
ZW50c1sxXSArPSByaHMuY29tcG9uZW50c1sxXTsKLSAgICAgICAgY29tcG9uZW50c1syXSArPSBy
aHMuY29tcG9uZW50c1syXTsKLSAgICAgICAgY29tcG9uZW50c1szXSArPSByaHMuY29tcG9uZW50
c1szXTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICBjb25zdGV4cHIgQ29sb3JD
b21wb25lbnRzIG9wZXJhdG9yKyhUKSBjb25zdDsKKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzIG9wZXJhdG9yLyhUKSBjb25zdDsKKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzIG9w
ZXJhdG9yKihUKSBjb25zdDsKIAotICAgIENvbG9yQ29tcG9uZW50cyBvcGVyYXRvcisoVCByaHMp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgY29tcG9uZW50c1sw
XSArIHJocywKLSAgICAgICAgICAgIGNvbXBvbmVudHNbMV0gKyByaHMsCi0gICAgICAgICAgICBj
b21wb25lbnRzWzJdICsgcmhzLAotICAgICAgICAgICAgY29tcG9uZW50c1szXSArIHJocwotICAg
ICAgICB9OwotICAgIH0KKyAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzIGFicygpIGNvbnN0
OwogCi0gICAgQ29sb3JDb21wb25lbnRzIG9wZXJhdG9yLyhUIGRlbm9taW5hdG9yKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGNvbXBvbmVudHNbMF0gLyBkZW5v
bWluYXRvciwKLSAgICAgICAgICAgIGNvbXBvbmVudHNbMV0gLyBkZW5vbWluYXRvciwKLSAgICAg
ICAgICAgIGNvbXBvbmVudHNbMl0gLyBkZW5vbWluYXRvciwKLSAgICAgICAgICAgIGNvbXBvbmVu
dHNbM10gLyBkZW5vbWluYXRvcgotICAgICAgICB9OwotICAgIH0KKyAgICB0ZW1wbGF0ZTxzdGQ6
OnNpemVfdCBOPgorICAgIGNvbnN0ZXhwciBUIGdldCgpIGNvbnN0OwogCi0gICAgQ29sb3JDb21w
b25lbnRzIG9wZXJhdG9yKihUIGZhY3RvcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICBjb21wb25lbnRzWzBdICogZmFjdG9yLAotICAgICAgICAgICAgY29tcG9u
ZW50c1sxXSAqIGZhY3RvciwKLSAgICAgICAgICAgIGNvbXBvbmVudHNbMl0gKiBmYWN0b3IsCi0g
ICAgICAgICAgICBjb21wb25lbnRzWzNdICogZmFjdG9yCi0gICAgICAgIH07Ci0gICAgfQorICAg
IHN0ZDo6YXJyYXk8VCwgU2l6ZT4gY29tcG9uZW50czsKK307CiAKLSAgICBDb2xvckNvbXBvbmVu
dHMgYWJzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBzdGQ6
OmFicyhjb21wb25lbnRzWzBdKSwKLSAgICAgICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVudHNbMV0p
LAotICAgICAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1syXSksCi0gICAgICAgICAgICBzdGQ6
OmFicyhjb21wb25lbnRzWzNdKQotICAgICAgICB9OwotICAgIH0KK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+Citjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+JiBDb2xvckNvbXBvbmVudHM8VD46Om9w
ZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJiByaHMpCit7CisgICAgY29tcG9uZW50c1sw
XSArPSByaHMuY29tcG9uZW50c1swXTsKKyAgICBjb21wb25lbnRzWzFdICs9IHJocy5jb21wb25l
bnRzWzFdOworICAgIGNvbXBvbmVudHNbMl0gKz0gcmhzLmNvbXBvbmVudHNbMl07CisgICAgY29t
cG9uZW50c1szXSArPSByaHMuY29tcG9uZW50c1szXTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CiAK
LSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOPgotICAgIFQgZ2V0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBjb21wb25lbnRzW05dOwotICAgIH0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Citjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0
b3IrKFQgcmhzKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIGNvbXBvbmVudHNbMF0g
KyByaHMsCisgICAgICAgIGNvbXBvbmVudHNbMV0gKyByaHMsCisgICAgICAgIGNvbXBvbmVudHNb
Ml0gKyByaHMsCisgICAgICAgIGNvbXBvbmVudHNbM10gKyByaHMKKyAgICB9OworfQogCi0gICAg
c3RkOjphcnJheTxULCA0PiBjb21wb25lbnRzOwotfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citj
b25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3Iv
KFQgZGVub21pbmF0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY29tcG9uZW50
c1swXSAvIGRlbm9taW5hdG9yLAorICAgICAgICBjb21wb25lbnRzWzFdIC8gZGVub21pbmF0b3Is
CisgICAgICAgIGNvbXBvbmVudHNbMl0gLyBkZW5vbWluYXRvciwKKyAgICAgICAgY29tcG9uZW50
c1szXSAvIGRlbm9taW5hdG9yCisgICAgfTsKK30KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Nv
bnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvcioo
VCBmYWN0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY29tcG9uZW50c1swXSAq
IGZhY3RvciwKKyAgICAgICAgY29tcG9uZW50c1sxXSAqIGZhY3RvciwKKyAgICAgICAgY29tcG9u
ZW50c1syXSAqIGZhY3RvciwKKyAgICAgICAgY29tcG9uZW50c1szXSAqIGZhY3RvcgorICAgIH07
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+
IENvbG9yQ29tcG9uZW50czxUPjo6YWJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4geworICAgICAg
ICBzdGQ6OmFicyhjb21wb25lbnRzWzBdKSwKKyAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1sx
XSksCisgICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVudHNbMl0pLAorICAgICAgICBzdGQ6OmFicyhj
b21wb25lbnRzWzNdKQorICAgIH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0
ZTxzdGQ6OnNpemVfdCBOPgorY29uc3RleHByIFQgQ29sb3JDb21wb25lbnRzPFQ+OjpnZXQoKSBj
b25zdAoreworICAgIHJldHVybiBjb21wb25lbnRzW05dOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotaW5saW5lIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25lbnRNYXgoY29uc3QgQ29s
b3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCitjb25zdGV4
cHIgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1heChjb25zdCBDb2xvckNvbXBvbmVu
dHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKIHsKICAgICByZXR1cm4gewog
ICAgICAgICBzdGQ6Om1heChhLmNvbXBvbmVudHNbMF0sIGIuY29tcG9uZW50c1swXSksCkBAIC0x
MTUsNyArMTI4LDcgQEAgaW5saW5lIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25lbnRNYQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIENvbG9yQ29tcG9uZW50czxUPiBwZXJD
b21wb25lbnRNaW4oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBv
bmVudHM8VD4mIGIpCitjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1p
bihjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYg
YikKIHsKICAgICByZXR1cm4gewogICAgICAgICBzdGQ6Om1pbihhLmNvbXBvbmVudHNbMF0sIGIu
Y29tcG9uZW50c1swXSksCkBAIC0xMjYsMTMgKzEzOSwxMyBAQCBpbmxpbmUgQ29sb3JDb21wb25l
bnRzPFQ+IHBlckNvbXBvbmVudE1pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JD
b21wb25lbnRzPFQ+JiBiKQorY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckNv
bXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKIHsKICAgICByZXR1
cm4gYS5jb21wb25lbnRzID09IGIuY29tcG9uZW50czsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBj
b25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQog
ewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CkBAIC0xNDIsNyArMTU1LDcgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBDb2xvckNvbXBvbgogbmFtZXNwYWNlIHN0ZCB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyB0dXBsZV9zaXplPFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50
czxUPj4gOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgND4gewor
Y2xhc3MgdHVwbGVfc2l6ZTxXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM8VD4+IDogcHVibGljIHN0
ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50
czxUPjo6U2l6ZT4gewogfTsKIAogdGVtcGxhdGU8c3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgVD4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJp
eC5jcHAJKHJldmlzaW9uIDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yTWF0cml4LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29sb3JNYXRyaXguaCIKLQotI2luY2x1
ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KCkKLXsKLSAgICBt
YWtlSWRlbnRpdHkoKTsKLX0KLQotQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KGNvbnN0IGZsb2F0
IHZhbHVlc1syMF0pCi17Ci0gICAgbV9tYXRyaXhbMF1bMF0gPSB2YWx1ZXNbMF07Ci0gICAgbV9t
YXRyaXhbMF1bMV0gPSB2YWx1ZXNbMV07Ci0gICAgbV9tYXRyaXhbMF1bMl0gPSB2YWx1ZXNbMl07
Ci0gICAgbV9tYXRyaXhbMF1bM10gPSB2YWx1ZXNbM107Ci0gICAgbV9tYXRyaXhbMF1bNF0gPSB2
YWx1ZXNbNF07Ci0KLSAgICBtX21hdHJpeFsxXVswXSA9IHZhbHVlc1s1XTsKLSAgICBtX21hdHJp
eFsxXVsxXSA9IHZhbHVlc1s2XTsKLSAgICBtX21hdHJpeFsxXVsyXSA9IHZhbHVlc1s3XTsKLSAg
ICBtX21hdHJpeFsxXVszXSA9IHZhbHVlc1s4XTsKLSAgICBtX21hdHJpeFsxXVs0XSA9IHZhbHVl
c1s5XTsKLQotICAgIG1fbWF0cml4WzJdWzBdID0gdmFsdWVzWzEwXTsKLSAgICBtX21hdHJpeFsy
XVsxXSA9IHZhbHVlc1sxMV07Ci0gICAgbV9tYXRyaXhbMl1bMl0gPSB2YWx1ZXNbMTJdOwotICAg
IG1fbWF0cml4WzJdWzNdID0gdmFsdWVzWzEzXTsKLSAgICBtX21hdHJpeFsyXVs0XSA9IHZhbHVl
c1sxNF07Ci0KLSAgICBtX21hdHJpeFszXVswXSA9IHZhbHVlc1sxNV07Ci0gICAgbV9tYXRyaXhb
M11bMV0gPSB2YWx1ZXNbMTZdOwotICAgIG1fbWF0cml4WzNdWzJdID0gdmFsdWVzWzE3XTsKLSAg
ICBtX21hdHJpeFszXVszXSA9IHZhbHVlc1sxOF07Ci0gICAgbV9tYXRyaXhbM11bNF0gPSB2YWx1
ZXNbMTldOwotfQotCi12b2lkIENvbG9yTWF0cml4OjptYWtlSWRlbnRpdHkoKQotewotICAgIG1l
bXNldChtX21hdHJpeCwgMCwgc2l6ZW9mKG1fbWF0cml4KSk7Ci0gICAgbV9tYXRyaXhbMF1bMF0g
PSAxOwotICAgIG1fbWF0cml4WzFdWzFdID0gMTsKLSAgICBtX21hdHJpeFsyXVsyXSA9IDE7Ci0g
ICAgbV9tYXRyaXhbM11bM10gPSAxOwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6Z3Jh
eXNjYWxlTWF0cml4KGZsb2F0IGFtb3VudCkKLXsKLSAgICBDb2xvck1hdHJpeCBtYXRyaXg7Ci0K
LSAgICBmbG9hdCBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGFtb3VudCwgMC4wLCAxLjAp
OwotCi0gICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZl
Y3RzLTEvI2dyYXlzY2FsZUVxdWl2YWxlbnQKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAw
LjIxMjZmICsgMC43ODc0ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsw
XVsxXSA9IDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1f
bWF0cml4WzBdWzJdID0gMC4wNzIyZiAtIDAuMDcyMmYgKiBvbmVNaW51c0Ftb3VudDsKLQotICAg
IG1hdHJpeC5tX21hdHJpeFsxXVswXSA9IDAuMjEyNmYgLSAwLjIxMjZmICogb25lTWludXNBbW91
bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzFdID0gMC43MTUyZiArIDAuMjg0OGYgKiBvbmVN
aW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAwLjA3MjJmIC0gMC4wNzIy
ZiAqIG9uZU1pbnVzQW1vdW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yMTI2
ZiAtIDAuMjEyNmYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0g
PSAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJp
eFsyXVsyXSA9IDAuMDcyMmYgKyAwLjkyNzhmICogb25lTWludXNBbW91bnQ7Ci0gICAgCi0gICAg
cmV0dXJuIG1hdHJpeDsKLX0KLQotQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OnNhdHVyYXRpb25N
YXRyaXgoZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4IG1hdHJpeDsKLQotICAgIC8v
IFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNmZUNv
bG9yTWF0cml4RWxlbWVudAotICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9IDAuMjEzZiArIDAu
Nzg3ZiAqIGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMV0gPSAwLjcxNWYgLSAwLjcx
NWYgKiBhbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzJdID0gMC4wNzJmIC0gMC4wNzJm
ICogYW1vdW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzBdID0gMC4yMTNmIC0gMC4yMTNm
ICogYW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsxXSA9IDAuNzE1ZiArIDAuMjg1ZiAq
IGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAwLjA3MmYgLSAwLjA3MmYgKiBh
bW91bnQ7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBh
bW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzFdID0gMC43MTVmIC0gMC43MTVmICogYW1v
dW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9IDAuMDcyZiArIDAuOTI4ZiAqIGFtb3Vu
dDsKLQotICAgIHJldHVybiBtYXRyaXg7Ci19Ci0KLUNvbG9yTWF0cml4IENvbG9yTWF0cml4Ojpo
dWVSb3RhdGVNYXRyaXgoZmxvYXQgYW5nbGVJbkRlZ3JlZXMpCi17Ci0gICAgZmxvYXQgY29zSHVl
ID0gY29zKGRlZzJyYWQoYW5nbGVJbkRlZ3JlZXMpKTsKLSAgICBmbG9hdCBzaW5IdWUgPSBzaW4o
ZGVnMnJhZChhbmdsZUluRGVncmVlcykpOwotCi0gICAgQ29sb3JNYXRyaXggbWF0cml4OwotCi0g
ICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEv
I2ZlQ29sb3JNYXRyaXhFbGVtZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4yMTNm
ICsgY29zSHVlICogMC43ODdmIC0gc2luSHVlICogMC4yMTNmOwotICAgIG1hdHJpeC5tX21hdHJp
eFswXVsxXSA9IDAuNzE1ZiAtIGNvc0h1ZSAqIDAuNzE1ZiAtIHNpbkh1ZSAqIDAuNzE1ZjsKLSAg
ICBtYXRyaXgubV9tYXRyaXhbMF1bMl0gPSAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3MmYgKyBzaW5I
dWUgKiAwLjkyOGY7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjIxM2YgLSBjb3NI
dWUgKiAwLjIxM2YgKyBzaW5IdWUgKiAwLjE0M2Y7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzFd
ID0gMC43MTVmICsgY29zSHVlICogMC4yODVmICsgc2luSHVlICogMC4xNDBmOwotICAgIG1hdHJp
eC5tX21hdHJpeFsxXVsyXSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiAtIHNpbkh1ZSAqIDAu
MjgzZjsKLQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAu
MjEzZiAtIHNpbkh1ZSAqIDAuNzg3ZjsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjcx
NWYgLSBjb3NIdWUgKiAwLjcxNWYgKyBzaW5IdWUgKiAwLjcxNWY7Ci0gICAgbWF0cml4Lm1fbWF0
cml4WzJdWzJdID0gMC4wNzJmICsgY29zSHVlICogMC45MjhmICsgc2luSHVlICogMC4wNzJmOwot
Ci0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQotQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OnNlcGlh
TWF0cml4KGZsb2F0IGFtb3VudCkKLXsKLSAgICBDb2xvck1hdHJpeCBtYXRyaXg7Ci0KLSAgICBm
bG9hdCBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGFtb3VudCwgMC4wLCAxLjApOwotCi0g
ICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEv
I3NlcGlhRXF1aXZhbGVudAotICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9IDAuMzkzZiArIDAu
NjA3ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsxXSA9IDAuNzY5
ZiAtIDAuNzY5ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsyXSA9
IDAuMTg5ZiAtIDAuMTg5ZiAqIG9uZU1pbnVzQW1vdW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4
WzFdWzBdID0gMC4zNDlmIC0gMC4zNDlmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1f
bWF0cml4WzFdWzFdID0gMC42ODZmICsgMC4zMTRmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0
cml4Lm1fbWF0cml4WzFdWzJdID0gMC4xNjhmIC0gMC4xNjhmICogb25lTWludXNBbW91bnQ7Ci0K
LSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjI3MmYgLSAwLjI3MmYgKiBvbmVNaW51c0Ft
b3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjUzNGYgLSAwLjUzNGYgKiBvbmVN
aW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMl0gPSAwLjEzMWYgKyAwLjg2OWYg
KiBvbmVNaW51c0Ftb3VudDsKLQotICAgIHJldHVybiBtYXRyaXg7Ci19Ci0KLXZvaWQgQ29sb3JN
YXRyaXg6OnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBj
b2xvckNvbXBvbmVudHMpIGNvbnN0Ci17Ci0gICAgYXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGFdID0gY29sb3JDb21wb25lbnRzOwotCi0gICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNb
MF0gPSBtX21hdHJpeFswXVswXSAqIHJlZCArIG1fbWF0cml4WzBdWzFdICogZ3JlZW4gKyBtX21h
dHJpeFswXVsyXSAqIGJsdWUgKyBtX21hdHJpeFswXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMF1b
NF07Ci0gICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0gPSBtX21hdHJpeFsxXVswXSAq
IHJlZCArIG1fbWF0cml4WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsxXVsyXSAqIGJsdWUgKyBt
X21hdHJpeFsxXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMV1bNF07Ci0gICAgY29sb3JDb21wb25l
bnRzLmNvbXBvbmVudHNbMl0gPSBtX21hdHJpeFsyXVswXSAqIHJlZCArIG1fbWF0cml4WzJdWzFd
ICogZ3JlZW4gKyBtX21hdHJpeFsyXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsyXVszXSAqIGFscGhh
ICsgbV9tYXRyaXhbMl1bNF07Ci0gICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbM10gPSBt
X21hdHJpeFszXVswXSAqIHJlZCArIG1fbWF0cml4WzNdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsz
XVsyXSAqIGJsdWUgKyBtX21hdHJpeFszXVszXSAqIGFscGhhICsgbV9tYXRyaXhbM11bNF07Ci19
Ci0KLUNvbG9yQ29tcG9uZW50czxmbG9hdD4gQ29sb3JNYXRyaXg6OnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGNvbG9yQ29tcG9uZW50cykg
Y29uc3QKLXsKLSAgICBhdXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0gPSBjb2xvckNvbXBv
bmVudHM7Ci0KLSAgICByZXR1cm4gewotICAgICAgICBtX21hdHJpeFswXVswXSAqIHJlZCArIG1f
bWF0cml4WzBdWzFdICogZ3JlZW4gKyBtX21hdHJpeFswXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsw
XVszXSAqIGFscGhhICsgbV9tYXRyaXhbMF1bNF0sCi0gICAgICAgIG1fbWF0cml4WzFdWzBdICog
cmVkICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFdWzJdICogYmx1ZSArIG1f
bWF0cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0XSwKLSAgICAgICAgbV9tYXRyaXhb
Ml1bMF0gKiByZWQgKyBtX21hdHJpeFsyXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMl1bMl0gKiBi
bHVlICsgbV9tYXRyaXhbMl1bM10gKiBhbHBoYSArIG1fbWF0cml4WzJdWzRdLAotICAgICAgICBt
X21hdHJpeFszXVswXSAqIHJlZCArIG1fbWF0cml4WzNdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsz
XVsyXSAqIGJsdWUgKyBtX21hdHJpeFszXVszXSAqIGFscGhhICsgbV9tYXRyaXhbM11bNF0KLSAg
ICB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgJKHJldmlzaW9uIDI2MjI1MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDMxICsyNSwxMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKKyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlIDxtYXRoLmg+
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IENvbG9yQ29tcG9uZW50czsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGxpa2VseSBiZSByZXBsYWNlZCBieSBhIGdlbmVyaWMgbWF0cml4IGNsYXNzLiBP
dGhlciB0aGFuCi0vLyB0aGUgc3BlY2lmaWMgbWF0cml4IGNvbnN0dWN0b3JzLCB0aGVyZSBpcyBu
b3RoaW5nIGNvbG9yIHNwZWNpZmljIGFib3V0IHRoaXMuCi0vLyBGdXRoZXJtb3JlLCBtb3N0IHRo
ZXNlIGRvbid0IG5lZWQgdG8gYmUgNHg1IG1hdHJpY2VzIHdpdGggbW9zdCBvbmx5IG5lZWRpbmcK
LS8vIGEgM3gzIG1hdHJpeC4KK3RlbXBsYXRlPHNpemVfdCBDb2x1bW5zLCBzaXplX3QgUm93cz4K
IGNsYXNzIENvbG9yTWF0cml4IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggZ3Jh
eXNjYWxlTWF0cml4KGZsb2F0KTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggc2F0dXJhdGlvbk1h
dHJpeChmbG9hdCk7Ci0gICAgc3RhdGljIENvbG9yTWF0cml4IGh1ZVJvdGF0ZU1hdHJpeChmbG9h
dCBhbmdsZUluRGVncmVlcyk7Ci0gICAgc3RhdGljIENvbG9yTWF0cml4IHNlcGlhTWF0cml4KGZs
b2F0KTsKLQotICAgIENvbG9yTWF0cml4KCk7Ci0gICAgQ29sb3JNYXRyaXgoY29uc3QgZmxvYXRb
MjBdKTsKLSAgICAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JikgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiB0cmFuc2Zv
cm1lZENvbG9yQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JikgY29uc3Q7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uVHM+CisgICAgZXhwbGljaXQgY29uc3RleHByIENv
bG9yTWF0cml4KFRzIC4uLmlucHV0KQorICAgICAgICA6IG1fbWF0cml4IHt7IGlucHV0IC4uLiB9
fQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YuLi4oVHMpID09IFJvd3MgKiBD
b2x1bW5zKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgdm9pZCB0cmFuc2Zvcm1Db2xvckNvbXBv
bmVudHMoQ29sb3JDb21wb25lbnRzPGZsb2F0PiYpIGNvbnN0OworICAgIGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQ+IHRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IENvbG9y
Q29tcG9uZW50czxmbG9hdD4mKSBjb25zdDsKKworICAgIGNvbnN0ZXhwciBmbG9hdCBhdChzaXpl
X3Qgcm93LCBzaXplX3QgY29sdW1uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWF0
cml4Wyhyb3cgKiBDb2x1bW5zKSArIGNvbHVtbl07CisgICAgfQogCiBwcml2YXRlOgotICAgIHZv
aWQgbWFrZUlkZW50aXR5KCk7Ci0KLSAgICBmbG9hdCBtX21hdHJpeFs0XVs1XTsKKyAgICBzdGQ6
OmFycmF5PGZsb2F0LCBSb3dzICogQ29sdW1ucz4gbV9tYXRyaXg7CiB9OwogCisvLyBGSVhNRTog
VGhlc2UgYXJlIG9ubHkgdXNlZCBpbiBGaWx0ZXJPcGVyYXRpb25zLmNwcC4gQ29uc2lkZXIgbW92
aW5nIHRoZW0gdGhlcmUuCitjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gZ3JheXNjYWxlQ29s
b3JNYXRyaXgoZmxvYXQgYW1vdW50KQoreworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNncmF5c2NhbGVFcXVpdmFsZW50CisgICAgZmxv
YXQgb25lTWludXNBbW91bnQgPSBzdGQ6OmNsYW1wKDEuMGYgLSBhbW91bnQsIDAuMGYsIDEuMGYp
OworICAgIHJldHVybiBDb2xvck1hdHJpeDwzLCAzPiB7CisgICAgICAgIDAuMjEyNmYgKyAwLjc4
NzRmICogb25lTWludXNBbW91bnQsIDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQs
IDAuMDcyMmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQsCisgICAgICAgIDAuMjEyNmYgLSAw
LjIxMjZmICogb25lTWludXNBbW91bnQsIDAuNzE1MmYgKyAwLjI4NDhmICogb25lTWludXNBbW91
bnQsIDAuMDcyMmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQsCisgICAgICAgIDAuMjEyNmYg
LSAwLjIxMjZmICogb25lTWludXNBbW91bnQsIDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNB
bW91bnQsIDAuMDcyMmYgKyAwLjkyNzhmICogb25lTWludXNBbW91bnQKKyAgICB9OworfQorCitj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gc2VwaWFDb2xvck1hdHJpeChmbG9hdCBhbW91bnQp
Cit7CisgICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZl
Y3RzLTEvI3NlcGlhRXF1aXZhbGVudAorICAgIGZsb2F0IG9uZU1pbnVzQW1vdW50ID0gc3RkOjpj
bGFtcCgxLjBmIC0gYW1vdW50LCAwLjBmLCAxLjBmKTsKKyAgICByZXR1cm4gQ29sb3JNYXRyaXg8
MywgMz4geworICAgICAgICAwLjM5M2YgKyAwLjYwN2YgKiBvbmVNaW51c0Ftb3VudCwgMC43Njlm
IC0gMC43NjlmICogb25lTWludXNBbW91bnQsIDAuMTg5ZiAtIDAuMTg5ZiAqIG9uZU1pbnVzQW1v
dW50LAorICAgICAgICAwLjM0OWYgLSAwLjM0OWYgKiBvbmVNaW51c0Ftb3VudCwgMC42ODZmICsg
MC4zMTRmICogb25lTWludXNBbW91bnQsIDAuMTY4ZiAtIDAuMTY4ZiAqIG9uZU1pbnVzQW1vdW50
LAorICAgICAgICAwLjI3MmYgLSAwLjI3MmYgKiBvbmVNaW51c0Ftb3VudCwgMC41MzRmIC0gMC41
MzRmICogb25lTWludXNBbW91bnQsIDAuMTMxZiArIDAuODY5ZiAqIG9uZU1pbnVzQW1vdW50Cisg
ICAgfTsKK30KKworY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHNhdHVyYXRpb25Db2xvck1h
dHJpeChmbG9hdCBhbW91bnQpCit7CisgICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMu
b3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI2ZlQ29sb3JNYXRyaXhFbGVtZW50CisgICAgcmV0dXJu
IENvbG9yTWF0cml4PDMsIDM+IHsKKyAgICAgICAgMC4yMTNmICsgMC43ODdmICogYW1vdW50LCAg
MC43MTVmIC0gMC43MTVmICogYW1vdW50LCAwLjA3MmYgLSAwLjA3MmYgKiBhbW91bnQsCisgICAg
ICAgIDAuMjEzZiAtIDAuMjEzZiAqIGFtb3VudCwgIDAuNzE1ZiArIDAuMjg1ZiAqIGFtb3VudCwg
MC4wNzJmIC0gMC4wNzJmICogYW1vdW50LAorICAgICAgICAwLjIxM2YgLSAwLjIxM2YgKiBhbW91
bnQsICAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQsIDAuMDcyZiArIDAuOTI4ZiAqIGFtb3VudAor
ICAgIH07Cit9CisKKy8vIE5PVEU6IGh1ZVJvdGF0ZUNvbG9yTWF0cml4IGlzIG5vdCBjb25zdGV4
cHIgZHVlIHRvIHVzZSBvZiBjb3Mvc2luIHdoaWNoIGFyZSBub3QgY29uc3RleHByIHlldC4KK2lu
bGluZSBDb2xvck1hdHJpeDwzLCAzPiBodWVSb3RhdGVDb2xvck1hdHJpeChmbG9hdCBhbmdsZUlu
RGVncmVlcykKK3sKKyAgICBmbG9hdCBjb3NIdWUgPSBjb3MoZGVnMnJhZChhbmdsZUluRGVncmVl
cykpOworICAgIGZsb2F0IHNpbkh1ZSA9IHNpbihkZWcycmFkKGFuZ2xlSW5EZWdyZWVzKSk7CisK
KyAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMt
MS8jZmVDb2xvck1hdHJpeEVsZW1lbnQKKyAgICByZXR1cm4gQ29sb3JNYXRyaXg8MywgMz4gewor
ICAgICAgICAwLjIxM2YgKyBjb3NIdWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAwLjIxM2YsIDAuNzE1
ZiAtIGNvc0h1ZSAqIDAuNzE1ZiAtIHNpbkh1ZSAqIDAuNzE1ZiwgMC4wNzJmIC0gY29zSHVlICog
MC4wNzJmICsgc2luSHVlICogMC45MjhmLAorICAgICAgICAwLjIxM2YgLSBjb3NIdWUgKiAwLjIx
M2YgKyBzaW5IdWUgKiAwLjE0M2YsIDAuNzE1ZiArIGNvc0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAq
IDAuMTQwZiwgMC4wNzJmIC0gY29zSHVlICogMC4wNzJmIC0gc2luSHVlICogMC4yODNmLAorICAg
ICAgICAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUgKiAwLjc4N2YsIDAuNzE1ZiAt
IGNvc0h1ZSAqIDAuNzE1ZiArIHNpbkh1ZSAqIDAuNzE1ZiwgMC4wNzJmICsgY29zSHVlICogMC45
MjhmICsgc2luSHVlICogMC4wNzJmCisgICAgfTsKK30KKwordGVtcGxhdGU8c2l6ZV90IENvbHVt
bnMsIHNpemVfdCBSb3dzPgorY29uc3RleHByIHZvaWQgQ29sb3JNYXRyaXg8Q29sdW1ucywgUm93
cz46OnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBpbnB1
dFZlY3RvcikgY29uc3QKK3sKKyAgICBpbnB1dFZlY3RvciA9IHRyYW5zZm9ybWVkQ29sb3JDb21w
b25lbnRzKGlucHV0VmVjdG9yKTsKK30KKwordGVtcGxhdGU8c2l6ZV90IENvbHVtbnMsIHNpemVf
dCBSb3dzPgorY29uc3RleHByIENvbG9yQ29tcG9uZW50czxmbG9hdD4gQ29sb3JNYXRyaXg8Q29s
dW1ucywgUm93cz46OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9u
ZW50czxmbG9hdD4mIGlucHV0VmVjdG9yKSBjb25zdAoreworICAgIHN0YXRpY19hc3NlcnQoQ29s
b3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZSA+PSBSb3dzKTsKKyAgICAKKyAgICBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+IHJlc3VsdDsKKyAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBSb3dz
OyArK3JvdykgeworICAgICAgICBpZiBjb25zdGV4cHIgKENvbHVtbnMgPD0gQ29sb3JDb21wb25l
bnRzPGZsb2F0Pjo6U2l6ZSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgY29sdW1uID0gMDsg
Y29sdW1uIDwgQ29sdW1uczsgKytjb2x1bW4pCisgICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBv
bmVudHNbcm93XSArPSBhdChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvci5jb21wb25lbnRzW2Nv
bHVtbl07CisgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKENvbHVtbnMgPiBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+OjpTaXplKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAw
OyBjb2x1bW4gPCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyArK2NvbHVtbikKKyAgICAg
ICAgICAgICAgICByZXN1bHQuY29tcG9uZW50c1tyb3ddICs9IGF0KHJvdywgY29sdW1uKSAqIGlu
cHV0VmVjdG9yLmNvbXBvbmVudHNbY29sdW1uXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGFk
ZGl0aW9uYWxDb2x1bW4gPSBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyBhZGRpdGlvbmFs
Q29sdW1uIDwgQ29sdW1uczsgKythZGRpdGlvbmFsQ29sdW1uKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5jb21wb25lbnRzW3Jvd10gKz0gYXQocm93LCBhZGRpdGlvbmFsQ29sdW1uKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBpZiBjb25zdGV4cHIgKENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNp
emUgPiBSb3dzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGFkZGl0aW9uYWxSb3cgPSBSb3dzOyBh
ZGRpdGlvbmFsUm93IDwgQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZTsgKythZGRpdGlvbmFs
Um93KQorICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbYWRkaXRpb25hbFJvd10gPSBpbnB1
dFZlY3Rvci5jb21wb25lbnRzW2FkZGl0aW9uYWxSb3ddOworICAgIH0KKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJldmlzaW9u
IDI2MjI1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTMgKzgwLDExIEBAIHN0YXRpYyBDb2xvckNv
bXBvbmVudHM8ZmxvYXQ+IHh5elRvTGluZWEKIHsKICAgICAvLyBodHRwczovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9TUkdCCiAgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5k
ZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1td
ID0gewotICAgICAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5ODUzMTRmLCAwLjBm
LCAwLjBmLAotICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLCAw
LjBmLCAwLjBmLAotICAgICAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1NzIyNTJm
LCAwLjBmLCAwLjBmLAotICAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAg
ICAgICAxLjBmLCAwLjBmLAorICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xp
bmVhclNSR0JNYXRyaXggeworICAgICAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5
ODUzMTRmLAorICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLAor
ICAgICAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1NzIyNTJmCiAgICAgfTsKLSAg
ICBDb2xvck1hdHJpeCB4eXpUb0xpbmVhclNSR0JNYXRyaXgodmFsdWVzKTsKICAgICByZXR1cm4g
eHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBv
bmVudHMpOwogfQogCkBAIC05NCwzOSArOTIsMzMgQEAgc3RhdGljIENvbG9yQ29tcG9uZW50czxm
bG9hdD4gbGluZWFyU1JHQgogewogICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1NSR0IKICAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vx
bl9SR0JfWFlaX01hdHJpeC5odG1sCi0gICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7Ci0gICAg
ICAgIDAuNDEyNDU2NGYsICAwLjM1NzU3NjFmLCAgMC4xODA0Mzc1ZiwgMC4wZiwgMC4wZiwKLSAg
ICAgICAgMC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLCAwLjBmLCAwLjBmLAot
ICAgICAgICAwLjAxOTMzMzlmLCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYsIDAuMGYsIDAuMGYs
Ci0gICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgMS4wZiwgMC4w
ZiwKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyU1JHQlRvWFlaTWF0cml4
IHsKKyAgICAgICAgMC40MTI0NTY0ZiwgIDAuMzU3NTc2MWYsICAwLjE4MDQzNzVmLAorICAgICAg
ICAwLjIxMjY3MjlmLCAgMC43MTUxNTIyZiwgIDAuMDcyMTc1MGYsCisgICAgICAgIDAuMDE5MzMz
OWYsICAwLjExOTE5MjBmLCAgMC45NTAzMDQxZgogICAgIH07Ci0gICAgQ29sb3JNYXRyaXggbGlu
ZWFyU1JHQlRvWFlaTWF0cml4KHZhbHVlcyk7CiAgICAgcmV0dXJuIGxpbmVhclNSR0JUb1hZWk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIAogc3Rh
dGljIENvbG9yQ29tcG9uZW50czxmbG9hdD4gWFlaVG9MaW5lYXJQMyhjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBYWVpDb21wb25lbnRzKQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0IGZsb2F0
IHZhbHVlc1tdID0gewotICAgICAgICAgMi40OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3
OTE5MTIzOWYsIC0wLjQwMjcxMDc4NDQ1MDcxNjhmLCAwLjBmLCAwLjBmLAotICAgICAgICAtMC44
Mjk0ODg5Njk1NjE1NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0
MzZmLCAwLjBmLCAwLjBmLAotICAgICAgICAgMC4wMzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcy
Mzg5MjY4MDQxOGYsICAwLjk1Njg4NDUyNDAwNzY4NzJmLCAwLjBmLCAwLjBmLAotICAgICAgICAg
MC4wZiwgICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAg
ICAgICAgICAxLjBmLCAwLjBmLAorICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpU
b0xpbmVhclNSR0JNYXRyaXggeworICAgICAgICAgMi40OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMx
MzgzNjE3OTE5MTIzOWYsIC0wLjQwMjcxMDc4NDQ1MDcxNjhmLAorICAgICAgICAtMC44Mjk0ODg5
Njk1NjE1NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0MzZmLAor
ICAgICAgICAgMC4wMzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcyMzg5MjY4MDQxOGYsICAwLjk1
Njg4NDUyNDAwNzY4NzJmCiAgICAgfTsKLSAgICBDb2xvck1hdHJpeCB4eXpUb0xpbmVhclNSR0JN
YXRyaXgodmFsdWVzKTsKICAgICByZXR1cm4geHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9y
bWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOwogfQogCiBzdGF0aWMgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiBsaW5lYXJQM1RvWFlaKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4m
IFhZWkNvbXBvbmVudHMpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1j
b2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCi0gICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7
Ci0gICAgICAgIDAuNDg2NTcwOTQ4NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4
MjE3Mjg1MjM0MzYzZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4Ziwg
MC42OTE3Mzg1MjE4MzY1MDY0ZiwgMC4wNzkyODY5MTQwOTM3NDVmLCAwLjBmLCAwLjBmLAotICAg
ICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2
ODkwMDk3NmYsIDAuMGYsIDAuMGYsCi0gICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMGYs
ICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICBjb25z
dGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyUDNUb1hZWk1hdHJpeCB7CisgICAgICAgIDAu
NDg2NTcwOTQ4NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4MjE3Mjg1MjM0MzYz
ZiwKKyAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42OTE3Mzg1MjE4MzY1MDY0ZiwgMC4w
NzkyODY5MTQwOTM3NDVmLAorICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4
MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYKICAgICB9OwotICAgIENvbG9yTWF0cml4IGxp
bmVhclAzVG9YWVpNYXRyaXgodmFsdWVzKTsKICAgICByZXR1cm4gbGluZWFyUDNUb1hZWk1hdHJp
eC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5o
CShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9u
ZW50czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzOwogCiAvLyAw
LTEgY29tcG9uZW50cywgcmVzdWx0IGlzIGNsYW1wZWQuCiBmbG9hdCBsaW5lYXJUb1JHQkNvbG9y
Q29tcG9uZW50KGZsb2F0KTsKQEAgLTYzLDEyICs2MywxMiBAQCBpbmxpbmUgdWludDhfdCByb3Vu
ZEFuZENsYW1wQ29sb3JDaGFubmVsCiAgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoc3RkOjpyb3VuZCh2
YWx1ZSksIDAuZiwgMjU1LmYpOwogfQogCi1pbmxpbmUgdWludDE2X3QgZmFzdE11bHRpcGx5Qnky
NTUodWludDE2X3QgdmFsdWUpCitjb25zdGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUo
dWludDE2X3QgdmFsdWUpCiB7CiAgICAgcmV0dXJuICh2YWx1ZSA8PCA4KSAtIHZhbHVlOwogfQog
Ci1pbmxpbmUgdWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90IHZhbHVlKQorY29uc3Rl
eHByIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZfdCB2YWx1ZSkKIHsKICAgICAvLyBX
aGlsZSB0aGlzIGlzIGFuIGFwcHJveGltYXRlIGFsZ29yaXRobSBmb3IgZGl2aXNpb24gYnkgMjU1
LCBpdCBnaXZlcyBwZXJmZWN0bHkgYWNjdXJhdGUgcmVzdWx0cyBmb3IgMTYtYml0IHZhbHVlcy4K
ICAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBnaXZlcyBhY2N1cmF0ZSByZXN1bHRzIGZvciAxNi1i
aXQgdmFsdWVzLCB3ZSBzaG91bGQgZ2V0IHRoaXMgb3B0aW1pemF0aW9uIGludG8gY29tcGlsZXJz
IGxpa2UgY2xhbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCShyZXZpc2lvbiAyNjIyNTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGRU1vcnBob2xvZ3kuaCIKIAorI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5o
IgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5j
bHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCShyZXZpc2lv
biAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDIyICs4OSwyMiBAQCBib29s
IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OnRyCiB7CiAgICAgc3dpdGNoIChtX3R5
cGUpIHsKICAgICBjYXNlIEdSQVlTQ0FMRTogewotICAgICAgICBDb2xvck1hdHJpeCBtYXRyaXgg
PSBDb2xvck1hdHJpeDo6Z3JheXNjYWxlTWF0cml4KG1fYW1vdW50KTsKKyAgICAgICAgYXV0byBt
YXRyaXggPSBncmF5c2NhbGVDb2xvck1hdHJpeChtX2Ftb3VudCk7CiAgICAgICAgIG1hdHJpeC50
cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoY29sb3JDb21wb25lbnRzKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIGNhc2UgU0VQSUE6IHsKLSAgICAgICAgQ29sb3JNYXRyaXggbWF0
cml4ID0gQ29sb3JNYXRyaXg6OnNlcGlhTWF0cml4KG1fYW1vdW50KTsKKyAgICAgICAgYXV0byBt
YXRyaXggPSBzZXBpYUNvbG9yTWF0cml4KG1fYW1vdW50KTsKICAgICAgICAgbWF0cml4LnRyYW5z
Zm9ybUNvbG9yQ29tcG9uZW50cyhjb2xvckNvbXBvbmVudHMpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgY2FzZSBIVUVfUk9UQVRFOiB7Ci0gICAgICAgIENvbG9yTWF0cml4IG1h
dHJpeCA9IENvbG9yTWF0cml4OjpodWVSb3RhdGVNYXRyaXgobV9hbW91bnQpOworICAgICAgICBh
dXRvIG1hdHJpeCA9IGh1ZVJvdGF0ZUNvbG9yTWF0cml4KG1fYW1vdW50KTsKICAgICAgICAgbWF0
cml4LnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhjb2xvckNvbXBvbmVudHMpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBTQVRVUkFURTogewotICAgICAgICBDb2xvck1h
dHJpeCBtYXRyaXggPSBDb2xvck1hdHJpeDo6c2F0dXJhdGlvbk1hdHJpeChtX2Ftb3VudCk7Cisg
ICAgICAgIGF1dG8gbWF0cml4ID0gc2F0dXJhdGlvbkNvbG9yTWF0cml4KG1fYW1vdW50KTsKICAg
ICAgICAgbWF0cml4LnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhjb2xvckNvbXBvbmVudHMpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzcsMTQgKzIzNywxMSBAQCBib29sIElu
dmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhCiAgICAgc1JHQkNvbG9yQ29tcG9uZW50
cyA9IGhzbFRvU1JHQihoc2xDb21wb25lbnRzKTsKICAgICAKICAgICAvLyBBcHBseSB0aGUgbWF0
cml4LiBTZWUgcmRhcjovL3Byb2JsZW0vNDExNDY2NTAgZm9yIGhvdyB0aGlzIG1hdHJpeCB3YXMg
ZGVyaXZlZC4KLSAgICBjb25zdCBmbG9hdCBtYXRyaXhWYWx1ZXNbMjBdID0gewotICAgICAgIC0w
Ljc3MCwgIDAuMDU5LCAtMC4wODksIDAsIDEsCi0gICAgICAgIDAuMDMwLCAtMC43NDEsIC0wLjA4
OSwgMCwgMSwKLSAgICAgICAgMC4wMzAsICAwLjA1OSwgLTAuODkwLCAwLCAxLAotICAgICAgICAw
LCAgICAgIDAsICAgICAgMCwgICAgIDEsIDAKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8NSwg
Mz4gdG9EYXJrTW9kZU1hdHJpeCB7CisgICAgICAgLTAuNzcwZiwgIDAuMDU5ZiwgLTAuMDg5Ziwg
MC4wZiwgMS4wZiwKKyAgICAgICAgMC4wMzBmLCAtMC43NDFmLCAtMC4wODlmLCAwLjBmLCAxLjBm
LAorICAgICAgICAwLjAzMGYsICAwLjA1OWYsIC0wLjg5MGYsIDAuMGYsIDEuMGYKICAgICB9Owot
Ci0gICAgQ29sb3JNYXRyaXggdG9EYXJrTW9kZU1hdHJpeChtYXRyaXhWYWx1ZXMpOwogICAgIHRv
RGFya01vZGVNYXRyaXgudHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvckNvbXBvbmVu
dHMpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjU0LDEzICsyNTEsMTEgQEAgYm9vbCBJbnZl
cnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OmludgogICAgIGF1dG8gcmdiQ29tcG9uZW50cyA9
IHNSR0JDb2xvckNvbXBvbmVudHM7CiAKICAgICAvLyBBcHBseSB0aGUgbWF0cml4LgotICAgIGNv
bnN0IGZsb2F0IG1hdHJpeFZhbHVlc1syMF0gPSB7Ci0gICAgICAgIC0xLjMwMCwgLTAuMDk3LCAg
MC4xNDcsIDAsIDEuMjUsCi0gICAgICAgIC0wLjA0OSwgLTEuMzQ3LCAgMC4xNDYsIDAsIDEuMjUs
Ci0gICAgICAgIC0wLjA0OSwgLTAuMDk3LCAtMS4xMDQsIDAsIDEuMjUsCi0gICAgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgIDEsIDAKKyAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8NSwgMz4g
dG9MaWdodE1vZGVNYXRyaXggeworICAgICAgICAtMS4zMDBmLCAtMC4wOTdmLCAgMC4xNDdmLCAw
LjBmLCAxLjI1ZiwKKyAgICAgICAgLTAuMDQ5ZiwgLTEuMzQ3ZiwgIDAuMTQ2ZiwgMC4wZiwgMS4y
NWYsCisgICAgICAgIC0wLjA0OWYsIC0wLjA5N2YsIC0xLjEwNGYsIDAuMGYsIDEuMjVmCiAgICAg
fTsKLSAgICBDb2xvck1hdHJpeCB0b0xpZ2h0TW9kZU1hdHJpeChtYXRyaXhWYWx1ZXMpOwogICAg
IHRvTGlnaHRNb2RlTWF0cml4LnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhyZ2JDb21wb25lbnRz
KTsKIAogICAgIC8vIENvbnZlcnQgdG8gSFNMLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCShy
ZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNs
YXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2U7CiBjbGFzcyBGaWx0ZXJFZmZlY3Q7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9uZW50czsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzOwogCiBjbGFzcyBGaWx0ZXJPcGVyYXRpb24g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RmlsdGVyT3BlcmF0aW9uPiB7CiBwdWJsaWM6
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>