<?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>179286</bug_id>
          
          <creation_ts>2017-11-04 12:20:35 -0700</creation_ts>
          <short_desc>Add a GraphicsContextImpl and use it for DispayList::Recorder</short_desc>
          <delta_ts>2017-11-15 09:41:59 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1368361</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 12:20:35 -0700</bug_when>
    <thetext>Add a GraphicsContextImpl and use it for DispayList::Recorder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368363</commentid>
    <comment_count>1</comment_count>
      <attachid>326033</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 12:22:36 -0700</bug_when>
    <thetext>Created attachment 326033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368364</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-04 12:26:05 -0700</bug_when>
    <thetext>Attachment 326033 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1553:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368369</commentid>
    <comment_count>3</comment_count>
      <attachid>326036</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 12:57:18 -0700</bug_when>
    <thetext>Created attachment 326036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368371</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-04 12:59:28 -0700</bug_when>
    <thetext>Attachment 326036 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1553:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368374</commentid>
    <comment_count>5</comment_count>
      <attachid>326038</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 13:28:24 -0700</bug_when>
    <thetext>Created attachment 326038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368394</commentid>
    <comment_count>6</comment_count>
      <attachid>326047</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 15:36:50 -0700</bug_when>
    <thetext>Created attachment 326047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368407</commentid>
    <comment_count>7</comment_count>
      <attachid>326047</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-04 16:43:59 -0700</bug_when>
    <thetext>Comment on attachment 326047
Patch

Clearing flags on attachment: 326047

Committed r224463: &lt;https://trac.webkit.org/changeset/224463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371966</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:41:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562254&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326033</attachid>
            <date>2017-11-04 12:22:36 -0700</date>
            <delta_ts>2017-11-04 12:57:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179286-20171104122235.patch</filename>
            <type>text/plain</type>
            <size>65693</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhZTMxYmEzZGZiZDhj
Yjc1NmJmMGJmNDI4YWMzZWZkZWIzZGRhNC4uNWIyMDkxNzllOTQ1NjMzZWYxNDBiMGU4MzRmZjk5
ODU2YWM0OWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxNy0xMS0wNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBHcmFw
aGljc0NvbnRleHRJbXBsIGFuZCB1c2UgaXQgZm9yIERpc3BheUxpc3Q6OlJlY29yZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydCBtb3Zpbmcg
dG93YXJkcyBhIG1vZGVsIHdoZW4gR3JhcGhpY3NDb250ZXh0IGhhcyBhIHBvaW50ZXIgdG8gYW4g
aW1wbGVtZW50YXRpb24KKyAgICAgICAgKCJwaW1wbCIpIGJ5IGFkZGluZyBHcmFwaGljc0NvbnRl
eHRJbXBsLCBhbmQgY29udmVydGluZyBkaXNwbGF5IGxpc3QgcmVjb3JkaW5nIHRvCisgICAgICAg
IGJlIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgR3JhcGhpY3NDb250ZXh0SW1wbC4KKworICAgICAg
ICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFNob3VsZEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFNob3VsZFNtb290aEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
b3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhh
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RHJhd0x1bWluYW5j
ZU1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseURldmljZVNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbEVsbGlw
c2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VFbGxpcHNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzUGxhdGZvcm1Db250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRpbmdEaXNhYmxlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERpc3BsYXlMaXN0UmVjb3Jk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc1JlY29y
ZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0SW1wbDo6R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsOjp+R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGw6OmdyYXBoaWNzQ29udGV4dCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0Vs
bGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVu
Y3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3Jt
VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dE1pdGVyTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJv
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmdldENUTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0VVJMRm9yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldElzQ0FMYXllckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Ojppc0NBTGF5ZXJDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0SXNBY2NlbGVyYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3Vs
ZEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1TdHJva2VFbGxpcHNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGVzdGluYXRpb25Gb3JSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkRGVzdGluYXRpb25BdFBvaW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnVwZGF0ZUl0ZW1FeHRl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRl
bnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6Oml0ZW1Db3VudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6
CisKIDIwMTctMTEtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmdldFJlZ2lzdHJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBkNzg2OTllZGVkNzg4M2U1MjE5MWM3OTA3NDJmNGJmNWYyMjFlNWYyLi5k
MmUxZWY3ZGE5NzZkYzk3MjFlYzQ4NzRjYTBiNzE2ZGU1MTYwZTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMTUwNSw2ICsxNTA1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YWRpZW50SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFu
c2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxYTAzMTFjMWYwNzUxNjk3YzA1YTMyNjg1MDljNTRjMDQ2YWU5MjBjLi4wNzYwZjAzMTNiYTVk
ZDRlNDI0MzU2MWNjZmRlY2Q3MmNlYjA4NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzQ5LDYgKzUzNDksOCBAQAogCQkw
QzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBT
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VhcmNoUG9wdXBNZW51Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwMDEyM0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dElt
cGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0SW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjAwMTI0MDFGQUQ4ODEwMDA1MzFENzYgLyogR3JhcGhpY3NDb250
ZXh0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRJbXBsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwM0MwNzMxODg0Njk1RTAwQTVGOENBIC8q
IFN5c3RlbU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1N
ZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwOTlEMDYxN0I5NjhBMTAw
RkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyog
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjI2MzQsNiArMjI2MzYsOCBAQAogCQkJCTZFMjFDNkJGMTEyNjMzODUwMEE3
QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8sCiAJCQkJNDlDN0I5RkIxMDQyRDM2NTAw
MDlENDQ3IC8qIEdyYXBoaWNzQ29udGV4dDNELmggKi8sCiAJCQkJN0MzMzBBMDExREY4RkFDNjAw
RDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovLAorCQkJCTBGMDAxMjQw
MUZBRDg4MTAwMDUzMUQ3NiAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmNwcCAqLywKKwkJCQkwRjAw
MTIzRjFGQUQ4N0Q2MDA1MzFENzYgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5oICovLAogCQkJCTBG
NTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4
MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBC
MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA0MzZkZjU0YzUzYzlkZWE4YWZmMDk3NzA1YmRjYjU4MTc4MmQ0NDYyLi5lMDdmZmNhN2Q2NWQ2
NTE1MWQyYjI5YjE3ZjE1ZTE5NDcwMDE1ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTMzNiw2ICszMzYsMTEg
QEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBsYXRmb3JtR3JhcGhpY3NDb250ZXgKICAgICBwbGF0Zm9ybUluaXQocGxhdGZvcm1HcmFw
aGljc0NvbnRleHQpOwogfQogCitHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChjb25z
dCBHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSYgZmFjdG9yeUZ1bmN0aW9uKQorICAgIDogbV9p
bXBsKGZhY3RvcnlGdW5jdGlvbigqdGhpcykpCit7Cit9CisKIEdyYXBoaWNzQ29udGV4dDo6fkdy
YXBoaWNzQ29udGV4dCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhY2suaXNFbXB0eSgpKTsKQEAgLTM1
MCw4ICszNTUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZSgpCiAKICAgICBtX3N0YWNr
LmFwcGVuZChtX3N0YXRlKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+c2F2ZSgpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5zYXZlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3Niw4ICszODEs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgaWYgKG1fc3RhY2suaXNF
bXB0eSgpKQogICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmco
KSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnJlc3RvcmUoKTsKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+cmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00MDcsOCArNDEyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlz
ZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogewog
ICAgIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gdGhpY2tuZXNzOwotICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7CisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00MTgsOCArNDIzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0
cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VTdHls
ZSA9IHN0eWxlOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVN0eWxlQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKHN0
eWxlKTsKQEAgLTQzMCw4ICs0MzUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSBjb2xv
cjsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0
cm9rZVBhdHRlcm4gPSBudWxscHRyOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0
cm9rZUNvbG9yKGNvbG9yKTsKQEAgLTQ0NSw4ICs0NTAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvcgogI2lmIFVTRShDRykKICAgICBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMgPSBm
YWxzZTsKICNlbmRpZgotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNoYWRvd0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwg
Y29sb3IpOwpAQCAtNDYwLDggKzQ2NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMZWdh
Y3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0CiAjaWYg
VVNFKENHKQogICAgIG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IHRydWU7CiAjZW5k
aWYKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFu
Z2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKQEAg
LTQ3Niw4ICs0ODEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQogICAg
IG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IGZhbHNlOwogI2VuZGlmCiAKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsZWFy
U2hhZG93KCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsZWFyU2hhZG93
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwpA
QCAtNTE2LDggKzUyMSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAg
ICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKIAotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01Mjcs
MTYgKzUzMiwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewogICAgIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFu
Z2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3Vs
ZEFudGlhbGlhcykKIHsKICAgICBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9IHNob3VsZEFudGlh
bGlhczsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZEFudGlhbGlhc0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXND
aGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDcsOCArNTUyLDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3Ro
Rm9udHMpCiB7CiAgICAgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IHNob3VsZFNtb290aEZv
bnRzOwogICAgIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFNtb290aEZvbnRzQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290
aEZvbnRzQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTU1OCw4ICs1
NjMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBz
aG91bGRTbW9vdGhGb250cykKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCiB7CiAgICAg
bV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHM7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCi0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAg
bV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSkKQEAgLTU2OSw4ICs1NzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bWFnZUludAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+
dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eUNoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU4MSw0NSAr
NTg2LDQ1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51bGxwdHI7
CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKLSAgICBpZiAo
aXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7Cisg
ICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQogewogICAg
IG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJu
ID0gV1RGTW92ZShwYXR0ZXJuKTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1w
bC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJu
Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJl
ZjxHcmFkaWVudD4mJiBncmFkaWVudCkKIHsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0g
V1RGTW92ZShncmFkaWVudCk7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRD
aGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKQogewog
ICAgIG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVsZTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAg
ICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxSdWxlQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCiB7CiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hh
bmdlKTsgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPworICAgIGlmIChtX2ltcGwpCisgICAg
ICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxHcmFkaWVudENoYW5nZSk7IC8vIEZJWE1FOiBhbHNvIGZpbGwgcGF0dGVybj8KIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkK
IHsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKG9wYWNp
dHkpOwpAQCAtNjI4LDggKzYzMyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5z
cGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRU
cmFuc3BhcmVuY3lMYXllcigpCiB7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIGlmICht
X2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAg
LTY1MSw4ICs2NTYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBG
b250Q2FzY2FkZSYgZm9udENhc2NhZGUsIGNvbnN0IEZvbnQmIGZvbgogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0dseXBocyhmb250LCBidWZmZXIs
IGZyb20sIG51bUdseXBocywgcG9pbnQsIGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLmZv
bnRTbW9vdGhpbmcoKSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdH
bHlwaHMoZm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250Q2FzY2FkZS5m
b250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC03MjIsOCArNzI3LDggQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRO
b3RoaW5nOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0lt
YWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAg
ICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29yZDsKICAgICB9CiAKQEAgLTcz
Niw4ICs3NDEsOCBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3Bh
Y2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNp
emUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkUmVjb3JkOwogICAgIH0KIApAQCAtNzUxLDggKzc1Niw4IEBAIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiAgICAgfQogCkBAIC04NDgsOCArODUzLDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVG
bGFncyBtb2RlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5n
TW9kZUNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2Rl
KG1vZGUpOwpAQCAtODYwLDggKzg2NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmco
KSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0KHJlY3QsIGdyYWRp
ZW50KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCwg
Z3JhZGllbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzMsOCArODc4LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3MKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCwgY29sb3IsIG9w
LCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04ODksOCArODk0LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rp
c3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSb3VuZGVkUmVjdChyZWN0LCBjb2xvciwgYmxlbmRNb2Rl
KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJvdW5kZWRSZWN0KHJl
Y3QsIGNvbG9yLCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MzIs
OCArOTM3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKIHsKICAgICBtX3N0YXRlLmFscGhhID0gYWxwaGE7Ci0g
ICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOwor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHNldFBsYXRmb3JtQWxwaGEoYWxwaGEpOwpAQCAtOTQzLDggKzk0OCw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0aW9uCiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNv
bXBvc2l0ZU9wZXJhdGlvbjsKICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CkBAIC05NTMsOCArOTU4LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRpb24KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVt
aW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKQogewogICAgIG1fc3RhdGUuZHJhd0x1
bWluYW5jZU1hc2sgPSBkcmF3THVtaW5hbmNlTWFzazsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpOworICAgIGlmIChtX2lt
cGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKTsKIH0KIAogI2lmICFVU0UoQ0cpICYmICFV
U0UoRElSRUNUMkQpCkBAIC0xMDIyLDggKzEwMjcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICBz
Y2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5hcHBseURl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTA0NSw4ICsxMDUwLDggQEAgRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6c2Nh
bGVGYWN0b3JGb3JEcmF3aW5nKGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnMKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkK
IHsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmZpbGxFbGxpcHNlKGVsbGlwc2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9p
bXBsLT5maWxsRWxsaXBzZShlbGxpcHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTA1NSw4ICsxMDYwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgZWxsaXBzZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlRWxsaXBzZShlbGxpcHNlKTsK
KyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ryb2tlRWxsaXBzZShlbGxpcHNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMzczZDAzNjAyYzA5ODc0YzVk
ZWU0YjQyNTMxMjhkM2YxN2I2MWVlLi45MTNjNDYzOGYzODFhZTg1ODE3N2EzOGEyZmM5ZDU5OTA2
MGEyODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtODAsNiArODAsNyBAQCBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGlu
ZVBhdHRlcm5HYXBXaWR0aCA9IDE7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9h
dFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBs
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZm
ZXI7CiBjbGFzcyBJbnRSZWN0OwpAQCAtMjUxLDYgKzI1MiwxMCBAQCBjbGFzcyBHcmFwaGljc0Nv
bnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopOworICAgIAorICAgIHVzaW5nIEdyYXBo
aWNzQ29udGV4dEltcGxGYWN0b3J5ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0SW1wbD4oR3JhcGhpY3NDb250ZXh0Jik+OworICAgIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSYpOworCiAg
ICAgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFw
aGljc0NvbnRleHQoKTsKICAgICAKQEAgLTI2MCwxNCArMjY1LDEyIEBAIHB1YmxpYzoKICAgICB9
OwogICAgIEdyYXBoaWNzQ29udGV4dChOb25QYWludGluZ1JlYXNvbnMpOwogCisgICAgYm9vbCBo
YXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7
CiAKLSAgICBib29sIHBhaW50aW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhICYm
ICFpc1JlY29yZGluZygpOyB9CisgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZGF0YSAmJiAhbV9pbXBsOyB9CiAgICAgYm9vbCB1cGRhdGluZ0NvbnRyb2xUaW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uUGFpbnRpbmdSZWFzb25zID09IE5vblBhaW50aW5nUmVh
c29uczo6VXBkYXRpbmdDb250cm9sVGludHM7IH0KIAotICAgIHZvaWQgc2V0RGlzcGxheUxpc3RS
ZWNvcmRlcihEaXNwbGF5TGlzdDo6UmVjb3JkZXIqIHJlY29yZGVyKSB7IG1fZGlzcGxheUxpc3RS
ZWNvcmRlciA9IHJlY29yZGVyOyB9Ci0gICAgYm9vbCBpc1JlY29yZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzcGxheUxpc3RSZWNvcmRlcjsgfQotCiAgICAgdm9pZCBzZXRTdHJva2VUaGlja25l
c3MoZmxvYXQpOwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CiAKQEAgLTY0MCw3ICs2NDMsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxGbG9hdFBvaW50PiBjZW50ZXJMaW5lQW5kQ3V0T2ZmQ29ybmVycyhib29sIGlz
VmVydGljYWxMaW5lLCBmbG9hdCBjb3JuZXJXaWR0aCwgRmxvYXRQb2ludCBwb2ludDEsIEZsb2F0
UG9pbnQgcG9pbnQyKSBjb25zdDsKIAogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSogbV9kYXRhIHsgbnVsbHB0ciB9OwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciogbV9kaXNw
bGF5TGlzdFJlY29yZGVyIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHRJbXBsPiBtX2ltcGw7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRl
OwogICAgIFZlY3RvcjxHcmFwaGljc0NvbnRleHRTdGF0ZSwgMT4gbV9zdGFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTE2ZWNiZTQ4N2YxMjczMGM5MzMyZmExMTA3NmMyNjc5MTc3ZmU2
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFw
aGljc0NvbnRleHRJbXBsOjpHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJikKKyAgICA6IG1f
Z3JhcGhpY3NDb250ZXh0KGNvbnRleHQpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEltcGw6On5H
cmFwaGljc0NvbnRleHRJbXBsKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMzYjQwMGM0MzVkNTc2ZDcwNGRkOGU5NWU0YzcwYmYwNjJmZDEx
NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGlj
c0NvbnRleHRJbXBsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHRJ
bXBsKTsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwor
ICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEltcGwoKTsKKworICAgIEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0NvbnRleHQ7IH0K
KworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNsZWFyU2hhZG93KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldExpbmVD
YXAoTGluZUNhcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNo
QXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExpbmVK
b2luKExpbmVKb2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQp
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9y
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFk
aWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3Qg
Q29sb3ImLCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRl
ZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFBhdGgo
Y29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGZsb2F0IGxpbmVXaWR0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VQYXRoKGNv
bnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JikgPSAwOworCisjaWYgVVNFKENHKQorICAgIHZpcnR1YWwgdm9pZCBhcHBseVN0cm9rZVBhdHRl
cm4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CisjZW5k
aWYKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6
OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0
UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRv
dWJsZUxpbmVzLCBmbG9hdCBzdHJva2VUaGlja25lc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgs
IEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3UGF0aChjb25zdCBQYXRoJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdG
b2N1c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENv
bG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9y
ZSgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcE91
dChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBPdXQoY29uc3Qg
UGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRS
dWxlKSA9IDA7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpID0gMDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0
OworICAgIEdyYXBoaWNzQ29udGV4dCYgbV9ncmFwaGljc0NvbnRleHQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlYTkzY2M1Zjg5NTliZDEyYjFjMmRj
NGY5MmI2Nzk4M2E5NzJhNTZlLi5hNWE3YjhmM2UzN2ZlNTg2M2U3YzE2OTlmZGRlMDgwMmY4NWQ4
YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE1NTAsOSArMTU1MCw5IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRlJiBjb21taXRT
dGF0ZSwgY29uCiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRz
T3JpZ2luKCksIHNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQ7Ci0g
ICAgICAgIC8vIFRoZSBSZWNvcmRlciBpcyBsYXJnZSwgc28gaGVhcC1hbGxvY2F0ZS4KLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4gcmVjb3JkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxp
c3QsIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpeworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAq
bV9kaXNwbGF5TGlzdCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAg
fSk7CiAgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRl
eCA3Y2ZhZmNlNDM0ZmFhZWJhMjU5Y2U5MDgyYTdmNzhmOTMwMmExMWFjLi5mYzI5MWUyZWNiY2Qy
NmI2MWZlNWNlMjkwMGE4NGE1ZmM4NzNkNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNjUs
NyArMTY1LDcgQEAgQ0dDb250ZXh0UmVmIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0
KCkgY29uc3QKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7CiAg
ICAgQVNTRVJUKCFwYWludGluZ0Rpc2FibGVkKCkpOwotICAgIEFTU0VSVCghaXNSZWNvcmRpbmco
KSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIC8vIE5vdGU6IERv
IG5vdCB1c2UgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhpcyBjbGFzcyBpbXBsZW1lbnRhdGlvbiwg
c2luY2Ugd2Ugd2FudCB0byBhdm9pZCB0aGUgZXh0cmEKICAgICAvLyBzYXZlIG9mIHRoZSBzZWNv
bmRhcnkgY29udGV4dCAoaW4gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCkuCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9ybVN0YXRl
KCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7CiAgICAg
QVNTRVJUKCFwYWludGluZ0Rpc2FibGVkKCkpOwotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7
CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIC8vIE5vdGU6IERvIG5v
dCB1c2UgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhpcyBjbGFzcyBpbXBsZW1lbnRhdGlvbiwgc2lu
Y2Ugd2Ugd2FudCB0byBhdm9pZCB0aGUgZXh0cmEKICAgICAvLyByZXN0b3JlIG9mIHRoZSBzZWNv
bmRhcnkgY29udGV4dCAoaW4gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCkuCkBA
IC0xOTAsOCArMTkwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShj
b25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRp
b24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjUsOCArMzI1LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJu
VHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdQYXR0ZXJu
KGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+
ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MzAsOCArNDMwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1JlY3QocmVjdCwgYm9yZGVyVGhp
Y2tuZXNzKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1JlY3QocmVj
dCwgYm9yZGVyVGhpY2tuZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDY4LDgg
KzQ2OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50CiAgICAgaWYgKHN0cm9rZVN0eWxlKCkg
PT0gTm9TdHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0xpbmUocG9pbnQxLCBwb2ludDIp
OworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TGluZShwb2ludDEsIHBv
aW50Mik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUzMyw4ICs1MzMsOCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1Jl
Y29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0VsbGlwc2Uo
cmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdFbGxpcHNlKHJl
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDgsOCArNTQ4LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5hcHBseVN0cm9rZVBhdHRlcm4oKTsKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+YXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3Miw4ICs1NzIsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6YXBwbHlGaWxsUGF0dGVybigpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT5hcHBseUZpbGxQYXR0ZXJuKCk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPmFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNjIzLDggKzYyMyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1BhdGgocGF0aCk7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQYXRoKHBhdGgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC02NTcsOCArNjU3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRo
KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUGF0aChwYXRoKTsKKyAgICBpZiAobV9p
bXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTcyMCw4ICs3MjAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlUGF0aChwYXRoKTsKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ryb2tlUGF0aChwYXRoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNzgyLDggKzc4Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUmVjdChyZWN0KTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTgzNSw4ICs4MzUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUmVjdChyZWN0LCBjb2xvcik7
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmZpbGxSZWN0KHJlY3QsIGNvbG9y
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByZWN0LCBjb25zCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1Bs
YXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0KCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7CkBAIC05MTMs
OCArOTEzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3Qs
IHJvdW5kZWRIb2xlUmVjdCwgY29sb3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9p
bXBsLT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShyZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9y
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTU5LDggKzk1OSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkg
ewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXAocmVjdCk7CisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXAocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTk3Myw4ICs5NzMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT5jbGlwT3V0KHJlY3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5jbGlwT3V0KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OTUs
OCArOTk1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0
aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBP
dXQocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXBPdXQocGF0
aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwMTIsOCArMTAxMiw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBjbGlw
UnVsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNs
aXBQYXRoKHBhdGgsIGNsaXBSdWxlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+Y2xpcFBhdGgocGF0aCwgY2xpcFJ1bGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMDM4LDcgKzEwMzgsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygp
IGNvbnN0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEludFJl
Y3QoKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAg
ICAgICBXVEZMb2dBbHdheXMoIkdldHRpbmcgdGhlIGNsaXAgYm91bmRzIG5vdCB5ZXQgc3VwcG9y
dGVkIHdpdGggZGlzcGxheSBsaXN0cyIpOwogICAgICAgICByZXR1cm4gSW50UmVjdCgtMjA0OCwg
LTIwNDgsIDQwOTYsIDQwOTYpOyAvLyBGSVhNRTogZGlzcGxheSBsaXN0cy4KICAgICB9CkBAIC0x
MDUxLDcgKzEwNTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5z
cGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgc2F2ZSgpOwogCkBAIC0xMDY2LDcgKzEw
NjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXll
cigpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBD
R0NvbnRleHRFbmRUcmFuc3BhcmVuY3lMYXllcihjb250ZXh0KTsKQEAgLTExMTIsNyArMTExMiw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIAogICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBh
dm9pZCB0aGUgc2hhZG93IHNldHVwIGNvc3Qgd2hlbiB3ZSBrbm93IHdlJ2xsIHJlbmRlciB0aGUg
c2hhZG93IG91cnNlbHZlcy4KIApAQCAtMTE2NCw5ICsxMTY0LDkgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldE1pdGVyTGltaXQoZmxvYXQgbGltaXQpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBp
ZiAobV9pbXBsKSB7CiAgICAgICAgIC8vIE1heWJlIHRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgdGhl
IHN0YXRlLgotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldE1pdGVyTGltaXQobGlt
aXQpOworICAgICAgICBtX2ltcGwtPnNldE1pdGVyTGltaXQobGltaXQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMTc4LDggKzExNzgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsZWFyUmVjdChyKTsKKyAgICBpZiAobV9pbXBsKSB7Cisg
ICAgICAgIG1faW1wbC0+Y2xlYXJSZWN0KHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMTkxLDggKzExOTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnN0cm9rZVJlY3QocmVjdCwgbGluZVdpZHRoKTsK
KyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ryb2tlUmVjdChyZWN0LCBsaW5l
V2lkdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjYxLDggKzEyNjEsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2FwIGNhcCkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmco
KSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldExpbmVDYXAoY2FwKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2V0TGluZUNhcChjYXApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMjg0LDggKzEyODQsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBkYXNoZXMsIGZsb2F0IGRhc2hPZmZz
ZXQpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRM
aW5lRGFzaChkYXNoZXMsIGRhc2hPZmZzZXQpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5zZXRMaW5lRGFzaChkYXNoZXMsIGRhc2hPZmZzZXQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMzA0LDggKzEzMDQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
TGluZUpvaW4oTGluZUpvaW4gam9pbikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPnNldExpbmVKb2luKGpvaW4pOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5zZXRMaW5lSm9pbihqb2luKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTMzMiw4ICsxMzMyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPnNjYWxlKHNpemUpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBs
LT5zY2FsZShzaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0Nyw4ICsxMzQ3
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZShmbG9hdCBhbmdsZSkKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnJvdGF0ZShhbmdsZSk7Cisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnJvdGF0ZShhbmdsZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEzNjIsOCArMTM2Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAg
ICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnRyYW5zbGF0ZSh4LCB5KTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+dHJhbnNsYXRlKHgsIHkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMzc3LDggKzEzNzcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y29uY2F0
Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0g
ICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29y
ZGluZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBo
aWNzQ29udGV4dDo6c2V0Q1RNKCkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29u
dGV4dHMuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDA3LDcgKzE0MDcsNyBAQCBB
ZmZpbmVUcmFuc2Zvcm0gR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0oSW5jbHVkZURldmljZVNjYWxl
IGluY2x1ZGVTY2FsZSkgY29uc3QKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewor
ICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6
OmdldENUTSgpIGlzIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4i
KTsKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogICAgIH0KQEAgLTE0MjYsNyAr
MTQyNiw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBSb3VuZGluZ01vCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewor
ICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6
OnJvdW5kVG9EZXZpY2VQaXhlbHMoKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCByZWNvcmRp
bmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybiByZWN0OwogICAgIH0KQEAgLTE0ODksOCAr
MTQ4OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBjb25zdCBEYXNoQXJyYXkmCiAgICAgaWYgKCF3aWR0aHMuc2l6ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdMaW5lc0ZvclRleHQocG9pbnQsIHdpZHRocywgcHJp
bnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmRyYXdMaW5lc0ZvclRleHQocG9pbnQsIHdpZHRocywgcHJpbnRp
bmcsIGRvdWJsZUxpbmVzLCBzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxG
b3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFw
aGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCBy
ZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybjsgLy8gRklYTUUgZm9yIGRpc3Bs
YXkgbGlzdHMuCiAgICAgfQpAQCAtMTYwMyw3ICsxNjAzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldElzQ0FMYXllckNvbnRleHQoYm9vbCBpc0xheWVyQ29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gRklYTUUKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICBpZiAobV9p
bXBsKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNMYXllckNvbnRleHQpCkBAIC0xNjE4
LDcgKzE2MTgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDQUxheWVyQ29udGV4dCgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpCisgICAgaWYgKG1faW1wbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIG1fZGF0YS0+bV9jb250ZXh0RmxhZ3MgJiBJc0xheWVyQ0dDb250ZXh0OwpAQCAtMTYz
MCw3ICsxNjMwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldElzQWNjZWxlcmF0ZWRDb250
ZXh0KGJvb2wgaXNBY2NlbGVyYXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICBpZiAobV9pbXBsKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoaXNBY2NlbGVyYXRlZCkKQEAgLTE2NDUsNyArMTY0NSw3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIEZJWE1FCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgaWYg
KG1faW1wbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1fZGF0YS0+bV9j
b250ZXh0RmxhZ3MgJiBJc0FjY2VsZXJhdGVkQ0dDb250ZXh0OwpAQCAtMTY1Niw3ICsxNjU2LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHRE
cmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFz
UGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAgLTE2NzksNyArMTY3OSw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQo
KSk7CiAKICAgICBzZXRDR1N0cm9rZUNvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvcik7CiB9
CkBAIC0xNjg5LDcgKzE2ODksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
dHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAg
QVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFNldExpbmVXaWR0
aChwbGF0Zm9ybUNvbnRleHQoKSwgc3RkOjptYXgodGhpY2tuZXNzLCAwLmYpKTsKIH0KQEAgLTE2
OTksNyArMTY5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFz
UGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0
KCksIGNvbG9yKTsKIH0KQEAgLTE3MDksNyArMTcwOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5n
KCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRT
ZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCksIGVuYWJsZSk7CiB9CkBAIC0xNzE5
LDcgKzE3MTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRTbW9v
dGhGb250cyhib29sIGVuYWJsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhw
bGF0Zm9ybUNvbnRleHQoKSwgZW5hYmxlKTsKIH0KQEAgLTE3MjksNyArMTcyOSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKGZsb2F0IGFscGhhKQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNv
cmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29u
dGV4dFNldEFscGhhKHBsYXRmb3JtQ29udGV4dCgpLCBhbHBoYSk7CiB9CkBAIC0xNzM5LDcgKzE3
MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlT3BlcmF0b3IgbW9kZSwgQmxlbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAg
QVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQmxlbmRNb2RlIHRhcmdldCA9
IGtDR0JsZW5kTW9kZU5vcm1hbDsKICAgICBpZiAoYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1h
bCkgewpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
QXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVj
b3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICAvLyBD
b3JlR3JhcGhpY3MgZXhwZWN0cyB0aGUgYmFzZSBDVE0gb2YgYSBIaURQSSBjb250ZXh0IHRvIGhh
dmUgdGhlIHNjYWxlIGZhY3RvciBhcHBsaWVkIHRvIGl0LgogICAgIC8vIEZhaWxpbmcgdG8gY2hh
bmdlIHRoZSBiYXNlIGxldmVsIENUTSB3aWxsIGNhdXNlIGNlcnRhaW4gQ0cgZmVhdHVyZXMsIHN1
Y2ggYXMgZm9jdXMgcmluZ3MsCkBAIC0xODY1LDcgKzE4NjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1GaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFp
c1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAg
Ly8gQ0dDb250ZXh0RmlsbEVsbGlwc2VJblJlY3Qgb25seSBzdXBwb3J0cyBzb2xpZCBjb2xvcnMu
CiAgICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsK
QEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybVN0cm9r
ZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIC8vIENHQ29udGV4dFN0cm9r
ZUVsbGlwc2VJblJlY3Qgb25seSBzdXBwb3J0cyBzb2xpZCBjb2xvcnMuCiAgICAgaWYgKG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuKSB7CkBAIC0xOTA0LDYg
KzE5MDQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RGVzdGluYXRpb25Gb3JSZWN0KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRmxvYXRSZWN0JgogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQo
KSk7CisKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCiAg
ICAgRmxvYXRSZWN0IHJlY3QgPSBkZXN0UmVjdDsKQEAgLTE5MTgsNiArMTkyMCw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjphZGREZXN0aW5hdGlvbkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBGbG9hdFBvaW50CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKwogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBDR1BvaW50IHRyYW5z
Zm9ybWVkUG9pbnQgPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocG9zaXRpb24sIENHQ29u
dGV4dEdldENUTShjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCmluZGV4IDFj
MGE3NjA4NjY4NTA0YmUxODMxOGVhOTcxNDM1M2E5ZWFiMTg5ZjQuLjMzYzQ4MDBjNjg2MjBkNjkx
M2E3OTRhMmNjNDVlNzU4MzhjMWM0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCkBA
IC0xMTksOCArMTE5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29u
c3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpIHx8IHBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0Zv
Y3VzUmluZyhwYXRoLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPmRyYXdGb2N1c1JpbmcocGF0aCwgd2lkdGgsIG9mZnNldCwgY29sb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZG91YmxlIHRpbWVP
ZmZzZXQsIGJvb2wmIG4KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSAvLyBGSVhNRTog
aW1wbGVtZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcgZHJhd2luZy4KKyAgICBpZiAobV9pbXBsKSAv
LyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcgZHJhd2luZy4KICAgICAgICAg
cmV0dXJuOwogCiAgICAgbmVlZHNSZWRyYXcgPSBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1l
KHBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLnBsYXRmb3JtUGF0aCgpLCB0aW1lT2Zmc2V0KTsKQEAg
LTE1MCw3ICsxNTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGRvdWJsZSB0aW1lTwogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSAv
LyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcgZHJhd2luZy4KKyAgICBpZiAo
bV9pbXBsKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcgZHJhd2luZy4K
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IGZvY3Vz
UmluZ1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CkBAIC0xNjcsOCArMTY3
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZs
b2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdGb2N1c1JpbmcocmVjdHMsIHdpZHRoLCBvZmZzZXQs
IGNvbG9yKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0ZvY3VzUmlu
ZyhyZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMzdiZDQxZTZm
YmE5YzE0MTQwZWE0NDc5NjUyZmFlZDFhMWU3NzExYy4uZDg3NjFiZWY5NDcxMzBjNDBmOWIwMzJh
YjdjYWE4ZDk0ZTgyM2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtMzcsMTEgKzM3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CiAKIFJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBiYXNlQ1RNKQotICAgIDogbV9ncmFwaGljc0NvbnRl
eHQoY29udGV4dCkKKyAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENs
aXAsIGJhc2VDVE0pCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQogewogICAgIExP
R19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBj
bGlwICIgPDwgaW5pdGlhbENsaXApOwotICAgIG1fZ3JhcGhpY3NDb250ZXh0LnNldERpc3BsYXlM
aXN0UmVjb3JkZXIodGhpcyk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChDb250ZXh0U3RhdGUo
YmFzZUNUTSwgaW5pdGlhbENsaXApKTsKIH0KIApAQCAtMzc0LDcgKzM3Myw3IEBAIEl0ZW0mIFJl
Y29yZGVyOjphcHBlbmRJdGVtKFJlZjxJdGVtPiYmIGl0ZW0pCiAKIHZvaWQgUmVjb3JkZXI6OnVw
ZGF0ZUl0ZW1FeHRlbnQoRHJhd2luZ0l0ZW0mIGl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcyhtX2dyYXBoaWNzQ29u
dGV4dCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2Nh
bEJvdW5kcyhncmFwaGljc0NvbnRleHQoKSkpCiAgICAgICAgIGl0ZW0uc2V0RXh0ZW50KGV4dGVu
dEZyb21Mb2NhbEJvdW5kcyhyZWN0LnZhbHVlKCkpKTsKIH0KIApAQCAtMzk2LDcgKzM5NSw3IEBA
IEZsb2F0UmVjdCBSZWNvcmRlcjo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNo
YWRvd1JhZGl1czsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAobV9ncmFwaGljc0Nv
bnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikp
IHsKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KCkuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVu
dD0gYm91bmRzOwogICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOwogICAg
ICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRp
dXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDZhMjkwMjMz
NDc3MTYwZjQ1MDk5OWQxZTIzNGRiZjI5MjIwNzgwMDUuLmY5ZTQ5YTU5MGI5Y2I4MTA5OWM0MjMw
YmE3MDhkZTQzMjQwYmQxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEaXNwbGF5TGlz
dC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIiAvLyBGb3IgSW50ZXJwb2xhdGlvblF1
YWxpdHkuCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkltYWdl
LmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1bGUuCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00Nyw3OSArNDcsNzkgQEAgbmFtZXNwYWNlIERp
c3BsYXlMaXN0IHsKIAogY2xhc3MgRHJhd2luZ0l0ZW07CiAKLWNsYXNzIFJlY29yZGVyIHsKK2Ns
YXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKICAgICBSZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIH5SZWNvcmRlcigpOwotCi0gICAgdm9pZCB1cGRhdGVT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKTsKLSAgICB2b2lkIGNsZWFyU2hhZG93KCk7Ci0KLSAgICB2b2lkIHNl
dExpbmVDYXAoTGluZUNhcCk7Ci0gICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkm
LCBmbG9hdCBkYXNoT2Zmc2V0KTsKLSAgICB2b2lkIHNldExpbmVKb2luKExpbmVKb2luKTsKLSAg
ICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpOwotCi0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJik7Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwot
ICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpOwotICAgIHZvaWQgZmlsbFBhdGgo
Y29uc3QgUGF0aCYpOwotICAgIHZvaWQgZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7Ci0g
ICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7Ci0g
ICAgdm9pZCBzdHJva2VQYXRoKGNvbnN0IFBhdGgmKTsKLSAgICB2b2lkIHN0cm9rZUVsbGlwc2Uo
Y29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdmlydHVhbCB+UmVjb3JkZXIoKTsKKworICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgpOyB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyU2hh
ZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExpbmVKb2luKExpbmVKb2luKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpIG92ZXJyaWRlOworCisgICAgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmls
bFBhdGgoY29uc3QgUGF0aCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlsbEVsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGZsb2F0IGxpbmVXaWR0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJva2VQYXRoKGNvbnN0
IFBhdGgmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CiAKICNpZiBVU0UoQ0cpCi0gICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKLSAgICB2
b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKKyAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpIG92
ZXJyaWRlOworICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2VuZGlmCiAK
LSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQ
b2ludCwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250
JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpOwotICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKTsKLSAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVs
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICB2b2lkIGRyYXdJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykK
LSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbik7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24pIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCkgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cyk7Ci0gICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2lu
dCYpOwotICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIGZsb2F0
IHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgdm9pZCBkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNv
bnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1h
cmtlckxpbmVTdHlsZSk7Ci0gICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsK
LSAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKKyAgICB2b2lkIGRyYXdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRGFzaEFy
cmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIGZsb2F0IHN0cm9r
ZVRoaWNrbmVzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TGluZUZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgs
IGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29u
c3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBD
b2xvciYpOworICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgs
IGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdGb2N1
c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0
LCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzYXZlKCk7Ci0gICAgdm9pZCBy
ZXN0b3JlKCk7CisgICAgdm9pZCBzYXZlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN0b3JlKCkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2
b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7Ci0gICAgdm9pZCBzY2FsZShjb25zdCBG
bG9hdFNpemUmKTsKLSAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsK
KyAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKKyAgICB2b2lk
IHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2FsZShj
b25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KTsKLSAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
dm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpIG92ZXJyaWRlOworICAg
IHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY2xpcChj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jik7Ci0g
ICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKTsKLSAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBh
dGgmLCBXaW5kUnVsZSk7CisgICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OworICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNsaXBPdXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFBhdGgoY29uc3Qg
UGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIGFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQpOworICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
b3ZlcnJpZGU7CiAKLSAgICBzaXplX3QgaXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5TGlzdC5pdGVtQ291bnQoKTsgfQotCi1wcml2YXRlOgogICAgIEl0ZW0mIGFwcGVuZEl0ZW0o
UmVmPEl0ZW0+JiYpOwogICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpOwogCkBA
IC0xNjEsNyArMTYxLDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBDb250ZXh0U3RhdGUmIGN1cnJl
bnRTdGF0ZSgpIGNvbnN0OwogICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQmIG1fZ3JhcGhpY3NDb250ZXh0OwogICAgIERpc3BsYXlMaXN0JiBt
X2Rpc3BsYXlMaXN0OwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1fc3RhdGVTdGFj
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGRiN2M4Zjcw
ZTVlZDgwZDQ4NjgyMjgwNDg4MjRkNDc4NTA4OWU0OTEuLjk3OGU5NWNjMDFmYzZiMzVmMzY4Y2Iz
ZGI3ZTZiNTdmZmYyMmIzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJl
bmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoVU5MSUtFTFkocGFpbnRJbmZvLmNvbnRleHQoKS5pc1JlY29yZGlu
ZygpKSkKKyAgICBpZiAoVU5MSUtFTFkoIXBhaW50SW5mby5jb250ZXh0KCkuaGFzUGxhdGZvcm1D
b250ZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0
ID0gYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326036</attachid>
            <date>2017-11-04 12:57:18 -0700</date>
            <delta_ts>2017-11-04 13:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179286-20171104125716.patch</filename>
            <type>text/plain</type>
            <size>77909</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhZTMxYmEzZGZiZDhj
