<?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>232575</bug_id>
          
          <creation_ts>2021-11-01 12:38:20 -0700</creation_ts>
          <short_desc>Make ScrollGranularity an enum class</short_desc>
          <delta_ts>2021-11-09 17:39:04 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>232641</dup_id>
          
          <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="Nikos Mouchtaris">nmouchtaris</reporter>
          <assigned_to name="Nikos Mouchtaris">nmouchtaris</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>jamesr</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ntim</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1810768</commentid>
    <comment_count>0</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-01 12:38:20 -0700</bug_when>
    <thetext>Make ScrollElasticity, ScrollbarOrientation, ScrollbarMode, ScrollGranularity enum classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810770</commentid>
    <comment_count>1</comment_count>
      <attachid>443001</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-01 12:40:54 -0700</bug_when>
    <thetext>Created attachment 443001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812400</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-06 10:00:41 -0700</bug_when>
    <thetext>Looks like only ScrollGranularity is left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812726</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-08 11:39:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/85165669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813438</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-09 17:38:51 -0800</bug_when>
    <thetext>ScrollGranularity is being handled in bug 232641; duping forward.

*** This bug has been marked as a duplicate of bug 232641 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443001</attachid>
            <date>2021-11-01 12:40:54 -0700</date>
            <delta_ts>2021-11-09 17:39:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232575-20211101124054.patch</filename>
            <type>text/plain</type>
            <size>101100</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNkZTRiODAxM2NjOTky
