<?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>113186</bug_id>
          
          <creation_ts>2013-03-25 04:44:06 -0700</creation_ts>
          <short_desc>Split FilterEffectRenderer</short_desc>
          <delta_ts>2014-03-02 09:09:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68469</blocked>
    
    <blocked>113040</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>krit</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>862646</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-25 04:44:06 -0700</bug_when>
    <thetext>The software fallback for TextureMapper (Accelerated compositing), needs to apply filter effects in software like FilterEffectRenderer applies it on RenderLayer. To make this possible without calling renderer code from the graphics backend, FilterEffectRenderer should be split into a generic part for applying software filter effect, and a part that contains the Render-tree and DOM specific parts that shouldn&apos;t be used from the graphics backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862649</commentid>
    <comment_count>1</comment_count>
      <attachid>194827</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-25 04:55:06 -0700</bug_when>
    <thetext>Created attachment 194827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862656</commentid>
    <comment_count>2</comment_count>
      <attachid>194827</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-25 05:02:12 -0700</bug_when>
    <thetext>Comment on attachment 194827
Patch

Attachment 194827 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17232624</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862659</commentid>
    <comment_count>3</comment_count>
      <attachid>194827</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-25 05:03:13 -0700</bug_when>
    <thetext>Comment on attachment 194827
Patch

Attachment 194827 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17291219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862665</commentid>
    <comment_count>4</comment_count>
      <attachid>194827</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 05:16:47 -0700</bug_when>
    <thetext>Comment on attachment 194827
Patch

Attachment 194827 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17241369</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862668</commentid>
    <comment_count>5</comment_count>
      <attachid>194833</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-25 05:29:48 -0700</bug_when>
    <thetext>Created attachment 194833
Patch

Correct merge mistake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862687</commentid>
    <comment_count>6</comment_count>
      <attachid>194833</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 06:07:43 -0700</bug_when>
    <thetext>Comment on attachment 194833
Patch

Attachment 194833 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17324019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862691</commentid>
    <comment_count>7</comment_count>
      <attachid>194833</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 06:09:48 -0700</bug_when>
    <thetext>Comment on attachment 194833
Patch

Attachment 194833 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17294182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862730</commentid>
    <comment_count>8</comment_count>
      <attachid>194848</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-25 07:17:32 -0700</bug_when>
    <thetext>Created attachment 194848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862735</commentid>
    <comment_count>9</comment_count>
      <attachid>194848</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 07:25:00 -0700</bug_when>
    <thetext>Comment on attachment 194848
Patch

Attachment 194848 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17246414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862878</commentid>
    <comment_count>10</comment_count>
      <attachid>194848</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 10:15:13 -0700</bug_when>
    <thetext>Comment on attachment 194848
Patch

Attachment 194848 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17329042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865447</commentid>
    <comment_count>11</comment_count>
      <attachid>195556</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-28 06:37:35 -0700</bug_when>
    <thetext>Created attachment 195556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865456</commentid>
    <comment_count>12</comment_count>
      <attachid>195556</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-28 06:45:20 -0700</bug_when>
    <thetext>Comment on attachment 195556
Patch

Attachment 195556 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17257542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865464</commentid>
    <comment_count>13</comment_count>
      <attachid>195556</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-28 06:51:30 -0700</bug_when>
    <thetext>Comment on attachment 195556
Patch

Attachment 195556 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17330315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865469</commentid>
    <comment_count>14</comment_count>
      <attachid>195556</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-28 06:56:15 -0700</bug_when>
    <thetext>Comment on attachment 195556
Patch

Attachment 195556 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17330319</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865473</commentid>
    <comment_count>15</comment_count>
      <attachid>195556</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-28 07:01:15 -0700</bug_when>
    <thetext>Comment on attachment 195556
Patch

Attachment 195556 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17296438</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865478</commentid>
    <comment_count>16</comment_count>
      <attachid>195556</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-28 07:06:57 -0700</bug_when>
    <thetext>Comment on attachment 195556
Patch

Needs rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866259</commentid>
    <comment_count>17</comment_count>
      <attachid>195556</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-29 11:41:52 -0700</bug_when>
    <thetext>Comment on attachment 195556
Patch

Attachment 195556 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17370027</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194827</attachid>
            <date>2013-03-25 04:55:06 -0700</date>
            <delta_ts>2013-03-25 05:29:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113186-20130325125049.patch</filename>
            <type>text/plain</type>
            <size>41034</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVlMGY1MTYzZGFmMmFi