Yjc1NmJmMGJmNDI4YWMzZWZkZWIzZGRhNC4uNWIyMDkxNzllOTQ1NjMzZWYxNDBiMGU4MzRmZjk5
ODU2YWM0OWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxNy0xMS0wNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBHcmFw
aGljc0NvbnRleHRJbXBsIGFuZCB1c2UgaXQgZm9yIERpc3BheUxpc3Q6OlJlY29yZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydCBtb3Zpbmcg
dG93YXJkcyBhIG1vZGVsIHdoZW4gR3JhcGhpY3NDb250ZXh0IGhhcyBhIHBvaW50ZXIgdG8gYW4g
aW1wbGVtZW50YXRpb24KKyAgICAgICAgKCJwaW1wbCIpIGJ5IGFkZGluZyBHcmFwaGljc0NvbnRl
eHRJbXBsLCBhbmQgY29udmVydGluZyBkaXNwbGF5IGxpc3QgcmVjb3JkaW5nIHRvCisgICAgICAg
IGJlIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgR3JhcGhpY3NDb250ZXh0SW1wbC4KKworICAgICAg
ICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFNob3VsZEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFNob3VsZFNtb290aEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
b3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhh
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RHJhd0x1bWluYW5j
ZU1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseURldmljZVNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbEVsbGlw
c2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VFbGxpcHNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzUGxhdGZvcm1Db250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRpbmdEaXNhYmxlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERpc3BsYXlMaXN0UmVjb3Jk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc1JlY29y
ZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0SW1wbDo6R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsOjp+R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGw6OmdyYXBoaWNzQ29udGV4dCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0Vs
bGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVu
Y3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3Jt
VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dE1pdGVyTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJv
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmdldENUTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0VVJMRm9yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldElzQ0FMYXllckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Ojppc0NBTGF5ZXJDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0SXNBY2NlbGVyYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3Vs
ZEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1TdHJva2VFbGxpcHNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGVzdGluYXRpb25Gb3JSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkRGVzdGluYXRpb25BdFBvaW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnVwZGF0ZUl0ZW1FeHRl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRl
bnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6Oml0ZW1Db3VudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6
CisKIDIwMTctMTEtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmdldFJlZ2lzdHJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBkNzg2OTllZGVkNzg4M2U1MjE5MWM3OTA3NDJmNGJmNWYyMjFlNWYyLi5k
MmUxZWY3ZGE5NzZkYzk3MjFlYzQ4NzRjYTBiNzE2ZGU1MTYwZTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMTUwNSw2ICsxNTA1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YWRpZW50SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFu
c2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxYTAzMTFjMWYwNzUxNjk3YzA1YTMyNjg1MDljNTRjMDQ2YWU5MjBjLi4wNzYwZjAzMTNiYTVk
ZDRlNDI0MzU2MWNjZmRlY2Q3MmNlYjA4NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzQ5LDYgKzUzNDksOCBAQAogCQkw
QzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBT
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VhcmNoUG9wdXBNZW51Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwMDEyM0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dElt
cGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0SW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjAwMTI0MDFGQUQ4ODEwMDA1MzFENzYgLyogR3JhcGhpY3NDb250
ZXh0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRJbXBsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwM0MwNzMxODg0Njk1RTAwQTVGOENBIC8q
IFN5c3RlbU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1N
ZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwOTlEMDYxN0I5NjhBMTAw
RkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyog
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjI2MzQsNiArMjI2MzYsOCBAQAogCQkJCTZFMjFDNkJGMTEyNjMzODUwMEE3
QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8sCiAJCQkJNDlDN0I5RkIxMDQyRDM2NTAw
MDlENDQ3IC8qIEdyYXBoaWNzQ29udGV4dDNELmggKi8sCiAJCQkJN0MzMzBBMDExREY4RkFDNjAw
RDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovLAorCQkJCTBGMDAxMjQw
MUZBRDg4MTAwMDUzMUQ3NiAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmNwcCAqLywKKwkJCQkwRjAw
MTIzRjFGQUQ4N0Q2MDA1MzFENzYgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5oICovLAogCQkJCTBG
NTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4
MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBC
MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA0MzZkZjU0YzUzYzlkZWE4YWZmMDk3NzA1YmRjYjU4MTc4MmQ0NDYyLi5lMDdmZmNhN2Q2NWQ2
NTE1MWQyYjI5YjE3ZjE1ZTE5NDcwMDE1ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTMzNiw2ICszMzYsMTEg
QEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBsYXRmb3JtR3JhcGhpY3NDb250ZXgKICAgICBwbGF0Zm9ybUluaXQocGxhdGZvcm1HcmFw
aGljc0NvbnRleHQpOwogfQogCitHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChjb25z
dCBHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSYgZmFjdG9yeUZ1bmN0aW9uKQorICAgIDogbV9p
bXBsKGZhY3RvcnlGdW5jdGlvbigqdGhpcykpCit7Cit9CisKIEdyYXBoaWNzQ29udGV4dDo6fkdy
YXBoaWNzQ29udGV4dCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhY2suaXNFbXB0eSgpKTsKQEAgLTM1
MCw4ICszNTUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZSgpCiAKICAgICBtX3N0YWNr
LmFwcGVuZChtX3N0YXRlKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+c2F2ZSgpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5zYXZlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3Niw4ICszODEs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgaWYgKG1fc3RhY2suaXNF
bXB0eSgpKQogICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmco
KSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnJlc3RvcmUoKTsKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+cmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00MDcsOCArNDEyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlz
ZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogewog
ICAgIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gdGhpY2tuZXNzOwotICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7CisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00MTgsOCArNDIzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0
cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VTdHls
ZSA9IHN0eWxlOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVN0eWxlQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKHN0
eWxlKTsKQEAgLTQzMCw4ICs0MzUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSBjb2xv
cjsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0
cm9rZVBhdHRlcm4gPSBudWxscHRyOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0
cm9rZUNvbG9yKGNvbG9yKTsKQEAgLTQ0NSw4ICs0NTAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvcgogI2lmIFVTRShDRykKICAgICBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMgPSBm
YWxzZTsKICNlbmRpZgotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNoYWRvd0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwg
Y29sb3IpOwpAQCAtNDYwLDggKzQ2NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMZWdh
Y3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0CiAjaWYg
VVNFKENHKQogICAgIG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IHRydWU7CiAjZW5k
aWYKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFu
Z2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKQEAg
LTQ3Niw4ICs0ODEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQogICAg
IG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IGZhbHNlOwogI2VuZGlmCiAKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsZWFy
U2hhZG93KCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsZWFyU2hhZG93
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwpA
QCAtNTE2LDggKzUyMSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAg
ICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKIAotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01Mjcs
MTYgKzUzMiwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewogICAgIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFu
Z2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3Vs
ZEFudGlhbGlhcykKIHsKICAgICBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9IHNob3VsZEFudGlh
bGlhczsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZEFudGlhbGlhc0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXND
aGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDcsOCArNTUyLDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3Ro
Rm9udHMpCiB7CiAgICAgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IHNob3VsZFNtb290aEZv
bnRzOwogICAgIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFNtb290aEZvbnRzQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290
aEZvbnRzQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTU1OCw4ICs1
NjMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBz
aG91bGRTbW9vdGhGb250cykKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCiB7CiAgICAg
bV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHM7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCi0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAg
bV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSkKQEAgLTU2OSw4ICs1NzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bWFnZUludAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+
dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eUNoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU4MSw0NSAr
NTg2LDQ1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51bGxwdHI7
CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKLSAgICBpZiAo
aXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7Cisg
ICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQogewogICAg
IG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJu
ID0gV1RGTW92ZShwYXR0ZXJuKTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1w
bC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJu
Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJl
ZjxHcmFkaWVudD4mJiBncmFkaWVudCkKIHsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0g
V1RGTW92ZShncmFkaWVudCk7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRD
aGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKQogewog
ICAgIG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVsZTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAg
ICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxSdWxlQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCiB7CiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hh
bmdlKTsgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPworICAgIGlmIChtX2ltcGwpCisgICAg
ICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxHcmFkaWVudENoYW5nZSk7IC8vIEZJWE1FOiBhbHNvIGZpbGwgcGF0dGVybj8KIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkK
IHsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKG9wYWNp
dHkpOwpAQCAtNjI4LDggKzYzMyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5z
cGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRU
cmFuc3BhcmVuY3lMYXllcigpCiB7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIGlmICht
X2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAg
LTY1MSw4ICs2NTYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBG
b250Q2FzY2FkZSYgZm9udENhc2NhZGUsIGNvbnN0IEZvbnQmIGZvbgogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0dseXBocyhmb250LCBidWZmZXIs
IGZyb20sIG51bUdseXBocywgcG9pbnQsIGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLmZv
bnRTbW9vdGhpbmcoKSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdH
bHlwaHMoZm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250Q2FzY2FkZS5m
b250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC03MjIsOCArNzI3LDggQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRO
b3RoaW5nOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0lt
YWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAg
ICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29yZDsKICAgICB9CiAKQEAgLTcz
Niw4ICs3NDEsOCBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3Bh
Y2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNp
emUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkUmVjb3JkOwogICAgIH0KIApAQCAtNzUxLDggKzc1Niw4IEBAIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiAgICAgfQogCkBAIC04NDgsOCArODUzLDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVG
bGFncyBtb2RlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5n
TW9kZUNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2Rl
KG1vZGUpOwpAQCAtODYwLDggKzg2NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmco
KSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0KHJlY3QsIGdyYWRp
ZW50KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCwg
Z3JhZGllbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzMsOCArODc4LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3MKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCwgY29sb3IsIG9w
LCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04ODksOCArODk0LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rp
c3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSb3VuZGVkUmVjdChyZWN0LCBjb2xvciwgYmxlbmRNb2Rl
KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJvdW5kZWRSZWN0KHJl
Y3QsIGNvbG9yLCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MzIs
OCArOTM3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKIHsKICAgICBtX3N0YXRlLmFscGhhID0gYWxwaGE7Ci0g
ICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOwor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHNldFBsYXRmb3JtQWxwaGEoYWxwaGEpOwpAQCAtOTQzLDggKzk0OCw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0aW9uCiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNv
bXBvc2l0ZU9wZXJhdGlvbjsKICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CkBAIC05NTMsOCArOTU4LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRpb24KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVt
aW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKQogewogICAgIG1fc3RhdGUuZHJhd0x1
bWluYW5jZU1hc2sgPSBkcmF3THVtaW5hbmNlTWFzazsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpOworICAgIGlmIChtX2lt
cGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKTsKIH0KIAogI2lmICFVU0UoQ0cpICYmICFV
U0UoRElSRUNUMkQpCkBAIC0xMDIyLDggKzEwMjcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICBz
Y2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5hcHBseURl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTA0NSw4ICsxMDUwLDggQEAgRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6c2Nh
bGVGYWN0b3JGb3JEcmF3aW5nKGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnMKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkK
IHsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmZpbGxFbGxpcHNlKGVsbGlwc2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9p
bXBsLT5maWxsRWxsaXBzZShlbGxpcHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTA1NSw4ICsxMDYwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgZWxsaXBzZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlRWxsaXBzZShlbGxpcHNlKTsK
KyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ryb2tlRWxsaXBzZShlbGxpcHNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMzczZDAzNjAyYzA5ODc0YzVk
ZWU0YjQyNTMxMjhkM2YxN2I2MWVlLi45MTNjNDYzOGYzODFhZTg1ODE3N2EzOGEyZmM5ZDU5OTA2
MGEyODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtODAsNiArODAsNyBAQCBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGlu
ZVBhdHRlcm5HYXBXaWR0aCA9IDE7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9h
dFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBs
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZm
ZXI7CiBjbGFzcyBJbnRSZWN0OwpAQCAtMjUxLDYgKzI1MiwxMCBAQCBjbGFzcyBHcmFwaGljc0Nv
bnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopOworICAgIAorICAgIHVzaW5nIEdyYXBo
aWNzQ29udGV4dEltcGxGYWN0b3J5ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0SW1wbD4oR3JhcGhpY3NDb250ZXh0Jik+OworICAgIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSYpOworCiAg
ICAgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFw
aGljc0NvbnRleHQoKTsKICAgICAKQEAgLTI2MCwxNCArMjY1LDEyIEBAIHB1YmxpYzoKICAgICB9
OwogICAgIEdyYXBoaWNzQ29udGV4dChOb25QYWludGluZ1JlYXNvbnMpOwogCisgICAgYm9vbCBo
YXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7
CiAKLSAgICBib29sIHBhaW50aW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhICYm
ICFpc1JlY29yZGluZygpOyB9CisgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZGF0YSAmJiAhbV9pbXBsOyB9CiAgICAgYm9vbCB1cGRhdGluZ0NvbnRyb2xUaW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uUGFpbnRpbmdSZWFzb25zID09IE5vblBhaW50aW5nUmVh
c29uczo6VXBkYXRpbmdDb250cm9sVGludHM7IH0KIAotICAgIHZvaWQgc2V0RGlzcGxheUxpc3RS
ZWNvcmRlcihEaXNwbGF5TGlzdDo6UmVjb3JkZXIqIHJlY29yZGVyKSB7IG1fZGlzcGxheUxpc3RS
ZWNvcmRlciA9IHJlY29yZGVyOyB9Ci0gICAgYm9vbCBpc1JlY29yZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzcGxheUxpc3RSZWNvcmRlcjsgfQotCiAgICAgdm9pZCBzZXRTdHJva2VUaGlja25l
c3MoZmxvYXQpOwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CiAKQEAgLTY0MCw3ICs2NDMsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxGbG9hdFBvaW50PiBjZW50ZXJMaW5lQW5kQ3V0T2ZmQ29ybmVycyhib29sIGlz
VmVydGljYWxMaW5lLCBmbG9hdCBjb3JuZXJXaWR0aCwgRmxvYXRQb2ludCBwb2ludDEsIEZsb2F0
UG9pbnQgcG9pbnQyKSBjb25zdDsKIAogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSogbV9kYXRhIHsgbnVsbHB0ciB9OwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciogbV9kaXNw
bGF5TGlzdFJlY29yZGVyIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHRJbXBsPiBtX2ltcGw7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRl
OwogICAgIFZlY3RvcjxHcmFwaGljc0NvbnRleHRTdGF0ZSwgMT4gbV9zdGFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTE2ZWNiZTQ4N2YxMjczMGM5MzMyZmExMTA3NmMyNjc5MTc3ZmU2
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFw
aGljc0NvbnRleHRJbXBsOjpHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJikKKyAgICA6IG1f
Z3JhcGhpY3NDb250ZXh0KGNvbnRleHQpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEltcGw6On5H
cmFwaGljc0NvbnRleHRJbXBsKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMzYjQwMGM0MzVkNTc2ZDcwNGRkOGU5NWU0YzcwYmYwNjJmZDEx
NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGlj
c0NvbnRleHRJbXBsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHRJ
bXBsKTsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwor
ICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEltcGwoKTsKKworICAgIEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0NvbnRleHQ7IH0K
KworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNsZWFyU2hhZG93KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldExpbmVD
YXAoTGluZUNhcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNo
QXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExpbmVK
b2luKExpbmVKb2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQp
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9y
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFk
aWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3Qg
Q29sb3ImLCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRl
ZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFBhdGgo
Y29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGZsb2F0IGxpbmVXaWR0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VQYXRoKGNv
bnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JikgPSAwOworCisjaWYgVVNFKENHKQorICAgIHZpcnR1YWwgdm9pZCBhcHBseVN0cm9rZVBhdHRl
cm4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CisjZW5k
aWYKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6
OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0
UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRv
dWJsZUxpbmVzLCBmbG9hdCBzdHJva2VUaGlja25lc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgs
IEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3UGF0aChjb25zdCBQYXRoJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdG
b2N1c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENv
bG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9y
ZSgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcE91
dChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBPdXQoY29uc3Qg
UGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRS
dWxlKSA9IDA7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpID0gMDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0
OworICAgIEdyYXBoaWNzQ29udGV4dCYgbV9ncmFwaGljc0NvbnRleHQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlYTkzY2M1Zjg5NTliZDEyYjFjMmRj
NGY5MmI2Nzk4M2E5NzJhNTZlLi5hNWE3YjhmM2UzN2ZlNTg2M2U3YzE2OTlmZGRlMDgwMmY4NWQ4
YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE1NTAsOSArMTU1MCw5IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRlJiBjb21taXRT
dGF0ZSwgY29uCiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRz
T3JpZ2luKCksIHNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQ7Ci0g
ICAgICAgIC8vIFRoZSBSZWNvcmRlciBpcyBsYXJnZSwgc28gaGVhcC1hbGxvY2F0ZS4KLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4gcmVjb3JkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxp
c3QsIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpeworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAq
bV9kaXNwbGF5TGlzdCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAg
fSk7CiAgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAppbmRleCBlMzZhNjQ3YjJhMGIzMjgzZGIzOWE1ZDY0Y2FlNWM0ZmFjMmYzZDJiLi5h
ZTcxYTZmZDVkMmNmYjMzNDRhZTUzOTE2MjYzZmJjN2U2NDUyZTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgQWZmaW5lVHJhbnNmb3JtIEdyYXBo
aWNzQ29udGV4dDo6Z2V0Q1RNKEluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGlzIG5vdCB5ZXQgY29tcGF0aWJsZSB3
aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgpOwogICAgIH0KQEAgLTIxMywxNCArMjEzLDE0IEBAIFBsYXRmb3JtQ29udGV4dENhaXJvKiBH
cmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFpc1JlY29yZGluZygp
KTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5zYXZlKCk7CiAgICAgbV9kYXRhLT5zYXZlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFpc1JlY29yZGluZygp
KTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5yZXN0b3JlKCk7CiAgICAgbV9kYXRhLT5yZXN0b3JlKCk7CiAKQEAgLTIzNiw4ICsyMzYs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT5kcmF3UmVjdChyZWN0LCBib3JkZXJUaGlja25lc3MpOworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UmVjdChyZWN0LCBib3JkZXJUaGlja25l
c3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2kKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMzA1LDggKzMwNSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGlu
ZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50CiAgICAg
aWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0xp
bmUocG9pbnQxLCBwb2ludDIpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3TGluZShwb2ludDEsIHBvaW50Mik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3
NCw4ICszNzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+ZHJhd0VsbGlwc2UocmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2lt
cGwtPmRyYXdFbGxpcHNlKHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MDYs
OCArNDA2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBh
dGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT5maWxsUGF0aChwYXRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQy
MSw4ICs0MjEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRo
JiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlUGF0aChwYXRoKTsKKyAgICBpZiAobV9pbXBsKSB7Cisg
ICAgICAgIG1faW1wbC0+c3Ryb2tlUGF0aChwYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNDM2LDggKzQzNiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5maWxsUmVjdChyZWN0KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+ZmlsbFJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1MSw4
ICs0NTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUmVjdChyZWN0LCBjb2xvcik7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPmZpbGxSZWN0KHJlY3QsIGNvbG9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDY3LDggKzQ2Nyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rp
c3BsYXlMaXN0UmVjb3JkZXItPmNsaXAocmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAg
ICBtX2ltcGwtPmNsaXAocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5NCw4
ICs0OTQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0
aCwgV2luZFJ1bGUgY2xpcFJ1bGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT5jbGlwUGF0aChwYXRoLCBjbGlwUnVsZSk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmNsaXBQYXRoKHBhdGgsIGNsaXBSdWxlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNTI3LDcgKzUyNyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
OjpjbGlwQm91bmRzKCkgY29uc3QKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAo
bV9pbXBsKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiR2V0dGluZyB0aGUgY2xpcCBib3VuZHMg
bm90IHlldCBzdXBwb3J0ZWQgd2l0aCBkaXNwbGF5IGxpc3RzIik7CiAgICAgICAgIHJldHVybiBJ
bnRSZWN0KC0yMDQ4LCAtMjA0OCwgNDA5NiwgNDA5Nik7IC8vIEZJWE1FOiBkaXNwbGF5IGxpc3Rz
LgogICAgIH0KQEAgLTYzNSw4ICs2MzUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xp
bmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5JgogICAg
IGlmICh3aWR0aHMuc2l6ZSgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1Jl
Y29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0xpbmVzRm9y
VGV4dChwb2ludCwgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5lcywgc3Ryb2tlVGhp
Y2tuZXNzKCkpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TGluZXNG
b3JUZXh0KHBvaW50LCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdHJva2VU
aGlja25lc3MoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcwMCw3ICs3MDAsNyBA
QCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZs
b2F0UmVjdCYgZnJlY3QsIFJvdW5kaW5nTQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybiBmcmVjdDsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYg
KG1faW1wbCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dDo6cm91bmRU
b0RldmljZVBpeGVscygpIGlzIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250
ZXh0cy4iKTsKICAgICAgICAgcmV0dXJuIGZyZWN0OwogICAgIH0KQEAgLTc0NSw4ICs3NDUsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT50cmFuc2xhdGUoeCwg
eSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnRyYW5zbGF0ZSh4LCB5KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzcyLDcgKzc3Miw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9hdCBzdHJva2VUaGlja25l
c3MpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwogCiAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHN0
cm9rZVRoaWNrbmVzcyk7CiB9CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFp
c1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAg
c3dpdGNoIChzdHJva2VTdHlsZSkgewogICAgIGNhc2UgTm9TdHJva2U6CkBAIC04MTYsOCArODE2
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVj
b3JkZXItPmNvbmNhdENUTSh0cmFuc2Zvcm0pOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5jb25jYXRDVE0odHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtODMyLDcgKzgzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDVE0oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBs
KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpzZXRDVE0oKSBpcyBu
b3QgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5Q
bGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygp
KTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgY2Fpcm9fdCogY3Ig
PSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19wdXNoX2dyb3VwKGNyKTsKQEAg
LTg4Niw3ICs4ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3Bh
cmVuY3lMYXllcigpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1D
b250ZXh0KCkpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
IApAQCAtOTA1LDggKzkwNSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+Y2xlYXJSZWN0KHJlY3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5jbGVhclJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTky
NCw4ICs5MjQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGZsb2F0IHdpZHRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlUmVjdChyZWN0LCB3aWR0aCk7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPnN0cm9rZVJlY3QocmVjdCwgd2lkdGgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC05NDIsOCArOTQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+c2V0TGluZUNhcChsaW5lQ2FwKTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+c2V0TGluZUNhcChsaW5lQ2FwKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtOTc2LDggKzk3Niw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRM
aW5lRGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hlcywgZmxvYXQgZGFzaE9mZnNldCkKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldExpbmVEYXNoKGRh
c2hlcywgZGFzaE9mZnNldCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnNl
dExpbmVEYXNoKGRhc2hlcywgZGFzaE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTk5Miw4ICs5OTIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4oTGlu
ZUpvaW4gbGluZUpvaW4pCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5zZXRMaW5lSm9pbihsaW5lSm9pbik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAg
ICBtX2ltcGwtPnNldExpbmVKb2luKGxpbmVKb2luKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTAxNyw5ICsxMDE3LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGlt
aXQoZmxvYXQgbWl0ZXIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAg
ICAgIC8vIE1heWJlIHRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHN0YXRlLgotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldE1pdGVyTGltaXQobWl0ZXIpOworICAgICAgICBtX2lt
cGwtPnNldE1pdGVyTGltaXQobWl0ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MDQ5LDggKzEwNDksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRo
JiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+
Y2xpcE91dChwYXRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+Y2xpcE91
dChwYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA3MSw4ICsxMDcxLDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZShmbG9hdCByYWRpYW5zKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+cm90YXRlKHJhZGlhbnMpOworICAg
IGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5yb3RhdGUocmFkaWFucyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEwODUsOCArMTA4NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zY2FsZShzaXplKTsKKyAgICBpZiAobV9pbXBsKSB7
CisgICAgICAgIG1faW1wbC0+c2NhbGUoc2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTEwOTksOCArMTA5OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0
IEZsb2F0UmVjdCYgcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVj
b3JkZXItPmNsaXBPdXQocik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNs
aXBPdXQocik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMjAsNyArMTEyMCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQo
aGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQogICAgICAgICBw
bGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KCp0aGlzLCByZWN0
KTsKQEAgLTExNDAsOCArMTE0MCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgY29sb3Ip
OworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxsUmVjdFdpdGhSb3VuZGVk
SG9sZShyZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTE2Nyw4ICsxMTY3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdQYXR0ZXJuKGlt
YWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJh
d1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMTg1LDcgKzExODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91
bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQo
aGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgLy8gV2hlbiB0cnVlLCB1c2UgdGhlIGRlZmF1
bHQgQ2Fpcm8gYmFja2VuZCBhbnRpYWxpYXMgbW9kZSAodXN1YWxseSB0aGlzCiAgICAgLy8gZW5h
YmxlcyBzdGFuZGFyZCAnZ3JheXNjYWxlJyBhbnRpYWxpYXNpbmcpOyBmYWxzZSB0byBleHBsaWNp
dGx5IGRpc2FibGUKQEAgLTExOTUsMTQgKzExOTUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0UGxhdGZvcm1JbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IHF1YWxpdHkpCiB7Ci0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBB
U1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNl
dEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkocXVhbGl0eSk7CiB9CiAKIGJvb2wgR3JhcGhpY3ND
b250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzUmVjb3Jk
aW5nKCkpCisgICAgaWYgKCFoYXNQbGF0Zm9ybUNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoY2Fpcm9fZ2V0X3Rhcmdl
dChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9HTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAppbmRleCA3Y2ZhZmNlNDM0ZmFhZWJhMjU5Y2U5MDgyYTdmNzhmOTMwMmEx
MWFjLi5mYzI5MWUyZWNiY2QyNmI2MWZlNWNlMjkwMGE4NGE1ZmM4NzNkNmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgQ0dDb250ZXh0UmVmIEdyYXBoaWNzQ29udGV4
dDo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxh
dGZvcm1TdGF0ZSgpCiB7CiAgICAgQVNTRVJUKCFwYWludGluZ0Rpc2FibGVkKCkpOwotICAgIEFT
U0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsK
IAogICAgIC8vIE5vdGU6IERvIG5vdCB1c2UgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhpcyBjbGFz
cyBpbXBsZW1lbnRhdGlvbiwgc2luY2Ugd2Ugd2FudCB0byBhdm9pZCB0aGUgZXh0cmEKICAgICAv
LyBzYXZlIG9mIHRoZSBzZWNvbmRhcnkgY29udGV4dCAoaW4gR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlQ0cuaCkuCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNhdmVQbGF0Zm9ybVN0YXRlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZv
cm1TdGF0ZSgpCiB7CiAgICAgQVNTRVJUKCFwYWludGluZ0Rpc2FibGVkKCkpOwotICAgIEFTU0VS
VCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAog
ICAgIC8vIE5vdGU6IERvIG5vdCB1c2UgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhpcyBjbGFzcyBp
bXBsZW1lbnRhdGlvbiwgc2luY2Ugd2Ugd2FudCB0byBhdm9pZCB0aGUgZXh0cmEKICAgICAvLyBy
ZXN0b3JlIG9mIHRoZSBzZWNvbmRhcnkgY29udGV4dCAoaW4gR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlQ0cuaCkuCkBAIC0xOTAsOCArMTkwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25z
dAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRN
b2RlLCBvcmllbnRhdGlvbik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjUs
OCArMzI1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVj
b3JkZXItPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpZiAobV9pbXBsKSB7
CisgICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00MzAsOCArNDMwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1Jl
Y3QocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+ZHJhd1JlY3QocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDY4LDggKzQ2OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGlu
ZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50CiAgICAg
aWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0xp
bmUocG9pbnQxLCBwb2ludDIpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3TGluZShwb2ludDEsIHBvaW50Mik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUz
Myw4ICs1MzMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+ZHJhd0VsbGlwc2UocmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2lt
cGwtPmRyYXdFbGxpcHNlKHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDgs
OCArNTQ4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5hcHBseVN0cm9r
ZVBhdHRlcm4oKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+YXBwbHlTdHJv
a2VQYXR0ZXJuKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3Miw4ICs1NzIsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlGaWxsUGF0dGVybigpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5hcHBseUZpbGxQYXR0ZXJuKCk7Cisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmFwcGx5RmlsbFBhdHRlcm4oKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjIzLDggKzYyMyw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1Jl
Y29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1BhdGgocGF0
aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQYXRoKHBhdGgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NTcsOCArNjU3LDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSB8fCBwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUGF0aChw
YXRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFBhdGgocGF0aCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyMCw4ICs3MjAsOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c3Ryb2tl
UGF0aChwYXRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ryb2tlUGF0
aChwYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzgyLDggKzc4Miw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUmVjdChyZWN0
KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgzNSw4ICs4MzUsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxs
UmVjdChyZWN0LCBjb2xvcik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmZp
bGxSZWN0KHJlY3QsIGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODcwLDcg
Kzg3MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7
CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmls
bENvbG9yKCk7CkBAIC05MTMsOCArOTEzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgY29sb3IpOworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShyZWN0LCByb3Vu
ZGVkSG9sZVJlY3QsIGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTU5LDgg
Kzk1OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXAo
cmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXAocmVjdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk3Myw4ICs5NzMsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwT3V0KHJlY3QpOworICAgIGlmICht
X2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGlwT3V0KHJlY3QpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC05OTUsOCArOTk1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBP
dXQoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPmNsaXBPdXQocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPmNsaXBPdXQocGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwMTIs
OCArMTAxMiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBw
YXRoLCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPmNsaXBQYXRoKHBhdGgsIGNsaXBSdWxlKTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+Y2xpcFBhdGgocGF0aCwgY2xpcFJ1bGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcEJvdW5kcygpIGNvbnN0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAg
aWYgKG1faW1wbCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdldHRpbmcgdGhlIGNsaXAgYm91
bmRzIG5vdCB5ZXQgc3VwcG9ydGVkIHdpdGggZGlzcGxheSBsaXN0cyIpOwogICAgICAgICByZXR1
cm4gSW50UmVjdCgtMjA0OCwgLTIwNDgsIDQwOTYsIDQwOTYpOyAvLyBGSVhNRTogZGlzcGxheSBs
aXN0cy4KICAgICB9CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29y
ZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgc2F2ZSgp
OwogCkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZv
cm1UcmFuc3BhcmVuY3lMYXllcigpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFz
UGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRFbmRUcmFuc3BhcmVuY3lMYXllcihjb250ZXh0KTsK
QEAgLTExMTIsNyArMTExMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29y
ZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIAogICAgIC8v
IEZJWE1FOiB3ZSBjb3VsZCBhdm9pZCB0aGUgc2hhZG93IHNldHVwIGNvc3Qgd2hlbiB3ZSBrbm93
IHdlJ2xsIHJlbmRlciB0aGUgc2hhZG93IG91cnNlbHZlcy4KIApAQCAtMTE2NCw5ICsxMTY0LDkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQoZmxvYXQgbGltaXQpCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIC8vIE1heWJlIHRoaXMgc2hv
dWxkIGJlIHBhcnQgb2YgdGhlIHN0YXRlLgotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PnNldE1pdGVyTGltaXQobGltaXQpOworICAgICAgICBtX2ltcGwtPnNldE1pdGVyTGltaXQobGlt
aXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTc4LDggKzExNzgsOCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsZWFyUmVjdChyKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+Y2xlYXJSZWN0KHIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMTkxLDggKzExOTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnN0cm9rZVJlY3Qo
cmVjdCwgbGluZVdpZHRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ry
b2tlUmVjdChyZWN0LCBsaW5lV2lkdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MjYxLDggKzEyNjEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2Fw
IGNhcCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNl
dExpbmVDYXAoY2FwKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2V0TGlu
ZUNhcChjYXApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjg0LDggKzEyODQsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBkYXNo
ZXMsIGZsb2F0IGRhc2hPZmZzZXQpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT5zZXRMaW5lRGFzaChkYXNoZXMsIGRhc2hPZmZzZXQpOworICAgIGlmICht
X2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zZXRMaW5lRGFzaChkYXNoZXMsIGRhc2hPZmZzZXQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzA0LDggKzEzMDQsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4oTGluZUpvaW4gam9pbikKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkg
ewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldExpbmVKb2luKGpvaW4pOworICAg
IGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zZXRMaW5lSm9pbihqb2luKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMzMiw4ICsxMzMyLDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNjYWxlKHNpemUpOworICAgIGlmIChtX2ltcGwp
IHsKKyAgICAgICAgbV9pbXBsLT5zY2FsZShzaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTM0Nyw4ICsxMzQ3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZShmbG9h
dCBhbmdsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PnJvdGF0ZShhbmdsZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnJvdGF0
ZShhbmdsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNjIsOCArMTM2Miw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnRyYW5zbGF0ZSh4LCB5
KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dHJhbnNsYXRlKHgsIHkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzc3LDggKzEzNzcsOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChp
c1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+Y29uY2F0Q1RN
KHRyYW5zZm9ybSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNvbmNhdENU
TSh0cmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzkyLDcgKzEzOTIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAgICAgICBX
VEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKCkgaXMgbm90IGNvbXBhdGlibGUg
d2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
NDA3LDcgKzE0MDcsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0o
SW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSkgY29uc3QKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAKLSAgICBpZiAo
aXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGlzIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIHJl
Y29yZGluZyBjb250ZXh0cy4iKTsKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwog
ICAgIH0KQEAgLTE0MjYsNyArMTQyNiw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJv
dW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBSb3VuZGluZ01vCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAKLSAgICBpZiAo
aXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoKSBpcyBub3QgeWV0IGNvbXBh
dGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybiByZWN0Owog
ICAgIH0KQEAgLTE0ODksOCArMTQ4OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGlu
ZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBEYXNoQXJyYXkmCiAgICAg
aWYgKCF3aWR0aHMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdMaW5lc0ZvclRleHQo
cG9pbnQsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VUaGlja25lc3MoKSk7
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdMaW5lc0ZvclRleHQocG9p
bnQsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VUaGlja25lc3MoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAg
V1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoKSBpcyBub3QgeWV0
IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybjsg
Ly8gRklYTUUgZm9yIGRpc3BsYXkgbGlzdHMuCiAgICAgfQpAQCAtMTYwMyw3ICsxNjAzLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldElzQ0FMYXllckNvbnRleHQoYm9vbCBpc0xheWVyQ29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkKKyAgICBpZiAobV9pbXBsKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNMYXll
ckNvbnRleHQpCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXND
QUxheWVyQ29udGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJ
WE1FCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgaWYgKG1faW1wbCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1fZGF0YS0+bV9jb250ZXh0RmxhZ3MgJiBJc0xheWVy
Q0dDb250ZXh0OwpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wgaXNBY2NlbGVyYXRlZCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gRklYTUUKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICBpZiAobV9pbXBs
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNBY2NlbGVyYXRlZCkKQEAgLTE2NDUsNyAr
MTY0NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpCisgICAgaWYgKG1faW1wbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIG1fZGF0YS0+bV9jb250ZXh0RmxhZ3MgJiBJc0FjY2VsZXJhdGVkQ0dDb250ZXh0OwpA
QCAtMTY1Niw3ICsxNjU2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygp
KTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAgLTE2
NzksNyArMTY3OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVCho
YXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBzZXRDR1N0cm9rZUNvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBjb2xvcik7CiB9CkBAIC0xNjg5LDcgKzE2ODksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNS
ZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENH
Q29udGV4dFNldExpbmVXaWR0aChwbGF0Zm9ybUNvbnRleHQoKSwgc3RkOjptYXgodGhpY2tuZXNz
LCAwLmYpKTsKIH0KQEAgLTE2OTksNyArMTY5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygp
KTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgc2V0Q0dGaWxsQ29s
b3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KQEAgLTE3MDksNyArMTcwOSw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJs
ZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
CiAKICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCksIGVu
YWJsZSk7CiB9CkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhib29sIGVuYWJsZSkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkp
OworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRTZXRT
aG91bGRTbW9vdGhGb250cyhwbGF0Zm9ybUNvbnRleHQoKSwgZW5hYmxlKTsKIH0KQEAgLTE3Mjks
NyArMTcyOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKGZsb2F0
IGFscGhhKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKIAogICAgIENHQ29udGV4dFNldEFscGhhKHBsYXRmb3JtQ29udGV4dCgpLCBhbHBoYSk7
CiB9CkBAIC0xNzM5LDcgKzE3MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgbW9kZSwgQmxlbgogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNS
ZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENH
QmxlbmRNb2RlIHRhcmdldCA9IGtDR0JsZW5kTW9kZU5vcm1hbDsKICAgICBpZiAoYmxlbmRNb2Rl
ICE9IEJsZW5kTW9kZU5vcm1hbCkgewpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnBsYXRmb3JtQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRl
eHQoKSk7CiAKICAgICAvLyBDb3JlR3JhcGhpY3MgZXhwZWN0cyB0aGUgYmFzZSBDVE0gb2YgYSBI
aURQSSBjb250ZXh0IHRvIGhhdmUgdGhlIHNjYWxlIGZhY3RvciBhcHBsaWVkIHRvIGl0LgogICAg
IC8vIEZhaWxpbmcgdG8gY2hhbmdlIHRoZSBiYXNlIGxldmVsIENUTSB3aWxsIGNhdXNlIGNlcnRh
aW4gQ0cgZmVhdHVyZXMsIHN1Y2ggYXMgZm9jdXMgcmluZ3MsCkBAIC0xODY1LDcgKzE4NjUsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsRWxsaXBzZShjb25zdCBGbG9hdFJl
Y3QmIGVsbGlwc2UpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1D
b250ZXh0KCkpOwogCiAgICAgLy8gQ0dDb250ZXh0RmlsbEVsbGlwc2VJblJlY3Qgb25seSBzdXBw
b3J0cyBzb2xpZCBjb2xvcnMuCiAgICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3Rh
dGUuZmlsbFBhdHRlcm4pIHsKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCgh
aXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAg
IC8vIENHQ29udGV4dFN0cm9rZUVsbGlwc2VJblJlY3Qgb25seSBzdXBwb3J0cyBzb2xpZCBjb2xv
cnMuCiAgICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgfHwgbV9zdGF0ZS5zdHJva2VQYXR0
ZXJuKSB7CkBAIC0xOTA0LDYgKzE5MDQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RGVz
dGluYXRpb25Gb3JSZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRmxvYXRSZWN0JgogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFTU0VSVCho
YXNQbGF0Zm9ybUNvbnRleHQoKSk7CisKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRm
b3JtQ29udGV4dCgpOwogCiAgICAgRmxvYXRSZWN0IHJlY3QgPSBkZXN0UmVjdDsKQEAgLTE5MTgs
NiArMTkyMCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGREZXN0aW5hdGlvbkF0UG9pbnQo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGbG9hdFBvaW50CiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKKwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAK
ICAgICBDR1BvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zv
cm0ocG9zaXRpb24sIENHQ29udGV4dEdldENUTShjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tCmluZGV4IDFjMGE3NjA4NjY4NTA0YmUxODMxOGVhOTcxNDM1M2E5ZWFiMTg5ZjQu
LjMzYzQ4MDBjNjg2MjBkNjkxM2E3OTRhMmNjNDVlNzU4MzhjMWM0ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dENvY29hLm1tCkBAIC0xMTksOCArMTE5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+ZHJhd0ZvY3VzUmluZyhwYXRoLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7Cisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdGb2N1c1JpbmcocGF0aCwgd2lk
dGgsIG9mZnNldCwgY29sb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzksNyAr
MTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYg
cGF0aCwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG4KICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpIHx8IHBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29y
ZGluZygpKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcgZHJhd2luZy4K
KyAgICBpZiAobV9pbXBsKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcg
ZHJhd2luZy4KICAgICAgICAgcmV0dXJuOwogCiAgICAgbmVlZHNSZWRyYXcgPSBkcmF3Rm9jdXNS
aW5nVG9Db250ZXh0QXRUaW1lKHBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLnBsYXRmb3JtUGF0aCgp
LCB0aW1lT2Zmc2V0KTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGRvdWJsZSB0aW1l
TwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcg
ZHJhd2luZy4KKyAgICBpZiAobV9pbXBsKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZv
Y3VzIHJpbmcgZHJhd2luZy4KICAgICAgICAgcmV0dXJuOwogCiAgICAgUmV0YWluUHRyPENHTXV0
YWJsZVBhdGhSZWY+IGZvY3VzUmluZ1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUo
KSk7CkBAIC0xNjcsOCArMTY3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1Jp
bmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdGb2N1c1JpbmcocmVj
dHMsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+ZHJhd0ZvY3VzUmluZyhyZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKaW5kZXggMzdiZDQxZTZmYmE5YzE0MTQwZWE0NDc5NjUyZmFlZDFhMWU3NzExYy4uZDg3NjFi
ZWY5NDcxMzBjNDBmOWIwMzJhYjdjYWE4ZDk0ZTgyM2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzcsMTEgKzM3LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIFJlY29yZGVyOjpSZWNvcmRlcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBiYXNlQ1RNKQotICAg
IDogbV9ncmFwaGljc0NvbnRleHQoY29udGV4dCkKKyAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwo
Y29udGV4dCwgaW5pdGlhbENsaXAsIGJhc2VDVE0pCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0KQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAi
XG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOwotICAgIG1fZ3JhcGhpY3ND
b250ZXh0LnNldERpc3BsYXlMaXN0UmVjb3JkZXIodGhpcyk7CiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZChDb250ZXh0U3RhdGUoYmFzZUNUTSwgaW5pdGlhbENsaXApKTsKIH0KIApAQCAtMzc0LDcg
KzM3Myw3IEBAIEl0ZW0mIFJlY29yZGVyOjphcHBlbmRJdGVtKFJlZjxJdGVtPiYmIGl0ZW0pCiAK
IHZvaWQgUmVjb3JkZXI6OnVwZGF0ZUl0ZW1FeHRlbnQoRHJhd2luZ0l0ZW0mIGl0ZW0pIGNvbnN0
CiB7Ci0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2NhbEJv
dW5kcyhtX2dyYXBoaWNzQ29udGV4dCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcyhncmFwaGljc0NvbnRleHQoKSkpCiAgICAgICAgIGl0
ZW0uc2V0RXh0ZW50KGV4dGVudEZyb21Mb2NhbEJvdW5kcyhyZWN0LnZhbHVlKCkpKTsKIH0KIApA
QCAtMzk2LDcgKzM5NSw3IEBAIEZsb2F0UmVjdCBSZWNvcmRlcjo6ZXh0ZW50RnJvbUxvY2FsQm91
bmRzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKICAgICBGbG9hdFNpemUgc2hhZG93T2Zm
c2V0OwogICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAg
ICBpZiAobV9ncmFwaGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFk
aXVzLCBzaGFkb3dDb2xvcikpIHsKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KCkuZ2V0U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd0V4dGVudD0gYm91bmRzOwogICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShz
aGFkb3dPZmZzZXQpOwogICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGlu
Z0V4dGVudChzaGFkb3dSYWRpdXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCmluZGV4IDZhMjkwMjMzNDc3MTYwZjQ1MDk5OWQxZTIzNGRiZjI5MjIwNzgwMDUuLmY5ZTQ5
YTU5MGI5Y2I4MTA5OWM0MjMwYmE3MDhkZTQzMjQwYmQxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJEaXNwbGF5TGlzdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIiAvLyBG
b3IgSW50ZXJwb2xhdGlvblF1YWxpdHkuCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5o
IgogI2luY2x1ZGUgIkltYWdlLmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1bGUuCiAjaW5jbHVkZSAi
VGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00Nyw3OSArNDcs
NzkgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xhc3MgRHJhd2luZ0l0ZW07CiAKLWNs
YXNzIFJlY29yZGVyIHsKK2NsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dElt
cGwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKICAgICBS
ZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIH5SZWNvcmRlcigpOwot
Ci0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKLSAgICB2b2lkIGNsZWFyU2hhZG93
KCk7Ci0KLSAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7Ci0gICAgdm9pZCBzZXRMaW5lRGFz
aChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KTsKLSAgICB2b2lkIHNldExpbmVK
b2luKExpbmVKb2luKTsKLSAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpOwotCi0gICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IENvbG9yJik7Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBHcmFkaWVudCYpOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGZpbGxS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1v
ZGUpOwotICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpOwot
ICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpOwotICAgIHZvaWQgZmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IGxpbmVXaWR0aCk7Ci0gICAgdm9pZCBzdHJva2VQYXRoKGNvbnN0IFBhdGgmKTsKLSAgICB2
b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGVhclJlY3Qo
Y29uc3QgRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB+UmVjb3JkZXIoKTsKKworICAgIHNpemVf
dCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgpOyB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNsZWFyU2hhZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldExpbmVDYXAo
TGluZUNhcCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkm
LCBmbG9hdCBkYXNoT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExpbmVKb2luKExpbmVK
b2luKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdHJva2VQYXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cm9rZUVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclJlY3QoY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQ0cpCi0gICAgdm9pZCBhcHBseVN0cm9r
ZVBhdHRlcm4oKTsKLSAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKKyAgICB2b2lkIGFwcGx5
U3Ryb2tlUGF0dGVybigpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIG92
ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21v
b3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpOwotICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKLSAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIElt
YWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICB2
b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OworICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcyk7Ci0gICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wg
ZG91YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgdm9pZCBkcmF3TGluZUZv
ckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgR3JhcGhpY3ND
b250ZXh0OjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZSk7Ci0gICAgdm9pZCBkcmF3RWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKKyAgICB2
b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQ
b2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91Ymxl
TGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TGlu
ZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgR3JhcGhp
Y3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXRo
KGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQ
YXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKLSAgICB2b2lk
IGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxv
YXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOworICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQ
YXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3
aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBz
YXZlKCk7Ci0gICAgdm9pZCByZXN0b3JlKCk7CisgICAgdm9pZCBzYXZlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZXN0b3JlKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4
LCBmbG9hdCB5KTsKLSAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7Ci0gICAg
dm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKLSAgICB2b2lkIGNvbmNhdENUTShjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KSBv
dmVycmlkZTsKKyAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykgb3ZlcnJpZGU7
CisgICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNv
bmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmVn
aW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KTsKLSAgICB2b2lkIGVuZFRyYW5zcGFy
ZW5jeUxheWVyKCk7CisgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGNsaXBPdXQoY29u
c3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKTsKLSAgICB2b2lk
IGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7CisgICAgdm9pZCBjbGlwKGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOworICAgIHZv
aWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICAKLSAgICB2
b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOworICAgIHZvaWQgYXBwbHlEZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKLSAgICBzaXplX3QgaXRlbUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsgfQotCi1wcml2YXRlOgogICAg
IEl0ZW0mIGFwcGVuZEl0ZW0oUmVmPEl0ZW0+JiYpOwogICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0o
Y29uc3QgSXRlbSYpOwogCkBAIC0xNjEsNyArMTYxLDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBD
b250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OwogICAgIENvbnRleHRTdGF0ZSYgY3Vy
cmVudFN0YXRlKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIG1fZ3JhcGhpY3NDb250ZXh0Owog
ICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0
ZSwgMzI+IG1fc3RhdGVTdGFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwCmluZGV4IGRiN2M4ZjcwZTVlZDgwZDQ4NjgyMjgwNDg4MjRkNDc4NTA4OWU0OTEuLjk3OGU5
NWNjMDFmYzZiMzVmMzY4Y2IzZGI3ZTZiNTdmZmYyMmIzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgUmVuZGVyVGhl
bWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3Rh
dGVzLCBjb25zCiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoVU5MSUtFTFkocGFpbnRJbmZvLmNv
bnRleHQoKS5pc1JlY29yZGluZygpKSkKKyAgICBpZiAoVU5MSUtFTFkoIXBhaW50SW5mby5jb250
ZXh0KCkuaGFzUGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBDb250cm9sUGFydCBwYXJ0ID0gYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326038</attachid>
            <date>2017-11-04 13:28:24 -0700</date>
            <delta_ts>2017-11-04 14:20:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179286-20171104132822.patch</filename>
            <type>text/plain</type>
            <size>80945</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhZTMxYmEzZGZiZDhj
Yjc1NmJmMGJmNDI4YWMzZWZkZWIzZGRhNC4uMGM5MzhhZmJmYzRhNzFkNjBlMDRkM2U0NzYzNzUz
OWE5NGFlNDc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MSBAQAorMjAxNy0xMS0wNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBHcmFw
aGljc0NvbnRleHRJbXBsIGFuZCB1c2UgaXQgZm9yIERpc3BheUxpc3Q6OlJlY29yZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydCBtb3Zpbmcg
dG93YXJkcyBhIG1vZGVsIHdoZW4gR3JhcGhpY3NDb250ZXh0IGhhcyBhIHBvaW50ZXIgdG8gYW4g
aW1wbGVtZW50YXRpb24KKyAgICAgICAgKCJwaW1wbCIpIGJ5IGFkZGluZyBHcmFwaGljc0NvbnRl
eHRJbXBsLCBhbmQgY29udmVydGluZyBkaXNwbGF5IGxpc3QgcmVjb3JkaW5nIHRvCisgICAgICAg
IGJlIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgR3JhcGhpY3NDb250ZXh0SW1wbC4KKworICAgICAg
ICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQ6OkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ry
b2tlVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ry
b2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJv
a2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFk
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dERyYXdMdW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
YXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlRWxsaXBzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1BsYXRmb3JtQ29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBhaW50aW5nRGlz
YWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREaXNw
bGF5TGlzdFJlY29yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6aXNSZWNvcmRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGw6OkdyYXBoaWNzQ29udGV4dEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsOjpncmFwaGljc0NvbnRleHQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3RWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y2xpcEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1TdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0
Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRM
aW5lQ2FwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZURhc2gp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lSm9pbik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZp
bGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVNob3VsZEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0IGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
RWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5U3Ryb2tl
UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5RmlsbFBh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjbGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFy
ZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZv
cm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0TWl0ZXJMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFy
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lQ2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29uY2F0Q1RNKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Z2V0Q1RNIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRVUkxGb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0SXNDQUxheWVyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmlzQ0FMYXllckNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRJc0FjY2VsZXJhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1UZXh0RHJhd2luZ01vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VUaGlja25l
c3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hv
dWxkQW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbEVsbGlwc2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybVN0cm9rZUVsbGlwc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREZXN0aW5hdGlvbkZvclJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGREZXN0aW5hdGlvbkF0UG9pbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6dXBkYXRlSXRlbUV4
dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmV4
dGVudEZyb21Mb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6aXRlbUNvdW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50
KToKKwogMjAxNy0xMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IFNlcnZpY2VXb3JrZXJDb250YWluZXIuZ2V0UmVnaXN0cmF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGQ3ODY5OWVkZWQ3ODgzZTUyMTkxYzc5MDc0MmY0YmY1ZjIyMWU1ZjIu
LmQyZTFlZjdkYTk3NmRjOTcyMWVjNDg3NGNhMGI3MTZkZTUxNjBlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0xNTA1LDYgKzE1MDUsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGll
cy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnRJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRy
YW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDFhMDMxMWMxZjA3NTE2OTdjMDVhMzI2ODUwOWM1NGMwNDZhZTkyMGMuLjA3NjBmMDMxM2Jh
NWRkNGU0MjQzNTYxY2NmZGVjZDcyY2ViMDg0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDksNiArNTM0OSw4IEBACiAJ
CTBDNDUzNDI2MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8q
IFNlYXJjaFBvcHVwTWVudUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2VhcmNoUG9wdXBNZW51Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBFNzA1OEYzMUJDNUNDRDcwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjAwMTIzRjFGQUQ4N0Q2MDA1MzFENzYgLyogR3JhcGhpY3NDb250ZXh0
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRJbXBsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMDAxMjQwMUZBRDg4MTAwMDUzMUQ3NiAvKiBHcmFwaGljc0Nv
bnRleHRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEltcGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjAzQzA3MzE4ODQ2OTVFMDBBNUY4Q0Eg
LyogU3lzdGVtTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3Rl
bU1lbW9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjA5OUQwNjE3Qjk2OEEx
MDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDk5RDA3MTdCOTY4QTEwMEZGODRCOSAv
KiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMjYzNCw2ICsyMjYzNiw4IEBACiAJCQkJNkUyMUM2QkYxMTI2MzM4NTAw
QTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLywKIAkJCQk0OUM3QjlGQjEwNDJEMzY1
MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0M0QuaCAqLywKIAkJCQk3QzMzMEEwMTFERjhGQUM2
MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggKi8sCisJCQkJMEYwMDEy
NDAxRkFEODgxMDAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuY3BwICovLAorCQkJCTBG
MDAxMjNGMUZBRDg3RDYwMDUzMUQ3NiAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggKi8sCiAJCQkJ
MEY1ODBCMDkwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuY3BwICovLAogCQkJCTBG
NTgwQjBBMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggKi8sCiAJCQkJMEY1ODBC
MEIwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDRhMTBhZTE1ODliOGVmOGQzMmQ0NzZkYjc3YzkwMzFkMDg4OTQ0NDcuLjI5NmFk
ZjJhNzkyZTViNzgwYzNkYTcxYzc4ZTZjYjFlYjE4NDZlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
ODksMTEgKzg5LDEyIEBAIHN0cnVjdCBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dDsKLSAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgcmVjb3JkZXI7CiAgICAgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0OwogICAgIAogICAgIERpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBjbGlwKQotICAgICAgICA6IHJlY29yZGVyKGNvbnRl
eHQsIGRpc3BsYXlMaXN0LCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSkKKyAgICAgICAgOiBjb250
ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgZGlzcGxheUxp
c3QsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgfSkKICAgICB7CiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDQzNmRmNTRjNTNjOWRlYThhZmYwOTc3MDViZGNiNTgxNzgyZDQ0NjIu
LmUwN2ZmY2E3ZDY1ZDY1MTUxZDJiMjliMTdmMTVlMTk0NzAwMTVlMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MzM2LDYgKzMzNiwxMSBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1HcmFwaGljc0NvbnRleAogICAgIHBsYXRmb3JtSW5p
dChwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCk7CiB9CiAKK0dyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5JiBmYWN0b3J5RnVuY3Rp
b24pCisgICAgOiBtX2ltcGwoZmFjdG9yeUZ1bmN0aW9uKCp0aGlzKSkKK3sKK30KKwogR3JhcGhp
Y3NDb250ZXh0Ojp+R3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBBU1NFUlQobV9zdGFjay5pc0Vt
cHR5KCkpOwpAQCAtMzUwLDggKzM1NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlKCkK
IAogICAgIG1fc3RhY2suYXBwZW5kKG1fc3RhdGUpOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zYXZlKCk7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPnNhdmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzc2LDggKzM4MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkKICAgICBp
ZiAobV9zdGFjay5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3RhY2suY2xlYXIoKTsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+cmVzdG9y
ZSgpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5yZXN0b3JlKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQwNyw4ICs0MTIsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgZWxsaQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0
aGlja25lc3MpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSB0aGlja25lc3M7Ci0g
ICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNz
Q2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxOCw4ICs0MjMsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkKIHsKICAgICBtX3N0
YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAg
ICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlU3R5bGVDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3Jt
U3Ryb2tlU3R5bGUoc3R5bGUpOwpAQCAtNDMwLDggKzQzNSw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9zdGF0ZS5zdHJv
a2VDb2xvciA9IGNvbG9yOwogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRyOwog
ICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgaWYgKGlzUmVjb3JkaW5n
KCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpOworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IHNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29sb3IpOwpAQCAtNDQ1LDggKzQ1MCw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0
IGJsdXIsIGNvbnN0IENvbG9yCiAjaWYgVVNFKENHKQogICAgIG1fc3RhdGUuc2hhZG93c1VzZUxl
Z2FjeVJhZGl1cyA9IGZhbHNlOwogI2VuZGlmCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d0NoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc2V0UGxhdGZvcm1TaGFkb3co
b2Zmc2V0LCBibHVyLCBjb2xvcik7CkBAIC00NjAsOCArNDY1LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVz
ID0gdHJ1ZTsKICNlbmRpZgotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1
ciwgY29sb3IpOwpAQCAtNDc2LDggKzQ4MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVh
clNoYWRvdygpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID0gZmFsc2U7CiAj
ZW5kaWYKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+Y2xlYXJTaGFkb3coKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+Y2xlYXJTaGFkb3coKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjbGVhclBsYXRm
b3JtU2hhZG93KCk7CkBAIC01MTYsOCArNTIxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBudWxscHRyOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBudWxscHRyOwogCi0gICAgaWYg
KGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTUyNywxNiArNTMyLDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxs
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiB7CiAgICAg
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtc0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXNDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkQW50aWFs
aWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQogewogICAgIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFz
ID0gc2hvdWxkQW50aWFsaWFzOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAg
ICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU0Nyw4
ICs1NTIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9udHMoYm9v
bCBzaG91bGRTbW9vdGhGb250cykKIHsKICAgICBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0g
c2hvdWxkU21vb3RoRm9udHM7CiAgICAgCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpIHsK
KyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IApAQCAtNTU4LDggKzU2Myw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTbW9v
dGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cykKIHsKICAgICBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKTsKKyAgICBpZiAobV9p
bXBsKQorICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQpAQCAtNTY5LDggKzU3NCw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9s
YXRpb25RdWFsaXR5IGltYWdlSW50CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNTgxLDQ1ICs1ODYsNDUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBh
dHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKIHsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRl
cm4pOwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0
ZXJuQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBh
dHRlcm4pCiB7CiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwogICAgIG1fc3Rh
dGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGlmIChpc1JlY29yZGluZygp
KQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkK
KyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ry
b2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQogewogICAgIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLnN0cm9rZVBhdHRl
cm4gPSBudWxscHRyOwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VHcmFkaWVudENoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRD
aGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFJ1bGUoV2luZFJ1bGUg
ZmlsbFJ1bGUpCiB7CiAgICAgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOwotICAgIGlmIChp
c1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSk7CisgICAgaWYg
KG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCkKIHsKICAgICBtX3N0YXRl
LmZpbGxHcmFkaWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOwogICAgIG1fc3RhdGUuZmlsbFBhdHRl
cm4gPSBudWxscHRyOwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsR3JhZGllbnRDaGFuZ2UpOyAvLyBGSVhNRTogYWxzbyBmaWxsIHBhdHRlcm4/CisgICAgaWYg
KG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKTsgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0
ZXJuPwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihm
bG9hdCBvcGFjaXR5KQogewotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFj
aXR5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBiZWdpblBsYXRmb3JtVHJhbnNwYXJl
bmN5TGF5ZXIob3BhY2l0eSk7CkBAIC02MjgsOCArNjMzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKLSAgICBpZiAoaXNSZWNvcmRpbmco
KSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZW5kUGxhdGZvcm1UcmFuc3BhcmVu
Y3lMYXllcigpOwpAQCAtNjUxLDggKzY1Niw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
R2x5cGhzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgY29uc3QgRm9udCYgZm9uCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3R2x5cGhz
KGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udENhc2NhZGUuZm9udERl
c2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBidWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQs
IGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcyMiw4ICs3MjcsOCBAQCBJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAg
ICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNv
dXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRp
bmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVjb3JkOwog
ICAgIH0KIApAQCAtNzM2LDggKzc0MSw4IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkTm90aGluZzsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogICAgICAg
ICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiAgICAgfQogCkBAIC03NTEsOCAr
NzU2LDggQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3
VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBpZiAobV9pbXBsKSB7Cisg
ICAgICAgIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAg
ICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29yZDsKICAgICB9CiAKQEAgLTg0
OCw4ICs4NTMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2RlKFRl
eHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3
aW5nTW9kZUNoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc2V0UGxhdGZvcm1U
ZXh0RHJhd2luZ01vZGUobW9kZSk7CkBAIC04NjAsOCArODY1LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50
KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJl
Y3QocmVjdCwgZ3JhZGllbnQpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5m
aWxsUmVjdChyZWN0LCBncmFkaWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3
Myw4ICs4NzgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvcwogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0g
ICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCwgY29sb3IsIG9wLCBi
bGVuZE1vZGUpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxsUmVjdChy
ZWN0LCBjb2xvciwgb3AsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTg4OSw4ICs4OTQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJgogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNv
bG9yLCBibGVuZE1vZGUpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxs
Um91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTkzMiw4ICs5MzcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSbwogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFscGhhKQogewogICAgIG1fc3RhdGUuYWxw
aGEgPSBhbHBoYTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpB
bHBoYUNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgc2V0UGxhdGZvcm1BbHBoYShhbHBoYSk7CkBAIC05NDMsOCAr
OTQ4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24KIHsKICAgICBtX3N0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwogICAgIG1fc3RhdGUuYmxlbmRNb2RlID0g
YmxlbmRNb2RlOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2lt
cGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVP
cGVyYXRpb25DaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3Jt
Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wZXJhdGlvbiwgYmxlbmRNb2RlKTsKQEAgLTk1
Myw4ICs5NTgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbgogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spCiB7CiAgICAg
bV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9IGRyYXdMdW1pbmFuY2VNYXNrOwotICAgIGlmIChp
c1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7
CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpOwogfQogCiAjaWYg
IVVTRShDRykgJiYgIVVTRShESVJFQ1QyRCkKQEAgLTEwMjIsOCArMTAyNyw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yKQogewogICAgIHNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+YXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMDQ1LDggKzEwNTAsOCBAQCBGbG9hdFNpemUgR3JhcGhp
Y3NDb250ZXh0OjpzY2FsZUZhY3RvckZvckRyYXdpbmcoY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29ucwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRS
ZWN0JiBlbGxpcHNlKQogewotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+ZmlsbEVsbGlwc2UoZWxsaXBzZSk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmZpbGxFbGxpcHNlKGVsbGlwc2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMDU1LDggKzEwNjAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB7Ci0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zdHJva2VFbGxp
cHNlKGVsbGlwc2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zdHJva2VF
bGxpcHNlKGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDIzNzNk
MDM2MDJjMDk4NzRjNWRlZTRiNDI1MzEyOGQzZjE3YjYxZWUuLjkxM2M0NjM4ZjM4MWFlODU4MTc3
YTM4YTJmYzlkNTk5MDYwYTI4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC04MCw2ICs4MCw3IEBAIGNvbnN0IGludCBj
TWlzc3BlbGxpbmdMaW5lUGF0dGVybkdhcFdpZHRoID0gMTsKIGNsYXNzIEFmZmluZVRyYW5zZm9y
bTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsKK2NsYXNzIEdyYXBo
aWNzQ29udGV4dEltcGw7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiBj
bGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFJlY3Q7CkBAIC0yNTEsNiArMjUyLDEwIEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3ND
b250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kik7CisgICAgCisg
ICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRJbXBsPihHcmFwaGljc0NvbnRleHQmKT47CisgICAg
V0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dEltcGxG
YWN0b3J5Jik7CisKICAgICBHcmFwaGljc0NvbnRleHQoKSA9IGRlZmF1bHQ7CiAgICAgV0VCQ09S
RV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dCgpOwogICAgIApAQCAtMjYwLDE0ICsyNjUsMTIgQEAg
cHVibGljOgogICAgIH07CiAgICAgR3JhcGhpY3NDb250ZXh0KE5vblBhaW50aW5nUmVhc29ucyk7
CiAKKyAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNv
bnRleHQoKSBjb25zdDsKIAotICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0
dXJuICFtX2RhdGEgJiYgIWlzUmVjb3JkaW5nKCk7IH0KKyAgICBib29sIHBhaW50aW5nRGlzYWJs
ZWQoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhICYmICFtX2ltcGw7IH0KICAgICBib29sIHVwZGF0
aW5nQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9ub25QYWludGluZ1JlYXNvbnMgPT0g
Tm9uUGFpbnRpbmdSZWFzb25zOjpVcGRhdGluZ0NvbnRyb2xUaW50czsgfQogCi0gICAgdm9pZCBz
ZXREaXNwbGF5TGlzdFJlY29yZGVyKERpc3BsYXlMaXN0OjpSZWNvcmRlciogcmVjb3JkZXIpIHsg
bV9kaXNwbGF5TGlzdFJlY29yZGVyID0gcmVjb3JkZXI7IH0KLSAgICBib29sIGlzUmVjb3JkaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdFJlY29yZGVyOyB9Ci0KICAgICB2b2lkIHNl
dFN0cm9rZVRoaWNrbmVzcyhmbG9hdCk7CiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KIApAQCAtNjQwLDcgKzY0Myw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEZsb2F0UG9pbnQ+IGNlbnRlckxpbmVBbmRDdXRPZmZD
b3JuZXJzKGJvb2wgaXNWZXJ0aWNhbExpbmUsIGZsb2F0IGNvcm5lcldpZHRoLCBGbG9hdFBvaW50
IHBvaW50MSwgRmxvYXRQb2ludCBwb2ludDIpIGNvbnN0OwogCiAgICAgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKiBtX2RhdGEgeyBudWxscHRyIH07Ci0gICAgRGlzcGxheUxpc3Q6OlJl
Y29yZGVyKiBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dEltcGw+IG1faW1wbDsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlIG1fc3RhdGU7CiAgICAgVmVjdG9yPEdyYXBoaWNzQ29udGV4dFN0YXRlLCAxPiBtX3N0
YWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTZlY2JlNDg3ZjEyNzMwYzkzMzJmYTEx
MDc2YzI2NzkxNzdmZTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEltcGw6OkdyYXBoaWNzQ29udGV4dEltcGwoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKQorICAgIDogbV9ncmFwaGljc0NvbnRleHQoY29udGV4dCkKK3sKK30KKworR3JhcGhpY3ND
b250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQoreworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiNDAwYzQzNWQ1NzZkNzA0ZGQ4ZTk1
ZTRjNzBiZjA2MmZkMTE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMCwwICsxLDEwOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dEltcGwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdy
YXBoaWNzQ29udGV4dEltcGwpOworcHVibGljOgorICAgIEdyYXBoaWNzQ29udGV4dEltcGwoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0SW1wbCgpOworCisgICAg
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dDsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTaGFkb3coKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExpbmVE
YXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWl0
ZXJMaW1pdChmbG9hdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIEdyYWRpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBmaWxsUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxsRWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlRWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyUmVjdChj
b25zdCBGbG9hdFJlY3QmKSA9IDA7CisKKyNpZiBVU0UoQ0cpCisgICAgdmlydHVhbCB2b2lkIGFw
cGx5U3Ryb2tlUGF0dGVybigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlGaWxsUGF0dGVy
bigpID0gMDsKKyNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGlsZWRJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxl
IGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSAwOworI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyNl
bmRpZgorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRo
aWNrbmVzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmVzRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJp
bnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UG9pbnQm
LCBmbG9hdCB3aWR0aCwgR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9m
ZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdGb2N1c1Jpbmco
Y29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25z
dCBDb2xvciYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzYXZlKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZXN0b3JlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHRyYW5zbGF0ZShmbG9h
dCB4LCBmbG9hdCB5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUlu
UmFkaWFucykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFj
aXR5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xpcE91dChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwUGF0aChjb25z
dCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29udGV4dDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGVhOTNjYzVm
ODk1OWJkMTJiMWMyZGM0ZjkyYjY3OTgzYTk3MmE1NmUuLjZlMTVmMDQ2NjUwM2EzNGI2MjdkYjAw
MGJhZWU5YWViODllYmFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTU1MCw5ICsxNTUwLDkgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoY29uc3QgQ29tbWl0
U3RhdGUmIGNvbW1pdFN0YXRlLCBjb24KICAgICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0
aWFsQ2xpcChib3VuZHNPcmlnaW4oKSwgc2l6ZSgpKTsKIAotICAgICAgICBHcmFwaGljc0NvbnRl
eHQgY29udGV4dDsKLSAgICAgICAgLy8gVGhlIFJlY29yZGVyIGlzIGxhcmdlLCBzbyBoZWFwLWFs
bG9jYXRlLgotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OlJlY29yZGVyPiBy
ZWNvcmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0
LCAqbV9kaXNwbGF5TGlzdCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29y
ZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9y
bSgpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNv
bnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBlMzZhNjQ3YjJhMGIzMjgzZGIzOWE1ZDY0Y2Fl
NWM0ZmFjMmYzZDJiLi5hZTcxYTZmZDVkMmNmYjMzNDRhZTUzOTE2MjYzZmJjN2U2NDUyZTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgQWZmaW5l
VHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKEluY2x1ZGVEZXZpY2VTY2FsZSkgY29u
c3QKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQWZmaW5lVHJh
bnNmb3JtKCk7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsK
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGlzIG5vdCB5
ZXQgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsKICAgICAgICAgcmV0dXJu
IEFmZmluZVRyYW5zZm9ybSgpOwogICAgIH0KQEAgLTIxMywxNCArMjEzLDE0IEBAIFBsYXRmb3Jt
Q29udGV4dENhaXJvKiBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgQVNTRVJU
KCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CiAgICAgbV9kYXRhLT5zYXZlKCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgQVNTRVJU
KCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5yZXN0b3JlKCk7CiAgICAgbV9kYXRhLT5yZXN0b3JlKCk7CiAK
QEAgLTIzNiw4ICsyMzYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3UmVjdChyZWN0LCBib3JkZXJUaGlj
a25lc3MpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UmVjdChyZWN0
LCBib3JkZXJUaGlja25lc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjUsOCAr
MjY1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2kKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAg
ICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzA1LDggKzMwNSw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50CiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+ZHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TGluZShwb2ludDEsIHBvaW50Mik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTM3NCw4ICszNzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Vs
bGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0VsbGlwc2UocmVjdCk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmRyYXdFbGxpcHNlKHJlY3QpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00MDYsOCArNDA2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRo
KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUGF0aChwYXRoKTsKKyAgICBpZiAobV9p
bXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQyMSw4ICs0MjEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlUGF0aChwYXRoKTsKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ryb2tlUGF0aChwYXRoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDM2LDggKzQzNiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUmVjdChyZWN0KTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQ1MSw4ICs0NTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUmVjdChyZWN0LCBjb2xvcik7
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmZpbGxSZWN0KHJlY3QsIGNvbG9y
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDY3LDggKzQ2Nyw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkg
ewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXAocmVjdCk7CisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXAocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQ5NCw4ICs0OTQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgo
Y29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgY2xpcFJ1bGUpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwUGF0aChwYXRoLCBjbGlwUnVsZSk7Cisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXBQYXRoKHBhdGgsIGNsaXBSdWxl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3LDcgKzUyNyw3IEBAIEludFJlY3Qg
R3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY29uc3QKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCi0gICAgaWYgKGlzUmVjb3JkaW5n
KCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiR2V0dGluZyB0
aGUgY2xpcCBib3VuZHMgbm90IHlldCBzdXBwb3J0ZWQgd2l0aCBkaXNwbGF5IGxpc3RzIik7CiAg
ICAgICAgIHJldHVybiBJbnRSZWN0KC0yMDQ4LCAtMjA0OCwgNDA5NiwgNDA5Nik7IC8vIEZJWE1F
OiBkaXNwbGF5IGxpc3RzLgogICAgIH0KQEAgLTYzNSw4ICs2MzUsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3Qg
RGFzaEFycmF5JgogICAgIGlmICh3aWR0aHMuc2l6ZSgpIDw9IDApCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+ZHJhd0xpbmVzRm9yVGV4dChwb2ludCwgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJs
aW5lcywgc3Ryb2tlVGhpY2tuZXNzKCkpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9p
bXBsLT5kcmF3TGluZXNGb3JUZXh0KHBvaW50LCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRl
cmxpbmVzLCBzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTcwMCw3ICs3MDAsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNl
UGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgZnJlY3QsIFJvdW5kaW5nTQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBmcmVjdDsKIAotICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNz
Q29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscygpIGlzIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRo
IHJlY29yZGluZyBjb250ZXh0cy4iKTsKICAgICAgICAgcmV0dXJuIGZyZWN0OwogICAgIH0KQEAg
LTc0NSw4ICs3NDUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHgs
IGZsb2F0IHkpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT50cmFuc2xhdGUoeCwgeSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnRy
YW5zbGF0ZSh4LCB5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzcyLDcgKzc3Miw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9h
dCBzdHJva2VUaGlja25lc3MpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxh
dGZvcm1Db250ZXh0KCkpOwogCiAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgocGxhdGZvcm1Db250
ZXh0KCktPmNyKCksIHN0cm9rZVRoaWNrbmVzcyk7CiB9CkBAIC03ODUsNyArNzg1LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ry
b2tlU3R5bGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250
ZXh0KCkpOwogCiAgICAgc3dpdGNoIChzdHJva2VTdHlsZSkgewogICAgIGNhc2UgTm9TdHJva2U6
CkBAIC04MTYsOCArODE2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNvbmNhdENUTSh0cmFuc2Zvcm0pOworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9pbXBsLT5jb25jYXRDVE0odHJhbnNmb3JtKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODMyLDcgKzgzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
KyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0
OjpzZXRDVE0oKSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAg
ICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19wdXNo
X2dyb3VwKGNyKTsKQEAgLTg4Niw3ICs4ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5k
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKIApAQCAtOTA1LDggKzkwNSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+Y2xlYXJSZWN0KHJlY3QpOworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGVhclJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTkyNCw4ICs5MjQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHdpZHRoKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlUmVjdChyZWN0LCB3aWR0aCk7
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnN0cm9rZVJlY3QocmVjdCwgd2lk
dGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NDIsOCArOTQyLDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c2V0TGluZUNhcChsaW5lQ2FwKTsK
KyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2V0TGluZUNhcChsaW5lQ2FwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTc2LDggKzk3Niw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hlcywgZmxvYXQgZGFz
aE9mZnNldCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PnNldExpbmVEYXNoKGRhc2hlcywgZGFzaE9mZnNldCk7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPnNldExpbmVEYXNoKGRhc2hlcywgZGFzaE9mZnNldCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTk5Miw4ICs5OTIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0TGluZUpvaW4oTGluZUpvaW4gbGluZUpvaW4pCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRMaW5lSm9pbihsaW5lSm9pbik7CisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPnNldExpbmVKb2luKGxpbmVKb2luKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTAxNyw5ICsxMDE3LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAo
bV9pbXBsKSB7CiAgICAgICAgIC8vIE1heWJlIHRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHN0
YXRlLgotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldE1pdGVyTGltaXQobWl0ZXIp
OworICAgICAgICBtX2ltcGwtPnNldE1pdGVyTGltaXQobWl0ZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMDQ5LDggKzEwNDksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cE91dChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+Y2xpcE91dChwYXRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+Y2xpcE91dChwYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA3
MSw4ICsxMDcxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZShmbG9hdCByYWRpYW5z
KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+cm90YXRl
KHJhZGlhbnMpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5yb3RhdGUocmFk
aWFucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwODUsOCArMTA4NSw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zY2FsZShzaXplKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2NhbGUoc2l6ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEwOTksOCArMTA5OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBPdXQocik7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPmNsaXBPdXQocik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEx
MjAsNyArMTEyMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygp
KTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgaWYgKGhhc1NoYWRv
dygpKQogICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hh
ZG93KCp0aGlzLCByZWN0KTsKQEAgLTExNDAsOCArMTE0MCw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rp
c3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3QsIHJvdW5kZWRI
b2xlUmVjdCwgY29sb3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShyZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE2Nyw4ICsxMTY3LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAg
ICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMTg1LDcgKzExODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygp
KTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgLy8gV2hlbiB0cnVl
LCB1c2UgdGhlIGRlZmF1bHQgQ2Fpcm8gYmFja2VuZCBhbnRpYWxpYXMgbW9kZSAodXN1YWxseSB0
aGlzCiAgICAgLy8gZW5hYmxlcyBzdGFuZGFyZCAnZ3JheXNjYWxlJyBhbnRpYWxpYXNpbmcpOyBm
YWxzZSB0byBleHBsaWNpdGx5IGRpc2FibGUKQEAgLTExOTUsMTQgKzExOTUsMTQgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1JbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpCiB7Ci0gICAgQVNTRVJUKCFpc1JlY29y
ZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkocXVhbGl0eSk7CiB9CiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgaWYgKCFoYXNQbGF0Zm9ybUNvbnRleHQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUo
Y2Fpcm9fZ2V0X3RhcmdldChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkpID09IENBSVJPX1NVUkZB
Q0VfVFlQRV9HTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA3Y2ZhZmNlNDM0ZmFhZWJhMjU5Y2U5
MDgyYTdmNzhmOTMwMmExMWFjLi5mYzI5MWUyZWNiY2QyNmI2MWZlNWNlMjkwMGE4NGE1ZmM4NzNk
NmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgQ0dDb250ZXh0UmVm
IEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7CiAgICAgQVNTRVJUKCFwYWludGluZ0Rpc2Fi
bGVkKCkpOwotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRm
b3JtQ29udGV4dCgpKTsKIAogICAgIC8vIE5vdGU6IERvIG5vdCB1c2UgdGhpcyBmdW5jdGlvbiB3
aXRoaW4gdGhpcyBjbGFzcyBpbXBsZW1lbnRhdGlvbiwgc2luY2Ugd2Ugd2FudCB0byBhdm9pZCB0
aGUgZXh0cmEKICAgICAvLyBzYXZlIG9mIHRoZSBzZWNvbmRhcnkgY29udGV4dCAoaW4gR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCkuCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9ybVN0YXRlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7CiAgICAgQVNTRVJUKCFwYWludGluZ0Rpc2FibGVk
KCkpOwotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3Jt
Q29udGV4dCgpKTsKIAogICAgIC8vIE5vdGU6IERvIG5vdCB1c2UgdGhpcyBmdW5jdGlvbiB3aXRo
aW4gdGhpcyBjbGFzcyBpbXBsZW1lbnRhdGlvbiwgc2luY2Ugd2Ugd2FudCB0byBhdm9pZCB0aGUg
ZXh0cmEKICAgICAvLyByZXN0b3JlIG9mIHRoZSBzZWNvbmRhcnkgY29udGV4dCAoaW4gR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCkuCkBAIC0xOTAsOCArMTkwLDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4mIGltYWdlLCBjb25zdAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zMjUsOCArMzI1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RS
ZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVu
ZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzAsOCArNDMwLDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+ZHJhd1JlY3QocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1JlY3QocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDY4LDggKzQ2OCw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50CiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+ZHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TGluZShwb2ludDEsIHBvaW50Mik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTUzMyw4ICs1MzMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Vs
bGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0VsbGlwc2UocmVjdCk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmRyYXdFbGxpcHNlKHJlY3QpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC01NDgsOCArNTQ4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5U3Ry
b2tlUGF0dGVybigpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5hcHBseVN0cm9rZVBhdHRlcm4oKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+YXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTU3Miw4ICs1NzIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlGaWxsUGF0dGVybigp
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5hcHBseUZp
bGxQYXR0ZXJuKCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmFwcGx5Rmls
bFBhdHRlcm4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjIzLDggKzYyMyw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+ZHJhd1BhdGgocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRy
YXdQYXRoKHBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NTcsOCArNjU3LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5maWxsUGF0aChwYXRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+
ZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyMCw4ICs3MjAs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+c3Ryb2tlUGF0aChwYXRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+c3Ryb2tlUGF0aChwYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzgy
LDggKzc4Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT5maWxsUmVjdChyZWN0KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+Zmls
bFJlY3QocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgzNSw4ICs4MzUsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5maWxsUmVjdChyZWN0LCBjb2xvcik7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPmZpbGxSZWN0KHJlY3QsIGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEFTU0VSVCgh
aXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ29sb3Igb2xk
RmlsbENvbG9yID0gZmlsbENvbG9yKCk7CkBAIC05MTMsOCArOTEzLDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgY29sb3Ip
OworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxsUmVjdFdpdGhSb3VuZGVk
SG9sZShyZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtOTU5LDggKzk1OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmNsaXAocmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmNsaXAocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk3Myw4ICs5NzMsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwT3V0KHJl
Y3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGlwT3V0KHJlY3QpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OTUsOCArOTk1LDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBPdXQocGF0aCk7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPmNsaXBPdXQocGF0aCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTEwMTIsOCArMTAxMiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0
aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBQYXRoKHBhdGgsIGNsaXBSdWxlKTsK
KyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+Y2xpcFBhdGgocGF0aCwgY2xpcFJ1
bGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBJbnRS
ZWN0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygpIGNvbnN0CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIGlmIChpc1JlY29y
ZGluZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdldHRp
bmcgdGhlIGNsaXAgYm91bmRzIG5vdCB5ZXQgc3VwcG9ydGVkIHdpdGggZGlzcGxheSBsaXN0cyIp
OwogICAgICAgICByZXR1cm4gSW50UmVjdCgtMjA0OCwgLTIwNDgsIDQwOTYsIDQwOTYpOyAvLyBG
SVhNRTogZGlzcGxheSBsaXN0cy4KICAgICB9CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwogCiAgICAgc2F2ZSgpOwogCkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsK
KyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNv
bnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRFbmRUcmFuc3BhcmVuY3lM
YXllcihjb250ZXh0KTsKQEAgLTExMTIsNyArMTExMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwg
Y29uCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwogICAgIAogICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBhdm9pZCB0aGUgc2hhZG93IHNldHVwIGNv
c3Qgd2hlbiB3ZSBrbm93IHdlJ2xsIHJlbmRlciB0aGUgc2hhZG93IG91cnNlbHZlcy4KIApAQCAt
MTE2NCw5ICsxMTY0LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQoZmxv
YXQgbGltaXQpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIC8v
IE1heWJlIHRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHN0YXRlLgotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPnNldE1pdGVyTGltaXQobGltaXQpOworICAgICAgICBtX2ltcGwtPnNl
dE1pdGVyTGltaXQobGltaXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTc4LDgg
KzExNzgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNs
ZWFyUmVjdChyKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+Y2xlYXJSZWN0
KHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTkxLDggKzExOTEsOCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IGxpbmVXaWR0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPnN0cm9rZVJlY3QocmVjdCwgbGluZVdpZHRoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAg
ICAgIG1faW1wbC0+c3Ryb2tlUmVjdChyZWN0LCBsaW5lV2lkdGgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMjYxLDggKzEyNjEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
TGluZUNhcChMaW5lQ2FwIGNhcCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPnNldExpbmVDYXAoY2FwKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+c2V0TGluZUNhcChjYXApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
Mjg0LDggKzEyODQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZURhc2goY29uc3Qg
RGFzaEFycmF5JiBkYXNoZXMsIGZsb2F0IGRhc2hPZmZzZXQpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRMaW5lRGFzaChkYXNoZXMsIGRhc2hPZmZz
ZXQpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zZXRMaW5lRGFzaChkYXNo
ZXMsIGRhc2hPZmZzZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzA0LDggKzEz
MDQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4oTGluZUpvaW4gam9pbikK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
aXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldExpbmVK
b2luKGpvaW4pOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zZXRMaW5lSm9p
bihqb2luKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMzMiw4ICsxMzMyLDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNjYWxlKHNpemUpOwor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zY2FsZShzaXplKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTM0Nyw4ICsxMzQ3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnJvdGF0ZShmbG9hdCBhbmdsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPnJvdGF0ZShhbmdsZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAg
ICBtX2ltcGwtPnJvdGF0ZShhbmdsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEz
NjIsOCArMTM2Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwg
ZmxvYXQgeSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PnRyYW5zbGF0ZSh4LCB5KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dHJh
bnNsYXRlKHgsIHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzc3LDggKzEzNzcs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMzkyLDcgKzEzOTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1w
bCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKCkgaXMg
bm90IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xNDA3LDcgKzE0MDcsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gR3JhcGhpY3ND
b250ZXh0OjpnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSkgY29uc3QKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KCk7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGlzIG5vdCB5ZXQgY29t
cGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsKICAgICAgICAgcmV0dXJuIEFmZmlu
ZVRyYW5zZm9ybSgpOwogICAgIH0KQEAgLTE0MjYsNyArMTQyNiw3IEBAIEZsb2F0UmVjdCBHcmFw
aGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBS
b3VuZGluZ01vCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHJl
Y3Q7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoKSBp
cyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAg
IHJldHVybiByZWN0OwogICAgIH0KQEAgLTE0ODksOCArMTQ4OSw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBE
YXNoQXJyYXkmCiAgICAgaWYgKCF3aWR0aHMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRy
YXdMaW5lc0ZvclRleHQocG9pbnQsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJv
a2VUaGlja25lc3MoKSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdM
aW5lc0ZvclRleHQocG9pbnQsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VU
aGlja25lc3MoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1NTAsNyArMTU1MCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2lt
cGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJl
Y3QoKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAg
ICAgICAgIHJldHVybjsgLy8gRklYTUUgZm9yIGRpc3BsYXkgbGlzdHMuCiAgICAgfQpAQCAtMTYw
Myw3ICsxNjAzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldElzQ0FMYXllckNvbnRleHQo
Ym9vbCBpc0xheWVyQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICBpZiAobV9pbXBsKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoaXNMYXllckNvbnRleHQpCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDo6aXNDQUxheWVyQ29udGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIEZJWE1FCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgaWYgKG1faW1w
bCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1fZGF0YS0+bV9jb250ZXh0
RmxhZ3MgJiBJc0xheWVyQ0dDb250ZXh0OwpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wgaXNBY2NlbGVyYXRlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkK
KyAgICBpZiAobV9pbXBsKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNBY2NlbGVyYXRl
ZCkKQEAgLTE2NDUsNyArMTY0NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0FjY2VsZXJh
dGVkQ29udGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1F
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgaWYgKG1faW1wbCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIG1fZGF0YS0+bV9jb250ZXh0RmxhZ3MgJiBJc0FjY2VsZXJh
dGVkQ0dDb250ZXh0OwpAQCAtMTY1Niw3ICsxNjU2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAg
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBzd2l0Y2gg
KG1vZGUpIHsKQEAgLTE2NzksNyArMTY3OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkp
OworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBzZXRDR1N0cm9rZUNv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvcik7CiB9CkBAIC0xNjg5LDcgKzE2ODksNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VUaGlja25lc3MoZmxvYXQgdGhp
Y2tuZXNzKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKIAogICAgIENHQ29udGV4dFNldExpbmVXaWR0aChwbGF0Zm9ybUNvbnRleHQoKSwgc3Rk
OjptYXgodGhpY2tuZXNzLCAwLmYpKTsKIH0KQEAgLTE2OTksNyArMTY5OSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAg
ICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KQEAgLTE3MDks
NyArMTcwOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlh
bGlhcyhib29sIGVuYWJsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZv
cm1Db250ZXh0KCksIGVuYWJsZSk7CiB9CkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhib29sIGVuYWJsZSkKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQo
IWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAg
ICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhwbGF0Zm9ybUNvbnRleHQoKSwgZW5hYmxl
KTsKIH0KQEAgLTE3MjksNyArMTcyOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybUFscGhhKGZsb2F0IGFscGhhKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhh
c1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFNldEFscGhhKHBsYXRmb3JtQ29u
dGV4dCgpLCBhbHBoYSk7CiB9CkBAIC0xNzM5LDcgKzE3MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgbW9k
ZSwgQmxlbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKIAogICAgIENHQmxlbmRNb2RlIHRhcmdldCA9IGtDR0JsZW5kTW9kZU5vcm1hbDsKICAg
ICBpZiAoYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1hbCkgewpAQCAtMTg1Miw3ICsxODUyLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVCho
YXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICAvLyBDb3JlR3JhcGhpY3MgZXhwZWN0cyB0aGUg
YmFzZSBDVE0gb2YgYSBIaURQSSBjb250ZXh0IHRvIGhhdmUgdGhlIHNjYWxlIGZhY3RvciBhcHBs
aWVkIHRvIGl0LgogICAgIC8vIEZhaWxpbmcgdG8gY2hhbmdlIHRoZSBiYXNlIGxldmVsIENUTSB3
aWxsIGNhdXNlIGNlcnRhaW4gQ0cgZmVhdHVyZXMsIHN1Y2ggYXMgZm9jdXMgcmluZ3MsCkBAIC0x
ODY1LDcgKzE4NjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsRWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgLy8gQ0dDb250ZXh0RmlsbEVsbGlwc2VJ
blJlY3Qgb25seSBzdXBwb3J0cyBzb2xpZCBjb2xvcnMuCiAgICAgaWYgKG1fc3RhdGUuZmlsbEdy
YWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JiBlbGxpcHNlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKIAogICAgIC8vIENHQ29udGV4dFN0cm9rZUVsbGlwc2VJblJlY3Qgb25seSBzdXBw
b3J0cyBzb2xpZCBjb2xvcnMuCiAgICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgfHwgbV9z
dGF0ZS5zdHJva2VQYXR0ZXJuKSB7CkBAIC0xOTA0LDYgKzE5MDQsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0RGVzdGluYXRpb25Gb3JSZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
RmxvYXRSZWN0JgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CisKICAgICBDR0NvbnRleHRSZWYg
Y29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgRmxvYXRSZWN0IHJlY3QgPSBkZXN0
UmVjdDsKQEAgLTE5MTgsNiArMTkyMCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGREZXN0
aW5hdGlvbkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGbG9hdFBvaW50CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKGhh
c1BsYXRmb3JtQ29udGV4dCgpKTsKKwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZv
cm1Db250ZXh0KCk7CiAKICAgICBDR1BvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBDR1BvaW50QXBw
bHlBZmZpbmVUcmFuc2Zvcm0ocG9zaXRpb24sIENHQ29udGV4dEdldENUTShjb250ZXh0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dENvY29hLm1tCmluZGV4IDFjMGE3NjA4NjY4NTA0YmUxODMxOGVhOTcx
NDM1M2E5ZWFiMTg5ZjQuLjMzYzQ4MDBjNjg2MjBkNjkxM2E3OTRhMmNjNDVlNzU4MzhjMWM0ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCkBAIC0xMTksOCArMTE5LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lk
dGgsIGZsb2F0IG9mZnNldCwKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0ZvY3VzUmluZyhwYXRoLCB3aWR0aCwgb2Zm
c2V0LCBjb2xvcik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdGb2N1
c1JpbmcocGF0aCwgd2lkdGgsIG9mZnNldCwgY29sb3IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1Jp
bmcoY29uc3QgUGF0aCYgcGF0aCwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG4KICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChpc1JlY29yZGluZygpKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1hdGVkIGZvY3Vz
IHJpbmcgZHJhd2luZy4KKyAgICBpZiAobV9pbXBsKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1h
dGVkIGZvY3VzIHJpbmcgZHJhd2luZy4KICAgICAgICAgcmV0dXJuOwogCiAgICAgbmVlZHNSZWRy
YXcgPSBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKHBsYXRmb3JtQ29udGV4dCgpLCBwYXRo
LnBsYXRmb3JtUGF0aCgpLCB0aW1lT2Zmc2V0KTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVj
dHMsIGRvdWJsZSB0aW1lTwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSAvLyBGSVhNRTogaW1wbGVtZW50IGFuaW1h
dGVkIGZvY3VzIHJpbmcgZHJhd2luZy4KKyAgICBpZiAobV9pbXBsKSAvLyBGSVhNRTogaW1wbGVt
ZW50IGFuaW1hdGVkIGZvY3VzIHJpbmcgZHJhd2luZy4KICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IGZvY3VzUmluZ1BhdGggPSBhZG9wdENGKENHUGF0
aENyZWF0ZU11dGFibGUoKSk7CkBAIC0xNjcsOCArMTY3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3
aWR0aCwKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRy
YXdGb2N1c1JpbmcocmVjdHMsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0ZvY3VzUmluZyhyZWN0cywgd2lkdGgsIG9mZnNldCwg
Y29sb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMzdiZDQxZTZmYmE5YzE0MTQwZWE0NDc5NjUyZmFlZDFh
MWU3NzExYy4uZDg3NjFiZWY5NDcxMzBjNDBmOWIwMzJhYjdjYWE4ZDk0ZTgyM2UzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzcsMTEgKzM3LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIFJlY29yZGVy
OjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBiYXNlQ1RNKQotICAgIDogbV9ncmFwaGljc0NvbnRleHQoY29udGV4dCkKKyAgICA6IEdyYXBo
aWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIGJhc2VDVE0pCiAgICAgLCBtX2Rp
c3BsYXlMaXN0KGRpc3BsYXlMaXN0KQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlz
dHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOwot
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LnNldERpc3BsYXlMaXN0UmVjb3JkZXIodGhpcyk7CiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChDb250ZXh0U3RhdGUoYmFzZUNUTSwgaW5pdGlhbENsaXApKTsK
IH0KIApAQCAtMzc0LDcgKzM3Myw3IEBAIEl0ZW0mIFJlY29yZGVyOjphcHBlbmRJdGVtKFJlZjxJ
dGVtPiYmIGl0ZW0pCiAKIHZvaWQgUmVjb3JkZXI6OnVwZGF0ZUl0ZW1FeHRlbnQoRHJhd2luZ0l0
ZW0mIGl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0
ID0gaXRlbS5sb2NhbEJvdW5kcyhtX2dyYXBoaWNzQ29udGV4dCkpCisgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcyhncmFwaGljc0NvbnRleHQo
KSkpCiAgICAgICAgIGl0ZW0uc2V0RXh0ZW50KGV4dGVudEZyb21Mb2NhbEJvdW5kcyhyZWN0LnZh
bHVlKCkpKTsKIH0KIApAQCAtMzk2LDcgKzM5NSw3IEBAIEZsb2F0UmVjdCBSZWNvcmRlcjo6ZXh0
ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKICAgICBGbG9h
dFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICBDb2xvciBz
aGFkb3dDb2xvcjsKLSAgICBpZiAobV9ncmFwaGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKKyAgICBpZiAoZ3JhcGhpY3NDb250
ZXh0KCkuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikp
IHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVudD0gYm91bmRzOwogICAgICAgICBzaGFk
b3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOwogICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0
ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRpdXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDZhMjkwMjMzNDc3MTYwZjQ1MDk5OWQxZTIzNGRiZjI5
MjIwNzgwMDUuLmY5ZTQ5YTU5MGI5Y2I4MTA5OWM0MjMwYmE3MDhkZTQzMjQwYmQxMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIiAvLyBGb3IgSW50ZXJwb2xhdGlvblF1YWxpdHkuCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkltYWdlLmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1
bGUuCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CkBAIC00Nyw3OSArNDcsNzkgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xhc3MgRHJh
d2luZ0l0ZW07CiAKLWNsYXNzIFJlY29yZGVyIHsKK2NsYXNzIFJlY29yZGVyIDogcHVibGljIEdy
YXBoaWNzQ29udGV4dEltcGwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsK
IHB1YmxpYzoKICAgICBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAg
IH5SZWNvcmRlcigpOwotCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKLSAgICB2
b2lkIGNsZWFyU2hhZG93KCk7Ci0KLSAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7Ci0gICAg
dm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KTsKLSAg
ICB2b2lkIHNldExpbmVKb2luKExpbmVKb2luKTsKLSAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxv
YXQpOwotCi0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJik7Ci0gICAgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsK
LSAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3Qg
Q29sb3ImLCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBj
b25zdCBDb2xvciYpOwotICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpOwotICAgIHZvaWQg
ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7Ci0gICAgdm9pZCBzdHJva2VQYXRoKGNvbnN0
IFBhdGgmKTsKLSAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAg
dm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB+UmVjb3JkZXIo
KTsKKworICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0
Lml0ZW1Db3VudCgpOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyU2hhZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHNldExpbmVDYXAoTGluZUNhcCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRMaW5lRGFzaChj
b25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dExpbmVKb2luKExpbmVKb2luKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxv
YXQpIG92ZXJyaWRlOworCisgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29s
b3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVu
ZE1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzdHJva2VQYXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBj
bGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQ0cpCi0gICAg
dm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKLSAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsK
KyAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlG
aWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUp
OworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwotICAgIHZvaWQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBv
aW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKLSAgICB2b2lkIGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKKyAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUs
IEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwog
I2VuZGlmCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZU5vcm1hbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcyk7Ci0gICAgdm9pZCBkcmF3TGluZShj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZvaWQgZHJhd0xpbmVz
Rm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wg
cHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAg
dm9pZCBkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3
aWR0aCwgR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZSk7Ci0gICAgdm9p
ZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdQYXRoKGNvbnN0
IFBhdGgmKTsKKyAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRl
clRoaWNrbmVzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4
dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRp
bmcsIGJvb2wgZG91YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9h
dCB3aWR0aCwgR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0Zv
Y3VzUmluZyhjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29s
b3ImKTsKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBm
bG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOworICAgIHZvaWQgZHJhd0Zv
Y3VzUmluZyhjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29s
b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0
UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBzYXZlKCk7Ci0gICAgdm9pZCByZXN0b3JlKCk7CisgICAgdm9pZCBzYXZl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN0b3JlKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHRy
YW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUlu
UmFkaWFucyk7Ci0gICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKLSAgICB2b2lkIGNv
bmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIHRyYW5zbGF0ZShmbG9h
dCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKKyAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFk
aWFucykgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KTsKLSAgICB2
b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxh
eWVyKGZsb2F0IG9wYWNpdHkpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2
b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBh
dGgmKTsKLSAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7CisgICAgdm9p
ZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcE91dChjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpIG92
ZXJyaWRlOworICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlk
ZTsKICAgICAKLSAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOworICAgIHZv
aWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKLSAgICBzaXplX3Qg
aXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsgfQot
Ci1wcml2YXRlOgogICAgIEl0ZW0mIGFwcGVuZEl0ZW0oUmVmPEl0ZW0+JiYpOwogICAgIHZvaWQg
d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpOwogCkBAIC0xNjEsNyArMTYxLDYgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OwogICAgIENv
bnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIG1fZ3Jh
cGhpY3NDb250ZXh0OwogICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogCiAgICAgVmVj
dG9yPENvbnRleHRTdGF0ZSwgMzI+IG1fc3RhdGVTdGFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGRiN2M4ZjcwZTVlZDgwZDQ4NjgyMjgwNDg4MjRkNDc4
NTA4OWU0OTEuLjk3OGU5NWNjMDFmYzZiMzVmMzY4Y2IzZGI3ZTZiNTdmZmYyMmIzNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBA
IGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3Rh
dGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoVU5MSUtF
TFkocGFpbnRJbmZvLmNvbnRleHQoKS5pc1JlY29yZGluZygpKSkKKyAgICBpZiAoVU5MSUtFTFko
IXBhaW50SW5mby5jb250ZXh0KCkuaGFzUGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gYm94LnN0eWxlKCkuYXBwZWFyYW5j
ZSgpOwo=
</data>
<flag name="review"
          id="345416"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326047</attachid>
            <date>2017-11-04 15:36:50 -0700</date>
            <delta_ts>2017-11-04 16:43:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179286-20171104153648.patch</filename>
            <type>text/plain</type>
            <size>81746</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhZTMxYmEzZGZiZDhj
Yjc1NmJmMGJmNDI4YWMzZWZkZWIzZGRhNC4uYzk4NDFmYmFmYTJhMzFmOGQ1ZDFhMmI2YzdjOWJk
MjM3MjllYzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MSBAQAorMjAxNy0xMS0wNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBHcmFw
aGljc0NvbnRleHRJbXBsIGFuZCB1c2UgaXQgZm9yIERpc3BheUxpc3Q6OlJlY29yZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFN0YXJ0IG1vdmluZyB0b3dh
cmRzIGEgbW9kZWwgd2hlbiBHcmFwaGljc0NvbnRleHQgaGFzIGEgcG9pbnRlciB0byBhbiBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICAoInBpbXBsIikgYnkgYWRkaW5nIEdyYXBoaWNzQ29udGV4dElt
cGwsIGFuZCBjb252ZXJ0aW5nIGRpc3BsYXkgbGlzdCByZWNvcmRpbmcgdG8KKyAgICAgICAgYmUg
YW4gaW1wbGVtZW50YXRpb24gb2YgYSBHcmFwaGljc0NvbnRleHRJbXBsLgorCisgICAgICAgIE5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VU
aGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZEFudGlhbGlhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZFNtb290aEZvbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVy
bik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFJ1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldEFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RHJh
d0x1bWluYW5jZU1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBs
eURldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZmlsbEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VF
bGxpcHNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzUGxhdGZvcm1Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRpbmdEaXNhYmxl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERpc3BsYXlM
aXN0UmVjb3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Ojppc1JlY29yZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbDo6R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsOjp+R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmdyYXBoaWNzQ29udGV4dCBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpnZXRDVE0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjbGlwQm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Ojp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Ojpjb25jYXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
ZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3Jt
VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpl
bmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVD
YXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lRGFzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TWl0ZXJMaW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
Y2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJv
dW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3Jt
U2hvdWxkQW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1JbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxp
cHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YXBwbHlGaWxsUGF0dGVy
bik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
aXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRy
YW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRN
aXRlckxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVDYXApOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lRGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpyb3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpnZXRDVE0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldFVSTEZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
ZXRJc0NBTGF5ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
aXNDQUxheWVyQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRB
bnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bVNob3VsZFNtb290aEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1BbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cGxhdGZvcm1BcHBseURldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtU3Ryb2tlRWxsaXBzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERlc3RpbmF0aW9uRm9yUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFkZERlc3RpbmF0aW9uQXRQb2ludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp1cGRhdGVJdGVtRXh0ZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZXh0ZW50
RnJvbUxvY2FsQm91bmRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjppdGVtQ291bnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnQpOgor
CiAyMDE3LTExLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXBsZW1lbnQgU2VydmljZVdvcmtlckNvbnRhaW5lci5nZXRSZWdpc3RyYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggZDc4Njk5ZWRlZDc4ODNlNTIxOTFjNzkwNzQyZjRiZjVmMjIxZTVmMi4uZDJl
MWVmN2RhOTc2ZGM5NzIxZWM0ODc0Y2EwYjcxNmRlNTE2MGU3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTE1MDUsNiArMTUwNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNm
b3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MWEwMzExYzFmMDc1MTY5N2MwNWEzMjY4NTA5YzU0YzA0NmFlOTIwYy4uMDc2MGYwMzEzYmE1ZGQ0
ZTQyNDM1NjFjY2ZkZWNkNzJjZWIwODQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTM0OSw2ICs1MzQ5LDggQEAKIAkJMEM0
NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRTcwNThFRDFCQzVCQzE5MDA0NUE1MDcgLyogU2Vh
cmNoUG9wdXBNZW51Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMDAxMjNGMUZBRDg3RDYwMDUzMUQ3NiAvKiBHcmFwaGljc0NvbnRleHRJbXBs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwMDEyNDAxRkFEODgxMDAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4
dEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDNDMDczMTg4NDY5NUUwMEE1RjhDQSAvKiBT
eXN0ZW1NZW1vcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtTWVt
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDk5RDA2MTdCOTY4QTEwMEZG
ODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIyNjM0LDYgKzIyNjM2LDggQEAKIAkJCQk2RTIxQzZCRjExMjYzMzg1MDBBN0JF
MDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovLAogCQkJCTQ5QzdCOUZCMTA0MkQzNjUwMDA5
RDQ0NyAvKiBHcmFwaGljc0NvbnRleHQzRC5oICovLAogCQkJCTdDMzMwQTAxMURGOEZBQzYwMEQz
Mzk1QyAvKiBHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMuaCAqLywKKwkJCQkwRjAwMTI0MDFG
QUQ4ODEwMDA1MzFENzYgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAgKi8sCisJCQkJMEYwMDEy
M0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCAqLywKIAkJCQkwRjU4
MEIwOTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBC
MEEwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBG
MTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggNGExMGFlMTU4OWI4ZWY4ZDMyZDQ3NmRiNzdjOTAzMWQwODg5NDQ0Ny4uMjk2YWRmMmE3
OTJlNWI3ODBjM2RhNzFjNzhlNmNiMWViMTg0NmU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC04OSwx
MSArODksMTIgQEAgc3RydWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0
OwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciByZWNvcmRlcjsKICAgICBEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QgZGlzcGxheUxpc3Q7CiAgICAgCiAgICAgRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dChjb25zdCBGbG9hdFJlY3QmIGNsaXApCi0gICAgICAgIDogcmVjb3JkZXIoY29udGV4dCwg
ZGlzcGxheUxpc3QsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKQorICAgICAgICA6IGNvbnRleHQo
WyZdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCBkaXNwbGF5TGlzdCwg
Y2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICB9KQogICAgIHsKICAgICB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKaW5kZXggNDM2ZGY1NGM1M2M5ZGVhOGFmZjA5NzcwNWJkY2I1ODE3ODJkNDQ2Mi4uNjQz
ZDQwNGYzYTc3OWM1NjBiYmRmYTRjY2UxNGYwYjY2MmI3ZjcxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yOCw5
ICsyOCw5IEBACiAKICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJCaXRtYXBJ
bWFnZS5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKICNpbmNsdWRlICJGbG9h
dFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKQEAgLTMzNiw2ICszMzYsMTEgQEAgR3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBs
YXRmb3JtR3JhcGhpY3NDb250ZXgKICAgICBwbGF0Zm9ybUluaXQocGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQpOwogfQogCitHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFw
aGljc0NvbnRleHRJbXBsRmFjdG9yeSYgZmFjdG9yeUZ1bmN0aW9uKQorICAgIDogbV9pbXBsKGZh
Y3RvcnlGdW5jdGlvbigqdGhpcykpCit7Cit9CisKIEdyYXBoaWNzQ29udGV4dDo6fkdyYXBoaWNz
Q29udGV4dCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhY2suaXNFbXB0eSgpKTsKQEAgLTM1MCw4ICsz
NTUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZSgpCiAKICAgICBtX3N0YWNrLmFwcGVu
ZChtX3N0YXRlKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+c2F2ZSgpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBs
LT5zYXZlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3Niw4ICszODEsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgaWYgKG1fc3RhY2suaXNFbXB0eSgp
KQogICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnJlc3RvcmUoKTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+cmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MDcsOCArNDEyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogewogICAgIG1f
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gdGhpY2tuZXNzOwotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7CisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00MTgsOCArNDIzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVRo
aWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
U3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0
eWxlOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0
eWxlQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKHN0eWxlKTsK
QEAgLTQzMCw4ICs0MzUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSBjb2xvcjsKICAg
ICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0cm9rZVBh
dHRlcm4gPSBudWxscHRyOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0cm9rZUNv
bG9yKGNvbG9yKTsKQEAgLTQ0NSw4ICs0NTAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvcgog
I2lmIFVTRShDRykKICAgICBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMgPSBmYWxzZTsK
ICNlbmRpZgotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Ip
OwpAQCAtNDYwLDggKzQ2NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMZWdhY3lTaGFk
b3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0CiAjaWYgVVNFKENH
KQogICAgIG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IHRydWU7CiAjZW5kaWYKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBzZXRQbGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKQEAgLTQ3Niw4
ICs0ODEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQogICAgIG1fc3Rh
dGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsZWFyU2hhZG93
KCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsZWFyU2hhZG93KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwpAQCAtNTE2
LDggKzUyMSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0
YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0g
ICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsQ29sb3JDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MjcsMTYgKzUz
MiwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhi
b29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewogICAgIG1fc3RhdGUuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOwor
ICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlh
bGlhcykKIHsKICAgICBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhczsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlh
bGlhc0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDcsOCArNTUyLDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMp
CiB7CiAgICAgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IHNob3VsZFNtb290aEZvbnRzOwog
ICAgIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNt
b290aEZvbnRzQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRz
Q2hhbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTU1OCw4ICs1NjMsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRT
bW9vdGhGb250cykKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCiB7CiAgICAgbV9zdGF0
ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHM7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCi0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250c0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBs
LT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSkKQEAgLTU2OSw4ICs1NzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRl
U3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHlDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eUNoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU4MSw0NSArNTg2LDQ1
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYm
IHBhdHRlcm4pCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAg
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7CisgICAgaWYg
KG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQogewogICAgIG1fc3Rh
dGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RG
TW92ZShwYXR0ZXJuKTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbFBhdHRlcm5DaGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+dXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCkKIHsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92
ZShncmFkaWVudCk7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Up
OworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKQogewogICAgIG1f
c3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVsZTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1f
aW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxl
Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQpCiB7CiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZN
b3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKTsg
Ly8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1f
aW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFk
aWVudENoYW5nZSk7IC8vIEZJWE1FOiBhbHNvIGZpbGwgcGF0dGVybj8KIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAg
ICBtX2ltcGwtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwpA
QCAtNjI4LDggKzYzMyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5j
eUxheWVyKGZsb2F0IG9wYWNpdHkpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3Bh
cmVuY3lMYXllcigpCiB7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIGlmIChtX2ltcGwp
IHsKKyAgICAgICAgbV9pbXBsLT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTY1MSw4
ICs2NTYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udENhc2NhZGUsIGNvbnN0IEZvbnQmIGZvbgogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd0dseXBocyhmb250LCBidWZmZXIsIGZyb20s
IG51bUdseXBocywgcG9pbnQsIGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9v
dGhpbmcoKSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdHbHlwaHMo
Zm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250Q2FzY2FkZS5mb250RGVz
Y3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03MjIsOCArNzI3LDggQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdP
cHRpb25zKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0ltYWdlKGlt
YWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAgICAgICAg
IHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29yZDsKICAgICB9CiAKQEAgLTczNiw4ICs3
NDEsOCBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdU
aWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywg
aW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNw
YWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkUmVjb3JkOwogICAgIH0KIApAQCAtNzUxLDggKzc1Niw4IEBAIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdU
aWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhS
dWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiAgICAgfQogCkBAIC04NDgsOCArODUzLDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBt
b2RlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNo
YW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKG1vZGUp
OwpAQCAtODYwLDggKzg2NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmZpbGxSZWN0KHJlY3QsIGdyYWRpZW50KTsK
KyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCwgZ3JhZGll
bnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzMsOCArODc4LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb21wb3MKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmZpbGxSZWN0KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3QocmVjdCwgY29sb3IsIG9wLCBibGVu
ZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04ODksOCArODk0LDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPmZpbGxSb3VuZGVkUmVjdChyZWN0LCBjb2xvciwgYmxlbmRNb2RlKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNv
bG9yLCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MzIsOCArOTM3
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRB
bHBoYShmbG9hdCBhbHBoYSkKIHsKICAgICBtX3N0YXRlLmFscGhhID0gYWxwaGE7Ci0gICAgaWYg
KGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IHNldFBsYXRmb3JtQWxwaGEoYWxwaGEpOwpAQCAtOTQzLDggKzk0OCw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3BlcmF0aW9uCiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0
ZU9wZXJhdGlvbjsKICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAgICBpZiAo
aXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFu
Z2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CkBAIC05NTMsOCArOTU4LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRpb24KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNl
TWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKQogewogICAgIG1fc3RhdGUuZHJhd0x1bWluYW5j
ZU1hc2sgPSBkcmF3THVtaW5hbmNlTWFzazsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkKLSAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpOworICAgIGlmIChtX2ltcGwpCisg
ICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKTsKIH0KIAogI2lmICFVU0UoQ0cpICYmICFVU0UoRElS
RUNUMkQpCkBAIC0xMDIyLDggKzEwMjcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICBzY2FsZShk
ZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVG
YWN0b3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5hcHBseURldmljZVNj
YWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTA0NSw4ICsxMDUwLDggQEAgRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6c2NhbGVGYWN0
b3JGb3JEcmF3aW5nKGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnMKIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHsKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmZp
bGxFbGxpcHNlKGVsbGlwc2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5m
aWxsRWxsaXBzZShlbGxpcHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA1NSw4
ICsxMDYwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYgZWxsaXBzZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c3Ryb2tlRWxsaXBzZShlbGxpcHNlKTsKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c3Ryb2tlRWxsaXBzZShlbGxpcHNlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMzczZDAzNjAyYzA5ODc0YzVkZWU0YjQy
NTMxMjhkM2YxN2I2MWVlLi45MTNjNDYzOGYzODFhZTg1ODE3N2EzOGEyZmM5ZDU5OTA2MGEyODU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtODAsNiArODAsNyBAQCBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGluZVBhdHRl
cm5HYXBXaWR0aCA9IDE7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFJvdW5k
ZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBj
bGFzcyBJbnRSZWN0OwpAQCAtMjUxLDYgKzI1MiwxMCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4
dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopOworICAgIAorICAgIHVzaW5nIEdyYXBoaWNzQ29u
dGV4dEltcGxGYWN0b3J5ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3ND
b250ZXh0SW1wbD4oR3JhcGhpY3NDb250ZXh0Jik+OworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSYpOworCiAgICAgR3Jh
cGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0Nv
bnRleHQoKTsKICAgICAKQEAgLTI2MCwxNCArMjY1LDEyIEBAIHB1YmxpYzoKICAgICB9OwogICAg
IEdyYXBoaWNzQ29udGV4dChOb25QYWludGluZ1JlYXNvbnMpOwogCisgICAgYm9vbCBoYXNQbGF0
Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CiAKLSAg
ICBib29sIHBhaW50aW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhICYmICFpc1Jl
Y29yZGluZygpOyB9CisgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4g
IW1fZGF0YSAmJiAhbV9pbXBsOyB9CiAgICAgYm9vbCB1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fbm9uUGFpbnRpbmdSZWFzb25zID09IE5vblBhaW50aW5nUmVhc29uczo6
VXBkYXRpbmdDb250cm9sVGludHM7IH0KIAotICAgIHZvaWQgc2V0RGlzcGxheUxpc3RSZWNvcmRl
cihEaXNwbGF5TGlzdDo6UmVjb3JkZXIqIHJlY29yZGVyKSB7IG1fZGlzcGxheUxpc3RSZWNvcmRl
ciA9IHJlY29yZGVyOyB9Ci0gICAgYm9vbCBpc1JlY29yZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheUxpc3RSZWNvcmRlcjsgfQotCiAgICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxv
YXQpOwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
c3Ryb2tlVGhpY2tuZXNzOyB9CiAKQEAgLTY0MCw3ICs2NDMsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxGbG9hdFBvaW50PiBjZW50ZXJMaW5lQW5kQ3V0T2ZmQ29ybmVycyhib29sIGlzVmVydGlj
YWxMaW5lLCBmbG9hdCBjb3JuZXJXaWR0aCwgRmxvYXRQb2ludCBwb2ludDEsIEZsb2F0UG9pbnQg
cG9pbnQyKSBjb25zdDsKIAogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogbV9k
YXRhIHsgbnVsbHB0ciB9OwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciogbV9kaXNwbGF5TGlz
dFJlY29yZGVyIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHRJbXBsPiBtX2ltcGw7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwogICAg
IFZlY3RvcjxHcmFwaGljc0NvbnRleHRTdGF0ZSwgMT4gbV9zdGFjazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTE2ZWNiZTQ4N2YxMjczMGM5MzMyZmExMTA3NmMyNjc5MTc3ZmU2YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGljc0Nv
bnRleHRJbXBsOjpHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJikKKyAgICA6IG1fZ3JhcGhp
Y3NDb250ZXh0KGNvbnRleHQpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEltcGw6On5HcmFwaGlj
c0NvbnRleHRJbXBsKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMzYjQwMGM0MzVkNTc2ZDcwNGRkOGU5NWU0YzcwYmYwNjJmZDExNmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRl
eHRJbXBsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHRJbXBsKTsK
K3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dEltcGwoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0NvbnRleHQ7IH0KKworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyU2hhZG93KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldExpbmVDYXAoTGlu
ZUNhcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkm
LCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExpbmVKb2luKExp
bmVKb2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3Im
LCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVS
ZWN0LCBjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFBhdGgoY29uc3Qg
UGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IGxpbmVXaWR0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VQYXRoKGNvbnN0IFBh
dGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAw
OworCisjaWYgVVNFKENHKQorICAgIHZpcnR1YWwgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CisjZW5kaWYKKwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
YW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyNpZiBVU0UoQ0cp
IHx8IFVTRShDQUlSTykKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxp
bmVzLCBmbG9hdCBzdHJva2VUaGlja25lc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xp
bmVGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIEdyYXBo
aWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
cmF3UGF0aChjb25zdCBQYXRoJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdGb2N1c1Jp
bmcoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJl
Y3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBj
bGlwKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcE91dChjb25z
dCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9
IDA7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
ID0gMDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OworICAg
IEdyYXBoaWNzQ29udGV4dCYgbV9ncmFwaGljc0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlYTkzY2M1Zjg5NTliZDEyYjFjMmRjNGY5MmI2
Nzk4M2E5NzJhNTZlLi42ZTE1ZjA0NjY1MDNhMzRiNjI3ZGIwMDBiYWVlOWFlYjg5ZWJhZDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKQEAgLTE1NTAsOSArMTU1MCw5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZSwg
Y29uCiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3JpZ2lu
KCksIHNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQ7Ci0gICAgICAg
IC8vIFRoZSBSZWNvcmRlciBpcyBsYXJnZSwgc28gaGVhcC1hbGxvY2F0ZS4KLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4gcmVjb3JkZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3QsIGlu
aXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBj
b250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlz
cGxheUxpc3QsIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIH0pOwog
ICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKaW5kZXggZTM2YTY0N2IyYTBiMzI4M2RiMzlhNWQ2NGNhZTVjNGZhYzJmM2QyYi4uYWU3MWE2
ZmQ1ZDJjZmIzMzQ0YWU1MzkxNjI2M2ZiYzdlNjQ1MmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIEFmZmluZVRyYW5zZm9ybSBHcmFwaGljc0Nv
bnRleHQ6OmdldENUTShJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogCi0gICAgaWYg
KGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5
cygiR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0oKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCBy
ZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsK
ICAgICB9CkBAIC0yMTMsMTQgKzIxMywxNCBAQCBQbGF0Zm9ybUNvbnRleHRDYWlybyogR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zdAogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogewotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2F2ZSgpOwogICAgIG1fZGF0YS0+c2F2ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogewotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
cmVzdG9yZSgpOwogICAgIG1fZGF0YS0+cmVzdG9yZSgpOwogCkBAIC0yMzYsOCArMjM2LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+ZHJhd1JlY3QocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKKyAgICBpZiAobV9p
bXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1JlY3QocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludAogICAgIGlmIChz
dHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdMaW5lKHBv
aW50MSwgcG9pbnQyKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0xp
bmUocG9pbnQxLCBwb2ludDIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNzQsOCAr
Mzc0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PmRyYXdFbGxpcHNlKHJlY3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3RWxsaXBzZShyZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDA2LDggKzQw
Niw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2lt
cGwtPmZpbGxQYXRoKHBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MjEsOCAr
NDIxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0
aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPnN0cm9rZVBhdGgocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAg
ICBtX2ltcGwtPnN0cm9rZVBhdGgocGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQzNiw4ICs0MzYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+ZmlsbFJlY3QocmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmZpbGxSZWN0KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTEsOCArNDUx
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCwgY29sb3IpOworICAgIGlmIChtX2ltcGwpIHsK
KyAgICAgICAgbV9pbXBsLT5maWxsUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ2Nyw4ICs0NjcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT5jbGlwKHJlY3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9p
bXBsLT5jbGlwKHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00OTQsOCArNDk0
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdp
bmRSdWxlIGNsaXBSdWxlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+Y2xpcFBhdGgocGF0aCwgY2xpcFJ1bGUpOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5jbGlwUGF0aChwYXRoLCBjbGlwUnVsZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTUyNyw3ICs1MjcsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y2xp
cEJvdW5kcygpIGNvbnN0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIEludFJlY3QoKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1w
bCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdldHRpbmcgdGhlIGNsaXAgYm91bmRzIG5vdCB5
ZXQgc3VwcG9ydGVkIHdpdGggZGlzcGxheSBsaXN0cyIpOwogICAgICAgICByZXR1cm4gSW50UmVj
dCgtMjA0OCwgLTIwNDgsIDQwOTYsIDQwOTYpOyAvLyBGSVhNRTogZGlzcGxheSBsaXN0cy4KICAg
ICB9CkBAIC02MzUsOCArNjM1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lc0Zv
clRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERhc2hBcnJheSYKICAgICBpZiAo
d2lkdGhzLnNpemUoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdMaW5lc0ZvclRleHQo
cG9pbnQsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0cm9rZVRoaWNrbmVz
cygpKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0xpbmVzRm9yVGV4
dChwb2ludCwgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5lcywgc3Ryb2tlVGhpY2tu
ZXNzKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MDAsNyArNzAwLDcgQEAgRmxv
YXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJl
Y3QmIGZyZWN0LCBSb3VuZGluZ00KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gZnJlY3Q7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2lt
cGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZp
Y2VQaXhlbHMoKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMu
Iik7CiAgICAgICAgIHJldHVybiBmcmVjdDsKICAgICB9CkBAIC03NDUsOCArNzQ1LDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dHJhbnNsYXRlKHgsIHkpOwor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT50cmFuc2xhdGUoeCwgeSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3Miw3ICs3NzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAog
ICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBzdHJva2VU
aGlja25lc3MpOwogfQpAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNv
cmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIHN3aXRj
aCAoc3Ryb2tlU3R5bGUpIHsKICAgICBjYXNlIE5vU3Ryb2tlOgpAQCAtODE2LDggKzgxNiw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0pCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT5jb25jYXRDVE0odHJhbnNmb3JtKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgz
Miw3ICs4MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1wbCkgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKCkgaXMgbm90IGNv
bXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZv
cm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fcHVzaF9ncm91cChjcik7CkBAIC04ODYs
NyArODg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5
TGF5ZXIoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAKQEAg
LTkwNSw4ICs5MDUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVj
b3JkZXItPmNsZWFyUmVjdChyZWN0KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+Y2xlYXJSZWN0KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjQsOCAr
OTI0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPnN0cm9rZVJlY3QocmVjdCwgd2lkdGgpOworICAgIGlmIChtX2ltcGwpIHsK
KyAgICAgICAgbV9pbXBsLT5zdHJva2VSZWN0KHJlY3QsIHdpZHRoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtOTQyLDggKzk0Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRM
aW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPnNldExpbmVDYXAobGluZUNhcCk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPnNldExpbmVDYXAobGluZUNhcCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTk3Niw4ICs5NzYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZURh
c2goY29uc3QgRGFzaEFycmF5JiBkYXNoZXMsIGZsb2F0IGRhc2hPZmZzZXQpCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5n
KCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRMaW5lRGFzaChkYXNoZXMs
IGRhc2hPZmZzZXQpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zZXRMaW5l
RGFzaChkYXNoZXMsIGRhc2hPZmZzZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
OTIsOCArOTkyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2lu
IGxpbmVKb2luKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+c2V0TGluZUpvaW4obGluZUpvaW4pOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9p
bXBsLT5zZXRMaW5lSm9pbihsaW5lSm9pbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTEwMTcsOSArMTAxNyw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRNaXRlckxpbWl0KGZs
b2F0IG1pdGVyKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAgICAgICAv
LyBNYXliZSB0aGlzIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBzdGF0ZS4KLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT5zZXRNaXRlckxpbWl0KG1pdGVyKTsKKyAgICAgICAgbV9pbXBsLT5z
ZXRNaXRlckxpbWl0KG1pdGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA0OSw4
ICsxMDQ5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0
aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBP
dXQocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXBPdXQocGF0
aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNzEsOCArMTA3MSw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgcmFkaWFucykKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnJvdGF0ZShyYWRpYW5zKTsKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+cm90YXRlKHJhZGlhbnMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMDg1LDggKzEwODUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+c2NhbGUoc2l6ZSk7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPnNjYWxlKHNpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MDk5LDggKzEwOTksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9h
dFJlY3QmIHIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT5jbGlwT3V0KHIpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGlwT3V0
KHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcmVjdCwgY29ucwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1Bs
YXRmb3JtQ29udGV4dCgpKTsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKICAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhpcywgcmVjdCk7CkBA
IC0xMTQwLDggKzExNDAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5m
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZShyZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
cmVjdCwgcm91bmRlZEhvbGVSZWN0LCBjb2xvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTExNjcsOCArMTE2Nyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5n
KCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3UGF0dGVybihpbWFnZSwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3As
IGJsZW5kTW9kZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQYXR0
ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE4
NSw3ICsxMTg1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50
aWFsaWFzKGJvb2wgZW5hYmxlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1Bs
YXRmb3JtQ29udGV4dCgpKTsKIAogICAgIC8vIFdoZW4gdHJ1ZSwgdXNlIHRoZSBkZWZhdWx0IENh
aXJvIGJhY2tlbmQgYW50aWFsaWFzIG1vZGUgKHVzdWFsbHkgdGhpcwogICAgIC8vIGVuYWJsZXMg
c3RhbmRhcmQgJ2dyYXlzY2FsZScgYW50aWFsaWFzaW5nKTsgZmFsc2UgdG8gZXhwbGljaXRseSBk
aXNhYmxlCkBAIC0xMTk1LDE0ICsxMTk1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVh
bGl0eSBxdWFsaXR5KQogewotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJU
KGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KHF1YWxpdHkpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAogewotICAgIGlmIChpc1JlY29yZGluZygp
KQorICAgIGlmICghaGFzUGxhdGZvcm1Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF90eXBlKGNhaXJvX2dldF90YXJnZXQocGxh
dGZvcm1Db250ZXh0KCktPmNyKCkpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfR0w7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKaW5kZXggN2NmYWZjZTQzNGZhYWViYTI1OWNlOTA4MmE3Zjc4ZjkzMDJhMTFhYy4u
ZmMyOTFlMmVjYmNkMjZiNjFmZTVjZTI5MDBhODRhNWZjODczZDZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIENHQ29udGV4dFJlZiBHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtQ29udGV4dCgpIGNvbnN0CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZVBsYXRmb3Jt
U3RhdGUoKQogewogICAgIEFTU0VSVCghcGFpbnRpbmdEaXNhYmxlZCgpKTsKLSAgICBBU1NFUlQo
IWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAg
ICAvLyBOb3RlOiBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24gd2l0aGluIHRoaXMgY2xhc3MgaW1w
bGVtZW50YXRpb24sIHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQgdGhlIGV4dHJhCiAgICAgLy8gc2F2
ZSBvZiB0aGUgc2Vjb25kYXJ5IGNvbnRleHQgKGluIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZUNHLmgpLgpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZl
UGxhdGZvcm1TdGF0ZSgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3Rh
dGUoKQogewogICAgIEFTU0VSVCghcGFpbnRpbmdEaXNhYmxlZCgpKTsKLSAgICBBU1NFUlQoIWlz
UmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICAv
LyBOb3RlOiBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24gd2l0aGluIHRoaXMgY2xhc3MgaW1wbGVt
ZW50YXRpb24sIHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQgdGhlIGV4dHJhCiAgICAgLy8gcmVzdG9y
ZSBvZiB0aGUgc2Vjb25kYXJ5IGNvbnRleHQgKGluIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZUNHLmgpLgpAQCAtMTkwLDggKzE5MCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24pOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzI1LDggKzMy
NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSB8fCAhcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDMwLDggKzQzMCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdSZWN0KHJl
Y3QsIGJvcmRlclRoaWNrbmVzcyk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmRyYXdSZWN0KHJlY3QsIGJvcmRlclRoaWNrbmVzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ2OCw4ICs0NjgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludAogICAgIGlmIChz
dHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdMaW5lKHBv
aW50MSwgcG9pbnQyKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0xp
bmUocG9pbnQxLCBwb2ludDIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MzMsOCAr
NTMzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PmRyYXdFbGxpcHNlKHJlY3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3RWxsaXBzZShyZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTQ4LDggKzU0
OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+YXBwbHlTdHJva2VQYXR0
ZXJuKCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmFwcGx5U3Ryb2tlUGF0
dGVybigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NzIsOCArNTcyLDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0g
ICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+YXBwbHlGaWxsUGF0dGVybigpOworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5hcHBseUZpbGxQYXR0ZXJuKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTYyMyw4ICs2MjMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8IHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdQYXRoKHBhdGgpOwor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGF0aChwYXRoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjU3LDggKzY1Nyw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFBhdGgocGF0aCk7
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmZpbGxQYXRoKHBhdGgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MjAsOCArNzIwLDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpIHx8IHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnN0cm9rZVBhdGgo
cGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnN0cm9rZVBhdGgocGF0
aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc4Miw4ICs3ODIsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCk7Cisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmZpbGxSZWN0KHJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04MzUsOCArODM1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChp
c1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJlY3Qo
cmVjdCwgY29sb3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxsUmVj
dChyZWN0LCBjb2xvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3MCw3ICs4NzAs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29ucwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAg
IEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xv
cigpOwpAQCAtOTEzLDggKzkxMyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShyZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKKyAgICBpZiAobV9pbXBsKSB7
CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocmVjdCwgcm91bmRlZEhv
bGVSZWN0LCBjb2xvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk1OSw4ICs5NTks
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwKHJlY3Qp
OworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGlwKHJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05NzMsOCArOTczLDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+Y2xpcE91dChyZWN0KTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+Y2xpcE91dChyZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtOTk1LDggKzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNv
bnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5jbGlwT3V0KHBhdGgpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBs
LT5jbGlwT3V0KHBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDEyLDggKzEw
MTIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwg
V2luZFJ1bGUgY2xpcFJ1bGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5jbGlwUGF0aChwYXRoLCBjbGlwUnVsZSk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPmNsaXBQYXRoKHBhdGgsIGNsaXBSdWxlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTAzOCw3ICsxMDM4LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBCb3VuZHMoKSBjb25zdAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBJbnRSZWN0KCk7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmICht
X2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHZXR0aW5nIHRoZSBjbGlwIGJvdW5kcyBu
b3QgeWV0IHN1cHBvcnRlZCB3aXRoIGRpc3BsYXkgbGlzdHMiKTsKICAgICAgICAgcmV0dXJuIElu
dFJlY3QoLTIwNDgsIC0yMDQ4LCA0MDk2LCA0MDk2KTsgLy8gRklYTUU6IGRpc3BsYXkgbGlzdHMu
CiAgICAgfQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2lu
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmco
KSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIHNhdmUoKTsKIApA
QCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJh
bnNwYXJlbmN5TGF5ZXIoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRm
b3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250
ZXh0KCk7CiAgICAgQ0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCk7CkBAIC0x
MTEyLDcgKzExMTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3co
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbgogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmco
KSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICAKICAgICAvLyBGSVhN
RTogd2UgY291bGQgYXZvaWQgdGhlIHNoYWRvdyBzZXR1cCBjb3N0IHdoZW4gd2Uga25vdyB3ZSds
bCByZW5kZXIgdGhlIHNoYWRvdyBvdXJzZWx2ZXMuCiAKQEAgLTExNjQsOSArMTE2NCw5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRNaXRlckxpbWl0KGZsb2F0IGxpbWl0KQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAgICAgICAvLyBNYXliZSB0aGlzIHNob3VsZCBi
ZSBwYXJ0IG9mIHRoZSBzdGF0ZS4KLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRN
aXRlckxpbWl0KGxpbWl0KTsKKyAgICAgICAgbV9pbXBsLT5zZXRNaXRlckxpbWl0KGxpbWl0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE3OCw4ICsxMTc4LDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGVhclJlY3Qocik7CisgICAgaWYg
KG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsZWFyUmVjdChyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTE5MSw4ICsxMTkxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zdHJva2VSZWN0KHJlY3Qs
IGxpbmVXaWR0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnN0cm9rZVJl
Y3QocmVjdCwgbGluZVdpZHRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI2MSw4
ICsxMjYxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVDYXAoTGluZUNhcCBjYXAp
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRMaW5l
Q2FwKGNhcCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnNldExpbmVDYXAo
Y2FwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI4NCw4ICsxMjg0LDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYgZGFzaGVzLCBm
bG9hdCBkYXNoT2Zmc2V0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RS
ZWNvcmRlci0+c2V0TGluZURhc2goZGFzaGVzLCBkYXNoT2Zmc2V0KTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+c2V0TGluZURhc2goZGFzaGVzLCBkYXNoT2Zmc2V0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMwNCw4ICsxMzA0LDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGpvaW4pCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRMaW5lSm9pbihqb2luKTsKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2V0TGluZUpvaW4oam9pbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEzMzIsOCArMTMzMiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zY2FsZShzaXplKTsKKyAgICBpZiAobV9pbXBsKSB7Cisg
ICAgICAgIG1faW1wbC0+c2NhbGUoc2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTEzNDcsOCArMTM0Nyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgYW5n
bGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5yb3Rh
dGUoYW5nbGUpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5yb3RhdGUoYW5n
bGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzYyLDggKzEzNjIsOCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5n
KCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT50cmFuc2xhdGUoeCwgeSk7Cisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnRyYW5zbGF0ZSh4LCB5KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM3Nyw4ICsxMzc3LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNvbmNhdENUTSh0cmFu
c2Zvcm0pOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jb25jYXRDVE0odHJh
bnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM5Miw3ICsxMzkyLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OnNldENUTSgpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGgg
cmVjb3JkaW5nIGNvbnRleHRzLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQwNyw3
ICsxNDA3LDcgQEAgQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKEluY2x1
ZGVEZXZpY2VTY2FsZSBpbmNsdWRlU2NhbGUpIGNvbnN0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiR3Jh
cGhpY3NDb250ZXh0OjpnZXRDVE0oKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCByZWNvcmRp
bmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKICAgICB9
CkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRv
RGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgUm91bmRpbmdNbwogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiByZWN0OwogCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiR3Jh
cGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKCkgaXMgbm90IHlldCBjb21wYXRpYmxl
IHdpdGggcmVjb3JkaW5nIGNvbnRleHRzLiIpOwogICAgICAgICByZXR1cm4gcmVjdDsKICAgICB9
CkBAIC0xNDg5LDggKzE0ODksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVzRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5JgogICAgIGlmICgh
d2lkdGhzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3TGluZXNGb3JUZXh0KHBvaW50
LCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcywgc3Ryb2tlVGhpY2tuZXNzKCkpOworICAg
IGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TGluZXNGb3JUZXh0KHBvaW50LCB3
aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcywgc3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBVUkwmIGxpbmssIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KCkgaXMgbm90IHlldCBjb21w
YXRpYmxlIHdpdGggcmVjb3JkaW5nIGNvbnRleHRzLiIpOwogICAgICAgICByZXR1cm47IC8vIEZJ
WE1FIGZvciBkaXNwbGF5IGxpc3RzLgogICAgIH0KQEAgLTE2MDMsNyArMTYwMyw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRJc0NBTGF5ZXJDb250ZXh0KGJvb2wgaXNMYXllckNvbnRleHQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
CisgICAgaWYgKG1faW1wbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzTGF5ZXJDb250
ZXh0KQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQ0FMYXll
ckNvbnRleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRQot
ICAgIGlmIChpc1JlY29yZGluZygpKQorICAgIGlmIChtX2ltcGwpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJldHVybiBtX2RhdGEtPm1fY29udGV4dEZsYWdzICYgSXNMYXllckNHQ29u
dGV4dDsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJc0Fj
Y2VsZXJhdGVkQ29udGV4dChib29sIGlzQWNjZWxlcmF0ZWQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIEZJWE1FCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgaWYgKG1faW1wbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWQpCkBAIC0xNjQ1LDcgKzE2NDUs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRQotICAgIGlmIChpc1JlY29yZGlu
ZygpKQorICAgIGlmIChtX2ltcGwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVy
biBtX2RhdGEtPm1fY29udGV4dEZsYWdzICYgSXNBY2NlbGVyYXRlZENHQ29udGV4dDsKQEAgLTE2
NTYsNyArMTY1Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3
aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2RlKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgc3dpdGNoIChtb2RlKSB7CkBAIC0xNjc5LDcg
KzE2NzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxh
dGZvcm1Db250ZXh0KCkpOwogCiAgICAgc2V0Q0dTdHJva2VDb2xvcihwbGF0Zm9ybUNvbnRleHQo
KSwgY29sb3IpOwogfQpAQCAtMTY4OSw3ICsxNjg5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3Jk
aW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRl
eHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCksIHN0ZDo6bWF4KHRoaWNrbmVzcywgMC5m
KSk7CiB9CkBAIC0xNjk5LDcgKzE2OTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1GaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIHNldENHRmlsbENvbG9yKHBs
YXRmb3JtQ29udGV4dCgpLCBjb2xvcik7CiB9CkBAIC0xNzA5LDcgKzE3MDksNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAg
ICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLCBlbmFibGUp
OwogfQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCBlbmFibGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAg
ICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgQ0dDb250ZXh0U2V0U2hvdWxk
U21vb3RoRm9udHMocGxhdGZvcm1Db250ZXh0KCksIGVuYWJsZSk7CiB9CkBAIC0xNzI5LDcgKzE3
MjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1BbHBoYShmbG9hdCBhbHBo
YSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
CiAKICAgICBDR0NvbnRleHRTZXRBbHBoYShwbGF0Zm9ybUNvbnRleHQoKSwgYWxwaGEpOwogfQpA
QCAtMTczOSw3ICsxNzM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG1vZGUsIEJsZW4KICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3Jk
aW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0JsZW5k
TW9kZSB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVOb3JtYWw7CiAgICAgaWYgKGJsZW5kTW9kZSAhPSBC
bGVuZE1vZGVOb3JtYWwpIHsKQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwogCiAgICAgLy8gQ29yZUdyYXBoaWNzIGV4cGVjdHMgdGhlIGJhc2UgQ1RNIG9mIGEgSGlEUEkg
Y29udGV4dCB0byBoYXZlIHRoZSBzY2FsZSBmYWN0b3IgYXBwbGllZCB0byBpdC4KICAgICAvLyBG
YWlsaW5nIHRvIGNoYW5nZSB0aGUgYmFzZSBsZXZlbCBDVE0gd2lsbCBjYXVzZSBjZXJ0YWluIENH
IGZlYXR1cmVzLCBzdWNoIGFzIGZvY3VzIHJpbmdzLApAQCAtMTg2NSw3ICsxODY1LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBl
bGxpcHNlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKIAogICAgIC8vIENHQ29udGV4dEZpbGxFbGxpcHNlSW5SZWN0IG9ubHkgc3VwcG9ydHMg
c29saWQgY29sb3JzLgogICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCB8fCBtX3N0YXRlLmZp
bGxQYXR0ZXJuKSB7CkBAIC0xODgyLDcgKzE4ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1TdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVj
b3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICAvLyBD
R0NvbnRleHRTdHJva2VFbGxpcHNlSW5SZWN0IG9ubHkgc3VwcG9ydHMgc29saWQgY29sb3JzLgog
ICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50IHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVybikg
ewpAQCAtMTkwNCw2ICsxOTA0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldERlc3RpbmF0
aW9uRm9yUmVjdChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBBU1NFUlQoaGFzUGxh
dGZvcm1Db250ZXh0KCkpOworCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKIAogICAgIEZsb2F0UmVjdCByZWN0ID0gZGVzdFJlY3Q7CkBAIC0xOTE4LDYgKzE5
MjAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkRGVzdGluYXRpb25BdFBvaW50KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgRmxvYXRQb2ludAogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
CisKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAg
Q0dQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKHBv
c2l0aW9uLCBDR0NvbnRleHRHZXRDVE0oY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2Nv
YS5tbQppbmRleCAxYzBhNzYwODY2ODUwNGJlMTgzMThlYTk3MTQzNTNhOWVhYjE4OWY0Li4zM2M0
ODAwYzY4NjIwZDY5MTNhNzk0YTJjYzQ1ZTc1ODM4YzFjNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRDb2NvYS5tbQpAQCAtMTE5LDggKzExOSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVj
b3JkZXItPmRyYXdGb2N1c1JpbmcocGF0aCwgd2lkdGgsIG9mZnNldCwgY29sb3IpOworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3Rm9jdXNSaW5nKHBhdGgsIHdpZHRoLCBv
ZmZzZXQsIGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgs
IGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8
fCBwYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmco
KSkgLy8gRklYTUU6IGltcGxlbWVudCBhbmltYXRlZCBmb2N1cyByaW5nIGRyYXdpbmcuCisgICAg
aWYgKG1faW1wbCkgLy8gRklYTUU6IGltcGxlbWVudCBhbmltYXRlZCBmb2N1cyByaW5nIGRyYXdp
bmcuCiAgICAgICAgIHJldHVybjsKIAogICAgIG5lZWRzUmVkcmF3ID0gZHJhd0ZvY3VzUmluZ1Rv
Q29udGV4dEF0VGltZShwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwgdGlt
ZU9mZnNldCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdG
b2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBkb3VibGUgdGltZU8KICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgLy8gRklYTUU6IGltcGxlbWVudCBhbmltYXRlZCBmb2N1cyByaW5nIGRyYXdp
bmcuCisgICAgaWYgKG1faW1wbCkgLy8gRklYTUU6IGltcGxlbWVudCBhbmltYXRlZCBmb2N1cyBy
aW5nIGRyYXdpbmcuCiAgICAgICAgIHJldHVybjsKIAogICAgIFJldGFpblB0cjxDR011dGFibGVQ
YXRoUmVmPiBmb2N1c1JpbmdQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwpA
QCAtMTY3LDggKzE2Nyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNv
bnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3Rm9jdXNSaW5nKHJlY3RzLCB3
aWR0aCwgb2Zmc2V0LCBjb2xvcik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmRyYXdGb2N1c1JpbmcocmVjdHMsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmlu
ZGV4IDM3YmQ0MWU2ZmJhOWMxNDE0MGVhNDQ3OTY1MmZhZWQxYTFlNzcxMWMuLmQ4NzYxYmVmOTQ3
MTMwYzQwZjliMDMyYWI3Y2FhOGQ5NGU4MjNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3LDExICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiBSZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYmFzZUNUTSkKLSAgICA6IG1f
Z3JhcGhpY3NDb250ZXh0KGNvbnRleHQpCisgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRl
eHQsIGluaXRpYWxDbGlwLCBiYXNlQ1RNKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlz
dCkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVj
b3JkaW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKLSAgICBtX2dyYXBoaWNzQ29udGV4
dC5zZXREaXNwbGF5TGlzdFJlY29yZGVyKHRoaXMpOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQo
Q29udGV4dFN0YXRlKGJhc2VDVE0sIGluaXRpYWxDbGlwKSk7CiB9CiAKQEAgLTM3NCw3ICszNzMs
NyBAQCBJdGVtJiBSZWNvcmRlcjo6YXBwZW5kSXRlbShSZWY8SXRlbT4mJiBpdGVtKQogCiB2b2lk
IFJlY29yZGVyOjp1cGRhdGVJdGVtRXh0ZW50KERyYXdpbmdJdGVtJiBpdGVtKSBjb25zdAogewot
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IGl0ZW0ubG9jYWxCb3VuZHMo
bV9ncmFwaGljc0NvbnRleHQpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVj
dCA9IGl0ZW0ubG9jYWxCb3VuZHMoZ3JhcGhpY3NDb250ZXh0KCkpKQogICAgICAgICBpdGVtLnNl
dEV4dGVudChleHRlbnRGcm9tTG9jYWxCb3VuZHMocmVjdC52YWx1ZSgpKSk7CiB9CiAKQEAgLTM5
Niw3ICszOTUsNyBAQCBGbG9hdFJlY3QgUmVjb3JkZXI6OmV4dGVudEZyb21Mb2NhbEJvdW5kcyhj
b25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsK
ICAgICBmbG9hdCBzaGFkb3dSYWRpdXM7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYg
KG1fZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywg
c2hhZG93Q29sb3IpKSB7CisgICAgaWYgKGdyYXBoaWNzQ29udGV4dCgpLmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIEZsb2F0UmVj
dCBzaGFkb3dFeHRlbnQ9IGJvdW5kczsKICAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93
T2Zmc2V0KTsKICAgICAgICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRl
bnQoc2hhZG93UmFkaXVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApp
bmRleCA2YTI5MDIzMzQ3NzE2MGY0NTA5OTlkMWUyMzRkYmYyOTIyMDc4MDA1Li5mOWU0OWE1OTBi
OWNiODEwOTljNDIzMGJhNzA4ZGU0MzI0MGJkMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRGlzcGxheUxpc3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIgLy8gRm9yIElu
dGVycG9sYXRpb25RdWFsaXR5LgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKICNp
bmNsdWRlICJJbWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgogI2luY2x1ZGUgIlRleHRG
bGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDcsNzkgKzQ3LDc5IEBA
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIERyYXdpbmdJdGVtOwogCi1jbGFzcyBS
ZWNvcmRlciB7CitjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRJbXBsIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6CiAgICAgUmVjb3Jk
ZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICB+UmVjb3JkZXIoKTsKLQotICAg
IHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0gICAgdm9pZCBjbGVhclNoYWRvdygpOwot
Ci0gICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOwotICAgIHZvaWQgc2V0TGluZURhc2goY29u
c3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCk7Ci0gICAgdm9pZCBzZXRMaW5lSm9pbihM
aW5lSm9pbik7Ci0gICAgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KTsKLQotICAgIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBDb2xvciYpOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
R3JhZGllbnQmKTsKLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKTsK
LSAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKTsKLSAgICB2
b2lkIGZpbGxQYXRoKGNvbnN0IFBhdGgmKTsKLSAgICB2b2lkIGZpbGxFbGxpcHNlKGNvbnN0IEZs
b2F0UmVjdCYpOwotICAgIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBs
aW5lV2lkdGgpOwotICAgIHZvaWQgc3Ryb2tlUGF0aChjb25zdCBQYXRoJik7Ci0gICAgdm9pZCBz
dHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgflJlY29yZGVyKCk7CisKKyAgICBzaXplX3QgaXRl
bUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsgfQorCitw
cml2YXRlOgorICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGVhclNoYWRvdygpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVD
YXApIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxv
YXQgZGFzaE9mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRMaW5lSm9pbihMaW5lSm9pbikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KSBvdmVycmlkZTsKKworICAg
IHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbGxQYXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbGxF
bGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3Ryb2tlUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3Ry
b2tlUGF0aChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJva2VFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogCiAjaWYgVVNFKENHKQotICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0
ZXJuKCk7Ci0gICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CisgICAgdm9pZCBhcHBseVN0cm9r
ZVBhdHRlcm4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSBvdmVycmlk
ZTsKICNlbmRpZgogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGlu
Z01vZGUpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKTsKLSAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJik7Ci0gICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgdm9pZCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAjaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24pOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZvaWQgZHJh
d1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBi
b3JkZXJUaGlja25lc3MpOwotICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJs
ZUxpbmVzLCBmbG9hdCBzdHJva2VUaGlja25lc3MpOwotICAgIHZvaWQgZHJhd0xpbmVGb3JEb2N1
bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIEdyYXBoaWNzQ29udGV4
dDo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpOwotICAgIHZvaWQgZHJhd0VsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBkcmF3UGF0aChjb25zdCBQYXRoJik7CisgICAgdm9pZCBk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRl
OworICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVz
LCBmbG9hdCBzdHJva2VUaGlja25lc3MpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0xpbmVGb3JE
b2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIEdyYXBoaWNzQ29u
dGV4dDo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0Vs
bGlwc2UoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0aChjb25z
dCBQYXRoJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYs
IGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJik7Ci0gICAgdm9pZCBkcmF3
Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9m
ZnNldCwgY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYs
IGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgs
IGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2F2ZSgp
OwotICAgIHZvaWQgcmVzdG9yZSgpOworICAgIHZvaWQgc2F2ZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVzdG9yZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxv
YXQgeSk7Ci0gICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpOwotICAgIHZvaWQg
c2NhbGUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CisgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpIG92ZXJyaWRlOworICAg
IHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7Ci0gICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lM
YXllcigpOworICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KSBv
dmVycmlkZTsKKyAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGlwT3V0KGNvbnN0IEZs
b2F0UmVjdCYpOwotICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJik7Ci0gICAgdm9pZCBjbGlw
UGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOworICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNs
aXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdm9pZCBh
cHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKKyAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgc2l6ZV90IGl0ZW1Db3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7IH0KLQotcHJpdmF0ZToKICAgICBJdGVt
JiBhcHBlbmRJdGVtKFJlZjxJdGVtPiYmKTsKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0
IEl0ZW0mKTsKIApAQCAtMTYxLDcgKzE2MSw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGV4
dFN0YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsKICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRT
dGF0ZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29udGV4dDsKICAgICBE
aXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKIAogICAgIFZlY3RvcjxDb250ZXh0U3RhdGUsIDMy
PiBtX3N0YXRlU3RhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCA5NjhkY2Q5YTA1
ZTc2MzIwYTM5NDEzZDQ1ZDAyMTA5ODkwOGUzODQzLi5hZmJmZWEwMDVhNGMzOWQwNTdlODRjMTg3
Y2MyZTU3ZWU1MzZhNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBVU0UoQ0cpCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ0cuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGRiN2M4ZjcwZTVlZDgwZDQ4NjgyMjgwNDg4MjRk
NDc4NTA4OWU0OTEuLjk3OGU5NWNjMDFmYzZiMzVmMzY4Y2IzZGI3ZTZiNTdmZmYyMmIzNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjgzLDcgKzI4Myw3
IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9s
U3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoVU5M
SUtFTFkocGFpbnRJbmZvLmNvbnRleHQoKS5pc1JlY29yZGluZygpKSkKKyAgICBpZiAoVU5MSUtF
TFkoIXBhaW50SW5mby5jb250ZXh0KCkuaGFzUGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gYm94LnN0eWxlKCkuYXBwZWFy
YW5jZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>