MzJmOTQzM2IwODFmNzM2YTFhYjc3OWJhYi4uMDhjYzI5NDA3MTFlYWI2M2VjMTFkMDRmYTM5NjM3
NDk1ZTdmNjVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMS0xMS0wMSAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtl
IFNjcm9sbEVsYXN0aWNpdHksIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJNb2RlLCBT
Y3JvbGxHcmFudWxhcml0eSBlbnVtIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU2Nyb2xsRWxhc3RpY2l0eSwgU2Nyb2xsYmFyT3Jp
ZW50YXRpb24sIFNjcm9sbGJhck1vZGUsIGFuZCBTY3JvbGxHcmFudWxhcml0eSBlbnVtCisgICAg
ICAgIGNsYXNzZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6b3Jp
ZW50YXRpb24gY29uc3QpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6c2Nyb2xsYmFyTWF0Y2hlc0hvcml6b250YWxQc2V1ZG9DbGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JvbGxiYXJNYXRjaGVzVmVydGljYWxQc2V1ZG9DbGFzcyk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsQnlMaW5lcyk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxCeVBhZ2VzKToKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNjcm9s
bFBhZ2VCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2Nyb2xsUGFnZUZvcndh
cmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNjcm9sbExpbmVVcCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlU2Nyb2xsTGluZURvd24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZVNjcm9sbFRvQmVnaW5uaW5nT2ZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
U2Nyb2xsVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzY3JvbGxp
bmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpzY3JvbGxpbmdNb2RlIGNv
bnN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp3aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6Cisg
ICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6cmVzZXRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUNhbkhhdmVTY3Jv
bGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmll
d3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJN
b2Rlc0ZvckxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFNjcm9s
bGJhcnNGb3JMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpob3Jpem9udGFs
U2Nyb2xsYmFySGlkZGVuQnlTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1GaXhlZFdpZHRoQXV0b1NpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtU2l6ZVRvQ29udGVudEF1dG9TaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmlzU2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmVuYWJsZUF1dG9TaXplTW9kZSk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FuU2Nyb2xsSW5EaXJlY3Rpb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NIb3Jpem9udGFs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OmRlbHRhRnJvbVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnNldENhbkhhdmVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZv
cm1TY3JvbGxiYXJNb2RlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjp3aWxsUmVtb3ZlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjpkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6Om9mZnNldEZvck9yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU2Nyb2xs
YmFyTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVydGlj
YWxTY3JvbGxiYXJNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
OjpjYW5IYXZlU2Nyb2xsYmFycyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cHJlc3NlZFBhcnRTY3JvbGxEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydFNjcm9sbEdy
YW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW92ZVRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VNb3ZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6Om1vdXNlRG93bik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGU6OnNwbGl0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGU6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnRyYWNrTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0
b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcklPUzo6aGFuZGxlVG91
Y2hFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtTY3JvbGxWaWV3Lm1tOgor
ICAgICAgICAoLVtXQUtTY3JvbGxWaWV3IGhvcml6b250YWxTY3JvbGxpbmdNb2RlXSk6CisgICAg
ICAgICgtW1dBS1Njcm9sbFZpZXcgdmVydGljYWxTY3JvbGxpbmdNb2RlXSk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6YnV0dG9uUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFj
Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1h
Yzo6dHJhY2tSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyc0NvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgICgtW1dlYlNjcm9sbGVySW1wRGVsZWdhdGUgbGF5ZXJdKToKKyAg
ICAgICAgKC1bV2ViU2Nyb2xsZXJJbXBEZWxlZ2F0ZSBzZXRVcEFscGhhQW5pbWF0aW9uOnNjcm9s
bGVyUGFpbnRlcjpwYXJ0OmFuaW1hdGVBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpsb2dp
Y2FsU2Nyb2xsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6cGVyZm9ybUxheW91dFdpdGhGbGF0dGVu
aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklGcmFtZTo6ZmxhdHRlbkZyYW1lIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZnJhbWVFbGVtZW50QW5k
Vmlld1Blcm1pdFNjcm9sbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUGFnZVRpbGVkQmFja2luZ0NvdmVyYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dD
b250cm9sc0xheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92
ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpkZXN0cm95Um9vdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9sbGFi
bGVBcmVhOjpkZXN0cm95U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWE6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0Qm94OjpzZXRTY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OmRlc3Ryb3lTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpSZW5kZXJTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQ
YXJ0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OmJ1dHRvblJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp0cmFja1JlY3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp0cmFja1BpZWNlUmVjdFdpdGhN
YXJnaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6bWluaW11
bVRodW1iTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjpsYXlvdXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhp
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tS
ZWN0VG9UcmFja1BpZWNlcyk6CisKIDIwMjEtMTAtMjggIEFuZHJlcyBHb256YWxleiAgPGFuZHJl
c2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIElzb2xhdGVkIHRyZWUgbW9kZTogRGlzcGF0Y2gg
YWxsIGNhbGxzIHRvIFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWVdIGluIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0byB0aGUgQVgg
dGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbGJhci5jcHAKaW5kZXggNzU0N2Y2ZjE1NWE5ODllODI4MDAzZTFlMDI5Yjhl
Mzc0ZDkyNjI5ZS4uOTRlYWUyNmQ4NjA2ZTg5MjM3ZGU0MzAwMDNhOWRjMjdlZjIwMWE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuY3BwCkBAIC02OSw5ICs2OSw5IEBAIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpvcmllbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFtX3Nj
cm9sbGJhcikKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGlj
YWw7CiAKLSAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhcikKKyAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFy
T3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw7Ci0gICAgaWYgKG1fc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQorICAgIGlmIChtX3Njcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIpCiAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogCiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKaW5kZXggM2NjMDdhYWZlMTQxNjhjMTQ0ZThhOWQ1OGNiZjI3YmY5
ZTM2MWMwNi4uN2JjOGZlZDYzNjE1NThiYzlmNjhiYTE2NjRkZWEzMjk2MWFlZDA2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgU3R5
bGVTY3JvbGxiYXJTdGF0ZSB7CiAgICAgU2Nyb2xsYmFyUGFydCBzY3JvbGxiYXJQYXJ0IHsgTm9Q
YXJ0IH07CiAgICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCB7IE5vUGFydCB9OwogICAgIFNj
cm9sbGJhclBhcnQgcHJlc3NlZFBhcnQgeyBOb1BhcnQgfTsKLSAgICBTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiB7IFZlcnRpY2FsU2Nyb2xsYmFyIH07CisgICAgU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24geyBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3Jv
bGxiYXIgfTsKICAgICBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQg
eyBTY3JvbGxiYXJCdXR0b25zTm9uZSB9OwogICAgIGJvb2wgZW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzY3JvbGxDb3JuZXJJc1Zpc2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKaW5kZXggOWM3ZDE0NzZm
ODNmNjJkY2ZmNWEwODQxYmM4NzY4Zjk0ZmViOThlZS4uMWQ0ODE5Yjg2ZWQ0ZmMxYTYyNzcyNTUx
MTRhZjUyNGVlNDE5OTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlclRlc3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyVGVzdEZ1bmN0aW9ucy5oCkBAIC0yOTUsMTIgKzI5NSwxMiBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc0FjdGl2ZVBzZXVkb0NsYXNzKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6Q2hlYwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc0hvcml6b250
YWxQc2V1ZG9DbGFzcyhjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zY3JvbGxiYXJTdGF0ZSAmJiBjb250ZXh0LnNj
cm9sbGJhclN0YXRlLT5vcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOworICAgIHJl
dHVybiBjb250ZXh0LnNjcm9sbGJhclN0YXRlICYmIGNvbnRleHQuc2Nyb2xsYmFyU3RhdGUtPm9y
aWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyOwog
fQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc1ZlcnRpY2FsUHNldWRvQ2xh
c3MoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuc2Nyb2xsYmFyU3RhdGUgJiYgY29udGV4dC5zY3JvbGxiYXJTdGF0
ZS0+b3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXI7CisgICAgcmV0dXJuIGNvbnRleHQu
c2Nyb2xsYmFyU3RhdGUgJiYgY29udGV4dC5zY3JvbGxiYXJTdGF0ZS0+b3JpZW50YXRpb24gPT0g
U2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyOwogfQogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc0RlY3JlbWVudFBzZXVkb0NsYXNzKGNvbnN0IFNlbGVj
dG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDk3ODFlZDFmMjExNGQxMDZhNjQ3YTg2MGQ5Zjg4YzlkYjM4OGZjZGUuLmFlYzEyMzk1
YzAzM2I3OGY1ZDU3ODFhZDNlNjYwNzI2Y2MyOGQyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTEwOTYsMTIgKzEwOTYsMTIgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxCeVVuaXRzKGludCB1
bml0cywgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAKIHZvaWQgRWxlbWVudDo6c2Ny
b2xsQnlMaW5lcyhpbnQgbGluZXMpCiB7Ci0gICAgc2Nyb2xsQnlVbml0cyhsaW5lcywgU2Nyb2xs
QnlMaW5lKTsKKyAgICBzY3JvbGxCeVVuaXRzKGxpbmVzLCBTY3JvbGxHcmFudWxhcml0eTo6U2Ny
b2xsQnlMaW5lKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxCeVBhZ2VzKGludCBwYWdlcykK
IHsKLSAgICBzY3JvbGxCeVVuaXRzKHBhZ2VzLCBTY3JvbGxCeVBhZ2UpOworICAgIHNjcm9sbEJ5
VW5pdHMocGFnZXMsIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2UpOwogfQogCiBzdGF0
aWMgZG91YmxlIGxvY2FsWm9vbUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMjY1OWQy
NDBiNzdlMjAxY2M4ODM5NjA5N2IwNjA4YzU4M2M2YzZhYi4uNjNlZWY5MDMwM2RmMjBhMzkzMTE3
YjIzODA0MDViOWU0OTFlYmM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCkBAIC05ODksMzIgKzk4OSwzMiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUmVtb3ZlRm9y
bWF0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogCiBz
dGF0aWMgYm9vbCBleGVjdXRlU2Nyb2xsUGFnZUJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBmcmFt
ZS5ldmVudEhhbmRsZXIoKS5sb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsQmxvY2tEaXJl
Y3Rpb25CYWNrd2FyZCwgU2Nyb2xsQnlQYWdlKTsKKyAgICByZXR1cm4gZnJhbWUuZXZlbnRIYW5k
bGVyKCkubG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbEJsb2NrRGlyZWN0aW9uQmFja3dh
cmQsIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2UpOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlU2Nyb2xsUGFnZUZvcndhcmQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxl
cigpLmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxCbG9ja0RpcmVjdGlvbkZvcndhcmQs
IFNjcm9sbEJ5UGFnZSk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLmxvZ2ljYWxT
Y3JvbGxSZWN1cnNpdmVseShTY3JvbGxCbG9ja0RpcmVjdGlvbkZvcndhcmQsIFNjcm9sbEdyYW51
bGFyaXR5OjpTY3JvbGxCeVBhZ2UpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2Nyb2xsTGlu
ZVVwKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIHJldHVybiBmcmFtZS5ldmVudEhhbmRsZXIoKS5zY3JvbGxSZWN1cnNpdmVs
eShTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICByZXR1cm4gZnJhbWUuZXZlbnRIYW5kbGVy
KCkuc2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsVXAsIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxC
eUxpbmUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2Nyb2xsTGluZURvd24oRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERvd24s
IFNjcm9sbEJ5TGluZSk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLnNjcm9sbFJl
Y3Vyc2l2ZWx5KFNjcm9sbERvd24sIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmUpOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIHJldHVybiBmcmFtZS5ldmVudEhhbmRsZXIoKS5sb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHko
U2Nyb2xsQmxvY2tEaXJlY3Rpb25CYWNrd2FyZCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgcmV0
dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxC
bG9ja0RpcmVjdGlvbkJhY2t3YXJkLCBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVu
dCk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTY3JvbGxUb0VuZE9mRG9jdW1lbnQoRnJhbWUm
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShT
Y3JvbGxCbG9ja0RpcmVjdGlvbkZvcndhcmQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgIHJldHVy
biBmcmFtZS5ldmVudEhhbmRsZXIoKS5sb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsQmxv
Y2tEaXJlY3Rpb25Gb3J3YXJkLCBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudCk7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RBbGwoRnJhbWUmIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IGYzNWYzYmY3Nzc3MjY1ZjAxZDA0OGE3
MDFkZDJhYzZiNDI0YjAxMzEuLjQ5NDEyY2NmZDcyODM1Y2E1Y2RjMDVmZDY0YTdiZmIxNWNhNjU2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCkBA
IC0yMzEsNyArMjMxLDcgQEAgU2Nyb2xsYmFyTW9kZSBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2Ny
b2xsaW5nTW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHNjcm9sbGluZ0F0dHJpYnV0ZSwgIm5vIikKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc2Nyb2xsaW5nQXR0cmlidXRlLCAibm9zY3JvbGwiKQogICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY3JvbGxpbmdBdHRyaWJ1dGUsICJvZmYi
KQotICAgICAgICA/IFNjcm9sbGJhckFsd2F5c09mZiA6IFNjcm9sbGJhckF1dG87CisgICAgICAg
ID8gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT2ZmIDogU2Nyb2xsYmFyTW9kZTo6U2Ny
b2xsYmFyQXV0bzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggOWY4NTNhYTEzZWY2NmFlMzllMDQ4
NjFjM2QxNDM1YzliNTE2Yzg4Ni4uODdjZDI0MTA5YTZkMTQ3NTRjM2M3YWMyMzJiMGU5Y2UyMDNh
ZTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9yPERvY3VtZW50Jj4gZ2V0
U1ZHRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyTW9kZSBzY3JvbGxp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyQXV0bzsgfQorICAgIHZpcnR1YWwgU2Ny
b2xsYmFyTW9kZSBzY3JvbGxpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyTW9kZTo6
U2Nyb2xsYmFyQXV0bzsgfQogCiAgICAgU2FuZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCA1N2IzMzU3YTE1NDYyOTI0YzAxMThlZjI3NmU0OTljMDEyNDU0MjExLi4yYmZk
YjYyNWI4M2I3ZDZkYzMxNzdlZWUxZWJhYWUxZThkNWM4YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0yOTgsMTMgKzI5OCwxMyBAQCBzdGF0aWMgaW5saW5lIFNjcm9s
bEdyYW51bGFyaXR5IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHVuc2lnbmVk
IGRlbAogewogICAgIHN3aXRjaCAoZGVsdGFNb2RlKSB7CiAgICAgY2FzZSBXaGVlbEV2ZW50OjpE
T01fREVMVEFfUEFHRToKLSAgICAgICAgcmV0dXJuIFNjcm9sbEJ5UGFnZTsKKyAgICAgICAgcmV0
dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CiAgICAgY2FzZSBXaGVlbEV2ZW50
OjpET01fREVMVEFfTElORToKLSAgICAgICAgcmV0dXJuIFNjcm9sbEJ5TGluZTsKKyAgICAgICAg
cmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgY2FzZSBXaGVlbEV2
ZW50OjpET01fREVMVEFfUElYRUw6Ci0gICAgICAgIHJldHVybiBTY3JvbGxCeVBpeGVsOworICAg
ICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIFNjcm9sbEJ5UGl4ZWw7CisgICAgICAgIHJldHVybiBTY3JvbGxH
cmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDsKICAgICB9CiB9CiAKQEAgLTEyODcsNyArMTI4Nyw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpsb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsTG9n
aWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjCiAgICAgYm9vbCBzY3JvbGxlZCA9IGZhbHNlOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIE1hYyBhbHNvIHJlc2V0cyB0aGUgc2Nyb2xsIHBv
c2l0aW9uIGluIHRoZSBpbmxpbmUgZGlyZWN0aW9uLgotICAgIGlmIChncmFudWxhcml0eSA9PSBT
Y3JvbGxCeURvY3VtZW50ICYmIHZpZXcgJiYgdmlldy0+bG9naWNhbFNjcm9sbChTY3JvbGxJbmxp
bmVEaXJlY3Rpb25CYWNrd2FyZCwgU2Nyb2xsQnlEb2N1bWVudCkpCisgICAgaWYgKGdyYW51bGFy
aXR5ID09IFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50ICYmIHZpZXcgJiYgdmll
dy0+bG9naWNhbFNjcm9sbChTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2FyZCwgU2Nyb2xsR3Jh
bnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQpKQogICAgICAgICBzY3JvbGxlZCA9IHRydWU7CiAj
ZW5kaWYKICAgICBpZiAodmlldyAmJiB2aWV3LT5sb2dpY2FsU2Nyb2xsKGRpcmVjdGlvbiwgZ3Jh
bnVsYXJpdHkpKQpAQCAtNDI1Nyw3ICs0MjU3LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1
bHRTcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24gPSBldmVudC5zaGlmdEtl
eSgpID8gU2Nyb2xsQmxvY2tEaXJlY3Rpb25CYWNrd2FyZCA6IFNjcm9sbEJsb2NrRGlyZWN0aW9u
Rm9yd2FyZDsKLSAgICBpZiAobG9naWNhbFNjcm9sbE92ZXJmbG93KGRpcmVjdGlvbiwgU2Nyb2xs
QnlQYWdlKSkgeworICAgIGlmIChsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBTY3Jv
bGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlKSkgewogICAgICAgICBldmVudC5zZXREZWZhdWx0
SGFuZGxlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI2Niw3ICs0MjY2LDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50
JiBldmVudCkKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgZGVm
YXVsdEhhbmRsZWQgPSBtX2ZyYW1lLnNldHRpbmdzKCkuZXZlbnRIYW5kbGVyRHJpdmVuU21vb3Ro
S2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkgPyBzdGFydEtleWJvYXJkU2Nyb2xsaW5nKGV2ZW50
KSA6IHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpOworICAgIGJv
b2wgZGVmYXVsdEhhbmRsZWQgPSBtX2ZyYW1lLnNldHRpbmdzKCkuZXZlbnRIYW5kbGVyRHJpdmVu
U21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkgPyBzdGFydEtleWJvYXJkU2Nyb2xsaW5n
KGV2ZW50KSA6IHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0
eTo6U2Nyb2xsQnlQYWdlKTsKICAgICBpZiAoZGVmYXVsdEhhbmRsZWQpCiAgICAgICAgIGV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDdlOGFjMDUy
NDBhNWUxMDNjODU0YzBjNDU3M2RkYjJjNWI3ZDdhMmEuLjcwNGFkYzBiOWEwYTIwODIxNWI0NjAz
YjZiZGYyMzUwN2JlMWQzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05MTksNyArOTE5LDcg
QEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Q29sb3I+JgogICAgICAgICBvd25lclJlbmRlcmVyKCktPnNldFdp
ZGdldChmcmFtZVZpZXcpOwogCiAgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIg
PSBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgdmlldygpLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhv
d25lci0+c2Nyb2xsaW5nTW9kZSgpICE9IFNjcm9sbGJhckFsd2F5c09mZik7CisgICAgICAgIHZp
ZXcoKS0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMob3duZXItPnNjcm9sbGluZ01vZGUoKSAhPSBTY3Jv
bGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmYpOwogfQogCiBET01XaW5kb3cqIEZyYW1lOjp3
aW5kb3coKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IGY1NDhiMGZjNWI2YTg3NTRiZjcwOTJl
YWZjZDhlZTI1ZjkzZmMxYjAuLjUzNzMyODI5ZjJmMzczYWEzNWY1YTY4MDUwNDdkNzJkNThhOGRh
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvciwKICAgICAgICAgY29uc3QgSW50U2l6ZSYgZml4
ZWRMYXlvdXRTaXplLCBjb25zdCBJbnRSZWN0JiBmaXhlZFZpc2libGVDb250ZW50UmVjdCwKLSAg
ICAgICAgYm9vbCB1c2VGaXhlZExheW91dCA9IGZhbHNlLCBTY3JvbGxiYXJNb2RlID0gU2Nyb2xs
YmFyQXV0bywgYm9vbCBob3Jpem9udGFsTG9jayA9IGZhbHNlLAotICAgICAgICBTY3JvbGxiYXJN
b2RlID0gU2Nyb2xsYmFyQXV0bywgYm9vbCB2ZXJ0aWNhbExvY2sgPSBmYWxzZSk7CisgICAgICAg
IGJvb2wgdXNlRml4ZWRMYXlvdXQgPSBmYWxzZSwgU2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhck1v
ZGU6OlNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBmYWxzZSwKKyAgICAgICAg
U2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG8sIGJvb2wgdmVydGlj
YWxMb2NrID0gZmFsc2UpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZyYW1lKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA1NzhlY2RiNjkzZGZhNTMxMGE3MTYwNmYwMzZiZmY2
ZDJmYWM2MjQ2Li4zNGQxOWUwYzc4MDVmNGFlZWVlNDk3MGFmMTkxNzI5M2Q0ODA3MTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xOTYsMTQgKzE5NiwxNCBAQCBGcmFtZVZpZXc6
OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAgaW5pdCgpOwogCiAjaWYgSEFWRShSVUJCRVJf
QkFORElORykKLSAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsRWxhc3RpY2l0eSA9IFNjcm9s
bEVsYXN0aWNpdHlOb25lOwotICAgIFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbEVsYXN0aWNp
dHkgPSBTY3JvbGxFbGFzdGljaXR5Tm9uZTsKKyAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2Fs
RWxhc3RpY2l0eSA9IFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNpdHlOb25lOworICAg
IFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbEVsYXN0aWNpdHkgPSBTY3JvbGxFbGFzdGljaXR5
OjpTY3JvbGxFbGFzdGljaXR5Tm9uZTsKICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkg
ewotICAgICAgICB2ZXJ0aWNhbEVsYXN0aWNpdHkgPSBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1l
LT5wYWdlKCktPnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIDogU2Nyb2xsRWxhc3RpY2l0eUFs
bG93ZWQ7Ci0gICAgICAgIGhvcml6b250YWxFbGFzdGljaXR5ID0gbV9mcmFtZS0+cGFnZSgpID8g
bV9mcmFtZS0+cGFnZSgpLT5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpIDogU2Nyb2xsRWxh
c3RpY2l0eUFsbG93ZWQ7CisgICAgICAgIHZlcnRpY2FsRWxhc3RpY2l0eSA9IG1fZnJhbWUtPnBh
Z2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkgOiBTY3Jv
bGxFbGFzdGljaXR5OjpTY3JvbGxFbGFzdGljaXR5QWxsb3dlZDsKKyAgICAgICAgaG9yaXpvbnRh
bEVsYXN0aWNpdHkgPSBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5KCkgOiBTY3JvbGxFbGFzdGljaXR5OjpTY3JvbGxFbGFzdGljaXR5
QWxsb3dlZDsKICAgICB9IGVsc2UgaWYgKG1fZnJhbWUtPnNldHRpbmdzKCkucnViYmVyQmFuZGlu
Z0ZvclN1YlNjcm9sbGFibGVSZWdpb25zRW5hYmxlZCgpKSB7Ci0gICAgICAgIHZlcnRpY2FsRWxh
c3RpY2l0eSA9IFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM7Ci0gICAgICAgIGhvcml6b250YWxF
bGFzdGljaXR5ID0gU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzsKKyAgICAgICAgdmVydGljYWxF
bGFzdGljaXR5ID0gU2Nyb2xsRWxhc3RpY2l0eTo6U2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzsK
KyAgICAgICAgaG9yaXpvbnRhbEVsYXN0aWNpdHkgPSBTY3JvbGxFbGFzdGljaXR5OjpTY3JvbGxF
bGFzdGljaXR5QXV0b21hdGljOwogICAgIH0KIAogICAgIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkodmVydGljYWxFbGFzdGljaXR5KTsKQEAgLTI5Nyw5ICsyOTcs
OSBAQCB2b2lkIEZyYW1lVmlldzo6cmVzZXRTY3JvbGxiYXJzKCkKICAgICAvLyBSZXNldCB0aGUg
ZG9jdW1lbnQncyBzY3JvbGxiYXJzIGJhY2sgdG8gb3VyIGRlZmF1bHRzIGJlZm9yZSB3ZSB5aWVs
ZCB0aGUgZmxvb3IuCiAgICAgc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQodHJ1ZSk7CiAgICAgaWYg
KG1fY2FuSGF2ZVNjcm9sbGJhcnMpCi0gICAgICAgIHNldFNjcm9sbGJhck1vZGVzKFNjcm9sbGJh
ckF1dG8sIFNjcm9sbGJhckF1dG8pOworICAgICAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxi
YXJNb2RlOjpTY3JvbGxiYXJBdXRvLCBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBdXRvKTsKICAg
ICBlbHNlCi0gICAgICAgIHNldFNjcm9sbGJhck1vZGVzKFNjcm9sbGJhckFsd2F5c09mZiwgU2Ny
b2xsYmFyQWx3YXlzT2ZmKTsKKyAgICAgICAgc2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9k
ZTo6U2Nyb2xsYmFyQWx3YXlzT2ZmLCBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmYp
OwogICAgIHNldFNjcm9sbGJhcnNTdXBwcmVzc2VkKGZhbHNlKTsKIH0KIApAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgRnJhbWVWaWV3Ojppbml0KCkKIAogICAgIC8vIFByb3BhZ2F0ZSB0aGUgc2Ny
b2xsaW5nIG1vZGUgdG8gdGhlIHZpZXcuCiAgICAgYXV0byogb3duZXJFbGVtZW50ID0gZnJhbWUo
KS5vd25lckVsZW1lbnQoKTsKLSAgICBpZiAoaXM8SFRNTEZyYW1lRWxlbWVudEJhc2U+KG93bmVy
RWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2U+KCpvd25lckVsZW1lbnQp
LnNjcm9sbGluZ01vZGUoKSA9PSBTY3JvbGxiYXJBbHdheXNPZmYpCisgICAgaWYgKGlzPEhUTUxG
cmFtZUVsZW1lbnRCYXNlPihvd25lckVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxGcmFtZUVsZW1l
bnRCYXNlPigqb3duZXJFbGVtZW50KS5zY3JvbGxpbmdNb2RlKCkgPT0gU2Nyb2xsYmFyTW9kZTo6
U2Nyb2xsYmFyQWx3YXlzT2ZmKQogICAgICAgICBzZXRDYW5IYXZlU2Nyb2xsYmFycyhmYWxzZSk7
CiAKICAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUNhbkhhdmVTY3JvbGxiYXJzKCkKICAgICBTY3JvbGxiYXJN
b2RlIGhNb2RlOwogICAgIFNjcm9sbGJhck1vZGUgdk1vZGU7CiAgICAgc2Nyb2xsYmFyTW9kZXMo
aE1vZGUsIHZNb2RlKTsKLSAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsYmFyQWx3YXlzT2ZmICYmIHZN
b2RlID09IFNjcm9sbGJhckFsd2F5c09mZikKKyAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsYmFyTW9k
ZTo6U2Nyb2xsYmFyQWx3YXlzT2ZmICYmIHZNb2RlID09IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJh
ckFsd2F5c09mZikKICAgICAgICAgc2V0Q2FuSGF2ZVNjcm9sbGJhcnMoZmFsc2UpOwogICAgIGVs
c2UKICAgICAgICAgc2V0Q2FuSGF2ZVNjcm9sbGJhcnModHJ1ZSk7CkBAIC02NTksMTUgKzY1OSwx
NSBAQCB2b2lkIEZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoY29uc3QgUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIFNjcm9sbGJhcgogICAgIGNhc2UgT3ZlcmZsb3c6OkhpZGRlbjoK
ICAgICBjYXNlIE92ZXJmbG93OjpDbGlwOgogICAgICAgICBpZiAob3ZlcnJpZGVIaWRkZW4pCi0g
ICAgICAgICAgICBoTW9kZSA9IFNjcm9sbGJhckF1dG87CisgICAgICAgICAgICBoTW9kZSA9IFNj
cm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG87CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhN
b2RlID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOworICAgICAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJN
b2RlOjpTY3JvbGxiYXJBbHdheXNPZmY7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3ZlcmZs
b3c6OlNjcm9sbDoKLSAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJBbHdheXNPbjsKKyAgICAgICAg
aE1vZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPbjsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBPdmVyZmxvdzo6QXV0bzoKLSAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJBdXRv
OworICAgICAgICBoTW9kZSA9IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG87CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIERvbid0IHNldCBpdCBhdCBhbGwuCkBA
IC02NzgsMTUgKzY3OCwxNSBAQCB2b2lkIEZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3Bv
cnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFNjcm9sbGJhcgogICAgIGNhc2UgT3Zl
cmZsb3c6OkhpZGRlbjoKICAgICBjYXNlIE92ZXJmbG93OjpDbGlwOgogICAgICAgICBpZiAob3Zl
cnJpZGVIaWRkZW4pCi0gICAgICAgICAgICB2TW9kZSA9IFNjcm9sbGJhckF1dG87CisgICAgICAg
ICAgICB2TW9kZSA9IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG87CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOworICAgICAgICAgICAgdk1v
ZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmY7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgT3ZlcmZsb3c6OlNjcm9sbDoKLSAgICAgICAgdk1vZGUgPSBTY3JvbGxiYXJBbHdh
eXNPbjsKKyAgICAgICAgdk1vZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPbjsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPdmVyZmxvdzo6QXV0bzoKLSAgICAgICAgdk1vZGUg
PSBTY3JvbGxiYXJBdXRvOworICAgICAgICB2TW9kZSA9IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJh
ckF1dG87CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIERvbid0IHNl
dCBpdCBhdCBhbGwuIFZhbHVlcyBvZiBPdmVyZmxvdzo6UGFnZWRYIGFuZCBPdmVyZmxvdzo6UGFn
ZWRZIGFyZSBoYW5kbGVkIGJ5IGFwcGx5UGFnaW5hdGlvblRvVmlld1BvcnQoKS4KQEAgLTczMSwx
OCArNzMxLDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0Zvckxh
eW91dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgbV92aWV3cG9ydFJlbmRl
cmVyVHlwZSA9IFZpZXdwb3J0UmVuZGVyZXJUeXBlOjpOb25lOwogCiAgICAgY29uc3QgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lciA9IGZyYW1lKCkub3duZXJFbGVtZW50KCk7Ci0gICAgaWYg
KG93bmVyICYmIChvd25lci0+c2Nyb2xsaW5nTW9kZSgpID09IFNjcm9sbGJhckFsd2F5c09mZikp
IHsKLSAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7Ci0gICAgICAgIHZNb2RlID0g
U2Nyb2xsYmFyQWx3YXlzT2ZmOworICAgIGlmIChvd25lciAmJiAob3duZXItPnNjcm9sbGluZ01v
ZGUoKSA9PSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmYpKSB7CisgICAgICAgIGhN
b2RlID0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT2ZmOworICAgICAgICB2TW9kZSA9
IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckFsd2F5c09mZjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0gIAogICAgIAogICAgIGlmIChtX2NhbkhhdmVTY3JvbGxiYXJzIHx8IHN0cmF0ZWd5ID09IFJ1
bGVzRnJvbVdlYkNvbnRlbnRPbmx5KSB7Ci0gICAgICAgIGhNb2RlID0gU2Nyb2xsYmFyQXV0bzsK
LSAgICAgICAgdk1vZGUgPSBTY3JvbGxiYXJBdXRvOworICAgICAgICBoTW9kZSA9IFNjcm9sbGJh
ck1vZGU6OlNjcm9sbGJhckF1dG87CisgICAgICAgIHZNb2RlID0gU2Nyb2xsYmFyTW9kZTo6U2Ny
b2xsYmFyQXV0bzsKICAgICB9IGVsc2UgewotICAgICAgICBoTW9kZSA9IFNjcm9sbGJhckFsd2F5
c09mZjsKLSAgICAgICAgdk1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7CisgICAgICAgIGhNb2Rl
ID0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT2ZmOworICAgICAgICB2TW9kZSA9IFNj
cm9sbGJhck1vZGU6OlNjcm9sbGJhckFsd2F5c09mZjsKICAgICB9CiAgICAgCiAgICAgaWYgKGxh
eW91dENvbnRleHQoKS5zdWJ0cmVlTGF5b3V0Um9vdCgpKQpAQCAtNzY3LDggKzc2Nyw4IEBAIHZv
aWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJN
b2RlJiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgfQogICAgIAogICAgIGlmIChpczxIVE1MRnJhbWVT
ZXRFbGVtZW50PigqYm9keU9yRnJhbWVzZXQpICYmICFmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkp
IHsKLSAgICAgICAgdk1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7Ci0gICAgICAgIGhNb2RlID0g
U2Nyb2xsYmFyQWx3YXlzT2ZmOworICAgICAgICB2TW9kZSA9IFNjcm9sbGJhck1vZGU6OlNjcm9s
bGJhckFsd2F5c09mZjsKKyAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJB
bHdheXNPZmY7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNTQsMTEgKzEyNTQsMTEg
QEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFNjcm9sbGJhcnNGb3JMYXlvdXQoYm9vbCBpc0ZpcnN0
TGF5b3V0KQogICAgIGlmIChpc0ZpcnN0TGF5b3V0ICYmICFsYXlvdXRDb250ZXh0KCkuaXNMYXlv
dXROZXN0ZWQoKSkgewogICAgICAgICBzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZCh0cnVlKTsKICAg
ICAgICAgLy8gU2V0IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8u
Ci0gICAgICAgIGlmICh2TW9kZSA9PSBTY3JvbGxiYXJBdXRvKQotICAgICAgICAgICAgc2V0VmVy
dGljYWxTY3JvbGxiYXJNb2RlKFNjcm9sbGJhckFsd2F5c09uKTsgLy8gVGhpcyBjYXVzZXMgYSB2
ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgorICAgICAgICBpZiAodk1vZGUgPT0gU2Nyb2xs
YmFyTW9kZTo6U2Nyb2xsYmFyQXV0bykKKyAgICAgICAgICAgIHNldFZlcnRpY2FsU2Nyb2xsYmFy
TW9kZShTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPbik7IC8vIFRoaXMgY2F1c2VzIGEg
dmVydGljYWwgc2Nyb2xsYmFyIHRvIGFwcGVhci4KICAgICAgICAgLy8gU2V0IHRoZSBpbml0aWFs
IGhNb2RlIHRvIEFsd2F5c09mZiBpZiB3ZSdyZSBhdXRvLgotICAgICAgICBpZiAoaE1vZGUgPT0g
U2Nyb2xsYmFyQXV0bykKLSAgICAgICAgICAgIHNldEhvcml6b250YWxTY3JvbGxiYXJNb2RlKFNj
cm9sbGJhckFsd2F5c09mZik7IC8vIFRoaXMgY2F1c2VzIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIg
dG8gZGlzYXBwZWFyLgorICAgICAgICBpZiAoaE1vZGUgPT0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xs
YmFyQXV0bykKKyAgICAgICAgICAgIHNldEhvcml6b250YWxTY3JvbGxiYXJNb2RlKFNjcm9sbGJh
ck1vZGU6OlNjcm9sbGJhckFsd2F5c09mZik7IC8vIFRoaXMgY2F1c2VzIGEgaG9yaXpvbnRhbCBz
Y3JvbGxiYXIgdG8gZGlzYXBwZWFyLgogICAgICAgICBBU1NFUlQoZnJhbWUoKS5wYWdlKCkpOwog
ICAgICAgICBpZiAoZnJhbWUoKS5wYWdlKCktPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCiAg
ICAgICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihmcmFt
ZSgpLnBhZ2UoKS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkpOwpAQCAtMTQ5NCw3ICsxNDk0LDcg
QEAgYm9vbCBGcmFtZVZpZXc6Omhvcml6b250YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhciAmJiBzY3JvbGxiYXItPmlzSGlkZGVuQnlTdHls
ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBzdHlsZUhpZGVzU2Nyb2xsYmFyV2l0aE9yaWVudGF0
aW9uKEhvcml6b250YWxTY3JvbGxiYXIpOworICAgIHJldHVybiBzdHlsZUhpZGVzU2Nyb2xsYmFy
V2l0aE9yaWVudGF0aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFy
KTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgp
IGNvbnN0CkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBib29sIEZyYW1lVmlldzo6dmVydGljYWxTY3Jv
bGxiYXJIaWRkZW5CeVN0eWxlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhciAmJiBz
Y3JvbGxiYXItPmlzSGlkZGVuQnlTdHlsZSgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3R5
bGVIaWRlc1Njcm9sbGJhcldpdGhPcmllbnRhdGlvbihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAg
cmV0dXJuIHN0eWxlSGlkZXNTY3JvbGxiYXJXaXRoT3JpZW50YXRpb24oU2Nyb2xsYmFyT3JpZW50
YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldENhbm5v
dEJsaXRUb1dpbmRvdygpCkBAIC0zNTIxLDggKzM1MjEsOCBAQCB2b2lkIEZyYW1lVmlldzo6cGVy
Zm9ybUZpeGVkV2lkdGhBdXRvU2l6ZSgpCiAgICAgYXV0byogcmVuZGVyVmlldyA9IGRvY3VtZW50
LT5yZW5kZXJWaWV3KCk7CiAgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlclZpZXctPmZpcnN0
Q2hpbGQoKTsKIAotICAgIFNjcm9sbGJhck1vZGUgaG9yaXpvbmFsU2Nyb2xsYmFyTW9kZSA9IFNj
cm9sbGJhckFsd2F5c09mZjsKLSAgICBTY3JvbGxiYXJNb2RlIHZlcnRpY2FsU2Nyb2xsYmFyTW9k
ZSA9IFNjcm9sbGJhckFsd2F5c09mZjsKKyAgICBTY3JvbGxiYXJNb2RlIGhvcml6b25hbFNjcm9s
bGJhck1vZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmY7CisgICAgU2Nyb2xs
YmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJB
bHdheXNPZmY7CiAgICAgc2V0VmVydGljYWxTY3JvbGxiYXJMb2NrKGZhbHNlKTsKICAgICBzZXRI
b3Jpem9udGFsU2Nyb2xsYmFyTG9jayhmYWxzZSk7CiAgICAgc2V0U2Nyb2xsYmFyTW9kZXMoaG9y
aXpvbmFsU2Nyb2xsYmFyTW9kZSwgdmVydGljYWxTY3JvbGxiYXJNb2RlLCB0cnVlLCB0cnVlKTsK
QEAgLTM1ODgsMTQgKzM1ODgsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1TaXplVG9Db250
ZW50QXV0b1NpemUoKQogICAgICAgICBpZiAobmV3U2l6ZS53aWR0aCgpID4gbV9hdXRvU2l6ZUNv
bnN0cmFpbnQud2lkdGgoKSkgewogICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbG9jYWxI
b3Jpem9udGFsU2Nyb2xsYmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAgICAgICAgICAg
aWYgKCFsb2NhbEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgICAgICAgICAgbG9jYWxIb3Jp
em9udGFsU2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwor
ICAgICAgICAgICAgICAgIGxvY2FsSG9yaXpvbnRhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJh
cihTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgICAg
ICBuZXdTaXplLmV4cGFuZCgwLCBsb2NhbEhvcml6b250YWxTY3JvbGxiYXItPm9jY3VwaWVkSGVp
Z2h0KCkpOwogICAgICAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGNoZWNraW5nIGZvciBhIHZlcnRp
Y2FsIHNjcm9sbGJhciBiZWNhdXNlIHRoZSB3aWR0aCBpcyBhdAogICAgICAgICAgICAgLy8gYWxy
ZWFkeSBncmVhdGVyIHRoZSBtYXhpbXVtLgogICAgICAgICB9IGVsc2UgaWYgKG5ld1NpemUuaGVp
Z2h0KCkgPiBtX2F1dG9TaXplQ29uc3RyYWludC5oZWlnaHQoKSkgewogICAgICAgICAgICAgUmVm
UHRyPFNjcm9sbGJhcj4gbG9jYWxWZXJ0aWNhbFNjcm9sbGJhciA9IHZlcnRpY2FsU2Nyb2xsYmFy
KCk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsVmVydGljYWxTY3JvbGxiYXIpCi0gICAgICAgICAg
ICAgICAgbG9jYWxWZXJ0aWNhbFNjcm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihWZXJ0aWNhbFNj
cm9sbGJhcik7CisgICAgICAgICAgICAgICAgbG9jYWxWZXJ0aWNhbFNjcm9sbGJhciA9IGNyZWF0
ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIpOwogICAg
ICAgICAgICAgbmV3U2l6ZS5leHBhbmQobG9jYWxWZXJ0aWNhbFNjcm9sbGJhci0+b2NjdXBpZWRX
aWR0aCgpLCAwKTsKICAgICAgICAgICAgIC8vIERvbid0IGJvdGhlciBjaGVja2luZyBmb3IgYSBo
b3Jpem9udGFsIHNjcm9sbGJhciBiZWNhdXNlIHRoZSBoZWlnaHQgaXMKICAgICAgICAgICAgIC8v
IGFscmVhZHkgZ3JlYXRlciB0aGUgbWF4aW11bS4KQEAgLTM2MDUsMTUgKzM2MDUsMTUgQEAgdm9p
ZCBGcmFtZVZpZXc6OnBlcmZvcm1TaXplVG9Db250ZW50QXV0b1NpemUoKQogICAgICAgICBuZXdT
aXplID0gbmV3U2l6ZS5leHBhbmRlZFRvKG1pbkF1dG9TaXplKTsKIAogICAgICAgICAvLyBCb3Vu
ZCB0aGUgZGltZW5zaW9ucyBieSB0aGUgbWF4IGJvdW5kcyBhbmQgZGV0ZXJtaW5lIHdoYXQgc2Ny
b2xsYmFycyB0byBzaG93LgotICAgICAgICBTY3JvbGxiYXJNb2RlIGhvcml6b25hbFNjcm9sbGJh
ck1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7CisgICAgICAgIFNjcm9sbGJhck1vZGUgaG9yaXpv
bmFsU2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckFsd2F5c09mZjsKICAg
ICAgICAgaWYgKG5ld1NpemUud2lkdGgoKSA+IG1fYXV0b1NpemVDb25zdHJhaW50LndpZHRoKCkp
IHsKICAgICAgICAgICAgIG5ld1NpemUuc2V0V2lkdGgobV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lk
dGgoKSk7Ci0gICAgICAgICAgICBob3Jpem9uYWxTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQWx3
YXlzT247CisgICAgICAgICAgICBob3Jpem9uYWxTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyTW9k
ZTo6U2Nyb2xsYmFyQWx3YXlzT247CiAgICAgICAgIH0KLSAgICAgICAgU2Nyb2xsYmFyTW9kZSB2
ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7CisgICAgICAgIFNjcm9s
bGJhck1vZGUgdmVydGljYWxTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFy
QWx3YXlzT2ZmOwogICAgICAgICBpZiAobmV3U2l6ZS5oZWlnaHQoKSA+IG1fYXV0b1NpemVDb25z
dHJhaW50LmhlaWdodCgpKSB7CiAgICAgICAgICAgICBuZXdTaXplLnNldEhlaWdodChtX2F1dG9T
aXplQ29uc3RyYWludC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhck1v
ZGUgPSBTY3JvbGxiYXJBbHdheXNPbjsKKyAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyTW9k
ZSA9IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckFsd2F5c09uOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG5ld1NpemUgPT0gc2l6ZSkKQEAgLTM4MTcsNyArMzgxNyw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYg
cG9zaXRpb24sIFNjCiAKIGZsb2F0IEZyYW1lVmlldzo6YWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVk
Q29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgaWYgKGdyYW51bGFyaXR5ICE9IFNj
cm9sbEJ5UGFnZSB8fCBvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgIGlm
IChncmFudWxhcml0eSAhPSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlIHx8IG9yaWVu
dGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAg
ICAgICByZXR1cm4gc3RlcDsKIAogICAgIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0KiBwb3Np
dGlvbmVkT2JqZWN0cyA9IG51bGxwdHI7CkBAIC0zOTUwLDcgKzM5NTAsNyBAQCBib29sIEZyYW1l
Vmlldzo6aXNTY3JvbGxhYmxlKFNjcm9sbGFiaWxpdHkgZGVmaW5pdGlvbk9mU2Nyb2xsYWJsZSkK
ICAgICBTY3JvbGxiYXJNb2RlIGhvcml6b250YWxNb2RlOwogICAgIFNjcm9sbGJhck1vZGUgdmVy
dGljYWxNb2RlOwogICAgIGNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KGhvcml6b250
YWxNb2RlLCB2ZXJ0aWNhbE1vZGUsIFJ1bGVzRnJvbVdlYkNvbnRlbnRPbmx5KTsKLSAgICBpZiAo
aG9yaXpvbnRhbE1vZGUgPT0gU2Nyb2xsYmFyQWx3YXlzT2ZmICYmIHZlcnRpY2FsTW9kZSA9PSBT
Y3JvbGxiYXJBbHdheXNPZmYpCisgICAgaWYgKGhvcml6b250YWxNb2RlID09IFNjcm9sbGJhck1v
ZGU6OlNjcm9sbGJhckFsd2F5c09mZiAmJiB2ZXJ0aWNhbE1vZGUgPT0gU2Nyb2xsYmFyTW9kZTo6
U2Nyb2xsYmFyQWx3YXlzT2ZmKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTQ3MjIsNyArNDcyMiw3IEBAIHZvaWQgRnJhbWVWaWV3OjplbmFibGVBdXRvU2l6
ZU1vZGUoYm9vbCBlbmFibGUsIGNvbnN0IEludFNpemUmIHZpZXdTaXplLCBBdXRvU2l6CiAgICAg
Ly8gU2luY2UgYXV0b3NpemUgbW9kZSBmb3JjZXMgdGhlIHNjcm9sbGJhciBtb2RlLCBjaGFuZ2Ug
dGhlbSB0byBiZWluZyBhdXRvLgogICAgIHNldFZlcnRpY2FsU2Nyb2xsYmFyTG9jayhmYWxzZSk7
CiAgICAgc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxvY2soZmFsc2UpOwotICAgIHNldFNjcm9sbGJh
ck1vZGVzKFNjcm9sbGJhckF1dG8sIFNjcm9sbGJhckF1dG8pOworICAgIHNldFNjcm9sbGJhck1v
ZGVzKFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG8sIFNjcm9sbGJhck1vZGU6OlNjcm9sbGJh
ckF1dG8pOwogfQogCiB2b2lkIEZyYW1lVmlldzo6Zm9yY2VMYXlvdXQoYm9vbCBhbGxvd1N1YnRy
ZWVMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4MTQ2Y2I1OWZjYjcxYzcxMGU2ZjcyMmFj
NmQ1Y2U1NTlmNjQ5MzM3Li45MzM2YzYyMDBmMGE4NzA0YmE1MTk3ZTU5ZTRkMzhiNzgzODdmN2Qw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCBQYWdlOjpQYWdlKFBhZ2VD
b25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3NwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIoKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlcikpKQogICAgICwgbV9tZWRpYVJlY29yZGVyUHJvdmlkZXIoKFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24ubWVkaWFSZWNvcmRlclByb3ZpZGVyKSkpCiAgICAgLCBtX2xpYldlYlJUQ1By
b3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIpKQotICAg
ICwgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQpCi0g
ICAgLCBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHlBbGxvd2Vk
KQorICAgICwgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eTo6U2Ny
b2xsRWxhc3RpY2l0eUFsbG93ZWQpCisgICAgLCBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5
KFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkKQogICAgICwgbV9kb21U
aW1lckFsaWdubWVudEludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0QWxpZ25tZW50SW50ZXJ2YWwo
KSkKICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMs
ICZQYWdlOjpkb21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAg
ICwgbV9hY3Rpdml0eVN0YXRlKHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAppbmRleCAyNjM3YTI5ZGJmNTRiMzhmOWNkNjI4Y2VlZjgxZTJlZDdhMzBhMDViLi5lMjc2NzAw
ZTAxNjY4ODhmYzM5MTI5MjJmZjhkMTZlZThmZGVhMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTAz
OSw4ICsxMDM5LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIG1fc3VwcHJlc3NTY3JvbGxi
YXJBbmltYXRpb25zIHsgZmFsc2UgfTsKICAgICAKLSAgICB1bnNpZ25lZCBtX3ZlcnRpY2FsU2Ny
b2xsRWxhc3RpY2l0eSA6IDI7IC8vIFNjcm9sbEVsYXN0aWNpdHkKLSAgICB1bnNpZ25lZCBtX2hv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5IDogMjsgLy8gU2Nyb2xsRWxhc3RpY2l0eSAgICAKKyAg
ICBTY3JvbGxFbGFzdGljaXR5IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5IHsgU2Nyb2xsRWxh
c3RpY2l0eTo6U2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQgfTsgLy8gU2Nyb2xsRWxhc3RpY2l0eQor
ICAgIFNjcm9sbEVsYXN0aWNpdHkgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9s
bEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkIH07IC8vIFNjcm9sbEVsYXN0aWNp
dHkKIAogICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogICAgIGJvb2wgbV9wYWdpbmF0aW9u
TGluZUdyaWRFbmFibGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5jcHAKaW5kZXggOTgyNzVjNTZlYTIyNjhmMjNjOWY1OTFkNGQ4NzY2YjNkODliMDg1
Ni4uZjU0MGRkODhhZTFhODI5NTBhMTU2MzhlYTAxNzc4MmY5MzBkZDVmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTQ3Niw5ICs0NzYsOSBAQCBib29s
IGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogICAgIFNjcm9sbGJhck1vZGUgdmVydGljYWxNb2RlOwogICAgIFNjcm9sbGJh
ck1vZGUgaG9yaXpvbnRhbE1vZGU7CiAgICAgZnJhbWUtPnZpZXcoKS0+Y2FsY3VsYXRlU2Nyb2xs
YmFyTW9kZXNGb3JMYXlvdXQoaG9yaXpvbnRhbE1vZGUsIHZlcnRpY2FsTW9kZSk7Ci0gICAgaWYg
KChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkxlZnQgfHwgZGlyZWN0aW9uID09IEZvY3Vz
RGlyZWN0aW9uOjpSaWdodCkgJiYgU2Nyb2xsYmFyQWx3YXlzT2ZmID09IGhvcml6b250YWxNb2Rl
KQorICAgIGlmICgoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpMZWZ0IHx8IGRpcmVjdGlv
biA9PSBGb2N1c0RpcmVjdGlvbjo6UmlnaHQpICYmIFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckFs
d2F5c09mZiA9PSBob3Jpem9udGFsTW9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICgoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpVcCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNE
aXJlY3Rpb246OkRvd24pICYmICBTY3JvbGxiYXJBbHdheXNPZmYgPT0gdmVydGljYWxNb2RlKQor
ICAgIGlmICgoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpVcCB8fCBkaXJlY3Rpb24gPT0g
Rm9jdXNEaXJlY3Rpb246OkRvd24pICYmICBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNP
ZmYgPT0gdmVydGljYWxNb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTGF5b3V0U2l6
ZSBzaXplID0gZnJhbWUtPnZpZXcoKS0+dG90YWxDb250ZW50c1NpemUoKTsKICAgICBMYXlvdXRQ
b2ludCBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDNhNmVjNWFmZTUyM2NhNjkzNWJiOGExNTE4YjZhMGQ4
MzhlYmRkZjcuLmRmY2ExZGQ0NDdlNzE0ZTI2OGFjOTFhMmJhMzYzMTczNjM0NmJmZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02MTMsMTMgKzYxMywxMyBAQCB2b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Ny
b2xsYWJsZQogICAgIGF1dG8qIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2Rl
Rm9ySUQoc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsaW5nTm9kZUlEKCkpOwogICAgIGlmIChpczxTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAgIGF1dG8mIHNjcm9sbGlu
Z05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAg
ICAgICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKQorICAgICAgICBpZiAo
b3JpZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyKQog
ICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZS5zZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKHNjcm9s
bGFibGVBcmVhLmxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNjcm9sbGluZ05vZGUuc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKHNjcm9s
bGFibGVBcmVhLmxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKICAgICB9CiAKLSAgICBp
ZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAgaWYgKG9yaWVudGF0aW9u
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgc2Ny
b2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOwogICAgIGVsc2UK
ICAgICAgICAgc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKaW5kZXggYzg3ZThkYTMzNDIxMDAwOGI2NThjYTMzNTVmM2FjZGE4OGE4
MzdiOC4uODEwZTUxODYzMDVmYTMxNjE2NzM4NDhiZWFlN2IzY2E5YjU0ZmE0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcApAQCAtMzg3LDEwICszODcsMTAgQEAgU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdAogCiBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgc2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBz
Y3JvbGwgZWxhc3RpY2l0eSIsIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsU2Ny
b2xsRWxhc3RpY2l0eSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzY3JvbGwgZWxh
c3RpY2l0eSIsIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzY3JvbGxiYXIgbW9kZSIsIHNj
cm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSk7Ci0gICAgdHMu
ZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzY3JvbGxiYXIgbW9kZSIsIHNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycy52ZXJ0aWNhbFNjcm9sbGJhck1vZGUpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9y
aXpvbnRhbCBzY3JvbGwgZWxhc3RpY2l0eSIsIHN0YXRpY19jYXN0PGludD4oc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KSk7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJ2ZXJ0aWNhbCBzY3JvbGwgZWxhc3RpY2l0eSIsIHN0YXRpY19jYXN0PGludD4oc2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSkpOworICAgIHRz
LmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzY3JvbGxiYXIgbW9kZSIsIHN0YXRpY19jYXN0PGlu
dD4oc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxiYXJNb2RlKSk7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzY3JvbGxiYXIgbW9kZSIsIHN0YXRpY19jYXN0
PGludD4oc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSkpOwog
CiAgICAgaWYgKHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycy5hbGxvd3NIb3Jpem9udGFsU2Nyb2xs
aW5nKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImFsbG93cyBob3Jpem9udGFsIHNjcm9sbGlu
ZyIsIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycy5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yVHlwZXMuaAppbmRleCBkZjY1NDc4ODc4NmE4MDgzN2Y1MDNlZWU1ODU5ODcxYjA2
OWJlN2ZkLi42OGFmMzIyMWRmZGUwN2E0MDg1YjYzMzcwNzIzMmNhNGI0MGEyMWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUeXBlcy5oCkBAIC03MCwxMSArNzAsMTEgQEAgZW51bSBjbGFzcyBTY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uIHsKIH07CiAKIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMg
ewotICAgIFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3Jv
bGxFbGFzdGljaXR5Tm9uZSB9OwotICAgIFNjcm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3JvbGxF
bGFzdGljaXR5IHsgU2Nyb2xsRWxhc3RpY2l0eU5vbmUgfTsKKyAgICBTY3JvbGxFbGFzdGljaXR5
IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5IHsgU2Nyb2xsRWxhc3RpY2l0eTo6U2Nyb2xsRWxh
c3RpY2l0eU5vbmUgfTsKKyAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSB7IFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAKLSAgICBT
Y3JvbGxiYXJNb2RlIGhvcml6b250YWxTY3JvbGxiYXJNb2RlIHsgU2Nyb2xsYmFyQXV0byB9Owot
ICAgIFNjcm9sbGJhck1vZGUgdmVydGljYWxTY3JvbGxiYXJNb2RlIHsgU2Nyb2xsYmFyQXV0byB9
OworICAgIFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgeyBTY3JvbGxiYXJN
b2RlOjpTY3JvbGxiYXJBdXRvIH07CisgICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJh
ck1vZGUgeyBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBdXRvIH07CiAKICAgICBib29sIGFsbG93
c0hvcml6b250YWxTY3JvbGxpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxsb3dzVmVydGljYWxT
Y3JvbGxpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggY2M1NmM5NDdjNGI0
NmY5MDlkMTc4MjJjMjg5YWVmMzY4YzQ0NzMzNi4uMTExMGQ4NzAxOWVmMjA0NGUyOWQzZGVmOWU5
NmJmZGZjZDljYWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC05NCw5ICs5NCw5IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsYmFy
SGlkZGVuQnlTdHlsZTsgfQogICAgIGJvb2wgdmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxTY3Jv
bGxiYXJIaWRkZW5CeVN0eWxlOyB9Ci0gICAgYm9vbCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJh
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxT
Y3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsgfQotICAgIGJvb2wgY2FuSGF2ZVZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRl
cnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsgfQotICAgIGJv
b2wgY2FuSGF2ZVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFy
YW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwg
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9s
bGJhckFsd2F5c09mZjsgfQorICAgIGJvb2wgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xs
YmFyTW9kZSAhPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmY7IH0KKyAgICBib29s
IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJNb2RlOjpTY3Jv
bGxiYXJBbHdheXNPZmY7IH0KKyAgICBib29sIGNhbkhhdmVTY3JvbGxiYXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUg
IT0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1fc2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxi
YXJBbHdheXNPZmY7IH0KIAogICAgIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBz
bmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBjdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDJiNzBlYTZjOTBhMzA0ODZmODkw
OTcyNGI5NTU1OTVmOTc4ZDU0YzYuLmQ5ODI5NDA3NDU3NmI2YTM5NzMwOGY2N2IzOWY4YTdhMGFm
MGZjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
Lm1tCkBAIC0yMTksMTUgKzIxOSwxNSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWM6OnNjcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKAogYm9vbCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NIb3Jpem9udGFsU3Ry
ZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7Ci0gICAgY2FzZSBTY3Jv
bGxFbGFzdGljaXR5QXV0b21hdGljOiB7CisgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpTY3Jv
bGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3Ry
ZXRjaGluZyA9IGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxT
Y3JvbGxpbmcoKTsKICAgICAgICAgYXV0byByZWxldmFudFNpZGUgPSBTY3JvbGxhYmxlQXJlYTo6
dGFyZ2V0U2lkZUZvclNjcm9sbERlbHRhKC13aGVlbEV2ZW50LmRlbHRhKCksIFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCk7CiAgICAgICAgIGJvb2wgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcg
PSB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgJiYgcmVsZXZhbnRTaWRlICYmIGlzUGlubmVk
T25TaWRlKCpyZWxldmFudFNpZGUpOwogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyc0FsbG93U3Ry
ZXRjaGluZyAmJiAhZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmc7CiAgICAgfQotICAgIGNhc2UgU2Ny
b2xsRWxhc3RpY2l0eU5vbmU6CisgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpTY3JvbGxFbGFz
dGljaXR5Tm9uZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgU2Nyb2xsRWxhc3Rp
Y2l0eUFsbG93ZWQ6IHsKKyAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNp
dHlBbGxvd2VkOiB7CiAgICAgICAgIGF1dG8gcmVsZXZhbnRTaWRlID0gU2Nyb2xsYWJsZUFyZWE6
OnRhcmdldFNpZGVGb3JTY3JvbGxEZWx0YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwpOwogICAgICAgICBpZiAocmVsZXZhbnRTaWRlKQogICAgICAgICAg
ICAgcmV0dXJuIHNob3VsZFJ1YmJlckJhbmRPblNpZGUoKnJlbGV2YW50U2lkZSk7CkBAIC0yNDIs
MTUgKzI0MiwxNSBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6
OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYQogYm9vbCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogewogICAgIHN3aXRjaCAodmVy
dGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKLSAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRv
bWF0aWM6IHsKKyAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNpdHlBdXRv
bWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gYWxsb3dz
VmVydGljYWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpOwogICAg
ICAgICBhdXRvIHJlbGV2YW50U2lkZSA9IFNjcm9sbGFibGVBcmVhOjp0YXJnZXRTaWRlRm9yU2Ny
b2xsRGVsdGEoLXdoZWVsRXZlbnQuZGVsdGEoKSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCk7
CiAgICAgICAgIGJvb2wgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcgPSB3aGVlbEV2ZW50LmlzR2Vz
dHVyZVN0YXJ0KCkgJiYgcmVsZXZhbnRTaWRlICYmIGlzUGlubmVkT25TaWRlKCpyZWxldmFudFNp
ZGUpOwogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyAmJiAhZXZlbnRQ
cmV2ZW50c1N0cmV0Y2hpbmc7CiAgICAgfQotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eU5vbmU6
CisgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpTY3JvbGxFbGFzdGljaXR5Tm9uZToKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQ6IHsKKyAg
ICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkOiB7CiAgICAg
ICAgIGF1dG8gcmVsZXZhbnRTaWRlID0gU2Nyb2xsYWJsZUFyZWE6OnRhcmdldFNpZGVGb3JTY3Jv
bGxEZWx0YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsK
ICAgICAgICAgaWYgKHJlbGV2YW50U2lkZSkKICAgICAgICAgICAgIHJldHVybiBzaG91bGRSdWJi
ZXJCYW5kT25TaWRlKCpyZWxldmFudFNpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwCmluZGV4IGFiMThiODI3OWFmZjhlZTg5YTg5YzIwZTVhMDM4ODVlNTM0
ZDNjZDQuLjdjMmI4MzllOTI4NmNlODU2Y2VmOGE0MWJlNGE3ZTNiOGRjMGZmNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTc2LDE2ICs3NiwxNiBA
QCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5CiAKICAgICAgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0g
b2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbigpKTsKICAgICAgICAgYXV0byBuZXdP
ZmZzZXQgPSBjdXJyZW50T2Zmc2V0ICsgZGVsdGE7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbiA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gU2Nyb2xs
YmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgICAgICBuZXdPZmZz
ZXQuc2V0WChtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0ZWRTY3JvbGxEZXN0aW5hdGlvbihTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwsIG5ld09mZnNldCwgbXVsdGlwbGllciwgY3VycmVudE9m
ZnNldC54KCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFkobV9z
Y3JvbGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlz
OjpWZXJ0aWNhbCwgbmV3T2Zmc2V0LCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LnkoKSkpOwog
CiAgICAgICAgIGF1dG8gbmV3RGVsdGEgPSBuZXdPZmZzZXQgLSBjdXJyZW50T2Zmc2V0OwotICAg
ICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgICAg
IHJldHVybiBzY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgZ3JhbnVsYXJpdHksIG5ld0RlbHRh
LndpZHRoKCksIDEuMCwgYmVoYXZpb3IpOworICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gU2Ny
b2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgICAgICByZXR1
cm4gc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyLCBncmFu
dWxhcml0eSwgbmV3RGVsdGEud2lkdGgoKSwgMS4wLCBiZWhhdmlvcik7CiAKLSAgICAgICAgcmV0
dXJuIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgZ3JhbnVsYXJpdHksIG5ld0RlbHRhLmhlaWdo
dCgpLCAxLjAsIGJlaGF2aW9yKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbChTY3JvbGxiYXJPcmll
bnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5LCBuZXdEZWx0YS5oZWlnaHQo
KSwgMS4wLCBiZWhhdmlvcik7CiAgICAgfQogCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Ny
b2xsQW5pbWF0b3JFbmFibGVkKCkgJiYgcGxhdGZvcm1BbGxvd3NTY3JvbGxBbmltYXRpb24oKSAm
JiAhYmVoYXZpb3IuY29udGFpbnMoU2Nyb2xsQmVoYXZpb3I6Ok5ldmVyQW5pbWF0ZSkpIHsKQEAg
LTE0NSw3ICsxNDUsNyBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpwb3NpdGlvbkZyb21P
ZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KSBjb25zdAogRmxvYXRTaXplIFNjcm9sbEFu
aW1hdG9yOjpkZWx0YUZyb21TdGVwKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBm
bG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIEZsb2F0U2l6ZSBkZWx0YTsKLSAg
ICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAob3JpZW50
YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpCiAgICAg
ICAgIGRlbHRhLnNldFdpZHRoKHN0ZXAgKiBtdWx0aXBsaWVyKTsKICAgICBlbHNlCiAgICAgICAg
IGRlbHRhLnNldEhlaWdodChzdGVwICogbXVsdGlwbGllcik7CkBAIC0yMTgsNyArMjE4LDcgQEAg
Ym9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIGUpCiAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQogICAgICAgICAgICAgICAg
ICAgICBkZWx0YVkgPSAtZGVsdGFZOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2Nyb2xs
KFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4
ZWxTdGVwKCksIC1kZWx0YVksIGJlaGF2aW9yKTsKKyAgICAgICAgICAgIHNjcm9sbChTY3JvbGxi
YXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEdyYW51bGFyaXR5OjpTY3Jv
bGxCeVBpeGVsLCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVksIGJlaGF2
aW9yKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkZWx0YVgpIHsKQEAgLTIyOCw3ICsyMjgs
NyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZSkKICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCiAgICAgICAgICAg
ICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBz
Y3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgaG9yaXpvbnRhbFNjcm9s
bGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVgsIGJlaGF2aW9yKTsKKyAgICAgICAgICAgIHNjcm9s
bChTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsR3JhbnVs
YXJpdHk6OlNjcm9sbEJ5UGl4ZWwsIGhvcml6b250YWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAt
ZGVsdGFYLCBiZWhhdmlvcik7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhbmRsZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAppbmRleCBlYmFhMTdlOTAwMmQ4ZGIz
OThkNzhiNmNiZDM3YjY2MjE0Y2ZhZTVmLi4zMTgxMjRhMmYzMDU1N2VjYWY1ZDlhMzYyODk5NjM0
Yjk3OTBiODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTEzMCwy
NSArMTMwLDI1IEBAIGlubGluZSBTY3JvbGxEaXJlY3Rpb24gbG9naWNhbFRvUGh5c2ljYWwoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wKICAgICByZXR1cm4gU2Nyb2xsVXA7
CiB9CiAKLWVudW0gU2Nyb2xsR3JhbnVsYXJpdHkgOiB1aW50OF90IHsKK2VudW0gY2xhc3MgU2Ny
b2xsR3JhbnVsYXJpdHkgOiB1aW50OF90IHsKICAgICBTY3JvbGxCeUxpbmUsCiAgICAgU2Nyb2xs
QnlQYWdlLAogICAgIFNjcm9sbEJ5RG9jdW1lbnQsCiAgICAgU2Nyb2xsQnlQaXhlbAogfTsKIAot
ZW51bSBTY3JvbGxFbGFzdGljaXR5IDogdWludDhfdCB7CitlbnVtIGNsYXNzIFNjcm9sbEVsYXN0
aWNpdHkgOiB1aW50OF90IHsKICAgICBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljLAogICAgIFNj
cm9sbEVsYXN0aWNpdHlOb25lLAogICAgIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkCiB9OwogCi1l
bnVtIFNjcm9sbGJhck9yaWVudGF0aW9uIDogdWludDhfdCB7CitlbnVtIGNsYXNzIFNjcm9sbGJh
ck9yaWVudGF0aW9uIDogdWludDhfdCB7CiAgICAgSG9yaXpvbnRhbFNjcm9sbGJhciwKICAgICBW
ZXJ0aWNhbFNjcm9sbGJhcgogfTsKIAotZW51bSBTY3JvbGxiYXJNb2RlIDogdWludDhfdCB7Citl
bnVtIGNsYXNzIFNjcm9sbGJhck1vZGUgOiB1aW50OF90IHsKICAgICBTY3JvbGxiYXJBdXRvLAog
ICAgIFNjcm9sbGJhckFsd2F5c09mZiwKICAgICBTY3JvbGxiYXJBbHdheXNPbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCBjOTJjZTJlNWM5MThlY2UxYTVkNDgwYzBh
ZDdlYThmZjY0NTk1MDRiLi5jMTI4NTNiZTgzOTU2MmU4ZWI2MzBmMjliOWRlZjZlYjk3NzNjYzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNjcsMTIgKzY3LDEy
IEBAIHZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiBjaGlsZCkKIAogYm9vbCBT
Y3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyLCBib29sKiBj
b250ZW50U2l6ZUFmZmVjdGVkKQogewotICAgIHJldHVybiBzZXRIYXNTY3JvbGxiYXJJbnRlcm5h
bChtX2hvcml6b250YWxTY3JvbGxiYXIsIEhvcml6b250YWxTY3JvbGxiYXIsIGhhc0JhciwgY29u
dGVudFNpemVBZmZlY3RlZCk7CisgICAgcmV0dXJuIHNldEhhc1Njcm9sbGJhckludGVybmFsKG1f
aG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3Jv
bGxiYXIsIGhhc0JhciwgY29udGVudFNpemVBZmZlY3RlZCk7CiB9CiAKIGJvb2wgU2Nyb2xsVmll
dzo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXpl
QWZmZWN0ZWQpCiB7Ci0gICAgcmV0dXJuIHNldEhhc1Njcm9sbGJhckludGVybmFsKG1fdmVydGlj
YWxTY3JvbGxiYXIsIFZlcnRpY2FsU2Nyb2xsYmFyLCBoYXNCYXIsIGNvbnRlbnRTaXplQWZmZWN0
ZWQpOworICAgIHJldHVybiBzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChtX3ZlcnRpY2FsU2Nyb2xs
YmFyLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIsIGhhc0JhciwgY29u
dGVudFNpemVBZmZlY3RlZCk7CiB9CiAKIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFy
SW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRp
b24gb3JpZW50YXRpb24sIGJvb2wgaGFzQmFyLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkKQpA
QCAtMTU0LDE1ICsxNTQsMTUgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRDYW5IYXZlU2Nyb2xsYmFy
cyhib29sIGNhblNjcm9sbCkKICAgICAKICAgICBzY3JvbGxiYXJNb2RlcyhuZXdIb3Jpem9udGFs
TW9kZSwgbmV3VmVydGljYWxNb2RlKTsKICAgICAKLSAgICBpZiAoY2FuU2Nyb2xsICYmIG5ld1Zl
cnRpY2FsTW9kZSA9PSBTY3JvbGxiYXJBbHdheXNPZmYpCi0gICAgICAgIG5ld1ZlcnRpY2FsTW9k
ZSA9IFNjcm9sbGJhckF1dG87CisgICAgaWYgKGNhblNjcm9sbCAmJiBuZXdWZXJ0aWNhbE1vZGUg
PT0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT2ZmKQorICAgICAgICBuZXdWZXJ0aWNh
bE1vZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBdXRvOwogICAgIGVsc2UgaWYgKCFjYW5T
Y3JvbGwpCi0gICAgICAgIG5ld1ZlcnRpY2FsTW9kZSA9IFNjcm9sbGJhckFsd2F5c09mZjsKKyAg
ICAgICAgbmV3VmVydGljYWxNb2RlID0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT2Zm
OwogICAgIAotICAgIGlmIChjYW5TY3JvbGwgJiYgbmV3SG9yaXpvbnRhbE1vZGUgPT0gU2Nyb2xs
YmFyQWx3YXlzT2ZmKQotICAgICAgICBuZXdIb3Jpem9udGFsTW9kZSA9IFNjcm9sbGJhckF1dG87
CisgICAgaWYgKGNhblNjcm9sbCAmJiBuZXdIb3Jpem9udGFsTW9kZSA9PSBTY3JvbGxiYXJNb2Rl
OjpTY3JvbGxiYXJBbHdheXNPZmYpCisgICAgICAgIG5ld0hvcml6b250YWxNb2RlID0gU2Nyb2xs
YmFyTW9kZTo6U2Nyb2xsYmFyQXV0bzsKICAgICBlbHNlIGlmICghY2FuU2Nyb2xsKQotICAgICAg
ICBuZXdIb3Jpem9udGFsTW9kZSA9IFNjcm9sbGJhckFsd2F5c09mZjsKKyAgICAgICAgbmV3SG9y
aXpvbnRhbE1vZGUgPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmY7CiAgICAgCiAg
ICAgc2V0U2Nyb2xsYmFyTW9kZXMobmV3SG9yaXpvbnRhbE1vZGUsIG5ld1ZlcnRpY2FsTW9kZSk7
CiB9CkBAIC02MzQsMTQgKzYzNCwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJh
cnMoY29uc3QgU2Nyb2xsUG9zaXRpb24mIGRlc2lyZWRQb3NpdGlvbikKICAgICBTY3JvbGxiYXJN
b2RlIGhTY3JvbGwgPSBtX2hvcml6b250YWxTY3JvbGxiYXJNb2RlOwogICAgIFNjcm9sbGJhck1v
ZGUgdlNjcm9sbCA9IG1fdmVydGljYWxTY3JvbGxiYXJNb2RlOwogCi0gICAgaWYgKGhTY3JvbGwg
IT0gU2Nyb2xsYmFyQXV0bykKLSAgICAgICAgbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9ICho
U2Nyb2xsID09IFNjcm9sbGJhckFsd2F5c09uKTsKLSAgICBpZiAodlNjcm9sbCAhPSBTY3JvbGxi
YXJBdXRvKQotICAgICAgICBuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhciA9ICh2U2Nyb2xsID09IFNj
cm9sbGJhckFsd2F5c09uKTsKKyAgICBpZiAoaFNjcm9sbCAhPSBTY3JvbGxiYXJNb2RlOjpTY3Jv
bGxiYXJBdXRvKQorICAgICAgICBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gKGhTY3JvbGwg
PT0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT24pOworICAgIGlmICh2U2Nyb2xsICE9
IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG8pCisgICAgICAgIG5ld0hhc1ZlcnRpY2FsU2Ny
b2xsYmFyID0gKHZTY3JvbGwgPT0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQWx3YXlzT24pOwog
CiAgICAgYm9vbCBzY3JvbGxiYXJBZGRlZE9yUmVtb3ZlZCA9IGZhbHNlOwogCi0gICAgaWYgKG1f
c2Nyb2xsYmFyc1N1cHByZXNzZWQgfHwgKGhTY3JvbGwgIT0gU2Nyb2xsYmFyQXV0byAmJiB2U2Ny
b2xsICE9IFNjcm9sbGJhckF1dG8pKSB7CisgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQg
fHwgKGhTY3JvbGwgIT0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQXV0byAmJiB2U2Nyb2xsICE9
IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG8pKSB7CiAgICAgICAgIGlmIChoYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyICE9IG5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIgJiYgKGhhc0hvcml6b250
YWxTY3JvbGxiYXIgfHwgIWF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSkpIHsKICAgICAgICAgICAg
IGlmIChzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKG5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIp
KQogICAgICAgICAgICAgICAgIHNjcm9sbGJhckFkZGVkT3JSZW1vdmVkID0gdHJ1ZTsKQEAgLTY1
Nyw5ICs2NTcsOSBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Ny
b2xsUG9zaXRpb24mIGRlc2lyZWRQb3NpdGlvbikKICAgICAgICAgSW50U2l6ZSBkb2NTaXplID0g
dG90YWxDb250ZW50c1NpemUoKTsKICAgICAgICAgSW50U2l6ZSBmdWxsVmlzaWJsZVNpemUgPSB1
bm9ic2N1cmVkQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCkuc2l6ZSgpOwogCi0gICAg
ICAgIGlmIChoU2Nyb2xsID09IFNjcm9sbGJhckF1dG8pCisgICAgICAgIGlmIChoU2Nyb2xsID09
IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG8pCiAgICAgICAgICAgICBuZXdIYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyID0gZG9jU2l6ZS53aWR0aCgpID4gdmlzaWJsZVdpZHRoKCk7Ci0gICAgICAg
IGlmICh2U2Nyb2xsID09IFNjcm9sbGJhckF1dG8pCisgICAgICAgIGlmICh2U2Nyb2xsID09IFNj
cm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG8pCiAgICAgICAgICAgICBuZXdIYXNWZXJ0aWNhbFNj
cm9sbGJhciA9IGRvY1NpemUuaGVpZ2h0KCkgPiB2aXNpYmxlSGVpZ2h0KCk7CiAKICAgICAgICAg
Ym9vbCBuZWVkQW5vdGhlclBhc3MgPSBmYWxzZTsKQEAgLTY2NywxNiArNjY3LDE2IEBAIHZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJl
ZFBvc2l0aW9uKQogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB0dXJuIG9uZSBzY3JvbGxiYXIg
b2ZmLCBkbyBub3QgdHVybiB0aGUgb3RoZXIgb25lIG9uLiBOZXZlciBldmVyCiAgICAgICAgICAg
ICAvLyB0cnkgdG8gYm90aCBnYWluL2xvc2UgYSBzY3JvbGxiYXIgaW4gdGhlIHNhbWUgcGFzcy4K
ICAgICAgICAgICAgIGlmICghbV91cGRhdGVTY3JvbGxiYXJzUGFzcyAmJiBkb2NTaXplLndpZHRo
KCkgPD0gZnVsbFZpc2libGVTaXplLndpZHRoKCkgJiYgZG9jU2l6ZS5oZWlnaHQoKSA8PSBmdWxs
VmlzaWJsZVNpemUuaGVpZ2h0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaFNjcm9sbCA9PSBT
Y3JvbGxiYXJBdXRvKQorICAgICAgICAgICAgICAgIGlmIChoU2Nyb2xsID09IFNjcm9sbGJhck1v
ZGU6OlNjcm9sbGJhckF1dG8pCiAgICAgICAgICAgICAgICAgICAgIG5ld0hhc0hvcml6b250YWxT
Y3JvbGxiYXIgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAodlNjcm9sbCA9PSBTY3JvbGxi
YXJBdXRvKQorICAgICAgICAgICAgICAgIGlmICh2U2Nyb2xsID09IFNjcm9sbGJhck1vZGU6OlNj
cm9sbGJhckF1dG8pCiAgICAgICAgICAgICAgICAgICAgIG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFy
ID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW5ld0hhc0hvcml6b250
YWxTY3JvbGxiYXIgJiYgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciAmJiB2U2Nyb2xsICE9IFNjcm9s
bGJhckFsd2F5c09uICYmICFoYXNWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICAgICAgaWYg
KCFuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyICYmIGhhc0hvcml6b250YWxTY3JvbGxiYXIgJiYg
dlNjcm9sbCAhPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPbiAmJiAhaGFzVmVydGlj
YWxTY3JvbGxiYXIpIHsKICAgICAgICAgICAgICAgICBuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhciA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIG5lZWRBbm90aGVyUGFzcyA9IHRydWU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAoIW5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhhc1Zl
cnRpY2FsU2Nyb2xsYmFyICYmIGhTY3JvbGwgIT0gU2Nyb2xsYmFyQWx3YXlzT24gJiYgIWhhc0hv
cml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAgICAgIGlmICghbmV3SGFzVmVydGljYWxTY3Jv
bGxiYXIgJiYgaGFzVmVydGljYWxTY3JvbGxiYXIgJiYgaFNjcm9sbCAhPSBTY3JvbGxiYXJNb2Rl
OjpTY3JvbGxiYXJBbHdheXNPbiAmJiAhaGFzSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAg
ICAgICAgICAgIG5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICBuZWVkQW5vdGhlclBhc3MgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTYxOSw4ICsx
NjE5LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhck1vZGVzKCkKIAog
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNjcm9sbGJhck1vZGVzKFNjcm9sbGJhck1vZGUmIGhv
cml6b250YWwsIFNjcm9sbGJhck1vZGUmIHZlcnRpY2FsKSBjb25zdAogewotICAgIGhvcml6b250
YWwgPSBTY3JvbGxiYXJBdXRvOwotICAgIHZlcnRpY2FsID0gU2Nyb2xsYmFyQXV0bzsKKyAgICBo
b3Jpem9udGFsID0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xsYmFyQXV0bzsKKyAgICB2ZXJ0aWNhbCA9
IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG87CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGxh
dGZvcm1TZXRDYW5CbGl0T25TY3JvbGwoYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaAppbmRleCAwNzlmNzAyMmMyNWYzOWM4ZGU0YzQyODNlNGJkOTc3MTM3ODUyZjk4Li45MGVm
NDM0ZWJmMDczZmFhMDA1ZGUyNjAyMmUxYzE0NzZkMDgzNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCkBAIC01MzQsOCArNTM0LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8U2Nyb2xsYmFy
PiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwotICAgIFNjcm9sbGJhck1vZGUgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyTW9kZSB7IFNjcm9sbGJhckF1dG8gfTsKLSAgICBTY3JvbGxiYXJNb2RlIG1fdmVydGlj
YWxTY3JvbGxiYXJNb2RlIHsgU2Nyb2xsYmFyQXV0byB9OworICAgIFNjcm9sbGJhck1vZGUgbV9o
b3Jpem9udGFsU2Nyb2xsYmFyTW9kZSB7IFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG8gfTsK
KyAgICBTY3JvbGxiYXJNb2RlIG1fdmVydGljYWxTY3JvbGxiYXJNb2RlIHsgU2Nyb2xsYmFyTW9k
ZTo6U2Nyb2xsYmFyQXV0byB9OwogCiAKICAgICAvLyBGSVhNRTogTW9yZSB0aGluZ3Mgd2lsbCBt
b3ZlIGludG8gaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cAppbmRleCAzMmRkYWNhMGFhYmVhMWM5MzdlZWE2YWZmZDE3NTdiMDk3MDEyNWEwLi5kOGI1MzE2
NTI5YzkxYTZiNGJjYTc1NWY3MTk0NGU0YzBmODIxMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0xMDEsMTAgKzEwMSwxMCBAQCBib29sIFNjcm9s
bGFibGVBcmVhOjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYQogICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uOwogICAg
IFNjcm9sbGJhciogc2Nyb2xsYmFyOwogICAgIGlmIChkaXJlY3Rpb24gPT0gU2Nyb2xsVXAgfHwg
ZGlyZWN0aW9uID09IFNjcm9sbERvd24pIHsKLSAgICAgICAgb3JpZW50YXRpb24gPSBWZXJ0aWNh
bFNjcm9sbGJhcjsKKyAgICAgICAgb3JpZW50YXRpb24gPSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6
VmVydGljYWxTY3JvbGxiYXI7CiAgICAgICAgIHNjcm9sbGJhciA9IHZlcnRpY2FsU2Nyb2xsYmFy
KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgb3JpZW50YXRpb24gPSBIb3Jpem9udGFsU2Nyb2xs
YmFyOworICAgICAgICBvcmllbnRhdGlvbiA9IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsU2Nyb2xsYmFyOwogICAgICAgICBzY3JvbGxiYXIgPSBob3Jpem9udGFsU2Nyb2xsYmFyKCk7
CiAgICAgfQogCkBAIC0xMTMsMTYgKzExMywxNiBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpzY3Jv
bGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYQog
CiAgICAgZmxvYXQgc3RlcCA9IDA7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNh
c2UgU2Nyb2xsQnlMaW5lOgorICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGlu
ZToKICAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+bGluZVN0ZXAoKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTY3JvbGxCeVBhZ2U6CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Ny
b2xsQnlQYWdlOgogICAgICAgICBzdGVwID0gc2Nyb2xsYmFyLT5wYWdlU3RlcCgpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFNjcm9sbEJ5RG9jdW1lbnQ6CisgICAgY2FzZSBTY3JvbGxHcmFu
dWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+dG90
YWxTaXplKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Nyb2xsQnlQaXhlbDoKKyAgICBj
YXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBpeGVsOgogICAgICAgICBzdGVwID0gc2Ny
b2xsYmFyLT5waXhlbFN0ZXAoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTYzLDcgKzE2
Myw3IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlv
bihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3Jv
bGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIGZsb2F0IG9mZnNldCkKIHsKICAgICBhdXRvIGN1cnJlbnRQb3NpdGlvbiA9IHNjcm9sbEFu
aW1hdG9yKCkuY3VycmVudFBvc2l0aW9uKCk7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6
b250YWxTY3JvbGxiYXIpCisgICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0
aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNjcm9s
bFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQob2Zmc2V0LCBjdXJyZW50UG9z
aXRpb24ueSgpKSk7CiAgICAgZWxzZQogICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNjcm9sbFRv
UG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoY3VycmVudFBvc2l0aW9uLngoKSwg
b2Zmc2V0KSk7CkBAIC0zMjUsNyArMzI1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xs
YmFyc0NhbkJlQWN0aXZlKCkgY29uc3QKIAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkU2Ny
b2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKIHsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAg
aWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJh
cikKICAgICAgICAgc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5kaWRBZGRWZXJ0aWNhbFNjcm9sbGJh
cihzY3JvbGxiYXIpOwogICAgIGVsc2UKICAgICAgICAgc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5k
aWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CkBAIC0zMzgsNyArMzM4LDcgQEAg
dm9pZCBTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3Zl
U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKIHsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpCisg
ICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9s
bGJhcikKICAgICAgICAgc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS53aWxsUmVtb3ZlVmVydGljYWxT
Y3JvbGxiYXIoc2Nyb2xsYmFyKTsKICAgICBlbHNlCiAgICAgICAgIHNjcm9sbGJhcnNDb250cm9s
bGVyKCkud2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKQEAgLTU2NSw3
ICs1NjUsNyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIAogICAgIGF1dG8gY3VycmVudE9mZnNl
dCA9IHNjcm9sbE9mZnNldCgpOwogICAgIGF1dG8gbmV3T2Zmc2V0ID0gY3VycmVudE9mZnNldDsK
LSAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAob3Jp
ZW50YXRpb24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpCiAg
ICAgICAgIG5ld09mZnNldC5zZXRYKHNjcm9sbEFuaW1hdG9yLT5zY3JvbGxPZmZzZXRBZGp1c3Rl
ZEZvclNuYXBwaW5nKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY3VycmVudE9mZnNldCwg
U2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kOjpDbG9zZXN0KSk7CiAgICAgZWxzZQogICAg
ICAgICBuZXdPZmZzZXQuc2V0WShzY3JvbGxBbmltYXRvci0+c2Nyb2xsT2Zmc2V0QWRqdXN0ZWRG
b3JTbmFwcGluZyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBjdXJyZW50T2Zmc2V0LCBTY3Jv
bGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2Q6OkNsb3Nlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGZlNDJjNGVjNmViYTRmMDQ4Zjk0ZmVmNTkwNDkz
NjkwYmU1MzU2NWEuLjdkMGM3MDJiZWJhZTRlMWNhYmNmZDQ1M2NjNGUxNGIzMjIyNjBlZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNTQsOCArNTQsOCBA
QCBlbnVtIGNsYXNzIFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlIDogdWludDhfdDsKIGlubGluZSBp
bnQgb2Zmc2V0Rm9yT3JpZW50YXRpb24oU2Nyb2xsT2Zmc2V0IG9mZnNldCwgU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewotICAg
IGNhc2UgSG9yaXpvbnRhbFNjcm9sbGJhcjogcmV0dXJuIG9mZnNldC54KCk7Ci0gICAgY2FzZSBW
ZXJ0aWNhbFNjcm9sbGJhcjogcmV0dXJuIG9mZnNldC55KCk7CisgICAgY2FzZSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcjogcmV0dXJuIG9mZnNldC54KCk7CisgICAg
Y2FzZSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXI6IHJldHVybiBvZmZz
ZXQueSgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsK
QEAgLTEyMSw5ICsxMjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xs
RWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IHNjcm9sbEVsYXN0aWNpdHkpIHsgbV9ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFz
dGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ob3Jp
em9udGFsU2Nyb2xsRWxhc3RpY2l0eTsgfQogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJNb2RlIGhv
cml6b250YWxTY3JvbGxiYXJNb2RlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyQXV0bzsgfQot
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUoKSBjb25zdCB7
IHJldHVybiBTY3JvbGxiYXJBdXRvOyB9Ci0gICAgYm9vbCBjYW5IYXZlU2Nyb2xsYmFycygpIGNv
bnN0IHsgcmV0dXJuIGhvcml6b250YWxTY3JvbGxiYXJNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlz
T2ZmIHx8IHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSgpICE9IFNjcm9sbGJhckFsd2F5c09mZjsgfQor
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIFNjcm9sbGJhck1vZGU6OlNjcm9sbGJhckF1dG87IH0KKyAgICB2aXJ0dWFsIFNj
cm9sbGJhck1vZGUgdmVydGljYWxTY3JvbGxiYXJNb2RlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xs
YmFyTW9kZTo6U2Nyb2xsYmFyQXV0bzsgfQorICAgIGJvb2wgY2FuSGF2ZVNjcm9sbGJhcnMoKSBj
b25zdCB7IHJldHVybiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpICE9IFNjcm9sbGJhck1vZGU6
OlNjcm9sbGJhckFsd2F5c09mZiB8fCB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUoKSAhPSBTY3JvbGxi
YXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmY7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBob3Jpem9u
dGFsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIHZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC00MDIsOCArNDAyLDggQEAgcHJpdmF0ZToKIAogICAgIFNjcm9sbENs
YW1waW5nIG1fc2Nyb2xsQ2xhbXBpbmcgeyBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCB9OwogCi0g
ICAgU2Nyb2xsRWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9sbEVs
YXN0aWNpdHlOb25lIH07Ci0gICAgU2Nyb2xsRWxhc3RpY2l0eSBtX2hvcml6b250YWxTY3JvbGxF
bGFzdGljaXR5IHsgU2Nyb2xsRWxhc3RpY2l0eU5vbmUgfTsKKyAgICBTY3JvbGxFbGFzdGljaXR5
IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5IHsgU2Nyb2xsRWxhc3RpY2l0eTo6U2Nyb2xsRWxh
c3RpY2l0eU5vbmUgfTsKKyAgICBTY3JvbGxFbGFzdGljaXR5IG1faG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5OjpTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCiAg
ICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHsgU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0IH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IGM5N2RmMDBlNTcwOTZjODU2NmJjYzQ5
ZDVkMDU5ZTNlYTE0MzhlN2QuLjg3MWRlMWEzYWFhZDc2MzdlYTVjYzU4MTdjODA0ZDM5OGUzMTVl
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAtMjIwLDcgKzIyMCw3
IEBAIHZvaWQgU2Nyb2xsYmFyOjpzdG9wVGltZXJJZk5lZWRlZCgpCiAKIFNjcm9sbERpcmVjdGlv
biBTY3JvbGxiYXI6OnByZXNzZWRQYXJ0U2Nyb2xsRGlyZWN0aW9uKCkKIHsKLSAgICBpZiAobV9v
cmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKG1fb3JpZW50YXRp
b24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAg
ICAgaWYgKG1fcHJlc3NlZFBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCB8fCBtX3ByZXNzZWRQ
YXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0IHx8IG1fcHJlc3NlZFBhcnQgPT0gQmFja1RyYWNrUGFy
dCkKICAgICAgICAgICAgIHJldHVybiBTY3JvbGxMZWZ0OwogICAgICAgICByZXR1cm4gU2Nyb2xs
UmlnaHQ7CkBAIC0yMzQsOCArMjM0LDggQEAgU2Nyb2xsRGlyZWN0aW9uIFNjcm9sbGJhcjo6cHJl
c3NlZFBhcnRTY3JvbGxEaXJlY3Rpb24oKQogU2Nyb2xsR3JhbnVsYXJpdHkgU2Nyb2xsYmFyOjpw
cmVzc2VkUGFydFNjcm9sbEdyYW51bGFyaXR5KCkKIHsKICAgICBpZiAobV9wcmVzc2VkUGFydCA9
PSBCYWNrQnV0dG9uU3RhcnRQYXJ0IHx8IG1fcHJlc3NlZFBhcnQgPT0gQmFja0J1dHRvbkVuZFBh
cnQgfHwgIG1fcHJlc3NlZFBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCB8fCBtX3ByZXNz
ZWRQYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0KQotICAgICAgICByZXR1cm4gU2Nyb2xsQnlM
aW5lOwotICAgIHJldHVybiBTY3JvbGxCeVBhZ2U7CisgICAgICAgIHJldHVybiBTY3JvbGxHcmFu
dWxhcml0eTo6U2Nyb2xsQnlMaW5lOworICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Ny
b2xsQnlQYWdlOwogfQogCiB2b2lkIFNjcm9sbGJhcjo6bW92ZVRodW1iKGludCBwb3MsIGJvb2wg
ZHJhZ2dpbmdEb2N1bWVudCkKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNjcm9sbGJhcjo6bW92
ZVRodW1iKGludCBwb3MsIGJvb2wgZHJhZ2dpbmdEb2N1bWVudCkKICAgICAgICAgICAgIGRlbHRh
ID0gcG9zIC0gbV9kb2N1bWVudERyYWdQb3M7CiAgICAgICAgIG1fZHJhZ2dpbmdEb2N1bWVudCA9
IHRydWU7CiAgICAgICAgIEZsb2F0UG9pbnQgY3VycmVudFBvc2l0aW9uID0gbV9zY3JvbGxhYmxl
QXJlYS5zY3JvbGxBbmltYXRvcigpLmN1cnJlbnRQb3NpdGlvbigpOwotICAgICAgICBpbnQgZGVz
dGluYXRpb25Qb3NpdGlvbiA9IChtX29yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIg
PyBjdXJyZW50UG9zaXRpb24ueCgpIDogY3VycmVudFBvc2l0aW9uLnkoKSkgKyBkZWx0YTsKKyAg
ICAgICAgaW50IGRlc3RpbmF0aW9uUG9zaXRpb24gPSAobV9vcmllbnRhdGlvbiA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciA/IGN1cnJlbnRQb3NpdGlvbi54KCkg
OiBjdXJyZW50UG9zaXRpb24ueSgpKSArIGRlbHRhOwogICAgICAgICBpZiAoZGVsdGEgPiAwKQog
ICAgICAgICAgICAgZGVzdGluYXRpb25Qb3NpdGlvbiA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uUG9z
aXRpb24gKyBkZWx0YSwgbWF4aW11bSgpKTsKICAgICAgICAgZWxzZSBpZiAoZGVsdGEgPCAwKQpA
QCAtMzEwLDcgKzMxMCw3IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZ0KQogICAgICAgICBpZiAodGhlbWUoKS5zaG91bGRTbmFwQmFja1Rv
RHJhZ09yaWdpbigqdGhpcywgZXZ0KSkKICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2Ny
b2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKG1fb3JpZW50YXRpb24sIG1fZHJhZ09yaWdpbik7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW92ZVRodW1iKG1fb3JpZW50YXRpb24gPT0g
SG9yaXpvbnRhbFNjcm9sbGJhciA/IAorICAgICAgICAgICAgbW92ZVRodW1iKG1fb3JpZW50YXRp
b24gPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIgPwogICAgICAg
ICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24o
KSkueCgpIDoKICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3coZXZ0LnBvc2l0aW9uKCkpLnkoKSwgdGhlbWUoKS5zaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFk
T2ZUaHVtYigqdGhpcywgZXZ0KSk7CiAgICAgICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBib29s
IFNjcm9sbGJhcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKICAg
ICB9CiAKICAgICBpZiAobV9wcmVzc2VkUGFydCAhPSBOb1BhcnQpCi0gICAgICAgIG1fcHJlc3Nl
ZFBvcyA9IChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueSgpKTsKKyAgICAgICAgbV9wcmVzc2VkUG9zID0g
KG9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxi
YXIgPyBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6IGNv
bnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueSgpKTsKIAogICAgIFNj
cm9sbGJhclBhcnQgcGFydCA9IHRoZW1lKCkuaGl0VGVzdCgqdGhpcywgZXZ0LnBvc2l0aW9uKCkp
OwogICAgIGlmIChwYXJ0ICE9IG1faG92ZXJlZFBhcnQpIHsKQEAgLTM4Nyw3ICszODcsNyBAQCBi
b29sIFNjcm9sbGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQog
ICAgIG1fc2Nyb2xsYWJsZUFyZWEubW91c2VJc0Rvd25JblNjcm9sbGJhcih0aGlzLCB0cnVlKTsK
ICAgICBzZXRQcmVzc2VkUGFydChwcmVzc2VkUGFydCk7CiAKLSAgICBpbnQgcHJlc3NlZFBvc2l0
aW9uID0gKG9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9t
Q29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWlu
aW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS55KCkpOworICAgIGludCBwcmVzc2VkUG9zaXRpb24g
PSAob3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9s
bGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSkueCgpIDog
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS55KCkpOwogICAgIGlm
IChhY3Rpb24gPT0gU2Nyb2xsYmFyQnV0dG9uUHJlc3NBY3Rpb246OkNlbnRlck9uVGh1bWIpIHsK
ICAgICAgICAgc2V0SG92ZXJlZFBhcnQoVGh1bWJQYXJ0KTsKICAgICAgICAgc2V0UHJlc3NlZFBh
cnQoVGh1bWJQYXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCAwMGU1MjY0NTVkMTMwOTM3NzRmNGE3YmYyNzY5ZDhm
MmU5YmIzODNkLi4yYjNiNjQ2NDFhNmVmMWQxOTJhMTFlYjc2ZTAyNDc1MzU1ODFhMDljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
Y3BwCkBAIC0xOTMsOSArMTkzLDkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3Bs
aXRUcmFjayhTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW4KICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHdvbid0IGV2ZW4gZ2V0IGNhbGxlZCB1bmxlc3Mgd2UncmUgYmlnIGVub3Vn
aCB0byBoYXZlIHNvbWUgY29tYmluYXRpb24gb2YgdGhlc2UgdGhyZWUgcmVjdHMgd2hlcmUgYXQg
bGVhc3QKICAgICAvLyBvbmUgb2YgdGhlbSBpcyBub24tZW1wdHkuCiAgICAgSW50UmVjdCB0cmFj
a1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdW5jb25z
dHJhaW5lZFRyYWNrUmVjdCk7Ci0gICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBzY3JvbGxiYXIuaGVpZ2h0KCkgOiBzY3Jv
bGxiYXIud2lkdGgoKTsKKyAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9u
KCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIgPyBzY3JvbGxi
YXIuaGVpZ2h0KCkgOiBzY3JvbGxiYXIud2lkdGgoKTsKICAgICBpbnQgdGh1bWJQb3MgPSB0aHVt
YlBvc2l0aW9uKHNjcm9sbGJhcik7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkg
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAg
dGh1bWJSZWN0ID0gSW50UmVjdCh0cmFja1JlY3QueCgpICsgdGh1bWJQb3MsIHRyYWNrUmVjdC55
KCkgKyAodHJhY2tSZWN0LmhlaWdodCgpIC0gdGhpY2tuZXNzKSAvIDIsIHRodW1iTGVuZ3RoKHNj
cm9sbGJhciksIHRoaWNrbmVzcyk7CiAgICAgICAgIGJlZm9yZVRodW1iUmVjdCA9IEludFJlY3Qo
dHJhY2tSZWN0LngoKSwgdHJhY2tSZWN0LnkoKSwgdGh1bWJQb3MgKyB0aHVtYlJlY3Qud2lkdGgo
KSAvIDIsIHRyYWNrUmVjdC5oZWlnaHQoKSk7IAogICAgICAgICBhZnRlclRodW1iUmVjdCA9IElu
dFJlY3QodHJhY2tSZWN0LngoKSArIGJlZm9yZVRodW1iUmVjdC53aWR0aCgpLCB0cmFja1JlY3Qu
eSgpLCB0cmFja1JlY3QubWF4WCgpIC0gYmVmb3JlVGh1bWJSZWN0Lm1heFgoKSwgdHJhY2tSZWN0
LmhlaWdodCgpKTsKQEAgLTI1MSwxMyArMjUxLDEzIEBAIGludCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogaW50IFNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
ewogICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RU
b1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwotICAgIHJldHVy
biAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgPyBjb25z
dHJhaW5lZFRyYWNrUmVjdC54KCkgLSBzY3JvbGxiYXIueCgpIDogY29uc3RyYWluZWRUcmFja1Jl
Y3QueSgpIC0gc2Nyb2xsYmFyLnkoKTsKKyAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlv
bigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0
cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci54KCkgOiBjb25zdHJhaW5lZFRyYWNrUmVj
dC55KCkgLSBzY3JvbGxiYXIueSgpOwogfQogCiBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6
OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgY29uc3Ry
YWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJh
ciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwotICAgIHJldHVybiAoc2Nyb2xsYmFyLm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0
aCgpIDogY29uc3RyYWluZWRUcmFja1JlY3QuaGVpZ2h0KCk7CisgICAgcmV0dXJuIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9s
bGJhcikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0aCgpIDogY29uc3RyYWluZWRUcmFja1Jl
Y3QuaGVpZ2h0KCk7CiB9CiAKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1i
UmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQppbmRleCAxNjJkNjM5ZmYzMWNhMzNkNThlMzhjYWZh
MmU4MTM0YTVlZWE3ZGM5Li42YTNlNDU5MGY0NWJhMWQ3MjJiMjFhNzg3Y2I1OTBiZWI3YzUzZjcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9T
Lm1tCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBib29sIFNjcm9sbEFuaW1hdG9ySU9TOjpoYW5kbGVU
b3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKICAgICAvLyBI
b3Jpem9udGFsCiAgICAgaWYgKG1fdG91Y2hTY3JvbGxBeGlzTGF0Y2ggIT0gQXhpc0xhdGNoVmVy
dGljYWwpIHsKICAgICAgICAgaW50IGRlbHRhID0gdG91Y2hEZWx0YS53aWR0aCgpOwotICAgICAg
ICBoYW5kbGVkIHw9IG1fc2Nyb2xsYWJsZUFyZWFGb3JUb3VjaFNlcXVlbmNlLT5zY3JvbGwoZGVs
dGEgPCAwID8gU2Nyb2xsTGVmdCA6IFNjcm9sbFJpZ2h0LCBTY3JvbGxCeVBpeGVsLCBhYnMoZGVs
dGEpKTsKKyAgICAgICAgaGFuZGxlZCB8PSBtX3Njcm9sbGFibGVBcmVhRm9yVG91Y2hTZXF1ZW5j
ZS0+c2Nyb2xsKGRlbHRhIDwgMCA/IFNjcm9sbExlZnQgOiBTY3JvbGxSaWdodCwgU2Nyb2xsR3Jh
bnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWwsIGFicyhkZWx0YSkpOwogICAgIH0KICAgICAKICAgICAv
LyBWZXJ0aWNhbAogICAgIGlmIChtX3RvdWNoU2Nyb2xsQXhpc0xhdGNoICE9IEF4aXNMYXRjaEhv
cml6b250YWwpIHsKICAgICAgICAgaW50IGRlbHRhID0gdG91Y2hEZWx0YS5oZWlnaHQoKTsKLSAg
ICAgICAgaGFuZGxlZCB8PSBtX3Njcm9sbGFibGVBcmVhRm9yVG91Y2hTZXF1ZW5jZS0+c2Nyb2xs
KGRlbHRhIDwgMCA/IFNjcm9sbFVwIDogU2Nyb2xsRG93biwgU2Nyb2xsQnlQaXhlbCwgYWJzKGRl
bHRhKSk7CisgICAgICAgIGhhbmRsZWQgfD0gbV9zY3JvbGxhYmxlQXJlYUZvclRvdWNoU2VxdWVu
Y2UtPnNjcm9sbChkZWx0YSA8IDAgPyBTY3JvbGxVcCA6IFNjcm9sbERvd24sIFNjcm9sbEdyYW51
bGFyaXR5OjpTY3JvbGxCeVBpeGVsLCBhYnMoZGVsdGEpKTsKICAgICB9CiAgICAgCiAgICAgLy8g
UmV0dXJuIGZhbHNlIHVudGlsIHdlIG1hbmFnZSB0byBzY3JvbGwgYXQgYWxsLCBhbmQgdGhlbiBr
ZWVwIHJldHVybmluZyB0cnVlIHVudGlsIHRoZSBnZXN0dXJlIGVuZHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1Njcm9sbFZpZXcubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1Njcm9sbFZpZXcubW0KaW5kZXggNTAxYTY4YmVh
OTA3ODhkOWJjOTM2OTczMGU3Mzk0NzY1OWE0NjQyZi4uMDY5YTU1YjA0YjNhMzJlMDI4YjBiZmI1
MGM1ZTViNTU4NTNiMzY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtTY3JvbGxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV0FLU2Nyb2xsVmlldy5tbQpAQCAtMTk0LDEyICsxOTQsMTIgQEAgc3RhdGljIHZvaWQgX25v
dGlmaWNhdGlvbkNhbGxiYWNrKFdLVmlld1JlZiB2LCBXS1ZpZXdOb3RpZmljYXRpb25UeXBlIHR5
cGUsIHZvaWQKIAogLSAoV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSlob3Jpem9udGFsU2Nyb2xsaW5n
TW9kZQogewotICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxiYXJBdXRvOworICAgIHJldHVybiBX
ZWJDb3JlOjpTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBdXRvOwogfQogCiAtIChXZWJDb3JlOjpT
Y3JvbGxiYXJNb2RlKXZlcnRpY2FsU2Nyb2xsaW5nTW9kZQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpTY3JvbGxiYXJBdXRvOworICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxiYXJNb2RlOjpTY3Jv
bGxiYXJBdXRvOwogfQogCiAjcHJhZ21hIG1hcmsgLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IDYzODhhODhkMjY3NGIxMzU0MTg5
ZWQ0MDBlZGU2NzU5YWE5MjVhZmEuLjE4Y2JlMjgxYTM4ODU5NWMyNDQ0MjQ4OGIzNGZjODNiM2Zh
NGRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVn
aW5TbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRQogYm9v
bCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fc2Nyb2xs
YWJsZUFyZWEudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKLSAgICBjYXNlIFNjcm9sbEVs
YXN0aWNpdHlBdXRvbWF0aWM6IHsKKyAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVs
YXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Nj
cm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKICAgICAgICAgU2Nyb2xsYmFyKiB2
U2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgICAg
IGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9ICgodlNjcm9sbGVyICYmIHZTY3JvbGxl
ci0+ZW5hYmxlZCgpKSB8fCAoIWhTY3JvbGxlciB8fCAhaFNjcm9sbGVyLT5lbmFibGVkKCkpKTsK
QEAgLTE1NCw5ICsxNTQsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogICAgICAgICAgICAg
ZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcgPSBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKHdoZWVsRXZl
bnQsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIG1fc2Nyb2xsYWJsZUFyZWEuc25hcE9mZnNl
dHNJbmZvKCkpOwogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyAmJiAh
ZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmc7CiAgICAgfQotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0
eU5vbmU6CisgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpTY3JvbGxFbGFzdGljaXR5Tm9uZToK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQ6
CisgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpTY3JvbGxFbGFzdGljaXR5QWxsb3dlZDoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBTY3Jv
bGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgd2hlZWwKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxT
dHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsK
ICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHko
KSkgewotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzogeworICAgIGNhc2UgU2Ny
b2xsRWxhc3RpY2l0eTo6U2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzogewogICAgICAgICBTY3Jv
bGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigp
OwogICAgICAgICBTY3JvbGxiYXIqIHZTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEudmVydGlj
YWxTY3JvbGxiYXIoKTsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0g
KChoU2Nyb2xsZXIgJiYgaFNjcm9sbGVyLT5lbmFibGVkKCkpIHx8ICghdlNjcm9sbGVyIHx8ICF2
U2Nyb2xsZXItPmVuYWJsZWQoKSkpOwpAQCAtMTc3LDkgKzE3Nyw5IEBAIGJvb2wgU2Nyb2xsQW5p
bWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlCiAgICAgICAgICAgICBldmVudFByZXZlbnRzU3RyZXRjaGluZyA9IGdlc3R1cmVT
aG91bGRCZWdpblNuYXAod2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBt
X3Njcm9sbGFibGVBcmVhLnNuYXBPZmZzZXRzSW5mbygpKTsKICAgICAgICAgcmV0dXJuIHNjcm9s
bGJhcnNBbGxvd1N0cmV0Y2hpbmcgJiYgIWV2ZW50UHJldmVudHNTdHJldGNoaW5nOwogICAgIH0K
LSAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlOb25lOgorICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0
eTo6U2Nyb2xsRWxhc3RpY2l0eU5vbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNl
IFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkOgorICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6U2Ny
b2xsRWxhc3RpY2l0eUFsbG93ZWQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4
IDM0ZjIyNmY5OGI5ZWIxODFjNWE2NDhkYThmNjU3ZDUwYTMwMGNmNjUuLjlkNDJlMDVmMTNmYjE2
Njg2NzE2OTkwZGFjOGUyMzczNWVjMTFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikK
ICAgICBpZiAoc2Nyb2xsYmFyLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGJvb2wgaXNIb3Jpem9udGFsID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhcjsKKyAgICBib29sIGlzSG9yaXpvbnRhbCA9IHNjcm9sbGJhci5vcmll
bnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyOwog
ICAgIGF1dG8gc2Nyb2xsZXJJbXAgPSByZXRhaW5QdHIoW05TU2Nyb2xsZXJJbXAgc2Nyb2xsZXJJ
bXBXaXRoU3R5bGU6U2Nyb2xsZXJTdHlsZTo6cmVjb21tZW5kZWRTY3JvbGxlclN0eWxlKCkgY29u
dHJvbFNpemU6c2Nyb2xsYmFyQ29udHJvbFNpemVUb05TQ29udHJvbFNpemUoc2Nyb2xsYmFyLmNv
bnRyb2xTaXplKCkpIGhvcml6b250YWw6aXNIb3Jpem9udGFsIHJlcGxhY2luZ1Njcm9sbGVySW1w
Om5pbF0pOwogICAgIHNjcm9sbGJhck1hcCgpLmFkZCgmc2Nyb2xsYmFyLCBXVEZNb3ZlKHNjcm9s
bGVySW1wKSk7CiAgICAgZGlkQ3JlYXRlU2Nyb2xsZXJJbXAoc2Nyb2xsYmFyKTsKQEAgLTI5NSw3
ICsyOTUsNyBAQCBpbmxpbmUgY29uc3RleHByIHVuc2lnbmVkIHNjcm9sbGJhclNpemVUb0luZGV4
KFNjcm9sbGJhckNvbnRyb2xTaXplIHNjcm9sbGJhclNpegogCiBib29sIFNjcm9sbGJhclRoZW1l
TWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGlmIChzY3JvbGxi
YXIuZW5hYmxlZCgpICYmIGJ1dHRvbnNQbGFjZW1lbnQoKSAhPSBTY3JvbGxiYXJCdXR0b25zTm9u
ZSAmJiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikpCisg
ICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkgJiYgYnV0dG9uc1BsYWNlbWVudCgpICE9IFNjcm9s
bGJhckJ1dHRvbnNOb25lICYmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxi
YXIud2lkdGgoKTsKICAgICByZXR1cm4gc2Nyb2xsYmFyLmhlaWdodCgpID49IDIgKiAoY1JlYWxC
dXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRvSW5kZXgoc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkp
XSAtIGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXJTaXplVG9JbmRleChzY3JvbGxiYXIuY29udHJv
bFNpemUoKSldKTsKIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFj
OjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICBtaW5MZW5ndGhGb3JUaHVtYiA9
IFtwYWludGVyIGtub2JNaW5MZW5ndGhdICsgW3BhaW50ZXIgdHJhY2tPdmVybGFwRW5kSW5zZXRd
ICsgW3BhaW50ZXIga25vYk92ZXJsYXBFbmRJbnNldF0KICAgICAgICAgKyAyICogKFtwYWludGVy
IHRyYWNrRW5kSW5zZXRdICsgW3BhaW50ZXIga25vYkVuZEluc2V0XSk7CiAKLSAgICByZXR1cm4g
c2Nyb2xsYmFyLmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhciA/CisgICAgcmV0dXJuIHNjcm9sbGJhci5lbmFibGVkKCkgJiYgKHNjcm9s
bGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Ny
b2xsYmFyID8KICAgICAgICAgICAgICBzY3JvbGxiYXIud2lkdGgoKSA6CiAgICAgICAgICAgICAg
c2Nyb2xsYmFyLmhlaWdodCgpKSA+PSBtaW5MZW5ndGhGb3JUaHVtYjsKIH0KQEAgLTMxOCw3ICsz
MTgsNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBi
dXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIEFTU0VSVChnQnV0dG9uUGxhY2Vt
ZW50ICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lKTsKIAogICAgIEludFJlY3QgcGFpbnRSZWN0KGJ1
dHRvblJlY3QpOwotICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7
CisgICAgaWYgKG9yaWVudGF0aW9uID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CiAgICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChjUmVhbEJ1dHRvbkxlbmd0
aFtzY3JvbGxiYXJTaXplVG9JbmRleChjb250cm9sU2l6ZSldKTsKICAgICAgICAgaWYgKCFzdGFy
dCkKICAgICAgICAgICAgIHBhaW50UmVjdC5zZXRYKGJ1dHRvblJlY3QueCgpIC0gKGNSZWFsQnV0
dG9uTGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KGNvbnRyb2xTaXplKV0gLSBidXR0b25SZWN0
LndpZHRoKCkpKTsKQEAgLTM0NCw3ICszNDQsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFj
OjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQog
ICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xT
aXplKCkpOwogICAgIGJvb2wgb3V0ZXJCdXR0b24gPSBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBh
cnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlU3RhcnQg
fHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVCb3RoKTsKICAg
ICBpZiAob3V0ZXJCdXR0b24pIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcikKICAgICAg
ICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFyLnkoKSwgY091
dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNpemVUb0luZGV4KHNjcm9sbGJhci5jb250cm9sU2l6
ZSgpKV0gKyAocGFpbnRpbmcgPyBjT3V0ZXJCdXR0b25PdmVybGFwIDogMCksIHRoaWNrbmVzcyk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFyLngo
KSwgc2Nyb2xsYmFyLnkoKSwgdGhpY2tuZXNzLCBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFy
U2l6ZVRvSW5kZXgoc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpXSArIChwYWludGluZyA/IGNPdXRl
ckJ1dHRvbk92ZXJsYXAgOiAwKSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGEKICAgICB9CiAgICAgCiAgICAgLy8gT3VyIHJlcGFpbnQgcmVjdCBpcyBzbGlnaHRs
eSBsYXJnZXIsIHNpbmNlIHdlIGFyZSBhIGJ1dHRvbiB0aGF0IGlzIGFkamFjZW50IHRvIHRoZSB0
cmFjay4KLSAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmll
bnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgc3RhcnQgPSBwYXJ0
ID09IEJhY2tCdXR0b25TdGFydFBhcnQgPyBzY3JvbGxiYXIueCgpIDogc2Nyb2xsYmFyLngoKSAr
IHNjcm9sbGJhci53aWR0aCgpIC0gY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNpemVUb0lu
ZGV4KHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhclNp
emVUb0luZGV4KHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKV07CiAgICAgICAgIHJlc3VsdCA9IElu
dFJlY3Qoc3RhcnQsIHNjcm9sbGJhci55KCksIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyU2l6ZVRv
SW5kZXgoc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpXSwgdGhpY2tuZXNzKTsKICAgICB9IGVsc2Ug
ewpAQCAtMzgxLDcgKzM4MSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRC
dXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgCiAgICAg
Ym9vbCBvdXRlckJ1dHRvbiA9IHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgJiYgKGJ1dHRv
bnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kIHx8IGJ1dHRvbnNQbGFj
ZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlQm90aCk7CiAgICAgaWYgKG91dGVyQnV0
dG9uKSB7Ci0gICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3Jv
bGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICAgICAgcmVz
dWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFyLndpZHRoKCkgLSBvdXRlckJ1
dHRvbkxlbmd0aCwgc2Nyb2xsYmFyLnkoKSwgb3V0ZXJCdXR0b25MZW5ndGgsIHRoaWNrbmVzcyk7
CiAgICAgICAgICAgICBpZiAocGFpbnRpbmcpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmluZmxh
dGVYKGNPdXRlckJ1dHRvbk92ZXJsYXApOwpAQCAtMzkzLDcgKzM5Myw3IEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAg
aWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBzdGFydCA9IHBhcnQgPT0gRm9yd2FyZEJ1
dHRvbkVuZFBhcnQgPyBzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFyLndpZHRoKCkgLSBidXR0b25M
ZW5ndGggOiBzY3JvbGxiYXIueCgpICsgb3V0ZXJCdXR0b25MZW5ndGg7CiAgICAgICAgIHJlc3Vs
dCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci55KCksIGJ1dHRvbkxlbmd0aCwgdGhpY2tuZXNz
KTsKICAgICB9IGVsc2UgewpAQCAtNDM3LDcgKzQzNyw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhl
bWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKICAg
ICB9CiAgICAgCiAgICAgaW50IHRvdGFsV2lkdGggPSBzdGFydFdpZHRoICsgZW5kV2lkdGg7Ci0g
ICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCisg
ICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpI
b3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgp
ICsgc3RhcnRXaWR0aCwgc2Nyb2xsYmFyLnkoKSwgc2Nyb2xsYmFyLndpZHRoKCkgLSB0b3RhbFdp
ZHRoLCB0aGlja25lc3MpOwogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNjcm9s
bGJhci55KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci5oZWlnaHQoKSAtIHRv
dGFsV2lkdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGJhcnNDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGJhcnNDb250cm9sbGVyTWFjLm1tCmluZGV4IDQ0NTBhYzFkOWM2OWVjMWM4MjgxZmZjMGY2
ODNhYmY3MjIyMDFjNzQuLmQ2MjViYTU5ODIxYjk5ZjAxODc0NGI0MmM4MjcyZTZlOTE1OThlZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJzQ29udHJv
bGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyc0Nv
bnRyb2xsZXJNYWMubW0KQEAgLTM3MCw3ICszNzAsNyBAQCB1c2luZyBXZWJDb3JlOjpMb2dPdmVy
bGF5U2Nyb2xsYmFyczsKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIGxheWVyOwotICAgIGlmIChfc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFdl
YkNvcmU6OlZlcnRpY2FsU2Nyb2xsYmFyKQorICAgIGlmIChfc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJhcikK
ICAgICAgICAgbGF5ZXIgPSBfc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLmxheWVyRm9yVmVy
dGljYWxTY3JvbGxiYXIoKTsKICAgICBlbHNlCiAgICAgICAgIGxheWVyID0gX3Njcm9sbGJhci0+
c2Nyb2xsYWJsZUFyZWEoKS5sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKTsKQEAgLTQ1NSw3
ICs0NTUsNyBAQCB1c2luZyBXZWJDb3JlOjpMb2dPdmVybGF5U2Nyb2xsYmFyczsKICAgICBpZiAo
YXV0byogbWFjVGhlbWUgPSBXZWJDb3JlOjptYWNTY3JvbGxiYXJUaGVtZSgpKQogICAgICAgICBt
YWNUaGVtZS0+c2V0UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoKl9zY3JvbGxiYXIp
OwogCi0gICAgaWYgKHBhcnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0ICYmIF9zY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6VmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICBpZiAocGFy
dCA9PSBXZWJDb3JlOjpUaHVtYlBhcnQgJiYgX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBX
ZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAg
ICAgaWYgKG5ld0FscGhhID09IDEpIHsKICAgICAgICAgICAgIGF1dG8gdGh1bWJSZWN0ID0gV2Vi
Q29yZTo6SW50UmVjdChbc2Nyb2xsZXJQYWludGVyIHJlY3RGb3JQYXJ0Ok5TU2Nyb2xsZXJLbm9i
XSk7CiAgICAgICAgICAgICBbc2VsZiBzY3JvbGxiYXJzQ29udHJvbGxlcl0tPnNldFZpc2libGVT
Y3JvbGxlclRodW1iUmVjdCh0aHVtYlJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAppbmRleCBiMDU3Mzg0M2FjYTY1NTVlNTU5NGJjMjViNzE3Mzc3NzZjODIzMWU0Li4w
YTUwNWE0OWZiYzI0ZjZjM2U4YjUzYWU4NDZmMjAxNzUzNGFhNGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtOTI1LDggKzkyNSw4IEBAIGJvb2wgUmVuZGVyQm94
Ojpsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxH
cmFudWxhcml0CiAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIoKSA/IGxheWVy
KCktPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIC8vIE9uIE1hYyBvbmx5IHdlIHJlc2V0IHRoZSBpbmxpbmUgZGlyZWN0aW9uIHBvc2l0
aW9uIHdoZW4gZG9pbmcgYSBkb2N1bWVudCBzY3JvbGwgKGUuZy4sIGhpdHRpbmcgSG9tZS9FbmQp
LgotICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gU2Nyb2xsQnlEb2N1bWVudCkKLSAgICAgICAg
ICAgIHNjcm9sbGVkID0gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbChsb2dpY2FsVG9QaHlzaWNhbChT
Y3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2FyZCwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwg
c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSwgU2Nyb2xsQnlEb2N1bWVudCwg
bXVsdGlwbGllcik7CisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBTY3JvbGxHcmFudWxhcml0
eTo6U2Nyb2xsQnlEb2N1bWVudCkKKyAgICAgICAgICAgIHNjcm9sbGVkID0gc2Nyb2xsYWJsZUFy
ZWEtPnNjcm9sbChsb2dpY2FsVG9QaHlzaWNhbChTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2Fy
ZCwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0
aW5nTW9kZSgpKSwgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQsIG11bHRpcGxp
ZXIpOwogI2VuZGlmCiAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsKGxvZ2ljYWxU
b1BoeXNpY2FsKGRpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgc3R5bGUoKS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpKQog
ICAgICAgICAgICAgc2Nyb2xsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVCYXNlLmNwcAppbmRleCBiMDk1ZDhlNGFjYTdmYWY2OTNkY2U5MjYxOGFiM2Q0
ODg0MTg3ZGU5Li4wNjc4ZmJjNmNkNjgwZmZhNTUyZTk1Njk2NDFkZmUyMjkxYzc1ZWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIFJlbmRlckZyYW1lQmFzZTo6cGVyZm9ybUxheW91dFdpdGhGbGF0dGVuaW5n
KGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9vbCBoYXNGaQogICAgIC8vIGlmIHNjcm9sbGJhcnMgYXJl
IG9mZiwgYW5kIHRoZSB3aWR0aCBvciBoZWlnaHQgYXJlIGZpeGVkCiAgICAgLy8gd2Ugb2JleSB0
aGVtIGFuZCBkbyBub3QgZXhwYW5kLiBXaXRoIGZyYW1lIGZsYXR0ZW5pbmcKICAgICAvLyBubyBz
dWJmcmFtZSBtdWNoIGV2ZXIgYmVjb21lIHNjcm9sbGFibGUuCi0gICAgYm9vbCBpc1Njcm9sbGFi
bGUgPSBmcmFtZU93bmVyRWxlbWVudCgpLnNjcm9sbGluZ01vZGUoKSAhPSBTY3JvbGxiYXJBbHdh
eXNPZmY7CisgICAgYm9vbCBpc1Njcm9sbGFibGUgPSBmcmFtZU93bmVyRWxlbWVudCgpLnNjcm9s
bGluZ01vZGUoKSAhPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmY7CiAKICAgICAv
LyBjb25zaWRlciBpZnJhbWUgaW5zZXQgYm9yZGVyCiAgICAgaW50IGhCb3JkZXIgPSBib3JkZXJM
ZWZ0KCkgKyBib3JkZXJSaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmNwcAppbmRleCA0YjI3NjFlMTk4NzdiZWZkY2FlZWMxNWZiNDhmY2U3MzYzYWIyZDVjLi44
OWE4YzBkOWRjYzRlNGJiNDY4YmVhNzI1YjAyNWUyNTAxZTI5NzMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcApAQCAtODYsNyArODYsNyBAQCBib29sIFJlbmRl
cklGcmFtZTo6ZmxhdHRlbkZyYW1lKCkgY29uc3QKIAogICAgIGlmIChzdHlsZSgpLndpZHRoKCku
aXNGaXhlZCgpICYmIHN0eWxlKCkuaGVpZ2h0KCkuaXNGaXhlZCgpKSB7CiAgICAgICAgIC8vIERv
IG5vdCBmbGF0dGVuIGlmcmFtZXMgd2l0aCBzY3JvbGxpbmc9Im5vIi4KLSAgICAgICAgaWYgKGlm
cmFtZUVsZW1lbnQoKS5zY3JvbGxpbmdNb2RlKCkgPT0gU2Nyb2xsYmFyQWx3YXlzT2ZmKQorICAg
ICAgICBpZiAoaWZyYW1lRWxlbWVudCgpLnNjcm9sbGluZ01vZGUoKSA9PSBTY3JvbGxiYXJNb2Rl
OjpTY3JvbGxiYXJBbHdheXNPZmYpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IC8vIERvIG5vdCBmbGF0dGVuIGlmcmFtZXMgdGhhdCBoYXZlIHplcm8gc2l6ZSwgYXMgZmxhdHRl
bmluZyBtaWdodCBtYWtlIHRoZW0gdmlzaWJsZS4KICAgICAgICAgaWYgKHN0eWxlKCkud2lkdGgo
KS52YWx1ZSgpIDw9IDAgfHwgc3R5bGUoKS5oZWlnaHQoKS52YWx1ZSgpIDw9IDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAwYzI2Njk2Mjk5MTc0YmQ2ZmQ4
OWM2MmIxYTAyMjk2ZmE4OWU0YmQ5Li45MjFmNWY3MGNiMWIwMDkxYTQwYmZhMjkyMzQ2MjNiYWRm
YzY2OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTIz
OTcsNyArMjM5Nyw3IEBAIExheW91dFNpemUgUmVuZGVyTGF5ZXI6Om9mZnNldEZyb21BbmNlc3Rv
cihjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgQ29sCiBzdGF0aWMgaW5saW5lIGJv
b2wgZnJhbWVFbGVtZW50QW5kVmlld1Blcm1pdFNjcm9sbChIVE1MRnJhbWVFbGVtZW50QmFzZSog
ZnJhbWVFbGVtZW50QmFzZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgLy8gSWYgc2Ny
b2xsYmFycyBhcmVuJ3QgZXhwbGljaXRseSBmb3JiaWRkZW4sIHBlcm1pdCBzY3JvbGxpbmcuCi0g
ICAgaWYgKGZyYW1lRWxlbWVudEJhc2UgJiYgZnJhbWVFbGVtZW50QmFzZS0+c2Nyb2xsaW5nTW9k
ZSgpICE9IFNjcm9sbGJhckFsd2F5c09mZikKKyAgICBpZiAoZnJhbWVFbGVtZW50QmFzZSAmJiBm
cmFtZUVsZW1lbnRCYXNlLT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyTW9kZTo6U2Nyb2xs
YmFyQWx3YXlzT2ZmKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHNjcm9sbGJh
cnMgYXJlIGZvcmJpZGRlbiwgdXNlciBpbml0aWF0ZWQgc2Nyb2xscyBzaG91bGQgb2J2aW91c2x5
IGJlIGlnbm9yZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IGJkOWYyMmE1MTQ1Y2U5YTU0YzAyNjZmYjU4M2NhZmEwNWFlMWUxOTku
LmRhNTJjMzgzZTM4ZTE0MGFiM2U0ZWNkZjhlOTc3YzFiZWFiNjlkYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC00MDMsMTAgKzQw
MywxMCBAQCBzdGF0aWMgVGlsZWRCYWNraW5nOjpUaWxlQ292ZXJhZ2UgY29tcHV0ZVBhZ2VUaWxl
ZEJhY2tpbmdDb3ZlcmFnZShjb25zdCBSZW5kZXJMYQogICAgIGJvb2wgdXNlTWluaW1hbFRpbGVz
RHVyaW5nTGl2ZVJlc2l6ZSA9IGZyYW1lVmlldy5pbkxpdmVSZXNpemUoKTsKICAgICBpZiAoZnJh
bWVWaWV3LnNwZWN1bGF0aXZlVGlsaW5nRW5hYmxlZCgpICYmICF1c2VNaW5pbWFsVGlsZXNEdXJp
bmdMaXZlUmVzaXplKSB7CiAgICAgICAgIGJvb2wgY2xpcHNUb0V4cG9zZWRSZWN0ID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4oZnJhbWVWaWV3LnZpZXdFeHBvc2VkUmVjdCgpKTsKLSAgICAgICAgaWYgKGZy
YW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpICE9IFNjcm9sbGJhckFsd2F5c09mZiB8
fCBjbGlwc1RvRXhwb3NlZFJlY3QpCisgICAgICAgIGlmIChmcmFtZVZpZXcuaG9yaXpvbnRhbFNj
cm9sbGJhck1vZGUoKSAhPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmYgfHwgY2xp
cHNUb0V4cG9zZWRSZWN0KQogICAgICAgICAgICAgdGlsZUNvdmVyYWdlIHw9IFRpbGVkQmFja2lu
Zzo6Q292ZXJhZ2VGb3JIb3Jpem9udGFsU2Nyb2xsaW5nOwogCi0gICAgICAgIGlmIChmcmFtZVZp
ZXcudmVydGljYWxTY3JvbGxiYXJNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IGNsaXBz
VG9FeHBvc2VkUmVjdCkKKyAgICAgICAgaWYgKGZyYW1lVmlldy52ZXJ0aWNhbFNjcm9sbGJhck1v
ZGUoKSAhPSBTY3JvbGxiYXJNb2RlOjpTY3JvbGxiYXJBbHdheXNPZmYgfHwgY2xpcHNUb0V4cG9z
ZWRSZWN0KQogICAgICAgICAgICAgdGlsZUNvdmVyYWdlIHw9IFRpbGVkQmFja2luZzo6Q292ZXJh
Z2VGb3JWZXJ0aWNhbFNjcm9sbGluZzsKICAgICB9CiAgICAgcmV0dXJuIHRpbGVDb3ZlcmFnZTsK
QEAgLTIxMzgsOSArMjEzOCw5IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVPdmVy
Zmxvd0NvbnRyb2xzTGF5ZXJzKGJvb2wgbmVlZHNIb3Jpem9udGFsU2Nyb2xsCiAgICAgaWYgKGF1
dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9vd25pbmdMYXllci5wYWdlKCkuc2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKSkgewogICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBtX293
bmluZ0xheWVyLnNjcm9sbGFibGVBcmVhKCkpIHsKICAgICAgICAgICAgIGlmIChob3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCpzY3JvbGxhYmxlQXJl
YSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKnNjcm9sbGFibGVB
cmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAg
ICAgICBpZiAodmVydGljYWxTY3JvbGxiYXJMYXllckNoYW5nZWQpCi0gICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2UoKnNjcm9sbGFibGVBcmVhLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2UoKnNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxi
YXIpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDAxOGNiNjBkMWJkNThlNzBjOWFlNDU5
OTQ2YjFlNjA3ZTEzNThkYmEuLjk0NDEzOGRhNWQ5MjU4MDE4YmRmNWQ3ZmY5OGFhZDU4M2MyNWFi
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC00MDI3LDEzICs0MDI3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAgICAgIG1fb3ZlcmZs
b3dDb250cm9sc0hvc3RMYXllci0+YWRkQ2hpbGQoKm1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xs
YmFyKTsKIAogICAgICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhp
cy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZp
ZXcuZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdl
KG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250
YWxTY3JvbGxiYXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2xheWVyRm9ySG9yaXpv
bnRhbFNjcm9sbGJhcikgewogICAgICAgICBHcmFwaGljc0xheWVyOjp1bnBhcmVudEFuZENsZWFy
KG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKTsKIAogICAgICAgICBpZiAoYXV0byogc2Ny
b2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAg
ICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJE
aWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsK
KyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJh
ckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgU2Nyb2xsYmFyT3JpZW50
YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpOwogICAgIH0KIAogICAgIGlmIChyZXF1aXJlc1Zl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXIoKSkgewpAQCAtNDA0OCwxMyArNDA0OCwxMyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycygpCiAgICAg
ICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENoaWxkKCptX2xheWVyRm9y
VmVydGljYWxTY3JvbGxiYXIpOwogCiAgICAgICAgICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hh
bmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxiYXIpOworICAgICAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxh
eWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgU2Nyb2xsYmFyT3JpZW50YXRp
b246OlZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9sYXll
ckZvclZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50
QW5kQ2xlYXIobV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKTsKIAogICAgICAgICBpZiAoYXV0
byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQot
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJh
cik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3Jv
bGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFNjcm9sbGJhck9y
aWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVz
U2Nyb2xsQ29ybmVyTGF5ZXIoKSkgewpAQCAtNDE3NSw3ICs0MTc1LDcgQEAgdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmRlc3Ryb3lSb290TGF5ZXIoKQogICAgIGlmIChtX2xheWVyRm9ySG9y
aXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBHcmFwaGljc0xheWVyOjp1bnBhcmVudEFuZENs
ZWFyKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKGF1dG8qIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7
CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxi
YXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFNjcm9sbGJhck9yaWVu
dGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKGF1dG8qIGhvcml6b250
YWxTY3JvbGxiYXIgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmVydGljYWxTY3JvbGxiYXIo
KSkKICAgICAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pbnZhbGlkYXRlU2Nyb2xs
YmFyKCpob3Jpem9udGFsU2Nyb2xsYmFyLCBJbnRSZWN0KEludFBvaW50KDAsIDApLCBob3Jpem9u
dGFsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5zaXplKCkpKTsKICAgICB9CkBAIC00MTgzLDcgKzQx
ODMsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMYXllcigpCiAg
ICAgaWYgKG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBHcmFwaGljc0xh
eWVyOjp1bnBhcmVudEFuZENsZWFyKG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAg
ICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFZlcnRp
Y2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxh
YmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwg
U2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKGF1
dG8qIHZlcnRpY2FsU2Nyb2xsYmFyID0gbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnZlcnRpY2Fs
U2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaW52YWxp
ZGF0ZVNjcm9sbGJhcigqdmVydGljYWxTY3JvbGxiYXIsIEludFJlY3QoSW50UG9pbnQoMCwgMCks
IHZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5zaXplKCkpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5j
cHAKaW5kZXggN2E0ZGMyYzYyZjVlMWRhZDA3MDkwMjU2OGQxYTZjMjg4OTE1YTU3OS4uYzViMjQw
Mzg0NWQ2OTA1NGU4M2FiZTM4MWE5NzEzNTZlOTVhZjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtOTUs
OCArOTUsOCBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmNsZWFyKCkKICAgICBp
ZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkKICAgICAgICAgZWxlbWVu
dC0+c2V0U2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uKG1fc2Nyb2xsUG9zaXRpb24pOwogCi0gICAg
ZGVzdHJveVNjcm9sbGJhcihIb3Jpem9udGFsU2Nyb2xsYmFyKTsKLSAgICBkZXN0cm95U2Nyb2xs
YmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICBkZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9y
aWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICBkZXN0cm95U2Nyb2xsYmFyKFNj
cm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJhcik7CiAKICAgICBpZiAoYXV0byog
c2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSByZW5kZXJlci5wYWdlKCkuc2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPndpbGxEZXN0cm95U2Nyb2xsYWJs
ZUFyZWEoKnRoaXMpOwpAQCAtODM5LDcgKzgzOSw3IEBAIFJlZjxTY3JvbGxiYXI+IFJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
CiAKIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6ZGVzdHJveVNjcm9sbGJhcihTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8U2Nyb2xsYmFyPiYg
c2Nyb2xsYmFyID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faEJhciA6
IG1fdkJhcjsKKyAgICBSZWZQdHI8U2Nyb2xsYmFyPiYgc2Nyb2xsYmFyID0gb3JpZW50YXRpb24g
PT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIgPyBtX2hCYXIgOiBt
X3ZCYXI7CiAgICAgaWYgKCFzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtODU2LDE2
ICs4NTYsMTYgQEAgdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzZXRIYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoaGFzU2Nyb2xsYmFyKSB7Ci0gICAgICAgIG1faEJhciA9IGNyZWF0ZVNjcm9sbGJhcihIb3Jp
em9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgbV9oQmFyID0gY3JlYXRlU2Nyb2xsYmFyKFNjcm9s
bGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICNpZiBIQVZFKFJVQkJFUl9C
QU5ESU5HKQogICAgICAgICBhdXRvJiByZW5kZXJlciA9IG1fbGF5ZXIucmVuZGVyZXIoKTsKLSAg
ICAgICAgU2Nyb2xsRWxhc3RpY2l0eSBlbGFzdGljaXR5ID0gc2Nyb2xsc092ZXJmbG93KCkgJiYg
cmVuZGVyZXIuc2V0dGluZ3MoKS5ydWJiZXJCYW5kaW5nRm9yU3ViU2Nyb2xsYWJsZVJlZ2lvbnNF
bmFibGVkKCkgPyBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljIDogU2Nyb2xsRWxhc3RpY2l0eU5v
bmU7CisgICAgICAgIFNjcm9sbEVsYXN0aWNpdHkgZWxhc3RpY2l0eSA9IHNjcm9sbHNPdmVyZmxv
dygpICYmIHJlbmRlcmVyLnNldHRpbmdzKCkucnViYmVyQmFuZGluZ0ZvclN1YlNjcm9sbGFibGVS
ZWdpb25zRW5hYmxlZCgpID8gU2Nyb2xsRWxhc3RpY2l0eTo6U2Nyb2xsRWxhc3RpY2l0eUF1dG9t
YXRpYyA6IFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNpdHlOb25lOwogICAgICAgICBT
Y3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoZWxhc3RpY2l0eSk7
CiAjZW5kaWYKICAgICB9IGVsc2UgewotICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKEhvcml6b250
YWxTY3JvbGxiYXIpOworICAgICAgICBkZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0
aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQotICAg
ICAgICBTY3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xs
RWxhc3RpY2l0eU5vbmUpOworICAgICAgICBTY3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eTo6U2Nyb2xsRWxhc3RpY2l0eU5vbmUpOwog
I2VuZGlmCiAgICAgfQogCkBAIC04ODIsMTYgKzg4MiwxNiBAQCB2b2lkIFJlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWE6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xsYmFyKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzU2Nyb2xsYmFyKSB7Ci0gICAgICAgIG1fdkJh
ciA9IGNyZWF0ZVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgIG1fdkJhciA9
IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIp
OwogI2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9s
YXllci5yZW5kZXJlcigpOwotICAgICAgICBTY3JvbGxFbGFzdGljaXR5IGVsYXN0aWNpdHkgPSBz
Y3JvbGxzT3ZlcmZsb3coKSAmJiByZW5kZXJlci5zZXR0aW5ncygpLnJ1YmJlckJhbmRpbmdGb3JT
dWJTY3JvbGxhYmxlUmVnaW9uc0VuYWJsZWQoKSA/IFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWMg
OiBTY3JvbGxFbGFzdGljaXR5Tm9uZTsKKyAgICAgICAgU2Nyb2xsRWxhc3RpY2l0eSBlbGFzdGlj
aXR5ID0gc2Nyb2xsc092ZXJmbG93KCkgJiYgcmVuZGVyZXIuc2V0dGluZ3MoKS5ydWJiZXJCYW5k
aW5nRm9yU3ViU2Nyb2xsYWJsZVJlZ2lvbnNFbmFibGVkKCkgPyBTY3JvbGxFbGFzdGljaXR5OjpT
Y3JvbGxFbGFzdGljaXR5QXV0b21hdGljIDogU2Nyb2xsRWxhc3RpY2l0eTo6U2Nyb2xsRWxhc3Rp
Y2l0eU5vbmU7CiAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHkoZWxhc3RpY2l0eSk7CiAjZW5kaWYKICAgICB9IGVsc2UgewotICAgICAgICBkZXN0cm95
U2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgZGVzdHJveVNjcm9sbGJhcihT
Y3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxTY3JvbGxiYXIpOwogI2lmIEhBVkUoUlVCQkVS
X0JBTkRJTkcpCi0gICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpOworICAgICAgICBTY3JvbGxhYmxlQXJlYTo6c2V0
VmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHk6OlNjcm9sbEVsYXN0aWNp
dHlOb25lKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCmluZGV4IDYzODZmYmEyZjQ5OGI1ZDZiODAyMmRiMTg0MmI0OTVmMGU1OGEw
YmMuLjg2ZjcxOGFmNDAxNGQ2YmU5YmIzYmU3MDdmMzc0NTRiNzJkOGE3MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2
b2lkIFJlbmRlckxpc3RCb3g6OmxheW91dCgpCiAgICAgICAgIG1fdkJhci0+c2V0U3RlcHMoMSwg
c3RkOjptYXgoMSwgbnVtVmlzaWJsZUl0ZW1zKCkgLSAxKSwgaXRlbUhlaWdodCgpKTsKICAgICAg
ICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKG51bVZpc2libGVJdGVtcygpLCBudW1JdGVtcygpKTsK
ICAgICAgICAgaWYgKCFlbmFibGVkKSB7Ci0gICAgICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhv
dXRBbmltYXRpb24oVmVydGljYWxTY3JvbGxiYXIsIDApOworICAgICAgICAgICAgc2Nyb2xsVG9P
ZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9s
bGJhciwgMCk7CiAgICAgICAgICAgICBtX2luZGV4T2Zmc2V0ID0gMDsKICAgICAgICAgfQogICAg
IH0KQEAgLTYwMCw3ICs2MDAsNyBAQCBib29sIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvUmV2ZWFs
RWxlbWVudEF0TGlzdEluZGV4KGludCBpbmRleCkKICAgICBlbHNlCiAgICAgICAgIG5ld09mZnNl
dCA9IGluZGV4IC0gbnVtVmlzaWJsZUl0ZW1zKCkgKyAxOwogCi0gICAgc2Nyb2xsVG9PZmZzZXRX
aXRob3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xsYmFyLCBuZXdPZmZzZXQpOworICAgIHNjcm9s
bFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxT
Y3JvbGxiYXIsIG5ld09mZnNldCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc1NSw3ICs3
NTUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNldFNjcm9sbFRvcChpbnQgbmV3VG9wLCBjb25z
dCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmKQogICAgICAgICByZXR1cm47CiAKICAgICBz
ZXR1cFdoZWVsRXZlbnRUZXN0TW9uaXRvcigqdGhpcyk7Ci0gICAgc2Nyb2xsVG9PZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xsYmFyLCBpbmRleCk7CisgICAgc2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJh
ciwgaW5kZXgpOwogfQogCiBib29sIFJlbmRlckxpc3RCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCkBAIC05MTMsMTAgKzkx
MywxMCBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIoKQog
ICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKICAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJh
clN0eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKICAg
ICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCi0gICAgICAgIHdpZGdldCA9IFJlbmRlclNj
cm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwg
JnNlbGVjdEVsZW1lbnQoKSk7CisgICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3Jl
YXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBTY3JvbGxiYXJPcmllbnRhdGlvbjo6VmVydGljYWxT
Y3JvbGxiYXIsICZzZWxlY3RFbGVtZW50KCkpOwogICAgIGVsc2UgewotICAgICAgICB3aWRnZXQg
PSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgVmVydGljYWxTY3JvbGxi
YXIsIHRoZW1lKCkuc2Nyb2xsYmFyQ29udHJvbFNpemVGb3JQYXJ0KExpc3Rib3hQYXJ0KSk7Ci0g
ICAgICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsK
KyAgICAgICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIoKnRoaXMs
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJhciwgdGhlbWUoKS5zY3JvbGxi
YXJDb250cm9sU2l6ZUZvclBhcnQoTGlzdGJveFBhcnQpKTsKKyAgICAgICAgZGlkQWRkU2Nyb2xs
YmFyKHdpZGdldC5nZXQoKSwgU2Nyb2xsYmFyT3JpZW50YXRpb246OlZlcnRpY2FsU2Nyb2xsYmFy
KTsKICAgICAgICAgaWYgKHBhZ2UoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAg
ICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZSgpLndo
ZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKICAgICB9CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX3ZCYXItPmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCi0gICAgICAgIFNjcm9sbGFibGVBcmVh
Ojp3aWxsUmVtb3ZlU2Nyb2xsYmFyKG1fdkJhci5nZXQoKSwgVmVydGljYWxTY3JvbGxiYXIpOwor
ICAgICAgICBTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZVNjcm9sbGJhcihtX3ZCYXIuZ2V0KCks
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgbV92QmFyLT5y
ZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgbV92QmFyID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggYWIxN2FlODE3NzFkODdh
OGZhMThmYzQyN2Q0YzcwY2FkYzBkNzQ2Ni4uMmYwNjYyZmE0OTc3ZjJlNjY0YjMyMDI1M2YwNWM2
MjVhZTdkODUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
ci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUmVuZGVyU2Nyb2xsYmFyOjpSZW5kZXJTY3JvbGxiYXIo
U2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnQKICAgICAgICAg
cGFydC0+bGF5b3V0KCk7CiAgICAgICAgIHdpZHRoID0gcGFydC0+d2lkdGgoKTsKICAgICAgICAg
aGVpZ2h0ID0gcGFydC0+aGVpZ2h0KCk7Ci0gICAgfSBlbHNlIGlmICh0aGlzLT5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgfSBlbHNlIGlmICh0aGlzLT5vcmllbnRh
dGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAg
ICAgICB3aWR0aCA9IHRoaXMtPndpZHRoKCk7CiAgICAgZWxzZQogICAgICAgICBoZWlnaHQgPSB0
aGlzLT5oZWlnaHQoKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6
dXBkYXRlU2Nyb2xsYmFyUGFydHMoKQogICAgIHVwZGF0ZVNjcm9sbGJhclBhcnQoVHJhY2tCR1Bh
cnQpOwogICAgIAogICAgIC8vIFNlZSBpZiB0aGUgc2Nyb2xsYmFyJ3MgdGhpY2tuZXNzIGNoYW5n
ZWQuICBJZiBzbywgd2UgbmVlZCB0byBtYXJrIG91ciBvd25pbmcgb2JqZWN0IGFzIG5lZWRpbmcg
YSBsYXlvdXQuCi0gICAgYm9vbCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXI7ICAgIAorICAgIGJvb2wgaXNIb3Jpem9udGFsID0gb3JpZW50YXRpb24o
KSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBpbnQg
b2xkVGhpY2tuZXNzID0gaXNIb3Jpem9udGFsID8gaGVpZ2h0KCkgOiB3aWR0aCgpOwogICAgIGlu
dCBuZXdUaGlja25lc3MgPSAwOwogICAgIFJlbmRlclNjcm9sbGJhclBhcnQqIHBhcnQgPSBtX3Bh
cnRzLmdldChTY3JvbGxiYXJCR1BhcnQpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIEludFJlY3QgUmVu
ZGVyU2Nyb2xsYmFyOjpidXR0b25SZWN0KFNjcm9sbGJhclBhcnQgcGFydFR5cGUpIGNvbnN0CiAg
ICAgICAgIAogICAgIHBhcnRSZW5kZXJlci0+bGF5b3V0KCk7CiAgICAgCi0gICAgYm9vbCBpc0hv
cml6b250YWwgPSBvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CisgICAgYm9v
bCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpI
b3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIEludFNpemUgcGl4ZWxTbmFwcGVkSW50U2l6ZSA9IHNu
YXBwZWRJbnRSZWN0KHBhcnRSZW5kZXJlci0+ZnJhbWVSZWN0KCkpLnNpemUoKTsKICAgICBpZiAo
cGFydFR5cGUgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgcmV0dXJuIEludFJlY3Qo
bG9jYXRpb24oKSwgSW50U2l6ZShpc0hvcml6b250YWwgPyBwaXhlbFNuYXBwZWRJbnRTaXplLndp
ZHRoKCkgOiB3aWR0aCgpLCBpc0hvcml6b250YWwgPyBoZWlnaHQoKSA6IHBpeGVsU25hcHBlZElu
dFNpemUuaGVpZ2h0KCkpKTsKQEAgLTMwNSw3ICszMDUsNyBAQCBJbnRSZWN0IFJlbmRlclNjcm9s
bGJhcjo6dHJhY2tSZWN0KGludCBzdGFydExlbmd0aCwgaW50IGVuZExlbmd0aCkgY29uc3QKICAg
ICBpZiAocGFydCkKICAgICAgICAgcGFydC0+bGF5b3V0KCk7CiAKLSAgICBpZiAob3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKG9yaWVudGF0aW9uKCkgPT0g
U2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50
IG1hcmdpbkxlZnQgPSBwYXJ0ID8gc3RhdGljX2Nhc3Q8aW50PihwYXJ0LT5tYXJnaW5MZWZ0KCkp
IDogMDsKICAgICAgICAgaW50IG1hcmdpblJpZ2h0ID0gcGFydCA/IHN0YXRpY19jYXN0PGludD4o
cGFydC0+bWFyZ2luUmlnaHQoKSkgOiAwOwogICAgICAgICBzdGFydExlbmd0aCArPSBtYXJnaW5M
ZWZ0OwpAQCAtMzMyLDcgKzMzMiw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyOjp0cmFja1Bp
ZWNlUmVjdFdpdGhNYXJnaW5zKFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGNvbnN0CiAgICAgcGFy
dFJlbmRlcmVyLT5sYXlvdXQoKTsKICAgICAKICAgICBJbnRSZWN0IHJlY3QgPSBvbGRSZWN0Owot
ICAgIGlmIChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAo
b3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJh
cikgewogICAgICAgICByZWN0LnNldFgocmVjdC54KCkgKyBwYXJ0UmVuZGVyZXItPm1hcmdpbkxl
ZnQoKSk7CiAgICAgICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0gcGFydFJlbmRlcmVy
LT5ob3Jpem9udGFsTWFyZ2luRXh0ZW50KCkpOwogICAgIH0gZWxzZSB7CkBAIC0zNDgsNyArMzQ4
LDcgQEAgaW50IFJlbmRlclNjcm9sbGJhcjo6bWluaW11bVRodW1iTGVuZ3RoKCkgY29uc3QKICAg
ICBpZiAoIXBhcnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7ICAgIAogICAgIHBhcnRSZW5k
ZXJlci0+bGF5b3V0KCk7Ci0gICAgcmV0dXJuIG9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhciA/IHBhcnRSZW5kZXJlci0+d2lkdGgoKSA6IHBhcnRSZW5kZXJlci0+aGVpZ2h0KCk7
CisgICAgcmV0dXJuIG9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6
b250YWxTY3JvbGxiYXIgPyBwYXJ0UmVuZGVyZXItPndpZHRoKCkgOiBwYXJ0UmVuZGVyZXItPmhl
aWdodCgpOwogfQogCiBmbG9hdCBSZW5kZXJTY3JvbGxiYXI6Om9wYWNpdHkoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4
IDM5MmQ3ZWUzNDc3ZWYyMWU5NjM0Yzg4ODViNjcxNGZkNjI4NWYwYzQuLjAxMWFlMDY5YzU2ODRj
MjE3MjJhNjNmYzgyYTA5YzY5MzJmNzc0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBSZW5k
ZXJTY3JvbGxiYXJQYXJ0OjpsYXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNr
UG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKICAgICBzZXRMb2NhdGlvbihMYXlvdXRQb2ludCgpKTsg
Ly8gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgcG9zaXRpb25pbmcgb3Vyc2VsdmVzLiBXZSdyZSBqdXN0
IGRldGVybWluaW5nIG91ciBtaW5pbXVtIHdpZHRoL2hlaWdodC4KLSAgICBpZiAobV9zY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBpZiAobV9zY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxT
Y3JvbGxiYXIpCiAgICAgICAgIGxheW91dEhvcml6b250YWxQYXJ0KCk7CiAgICAgZWxzZQogICAg
ICAgICBsYXlvdXRWZXJ0aWNhbFBhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDhlZjc5MmJlNTNjZjExYzc1NjM1ZDhj
OTJjNTQ5ZTMzMzg0YTBjY2IuLmZiZTcwNjdiNTliN2IxYmI3MjY5MDU4MWNkMmU5NWM3ZWJmMmM0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0
b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBpbnQmCiAgICAgSW50
UmVjdCBzZWNvbmRCdXR0b24gPSBmb3J3YXJkQnV0dG9uUmVjdChzY3JvbGxiYXIsIEZvcndhcmRC
dXR0b25TdGFydFBhcnQpOwogICAgIEludFJlY3QgdGhpcmRCdXR0b24gPSBiYWNrQnV0dG9uUmVj
dChzY3JvbGxiYXIsIEJhY2tCdXR0b25FbmRQYXJ0KTsKICAgICBJbnRSZWN0IGZvdXJ0aEJ1dHRv
biA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwot
ICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7
CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFNjcm9sbGJhck9yaWVudGF0aW9u
OjpIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGJlZm9yZVNpemUgPSBmaXJzdEJ1dHRv
bi53aWR0aCgpICsgc2Vjb25kQnV0dG9uLndpZHRoKCk7CiAgICAgICAgIGFmdGVyU2l6ZSA9IHRo
aXJkQnV0dG9uLndpZHRoKCkgKyBmb3VydGhCdXR0b24ud2lkdGgoKTsKICAgICB9IGVsc2UgewpA
QCAtNTcsNyArNTcsNyBAQCBib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIGludCBzdGFydFNpemU7CiAgICAgaW50IGVuZFNpemU7
CiAgICAgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhzY3JvbGxiYXIsIHN0YXJ0U2l6ZSwgZW5k
U2l6ZSk7Ci0gICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRTaXplKSA8PSAoc2Nyb2xsYmFyLm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IHNjcm9sbGJhci53aWR0aCgpIDog
c2Nyb2xsYmFyLmhlaWdodCgpKTsKKyAgICByZXR1cm4gKHN0YXJ0U2l6ZSArIGVuZFNpemUpIDw9
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbFNjcm9sbGJhciA/IHNjcm9sbGJhci53aWR0aCgpIDogc2Nyb2xsYmFyLmhlaWdodCgpKTsK
IH0KIAogYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIpCkBAIC05Nyw3ICs5Nyw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNv
bnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyJiBzY3JvbGxiCiAgICAgSW50
UmVjdCBiYWNrUmVjdCA9IGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS50cmFj
a1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQsIHJlY3QpOwogICAgIEludFJlY3Qg
Zm9yd2FyZFJlY3QgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikudHJhY2tQ
aWVjZVJlY3RXaXRoTWFyZ2lucyhGb3J3YXJkVHJhY2tQYXJ0LCByZWN0KTsKICAgICBJbnRSZWN0
IHJlc3VsdCA9IHJlY3Q7Ci0gICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIpIHsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gU2Ny
b2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgcmVzdWx0
LnNldFgoYmFja1JlY3QueCgpKTsKICAgICAgICAgcmVzdWx0LnNldFdpZHRoKGZvcndhcmRSZWN0
Lm1heFgoKSAtIGJhY2tSZWN0LngoKSk7CiAgICAgfSBlbHNlIHsK
</data>
<flag name="commit-queue"
          id="467627"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>