ZmVjZGNiMTNhYTJkNWIxYTYyNzcwZWNlZi4uMTUxYTE1M2JkN2QwYWQyN2M5ODRlZDU5M2Q0YzMy
Zjc0Zjk4OTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTIyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNw
bGl0IEZpbHRlckVmZmVjdFJlbmRlcmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTMxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTcGxpdCBGaWx0ZXJFZmZlY3RSZW5kZXJlciBpbiBhIHNpbXBsZSBm
aWx0ZXIgZ3JhcGhpY3MgcGFydCBhbmQgbGVhdmUgb25seQorICAgICAgICB0aGUgcGFydHMgcmVx
dWlyaW5nIGFjY2VzcyB0byB0aGUgRE9NIG9yIFJlbmRlciB0cmVlIGluIEZpbHRlckVmZmVjdFJl
bmRlcmVyLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBzb2Z0d2FyZSBmYWxsYmFjayBmb3Ig
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdG8gcmV1c2UgdGhlIGNsYXNzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmRN
YXRyaXhSb3cpOgorICAgICAgICAoV2ViQ29yZTo6bGFzdE1hdHJpeFJvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6SW1hZ2VCdWZmZXJGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6On5JbWFnZUJ1ZmZlckZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6aW5wdXRDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpidWlsZEZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oLgorICAgICAgICAoSW1hZ2VC
dWZmZXJGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpzb3VyY2VJbWFnZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OnNldEZpbHRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6ZmlsdGVyUmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpvdXRwdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Om91dHB1dFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omxhc3RFZmZlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdFJlbmRlcmVyKToKKwog
MjAxMy0wMy0yNSAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbT3ZlcnZpZXddIE1ha2UgImRyYWctdG8tbW92ZSIgZmVh
dHVyZSBtb3JlIGRpc2NvdmVyYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTkyMDI4NWUy
YjQxMjkzOWE0YjBkYjI4Zjg2YzgyMWE1YjEyZjQ4OS4uZjFhYTIxNGI4YzE3ZmU2MTQwZWM3MzIw
ZWM1YTA2MzhjMThhZmM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5OTYsNiArMTk5Niw3
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA3MmU1ZWIzYTAxMDVkMTE1ODY1ZDMwMjgwOTQ1YWUxMmMyNDgyZjMzLi4wMDlk
NjlhMTU3ZmJiYTY5Y2E3ZWEwZTM2NjNmYWNiMzc4ZTE0MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTU2MDMsNiArNTYwMyw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRT
b3VyY2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5ZjFjMTQ4NjJiZWFkZDkzNjVlMjNhODgyMzJkYjNi
Y2RjNDBhMTIyLi41ZmJiNzhlNjE0MjZkY2EwZDdkN2EwOTkyNjQ4YzE5MzA0ZGQwZmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTIyMzksNiArMjIzOSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9ucy5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0lt
YWdlQnVmZmVyRmlsdGVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRT
b3VyY2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaCBcCkBAIC0zNjg5
LDYgKzM2OTAsNyBAQCBlbmFibGU/KEZJTFRFUlMpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YmI2NGQz
NDFjN2Q0ODM4YTQ1OWU4MTdjZWZjMjdmMmMzNGFlMzcyLi4zODczNjNhZjc4NjQyOTVkZjVmYjZk
YWIxNTYxNDE4M2YzYzhiMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MTYxLDYgKzQxNjEsOCBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9ucy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0lt
YWdlQnVmZmVyRmlsdGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0xpZ2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMThjODM5YzA1ZjYwNzIxNTcyNTE2NWFh
NGYxMjU0NzU3NGZkYzJlYy4uZTk0ZWNlNzYwMTA5ODIxMjFmZDIxYThiNTViZmJmMjhiMDZhNGQz
ZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTMyNzQxLDYgKzMyNzQxLDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUK
KwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xJbWFnZUJ1
ZmZlckZpbHRlci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xJbWFnZUJ1ZmZlckZp
bHRlci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcTGlnaHRTb3VyY2UuaCIKIAkJCQkJ
CT4KIAkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NjE0ZjA0MTMwYTYxOWQyZmU0YmQ5NTVhOTk5ZjdkNDdhMjkxNDFmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZp
bHRlci5jcHAKQEAgLTAsMCArMSwyODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIERpZ2lh
IFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGaWx0ZXIuaCIK
KworI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCisj
aW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5o
IgorI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCisjaW5jbHVkZSAiRkVNZXJnZS5oIgorI2lu
Y2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgor
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0
b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworICAg
IHBhcmFtZXRlcnMuYXBwZW5kKDApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbGFzdE1hdHJp
eFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMuYXBwZW5k
KDApOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDAp
OworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDEpOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwor
fQorCitJbWFnZUJ1ZmZlckZpbHRlcjo6SW1hZ2VCdWZmZXJGaWx0ZXIoKQorICAgIDogbV9ncmFw
aGljc0J1ZmZlckF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoZmFsc2UpCit7CisgICAgc2V0RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwor
ICAgIG1fc291cmNlR3JhcGhpYyA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKK30KKwor
SW1hZ2VCdWZmZXJGaWx0ZXI6On5JbWFnZUJ1ZmZlckZpbHRlcigpCit7Cit9CisKK0dyYXBoaWNz
Q29udGV4dCogSW1hZ2VCdWZmZXJGaWx0ZXI6OmlucHV0Q29udGV4dCgpCit7CisgICAgcmV0dXJu
IHNvdXJjZUltYWdlKCkgPyBzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiAwOworfQorCitQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gSW1hZ2VCdWZmZXJGaWx0ZXI6OmJ1aWxkRmlsdGVyRWZmZWN0
KEZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uKQoreworICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdDsKKworICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRp
b25UeXBlKCkpIHsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CisgICAg
ICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9u
ID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9w
ZXJhdGlvbik7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOworICAgICAg
ICBkb3VibGUgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlv
bi0+YW1vdW50KCksIDAuMCwgMS4wKTsKKworICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kdmNzLncz
Lm9yZy9oZy9GWFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjZ3JheXNjYWxlRXF1
aXZhbGVudAorICAgICAgICAvLyBmb3IgaW5mb3JtYXRpb24gb24gcGFyYW1ldGVycy4KKworICAg
ICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2
ICsgMC43ODc0ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFw
cGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1v
dW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9G
bG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBlbmRNYXRy
aXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5k
KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQp
KTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KDAuNzE1MiArIDAuMjg0OCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVN
aW51c0Ftb3VudCkpOworICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKwor
ICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4y
MTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVz
QW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9u
VG9GbG9hdCgwLjA3MjIgKyAwLjkyNzggKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBlbmRN
YXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKworICAgICAgICBsYXN0TWF0cml4Um93KGlucHV0
UGFyYW1ldGVycyk7CisKKyAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKHRo
aXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKKyAgICAg
ICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3Bl
cmF0aW9uKTsKKyAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7CisgICAgICAg
IGRvdWJsZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGNvbG9yTWF0cml4T3BlcmF0aW9u
LT5hbW91bnQoKSwgMC4wLCAxLjApOworCisgICAgICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMu
b3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2YWxl
bnQKKyAgICAgICAgLy8gZm9yIGluZm9ybWF0aW9uIG9uIHBhcmFtZXRlcnMuCisKKyAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzkzICsgMC42
MDcgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1pbnVzQW1vdW50KSk7Cisg
ICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjE4
OSAtIDAuMTg5ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5kTWF0cml4Um93KGlucHV0
UGFyYW1ldGVycyk7CisKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBp
bnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC42ODYgKyAwLjMx
NCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFy
cm93UHJlY2lzaW9uVG9GbG9hdCgwLjE2OCAtIDAuMTY4ICogb25lTWludXNBbW91bnQpKTsKKyAg
ICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7CisKKyAgICAgICAgaW5wdXRQYXJh
bWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjcyIC0gMC4yNzIgKiBvbmVN
aW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoMC41MzQgLSAwLjUzNCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlu
cHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5
ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVy
cyk7CisKKyAgICAgICAgbGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOworCisgICAgICAg
IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVf
TUFUUklYLCBpbnB1dFBhcmFtZXRlcnMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7CisgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIFZl
Y3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgp
KSk7CisgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9S
TUFUUklYX1RZUEVfU0FUVVJBVEUsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0
YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRp
b24pOworICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKKyAgICAgICAgaW5w
dXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4T3Bl
cmF0aW9uLT5hbW91bnQoKSkpOworICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVh
dGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgaW5wdXRQYXJhbWV0ZXJzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6
IHsKKyAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9u
ZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOworICAgICAgICB0cmFuc2ZlckZ1bmN0aW9u
LnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEU7CisgICAgICAgIFZlY3Rvcjxm
bG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFt
b3VudCgpKSk7CisgICAgICAgIHRyYW5zZmVyUGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lz
aW9uVG9GbG9hdCgxIC0gY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7Cisg
ICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7
CisKKyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAg
ICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1
bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24p
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJ
VFk6IHsKKyAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29t
cG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOworICAgICAgICB0cmFuc2ZlckZ1bmN0
aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEU7CisgICAgICAgIFZlY3Rv
cjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMu
YXBwZW5kKDApOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7CisgICAg
ICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7CisK
KyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAgICAg
IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCBudWxsRnVuY3Rpb24s
IG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7Cisg
ICAgICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRy
YW5zZmVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBl
ID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKKyAgICAgICAgdHJhbnNmZXJGdW5j
dGlvbi5zbG9wZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVy
YXRpb24tPmFtb3VudCgpKTsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAw
OworCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOworICAg
ICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNmZXJG
dW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9u
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05U
UkFTVDogeworICAgICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBj
b21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CisgICAgICAgIHRyYW5zZmVyRnVu
Y3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CisgICAgICAgIGZs
b2F0IGFtb3VudCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVy
YXRpb24tPmFtb3VudCgpKTsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9IGFtb3Vu
dDsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41ICogYW1vdW50ICsg
MC41OworCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwor
ICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNm
ZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpC
TFVSOiB7CisgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0
aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAg
ZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxlbmd0aChibHVyT3BlcmF0aW9uLT5z
dGREZXZpYXRpb24oKSwgMCk7CisgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVh
dGUodGhpcywgc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24pOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgIERy
b3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAg
ZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUodGhpcywKKyAgICAgICAgICAgIGRyb3BTaGFk
b3dPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5zdGREZXZp
YXRpb24oKSwKKyAgICAgICAgICAgIGRyb3BTaGFkb3dPcGVyYXRpb24tPngoKSwgZHJvcFNoYWRv
d09wZXJhdGlvbi0+eSgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5jb2xvcigpLCAxKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOworfQorCitib29sIEltYWdlQnVmZmVyRmlsdGVy
OjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zKQoreworICAgIG1faGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKTsKKyAgICBpZiAobV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMpCisgICAgICAgIG1fb3V0
c2V0cyA9IG9wZXJhdGlvbnMub3V0c2V0cygpOworICAgIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IHByZXZpb3VzRWZmZWN0ID0gbV9zb3VyY2VHcmFwaGljOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OworICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZp
bHRlck9wZXJhdGlvbiA9IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOworICAg
ICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9N
OgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTToKKyNlbmRp
ZgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgICAg
ICAvLyBDVVNUT00sIFZBTElEQVRFRF9DVVNUT00gYW5kIFJFRkVSRU5DRSBhcmUgb25seSBoYW5k
bGVkIGluIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZC4KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBlZmZlY3QgPSBidWlsZEZp
bHRlckVmZmVjdChmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoZWZmZWN0KSB7CisgICAgICAgICAgICAvLyBVbmxpa2UgU1ZHLCBm
aWx0ZXJzIGFwcGxpZWQgaGVyZSBzaG91bGQgbm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1
YnJlZ2lvbnMuCisgICAgICAgICAgICBlZmZlY3QtPnNldENsaXBzVG9Cb3VuZHMoZmFsc2UpOwor
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQocHJldmlv
dXNFZmZlY3QpOworICAgICAgICAgICAgbV9lZmZlY3RzLmFwcGVuZChlZmZlY3QpOworICAgICAg
ICAgICAgcHJldmlvdXNFZmZlY3QgPSBlZmZlY3QucmVsZWFzZSgpOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gSWYgd2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNhbGxl
ciB3ZSBhcmUgbm90IHZhbGlkCisgICAgaWYgKCFtX2VmZmVjdHMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdSZWdp
b24pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEltYWdlQnVmZmVyRmlsdGVyOjphbGxv
Y2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKK3sKKyAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBl
ZmZlY3QgY2hhaW4gaGFzIGJlZW4gYnVpbHQsIGFuZCB0aGUKKyAgICAvLyBzb3VyY2UgaW1hZ2Ug
c2l6ZXMgc2V0LiBXZSBqdXN0IG5lZWQgdG8gYXR0YWNoIHRoZSBncmFwaGljCisgICAgLy8gYnVm
ZmVyIGlmIHdlIGhhdmUgbm90IHlldCBkb25lIHNvLgorICAgIGlmICghbV9ncmFwaGljc0J1ZmZl
ckF0dGFjaGVkKSB7CisgICAgICAgIEludFNpemUgbG9naWNhbFNpemUobV9zb3VyY2VEcmF3aW5n
UmVnaW9uLndpZHRoKCksIG1fc291cmNlRHJhd2luZ1JlZ2lvbi5oZWlnaHQoKSk7CisgICAgICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKQorICAgICAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShsb2dpY2FsU2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSgpKSk7
CisgICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CisgICAgfQorfQorCit2
b2lkIEltYWdlQnVmZmVyRmlsdGVyOjphcHBseSgpCit7CisgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGVmZmVjdCk7CisgICAgZWZmZWN0LT5hcHBseSgpOworICAgIGVmZmVjdC0+dHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1
ZmZlckZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2YTA5ZDgwYjYyNDNiMWFlOGRjYmU1ZTU0MjJlNDYz
ZTA5ZTI5ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmgKQEAgLTAsMCArMSwxMTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBJbWFnZUJ1ZmZlckZpbHRlcl9oCisjZGVmaW5lIEltYWdlQnVmZmVyRmlsdGVyX2gK
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKworI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKKyNpbmNsdWRlICJM
YXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgorCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7CitjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CisKK2NsYXNzIEltYWdlQnVmZmVyRmlsdGVyIDogcHVibGljIEZpbHRlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VCdWZmZXJGaWx0ZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEltYWdlQnVmZmVyRmlsdGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRT
b3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCisgICAgeyAK
KyAgICAgICAgbV9zb3VyY2VEcmF3aW5nUmVnaW9uID0gc291cmNlSW1hZ2VSZWN0OworICAgICAg
ICBzZXRNYXhFZmZlY3RSZWN0cyhzb3VyY2VJbWFnZVJlY3QpOworICAgICAgICBzZXRGaWx0ZXJS
ZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVk
ID0gZmFsc2U7CisgICAgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhd2luZ1JlZ2lvbjsgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBtX2Zp
bHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRl
clJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9CisKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGlucHV0Q29udGV4dCgpOworICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25z
dCB7IHJldHVybiBsYXN0RWZmZWN0KCktPmFzSW1hZ2VCdWZmZXIoKTsgfQorCisgICAgYm9vbCBi
dWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKCk7CisgICAgdm9pZCBhcHBseSgpOworICAgIAorICAgIEludFJlY3Qgb3V0
cHV0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+aGFzUmVzdWx0KCkgPyBsYXN0
RWZmZWN0KCktPnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoSW50UmVjdChtX2ZpbHRl
clJlZ2lvbikpIDogSW50UmVjdCgpOyB9CisKKyAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1Bp
eGVscygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOyB9CisKK3By
b3RlY3RlZDoKKyAgICBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRGaWx0ZXJFZmZlY3Qo
RmlsdGVyT3BlcmF0aW9uKik7CisKKyAgICB2b2lkIHNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZs
b2F0UmVjdCYgZWZmZWN0UmVjdCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9lZmZlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBlZmZlY3QgPSBtX2VmZmVjdHMuYXQoaSk7CisgICAgICAgICAgICBlZmZlY3QtPnNldE1h
eEVmZmVjdFJlY3QoZWZmZWN0UmVjdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1f
ZWZmZWN0cy5zaXplKCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEltYWdlQnVmZmVyRmlsdGVyKCk7Cisg
ICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJGaWx0ZXIoKTsKKyAgICAKKyAgICBGbG9hdFJlY3QgbV9z
b3VyY2VEcmF3aW5nUmVnaW9uOworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKyAgICAK
KyAgICBGaWx0ZXJFZmZlY3RMaXN0IG1fZWZmZWN0czsKKyAgICBSZWZQdHI8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOworICAgIAorICAgIEludFJlY3RFeHRlbnQgbV9vdXRzZXRzOwor
CisgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQ7CisgICAgYm9vbCBtX2hhc0ZpbHRl
clRoYXRNb3Zlc1BpeGVsczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShDU1NfRklMVEVSUykKKworI2VuZGlmIC8vIEltYWdlQnVmZmVyRmlsdGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CmluZGV4IDJkZTkxYzRmYjFlNGNkODhkOTFmOGI2YTFjNTQ1MDU4Nzk1MzljYzEuLjMwMmJkNjE1
YzVlNDYyMzk4YTQyOGQ5YmQ2MjA3ZDJkNjM4N2Y3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMjksMTkgKzI5LDkgQEAK
IAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCiAKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGRUNvbG9yTWF0cml4Lmgi
Ci0jaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgotI2luY2x1ZGUgIkZFRHJvcFNoYWRv
dy5oIgotI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVkZSAiRkVNZXJnZS5oIgot
I2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQogI2lm
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQogI2luY2x1ZGUgIkN1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24u
aCIKQEAgLTYyLDIxICs1Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlu
bGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQotewotICAg
IHBhcmFtZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotfQotCi1z
dGF0aWMgaW5saW5lIHZvaWQgbGFzdE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJz
KQotewotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDAp
OwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDEpOwot
ICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotfQotCiBpbmxpbmUgYm9vbCBpc0ZpbHRlclNpemVW
YWxpZChGbG9hdFJlY3QgcmVjdCkKIHsKICAgICBpZiAocmVjdC53aWR0aCgpIDwgMCB8fCByZWN0
LndpZHRoKCkgPiBrTWF4RmlsdGVyU2l6ZQpAQCAtODUsOCArNjAsMTUgQEAgaW5saW5lIGJvb2wg
aXNGaWx0ZXJTaXplVmFsaWQoRmxvYXRSZWN0IHJlY3QpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K0ZpbHRlckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcigpCisjaWYgRU5BQkxF
KENTU19TSEFERVJTKQorICAgIDogbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXIoZmFsc2UpCisjZW5k
aWYKK3sKK30KKwogI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQot
c3RhdGljIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZUN1c3RvbUZpbHRlckVmZmVj
dChGaWx0ZXIqIGZpbHRlciwgRG9jdW1lbnQqIGRvY3VtZW50LCBWYWxpZGF0ZWRDdXN0b21GaWx0
ZXJPcGVyYXRpb24qIG9wZXJhdGlvbikKK1Bhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6YnVpbGRDdXN0b21GaWx0ZXJFZmZlY3QoRG9jdW1lbnQqIGRvY3VtZW50
LCBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbikKIHsKICAgICBpZiAo
IWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTk2LDMwICs3OCwxMSBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxGRUN1c3RvbUZpbHRlcj4gY3JlYXRlQ3VzdG9tRmlsdGVyRWZmZWN0KEZpbHRl
ciogZmlsdGVyLCBEb2N1bQogICAgIGlmICghZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKGZpbHRl
ciwgZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBvcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0o
KSwgb3BlcmF0aW9uLT5wYXJhbWV0ZXJzKCksCisgICAgcmV0dXJuIEZFQ3VzdG9tRmlsdGVyOjpj
cmVhdGUodGhpcywgZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBvcGVyYXRpb24tPnZhbGlkYXRl
ZFByb2dyYW0oKSwgb3BlcmF0aW9uLT5wYXJhbWV0ZXJzKCksCiAgICAgICAgIG9wZXJhdGlvbi0+
bWVzaFJvd3MoKSwgb3BlcmF0aW9uLT5tZXNoQ29sdW1ucygpLCAgb3BlcmF0aW9uLT5tZXNoVHlw
ZSgpKTsKIH0KICNlbmRpZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVu
ZGVyZXIoKQotICAgIDogbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKGZhbHNlKQotICAgICwgbV9o
YXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoZmFsc2UpCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQot
ICAgICwgbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXIoZmFsc2UpCi0jZW5kaWYKLXsKLSAgICBzZXRG
aWx0ZXJSZXNvbHV0aW9uKEZsb2F0U2l6ZSgxLCAxKSk7Ci0gICAgbV9zb3VyY2VHcmFwaGljID0g
U291cmNlR3JhcGhpYzo6Y3JlYXRlKHRoaXMpOwotfQotCi1GaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
fkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKLXsKLX0KLQotR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6aW5wdXRDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gc291cmNlSW1hZ2Uo
KSA/IHNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IDA7Ci19CiAKIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0
LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKIHsKQEAgLTIxMCwx
MzcgKzE3Myw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgICAgICByZWZlcmVu
Y2VPcGVyYXRpb24tPnNldEZpbHRlckVmZmVjdChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewot
ICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0
ZXJzOwotICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29s
b3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpLCAwLjAsIDEuMCk7Ci0KLSAgICAgICAgICAgIC8v
IFNlZSBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5k
ZXguaHRtbCNncmF5c2NhbGVFcXVpdmFsZW50Ci0gICAgICAgICAgICAvLyBmb3IgaW5mb3JtYXRp
b24gb24gcGFyYW1ldGVycy4KLQotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiArIDAuNzg3NCAqIG9uZU1pbnVzQW1vdW50KSk7
Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoMC43MTUyIC0gMC43MTUyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0
UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIg
KiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1l
dGVycyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lz
aW9uVG9GbG9hdCgwLjIxMjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAg
ICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAr
IDAuMjg0OCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMu
YXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4wNzIyIC0gMC4wNzIyICogb25lTWludXNB
bW91bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0g
ICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC4yMTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFy
YW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBv
bmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiArIDAuOTI3OCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0g
ICAgICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAg
bGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBlZmZlY3QgPSBG
RUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgaW5w
dXRQYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTogewotICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwotICAgICAgICAgICAgZG91YmxlIG9u
ZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgp
LCAwLjAsIDEuMCk7Ci0KLSAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMub3JnL2hn
L0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2YWxlbnQKLSAg
ICAgICAgICAgIC8vIGZvciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgotCi0gICAgICAgICAg
ICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4zOTMgKyAw
LjYwNyAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1pbnVzQW1vdW50
KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoMC4xODkgLSAwLjE4OSAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBlbmRN
YXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBvbmVNaW51c0Ft
b3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KDAuNjg2ICsgMC4zMTQgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMTY4IC0gMC4x
NjggKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFy
YW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjI3MiAtIDAuMjcyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAg
ICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjUzNCAt
IDAuNTM0ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5h
cHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5ICogb25lTWludXNBbW91
bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAg
ICAgICAgICBsYXN0TWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGVm
ZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFU
UklYLCBpbnB1dFBhcmFtZXRlcnMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7Ci0gICAgICAgICAgICBCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0YXRp
Y19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24p
OwotICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7Ci0gICAgICAgICAg
ICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRy
aXhPcGVyYXRpb24tPmFtb3VudCgpKSk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0
cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFLCBpbnB1dFBhcmFt
ZXRlcnMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKLSAgICAgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKLSAgICAgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlvbi0+
YW1vdW50KCkpKTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0
aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFLCBpbnB1dFBhcmFtZXRlcnMpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OklOVkVSVDogewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbiogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAg
ICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJM
RTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOwotICAgICAg
ICAgICAgdHJhbnNmZXJQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNv
bXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91bnQoKSkpOwotICAgICAgICAgICAgdHJhbnNm
ZXJQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDEgLSBjb21wb25lbnRU
cmFuc2Zlck9wZXJhdGlvbi0+YW1vdW50KCkpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rp
b24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7Ci0KLSAgICAgICAgICAgIENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0g
RkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5z
ZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lU
WTogewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiog
Y29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRy
YW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRTsKLSAg
ICAgICAgICAgIFZlY3RvcjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOwotICAgICAgICAgICAg
dHJhbnNmZXJQYXJhbWV0ZXJzLmFwcGVuZCgwKTsKLSAgICAgICAgICAgIHRyYW5zZmVyUGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJh
dGlvbi0+YW1vdW50KCkpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1
ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7Ci0KLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKHRoaXMsIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCBudWxsRnVu
Y3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6IHsKLSAgICAgICAgICAg
IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVy
T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5
cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgICAgICAgICAgdHJhbnNm
ZXJGdW5jdGlvbi5zbG9wZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNm
ZXJPcGVyYXRpb24tPmFtb3VudCgpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50
ZXJjZXB0ID0gMDsKLQotICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxs
RnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVh
dGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5j
dGlvbiwgbnVsbEZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogewotICAgICAgICAgICAgQmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRp
b24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
dHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZF
Q09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7Ci0gICAgICAgICAgICBmbG9hdCBhbW91bnQg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91
bnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnNsb3BlID0gYW1vdW50OwotICAg
ICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41ICogYW1vdW50ICsgMC41
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51
bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNy
ZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1
bmN0aW9uLCBudWxsRnVuY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIEJsdXJGaWx0
ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0
aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9
IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIDApOwot
ICAgICAgICAgICAgZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSh0aGlzLCBzdGREZXZp
YXRpb24sIHN0ZERldmlhdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIERy
b3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHRoaXMsIGRyb3BTaGFkb3dPcGVyYXRp
b24tPnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFk
b3dPcGVyYXRpb24tPngoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi0+eSgpLCBkcm9wU2hhZG93T3Bl
cmF0aW9uLT5jb2xvcigpLCAxKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjaWYg
RU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpDVVNUT006CiAgICAgICAgICAgICAvLyBDVVNUT00gb3BlcmF0aW9ucyBh
cmUgYWx3YXlzIGNvbnZlcnRlZCB0byBWQUxJREFURURfQ1VTVE9NIGJlZm9yZSBnZXR0aW5nIGhl
cmUuCkBAIC0zNTAsMTMgKzE4MiwxNCBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWls
ZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTTogewogICAgICAgICAgICAg
VmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBjdXN0b21GaWx0ZXJPcGVyYXRpb24gPSBz
dGF0aWNfY2FzdDxWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRp
b24pOwogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVuZGVyZXIgPyByZW5kZXJl
ci0+ZG9jdW1lbnQoKSA6IDA7Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVDdXN0b21GaWx0
ZXJFZmZlY3QodGhpcywgZG9jdW1lbnQsIGN1c3RvbUZpbHRlck9wZXJhdGlvbik7CisgICAgICAg
ICAgICBlZmZlY3QgPSBidWlsZEN1c3RvbUZpbHRlckVmZmVjdChkb2N1bWVudCwgY3VzdG9tRmls
dGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGlmIChlZmZlY3QpCiAgICAgICAgICAgICAgICAg
bV9oYXNDdXN0b21TaGFkZXJGaWx0ZXIgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZWZmZWN0ID0gYnVp
bGRGaWx0ZXJFZmZlY3QoZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKQEAgLTM3OCw3ICsyMTEsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpi
dWlsZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdp
bmdSZWdpb24pOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5NCwxOSArMjI3
LDYgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dXBkYXRlQmFja2luZ1N0b3JlUmVjdChj
b25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKLXsK
LSAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBlZmZlY3QgY2hhaW4gaGFzIGJlZW4gYnVpbHQsIGFu
ZCB0aGUKLSAgICAvLyBzb3VyY2UgaW1hZ2Ugc2l6ZXMgc2V0LiBXZSBqdXN0IG5lZWQgdG8gYXR0
YWNoIHRoZSBncmFwaGljCi0gICAgLy8gYnVmZmVyIGlmIHdlIGhhdmUgbm90IHlldCBkb25lIHNv
LgotICAgIGlmICghbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKSB7Ci0gICAgICAgIEludFNpemUg
bG9naWNhbFNpemUobV9zb3VyY2VEcmF3aW5nUmVnaW9uLndpZHRoKCksIG1fc291cmNlRHJhd2lu
Z1JlZ2lvbi5oZWlnaHQoKSk7Ci0gICAgICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJ
bWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKQotICAgICAgICAgICAgc2V0U291
cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgMSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgcmVuZGVyaW5nTW9kZSgpKSk7Ci0gICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRh
Y2hlZCA9IHRydWU7Ci0gICAgfQotfQotCiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjbGVh
ckludGVybWVkaWF0ZVJlc3VsdHMoKQogewogICAgIG1fc291cmNlR3JhcGhpYy0+Y2xlYXJSZXN1
bHQoKTsKQEAgLTQxNCwxMyArMjM0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y2xl
YXJJbnRlcm1lZGlhdGVSZXN1bHRzKCkKICAgICAgICAgbV9lZmZlY3RzW2ldLT5jbGVhclJlc3Vs
dCgpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjphcHBseSgpCi17Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGVmZmVjdC0+YXBw
bHkoKTsKLSAgICBlZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZURl
dmljZVJHQik7Ci19Ci0KIExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1dGVT
b3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVj
dCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQogewogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgK
aW5kZXggNTM1YTg3YWMwNDU3YzYxMjhiNzFhZDc0NjgxMmNkYWYxOTFmNWIxMy4uMmFlNWFkOWZj
NmY4MmY3NmU4YzlhMDUwYTMxNTZmMzUzYzYzN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTI4LDI2ICsyOCwxOCBAQAogCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgorI2luY2x1ZGUgIkltYWdl
QnVmZmVyRmlsdGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlckJ1aWxkZXIuaCIKLSNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCiAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gRmlsdGVyRWZmZWN0TGlzdDsKLWNsYXNzIENhY2hlZFNoYWRl
cjsKLWNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW07CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIFJlbmRlckxheWVyOwpAQCAtNzgsNyArNzAsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXZlRmlsdGVyRWZmZWN0OwogfTsKIAotY2xhc3MgRmlsdGVyRWZm
ZWN0UmVuZGVyZXIgOiBwdWJsaWMgRmlsdGVyCitjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6
IHB1YmxpYyBJbWFnZUJ1ZmZlckZpbHRlcgogewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgpAQCAtODcsNjQgKzc5LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0
KQotICAgIHsgCi0gICAgICAgIG1fc291cmNlRHJhd2luZ1JlZ2lvbiA9IHNvdXJjZUltYWdlUmVj
dDsKLSAgICAgICAgc2V0TWF4RWZmZWN0UmVjdHMoc291cmNlSW1hZ2VSZWN0KTsKLSAgICAgICAg
c2V0RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgICAgIG1fZ3JhcGhpY3NCdWZm
ZXJBdHRhY2hlZCA9IGZhbHNlOwotICAgIH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJ
bWFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAg
IHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotCi0g
ICAgR3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKLSAgICBJbWFnZUJ1ZmZlciogb3V0
cHV0KCkgY29uc3QgeyByZXR1cm4gbGFzdEVmZmVjdCgpLT5hc0ltYWdlQnVmZmVyKCk7IH0KLQog
ICAgIGJvb2wgYnVpbGQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYpOwogICAgIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZFJlZmVyZW5jZUZpbHRl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlv
dXNFZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiopOworICAgIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZEN1c3RvbUZpbHRlckVmZmVjdChEb2N1bWVudCosIFZhbGlkYXRlZEN1
c3RvbUZpbHRlck9wZXJhdGlvbiopCiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICB2
b2lkIGFwcGx5KCk7Ci0gICAgCi0gICAgSW50UmVjdCBvdXRwdXRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbGFzdEVmZmVjdCgpLT5oYXNSZXN1bHQoKSA/IGxhc3RFZmZlY3QoKS0+cmVxdWVzdGVkUmVn
aW9uT2ZJbnB1dEltYWdlRGF0YShJbnRSZWN0KG1fZmlsdGVyUmVnaW9uKSkgOiBJbnRSZWN0KCk7
IH0KIAotICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHM7IH0KICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3Vy
Y2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwg
Y29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
ICAgICBib29sIGhhc0N1c3RvbVNoYWRlckZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3Vz
dG9tU2hhZGVyRmlsdGVyOyB9CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRNYXhFZmZl
Y3RSZWN0cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fZWZmZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gbV9lZmZlY3RzLmF0KGkpOwotICAgICAgICAg
ICAgZWZmZWN0LT5zZXRNYXhFZmZlY3RSZWN0KGVmZmVjdFJlY3QpOwotICAgICAgICB9Ci0gICAg
fQotICAgIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChtX2VmZmVjdHMuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBt
X2VmZmVjdHMubGFzdCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcigpOwotICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdFJlbmRlcmVyKCk7Ci0g
ICAgCi0gICAgRmxvYXRSZWN0IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3Qg
bV9maWx0ZXJSZWdpb247Ci0gICAgCi0gICAgRmlsdGVyRWZmZWN0TGlzdCBtX2VmZmVjdHM7Ci0g
ICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsKLSAgICAKLSAgICBJbnRS
ZWN0RXh0ZW50IG1fb3V0c2V0czsKIAotICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVk
OwotICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHM7CiAjaWYgRU5BQkxFKENTU19T
SEFERVJTKQogICAgIGJvb2wgbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXI7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194833</attachid>
            <date>2013-03-25 05:29:48 -0700</date>
            <delta_ts>2013-03-25 07:17:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113186-20130325132531.patch</filename>
            <type>text/plain</type>
            <size>41142</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVlMGY1MTYzZGFmMmFi
ZmVjZGNiMTNhYTJkNWIxYTYyNzcwZWNlZi4uMTUxYTE1M2JkN2QwYWQyN2M5ODRlZDU5M2Q0YzMy
Zjc0Zjk4OTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTIyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNw
bGl0IEZpbHRlckVmZmVjdFJlbmRlcmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTMxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTcGxpdCBGaWx0ZXJFZmZlY3RSZW5kZXJlciBpbiBhIHNpbXBsZSBm
aWx0ZXIgZ3JhcGhpY3MgcGFydCBhbmQgbGVhdmUgb25seQorICAgICAgICB0aGUgcGFydHMgcmVx
dWlyaW5nIGFjY2VzcyB0byB0aGUgRE9NIG9yIFJlbmRlciB0cmVlIGluIEZpbHRlckVmZmVjdFJl
bmRlcmVyLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBzb2Z0d2FyZSBmYWxsYmFjayBmb3Ig
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdG8gcmV1c2UgdGhlIGNsYXNzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmRN
YXRyaXhSb3cpOgorICAgICAgICAoV2ViQ29yZTo6bGFzdE1hdHJpeFJvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6SW1hZ2VCdWZmZXJGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6On5JbWFnZUJ1ZmZlckZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6aW5wdXRDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpidWlsZEZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oLgorICAgICAgICAoSW1hZ2VC
dWZmZXJGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpzb3VyY2VJbWFnZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OnNldEZpbHRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6ZmlsdGVyUmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpvdXRwdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Om91dHB1dFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omxhc3RFZmZlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdFJlbmRlcmVyKToKKwog
MjAxMy0wMy0yNSAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbT3ZlcnZpZXddIE1ha2UgImRyYWctdG8tbW92ZSIgZmVh
dHVyZSBtb3JlIGRpc2NvdmVyYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTkyMDI4NWUy
YjQxMjkzOWE0YjBkYjI4Zjg2YzgyMWE1YjEyZjQ4OS4uZjFhYTIxNGI4YzE3ZmU2MTQwZWM3MzIw
ZWM1YTA2MzhjMThhZmM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5OTYsNiArMTk5Niw3
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA3MmU1ZWIzYTAxMDVkMTE1ODY1ZDMwMjgwOTQ1YWUxMmMyNDgyZjMzLi4wMDlk
NjlhMTU3ZmJiYTY5Y2E3ZWEwZTM2NjNmYWNiMzc4ZTE0MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTU2MDMsNiArNTYwMyw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRT
b3VyY2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5ZjFjMTQ4NjJiZWFkZDkzNjVlMjNhODgyMzJkYjNi
Y2RjNDBhMTIyLi41ZmJiNzhlNjE0MjZkY2EwZDdkN2EwOTkyNjQ4YzE5MzA0ZGQwZmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTIyMzksNiArMjIzOSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9ucy5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0lt
YWdlQnVmZmVyRmlsdGVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRT
b3VyY2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaCBcCkBAIC0zNjg5
LDYgKzM2OTAsNyBAQCBlbmFibGU/KEZJTFRFUlMpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YmI2NGQz
NDFjN2Q0ODM4YTQ1OWU4MTdjZWZjMjdmMmMzNGFlMzcyLi4zODczNjNhZjc4NjQyOTVkZjVmYjZk
YWIxNTYxNDE4M2YzYzhiMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MTYxLDYgKzQxNjEsOCBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9ucy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0lt
YWdlQnVmZmVyRmlsdGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0xpZ2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMThjODM5YzA1ZjYwNzIxNTcyNTE2NWFh
NGYxMjU0NzU3NGZkYzJlYy4uZTk0ZWNlNzYwMTA5ODIxMjFmZDIxYThiNTViZmJmMjhiMDZhNGQz
ZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTMyNzQxLDYgKzMyNzQxLDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUK
KwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xJbWFnZUJ1
ZmZlckZpbHRlci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xJbWFnZUJ1ZmZlckZp
bHRlci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcTGlnaHRTb3VyY2UuaCIKIAkJCQkJ
CT4KIAkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NjE0ZjA0MTMwYTYxOWQyZmU0YmQ5NTVhOTk5ZjdkNDdhMjkxNDFmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZp
bHRlci5jcHAKQEAgLTAsMCArMSwyODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIERpZ2lh
IFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGaWx0ZXIuaCIK
KworI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCisj
aW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5o
IgorI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCisjaW5jbHVkZSAiRkVNZXJnZS5oIgorI2lu
Y2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgor
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0
b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworICAg
IHBhcmFtZXRlcnMuYXBwZW5kKDApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbGFzdE1hdHJp
eFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMuYXBwZW5k
KDApOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDAp
OworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDEpOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwor
fQorCitJbWFnZUJ1ZmZlckZpbHRlcjo6SW1hZ2VCdWZmZXJGaWx0ZXIoKQorICAgIDogbV9ncmFw
aGljc0J1ZmZlckF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoZmFsc2UpCit7CisgICAgc2V0RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwor
ICAgIG1fc291cmNlR3JhcGhpYyA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKK30KKwor
SW1hZ2VCdWZmZXJGaWx0ZXI6On5JbWFnZUJ1ZmZlckZpbHRlcigpCit7Cit9CisKK0dyYXBoaWNz
Q29udGV4dCogSW1hZ2VCdWZmZXJGaWx0ZXI6OmlucHV0Q29udGV4dCgpCit7CisgICAgcmV0dXJu
IHNvdXJjZUltYWdlKCkgPyBzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiAwOworfQorCitQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gSW1hZ2VCdWZmZXJGaWx0ZXI6OmJ1aWxkRmlsdGVyRWZmZWN0
KEZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uKQoreworICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdDsKKworICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRp
b25UeXBlKCkpIHsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CisgICAg
ICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9u
ID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9w
ZXJhdGlvbik7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOworICAgICAg
ICBkb3VibGUgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlv
bi0+YW1vdW50KCksIDAuMCwgMS4wKTsKKworICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kdmNzLncz
Lm9yZy9oZy9GWFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjZ3JheXNjYWxlRXF1
aXZhbGVudAorICAgICAgICAvLyBmb3IgaW5mb3JtYXRpb24gb24gcGFyYW1ldGVycy4KKworICAg
ICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2
ICsgMC43ODc0ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFw
cGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1v
dW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9G
bG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBlbmRNYXRy
aXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5k
KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQp
KTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KDAuNzE1MiArIDAuMjg0OCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVN
aW51c0Ftb3VudCkpOworICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKwor
ICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4y
MTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVz
QW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9u
VG9GbG9hdCgwLjA3MjIgKyAwLjkyNzggKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBlbmRN
YXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKworICAgICAgICBsYXN0TWF0cml4Um93KGlucHV0
UGFyYW1ldGVycyk7CisKKyAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKHRo
aXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKKyAgICAg
ICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3Bl
cmF0aW9uKTsKKyAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7CisgICAgICAg
IGRvdWJsZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGNvbG9yTWF0cml4T3BlcmF0aW9u
LT5hbW91bnQoKSwgMC4wLCAxLjApOworCisgICAgICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMu
b3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2YWxl
bnQKKyAgICAgICAgLy8gZm9yIGluZm9ybWF0aW9uIG9uIHBhcmFtZXRlcnMuCisKKyAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzkzICsgMC42
MDcgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1pbnVzQW1vdW50KSk7Cisg
ICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjE4
OSAtIDAuMTg5ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5kTWF0cml4Um93KGlucHV0
UGFyYW1ldGVycyk7CisKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBp
bnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC42ODYgKyAwLjMx
NCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFy
cm93UHJlY2lzaW9uVG9GbG9hdCgwLjE2OCAtIDAuMTY4ICogb25lTWludXNBbW91bnQpKTsKKyAg
ICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7CisKKyAgICAgICAgaW5wdXRQYXJh
bWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjcyIC0gMC4yNzIgKiBvbmVN
aW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoMC41MzQgLSAwLjUzNCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlu
cHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5
ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVy
cyk7CisKKyAgICAgICAgbGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOworCisgICAgICAg
IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVf
TUFUUklYLCBpbnB1dFBhcmFtZXRlcnMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7CisgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIFZl
Y3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgp
KSk7CisgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9S
TUFUUklYX1RZUEVfU0FUVVJBVEUsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0
YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRp
b24pOworICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKKyAgICAgICAgaW5w
dXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4T3Bl
cmF0aW9uLT5hbW91bnQoKSkpOworICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVh
dGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgaW5wdXRQYXJhbWV0ZXJzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6
IHsKKyAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9u
ZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOworICAgICAgICB0cmFuc2ZlckZ1bmN0aW9u
LnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEU7CisgICAgICAgIFZlY3Rvcjxm
bG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFt
b3VudCgpKSk7CisgICAgICAgIHRyYW5zZmVyUGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lz
aW9uVG9GbG9hdCgxIC0gY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7Cisg
ICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7
CisKKyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAg
ICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1
bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24p
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJ
VFk6IHsKKyAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29t
cG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOworICAgICAgICB0cmFuc2ZlckZ1bmN0
aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEU7CisgICAgICAgIFZlY3Rv
cjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMu
YXBwZW5kKDApOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7CisgICAg
ICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7CisK
KyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAgICAg
IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCBudWxsRnVuY3Rpb24s
IG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7Cisg
ICAgICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRy
YW5zZmVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBl
ID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKKyAgICAgICAgdHJhbnNmZXJGdW5j
dGlvbi5zbG9wZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVy
YXRpb24tPmFtb3VudCgpKTsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAw
OworCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOworICAg
ICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNmZXJG
dW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9u
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05U
UkFTVDogeworICAgICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBj
b21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CisgICAgICAgIHRyYW5zZmVyRnVu
Y3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CisgICAgICAgIGZs
b2F0IGFtb3VudCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVy
YXRpb24tPmFtb3VudCgpKTsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9IGFtb3Vu
dDsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41ICogYW1vdW50ICsg
MC41OworCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwor
ICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNm
ZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpC
TFVSOiB7CisgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0
aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAg
ZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxlbmd0aChibHVyT3BlcmF0aW9uLT5z
dGREZXZpYXRpb24oKSwgMCk7CisgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVh
dGUodGhpcywgc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24pOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgIERy
b3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAg
ZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUodGhpcywKKyAgICAgICAgICAgIGRyb3BTaGFk
b3dPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5zdGREZXZp
YXRpb24oKSwKKyAgICAgICAgICAgIGRyb3BTaGFkb3dPcGVyYXRpb24tPngoKSwgZHJvcFNoYWRv
d09wZXJhdGlvbi0+eSgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5jb2xvcigpLCAxKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOworfQorCitib29sIEltYWdlQnVmZmVyRmlsdGVy
OjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zKQoreworICAgIG1faGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKTsKKyAgICBpZiAobV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMpCisgICAgICAgIG1fb3V0
c2V0cyA9IG9wZXJhdGlvbnMub3V0c2V0cygpOworICAgIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IHByZXZpb3VzRWZmZWN0ID0gbV9zb3VyY2VHcmFwaGljOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OworICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZp
bHRlck9wZXJhdGlvbiA9IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOworICAg
ICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9N
OgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTToKKyNlbmRp
ZgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgICAg
ICAvLyBDVVNUT00sIFZBTElEQVRFRF9DVVNUT00gYW5kIFJFRkVSRU5DRSBhcmUgb25seSBoYW5k
bGVkIGluIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZC4KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBlZmZlY3QgPSBidWlsZEZp
bHRlckVmZmVjdChmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoZWZmZWN0KSB7CisgICAgICAgICAgICAvLyBVbmxpa2UgU1ZHLCBm
aWx0ZXJzIGFwcGxpZWQgaGVyZSBzaG91bGQgbm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1
YnJlZ2lvbnMuCisgICAgICAgICAgICBlZmZlY3QtPnNldENsaXBzVG9Cb3VuZHMoZmFsc2UpOwor
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQocHJldmlv
dXNFZmZlY3QpOworICAgICAgICAgICAgbV9lZmZlY3RzLmFwcGVuZChlZmZlY3QpOworICAgICAg
ICAgICAgcHJldmlvdXNFZmZlY3QgPSBlZmZlY3QucmVsZWFzZSgpOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gSWYgd2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNhbGxl
ciB3ZSBhcmUgbm90IHZhbGlkCisgICAgaWYgKCFtX2VmZmVjdHMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdSZWdp
b24pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEltYWdlQnVmZmVyRmlsdGVyOjphbGxv
Y2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKK3sKKyAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBl
ZmZlY3QgY2hhaW4gaGFzIGJlZW4gYnVpbHQsIGFuZCB0aGUKKyAgICAvLyBzb3VyY2UgaW1hZ2Ug
c2l6ZXMgc2V0LiBXZSBqdXN0IG5lZWQgdG8gYXR0YWNoIHRoZSBncmFwaGljCisgICAgLy8gYnVm
ZmVyIGlmIHdlIGhhdmUgbm90IHlldCBkb25lIHNvLgorICAgIGlmICghbV9ncmFwaGljc0J1ZmZl
ckF0dGFjaGVkKSB7CisgICAgICAgIEludFNpemUgbG9naWNhbFNpemUobV9zb3VyY2VEcmF3aW5n
UmVnaW9uLndpZHRoKCksIG1fc291cmNlRHJhd2luZ1JlZ2lvbi5oZWlnaHQoKSk7CisgICAgICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKQorICAgICAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShsb2dpY2FsU2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSgpKSk7
CisgICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CisgICAgfQorfQorCit2
b2lkIEltYWdlQnVmZmVyRmlsdGVyOjphcHBseSgpCit7CisgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGVmZmVjdCk7CisgICAgZWZmZWN0LT5hcHBseSgpOworICAgIGVmZmVjdC0+dHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1
ZmZlckZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2YTA5ZDgwYjYyNDNiMWFlOGRjYmU1ZTU0MjJlNDYz
ZTA5ZTI5ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmgKQEAgLTAsMCArMSwxMTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBJbWFnZUJ1ZmZlckZpbHRlcl9oCisjZGVmaW5lIEltYWdlQnVmZmVyRmlsdGVyX2gK
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKworI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKKyNpbmNsdWRlICJM
YXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgorCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7CitjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CisKK2NsYXNzIEltYWdlQnVmZmVyRmlsdGVyIDogcHVibGljIEZpbHRlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VCdWZmZXJGaWx0ZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEltYWdlQnVmZmVyRmlsdGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRT
b3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCisgICAgeyAK
KyAgICAgICAgbV9zb3VyY2VEcmF3aW5nUmVnaW9uID0gc291cmNlSW1hZ2VSZWN0OworICAgICAg
ICBzZXRNYXhFZmZlY3RSZWN0cyhzb3VyY2VJbWFnZVJlY3QpOworICAgICAgICBzZXRGaWx0ZXJS
ZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVk
ID0gZmFsc2U7CisgICAgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhd2luZ1JlZ2lvbjsgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBtX2Zp
bHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRl
clJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9CisKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGlucHV0Q29udGV4dCgpOworICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25z
dCB7IHJldHVybiBsYXN0RWZmZWN0KCktPmFzSW1hZ2VCdWZmZXIoKTsgfQorCisgICAgYm9vbCBi
dWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKCk7CisgICAgdm9pZCBhcHBseSgpOworICAgIAorICAgIEludFJlY3Qgb3V0
cHV0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+aGFzUmVzdWx0KCkgPyBsYXN0
RWZmZWN0KCktPnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoSW50UmVjdChtX2ZpbHRl
clJlZ2lvbikpIDogSW50UmVjdCgpOyB9CisKKyAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1Bp
eGVscygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOyB9CisKK3By
b3RlY3RlZDoKKyAgICBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRGaWx0ZXJFZmZlY3Qo
RmlsdGVyT3BlcmF0aW9uKik7CisKKyAgICB2b2lkIHNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZs
b2F0UmVjdCYgZWZmZWN0UmVjdCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9lZmZlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBlZmZlY3QgPSBtX2VmZmVjdHMuYXQoaSk7CisgICAgICAgICAgICBlZmZlY3QtPnNldE1h
eEVmZmVjdFJlY3QoZWZmZWN0UmVjdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1f
ZWZmZWN0cy5zaXplKCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEltYWdlQnVmZmVyRmlsdGVyKCk7Cisg
ICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJGaWx0ZXIoKTsKKyAgICAKKyAgICBGbG9hdFJlY3QgbV9z
b3VyY2VEcmF3aW5nUmVnaW9uOworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKyAgICAK
KyAgICBGaWx0ZXJFZmZlY3RMaXN0IG1fZWZmZWN0czsKKyAgICBSZWZQdHI8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOworICAgIAorICAgIEludFJlY3RFeHRlbnQgbV9vdXRzZXRzOwor
CisgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQ7CisgICAgYm9vbCBtX2hhc0ZpbHRl
clRoYXRNb3Zlc1BpeGVsczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShDU1NfRklMVEVSUykKKworI2VuZGlmIC8vIEltYWdlQnVmZmVyRmlsdGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CmluZGV4IDJkZTkxYzRmYjFlNGNkODhkOTFmOGI2YTFjNTQ1MDU4Nzk1MzljYzEuLjMwMmJkNjE1
YzVlNDYyMzk4YTQyOGQ5YmQ2MjA3ZDJkNjM4N2Y3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMjksMTkgKzI5LDkgQEAK
IAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCiAKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGRUNvbG9yTWF0cml4Lmgi
Ci0jaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgotI2luY2x1ZGUgIkZFRHJvcFNoYWRv
dy5oIgotI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVkZSAiRkVNZXJnZS5oIgot
I2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQogI2lm
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQogI2luY2x1ZGUgIkN1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24u
aCIKQEAgLTYyLDIxICs1Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlu
bGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQotewotICAg
IHBhcmFtZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotfQotCi1z
dGF0aWMgaW5saW5lIHZvaWQgbGFzdE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJz
KQotewotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDAp
OwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDEpOwot
ICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotfQotCiBpbmxpbmUgYm9vbCBpc0ZpbHRlclNpemVW
YWxpZChGbG9hdFJlY3QgcmVjdCkKIHsKICAgICBpZiAocmVjdC53aWR0aCgpIDwgMCB8fCByZWN0
LndpZHRoKCkgPiBrTWF4RmlsdGVyU2l6ZQpAQCAtODUsOCArNjAsMTUgQEAgaW5saW5lIGJvb2wg
aXNGaWx0ZXJTaXplVmFsaWQoRmxvYXRSZWN0IHJlY3QpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K0ZpbHRlckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcigpCisjaWYgRU5BQkxF
KENTU19TSEFERVJTKQorICAgIDogbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXIoZmFsc2UpCisjZW5k
aWYKK3sKK30KKwogI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQot
c3RhdGljIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZUN1c3RvbUZpbHRlckVmZmVj
dChGaWx0ZXIqIGZpbHRlciwgRG9jdW1lbnQqIGRvY3VtZW50LCBWYWxpZGF0ZWRDdXN0b21GaWx0
ZXJPcGVyYXRpb24qIG9wZXJhdGlvbikKK1Bhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6YnVpbGRDdXN0b21GaWx0ZXJFZmZlY3QoRG9jdW1lbnQqIGRvY3VtZW50
LCBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbikKIHsKICAgICBpZiAo
IWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTk2LDMwICs3OCwxMSBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxGRUN1c3RvbUZpbHRlcj4gY3JlYXRlQ3VzdG9tRmlsdGVyRWZmZWN0KEZpbHRl
ciogZmlsdGVyLCBEb2N1bQogICAgIGlmICghZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKGZpbHRl
ciwgZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBvcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0o
KSwgb3BlcmF0aW9uLT5wYXJhbWV0ZXJzKCksCisgICAgcmV0dXJuIEZFQ3VzdG9tRmlsdGVyOjpj
cmVhdGUodGhpcywgZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBvcGVyYXRpb24tPnZhbGlkYXRl
ZFByb2dyYW0oKSwgb3BlcmF0aW9uLT5wYXJhbWV0ZXJzKCksCiAgICAgICAgIG9wZXJhdGlvbi0+
bWVzaFJvd3MoKSwgb3BlcmF0aW9uLT5tZXNoQ29sdW1ucygpLCAgb3BlcmF0aW9uLT5tZXNoVHlw
ZSgpKTsKIH0KICNlbmRpZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVu
ZGVyZXIoKQotICAgIDogbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKGZhbHNlKQotICAgICwgbV9o
YXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoZmFsc2UpCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQot
ICAgICwgbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXIoZmFsc2UpCi0jZW5kaWYKLXsKLSAgICBzZXRG
aWx0ZXJSZXNvbHV0aW9uKEZsb2F0U2l6ZSgxLCAxKSk7Ci0gICAgbV9zb3VyY2VHcmFwaGljID0g
U291cmNlR3JhcGhpYzo6Y3JlYXRlKHRoaXMpOwotfQotCi1GaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
fkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKLXsKLX0KLQotR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6aW5wdXRDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gc291cmNlSW1hZ2Uo
KSA/IHNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IDA7Ci19CiAKIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0
LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKIHsKQEAgLTIxMCwx
MzcgKzE3Myw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgICAgICByZWZlcmVu
Y2VPcGVyYXRpb24tPnNldEZpbHRlckVmZmVjdChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewot
ICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0
ZXJzOwotICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29s
b3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpLCAwLjAsIDEuMCk7Ci0KLSAgICAgICAgICAgIC8v
IFNlZSBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5k
ZXguaHRtbCNncmF5c2NhbGVFcXVpdmFsZW50Ci0gICAgICAgICAgICAvLyBmb3IgaW5mb3JtYXRp
b24gb24gcGFyYW1ldGVycy4KLQotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiArIDAuNzg3NCAqIG9uZU1pbnVzQW1vdW50KSk7
Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoMC43MTUyIC0gMC43MTUyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0
UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIg
KiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1l
dGVycyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lz
aW9uVG9GbG9hdCgwLjIxMjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAg
ICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAr
IDAuMjg0OCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMu
YXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4wNzIyIC0gMC4wNzIyICogb25lTWludXNB
bW91bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0g
ICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC4yMTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFy
YW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBv
bmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiArIDAuOTI3OCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0g
ICAgICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAg
bGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBlZmZlY3QgPSBG
RUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgaW5w
dXRQYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTogewotICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwotICAgICAgICAgICAgZG91YmxlIG9u
ZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgp
LCAwLjAsIDEuMCk7Ci0KLSAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMub3JnL2hn
L0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2YWxlbnQKLSAg
ICAgICAgICAgIC8vIGZvciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgotCi0gICAgICAgICAg
ICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4zOTMgKyAw
LjYwNyAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1pbnVzQW1vdW50
KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoMC4xODkgLSAwLjE4OSAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBlbmRN
YXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBvbmVNaW51c0Ft
b3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KDAuNjg2ICsgMC4zMTQgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMTY4IC0gMC4x
NjggKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFy
YW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjI3MiAtIDAuMjcyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAg
ICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjUzNCAt
IDAuNTM0ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5h
cHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5ICogb25lTWludXNBbW91
bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAg
ICAgICAgICBsYXN0TWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGVm
ZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFU
UklYLCBpbnB1dFBhcmFtZXRlcnMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7Ci0gICAgICAgICAgICBCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0YXRp
Y19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24p
OwotICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7Ci0gICAgICAgICAg
ICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRy
aXhPcGVyYXRpb24tPmFtb3VudCgpKSk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0
cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFLCBpbnB1dFBhcmFt
ZXRlcnMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKLSAgICAgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKLSAgICAgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlvbi0+
YW1vdW50KCkpKTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0
aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFLCBpbnB1dFBhcmFtZXRlcnMpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OklOVkVSVDogewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbiogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAg
ICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJM
RTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOwotICAgICAg
ICAgICAgdHJhbnNmZXJQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNv
bXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91bnQoKSkpOwotICAgICAgICAgICAgdHJhbnNm
ZXJQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDEgLSBjb21wb25lbnRU
cmFuc2Zlck9wZXJhdGlvbi0+YW1vdW50KCkpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rp
b24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7Ci0KLSAgICAgICAgICAgIENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0g
RkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5z
ZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lU
WTogewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiog
Y29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRy
YW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRTsKLSAg
ICAgICAgICAgIFZlY3RvcjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOwotICAgICAgICAgICAg
dHJhbnNmZXJQYXJhbWV0ZXJzLmFwcGVuZCgwKTsKLSAgICAgICAgICAgIHRyYW5zZmVyUGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJh
dGlvbi0+YW1vdW50KCkpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1
ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7Ci0KLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKHRoaXMsIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCBudWxsRnVu
Y3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6IHsKLSAgICAgICAgICAg
IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVy
T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5
cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgICAgICAgICAgdHJhbnNm
ZXJGdW5jdGlvbi5zbG9wZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNm
ZXJPcGVyYXRpb24tPmFtb3VudCgpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50
ZXJjZXB0ID0gMDsKLQotICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxs
RnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVh
dGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5j
dGlvbiwgbnVsbEZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogewotICAgICAgICAgICAgQmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRp
b24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
dHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZF
Q09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7Ci0gICAgICAgICAgICBmbG9hdCBhbW91bnQg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91
bnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnNsb3BlID0gYW1vdW50OwotICAg
ICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41ICogYW1vdW50ICsgMC41
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51
bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNy
ZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1
bmN0aW9uLCBudWxsRnVuY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIEJsdXJGaWx0
ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0
aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9
IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIDApOwot
ICAgICAgICAgICAgZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSh0aGlzLCBzdGREZXZp
YXRpb24sIHN0ZERldmlhdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIERy
b3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHRoaXMsIGRyb3BTaGFkb3dPcGVyYXRp
b24tPnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFk
b3dPcGVyYXRpb24tPngoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi0+eSgpLCBkcm9wU2hhZG93T3Bl
cmF0aW9uLT5jb2xvcigpLCAxKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjaWYg
RU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpDVVNUT006CiAgICAgICAgICAgICAvLyBDVVNUT00gb3BlcmF0aW9ucyBh
cmUgYWx3YXlzIGNvbnZlcnRlZCB0byBWQUxJREFURURfQ1VTVE9NIGJlZm9yZSBnZXR0aW5nIGhl
cmUuCkBAIC0zNTAsMTMgKzE4MiwxNCBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWls
ZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTTogewogICAgICAgICAgICAg
VmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBjdXN0b21GaWx0ZXJPcGVyYXRpb24gPSBz
dGF0aWNfY2FzdDxWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRp
b24pOwogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVuZGVyZXIgPyByZW5kZXJl
ci0+ZG9jdW1lbnQoKSA6IDA7Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVDdXN0b21GaWx0
ZXJFZmZlY3QodGhpcywgZG9jdW1lbnQsIGN1c3RvbUZpbHRlck9wZXJhdGlvbik7CisgICAgICAg
ICAgICBlZmZlY3QgPSBidWlsZEN1c3RvbUZpbHRlckVmZmVjdChkb2N1bWVudCwgY3VzdG9tRmls
dGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGlmIChlZmZlY3QpCiAgICAgICAgICAgICAgICAg
bV9oYXNDdXN0b21TaGFkZXJGaWx0ZXIgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZWZmZWN0ID0gYnVp
bGRGaWx0ZXJFZmZlY3QoZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKQEAgLTM3OCw3ICsyMTEsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpi
dWlsZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdp
bmdSZWdpb24pOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5NCwxOSArMjI3
LDYgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dXBkYXRlQmFja2luZ1N0b3JlUmVjdChj
b25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKLXsK
LSAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBlZmZlY3QgY2hhaW4gaGFzIGJlZW4gYnVpbHQsIGFu
ZCB0aGUKLSAgICAvLyBzb3VyY2UgaW1hZ2Ugc2l6ZXMgc2V0LiBXZSBqdXN0IG5lZWQgdG8gYXR0
YWNoIHRoZSBncmFwaGljCi0gICAgLy8gYnVmZmVyIGlmIHdlIGhhdmUgbm90IHlldCBkb25lIHNv
LgotICAgIGlmICghbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKSB7Ci0gICAgICAgIEludFNpemUg
bG9naWNhbFNpemUobV9zb3VyY2VEcmF3aW5nUmVnaW9uLndpZHRoKCksIG1fc291cmNlRHJhd2lu
Z1JlZ2lvbi5oZWlnaHQoKSk7Ci0gICAgICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJ
bWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKQotICAgICAgICAgICAgc2V0U291
cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgMSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgcmVuZGVyaW5nTW9kZSgpKSk7Ci0gICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRh
Y2hlZCA9IHRydWU7Ci0gICAgfQotfQotCiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjbGVh
ckludGVybWVkaWF0ZVJlc3VsdHMoKQogewogICAgIG1fc291cmNlR3JhcGhpYy0+Y2xlYXJSZXN1
bHQoKTsKQEAgLTQxNCwxMyArMjM0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y2xl
YXJJbnRlcm1lZGlhdGVSZXN1bHRzKCkKICAgICAgICAgbV9lZmZlY3RzW2ldLT5jbGVhclJlc3Vs
dCgpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjphcHBseSgpCi17Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGVmZmVjdC0+YXBw
bHkoKTsKLSAgICBlZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZURl
dmljZVJHQik7Ci19Ci0KIExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1dGVT
b3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVj
dCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQogewogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgK
aW5kZXggNTM1YTg3YWMwNDU3YzYxMjhiNzFhZDc0NjgxMmNkYWYxOTFmNWIxMy4uYzg3ODk3Yjk4
MmIzMDM4ZmFhOWMzMDI5NzQ3NDE5OTk2YTkyNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTI4LDMwICsyOCwyMyBAQAogCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgorI2luY2x1ZGUgIkltYWdl
QnVmZmVyRmlsdGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlckJ1aWxkZXIuaCIKLSNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCiAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gRmlsdGVyRWZmZWN0TGlzdDsKLWNsYXNzIENhY2hlZFNoYWRl
cjsKLWNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW07CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIFJlbmRlckxheWVyOwogY2xhc3MgUmVuZGVyT2JqZWN0Owor
Y2xhc3MgVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOwogCiBjbGFzcyBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckhlbHBlciB7CiBwdWJsaWM6CkBAIC03OCw3ICs3MSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2hhdmVGaWx0ZXJFZmZlY3Q7CiB9OwogCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5k
ZXJlciA6IHB1YmxpYyBGaWx0ZXIKK2NsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyIDogcHVibGlj
IEltYWdlQnVmZmVyRmlsdGVyCiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC04Nyw2NCArODAsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZpbHRlckVmZmVjdFJlbmRlcmVyKCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCi0gICAg
eyAKLSAgICAgICAgbV9zb3VyY2VEcmF3aW5nUmVnaW9uID0gc291cmNlSW1hZ2VSZWN0OwotICAg
ICAgICBzZXRNYXhFZmZlY3RSZWN0cyhzb3VyY2VJbWFnZVJlY3QpOwotICAgICAgICBzZXRGaWx0
ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKLSAgICAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFj
aGVkID0gZmFsc2U7Ci0gICAgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhd2luZ1JlZ2lvbjsgfQotCi0gICAgdmlydHVh
bCB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBt
X2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZp
bHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0KLSAgICBHcmFw
aGljc0NvbnRleHQqIGlucHV0Q29udGV4dCgpOwotICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBj
b25zdCB7IHJldHVybiBsYXN0RWZmZWN0KCktPmFzSW1hZ2VCdWZmZXIoKTsgfQotCiAgICAgYm9v
bCBidWlsZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7
CiAgICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVj
dCwgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKik7CisgICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkQ3VzdG9tRmlsdGVyRWZmZWN0KERvY3VtZW50KiwgVmFsaWRhdGVkQ3VzdG9tRmls
dGVyT3BlcmF0aW9uKik7CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVjdCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKCk7CiAgICAgdm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICB2b2lkIGFw
cGx5KCk7Ci0gICAgCi0gICAgSW50UmVjdCBvdXRwdXRSZWN0KCkgY29uc3QgeyByZXR1cm4gbGFz
dEVmZmVjdCgpLT5oYXNSZXN1bHQoKSA/IGxhc3RFZmZlY3QoKS0+cmVxdWVzdGVkUmVnaW9uT2ZJ
bnB1dEltYWdlRGF0YShJbnRSZWN0KG1fZmlsdGVyUmVnaW9uKSkgOiBJbnRSZWN0KCk7IH0KIAot
ICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNG
aWx0ZXJUaGF0TW92ZXNQaXhlbHM7IH0KICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3VyY2VJbWFn
ZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3Qg
TGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBi
b29sIGhhc0N1c3RvbVNoYWRlckZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3VzdG9tU2hh
ZGVyRmlsdGVyOyB9CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0
cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCi0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZWZmZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gbV9lZmZlY3RzLmF0KGkpOwotICAgICAgICAgICAgZWZm
ZWN0LT5zZXRNYXhFZmZlY3RSZWN0KGVmZmVjdFJlY3QpOwotICAgICAgICB9Ci0gICAgfQotICAg
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChtX2VmZmVjdHMuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBtX2VmZmVj
dHMubGFzdCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBGaWx0ZXJFZmZlY3RS
ZW5kZXJlcigpOwotICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdFJlbmRlcmVyKCk7Ci0gICAgCi0g
ICAgRmxvYXRSZWN0IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0
ZXJSZWdpb247Ci0gICAgCi0gICAgRmlsdGVyRWZmZWN0TGlzdCBtX2VmZmVjdHM7Ci0gICAgUmVm
UHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsKLSAgICAKLSAgICBJbnRSZWN0RXh0
ZW50IG1fb3V0c2V0czsKIAotICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkOwotICAg
IGJvb2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHM7CiAjaWYgRU5BQkxFKENTU19TSEFERVJT
KQogICAgIGJvb2wgbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXI7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194848</attachid>
            <date>2013-03-25 07:17:32 -0700</date>
            <delta_ts>2013-03-28 06:37:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113186-20130325151316.patch</filename>
            <type>text/plain</type>
            <size>47017</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThmNzY3MTNiNzc1ZDhj
NzBmMTE5OTM0YzdiN2QyYTc1MTVmYzJmYy4uNGI1ODI5MjAxZTkxMDhmYjY1YmY3MThkNTllY2Qx
Nzc2ZTU2ZjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTI1ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNw
bGl0IEZpbHRlckVmZmVjdFJlbmRlcmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTMxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTcGxpdCBGaWx0ZXJFZmZlY3RSZW5kZXJlciBpbiBhIHNpbXBsZSBm
aWx0ZXIgZ3JhcGhpY3MgcGFydCBhbmQgbGVhdmUgb25seQorICAgICAgICB0aGUgcGFydHMgcmVx
dWlyaW5nIGFjY2VzcyB0byB0aGUgRE9NIG9yIFJlbmRlciB0cmVlIGluIEZpbHRlckVmZmVjdFJl
bmRlcmVyLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBzb2Z0d2FyZSBmYWxsYmFjayBmb3Ig
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdG8gcmV1c2UgdGhlIGNsYXNzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmRN
YXRyaXhSb3cpOgorICAgICAgICAoV2ViQ29yZTo6bGFzdE1hdHJpeFJvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6SW1hZ2VCdWZmZXJGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6On5JbWFnZUJ1ZmZlckZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6aW5wdXRDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpidWlsZEZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oLgorICAgICAgICAoSW1hZ2VC
dWZmZXJGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpzb3VyY2VJbWFnZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OnNldEZpbHRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6ZmlsdGVyUmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpvdXRwdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Om91dHB1dFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omxhc3RFZmZlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdFJlbmRlcmVyKToKKwog
MjAxMy0wMy0yMiAgTm8nYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFsbG93IGRpcmVjdCBjb21wb3NpdGluZyBvZiBiYWNrZ3JvdW5kIGltYWdlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCAxOTIwMjg1ZTJiNDEyOTM5YTRiMGRiMjhmODZjODIxYTViMTJmNDg5Li5m
MWFhMjE0YjhjMTdmZTYxNDBlYzczMjBlYzVhMDYzOGMxOGFmYzVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTk5Niw2ICsxOTk2LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ltYWdlQnVmZmVyRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9p
bnRMaWdodFNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcyZTVlYjNhMDEwNWQxMTU4NjVkMzAy
ODA5NDVhZTEyYzI0ODJmMzMuLjAwOWQ2OWExNTdmYmJhNjljYTdlYTBlMzY2M2ZhY2IzNzhlMTQx
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTYwMyw2ICs1NjAzLDggQEAg
d2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVy
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1
ZmZlckZpbHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0xpZ2h0U291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvUG9pbnRMaWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDlmMWMxNDg2
MmJlYWRkOTM2NWUyM2E4ODIzMmRiM2JjZGM0MGExMjIuLjVmYmI3OGU2MTQyNmRjYTBkN2Q3YTA5
OTI2NDhjMTkzMDRkZDBmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjIzOSw2ICsyMjM5LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmggXAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuaCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oIFwKQEAgLTM2ODksNiArMzY5MCw3IEBAIGVuYWJsZT8oRklMVEVSUykgewog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIFwKKyAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAgXAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDhiYjY0ZDM0MWM3ZDQ4MzhhNDU5ZTgxN2NlZmMyN2YyYzM0YWUzNzIu
LjM4NzM2M2FmNzg2NDI5NWRmNWZiNmRhYjE1NjE0MTgzZjNjOGIwOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTQxNjEsNiArNDE2MSw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAx
OGM4MzljMDVmNjA3MjE1NzI1MTY1YWE0ZjEyNTQ3NTc0ZmRjMmVjLi5lOTRlY2U3NjAxMDk4MjEy
MWZkMjFhOGI1NWJmYmYyOGIwNmE0ZDNkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzI3NDEsNiArMzI3NDEsMTQgQEAKIAkJCQkJCT4KIAkJ
CQkJPC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xmaWx0ZXJzXEltYWdlQnVmZmVyRmlsdGVyLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXEltYWdlQnVmZmVyRmlsdGVyLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJ
CQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVy
c1xMaWdodFNvdXJjZS5oIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2QxMzQ2MmI4ZWVh
MjNiMzhhZmMwNDk4MjhjYTk2Y2E2NjRlZTgyOC4uN2RiZjBkNjMyOWEyNDk2ZWZmYjg2MzhmMTY5
ODZhM2QzOWFhYmYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzU3OCw4ICszNTc4LDggQEAKIAkJOTczRjQxOEIxNjlCOTYw
MzAwMDZCRjYwIC8qIEhUTUxQYXJzZXJPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3M0Y0MTg3MTY5Qjk1RUYwMDA2QkY2MCAvKiBIVE1M
UGFyc2VyT3B0aW9ucy5jcHAgKi87IH07CiAJCTk3NDE4N0QzMTZBNzkzMjcwMEZBNzdBNyAvKiBI
VE1MUGFyc2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3NDE4N0QwMTZBNzkzMjIwMEZBNzdBNyAvKiBIVE1MUGFyc2VyVGhyZWFkLmNw
cCAqLzsgfTsKIAkJOTc0MTg3RDQxNkE3OTMyOTAwRkE3N0E3IC8qIEhUTUxQYXJzZXJUaHJlYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDE4N0Qx
MTZBNzkzMjIwMEZBNzdBNyAvKiBIVE1MUGFyc2VyVGhyZWFkLmggKi87IH07Ci0JCTk3NDZBRjIx
MTRGNERERTYwMDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzIgLyogQ29v
cmRpbmF0ZXMuY3BwICovOyB9OwogCQk5NzQ2QUYyMTE0RjREREU2MDAzRTdBNzEgLyogQ29vcmRp
bmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
NDZBRjExMTRGNERERTYwMDNFN0E3MCAvKiBDb29yZGluYXRlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk3NDZBRjIxMTRGNERERTYwMDNFN0E3
MiAvKiBDb29yZGluYXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzIgLyogQ29vcmRpbmF0ZXMuY3BwICov
OyB9OwogCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0NkFGMTMxNEY0RERF
NjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCAqLzsgfTsKIAkJOTc0NkFGMjQxNEY0RERFNjAw
M0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzQ2QUYxNDE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzQ2QUYy
NTE0RjREREU2MDAzRTdBNzEgLyogR2VvbG9jYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjE1MTRGNERERTYwMDNFN0E3MSAv
KiBHZW9sb2NhdGlvbkNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMTA5Nyw4ICsxMTA5Nyw4IEBACiAJCTk3M0Y0MTg4MTY5Qjk1RUYw
MDA2QkY2MCAvKiBIVE1MUGFyc2VyT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBIVE1MUGFyc2VyT3B0aW9ucy5oOyBwYXRoID0gcGFyc2VyL0hUTUxQYXJzZXJPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDE4N0QwMTZBNzkzMjIwMEZB
NzdBNyAvKiBIVE1MUGFyc2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEhUTUxQYXJzZXJUaHJlYWQuY3BwOyBwYXRoID0gcGFyc2VyL0hUTUxQYXJzZXJU
aHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzQxODdEMTE2QTc5MzIy
MDBGQTc3QTcgLyogSFRNTFBhcnNlclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBIVE1MUGFyc2VyVGhyZWFkLmg7IHBhdGggPSBwYXJzZXIvSFRNTFBhcnNlclRocmVh
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzQ2QUYxMTE0RjREREU2MDAzRTdB
NzIgLyogQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ29vcmRpbmF0ZXMuY3BwOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjExMTRGNERERTYwMDNF
N0E3MCAvKiBDb29yZGluYXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
b29yZGluYXRlcy5oOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzIgLyog
Q29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29v
cmRpbmF0ZXMuY3BwOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjEyMTRGNERERTYwMDNFN0E3MCAv
KiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ29vcmRpbmF0ZXMuaWRs
OyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjEzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHZW9sb2NhdGlvbi5j
cHA7IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc0NkFGMTQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdlb2xvY2F0aW9uLmg7IHBh
dGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzY4Niw2ICsxMzY4Niw4IEBACiAJCUM2RjQyMEExMTZCNzE2NEUwMDUy
QTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNdXRhdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxB
bmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQUM2RTRCNDE3MDA5MUUxMDBCNTUz
MUMgLyogSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwOyBwYXRoID0gZmlsdGVycy9JbWFnZUJ1ZmZl
ckZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBQzZFNEI1MTcwMDkx
RTEwMEI1NTMxQyAvKiBJbWFnZUJ1ZmZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJbWFnZUJ1ZmZlckZpbHRlci5oOyBwYXRoID0gZmlsdGVycy9JbWFnZUJ1ZmZl
ckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUU5RjkwRDE0NjQ0MUYw
MDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlv
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQXNwZWN0UmF0aW9W
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUU5RjkwRTE0NjQ0MUYwMDBD
MjQ1QjEgLyogQ1NTVmFyaWFibGVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NWYXJpYWJsZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODk5NCw2ICsxODk5Niw4IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDQUM2RTRC
NDE3MDA5MUUxMDBCNTUzMUMgLyogSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwICovLAorCQkJCUNBQzZF
NEI1MTcwMDkxRTEwMEI1NTMxQyAvKiBJbWFnZUJ1ZmZlckZpbHRlci5oICovLAogCQkJCTE1QjNG
QzE3MTVGQjIxNzgwMEE4MUJDQiAvKiBDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlci5oICovLAog
CQkJCTUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0uY3BwICovLAogCQkJCTUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW0uaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjYxNGYwNDEzMGE2MTlkMmZlNGJkOTU1YTk5OWY3ZDQ3YTI5MTQxZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZm
ZXJGaWx0ZXIuY3BwCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBE
aWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyRmlsdGVy
LmgiCisKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5o
IgorI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbmNsdWRlICJGRURyb3BTaGFk
b3cuaCIKKyNpbmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgorI2luY2x1ZGUgIkZFTWVyZ2UuaCIK
KyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMu
aCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmRNYXRyaXhSb3co
VmVjdG9yPGZsb2F0PiYgcGFyYW1ldGVycykKK3sKKyAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsK
KyAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGxhc3RN
YXRyaXhSb3coVmVjdG9yPGZsb2F0PiYgcGFyYW1ldGVycykKK3sKKyAgICBwYXJhbWV0ZXJzLmFw
cGVuZCgwKTsKKyAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKKyAgICBwYXJhbWV0ZXJzLmFwcGVu
ZCgwKTsKKyAgICBwYXJhbWV0ZXJzLmFwcGVuZCgxKTsKKyAgICBwYXJhbWV0ZXJzLmFwcGVuZCgw
KTsKK30KKworSW1hZ2VCdWZmZXJGaWx0ZXI6OkltYWdlQnVmZmVyRmlsdGVyKCkKKyAgICA6IG1f
Z3JhcGhpY3NCdWZmZXJBdHRhY2hlZChmYWxzZSkKKyAgICAsIG1faGFzRmlsdGVyVGhhdE1vdmVz
UGl4ZWxzKGZhbHNlKQoreworICAgIHNldEZpbHRlclJlc29sdXRpb24oRmxvYXRTaXplKDEsIDEp
KTsKKyAgICBtX3NvdXJjZUdyYXBoaWMgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUodGhpcyk7Cit9
CisKK0ltYWdlQnVmZmVyRmlsdGVyOjp+SW1hZ2VCdWZmZXJGaWx0ZXIoKQoreworfQorCitHcmFw
aGljc0NvbnRleHQqIEltYWdlQnVmZmVyRmlsdGVyOjppbnB1dENvbnRleHQoKQoreworICAgIHJl
dHVybiBzb3VyY2VJbWFnZSgpID8gc291cmNlSW1hZ2UoKS0+Y29udGV4dCgpIDogMDsKK30KKwor
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IEltYWdlQnVmZmVyRmlsdGVyOjpidWlsZEZpbHRlckVm
ZmVjdChGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKK3sKKyAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3Q7CisKKyAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3Bl
cmF0aW9uVHlwZSgpKSB7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewor
ICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJh
dGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0
ZXJPcGVyYXRpb24pOworICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKKyAg
ICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVy
YXRpb24tPmFtb3VudCgpLCAwLjAsIDEuMCk7CisKKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vZHZj
cy53My5vcmcvaGcvRlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5odG1sI2dyYXlzY2Fs
ZUVxdWl2YWxlbnQKKyAgICAgICAgLy8gZm9yIGluZm9ybWF0aW9uIG9uIHBhcmFtZXRlcnMuCisK
KyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAu
MjEyNiArIDAuNzg3NCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVy
cy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVNaW51
c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQoMC4wNzIyIC0gMC4wNzIyICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5k
TWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7CisKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFw
cGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiAtIDAuMjEyNiAqIG9uZU1pbnVzQW1v
dW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9G
bG9hdCgwLjcxNTIgKyAwLjI4NDggKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBh
cmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4wNzIyIC0gMC4wNzIyICog
b25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7
CisKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KDAuMjEyNiAtIDAuMjEyNiAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVN
aW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoMC4wNzIyICsgMC45Mjc4ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAg
ZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7CisKKyAgICAgICAgbGFzdE1hdHJpeFJvdyhp
bnB1dFBhcmFtZXRlcnMpOworCisgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0
ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBpbnB1dFBhcmFtZXRlcnMpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7Cisg
ICAgICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0
aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRl
ck9wZXJhdGlvbik7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOworICAg
ICAgICBkb3VibGUgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJh
dGlvbi0+YW1vdW50KCksIDAuMCwgMS4wKTsKKworICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy9GWFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjc2VwaWFFcXVp
dmFsZW50CisgICAgICAgIC8vIGZvciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgorCisgICAg
ICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjM5MyAr
IDAuNjA3ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVu
ZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzY5IC0gMC43NjkgKiBvbmVNaW51c0Ftb3VudCkp
OworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC4xODkgLSAwLjE4OSAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGVuZE1hdHJpeFJvdyhp
bnB1dFBhcmFtZXRlcnMpOworCisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93
UHJlY2lzaW9uVG9GbG9hdCgwLjM0OSAtIDAuMzQ5ICogb25lTWludXNBbW91bnQpKTsKKyAgICAg
ICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNjg2ICsg
MC4zMTQgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5k
KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xNjggLSAwLjE2OCAqIG9uZU1pbnVzQW1vdW50KSk7
CisgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOworCisgICAgICAgIGlucHV0
UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjI3MiAtIDAuMjcyICog
b25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KDAuNTM0IC0gMC41MzQgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAg
ICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xMzEgKyAw
Ljg2OSAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFt
ZXRlcnMpOworCisgICAgICAgIGxhc3RNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKworICAg
ICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9U
WVBFX01BVFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogeworICAgICAgICBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAg
ICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4T3BlcmF0aW9uLT5hbW91
bnQoKSkpOworICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVD
T0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFLCBpbnB1dFBhcmFtZXRlcnMpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAg
ICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3Bl
cmF0aW9uKTsKKyAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7CisgICAgICAg
IGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJp
eE9wZXJhdGlvbi0+YW1vdW50KCkpKTsKKyAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6
Y3JlYXRlKHRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUsIGlucHV0UGFyYW1ldGVy
cyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5W
RVJUOiB7CisgICAgICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNv
bXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIENvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKKyAgICAgICAgdHJhbnNmZXJGdW5j
dGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFOworICAgICAgICBWZWN0
b3I8ZmxvYXQ+IHRyYW5zZmVyUGFyYW1ldGVyczsKKyAgICAgICAgdHJhbnNmZXJQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9u
LT5hbW91bnQoKSkpOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoMSAtIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91bnQoKSkp
OworICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnRhYmxlVmFsdWVzID0gdHJhbnNmZXJQYXJhbWV0
ZXJzOworCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwor
ICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNm
ZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpP
UEFDSVRZOiB7CisgICAgICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24q
IGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKKyAgICAgICAgdHJhbnNmZXJG
dW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFOworICAgICAgICBW
ZWN0b3I8ZmxvYXQ+IHRyYW5zZmVyUGFyYW1ldGVyczsKKyAgICAgICAgdHJhbnNmZXJQYXJhbWV0
ZXJzLmFwcGVuZCgwKTsKKyAgICAgICAgdHJhbnNmZXJQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91bnQoKSkpOwor
ICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnRhYmxlVmFsdWVzID0gdHJhbnNmZXJQYXJhbWV0ZXJz
OworCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOworICAg
ICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgbnVsbEZ1bmN0
aW9uLCBudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzog
eworICAgICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBjb21wb25l
bnRUcmFuc2Zlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CisgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24u
dHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CisgICAgICAgIHRyYW5zZmVy
RnVuY3Rpb24uc2xvcGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVy
T3BlcmF0aW9uLT5hbW91bnQoKSk7CisgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0
ID0gMDsKKworICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsK
KyAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHRoaXMsIHRyYW5z
ZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5j
dGlvbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
Q09OVFJBU1Q6IHsKKyAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
biogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOworICAgICAgICB0cmFuc2Zl
ckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOworICAgICAg
ICBmbG9hdCBhbW91bnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVy
T3BlcmF0aW9uLT5hbW91bnQoKSk7CisgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uc2xvcGUgPSBh
bW91bnQ7CisgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0gLTAuNSAqIGFtb3Vu
dCArIDAuNTsKKworICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlv
bjsKKyAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHRoaXMsIHRy
YW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxG
dW5jdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6QkxVUjogeworICAgICAgICBCbHVyRmlsdGVyT3BlcmF0aW9uKiBibHVyT3BlcmF0aW9uID0g
c3RhdGljX2Nhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAg
ICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlv
bi0+c3RkRGV2aWF0aW9uKCksIDApOworICAgICAgICBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6
Y3JlYXRlKHRoaXMsIHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworICAgICAg
ICBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBkcm9wU2hhZG93T3BlcmF0aW9uID0gc3RhdGlj
X2Nhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAg
ICAgIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHRoaXMsCisgICAgICAgICAgICBkcm9w
U2hhZG93T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSwgZHJvcFNoYWRvd09wZXJhdGlvbi0+c3Rk
RGV2aWF0aW9uKCksCisgICAgICAgICAgICBkcm9wU2hhZG93T3BlcmF0aW9uLT54KCksIGRyb3BT
aGFkb3dPcGVyYXRpb24tPnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi0+Y29sb3IoKSwgMSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKK30KKworYm9vbCBJbWFnZUJ1ZmZlckZp
bHRlcjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykKK3sKKyAgICBt
X2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdE1vdmVz
UGl4ZWxzKCk7CisgICAgaWYgKG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKQorICAgICAgICBt
X291dHNldHMgPSBvcGVyYXRpb25zLm91dHNldHMoKTsKKyAgICAKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBwcmV2aW91c0VmZmVjdCA9IG1fc291cmNlR3JhcGhpYzsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9u
KiBmaWx0ZXJPcGVyYXRpb24gPSBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hdChpKS5nZXQoKTsK
KyAgICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgewor
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNV
U1RPTToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlZBTElEQVRFRF9DVVNUT006Cisj
ZW5kaWYKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRTogeworICAgICAg
ICAgICAgLy8gQ1VTVE9NLCBWQUxJREFURURfQ1VTVE9NIGFuZCBSRUZFUkVOQ0UgYXJlIG9ubHkg
aGFuZGxlZCBpbiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQuCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZWZmZWN0ID0gYnVp
bGRGaWx0ZXJFZmZlY3QoZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGVmZmVjdCkgeworICAgICAgICAgICAgLy8gVW5saWtlIFNW
RywgZmlsdGVycyBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBjbGlwIHRvIHRoZWlyIHByaW1pdGl2
ZSBzdWJyZWdpb25zLgorICAgICAgICAgICAgZWZmZWN0LT5zZXRDbGlwc1RvQm91bmRzKGZhbHNl
KTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKHBy
ZXZpb3VzRWZmZWN0KTsKKyAgICAgICAgICAgIG1fZWZmZWN0cy5hcHBlbmQoZWZmZWN0KTsKKyAg
ICAgICAgICAgIHByZXZpb3VzRWZmZWN0ID0gZWZmZWN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIElmIHdlIGRpZG4ndCBtYWtlIGFueSBlZmZlY3RzLCB0ZWxsIG91ciBj
YWxsZXIgd2UgYXJlIG5vdCB2YWxpZAorICAgIGlmICghbV9lZmZlY3RzLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgc2V0TWF4RWZmZWN0UmVjdHMobV9zb3VyY2VEcmF3aW5n
UmVnaW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckZpbHRlcjo6
YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCit7CisgICAgLy8gQXQgdGhpcyBwb2ludCB0
aGUgZWZmZWN0IGNoYWluIGhhcyBiZWVuIGJ1aWx0LCBhbmQgdGhlCisgICAgLy8gc291cmNlIGlt
YWdlIHNpemVzIHNldC4gV2UganVzdCBuZWVkIHRvIGF0dGFjaCB0aGUgZ3JhcGhpYworICAgIC8v
IGJ1ZmZlciBpZiB3ZSBoYXZlIG5vdCB5ZXQgZG9uZSBzby4KKyAgICBpZiAoIW1fZ3JhcGhpY3NC
dWZmZXJBdHRhY2hlZCkgeworICAgICAgICBJbnRTaXplIGxvZ2ljYWxTaXplKG1fc291cmNlRHJh
d2luZ1JlZ2lvbi53aWR0aCgpLCBtX3NvdXJjZURyYXdpbmdSZWdpb24uaGVpZ2h0KCkpOworICAg
ICAgICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAh
PSBsb2dpY2FsU2l6ZSkKKyAgICAgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlbmRlcmluZ01vZGUo
KSkpOworICAgICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOworICAgIH0KK30K
Kwordm9pZCBJbWFnZUJ1ZmZlckZpbHRlcjo6YXBwbHkoKQoreworICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IGxhc3RFZmZlY3QoKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihlZmZlY3QpOworICAgIGVmZmVjdC0+YXBwbHkoKTsKKyAgICBlZmZlY3QtPnRy
YW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZm
ZXJGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1h
Z2VCdWZmZXJGaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmEwOWQ4MGI2MjQzYjFhZThkY2JlNWU1NDIy
ZTQ2M2UwOWUyOWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oCkBAIC0wLDAgKzEsMTE4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgSW1hZ2VCdWZmZXJGaWx0ZXJfaAorI2RlZmluZSBJbWFnZUJ1ZmZlckZpbHRl
cl9oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCisj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCisjaW5jbHVk
ZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKKworI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8
UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RMaXN0OworY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworCitjbGFzcyBJbWFnZUJ1ZmZlckZpbHRlciA6IHB1YmxpYyBGaWx0ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlQnVmZmVyRmlsdGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbWFnZUJ1ZmZlckZpbHRlcigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQorICAg
IHsgCisgICAgICAgIG1fc291cmNlRHJhd2luZ1JlZ2lvbiA9IHNvdXJjZUltYWdlUmVjdDsKKyAg
ICAgICAgc2V0TWF4RWZmZWN0UmVjdHMoc291cmNlSW1hZ2VSZWN0KTsKKyAgICAgICAgc2V0Rmls
dGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7CisgICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRh
Y2hlZCA9IGZhbHNlOworICAgIH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KKworICAgIHZpcnR1
YWwgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsg
bV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBm
aWx0ZXJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQorCisgICAgR3Jh
cGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkg
Y29uc3QgeyByZXR1cm4gbGFzdEVmZmVjdCgpLT5hc0ltYWdlQnVmZmVyKCk7IH0KKworICAgIGJv
b2wgYnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworICAgIHZvaWQgYWxsb2NhdGVCYWNr
aW5nU3RvcmVJZk5lZWRlZCgpOworICAgIHZvaWQgYXBwbHkoKTsKKyAgICAKKyAgICBJbnRSZWN0
IG91dHB1dFJlY3QoKSBjb25zdCB7IHJldHVybiBsYXN0RWZmZWN0KCktPmhhc1Jlc3VsdCgpID8g
bGFzdEVmZmVjdCgpLT5yZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKEludFJlY3QobV9m
aWx0ZXJSZWdpb24pKSA6IEludFJlY3QoKTsgfQorCisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0TW92
ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVsczsgfQor
Citwcm90ZWN0ZWQ6CisgICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkRmlsdGVyRWZm
ZWN0KEZpbHRlck9wZXJhdGlvbiopOworCisgICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0cyhjb25z
dCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZWZmZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gbV9lZmZlY3RzLmF0KGkpOworICAgICAgICAgICAgZWZmZWN0LT5z
ZXRNYXhFZmZlY3RSZWN0KGVmZmVjdFJlY3QpOworICAgICAgICB9CisgICAgfQorICAgIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChtX2VmZmVjdHMuc2l6ZSgpID4gMCkKKyAgICAgICAgICAgIHJldHVybiBtX2VmZmVjdHMubGFz
dCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBJbWFnZUJ1ZmZlckZpbHRlcigp
OworICAgIHZpcnR1YWwgfkltYWdlQnVmZmVyRmlsdGVyKCk7CisgICAgCisgICAgRmxvYXRSZWN0
IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKKyAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Cisg
ICAgCisgICAgRmlsdGVyRWZmZWN0TGlzdCBtX2VmZmVjdHM7CisgICAgUmVmUHRyPFNvdXJjZUdy
YXBoaWM+IG1fc291cmNlR3JhcGhpYzsKKyAgICAKKyAgICBJbnRSZWN0RXh0ZW50IG1fb3V0c2V0
czsKKworICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkOworICAgIGJvb2wgbV9oYXNG
aWx0ZXJUaGF0TW92ZXNQaXhlbHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBJbWFnZUJ1ZmZlckZpbHRl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAppbmRleCAyZGU5MWM0ZmIxZTRjZDg4ZDkxZjhiNmExYzU0NTA1ODc5NTM5Y2MxLi4zMDJi
ZDYxNWM1ZTQ2MjM5OGE0MjhkOWJkNjIwN2QyZDYzODdmNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTI5LDE5ICsyOSw5
IEBACiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgogCi0jaW5jbHVkZSAiQ29s
b3JTcGFjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRkVDb2xvck1hdHJp
eC5oIgotI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKLSNpbmNsdWRlICJGRURyb3BT
aGFkb3cuaCIKLSNpbmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgotI2luY2x1ZGUgIkZFTWVyZ2Uu
aCIKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0K
ICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKICNpbmNsdWRlICJD
dXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmgiCkBAIC02MiwyMSArNTIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBlbmRNYXRyaXhSb3coVmVjdG9yPGZsb2F0PiYgcGFyYW1ldGVycykKLXsK
LSAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKLX0K
LQotc3RhdGljIGlubGluZSB2b2lkIGxhc3RNYXRyaXhSb3coVmVjdG9yPGZsb2F0PiYgcGFyYW1l
dGVycykKLXsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVu
ZCgwKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZCgx
KTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKLX0KLQogaW5saW5lIGJvb2wgaXNGaWx0ZXJT
aXplVmFsaWQoRmxvYXRSZWN0IHJlY3QpCiB7CiAgICAgaWYgKHJlY3Qud2lkdGgoKSA8IDAgfHwg
cmVjdC53aWR0aCgpID4ga01heEZpbHRlclNpemUKQEAgLTg1LDggKzYwLDE1IEBAIGlubGluZSBi
b29sIGlzRmlsdGVyU2l6ZVZhbGlkKEZsb2F0UmVjdCByZWN0KQogICAgIHJldHVybiB0cnVlOwog
fQogCitGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQorI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyAgICA6IG1faGFzQ3VzdG9tU2hhZGVyRmlsdGVyKGZhbHNlKQor
I2VuZGlmCit7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElD
UykKLXN0YXRpYyBQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBjcmVhdGVDdXN0b21GaWx0ZXJF
ZmZlY3QoRmlsdGVyKiBmaWx0ZXIsIERvY3VtZW50KiBkb2N1bWVudCwgVmFsaWRhdGVkQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKiBvcGVyYXRpb24pCitQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gRmls
dGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkQ3VzdG9tRmlsdGVyRWZmZWN0KERvY3VtZW50KiBkb2N1
bWVudCwgVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBvcGVyYXRpb24pCiB7CiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC05NiwzMCArNzgsMTEgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZUN1c3RvbUZpbHRlckVmZmVjdChG
aWx0ZXIqIGZpbHRlciwgRG9jdW0KICAgICBpZiAoIWdsb2JhbENvbnRleHQtPmNvbnRleHQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gRkVDdXN0b21GaWx0ZXI6OmNyZWF0ZShm
aWx0ZXIsIGdsb2JhbENvbnRleHQtPmNvbnRleHQoKSwgb3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9n
cmFtKCksIG9wZXJhdGlvbi0+cGFyYW1ldGVycygpLAorICAgIHJldHVybiBGRUN1c3RvbUZpbHRl
cjo6Y3JlYXRlKHRoaXMsIGdsb2JhbENvbnRleHQtPmNvbnRleHQoKSwgb3BlcmF0aW9uLT52YWxp
ZGF0ZWRQcm9ncmFtKCksIG9wZXJhdGlvbi0+cGFyYW1ldGVycygpLAogICAgICAgICBvcGVyYXRp
b24tPm1lc2hSb3dzKCksIG9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSwgIG9wZXJhdGlvbi0+bWVz
aFR5cGUoKSk7CiB9CiAjZW5kaWYKIAotRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVj
dFJlbmRlcmVyKCkKLSAgICA6IG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZChmYWxzZSkKLSAgICAs
IG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKGZhbHNlKQotI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKLSAgICAsIG1faGFzQ3VzdG9tU2hhZGVyRmlsdGVyKGZhbHNlKQotI2VuZGlmCi17Ci0gICAg
c2V0RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwotICAgIG1fc291cmNlR3JhcGhp
YyA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKLX0KLQotRmlsdGVyRWZmZWN0UmVuZGVy
ZXI6On5GaWx0ZXJFZmZlY3RSZW5kZXJlcigpCi17Ci19Ci0KLUdyYXBoaWNzQ29udGV4dCogRmls
dGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCgpCi17Ci0gICAgcmV0dXJuIHNvdXJjZUlt
YWdlKCkgPyBzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiAwOwotfQogCiBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0Vm
ZmVjdCwgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24pCiB7CkBAIC0y
MTAsMTM3ICsxNzMsNiBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICAgICAgcmVm
ZXJlbmNlT3BlcmF0aW9uLT5zZXRGaWx0ZXJFZmZlY3QoZWZmZWN0KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6
IHsKLSAgICAgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0
cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFy
YW1ldGVyczsKLSAgICAgICAgICAgIGRvdWJsZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAt
IGNvbG9yTWF0cml4T3BlcmF0aW9uLT5hbW91bnQoKSwgMC4wLCAxLjApOwotCi0gICAgICAgICAg
ICAvLyBTZWUgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJz
L2luZGV4Lmh0bWwjZ3JheXNjYWxlRXF1aXZhbGVudAotICAgICAgICAgICAgLy8gZm9yIGluZm9y
bWF0aW9uIG9uIHBhcmFtZXRlcnMuCi0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBl
bmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIxMjYgKyAwLjc4NzQgKiBvbmVNaW51c0Ftb3Vu
dCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBp
bnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4wNzIyIC0gMC4w
NzIyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBh
cmFtZXRlcnMpOwotCi0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoMC4yMTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQpKTsKLSAgICAg
ICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcx
NTIgKyAwLjI4NDggKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0
ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiAtIDAuMDcyMiAqIG9uZU1p
bnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsK
LQotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KDAuMjEyNiAtIDAuMjEyNiAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1
dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC43MTUyIC0gMC43MTUy
ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQo
bmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgKyAwLjkyNzggKiBvbmVNaW51c0Ftb3VudCkp
OwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAg
ICAgIGxhc3RNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgZWZmZWN0
ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKHRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgs
IGlucHV0UGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKLSAgICAgICAgICAgIEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAg
ICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKLSAgICAgICAgICAgIGRvdWJs
ZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGNvbG9yTWF0cml4T3BlcmF0aW9uLT5hbW91
bnQoKSwgMC4wLCAxLjApOwotCi0gICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kdmNzLnczLm9y
Zy9oZy9GWFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjc2VwaWFFcXVpdmFsZW50
Ci0gICAgICAgICAgICAvLyBmb3IgaW5mb3JtYXRpb24gb24gcGFyYW1ldGVycy4KLQotICAgICAg
ICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzkz
ICsgMC42MDcgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzY5IC0gMC43NjkgKiBvbmVNaW51c0Ft
b3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KDAuMTg5IC0gMC4xODkgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAg
ZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjM0OSAtIDAuMzQ5ICogb25lTWlu
dXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjY4NiArIDAuMzE0ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAg
ICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjE2OCAt
IDAuMTY4ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1
dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoMC4yNzIgLSAwLjI3MiAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAg
ICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC41
MzQgLSAwLjUzNCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRl
cnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xMzEgKyAwLjg2OSAqIG9uZU1pbnVz
QW1vdW50KSk7Ci0gICAgICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQot
ICAgICAgICAgICAgbGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAg
ICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBF
X01BVFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogewotICAgICAgICAgICAg
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSBz
dGF0aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0
aW9uKTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwotICAgICAg
ICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9y
TWF0cml4T3BlcmF0aW9uLT5hbW91bnQoKSkpOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xv
ck1hdHJpeDo6Y3JlYXRlKHRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSwgaW5wdXRQ
YXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7Ci0gICAgICAgICAgICBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAg
ICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBpbnB1dFBh
cmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRp
b24tPmFtb3VudCgpKSk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVh
dGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgaW5wdXRQYXJhbWV0ZXJzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpJTlZFUlQ6IHsKLSAgICAgICAgICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAg
ICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247Ci0gICAg
ICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVf
VEFCTEU7Ci0gICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IHRyYW5zZmVyUGFyYW1ldGVyczsKLSAg
ICAgICAgICAgIHRyYW5zZmVyUGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9h
dChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi0+YW1vdW50KCkpKTsKLSAgICAgICAgICAgIHRy
YW5zZmVyUGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgxIC0gY29tcG9u
ZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1
bmN0aW9uLnRhYmxlVmFsdWVzID0gdHJhbnNmZXJQYXJhbWV0ZXJzOwotCi0gICAgICAgICAgICBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVj
dCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0
cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9Q
QUNJVFk6IHsKLSAgICAgICAgICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b24qIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247Ci0gICAgICAgICAg
ICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEU7
Ci0gICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IHRyYW5zZmVyUGFyYW1ldGVyczsKLSAgICAgICAg
ICAgIHRyYW5zZmVyUGFyYW1ldGVycy5hcHBlbmQoMCk7Ci0gICAgICAgICAgICB0cmFuc2ZlclBh
cmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJP
cGVyYXRpb24tPmFtb3VudCgpKSk7Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnRhYmxl
VmFsdWVzID0gdHJhbnNmZXJQYXJhbWV0ZXJzOwotCi0gICAgICAgICAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9u
ZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCBudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgbnVs
bEZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7Ci0gICAgICAg
ICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBjb21wb25lbnRUcmFu
c2Zlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOwotICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlv
bi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKLSAgICAgICAgICAgIHRy
YW5zZmVyRnVuY3Rpb24uc2xvcGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRy
YW5zZmVyT3BlcmF0aW9uLT5hbW91bnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9u
LmludGVyY2VwdCA9IDA7Ci0KLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
bnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6
Y3JlYXRlKHRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVy
RnVuY3Rpb24sIG51bGxGdW5jdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsKLSAgICAgICAgICAgIEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVyT3Bl
cmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
bio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIHRyYW5zZmVyRnVuY3Rpb247Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUg
PSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgICAgICAgICAgZmxvYXQgYW1v
dW50ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi0+
YW1vdW50KCkpOwotICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9IGFtb3VudDsK
LSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0gLTAuNSAqIGFtb3VudCAr
IDAuNTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biBudWxsRnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVy
OjpjcmVhdGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNm
ZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAgICAgICAgICBCbHVy
RmlsdGVyT3BlcmF0aW9uKiBibHVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Qmx1ckZpbHRlck9w
ZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRp
b24gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCAw
KTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUodGhpcywgc3Rk
RGV2aWF0aW9uLCBzdGREZXZpYXRpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7Ci0gICAgICAgICAg
ICBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBkcm9wU2hhZG93T3BlcmF0aW9uID0gc3RhdGlj
X2Nhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAg
ICAgICAgICBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZSh0aGlzLCBkcm9wU2hhZG93T3Bl
cmF0aW9uLT5zdGREZXZpYXRpb24oKSwgZHJvcFNoYWRvd09wZXJhdGlvbi0+c3RkRGV2aWF0aW9u
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9w
U2hhZG93T3BlcmF0aW9uLT54KCksIGRyb3BTaGFkb3dPcGVyYXRpb24tPnkoKSwgZHJvcFNoYWRv
d09wZXJhdGlvbi0+Y29sb3IoKSwgMSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQog
I2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOgogICAgICAgICAgICAgLy8gQ1VTVE9NIG9wZXJhdGlv
bnMgYXJlIGFsd2F5cyBjb252ZXJ0ZWQgdG8gVkFMSURBVEVEX0NVU1RPTSBiZWZvcmUgZ2V0dGlu
ZyBoZXJlLgpAQCAtMzUwLDEzICsxODIsMTQgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
YnVpbGQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYKICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlZBTElEQVRFRF9DVVNUT006IHsKICAgICAgICAg
ICAgIFZhbGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9u
ID0gc3RhdGljX2Nhc3Q8VmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3Bl
cmF0aW9uKTsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJlbmRlcmVyID8gcmVu
ZGVyZXItPmRvY3VtZW50KCkgOiAwOwotICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlQ3VzdG9t
RmlsdGVyRWZmZWN0KHRoaXMsIGRvY3VtZW50LCBjdXN0b21GaWx0ZXJPcGVyYXRpb24pOworICAg
ICAgICAgICAgZWZmZWN0ID0gYnVpbGRDdXN0b21GaWx0ZXJFZmZlY3QoZG9jdW1lbnQsIGN1c3Rv
bUZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBpZiAoZWZmZWN0KQogICAgICAgICAgICAg
ICAgIG1faGFzQ3VzdG9tU2hhZGVyRmlsdGVyID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVmZmVjdCA9
IGJ1aWxkRmlsdGVyRWZmZWN0KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCkBAIC0zNzgsNyArMjExLDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6YnVpbGQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc2V0TWF4RWZmZWN0UmVjdHMobV9zb3VyY2VE
cmF3aW5nUmVnaW9uKTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTQsMTkg
KzIyNyw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgp
Ci17Ci0gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZWZmZWN0IGNoYWluIGhhcyBiZWVuIGJ1aWx0
LCBhbmQgdGhlCi0gICAgLy8gc291cmNlIGltYWdlIHNpemVzIHNldC4gV2UganVzdCBuZWVkIHRv
IGF0dGFjaCB0aGUgZ3JhcGhpYwotICAgIC8vIGJ1ZmZlciBpZiB3ZSBoYXZlIG5vdCB5ZXQgZG9u
ZSBzby4KLSAgICBpZiAoIW1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCkgewotICAgICAgICBJbnRT
aXplIGxvZ2ljYWxTaXplKG1fc291cmNlRHJhd2luZ1JlZ2lvbi53aWR0aCgpLCBtX3NvdXJjZURy
YXdpbmdSZWdpb24uaGVpZ2h0KCkpOwotICAgICAgICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291
cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkKLSAgICAgICAgICAgIHNl
dFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIDEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHJlbmRlcmluZ01vZGUoKSkpOwotICAgICAgICBtX2dyYXBoaWNzQnVmZmVy
QXR0YWNoZWQgPSB0cnVlOwotICAgIH0KLX0KLQogdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCkKIHsKICAgICBtX3NvdXJjZUdyYXBoaWMtPmNsZWFy
UmVzdWx0KCk7CkBAIC00MTQsMTMgKzIzNCw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiAgICAgICAgIG1fZWZmZWN0c1tpXS0+Y2xlYXJS
ZXN1bHQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YXBwbHkoKQotewotICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IGxhc3RFZmZlY3QoKTsKLSAgICBlZmZlY3Qt
PmFwcGx5KCk7Ci0gICAgZWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotfQotCiBMYXlvdXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjb21w
dXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJv
eFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKIHsKICNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5oCmluZGV4IDUzNWE4N2FjMDQ1N2M2MTI4YjcxYWQ3NDY4MTJjZGFmMTkxZjViMTMuLmM4Nzg5
N2I5ODJiMzAzOGZhYTljMzAyOTc0NzQxOTk5NmE5MjY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC0yOCwzMCArMjgsMjMgQEAK
IAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIAotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlckZpbHRlci5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJT
VkdGaWx0ZXJCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgogCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7Ci1jbGFzcyBDYWNoZWRT
aGFkZXI7Ci1jbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVj
dDsKK2NsYXNzIFZhbGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbjsKIAogY2xhc3MgRmlsdGVy
RWZmZWN0UmVuZGVyZXJIZWxwZXIgewogcHVibGljOgpAQCAtNzgsNyArNzEsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXZlRmlsdGVyRWZmZWN0OwogfTsKIAotY2xhc3MgRmlsdGVyRWZmZWN0
UmVuZGVyZXIgOiBwdWJsaWMgRmlsdGVyCitjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6IHB1
YmxpYyBJbWFnZUJ1ZmZlckZpbHRlcgogewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtODcsNjQgKzgwLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQot
ICAgIHsgCi0gICAgICAgIG1fc291cmNlRHJhd2luZ1JlZ2lvbiA9IHNvdXJjZUltYWdlUmVjdDsK
LSAgICAgICAgc2V0TWF4RWZmZWN0UmVjdHMoc291cmNlSW1hZ2VSZWN0KTsKLSAgICAgICAgc2V0
RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJB
dHRhY2hlZCA9IGZhbHNlOwotICAgIH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJbWFn
ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAgIHZp
cnR1YWwgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24p
IHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBmaWx0ZXJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKLSAgICBJbWFnZUJ1ZmZlciogb3V0cHV0
KCkgY29uc3QgeyByZXR1cm4gbGFzdEVmZmVjdCgpLT5hc0ltYWdlQnVmZmVyKCk7IH0KLQogICAg
IGJvb2wgYnVpbGQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYpOwogICAgIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZFJlZmVyZW5jZUZpbHRlcihS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNF
ZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiopOworICAgIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZEN1c3RvbUZpbHRlckVmZmVjdChEb2N1bWVudCosIFZhbGlkYXRlZEN1c3Rv
bUZpbHRlck9wZXJhdGlvbiopOwogICAgIGJvb2wgdXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpOwotICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZCgpOwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7Ci0gICAgdm9p
ZCBhcHBseSgpOwotICAgIAotICAgIEludFJlY3Qgb3V0cHV0UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IGxhc3RFZmZlY3QoKS0+aGFzUmVzdWx0KCkgPyBsYXN0RWZmZWN0KCktPnJlcXVlc3RlZFJlZ2lv
bk9mSW5wdXRJbWFnZURhdGEoSW50UmVjdChtX2ZpbHRlclJlZ2lvbikpIDogSW50UmVjdCgpOyB9
CiAKLSAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOyB9CiAgICAgTGF5b3V0UmVjdCBjb21wdXRlU291cmNl
SW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNv
bnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAg
ICAgYm9vbCBoYXNDdXN0b21TaGFkZXJGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0N1c3Rv
bVNoYWRlckZpbHRlcjsgfQogI2VuZGlmCiBwcml2YXRlOgotICAgIHZvaWQgc2V0TWF4RWZmZWN0
UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2VmZmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IG1fZWZmZWN0cy5hdChpKTsKLSAgICAgICAgICAg
IGVmZmVjdC0+c2V0TWF4RWZmZWN0UmVjdChlZmZlY3RSZWN0KTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVjdCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAobV9lZmZlY3RzLnNpemUoKSA+IDApCi0gICAgICAgICAgICByZXR1cm4gbV9l
ZmZlY3RzLmxhc3QoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgRmlsdGVyRWZm
ZWN0UmVuZGVyZXIoKTsKLSAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3RSZW5kZXJlcigpOwotICAg
IAotICAgIEZsb2F0UmVjdCBtX3NvdXJjZURyYXdpbmdSZWdpb247Ci0gICAgRmxvYXRSZWN0IG1f
ZmlsdGVyUmVnaW9uOwotICAgIAotICAgIEZpbHRlckVmZmVjdExpc3QgbV9lZmZlY3RzOwotICAg
IFJlZlB0cjxTb3VyY2VHcmFwaGljPiBtX3NvdXJjZUdyYXBoaWM7Ci0gICAgCi0gICAgSW50UmVj
dEV4dGVudCBtX291dHNldHM7CiAKLSAgICBib29sIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZDsK
LSAgICBib29sIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOwogI2lmIEVOQUJMRShDU1NfU0hB
REVSUykKICAgICBib29sIG1faGFzQ3VzdG9tU2hhZGVyRmlsdGVyOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195556</attachid>
            <date>2013-03-28 06:37:35 -0700</date>
            <delta_ts>2013-03-29 11:41:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113186-20130328143733.patch</filename>
            <type>text/plain</type>
            <size>44661</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI1ZWExZWQ3OWUwMzc1
NzBmNWIwOGYwNjk0ZjE3OGFiNDAwMGQyZC4uNTVhNGUyZDM0NzQ4ZGUyNmEwMTI5NmZkMTU4Njhm
ODU4NmRiYzIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTI1ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNw
bGl0IEZpbHRlckVmZmVjdFJlbmRlcmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTMxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTcGxpdCBGaWx0ZXJFZmZlY3RSZW5kZXJlciBpbiBhIHNpbXBsZSBm
aWx0ZXIgZ3JhcGhpY3MgcGFydCBhbmQgbGVhdmUgb25seQorICAgICAgICB0aGUgcGFydHMgcmVx
dWlyaW5nIGFjY2VzcyB0byB0aGUgRE9NIG9yIFJlbmRlciB0cmVlIGluIEZpbHRlckVmZmVjdFJl
bmRlcmVyLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBzb2Z0d2FyZSBmYWxsYmFjayBmb3Ig
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdG8gcmV1c2UgdGhlIGNsYXNzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmRN
YXRyaXhSb3cpOgorICAgICAgICAoV2ViQ29yZTo6bGFzdE1hdHJpeFJvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6SW1hZ2VCdWZmZXJGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6On5JbWFnZUJ1ZmZlckZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6aW5wdXRDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpidWlsZEZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oLgorICAgICAgICAoSW1hZ2VC
dWZmZXJGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpzb3VyY2VJbWFnZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6OnNldEZpbHRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6ZmlsdGVyUmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmlsdGVyOjpvdXRwdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Om91dHB1dFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJGaWx0ZXI6Omxhc3RFZmZlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdFJlbmRlcmVyKToKKwog
MjAxMy0wMy0yOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBTaW1wbGlmeSBSZXNvdXJjZVNjcmlwdEZpbGUgc28gdGhhdCBp
dCBzdG9yZXMgaGFzRGl2ZXJnZWQgc3RhdGUgaW4gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDM5YjAwMzg4NjVkM2EwNGM0ZWQ1YmNlNGViNjBhZjZmNTg4ZmVkMDkuLjYxMDdlZGQ1ZTU0NmI3
NDMwMWI3NWYwYTljMDYwZDhhOTNkZDU3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xOTk5
LDYgKzE5OTksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJG
aWx0ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggYzg2ZDAwMGZlZTg4MjE0NGRkZWRlNzhlOTFiNGQxYTBjZjdm
NTVlZS4uOTdiZjkyMDA5NmNlZmM4NmQxMzMzZDhkOWIwNWYzYTAwYTVjMDMyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01NjA3LDYgKzU2MDcsOCBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2Uu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0
U291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Q
b2ludExpZ2h0U291cmNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNWUzZjRlZjIwOTIzOGMwNjQyNjg3
Y2M3ODM1N2RmYjgwZDU5ZmVhMi4uYzZjNDU2NjVkYjk2MWNkY2QxODgwYjkwMTJkMTliMmU1Zjk3
NmQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMjM3LDYgKzIyMzcsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0xpZ2h0U291cmNlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgg
XApAQCAtMzY5Miw2ICszNjkzLDcgQEAgZW5hYmxlPyhGSUxURVJTKSB7CiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgXAorICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggMTRmMzliMTY5NzkyMjA1Njk3NjA1Nzk3MTA0ODAxZDg0MmQyYjZkMi4uMTdiMzBlNzc2NTg3
YWI4Yzg3YzcxNTYyNDkxMjRhYmJjZTM1NzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDA3Niw2
ICs0MDc2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuaCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDZmNjU1ZmVhNmUwNTMz
ZmRjM2EyYjJlYzg4ZTlmODY2OTVjODExZmEuLjMzNWQ5MjEyOWU5MjhiMjQwZGE0ODY2M2M1ZDZi
OTUwNTcxMTMwMjAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0zMjc0MSw2ICszMjc0MSwxNCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJ
CQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRl
cnNcSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcSW1h
Z2VCdWZmZXJGaWx0ZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXExpZ2h0U291cmNl
LmgiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ODQzMThkNmFhNjkyODcxMzZhOWI0NjJj
YjhkY2Q4MTNjOTFiNTFhLi4xOGZjNTQ1ZjFmNmY4NTU5ZWJkMjdhOTRiM2Q2MDE2M2ZkNDZlYjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMzY4OSw2ICsxMzY4OSw4IEBACiAJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAv
KiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNdXRhdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JG
NjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQUM2RTRCNDE3MDA5MUUxMDBCNTUzMUMgLyog
SW1hZ2VCdWZmZXJGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwOyBwYXRoID0gZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBQzZFNEI1MTcwMDkxRTEwMEI1
NTMxQyAvKiBJbWFnZUJ1ZmZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBJbWFnZUJ1ZmZlckZpbHRlci5oOyBwYXRoID0gZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1
QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjEg
LyogQ1NTVmFyaWFibGVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NWYXJpYWJsZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTAwMCw2
ICsxOTAwMiw4IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDQUM2RTRCNDE3MDA5
MUUxMDBCNTUzMUMgLyogSW1hZ2VCdWZmZXJGaWx0ZXIuY3BwICovLAorCQkJCUNBQzZFNEI1MTcw
MDkxRTEwMEI1NTMxQyAvKiBJbWFnZUJ1ZmZlckZpbHRlci5oICovLAogCQkJCTE1QjNGQzE3MTVG
QjIxNzgwMEE4MUJDQiAvKiBDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlci5oICovLAogCQkJCTUw
RDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3Bw
ICovLAogCQkJCTUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW0uaCAqLywKQEAgLTI0ODc5LDYgKzI0ODgzLDcgQEAKIAkJCQlCMkExMEI5MjBCMzgx
OEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyQkQ5RjdG
MTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTIyQkQ5RjgxMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0FDNkU0QjUxNzAwOTFFMTAwQjU1MzFDIC8qIEltYWdlQnVmZmVyRmlsdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzc5NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCNjEyMzkyOTEwMDBCMTczODAgLyogSW1h
Z2VEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQzIxMjUxRjEyRDAwM0VGMjY5
IC8qIEltYWdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MjAzLDYgKzI4MjA4LDcg
QEAKIAkJCQk0M0QyNTk3NzEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VCdWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjJBMTBCOTQwQjM4MThENzAwMDk5QUE0IC8qIEltYWdlQnVmZmVyQ0cu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjI5MkIyN0MxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdl
QnVmZmVyRGF0YUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNBQzZFNEI0MTcwMDkxRTEwMEI1
NTMxQyAvKiBJbWFnZUJ1ZmZlckZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1
RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzc5
NzkxOTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3MjA1QUI1MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2QzMDgyMmJiNGI2
MzAwMjAxNjM1YjQ2MDA3NDA2NDhkMGQzY2FkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5jcHAKQEAg
LTAsMCArMSwyOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBsYy4gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENT
U19GSUxURVJTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGaWx0ZXIuaCIKKworI2luY2x1ZGUg
IkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCisjaW5jbHVkZSAiRkVD
b21wb25lbnRUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5oIgorI2luY2x1ZGUg
IkZFR2F1c3NpYW5CbHVyLmgiCisjaW5jbHVkZSAiRkVNZXJnZS5oIgorI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBw
YXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworICAgIHBhcmFtZXRlcnMu
YXBwZW5kKDApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbGFzdE1hdHJpeFJvdyhWZWN0b3I8
ZmxvYXQ+JiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworICAgIHBh
cmFtZXRlcnMuYXBwZW5kKDApOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworICAgIHBhcmFt
ZXRlcnMuYXBwZW5kKDEpOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOworfQorCitJbWFnZUJ1
ZmZlckZpbHRlcjo6SW1hZ2VCdWZmZXJGaWx0ZXIoKQorICAgIDogbV9ncmFwaGljc0J1ZmZlckF0
dGFjaGVkKGZhbHNlKQorICAgICwgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoZmFsc2UpCit7
CisgICAgc2V0RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOworICAgIG1fc291cmNl
R3JhcGhpYyA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKK30KKworSW1hZ2VCdWZmZXJG
aWx0ZXI6On5JbWFnZUJ1ZmZlckZpbHRlcigpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dCogSW1h
Z2VCdWZmZXJGaWx0ZXI6OmlucHV0Q29udGV4dCgpCit7CisgICAgcmV0dXJuIHNvdXJjZUltYWdl
KCkgPyBzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiAwOworfQorCitQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gSW1hZ2VCdWZmZXJGaWx0ZXI6OmJ1aWxkRmlsdGVyRWZmZWN0KEZpbHRlck9wZXJh
dGlvbiogZmlsdGVyT3BlcmF0aW9uKQoreworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dDsKKworICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsK
KyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CisgICAgICAgIEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Cisg
ICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOworICAgICAgICBkb3VibGUgb25l
TWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlvbi0+YW1vdW50KCks
IDAuMCwgMS4wKTsKKworICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRG
L3Jhdy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjZ3JheXNjYWxlRXF1aXZhbGVudAorICAg
ICAgICAvLyBmb3IgaW5mb3JtYXRpb24gb24gcGFyYW1ldGVycy4KKworICAgICAgICBpbnB1dFBh
cmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2ICsgMC43ODc0ICog
b25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAg
ICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIg
LSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQ
YXJhbWV0ZXJzKTsKKworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoMC4yMTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiArIDAu
Mjg0OCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQo
bmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCkp
OworICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKKworICAgICAgICBpbnB1
dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2IC0gMC4yMTI2
ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSk7Cisg
ICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3
MjIgKyAwLjkyNzggKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBlbmRNYXRyaXhSb3coaW5w
dXRQYXJhbWV0ZXJzKTsKKworICAgICAgICBsYXN0TWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7
CisKKyAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKHRoaXMsIEZFQ09MT1JN
QVRSSVhfVFlQRV9NQVRSSVgsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKKyAgICAgICAgQmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAg
ICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7CisgICAgICAgIGRvdWJsZSBvbmVN
aW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGNvbG9yTWF0cml4T3BlcmF0aW9uLT5hbW91bnQoKSwg
MC4wLCAxLjApOworCisgICAgICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYv
cmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2YWxlbnQKKyAgICAgICAg
Ly8gZm9yIGluZm9ybWF0aW9uIG9uIHBhcmFtZXRlcnMuCisKKyAgICAgICAgaW5wdXRQYXJhbWV0
ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzkzICsgMC42MDcgKiBvbmVNaW51
c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0
UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjE4OSAtIDAuMTg5ICog
b25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7
CisKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KDAuMzQ5IC0gMC4zNDkgKiBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBpbnB1dFBhcmFtZXRl
cnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC42ODYgKyAwLjMxNCAqIG9uZU1pbnVz
QW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9u
VG9GbG9hdCgwLjE2OCAtIDAuMTY4ICogb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgZW5kTWF0
cml4Um93KGlucHV0UGFyYW1ldGVycyk7CisKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVu
ZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjcyIC0gMC4yNzIgKiBvbmVNaW51c0Ftb3VudCkp
OworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC41MzQgLSAwLjUzNCAqIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGlucHV0UGFyYW1ldGVy
cy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5ICogb25lTWludXNB
bW91bnQpKTsKKyAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7CisKKyAgICAg
ICAgbGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOworCisgICAgICAgIGVmZmVjdCA9IEZF
Q29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBpbnB1
dFBhcmFtZXRlcnMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OlNBVFVSQVRFOiB7CisgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRp
b24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIFZlY3RvcjxmbG9hdD4g
aW5wdXRQYXJhbWV0ZXJzOworICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpKSk7CisgICAgICAg
IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVf
U0FUVVJBVEUsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAg
ICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKKyAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4T3BlcmF0aW9uLT5hbW91
bnQoKSkpOworICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVD
T0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKKyAgICAgICAg
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJhbnNmZXJP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biB0cmFuc2ZlckZ1bmN0aW9uOworICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNP
TVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEU7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gdHJhbnNm
ZXJQYXJhbWV0ZXJzOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7Cisg
ICAgICAgIHRyYW5zZmVyUGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgx
IC0gY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7CisgICAgICAgIHRyYW5z
ZmVyRnVuY3Rpb24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7CisKKyAgICAgICAg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAgICAgIGVmZmVjdCA9
IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFu
c2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKKyAgICAg
ICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJhbnNm
ZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiB0cmFuc2ZlckZ1bmN0aW9uOworICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBG
RUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEU7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gdHJh
bnNmZXJQYXJhbWV0ZXJzOworICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBwZW5kKDApOwor
ICAgICAgICB0cmFuc2ZlclBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
Y29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3VudCgpKSk7CisgICAgICAgIHRyYW5zZmVy
RnVuY3Rpb24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBhcmFtZXRlcnM7CisKKyAgICAgICAgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAgICAgIGVmZmVjdCA9IEZF
Q29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCBudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlv
biwgbnVsbEZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7CisgICAgICAgIEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0
aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+
KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJh
bnNmZXJGdW5jdGlvbjsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3Vu
dCgpKTsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAwOworCisgICAgICAg
IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOworICAgICAgICBlZmZlY3Qg
PSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJh
bnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogeworICAg
ICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBjb21wb25lbnRUcmFu
c2Zlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CisgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9
IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CisgICAgICAgIGZsb2F0IGFtb3VudCA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFtb3Vu
dCgpKTsKKyAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9IGFtb3VudDsKKyAgICAgICAg
dHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41ICogYW1vdW50ICsgMC41OworCisgICAg
ICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOworICAgICAgICBlZmZl
Y3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwg
dHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CisgICAg
ICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCbHVy
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgZmxvYXQgc3RkRGV2
aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxlbmd0aChibHVyT3BlcmF0aW9uLT5zdGREZXZpYXRpb24o
KSwgMCk7CisgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUodGhpcywgc3Rk
RGV2aWF0aW9uLCBzdGREZXZpYXRpb24pOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgIERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24qIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgZWZmZWN0ID0gRkVE
cm9wU2hhZG93OjpjcmVhdGUodGhpcywKKyAgICAgICAgICAgIGRyb3BTaGFkb3dPcGVyYXRpb24t
PnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSwKKyAg
ICAgICAgICAgIGRyb3BTaGFkb3dPcGVyYXRpb24tPngoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi0+
eSgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5jb2xvcigpLCAxKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
Q1VTVE9NOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpWQUxJREFURURfQ1VTVE9NOgorI2Vu
ZGlmCisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBlZmZl
Y3QucmVsZWFzZSgpOworfQorCitib29sIEltYWdlQnVmZmVyRmlsdGVyOjpidWlsZChjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zKQoreworICAgIG1faGFzRmlsdGVyVGhhdE1vdmVz
UGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKTsKKyAgICBpZiAo
bV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMpCisgICAgICAgIG1fb3V0c2V0cyA9IG9wZXJhdGlv
bnMub3V0c2V0cygpOworICAgIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZm
ZWN0ID0gbV9zb3VyY2VHcmFwaGljOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3BlcmF0
aW9ucy5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0OworICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOworICAgICAgICBzd2l0Y2ggKGZp
bHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CisjaWYgRU5BQkxFKENTU19TSEFE
RVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOgorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTToKKyNlbmRpZgorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgICAgICAvLyBDVVNUT00sIFZB
TElEQVRFRF9DVVNUT00gYW5kIFJFRkVSRU5DRSBhcmUgb25seSBoYW5kbGVkIGluIEZpbHRlckVm
ZmVjdFJlbmRlcmVyOjpidWlsZC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBlZmZlY3QgPSBidWlsZEZpbHRlckVmZmVjdChmaWx0
ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoZWZmZWN0KSB7CisgICAgICAgICAgICAvLyBVbmxpa2UgU1ZHLCBmaWx0ZXJzIGFwcGxpZWQg
aGVyZSBzaG91bGQgbm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMuCisgICAg
ICAgICAgICBlZmZlY3QtPnNldENsaXBzVG9Cb3VuZHMoZmFsc2UpOworICAgICAgICAgICAgZWZm
ZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQocHJldmlvdXNFZmZlY3QpOworICAg
ICAgICAgICAgbV9lZmZlY3RzLmFwcGVuZChlZmZlY3QpOworICAgICAgICAgICAgcHJldmlvdXNF
ZmZlY3QgPSBlZmZlY3QucmVsZWFzZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gSWYg
d2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNhbGxlciB3ZSBhcmUgbm90IHZh
bGlkCisgICAgaWYgKCFtX2VmZmVjdHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdSZWdpb24pOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIEltYWdlQnVmZmVyRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKCkKK3sKKyAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBlZmZlY3QgY2hhaW4gaGFz
IGJlZW4gYnVpbHQsIGFuZCB0aGUKKyAgICAvLyBzb3VyY2UgaW1hZ2Ugc2l6ZXMgc2V0LiBXZSBq
dXN0IG5lZWQgdG8gYXR0YWNoIHRoZSBncmFwaGljCisgICAgLy8gYnVmZmVyIGlmIHdlIGhhdmUg
bm90IHlldCBkb25lIHNvLgorICAgIGlmICghbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKSB7Cisg
ICAgICAgIEludFNpemUgbG9naWNhbFNpemUobV9zb3VyY2VEcmF3aW5nUmVnaW9uLndpZHRoKCks
IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5oZWlnaHQoKSk7CisgICAgICAgIGlmICghc291cmNlSW1h
Z2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKQorICAg
ICAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwg
MSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSgpKSk7CisgICAgICAgIG1fZ3Jh
cGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIEltYWdlQnVmZmVy
RmlsdGVyOjphcHBseSgpCit7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gbGFz
dEVmZmVjdCgpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGVmZmVjdCk7
CisgICAgZWZmZWN0LT5hcHBseSgpOworICAgIGVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA2YTA5ZDgwYjYyNDNiMWFlOGRjYmU1ZTU0MjJlNDYzZTA5ZTI5ZjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0lt
YWdlQnVmZmVyRmlsdGVyLmgKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzIERpZ2lhIFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbWFnZUJ1
ZmZlckZpbHRlcl9oCisjZGVmaW5lIEltYWdlQnVmZmVyRmlsdGVyX2gKKworI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKKworI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgorI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKKyNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisj
aW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0
PiA+IEZpbHRlckVmZmVjdExpc3Q7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisKK2NsYXNzIElt
YWdlQnVmZmVyRmlsdGVyIDogcHVibGljIEZpbHRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VCdWZmZXJGaWx0ZXI+
IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVy
RmlsdGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRTb3VyY2VJbWFnZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCisgICAgeyAKKyAgICAgICAgbV9zb3Vy
Y2VEcmF3aW5nUmVnaW9uID0gc291cmNlSW1hZ2VSZWN0OworICAgICAgICBzZXRNYXhFZmZlY3RS
ZWN0cyhzb3VyY2VJbWFnZVJlY3QpOworICAgICAgICBzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1h
Z2VSZWN0KTsKKyAgICAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CisgICAg
fQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEZpbHRlclJl
Z2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBtX2ZpbHRlclJlZ2lvbiA9IGZp
bHRlclJlZ2lvbjsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9CisKKyAgICBHcmFwaGljc0NvbnRleHQqIGlucHV0
Q29udGV4dCgpOworICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdCB7IHJldHVybiBsYXN0
RWZmZWN0KCktPmFzSW1hZ2VCdWZmZXIoKTsgfQorCisgICAgYm9vbCBidWlsZChjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJik7CisgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7
CisgICAgdm9pZCBhcHBseSgpOworICAgIAorICAgIEludFJlY3Qgb3V0cHV0UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+aGFzUmVzdWx0KCkgPyBsYXN0RWZmZWN0KCktPnJlcXVl
c3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoSW50UmVjdChtX2ZpbHRlclJlZ2lvbikpIDogSW50
UmVjdCgpOyB9CisKKyAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRGaWx0ZXJFZmZlY3QoRmlsdGVyT3BlcmF0aW9u
Kik7CisKKyAgICB2b2lkIHNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0
UmVjdCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lZmZlY3RzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBt
X2VmZmVjdHMuYXQoaSk7CisgICAgICAgICAgICBlZmZlY3QtPnNldE1heEVmZmVjdFJlY3QoZWZm
ZWN0UmVjdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGxhc3RFZmZlY3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fZWZmZWN0cy5zaXplKCkg
PiAwKQorICAgICAgICAgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIEltYWdlQnVmZmVyRmlsdGVyKCk7CisgICAgdmlydHVhbCB+SW1h
Z2VCdWZmZXJGaWx0ZXIoKTsKKyAgICAKKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VEcmF3aW5nUmVn
aW9uOworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKyAgICAKKyAgICBGaWx0ZXJFZmZl
Y3RMaXN0IG1fZWZmZWN0czsKKyAgICBSZWZQdHI8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFw
aGljOworICAgIAorICAgIEludFJlY3RFeHRlbnQgbV9vdXRzZXRzOworCisgICAgYm9vbCBtX2dy
YXBoaWNzQnVmZmVyQXR0YWNoZWQ7CisgICAgYm9vbCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVs
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1Nf
RklMVEVSUykKKworI2VuZGlmIC8vIEltYWdlQnVmZmVyRmlsdGVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDJkZTkxYzRm
YjFlNGNkODhkOTFmOGI2YTFjNTQ1MDU4Nzk1MzljYzEuLjMwMmJkNjE1YzVlNDYyMzk4YTQyOGQ5
YmQ2MjA3ZDJkNjM4N2Y3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMjksMTkgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdFJlbmRlcmVyLmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCi0jaW5jbHVkZSAiRkVD
b21wb25lbnRUcmFuc2Zlci5oIgotI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5oIgotI2luY2x1ZGUg
IkZFR2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVkZSAiRkVNZXJnZS5oIgotI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAKLSNpbmNsdWRlIDxhbGdv
cml0aG0+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQogI2lmIEVOQUJMRShDU1NfU0hB
REVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQogI2luY2x1ZGUgIkN1c3RvbUZpbHRlckdsb2JhbENv
bnRleHQuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKQEAgLTYyLDIxICs1
Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSB2b2lkIGVuZE1h
dHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQotewotICAgIHBhcmFtZXRlcnMuYXBw
ZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotfQotCi1zdGF0aWMgaW5saW5lIHZv
aWQgbGFzdE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQotewotICAgIHBhcmFt
ZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRl
cnMuYXBwZW5kKDApOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKDEpOwotICAgIHBhcmFtZXRlcnMu
YXBwZW5kKDApOwotfQotCiBpbmxpbmUgYm9vbCBpc0ZpbHRlclNpemVWYWxpZChGbG9hdFJlY3Qg
cmVjdCkKIHsKICAgICBpZiAocmVjdC53aWR0aCgpIDwgMCB8fCByZWN0LndpZHRoKCkgPiBrTWF4
RmlsdGVyU2l6ZQpAQCAtODUsOCArNjAsMTUgQEAgaW5saW5lIGJvb2wgaXNGaWx0ZXJTaXplVmFs
aWQoRmxvYXRSZWN0IHJlY3QpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0ZpbHRlckVmZmVjdFJl
bmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcigpCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQor
ICAgIDogbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXIoZmFsc2UpCisjZW5kaWYKK3sKK30KKwogI2lm
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQotc3RhdGljIFBhc3NSZWZQ
dHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZUN1c3RvbUZpbHRlckVmZmVjdChGaWx0ZXIqIGZpbHRl
ciwgRG9jdW1lbnQqIGRvY3VtZW50LCBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qIG9w
ZXJhdGlvbikKK1Bhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
YnVpbGRDdXN0b21GaWx0ZXJFZmZlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBWYWxpZGF0ZWRDdXN0
b21GaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbikKIHsKICAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTk2LDMwICs3OCwxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGRUN1
c3RvbUZpbHRlcj4gY3JlYXRlQ3VzdG9tRmlsdGVyRWZmZWN0KEZpbHRlciogZmlsdGVyLCBEb2N1
bQogICAgIGlmICghZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKGZpbHRlciwgZ2xvYmFsQ29udGV4
dC0+Y29udGV4dCgpLCBvcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKSwgb3BlcmF0aW9uLT5w
YXJhbWV0ZXJzKCksCisgICAgcmV0dXJuIEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywgZ2xv
YmFsQ29udGV4dC0+Y29udGV4dCgpLCBvcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKSwgb3Bl
cmF0aW9uLT5wYXJhbWV0ZXJzKCksCiAgICAgICAgIG9wZXJhdGlvbi0+bWVzaFJvd3MoKSwgb3Bl
cmF0aW9uLT5tZXNoQ29sdW1ucygpLCAgb3BlcmF0aW9uLT5tZXNoVHlwZSgpKTsKIH0KICNlbmRp
ZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDog
bV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKGZhbHNlKQotICAgICwgbV9oYXNGaWx0ZXJUaGF0TW92
ZXNQaXhlbHMoZmFsc2UpCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgICwgbV9oYXNDdXN0
b21TaGFkZXJGaWx0ZXIoZmFsc2UpCi0jZW5kaWYKLXsKLSAgICBzZXRGaWx0ZXJSZXNvbHV0aW9u
KEZsb2F0U2l6ZSgxLCAxKSk7Ci0gICAgbV9zb3VyY2VHcmFwaGljID0gU291cmNlR3JhcGhpYzo6
Y3JlYXRlKHRoaXMpOwotfQotCi1GaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZpbHRlckVmZmVjdFJl
bmRlcmVyKCkKLXsKLX0KLQotR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
aW5wdXRDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/IHNvdXJjZUltYWdl
KCktPmNvbnRleHQoKSA6IDA7Ci19CiAKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKIHsKQEAgLTIxMCwxMzcgKzE3Myw2IEBAIGJv
b2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgICAgICByZWZlcmVuY2VPcGVyYXRpb24tPnNl
dEZpbHRlckVmZmVjdChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewotICAgICAgICAgICAgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSBzdGF0
aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9u
KTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwotICAgICAgICAg
ICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRp
b24tPmFtb3VudCgpLCAwLjAsIDEuMCk7Ci0KLSAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2R2
Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNncmF5c2Nh
bGVFcXVpdmFsZW50Ci0gICAgICAgICAgICAvLyBmb3IgaW5mb3JtYXRpb24gb24gcGFyYW1ldGVy
cy4KLQotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KDAuMjEyNiArIDAuNzg3NCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBp
bnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC43MTUyIC0gMC43
MTUyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBl
bmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3Vu
dCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAg
ICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIx
MjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0
ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiArIDAuMjg0OCAqIG9uZU1p
bnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoMC4wNzIyIC0gMC4wNzIyICogb25lTWludXNBbW91bnQpKTsKLSAgICAg
ICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBpbnB1
dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2IC0gMC4yMTI2
ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQo
bmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVNaW51c0Ftb3VudCkp
OwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KDAuMDcyMiArIDAuOTI3OCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBlbmRN
YXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgbGFzdE1hdHJpeFJvdyhp
bnB1dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4Ojpj
cmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTRVBJQTogewotICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biogY29sb3JNYXRyaXhPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9h
dD4gaW5wdXRQYXJhbWV0ZXJzOwotICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0g
Y2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpLCAwLjAsIDEuMCk7Ci0K
LSAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUv
dGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2YWxlbnQKLSAgICAgICAgICAgIC8vIGZv
ciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgotCi0gICAgICAgICAgICBpbnB1dFBhcmFtZXRl
cnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4zOTMgKyAwLjYwNyAqIG9uZU1pbnVz
QW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAg
ICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xODkgLSAw
LjE4OSAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQ
YXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAg
ICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNjg2
ICsgMC4zMTQgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJz
LmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMTY4IC0gMC4xNjggKiBvbmVNaW51c0Ft
b3VudCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAg
ICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgw
LjI3MiAtIDAuMjcyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjUzNCAtIDAuNTM0ICogb25lTWlu
dXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAg
ICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBsYXN0TWF0
cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JN
YXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBpbnB1dFBhcmFt
ZXRlcnMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7Ci0gICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAg
VmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRl
cnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24tPmFt
b3VudCgpKSk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhp
cywgRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFLCBpbnB1dFBhcmFtZXRlcnMpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhV
RV9ST1RBVEU6IHsKLSAgICAgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24q
IGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+
IGlucHV0UGFyYW1ldGVyczsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFy
cm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlvbi0+YW1vdW50KCkpKTsKLSAg
ICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFU
UklYX1RZUEVfSFVFUk9UQVRFLCBpbnB1dFBhcmFtZXRlcnMpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDogewotICAg
ICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50
VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVu
Y3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRTsKLSAgICAgICAgICAg
IFZlY3RvcjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOwotICAgICAgICAgICAgdHJhbnNmZXJQ
YXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVy
T3BlcmF0aW9uLT5hbW91bnQoKSkpOwotICAgICAgICAgICAgdHJhbnNmZXJQYXJhbWV0ZXJzLmFw
cGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDEgLSBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlv
bi0+YW1vdW50KCkpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXMg
PSB0cmFuc2ZlclBhcmFtZXRlcnM7Ci0KLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRUcmFu
c2Zlcjo6Y3JlYXRlKHRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRy
YW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogewotICAgICAgICAg
ICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJhbnNm
ZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24u
dHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRTsKLSAgICAgICAgICAgIFZlY3Rv
cjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOwotICAgICAgICAgICAgdHJhbnNmZXJQYXJhbWV0
ZXJzLmFwcGVuZCgwKTsKLSAgICAgICAgICAgIHRyYW5zZmVyUGFyYW1ldGVycy5hcHBlbmQobmFy
cm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi0+YW1vdW50KCkp
KTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXMgPSB0cmFuc2ZlclBh
cmFtZXRlcnM7Ci0KLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1
bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRl
KHRoaXMsIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rpb24sIHRyYW5zZmVy
RnVuY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6IHsKLSAgICAgICAgICAgIEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uID0gc3Rh
dGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9w
ZXJhdGlvbik7Ci0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVy
RnVuY3Rpb247Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVO
VFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9w
ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFt
b3VudCgpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0gMDsKLQot
ICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247Ci0gICAg
ICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNm
ZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0
aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpDT05UUkFTVDogewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9u
KTsKLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlv
bjsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNG
RVJfVFlQRV9MSU5FQVI7Ci0gICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91bnQoKSk7Ci0gICAgICAg
ICAgICB0cmFuc2ZlckZ1bmN0aW9uLnNsb3BlID0gYW1vdW50OwotICAgICAgICAgICAgdHJhbnNm
ZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41ICogYW1vdW50ICsgMC41OwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAg
ICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCB0cmFu
c2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVu
Y3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJs
dXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3Bl
cmF0aW9uKTsKLSAgICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JM
ZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIDApOwotICAgICAgICAgICAgZWZm
ZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSh0aGlzLCBzdGREZXZpYXRpb24sIHN0ZERldmlh
dGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIERyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb24qIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZF
RHJvcFNoYWRvdzo6Y3JlYXRlKHRoaXMsIGRyb3BTaGFkb3dPcGVyYXRpb24tPnN0ZERldmlhdGlv
bigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFkb3dPcGVyYXRpb24tPngo
KSwgZHJvcFNoYWRvd09wZXJhdGlvbi0+eSgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT5jb2xvcigp
LCAxKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19TSEFE
RVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpD
VVNUT006CiAgICAgICAgICAgICAvLyBDVVNUT00gb3BlcmF0aW9ucyBhcmUgYWx3YXlzIGNvbnZl
cnRlZCB0byBWQUxJREFURURfQ1VTVE9NIGJlZm9yZSBnZXR0aW5nIGhlcmUuCkBAIC0zNTAsMTMg
KzE4MiwxNCBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTTogewogICAgICAgICAgICAgVmFsaWRhdGVkQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKiBjdXN0b21GaWx0ZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxWYWxp
ZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVuZGVyZXIgPyByZW5kZXJlci0+ZG9jdW1lbnQoKSA6
IDA7Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVDdXN0b21GaWx0ZXJFZmZlY3QodGhpcywg
ZG9jdW1lbnQsIGN1c3RvbUZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBlZmZlY3QgPSBi
dWlsZEN1c3RvbUZpbHRlckVmZmVjdChkb2N1bWVudCwgY3VzdG9tRmlsdGVyT3BlcmF0aW9uKTsK
ICAgICAgICAgICAgIGlmIChlZmZlY3QpCiAgICAgICAgICAgICAgICAgbV9oYXNDdXN0b21TaGFk
ZXJGaWx0ZXIgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgog
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZWZmZWN0ID0gYnVpbGRGaWx0ZXJFZmZlY3Qo
ZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTM3
OCw3ICsyMTEsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdSZWdpb24pOwotICAg
IAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5NCwxOSArMjI3LDYgQEAgYm9vbCBGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6dXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGZpbHRlclJlY3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKLXsKLSAgICAvLyBBdCB0aGlz
IHBvaW50IHRoZSBlZmZlY3QgY2hhaW4gaGFzIGJlZW4gYnVpbHQsIGFuZCB0aGUKLSAgICAvLyBz
b3VyY2UgaW1hZ2Ugc2l6ZXMgc2V0LiBXZSBqdXN0IG5lZWQgdG8gYXR0YWNoIHRoZSBncmFwaGlj
Ci0gICAgLy8gYnVmZmVyIGlmIHdlIGhhdmUgbm90IHlldCBkb25lIHNvLgotICAgIGlmICghbV9n
cmFwaGljc0J1ZmZlckF0dGFjaGVkKSB7Ci0gICAgICAgIEludFNpemUgbG9naWNhbFNpemUobV9z
b3VyY2VEcmF3aW5nUmVnaW9uLndpZHRoKCksIG1fc291cmNlRHJhd2luZ1JlZ2lvbi5oZWlnaHQo
KSk7Ci0gICAgICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2Fs
U2l6ZSgpICE9IGxvZ2ljYWxTaXplKQotICAgICAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VC
dWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVuZGVy
aW5nTW9kZSgpKSk7Ci0gICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7Ci0g
ICAgfQotfQotCiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjbGVhckludGVybWVkaWF0ZVJl
c3VsdHMoKQogewogICAgIG1fc291cmNlR3JhcGhpYy0+Y2xlYXJSZXN1bHQoKTsKQEAgLTQxNCwx
MyArMjM0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y2xlYXJJbnRlcm1lZGlhdGVS
ZXN1bHRzKCkKICAgICAgICAgbV9lZmZlY3RzW2ldLT5jbGVhclJlc3VsdCgpOwogfQogCi12b2lk
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjphcHBseSgpCi17Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGVmZmVjdC0+YXBwbHkoKTsKLSAgICBlZmZl
Y3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7Ci19Ci0K
IExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RG
b3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgZGlydHlSZWN0KQogewogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXggNTM1YTg3YWMw
NDU3YzYxMjhiNzFhZDc0NjgxMmNkYWYxOTFmNWIxMy4uYzg3ODk3Yjk4MmIzMDM4ZmFhOWMzMDI5
NzQ3NDE5OTk2YTkyNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmgKQEAgLTI4LDMwICsyOCwyMyBAQAogCiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0j
aW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmlsdGVyLmgi
CiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIK
LSNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCiAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+ID4gRmlsdGVyRWZmZWN0TGlzdDsKLWNsYXNzIENhY2hlZFNoYWRlcjsKLWNsYXNzIEN1c3Rv
bUZpbHRlclByb2dyYW07CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
IGNsYXNzIFJlbmRlckxheWVyOwogY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgVmFsaWRhdGVk
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOwogCiBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBl
ciB7CiBwdWJsaWM6CkBAIC03OCw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVG
aWx0ZXJFZmZlY3Q7CiB9OwogCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6IHB1YmxpYyBG
aWx0ZXIKK2NsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyIDogcHVibGljIEltYWdlQnVmZmVyRmls
dGVyCiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC04Nyw2NCAr
ODAsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlckVmZmVj
dFJlbmRlcmVyKCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTb3VyY2VJbWFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCi0gICAgeyAKLSAgICAgICAgbV9z
b3VyY2VEcmF3aW5nUmVnaW9uID0gc291cmNlSW1hZ2VSZWN0OwotICAgICAgICBzZXRNYXhFZmZl
Y3RSZWN0cyhzb3VyY2VJbWFnZVJlY3QpOwotICAgICAgICBzZXRGaWx0ZXJSZWdpb24oc291cmNl
SW1hZ2VSZWN0KTsKLSAgICAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7Ci0g
ICAgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlRHJhd2luZ1JlZ2lvbjsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldEZpbHRl
clJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBtX2ZpbHRlclJlZ2lvbiA9
IGZpbHRlclJlZ2lvbjsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0KLSAgICBHcmFwaGljc0NvbnRleHQqIGlu
cHV0Q29udGV4dCgpOwotICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdCB7IHJldHVybiBs
YXN0RWZmZWN0KCktPmFzSW1hZ2VCdWZmZXIoKTsgfQotCiAgICAgYm9vbCBidWlsZChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAgICAgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKik7CisgICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkQ3VzdG9t
RmlsdGVyRWZmZWN0KERvY3VtZW50KiwgVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKik7
CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVy
UmVjdCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAgdm9p
ZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICB2b2lkIGFwcGx5KCk7Ci0gICAgCi0g
ICAgSW50UmVjdCBvdXRwdXRSZWN0KCkgY29uc3QgeyByZXR1cm4gbGFzdEVmZmVjdCgpLT5oYXNS
ZXN1bHQoKSA/IGxhc3RFZmZlY3QoKS0+cmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShJ
bnRSZWN0KG1fZmlsdGVyUmVnaW9uKSkgOiBJbnRSZWN0KCk7IH0KIAotICAgIGJvb2wgaGFzRmls
dGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNGaWx0ZXJUaGF0TW92ZXNQ
aXhlbHM7IH0KICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGly
dHlSZWN0KTsKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBib29sIGhhc0N1c3RvbVNo
YWRlckZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3VzdG9tU2hhZGVyRmlsdGVyOyB9CiAj
ZW5kaWYKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0cyhjb25zdCBGbG9hdFJl
Y3QmIGVmZmVjdFJlY3QpCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZWZmZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gbV9lZmZlY3RzLmF0KGkpOwotICAgICAgICAgICAgZWZmZWN0LT5zZXRNYXhFZmZl
Y3RSZWN0KGVmZmVjdFJlY3QpOwotICAgICAgICB9Ci0gICAgfQotICAgIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2VmZmVj
dHMuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBtX2VmZmVjdHMubGFzdCgpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOwotICAg
IHZpcnR1YWwgfkZpbHRlckVmZmVjdFJlbmRlcmVyKCk7Ci0gICAgCi0gICAgRmxvYXRSZWN0IG1f
c291cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0gICAg
Ci0gICAgRmlsdGVyRWZmZWN0TGlzdCBtX2VmZmVjdHM7Ci0gICAgUmVmUHRyPFNvdXJjZUdyYXBo
aWM+IG1fc291cmNlR3JhcGhpYzsKLSAgICAKLSAgICBJbnRSZWN0RXh0ZW50IG1fb3V0c2V0czsK
IAotICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkOwotICAgIGJvb2wgbV9oYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHM7CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIGJvb2wgbV9o
YXNDdXN0b21TaGFkZXJGaWx0ZXI7CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="217720"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>