<?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>155065</bug_id>
          
          <creation_ts>2016-03-05 12:04:09 -0800</creation_ts>
          <short_desc>Add parsing support for object-position</short_desc>
          <delta_ts>2016-03-05 15:25:31 -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>CSS</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122811</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1171234</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-05 12:04:09 -0800</bug_when>
    <thetext>First stage of supporting object-position: parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171238</commentid>
    <comment_count>1</comment_count>
      <attachid>273090</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-05 12:13:40 -0800</bug_when>
    <thetext>Created attachment 273090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171242</commentid>
    <comment_count>2</comment_count>
      <attachid>273092</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-05 12:27:05 -0800</bug_when>
    <thetext>Created attachment 273092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171243</commentid>
    <comment_count>3</comment_count>
      <attachid>273092</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-03-05 12:33:45 -0800</bug_when>
    <thetext>Comment on attachment 273092
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=273092&amp;action=review

&gt; Source/WebCore/css/CSSParser.cpp:2891
&gt; +        RefPtr&lt;CSSPrimitiveValue&gt; val1;
&gt; +        RefPtr&lt;CSSPrimitiveValue&gt; val2;

Can we use the whole word here? value1 and value2?

&gt; Source/WebCore/css/StyleBuilderConverter.h:319
&gt; +    Length length;

Please move this to below where it is initialize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171245</commentid>
    <comment_count>4</comment_count>
      <attachid>273093</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-05 12:44:03 -0800</bug_when>
    <thetext>Created attachment 273093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171246</commentid>
    <comment_count>5</comment_count>
      <attachid>273094</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-05 13:13:38 -0800</bug_when>
    <thetext>Created attachment 273094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171284</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-05 15:25:31 -0800</bug_when>
    <thetext>https://trac.webkit.org/r197617</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273090</attachid>
            <date>2016-03-05 12:13:40 -0800</date>
            <delta_ts>2016-03-05 12:27:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155065-20160305121325.patch</filename>
            <type>text/plain</type>
            <size>32023</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQyYjNjZWY0OGI4MDZk
NjA1OGI4ODg0NDNhOTBlZmQ4YTI0NGU5My4uMWM0MmU4YjBjOTQwNzVlMDYyNTEwMTM2MWIzMjMy
OWE1ZTJmN2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAzLTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYXJzaW5n
IHN1cHBvcnQgZm9yIG9iamVjdC1wb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgcGFyc2luZyBzdXBwb3J0IGZvciBvYmpl
Y3QtcG9zaXRpb24uIFRoaXMgaXMgdGhlIGZpcnN0IHByb3BlcnR5IHdpdGgKKyAgICAgICAgQ1NT
IDxwb3NpdGlvbj4gdmFsdWVzIHdoaWNoIGRvZXMgbm90IGhhdmUgZXF1aXZhbGVudCAteCBhbmQg
LXkgc2hvcnRoYW5kcywKKyAgICAgICAgc28gd2UgY2FuIHN0b3JlIGl0IGFzIGEgbmV3IExlbmd0
aFBvaW50IHR5cGUuCisgICAgICAgIAorICAgICAgICBQZXIgdGhlIENTUyBWYWx1ZXMgc3BlYywg
Ym90dG9tLSBhbmQgcmlnaHQtcmVsYXRpdmUgdmFsdWVzIGFyZSB0cmFuc2xhdGVkCisgICAgICAg
IGludG8gY2FsYygpIGV4cHJlc3Npb25zLCB3aGljaCBhcmUgZXhwb3NlZCB2aWEgY29tcHV0ZWQg
c3R5bGUuIEZvciBleGFtcGxlLAorICAgICAgICAicmlnaHQgMTBweCBib3R0b20iIGJlY29tZXMg
ImNhbGMoMTAwJSAtIDEwcHgpIDEwMCUiLiBUaGlzIGFsc28gYWxsb3dzIHRyYW5zaXRpb25zCisg
ICAgICAgIGJldHdlZW4sIHNheSwgImxlZnQgMTBweCBib3R0b20iIGFuZCAicmlnaHQgMTBweCBi
b3R0b20iLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL29iamVjdC1wb3NpdGlvbi9wYXJzaW5n
LW9iamVjdC1wb3NpdGlvbi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6aXNQYWlyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL0xlbmd0aFBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aFBvaW50OjpMZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhQb2ludDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6c2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6eCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGhQb2ludDo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6eSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6YmxlbmQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTYtMDMtMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gU3VwcG9y
dCBSZWZsZWN0LmNvbnN0cnVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1NjU4ODk3OTI3OGVm
YjFjYTU2ZWE4NGRkMmY1MTk5OWViM2E0M2U1Li5mOTc2NGVmNGJiMjRlMTVkYzg3ZTFkMWI2YWI4
MjBjNWQ2MTBlMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEwNCw2ICsyMTA0LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiAgICAgcGxh
dGZvcm0vTGFuZ3VhZ2UuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcAorICAgIHBsYXRmb3Jt
L0xlbmd0aFBvaW50LmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aFNpemUuY3BwCiAgICAgcGxhdGZv
cm0vTGlua0hhc2guY3BwCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGI5Yjc3MzM4
YTZiZjg0MWFmMDViZGJmYzM3NmZhN2ZiMGZiOTcwLi41M2FhOWYwYzc0ZDJlNmU0OGNkY2E4Nzhj
YTBkNjg4ZjE2MmJjNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDgsNiArNTA4LDggQEAKIAkJMEY2QTEyQkQxQTAwOTIz
NzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAgKi87IH07CiAJCTBGNkExMkJFMUEwMDkyMzcwMEM2REU3MiAvKiBE
ZWJ1Z1BhZ2VPdmVybGF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2QTEyQkMxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3RDA3
MzMxODg0QzU2QzAwQjRBRjg2IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQg
LyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjg3MTY2RjFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NzE2
NkQxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCAqLzsgfTsKKwkJMEY4NzE2NzAx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3Ro
UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjk3QTY1ODE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5N0E2NTcx
NTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLzsgfTsKIAkJ
MEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5
MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07CiAJCTBGQTI0RDdB
MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMw
IC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc4OTksNiArNzkwMSw4IEBACiAJCTBGNjM4M0RDMTg2MTVC
MjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkExMkJDMUEwMDkyMzcw
MEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWJ1Z1BhZ2VPdmVybGF5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVuZ3RoUG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzgxNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjg3MSw2ICsyMjg3NSw4IEBACiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAq
LywKKwkJCQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovLAor
CQkJCTBGODcxNjZFMUM4NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovLAogCQkJCTBG
RUYyMENEMUJENEEyNDEwMDEyOEU1RCAvKiBMZW5ndGhTaXplLmNwcCAqLywKIAkJCQlCQ0ZGNjQ5
MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlE
MDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yNzgzMyw2ICsyNzgzOSw3IEBACiAJ
CQkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQwMEQ3QTUxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5r
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODcxNjcwMUM4NjlEODMwMDRGRjBERSAv
KiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0QwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTBG
OUYxMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNTMyRUE0MUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMDQ0MSw2ICszMDQ0OCw3IEBACiAJCQkJMzEwNzhDQzkxODgwQUFDOTAw
ODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGREY2QkFGODEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZs
aW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY4NzE2NkYx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
QTkzMjY2MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkRFQTYyNDIxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvck5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCRDFERkMxNjdGRTI3RDAwNTFBMTFFIC8qIEpT
T3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEzMmU3Njli
M2FlODY2ZWIzNGY1OWZlMTg3ZjZkNjc0MTc3MWYyMTQuLjUzNTRmMzI4ZDA1Y2M5OWMxZGQ2NTU0
ZTdjN2JmOTY0OTM5MzA4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yOTcwLDYgKzI5NzAsMTIgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT5taW5XaWR0aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5T2JqZWN0Rml0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS0+b2JqZWN0Rml0KCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0
UG9zaXRpb246IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+b2JqZWN0UG9zaXRpb24o
KS54KCksICpzdHlsZSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueSgpLCAqc3R5bGUpKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBlMDFkZTU2NjI0NzI2NDM0M2NhODBhODk1NjY2OTBiZDUwMGYzYjZjLi5kYmYxZWMzNjI1Yzhm
ZjU4ZDVlZTYxYzU1MzQ4ZGE2NTlkYmQ5OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMjg4Niw2ICsyODg2LDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1u
V2lkdGg6IC8vIGF1dG8gfCA8bGVuZ3RoPgogICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29s
dW1uV2lkdGgoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBv
c2l0aW9uOiB7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsMTsKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwyOworICAgICAgICBwYXJzZUZpbGxQb3Np
dGlvbigqbV92YWx1ZUxpc3QsIHZhbDEsIHZhbDIpOworICAgICAgICBpZiAodmFsMSkgeworICAg
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPYmplY3RQb3NpdGlvbiwgY3JlYXRlUHJp
bWl0aXZlVmFsdWVQYWlyKHZhbDEucmVsZWFzZSgpLCB2YWwyLnJlbGVhc2UoKSksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAgICBj
YXNlIENTU1Byb3BlcnR5V2lsbENoYW5nZTogLy8gYXV0byB8IFtzY3JvbGwtcG9zaXRpb24gfCBj
b250ZW50cyB8IDxjdXN0b20taWRlbnQ+XSMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgKaW5kZXggYWI1Y2Q2MDk0ZDg4ZjYxN2E3YjY4OGNlMjIwZmFlM2I5OTc2NTViZS4uMjMz
NzU4MTVjNjY4MDk4MTNkZDUyZGY3Y2IxNGI5NTNkOGIyZGY5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBib29sIGlzTGVuZ3RoUmVwZWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfTEVOR1RIX1JFUEVBVDsgfQogI2VuZGlm
CisgICAgYm9vbCBpc1BhaXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19QQUlSOyB9CiAgICAgYm9vbCBpc1Byb3BlcnR5SUQoKSBjb25zdCB7IHJldHVybiBtX3By
aW1pdGl2ZVVuaXRUeXBlID09IENTU19QUk9QRVJUWV9JRDsgfQogICAgIGJvb2wgaXNSR0JDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JHQkNPTE9SOyB9
CiAgICAgYm9vbCBpc1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9
PSBDU1NfU0hBUEU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXgg
ZjQ3YWFlZjk4ODRkMGZhMzkzYjY5OWUxMzc1ZmY4MDg0MzBkNjM3NC4uNmY3NTVhYTM1OTRjMWZm
ZGY1MTU3NWZhYmYzMzA3NDVhYjYwZGFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4KQEAgLTI3NCw2ICsyNzQsNyBAQCBtYXgtd2lkdGggW0luaXRpYWw9aW5pdGlhbE1h
eFNpemUsIENvbnZlcnRlcj1MZW5ndGhNYXhTaXppbmddCiBtaW4taGVpZ2h0IFtJbml0aWFsPWlu
aXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogbWluLXdpZHRoIFtJbml0aWFs
PWluaXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogb2JqZWN0LWZpdAorb2Jq
ZWN0LXBvc2l0aW9uIFtDb252ZXJ0ZXI9T2JqZWN0UG9zaXRpb25dCiBvcGFjaXR5CiAvLyBIb25v
ciAtd2Via2l0LW9wYWNpdHkgYXMgYSBzeW5vbnltIGZvciBvcGFjaXR5LiBUaGlzIHdhcyB0aGUg
b25seSBzeW50YXggdGhhdCB3b3JrZWQgaW4gU2FmYXJpIDEuMSwKIC8vIGFuZCBtYXkgYmUgaW4g
dXNlIG9uIHNvbWUgd2Vic2l0ZXMgYW5kIHdpZGdldHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNjc3YTUzNzBhMTAxM2IzZWY4MTYzMGYzMmY3M2Iw
MTZiOGVkYjY1ZC4uMDBlYzRmYzRkNjc3ZWY2M2ZjZjhlYWRhNmJlYmI0NzBkZGEyNzJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNTYsNyArNTYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOb3RlIHRoYXQgd2UgYXNzdW1lIHRoZSBDU1Mg
cGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5cGVzLgogY2xhc3MgU3R5bGVCdWls
ZGVyQ29udmVydGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGgo
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVu
Z3RoKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGgg
Y29udmVydExlbmd0aE9yQXV0byhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0
aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGhTaXppbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7
CiAgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOwpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnRMaW5lV2lkdGgoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIGZsb2F0IGNvbnZlcnRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRSYWRpdXMoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aFBvaW50IGNvbnZlcnRPYmplY3RQ
b3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dERlY29y
YXRpb24gY29udmVydFRleHREZWNvcmF0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgVCBj
b252ZXJ0TnVtYmVyT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwpAQCAtMTQ3LDYg
KzE0OCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3Rh
dGljIExlbmd0aCBwYXJzZVNuYXBDb29yZGluYXRlKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogI2VuZGlmCisKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRN
aW51c0xlbmd0aChjb25zdCBMZW5ndGgmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3Np
dGlvbkNvbXBvbmVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsK
KwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgc3RhdGljIEdyaWRMZW5ndGggY3Jl
YXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSYsIFN0eWxlUmVzb2x2ZXImKTsK
ICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlJiwg
U3R5bGVSZXNvbHZlciYpOwpAQCAtMTU3LDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhU
ZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJik7CiB9OwogCi1pbmxpbmUgTGVuZ3RoIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29u
dmVyc2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnVzZVNWR1pvb21SdWxlc0Zvckxlbmd0aCgpID8K
QEAgLTI5Nyw2ICszMDIsNTQgQEAgaW5saW5lIExlbmd0aFNpemUgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKICAgICByZXR1cm4g
TGVuZ3RoU2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKIH0KIAoraW5saW5lIExlbmd0
aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQorICAg
ICAgICByZXR1cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBQZXJjZW50KTsKKyAgICAK
KyAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVu
Z3RoKQorICAgIGF1dG8gbGhzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIGF1dG8gcmhzID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKTsKKyAgICBhdXRvIG9wID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbj4oV1RGTW92ZShsaHMpLCBXVEZN
b3ZlKHJocyksIENhbGNTdWJ0cmFjdCk7CisgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VBbGwpKTsKK30KKworaW5s
aW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVu
dChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYg
dmFsdWUpCit7CisgICAgTGVuZ3RoIGxlbmd0aDsKKworICAgIGF1dG8qIGxlbmd0aFZhbHVlID0g
JnZhbHVlOworICAgIGJvb2wgcmVsYXRpdmVUb1RyYWlsaW5nRWRnZSA9IGZhbHNlOworICAgIAor
ICAgIGlmICh2YWx1ZS5pc1BhaXIoKSkgeworICAgICAgICBhdXRvJiBmaXJzdCA9ICp2YWx1ZS5n
ZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKTsKKyAgICAgICAgaWYgKGZpcnN0ID09IEVkZ2U6OlJpZ2h0
IHx8IGZpcnN0ID09IEVkZ2U6OkJvdHRvbSkKKyAgICAgICAgICAgIHJlbGF0aXZlVG9UcmFpbGlu
Z0VkZ2UgPSB0cnVlOworCisgICAgICAgIGxlbmd0aFZhbHVlID0gdmFsdWUuZ2V0UGFpclZhbHVl
KCktPnNlY29uZCgpOworICAgIH0KKworICAgIGxlbmd0aCA9IGNvbnZlcnRMZW5ndGgoc3R5bGVS
ZXNvbHZlciwgKmxlbmd0aFZhbHVlKTsKKworICAgIGlmIChyZWxhdGl2ZVRvVHJhaWxpbmdFZGdl
KQorICAgICAgICBsZW5ndGggPSBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgobGVuZ3Ro
KTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2lubGluZSBMZW5ndGhQb2ludCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbihTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCit7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIFBhaXIqIHBhaXIgPSBw
cmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUoKTsKKyAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZp
cnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6Omlu
aXRpYWxPYmplY3RQb3NpdGlvbigpOworCisgICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9z
aXRpb25Db21wb25lbnQoc3R5bGVSZXNvbHZlciwgKnBhaXItPmZpcnN0KCkpOworICAgIExlbmd0
aCBsZW5ndGhZID0gY29udmVydFBvc2l0aW9uQ29tcG9uZW50KHN0eWxlUmVzb2x2ZXIsICpwYWly
LT5zZWNvbmQoKSk7CisKKyAgICByZXR1cm4gTGVuZ3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7
Cit9CisKIGlubGluZSBUZXh0RGVjb3JhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUZXh0RGVjb3JhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IFRleHREZWNvcmF0aW9uIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTYyMzVjZmM2YzcxNDBlYTMxNWVkMzhhZTBjNWYyYWExNmYwNDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGVuZ3RoUG9p
bnQuaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZW5ndGhQb2lu
dCYgc2l6ZSkKK3sKKyAgICByZXR1cm4gdHMgPDwgc2l6ZS54KCkgPDwgIiAiIDw8IHNpemUueSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
UG9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMDQ3Y2M0NDNjYmIyN2YxMDZiOTQ4YzFjNDAxOTIxYjgyMTFi
MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9p
bnQuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMZW5ndGhQb2ludF9o
CisjZGVmaW5lIExlbmd0aFBvaW50X2gKKworI2luY2x1ZGUgIkxlbmd0aC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBMZW5ndGhQb2ludCB7CitwdWJsaWM6CisgICAgTGVuZ3Ro
UG9pbnQoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgTGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExl
bmd0aCB5KQorICAgICAgICA6IG1feChXVEZNb3ZlKHgpKQorICAgICAgICAsIG1feShXVEZNb3Zl
KHkpKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9p
bnQmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9
PSBvLm1feTsKKyAgICB9CisKKyAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsgbV94ID0gV1RGTW92
ZSh4KTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorCisg
ICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdURk1vdmUoeSk7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KKworICAgIExlbmd0aFBvaW50IGJsZW5k
KGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gTGVuZ3RoUG9pbnQobV94LmJsZW5kKGZyb20ueCgpLCBwcm9ncmVzcyks
IG1feS5ibGVuZChmcm9tLnkoKSwgcHJvZ3Jlc3MpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Ly8gRklYTUU6IGl0IHdvdWxkIGJlIG5pY2UgdG8gcGFjayB0aGUgdHdvIExlbmd0aHMgdG9nZXRo
ZXIgYmV0dGVyIHNvbWVob3cgKHRvIGF2b2lkIHBhZGRpbmcgYmV0d2VlbiB0aGVtKS4KKyAgICBM
ZW5ndGggbV94OworICAgIExlbmd0aCBtX3k7Cit9OworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBMZW5ndGhQb2ludCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBMZW5ndGhQb2ludF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA5NzhmZTYxMmVjNTliYzY5N2NmM2RhYzg2
NzNmMDE5YWUwYWZiZjgxLi5iYjFkM2ZmYTJhZWQ1NTBhZmYzOWU1ODI1ODM5ZWFiMzAxNjU0MGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTgwOSw2ICs4MDksNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFp
bnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbgogICAgICAgICB8fCBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPnVzZXJEcmFnCiAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZp
dCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQKICAgICAgICAgfHwg
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX29iamVjdEZpdAorICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9v
YmplY3RQb3NpdGlvbiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3Np
dGlvbgogICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZyAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZykKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggNDY1ZTc4MDIyMjU4MTBhNjZmOTA1NzIwMGUxMDlmZWZlZmZkZDUyNS4uYjBiN2E1MjI1
ODkzOTJiOGE3MWIyMmQ0ZDVkNDI1MzEzYmM3MDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJM
ZW5ndGguaCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlv
bnMuaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIK
ICNpbmNsdWRlICJMaW5lQ2xhbXBWYWx1ZS5oIgogI2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgi
CkBAIC0xMDMxLDggKzEwMzIsOSBAQCBwdWJsaWM6CiAgICAgVGV4dE9yaWVudGF0aW9uIHRleHRP
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRPcmllbnRhdGlvbj4o
cmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uKTsgfQogCiAgICAgT2JqZWN0Rml0
IG9iamVjdEZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9iamVjdEZpdD4ocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0KTsgfQotICAgIAotICAgIC8vIFJldHVybiB0cnVl
IGlmIGFueSB0cmFuc2Zvcm0gcmVsYXRlZCBwcm9wZXJ0eSAoY3VycmVudGx5IHRyYW5zZm9ybSwg
dHJhbnNmb3JtU3R5bGUzRCBvciBwZXJzcGVjdGl2ZSkgCisgICAgTGVuZ3RoUG9pbnQgb2JqZWN0
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQ
b3NpdGlvbjsgfQorCisgICAgLy8gUmV0dXJuIHRydWUgaWYgYW55IHRyYW5zZm9ybSByZWxhdGVk
IHByb3BlcnR5IChjdXJyZW50bHkgdHJhbnNmb3JtLCB0cmFuc2Zvcm1TdHlsZTNEIG9yIHBlcnNw
ZWN0aXZlKQogICAgIC8vIGluZGljYXRlcyB0aGF0IHdlIGFyZSB0cmFuc2Zvcm1pbmcKICAgICBi
b29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5z
Zm9ybSgpIHx8IHByZXNlcnZlczNEKCkgfHwgaGFzUGVyc3BlY3RpdmUoKTsgfQogCkBAIC0xNjAx
LDYgKzE2MDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9y
aWVudGF0aW9uKTsKIAogICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9iamVjdEZpdCBmaXQpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vYmplY3RGaXQsIGZpdCk7IH0KKyAgICB2b2lk
IHNldE9iamVjdFBvc2l0aW9uKGNvbnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29iamVjdFBvc2l0aW9uLCBwb3NpdGlvbik7IH0KIAog
ICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCBtX3J1YnlQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAKQEAgLTE4
OTEsNiArMTg5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRp
YWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246OgogICAgIE1peGVk
OyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2Jq
ZWN0Rml0RmlsbDsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRp
b24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoNTAuMGYsIFBlcmNlbnQpLCBMZW5ndGgo
NTAuMGYsIFBlcmNlbnQpKTsgfQogICAgIHN0YXRpYyBFRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNl
bGxzKCkgeyByZXR1cm4gU0hPVzsgfQogICAgIHN0YXRpYyBFTGlzdFN0eWxlUG9zaXRpb24gaW5p
dGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyByZXR1cm4gT1VUU0lERTsgfQogICAgIHN0YXRpYyBF
TGlzdFN0eWxlVHlwZSBpbml0aWFsTGlzdFN0eWxlVHlwZSgpIHsgcmV0dXJuIERpc2M7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA0YWY2YjkzMmFmODBlY2FkZDdhYTA3ZWVkNjc5ZWE3
MjQzNGJlMTE2Li4zYzgxMWI4ZDUxMWRkNmRmOGZkN2U3ZjliZWZmMjYzNGFmMGU2MzNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC02Myw2ICs2Myw3IEBAIFN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogI2VuZGlmCiAgICAgLCBtX3dp
bGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCiAgICAgLCBtX21hc2so
RmlsbExheWVyKE1hc2tGaWxsTGF5ZXIpKQorICAgICwgbV9vYmplY3RQb3NpdGlvbihSZW5kZXJT
dHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0aW9uKCkpCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAg
ICAgLCBtX3NoYXBlT3V0c2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlT3V0c2lkZSgpKQog
ICAgICwgbV9zaGFwZU1hcmdpbihSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlTWFyZ2luKCkpCkBA
IC0xNDgsNiArMTQ5LDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIG1fbWFzayhv
Lm1fbWFzaykKICAgICAsIG1fbWFza0JveEltYWdlKG8ubV9tYXNrQm94SW1hZ2UpCiAgICAgLCBt
X3BhZ2VTaXplKG8ubV9wYWdlU2l6ZSkKKyAgICAsIG1fb2JqZWN0UG9zaXRpb24oby5tX29iamVj
dFBvc2l0aW9uKQogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgICwgbV9zaGFwZU91dHNpZGUo
by5tX3NoYXBlT3V0c2lkZSkKICAgICAsIG1fc2hhcGVNYXJnaW4oby5tX3NoYXBlTWFyZ2luKQpA
QCAtMjUwLDYgKzI1Miw3IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0
b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYmIG1f
bWFzayA9PSBvLm1fbWFzawogICAgICAgICAmJiBtX21hc2tCb3hJbWFnZSA9PSBvLm1fbWFza0Jv
eEltYWdlCiAgICAgICAgICYmIG1fcGFnZVNpemUgPT0gby5tX3BhZ2VTaXplCisgICAgICAgICYm
IG1fb2JqZWN0UG9zaXRpb24gPT0gby5tX29iamVjdFBvc2l0aW9uCiAjaWYgRU5BQkxFKENTU19T
SEFQRVMpCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9zaGFwZU91dHNpZGUs
IG8ubV9zaGFwZU91dHNpZGUpCiAgICAgICAgICYmIG1fc2hhcGVNYXJnaW4gPT0gby5tX3NoYXBl
TWFyZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCAxODNjYmUzMDM3MWI4YTYxNDllY2U0MDZi
NWMyZjQ0OWI5YWNkNzZlLi41ZjhiYzdiNWE0ZGViY2NjMjk4ZDU5M2QxZmQzNWY3ZjA3OGQ3OGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDdXJz
b3JEYXRhLmgiCiAjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkZpbGxMYXllci5oIgor
I2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCiAjaW5jbHVkZSAiTGluZUNsYW1wVmFsdWUuaCIKICNp
bmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogI2luY2x1ZGUgIlNoYXBlVmFsdWUuaCIKQEAgLTE1
NCw2ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgTmluZVBpZWNlSW1hZ2UgbV9tYXNrQm94SW1hZ2U7
CiAKICAgICBMZW5ndGhTaXplIG1fcGFnZVNpemU7CisgICAgTGVuZ3RoUG9pbnQgbV9vYmplY3RQ
b3NpdGlvbjsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIFJlZlB0cjxTaGFwZVZhbHVl
PiBtX3NoYXBlT3V0c2lkZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNWI0NTQ0OTZjYjI3N2YzYWFjODU2OGIyNmIzNDI4
YjFiN2RjODkwLi5kN2I2MjdhZDA4NGQyMWJkOWEwMGQxY2NhMGM5ZGE5MmI5MDA2MDU1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBhcnNpbmcgc3VwcG9ydCBmb3Igb2JqZWN0LXBv
c2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUwNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIG9iamVjdC1wb3NpdGlvbiBwYXJzaW5nIHRlc3QuCisKKyAgICAgICAgKiBmYXN0L2Nz
cy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3QtcG9zaXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3Qt
cG9zaXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGF0dHJpYnV0ZUNo
YW5nZWQgbGlmZWN5Y2xlIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3QtcG9zaXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjY0YThjMzUyM2YzNTE5ZGRkOWY0NzY5NjQy
MzFiNDc3MTY0NzRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2Jq
ZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI4IEBACitUaGlzIHRlc3RzIGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUgaW5wdXQgdmFsdWVz
IGZvciBvYmplY3QtcG9zaXRpb24gcGFyc2UgY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgiOyIpIGlzICI1MCUgNTAlIgor
UEFTUyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IGluaGVyaXQ7IikgaXMgImluaGVyaXQiCitQQVNT
IHRlc3QoIm9iamVjdC1wb3NpdGlvbjogaW5pdGlhbDsiKSBpcyAiaW5pdGlhbCIKK1BBU1MgdGVz
dCgib2JqZWN0LXBvc2l0aW9uOiAyM3B4OyIpIGlzICIyM3B4IDUwJSIKK1BBU1MgdGVzdCgib2Jq
ZWN0LXBvc2l0aW9uOiBjZW50ZXIgMjNweDsiKSBpcyAiNTAlIDIzcHgiCitQQVNTIHRlc3QoIm9i
amVjdC1wb3NpdGlvbjogNTAlIDIzcHg7IikgaXMgIjUwJSAyM3B4IgorUEFTUyB0ZXN0KCJvYmpl
Y3QtcG9zaXRpb246IDUwJSBsZWZ0OyIpIGlzICIiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlv
bjogbGVmdCAxMHB4IHRvcCAxNXB4OyIpIGlzICJsZWZ0IDEwcHggdG9wIDE1cHgiCitQQVNTIHRl
c3QoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgMTBweCBib3R0b20gMTVweDsiKSBpcyAicmlnaHQg
MTBweCBib3R0b20gMTVweCIKK1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlv
bjogYm90dG9tIDIwJTsiKSBpcyAiNTAlIDUwJSIKK1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9i
amVjdC1wb3NpdGlvbjogcmlnaHQgMjAlOyIpIGlzICIxMDAlIDIwJSIKK1BBU1MgdGVzdENvbXB1
dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQiKSBpcyAiMTAwJSA1MCUiCitQQVNTIHRl
c3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGNlbnRlciBib3R0b20gMjAlOyIpIGlz
ICI1MCUgODAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdo
dCBib3R0b20iKSBpcyAiMTAwJSAxMDAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0
LXBvc2l0aW9uOiBsZWZ0IDEwcHggdG9wIDE1cHg7IikgaXMgIjEwcHggMTVweCIKK1BBU1MgdGVz
dENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgMTBweCBib3R0b20gMTVweDsi
KSBpcyAiY2FsYygxMDAlIC0gMTBweCkgY2FsYygxMDAlIC0gMTVweCkiCitQQVNTIHRlc3RDb21w
dXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGJvdHRvbSAyMCUgcmlnaHQgLTIwcHg7IikgaXMg
ImNhbGMoMTAwJSAtIC0yMHB4KSA4MCUiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3Qt
cG9zaXRpb246IGNhbGMoMTAwJSAtIDIwcHgpIGNhbGMoMTAwJSAtIDEwJSkiKSBpcyAiY2FsYygx
MDAlIC0gMjBweCkgOTAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9u
OiByaWdodCBjYWxjKDEwMCUgLSAyMHB4KSBib3R0b20gY2FsYygxMDAlIC0gMTAlKSIpIGlzICJj
YWxjKDEwMCUgLSAoMTAwJSAtIDIwcHgpKSAxMCUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3QtcG9zaXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NzRmZDU5NWZmN2EzZWYzNTZjZWYwNTA1ODEwMmRkYjFkYzc3MmE3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3Bh
cnNpbmctb2JqZWN0LXBvc2l0aW9uLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
Y2hlY2tzIHRoYXQgYWxsIG9mIHRoZSBpbnB1dCB2YWx1ZXMgZm9yIG9iamVjdC1wb3NpdGlvbiBw
YXJzZSBjb3JyZWN0bHkuIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QodmFsdWUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICAgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwg
dmFsdWUpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsK
KworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkaXYuc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgib2JqZWN0LXBvc2l0aW9uIik7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChkaXYpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RDb21wdXRlZFN0eWxlKHZhbHVlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCJzdHlsZSIsIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisK
KyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2
KS5vYmplY3RQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKGRpdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc2hvdWxkQmUoJ3Rlc3RDb21wdXRlZFN0eWxlKCI7IiknLCAnIjUwJSA1
MCUiJyk7CisgICAgICAgICAgICBzaG91bGRCZSgndGVzdCgib2JqZWN0LXBvc2l0aW9uOiBpbmhl
cml0OyIpJywgJyJpbmhlcml0IicpOworICAgICAgICAgICAgc2hvdWxkQmUoJ3Rlc3QoIm9iamVj
dC1wb3NpdGlvbjogaW5pdGlhbDsiKScsICciaW5pdGlhbCInKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJvYmplY3QtcG9zaXRpb246IDIz
cHg7IiknLCAnMjNweCA1MCUnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
dGVzdCgib2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgMjNweDsiKScsICc1MCUgMjNweCcpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJvYmplY3QtcG9zaXRpb246IDUw
JSAyM3B4OyIpJywgJzUwJSAyM3B4Jyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogNTAlIGxlZnQ7IiknLCAnJyk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdCgib2JqZWN0LXBvc2l0
aW9uOiBsZWZ0IDEwcHggdG9wIDE1cHg7IiknLCAnbGVmdCAxMHB4IHRvcCAxNXB4Jyk7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogcmln
aHQgMTBweCBib3R0b20gMTVweDsiKScsICdyaWdodCAxMHB4IGJvdHRvbSAxNXB4Jyk7CisKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9iamVj
dC1wb3NpdGlvbjogYm90dG9tIDIwJTsiKScsICc1MCUgNTAlJyk7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IHJp
Z2h0IDIwJTsiKScsICcxMDAlIDIwJScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdodCIpJywgJzEwMCUg
NTAlJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0
eWxlKCJvYmplY3QtcG9zaXRpb246IGNlbnRlciBib3R0b20gMjAlOyIpJywgJzUwJSA4MCUnKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9i
amVjdC1wb3NpdGlvbjogcmlnaHQgYm90dG9tIiknLCAnMTAwJSAxMDAlJyk7CisKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3Np
dGlvbjogbGVmdCAxMHB4IHRvcCAxNXB4OyIpJywgJzEwcHggMTVweCcpOworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9u
OiByaWdodCAxMHB4IGJvdHRvbSAxNXB4OyIpJywgJ2NhbGMoMTAwJSAtIDEwcHgpIGNhbGMoMTAw
JSAtIDE1cHgpJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21w
dXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGJvdHRvbSAyMCUgcmlnaHQgLTIwcHg7IiknLCAn
Y2FsYygxMDAlIC0gLTIwcHgpIDgwJScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiBjYWxjKDEwMCUgLSAyMHB4
KSBjYWxjKDEwMCUgLSAxMCUpIiknLCAnY2FsYygxMDAlIC0gMjBweCkgOTAlJyk7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9z
aXRpb246IHJpZ2h0IGNhbGMoMTAwJSAtIDIwcHgpIGJvdHRvbSBjYWxjKDEwMCUgLSAxMCUpIikn
LCAnY2FsYygxMDAlIC0gKDEwMCUgLSAyMHB4KSkgMTAlJyk7CisgICAgICAgICAgICAKKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273092</attachid>
            <date>2016-03-05 12:27:05 -0800</date>
            <delta_ts>2016-03-05 12:33:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155065-20160305122650.patch</filename>
            <type>text/plain</type>
            <size>32119</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQyYjNjZWY0OGI4MDZk
NjA1OGI4ODg0NDNhOTBlZmQ4YTI0NGU5My4uMWM0MmU4YjBjOTQwNzVlMDYyNTEwMTM2MWIzMjMy
OWE1ZTJmN2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAzLTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYXJzaW5n
IHN1cHBvcnQgZm9yIG9iamVjdC1wb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgcGFyc2luZyBzdXBwb3J0IGZvciBvYmpl
Y3QtcG9zaXRpb24uIFRoaXMgaXMgdGhlIGZpcnN0IHByb3BlcnR5IHdpdGgKKyAgICAgICAgQ1NT
IDxwb3NpdGlvbj4gdmFsdWVzIHdoaWNoIGRvZXMgbm90IGhhdmUgZXF1aXZhbGVudCAteCBhbmQg
LXkgc2hvcnRoYW5kcywKKyAgICAgICAgc28gd2UgY2FuIHN0b3JlIGl0IGFzIGEgbmV3IExlbmd0
aFBvaW50IHR5cGUuCisgICAgICAgIAorICAgICAgICBQZXIgdGhlIENTUyBWYWx1ZXMgc3BlYywg
Ym90dG9tLSBhbmQgcmlnaHQtcmVsYXRpdmUgdmFsdWVzIGFyZSB0cmFuc2xhdGVkCisgICAgICAg
IGludG8gY2FsYygpIGV4cHJlc3Npb25zLCB3aGljaCBhcmUgZXhwb3NlZCB2aWEgY29tcHV0ZWQg
c3R5bGUuIEZvciBleGFtcGxlLAorICAgICAgICAicmlnaHQgMTBweCBib3R0b20iIGJlY29tZXMg
ImNhbGMoMTAwJSAtIDEwcHgpIDEwMCUiLiBUaGlzIGFsc28gYWxsb3dzIHRyYW5zaXRpb25zCisg
ICAgICAgIGJldHdlZW4sIHNheSwgImxlZnQgMTBweCBib3R0b20iIGFuZCAicmlnaHQgMTBweCBi
b3R0b20iLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL29iamVjdC1wb3NpdGlvbi9wYXJzaW5n
LW9iamVjdC1wb3NpdGlvbi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6aXNQYWlyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL0xlbmd0aFBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aFBvaW50OjpMZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhQb2ludDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6c2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6eCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGhQb2ludDo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6eSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6YmxlbmQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTYtMDMtMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gU3VwcG9y
dCBSZWZsZWN0LmNvbnN0cnVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1NjU4ODk3OTI3OGVm
YjFjYTU2ZWE4NGRkMmY1MTk5OWViM2E0M2U1Li5mOTc2NGVmNGJiMjRlMTVkYzg3ZTFkMWI2YWI4
MjBjNWQ2MTBlMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEwNCw2ICsyMTA0LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiAgICAgcGxh
dGZvcm0vTGFuZ3VhZ2UuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcAorICAgIHBsYXRmb3Jt
L0xlbmd0aFBvaW50LmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aFNpemUuY3BwCiAgICAgcGxhdGZv
cm0vTGlua0hhc2guY3BwCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGI5Yjc3MzM4
YTZiZjg0MWFmMDViZGJmYzM3NmZhN2ZiMGZiOTcwLi41M2FhOWYwYzc0ZDJlNmU0OGNkY2E4Nzhj
YTBkNjg4ZjE2MmJjNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDgsNiArNTA4LDggQEAKIAkJMEY2QTEyQkQxQTAwOTIz
NzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAgKi87IH07CiAJCTBGNkExMkJFMUEwMDkyMzcwMEM2REU3MiAvKiBE
ZWJ1Z1BhZ2VPdmVybGF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2QTEyQkMxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3RDA3
MzMxODg0QzU2QzAwQjRBRjg2IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQg
LyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjg3MTY2RjFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NzE2
NkQxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCAqLzsgfTsKKwkJMEY4NzE2NzAx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3Ro
UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjk3QTY1ODE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5N0E2NTcx
NTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLzsgfTsKIAkJ
MEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5
MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07CiAJCTBGQTI0RDdB
MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMw
IC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc4OTksNiArNzkwMSw4IEBACiAJCTBGNjM4M0RDMTg2MTVC
MjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkExMkJDMUEwMDkyMzcw
MEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWJ1Z1BhZ2VPdmVybGF5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVuZ3RoUG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzgxNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjg3MSw2ICsyMjg3NSw4IEBACiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAq
LywKKwkJCQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovLAor
CQkJCTBGODcxNjZFMUM4NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovLAogCQkJCTBG
RUYyMENEMUJENEEyNDEwMDEyOEU1RCAvKiBMZW5ndGhTaXplLmNwcCAqLywKIAkJCQlCQ0ZGNjQ5
MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlE
MDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yNzgzMyw2ICsyNzgzOSw3IEBACiAJ
CQkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQwMEQ3QTUxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5r
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODcxNjcwMUM4NjlEODMwMDRGRjBERSAv
KiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0QwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTBG
OUYxMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNTMyRUE0MUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMDQ0MSw2ICszMDQ0OCw3IEBACiAJCQkJMzEwNzhDQzkxODgwQUFDOTAw
ODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGREY2QkFGODEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZs
aW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY4NzE2NkYx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
QTkzMjY2MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkRFQTYyNDIxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvck5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCRDFERkMxNjdGRTI3RDAwNTFBMTFFIC8qIEpT
T3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEzMmU3Njli
M2FlODY2ZWIzNGY1OWZlMTg3ZjZkNjc0MTc3MWYyMTQuLjUzNTRmMzI4ZDA1Y2M5OWMxZGQ2NTU0
ZTdjN2JmOTY0OTM5MzA4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yOTcwLDYgKzI5NzAsMTIgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT5taW5XaWR0aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5T2JqZWN0Rml0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS0+b2JqZWN0Rml0KCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0
UG9zaXRpb246IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+b2JqZWN0UG9zaXRpb24o
KS54KCksICpzdHlsZSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueSgpLCAqc3R5bGUpKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBlMDFkZTU2NjI0NzI2NDM0M2NhODBhODk1NjY2OTBiZDUwMGYzYjZjLi5kYmYxZWMzNjI1Yzhm
ZjU4ZDVlZTYxYzU1MzQ4ZGE2NTlkYmQ5OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMjg4Niw2ICsyODg2LDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1u
V2lkdGg6IC8vIGF1dG8gfCA8bGVuZ3RoPgogICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29s
dW1uV2lkdGgoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBv
c2l0aW9uOiB7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsMTsKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwyOworICAgICAgICBwYXJzZUZpbGxQb3Np
dGlvbigqbV92YWx1ZUxpc3QsIHZhbDEsIHZhbDIpOworICAgICAgICBpZiAodmFsMSkgeworICAg
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPYmplY3RQb3NpdGlvbiwgY3JlYXRlUHJp
bWl0aXZlVmFsdWVQYWlyKHZhbDEucmVsZWFzZSgpLCB2YWwyLnJlbGVhc2UoKSksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAgICBj
YXNlIENTU1Byb3BlcnR5V2lsbENoYW5nZTogLy8gYXV0byB8IFtzY3JvbGwtcG9zaXRpb24gfCBj
b250ZW50cyB8IDxjdXN0b20taWRlbnQ+XSMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgKaW5kZXggYWI1Y2Q2MDk0ZDg4ZjYxN2E3YjY4OGNlMjIwZmFlM2I5OTc2NTViZS4uMjMz
NzU4MTVjNjY4MDk4MTNkZDUyZGY3Y2IxNGI5NTNkOGIyZGY5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBib29sIGlzTGVuZ3RoUmVwZWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfTEVOR1RIX1JFUEVBVDsgfQogI2VuZGlm
CisgICAgYm9vbCBpc1BhaXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19QQUlSOyB9CiAgICAgYm9vbCBpc1Byb3BlcnR5SUQoKSBjb25zdCB7IHJldHVybiBtX3By
aW1pdGl2ZVVuaXRUeXBlID09IENTU19QUk9QRVJUWV9JRDsgfQogICAgIGJvb2wgaXNSR0JDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JHQkNPTE9SOyB9
CiAgICAgYm9vbCBpc1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9
PSBDU1NfU0hBUEU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXgg
ZjQ3YWFlZjk4ODRkMGZhMzkzYjY5OWUxMzc1ZmY4MDg0MzBkNjM3NC4uNmY3NTVhYTM1OTRjMWZm
ZGY1MTU3NWZhYmYzMzA3NDVhYjYwZGFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4KQEAgLTI3NCw2ICsyNzQsNyBAQCBtYXgtd2lkdGggW0luaXRpYWw9aW5pdGlhbE1h
eFNpemUsIENvbnZlcnRlcj1MZW5ndGhNYXhTaXppbmddCiBtaW4taGVpZ2h0IFtJbml0aWFsPWlu
aXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogbWluLXdpZHRoIFtJbml0aWFs
PWluaXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogb2JqZWN0LWZpdAorb2Jq
ZWN0LXBvc2l0aW9uIFtDb252ZXJ0ZXI9T2JqZWN0UG9zaXRpb25dCiBvcGFjaXR5CiAvLyBIb25v
ciAtd2Via2l0LW9wYWNpdHkgYXMgYSBzeW5vbnltIGZvciBvcGFjaXR5LiBUaGlzIHdhcyB0aGUg
b25seSBzeW50YXggdGhhdCB3b3JrZWQgaW4gU2FmYXJpIDEuMSwKIC8vIGFuZCBtYXkgYmUgaW4g
dXNlIG9uIHNvbWUgd2Vic2l0ZXMgYW5kIHdpZGdldHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNjc3YTUzNzBhMTAxM2IzZWY4MTYzMGYzMmY3M2Iw
MTZiOGVkYjY1ZC4uMDBlYzRmYzRkNjc3ZWY2M2ZjZjhlYWRhNmJlYmI0NzBkZGEyNzJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNTYsNyArNTYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOb3RlIHRoYXQgd2UgYXNzdW1lIHRoZSBDU1Mg
cGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5cGVzLgogY2xhc3MgU3R5bGVCdWls
ZGVyQ29udmVydGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGgo
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVu
Z3RoKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGgg
Y29udmVydExlbmd0aE9yQXV0byhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0
aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGhTaXppbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7
CiAgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOwpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnRMaW5lV2lkdGgoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIGZsb2F0IGNvbnZlcnRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRSYWRpdXMoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aFBvaW50IGNvbnZlcnRPYmplY3RQ
b3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dERlY29y
YXRpb24gY29udmVydFRleHREZWNvcmF0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgVCBj
b252ZXJ0TnVtYmVyT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwpAQCAtMTQ3LDYg
KzE0OCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3Rh
dGljIExlbmd0aCBwYXJzZVNuYXBDb29yZGluYXRlKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogI2VuZGlmCisKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRN
aW51c0xlbmd0aChjb25zdCBMZW5ndGgmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3Np
dGlvbkNvbXBvbmVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsK
KwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgc3RhdGljIEdyaWRMZW5ndGggY3Jl
YXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSYsIFN0eWxlUmVzb2x2ZXImKTsK
ICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlJiwg
U3R5bGVSZXNvbHZlciYpOwpAQCAtMTU3LDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhU
ZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJik7CiB9OwogCi1pbmxpbmUgTGVuZ3RoIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29u
dmVyc2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnVzZVNWR1pvb21SdWxlc0Zvckxlbmd0aCgpID8K
QEAgLTI5Nyw2ICszMDIsNTQgQEAgaW5saW5lIExlbmd0aFNpemUgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKICAgICByZXR1cm4g
TGVuZ3RoU2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKIH0KIAoraW5saW5lIExlbmd0
aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQorICAg
ICAgICByZXR1cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBQZXJjZW50KTsKKyAgICAK
KyAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVu
Z3RoKQorICAgIGF1dG8gbGhzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIGF1dG8gcmhzID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKTsKKyAgICBhdXRvIG9wID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbj4oV1RGTW92ZShsaHMpLCBXVEZN
b3ZlKHJocyksIENhbGNTdWJ0cmFjdCk7CisgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VBbGwpKTsKK30KKworaW5s
aW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVu
dChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYg
dmFsdWUpCit7CisgICAgTGVuZ3RoIGxlbmd0aDsKKworICAgIGF1dG8qIGxlbmd0aFZhbHVlID0g
JnZhbHVlOworICAgIGJvb2wgcmVsYXRpdmVUb1RyYWlsaW5nRWRnZSA9IGZhbHNlOworICAgIAor
ICAgIGlmICh2YWx1ZS5pc1BhaXIoKSkgeworICAgICAgICBhdXRvJiBmaXJzdCA9ICp2YWx1ZS5n
ZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKTsKKyAgICAgICAgaWYgKGZpcnN0ID09IEVkZ2U6OlJpZ2h0
IHx8IGZpcnN0ID09IEVkZ2U6OkJvdHRvbSkKKyAgICAgICAgICAgIHJlbGF0aXZlVG9UcmFpbGlu
Z0VkZ2UgPSB0cnVlOworCisgICAgICAgIGxlbmd0aFZhbHVlID0gdmFsdWUuZ2V0UGFpclZhbHVl
KCktPnNlY29uZCgpOworICAgIH0KKworICAgIGxlbmd0aCA9IGNvbnZlcnRMZW5ndGgoc3R5bGVS
ZXNvbHZlciwgKmxlbmd0aFZhbHVlKTsKKworICAgIGlmIChyZWxhdGl2ZVRvVHJhaWxpbmdFZGdl
KQorICAgICAgICBsZW5ndGggPSBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgobGVuZ3Ro
KTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2lubGluZSBMZW5ndGhQb2ludCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbihTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCit7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIFBhaXIqIHBhaXIgPSBw
cmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUoKTsKKyAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZp
cnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6Omlu
aXRpYWxPYmplY3RQb3NpdGlvbigpOworCisgICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9z
aXRpb25Db21wb25lbnQoc3R5bGVSZXNvbHZlciwgKnBhaXItPmZpcnN0KCkpOworICAgIExlbmd0
aCBsZW5ndGhZID0gY29udmVydFBvc2l0aW9uQ29tcG9uZW50KHN0eWxlUmVzb2x2ZXIsICpwYWly
LT5zZWNvbmQoKSk7CisKKyAgICByZXR1cm4gTGVuZ3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7
Cit9CisKIGlubGluZSBUZXh0RGVjb3JhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUZXh0RGVjb3JhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IFRleHREZWNvcmF0aW9uIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTYyMzVjZmM2YzcxNDBlYTMxNWVkMzhhZTBjNWYyYWExNmYwNDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGVuZ3RoUG9p
bnQuaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZW5ndGhQb2lu
dCYgc2l6ZSkKK3sKKyAgICByZXR1cm4gdHMgPDwgc2l6ZS54KCkgPDwgIiAiIDw8IHNpemUueSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
UG9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMWIxYTNmNDdjOGI5OGFjNDc2N2Y1NzE4MmM3MTJlYTQwY2Vi
NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9p
bnQuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMZW5ndGhQb2ludF9o
CisjZGVmaW5lIExlbmd0aFBvaW50X2gKKworI2luY2x1ZGUgIkxlbmd0aC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBMZW5ndGhQb2ludCB7CitwdWJsaWM6CisgICAgTGVuZ3Ro
UG9pbnQoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgTGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExl
bmd0aCB5KQorICAgICAgICA6IG1feChXVEZNb3ZlKHgpKQorICAgICAgICAsIG1feShXVEZNb3Zl
KHkpKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9p
bnQmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9
PSBvLm1feTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQm
IG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsgbV94ID0gV1RGTW92ZSh4KTsgfQorICAgIGNvbnN0
IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorCisgICAgdm9pZCBzZXRZKExlbmd0
aCB5KSB7IG1feSA9IFdURk1vdmUoeSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7
IHJldHVybiBtX3k7IH0KKworICAgIExlbmd0aFBvaW50IGJsZW5kKGNvbnN0IExlbmd0aFBvaW50
JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gTGVu
Z3RoUG9pbnQobV94LmJsZW5kKGZyb20ueCgpLCBwcm9ncmVzcyksIG1feS5ibGVuZChmcm9tLnko
KSwgcHJvZ3Jlc3MpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gRklYTUU6IGl0IHdvdWxk
IGJlIG5pY2UgdG8gcGFjayB0aGUgdHdvIExlbmd0aHMgdG9nZXRoZXIgYmV0dGVyIHNvbWVob3cg
KHRvIGF2b2lkIHBhZGRpbmcgYmV0d2VlbiB0aGVtKS4KKyAgICBMZW5ndGggbV94OworICAgIExl
bmd0aCBtX3k7Cit9OworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBMZW5ndGhQb2ludCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBM
ZW5ndGhQb2ludF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAppbmRleCA5NzhmZTYxMmVjNTliYzY5N2NmM2RhYzg2NzNmMDE5YWUwYWZiZjgxLi5i
YjFkM2ZmYTJhZWQ1NTBhZmYzOWU1ODI1ODM5ZWFiMzAxNjU0MGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTgwOSw2ICs4MDksNyBA
QCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5
bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbgogICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dXNlckRyYWcgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCiAgICAg
ICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQKICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fb2JqZWN0Rml0ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZp
dAorICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbiAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbgogICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+bV9pbWFnZVJlbmRlcmluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNDY1ZTc4MDIyMjU4
MTBhNjZmOTA1NzIwMGUxMDlmZWZlZmZkZDUyNS4uYjBiN2E1MjI1ODkzOTJiOGE3MWIyMmQ0ZDVk
NDI1MzEzYmM3MDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRl
ICJMZW5ndGhCb3guaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJM
ZW5ndGhQb2ludC5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJMaW5lQ2xh
bXBWYWx1ZS5oIgogI2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiCkBAIC0xMDMxLDggKzEwMzIs
OSBAQCBwdWJsaWM6CiAgICAgVGV4dE9yaWVudGF0aW9uIHRleHRPcmllbnRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRPcmllbnRhdGlvbj4ocmFyZUluaGVyaXRlZERhdGEt
Pm1fdGV4dE9yaWVudGF0aW9uKTsgfQogCiAgICAgT2JqZWN0Rml0IG9iamVjdEZpdCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9iamVjdEZpdD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
b2JqZWN0Rml0KTsgfQotICAgIAotICAgIC8vIFJldHVybiB0cnVlIGlmIGFueSB0cmFuc2Zvcm0g
cmVsYXRlZCBwcm9wZXJ0eSAoY3VycmVudGx5IHRyYW5zZm9ybSwgdHJhbnNmb3JtU3R5bGUzRCBv
ciBwZXJzcGVjdGl2ZSkgCisgICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbjsgfQorCisgICAg
Ly8gUmV0dXJuIHRydWUgaWYgYW55IHRyYW5zZm9ybSByZWxhdGVkIHByb3BlcnR5IChjdXJyZW50
bHkgdHJhbnNmb3JtLCB0cmFuc2Zvcm1TdHlsZTNEIG9yIHBlcnNwZWN0aXZlKQogICAgIC8vIGlu
ZGljYXRlcyB0aGF0IHdlIGFyZSB0cmFuc2Zvcm1pbmcKICAgICBib29sIGhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybSgpIHx8IHByZXNlcnZl
czNEKCkgfHwgaGFzUGVyc3BlY3RpdmUoKTsgfQogCkBAIC0xNjAxLDYgKzE2MDMsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uKTsKIAogICAg
IHZvaWQgc2V0T2JqZWN0Rml0KE9iamVjdEZpdCBmaXQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9vYmplY3RGaXQsIGZpdCk7IH0KKyAgICB2b2lkIHNldE9iamVjdFBvc2l0aW9u
KGNvbnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX29iamVjdFBvc2l0aW9uLCBwb3NpdGlvbik7IH0KIAogICAgIHZvaWQgc2V0UnVieVBv
c2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBtX3J1YnlQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAKQEAgLTE4OTEsNiArMTg5NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24o
KSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246OgogICAgIE1peGVkOyB9CiAgICAgc3RhdGljIE9i
amVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0RmlsbDsgfQorICAg
IHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5n
dGhQb2ludChMZW5ndGgoNTAuMGYsIFBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpKTsg
fQogICAgIHN0YXRpYyBFRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNlbGxzKCkgeyByZXR1cm4gU0hP
VzsgfQogICAgIHN0YXRpYyBFTGlzdFN0eWxlUG9zaXRpb24gaW5pdGlhbExpc3RTdHlsZVBvc2l0
aW9uKCkgeyByZXR1cm4gT1VUU0lERTsgfQogICAgIHN0YXRpYyBFTGlzdFN0eWxlVHlwZSBpbml0
aWFsTGlzdFN0eWxlVHlwZSgpIHsgcmV0dXJuIERpc2M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNw
cAppbmRleCA0YWY2YjkzMmFmODBlY2FkZDdhYTA3ZWVkNjc5ZWE3MjQzNGJlMTE2Li4zYzgxMWI4
ZDUxMWRkNmRmOGZkN2U3ZjliZWZmMjYzNGFmMGU2MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwCkBAIC02Myw2ICs2Myw3IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEoKQogI2VuZGlmCiAgICAgLCBtX3dpbGxDaGFuZ2UoUmVuZGVyU3R5
bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCiAgICAgLCBtX21hc2soRmlsbExheWVyKE1hc2tGaWxs
TGF5ZXIpKQorICAgICwgbV9vYmplY3RQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVj
dFBvc2l0aW9uKCkpCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgLCBtX3NoYXBlT3V0c2lk
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlT3V0c2lkZSgpKQogICAgICwgbV9zaGFwZU1hcmdp
bihSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlTWFyZ2luKCkpCkBAIC0xNDgsNiArMTQ5LDcgQEAg
aW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIG1fbWFzayhvLm1fbWFzaykKICAgICAsIG1f
bWFza0JveEltYWdlKG8ubV9tYXNrQm94SW1hZ2UpCiAgICAgLCBtX3BhZ2VTaXplKG8ubV9wYWdl
U2l6ZSkKKyAgICAsIG1fb2JqZWN0UG9zaXRpb24oby5tX29iamVjdFBvc2l0aW9uKQogI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQogICAgICwgbV9zaGFwZU91dHNpZGUoby5tX3NoYXBlT3V0c2lkZSkK
ICAgICAsIG1fc2hhcGVNYXJnaW4oby5tX3NoYXBlTWFyZ2luKQpAQCAtMjUwLDYgKzI1Miw3IEBA
IGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYmIG1fbWFzayA9PSBvLm1fbWFzawog
ICAgICAgICAmJiBtX21hc2tCb3hJbWFnZSA9PSBvLm1fbWFza0JveEltYWdlCiAgICAgICAgICYm
IG1fcGFnZVNpemUgPT0gby5tX3BhZ2VTaXplCisgICAgICAgICYmIG1fb2JqZWN0UG9zaXRpb24g
PT0gby5tX29iamVjdFBvc2l0aW9uCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgICAgICYm
IGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9zaGFwZU91dHNpZGUsIG8ubV9zaGFwZU91dHNpZGUp
CiAgICAgICAgICYmIG1fc2hhcGVNYXJnaW4gPT0gby5tX3NoYXBlTWFyZ2luCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEuaAppbmRleCAxODNjYmUzMDM3MWI4YTYxNDllY2U0MDZiNWMyZjQ0OWI5YWNkNzZlLi41
ZjhiYzdiNWE0ZGViY2NjMjk4ZDU5M2QxZmQzNWY3ZjA3OGQ3OGZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDdXJzb3JEYXRhLmgiCiAjaW5jbHVk
ZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkZpbGxMYXllci5oIgorI2luY2x1ZGUgIkxlbmd0aFBv
aW50LmgiCiAjaW5jbHVkZSAiTGluZUNsYW1wVmFsdWUuaCIKICNpbmNsdWRlICJOaW5lUGllY2VJ
bWFnZS5oIgogI2luY2x1ZGUgIlNoYXBlVmFsdWUuaCIKQEAgLTE1NCw2ICsxNTUsNyBAQCBwdWJs
aWM6CiAgICAgTmluZVBpZWNlSW1hZ2UgbV9tYXNrQm94SW1hZ2U7CiAKICAgICBMZW5ndGhTaXpl
IG1fcGFnZVNpemU7CisgICAgTGVuZ3RoUG9pbnQgbV9vYmplY3RQb3NpdGlvbjsKIAogI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQogICAgIFJlZlB0cjxTaGFwZVZhbHVlPiBtX3NoYXBlT3V0c2lkZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNWI0NTQ0OTZjYjI3N2YzYWFjODU2OGIyNmIzNDI4YjFiN2RjODkwLi5kN2I2Mjdh
ZDA4NGQyMWJkOWEwMGQxY2NhMGM5ZGE5MmI5MDA2MDU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDMtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHBhcnNpbmcgc3VwcG9ydCBmb3Igb2JqZWN0LXBvc2l0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwNjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIG9iamVjdC1wb3Np
dGlvbiBwYXJzaW5nIHRlc3QuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24v
cGFyc2luZy1vYmplY3QtcG9zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3QtcG9zaXRpb24uaHRtbDogQWRk
ZWQuCisKIDIwMTYtMDMtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGF0dHJpYnV0ZUNoYW5nZWQgbGlmZWN5Y2xlIGNh
bGxiYWNrCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24v
cGFyc2luZy1vYmplY3QtcG9zaXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNjY0YThjMzUyM2YzNTE5ZGRkOWY0NzY5NjQyMzFiNDc3MTY0NzRjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNp
bmctb2JqZWN0LXBvc2l0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitUaGlzIHRl
c3RzIGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUgaW5wdXQgdmFsdWVzIGZvciBvYmplY3QtcG9zaXRp
b24gcGFyc2UgY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyB0ZXN0Q29tcHV0ZWRTdHlsZSgiOyIpIGlzICI1MCUgNTAlIgorUEFTUyB0ZXN0KCJvYmplY3Qt
cG9zaXRpb246IGluaGVyaXQ7IikgaXMgImluaGVyaXQiCitQQVNTIHRlc3QoIm9iamVjdC1wb3Np
dGlvbjogaW5pdGlhbDsiKSBpcyAiaW5pdGlhbCIKK1BBU1MgdGVzdCgib2JqZWN0LXBvc2l0aW9u
OiAyM3B4OyIpIGlzICIyM3B4IDUwJSIKK1BBU1MgdGVzdCgib2JqZWN0LXBvc2l0aW9uOiBjZW50
ZXIgMjNweDsiKSBpcyAiNTAlIDIzcHgiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlvbjogNTAl
IDIzcHg7IikgaXMgIjUwJSAyM3B4IgorUEFTUyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IDUwJSBs
ZWZ0OyIpIGlzICIiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlvbjogbGVmdCAxMHB4IHRvcCAx
NXB4OyIpIGlzICJsZWZ0IDEwcHggdG9wIDE1cHgiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlv
bjogcmlnaHQgMTBweCBib3R0b20gMTVweDsiKSBpcyAicmlnaHQgMTBweCBib3R0b20gMTVweCIK
K1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogYm90dG9tIDIwJTsiKSBp
cyAiNTAlIDUwJSIKK1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmln
aHQgMjAlOyIpIGlzICIxMDAlIDIwJSIKK1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1w
b3NpdGlvbjogcmlnaHQiKSBpcyAiMTAwJSA1MCUiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJv
YmplY3QtcG9zaXRpb246IGNlbnRlciBib3R0b20gMjAlOyIpIGlzICI1MCUgODAlIgorUEFTUyB0
ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdodCBib3R0b20iKSBpcyAiMTAw
JSAxMDAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiBsZWZ0IDEw
cHggdG9wIDE1cHg7IikgaXMgIjEwcHggMTVweCIKK1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9i
amVjdC1wb3NpdGlvbjogcmlnaHQgMTBweCBib3R0b20gMTVweDsiKSBpcyAiY2FsYygxMDAlIC0g
MTBweCkgY2FsYygxMDAlIC0gMTVweCkiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3Qt
cG9zaXRpb246IGJvdHRvbSAyMCUgcmlnaHQgLTIwcHg7IikgaXMgImNhbGMoMTAwJSAtIC0yMHB4
KSA4MCUiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGNhbGMoMTAw
JSAtIDIwcHgpIGNhbGMoMTAwJSAtIDEwJSkiKSBpcyAiY2FsYygxMDAlIC0gMjBweCkgOTAlIgor
UEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdodCBjYWxjKDEwMCUg
LSAyMHB4KSBib3R0b20gY2FsYygxMDAlIC0gMTAlKSIpIGlzICJjYWxjKDEwMCUgLSAoMTAwJSAt
IDIwcHgpKSAxMCUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9u
L3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9vYmpl
Y3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3QtcG9zaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzRm
ZDU5NWZmN2EzZWYzNTZjZWYwNTA1ODEwMmRkYjFkYzc3MmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0
aW9uLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgY2hlY2tzIHRoYXQgYWxsIG9m
IHRoZSBpbnB1dCB2YWx1ZXMgZm9yIG9iamVjdC1wb3NpdGlvbiBwYXJzZSBjb3JyZWN0bHkuIik7
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QodmFsdWUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICAgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgICAgICAgICAgICAg
IHZhciByZXN1bHQgPSBkaXYuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgib2JqZWN0LXBvc2l0aW9u
Iik7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHRlc3RDb21wdXRlZFN0eWxlKHZhbHVlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCJzdHlsZSIsIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICAgICAgICAgICAgICB2
YXIgcmVzdWx0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2KS5vYmplY3RQb3NpdGlvbjsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hv
dWxkQmUoJ3Rlc3RDb21wdXRlZFN0eWxlKCI7IiknLCAnIjUwJSA1MCUiJyk7CisgICAgICAgICAg
ICBzaG91bGRCZSgndGVzdCgib2JqZWN0LXBvc2l0aW9uOiBpbmhlcml0OyIpJywgJyJpbmhlcml0
IicpOworICAgICAgICAgICAgc2hvdWxkQmUoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogaW5pdGlh
bDsiKScsICciaW5pdGlhbCInKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd0ZXN0KCJvYmplY3QtcG9zaXRpb246IDIzcHg7IiknLCAnMjNweCA1MCUn
KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdCgib2JqZWN0LXBvc2l0
aW9uOiBjZW50ZXIgMjNweDsiKScsICc1MCUgMjNweCcpOworICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd0ZXN0KCJvYmplY3QtcG9zaXRpb246IDUwJSAyM3B4OyIpJywgJzUwJSAy
M3B4Jyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoIm9iamVjdC1w
b3NpdGlvbjogNTAlIGxlZnQ7IiknLCAnJyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygndGVzdCgib2JqZWN0LXBvc2l0aW9uOiBsZWZ0IDEwcHggdG9w
IDE1cHg7IiknLCAnbGVmdCAxMHB4IHRvcCAxNXB4Jyk7CisgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgMTBweCBib3R0b20gMTVw
eDsiKScsICdyaWdodCAxMHB4IGJvdHRvbSAxNXB4Jyk7CisKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogYm90dG9t
IDIwJTsiKScsICc1MCUgNTAlJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IHJpZ2h0IDIwJTsiKScsICcxMDAl
IDIwJScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRT
dHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdodCIpJywgJzEwMCUgNTAlJyk7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRp
b246IGNlbnRlciBib3R0b20gMjAlOyIpJywgJzUwJSA4MCUnKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmln
aHQgYm90dG9tIiknLCAnMTAwJSAxMDAlJyk7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogbGVmdCAxMHB4IHRv
cCAxNXB4OyIpJywgJzEwcHggMTVweCcpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdodCAxMHB4IGJvdHRv
bSAxNXB4OyIpJywgJ2NhbGMoMTAwJSAtIDEwcHgpIGNhbGMoMTAwJSAtIDE1cHgpJyk7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3Qt
cG9zaXRpb246IGJvdHRvbSAyMCUgcmlnaHQgLTIwcHg7IiknLCAnY2FsYygxMDAlIC0gLTIwcHgp
IDgwJScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRT
dHlsZSgib2JqZWN0LXBvc2l0aW9uOiBjYWxjKDEwMCUgLSAyMHB4KSBjYWxjKDEwMCUgLSAxMCUp
IiknLCAnY2FsYygxMDAlIC0gMjBweCkgOTAlJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IHJpZ2h0IGNhbGMo
MTAwJSAtIDIwcHgpIGJvdHRvbSBjYWxjKDEwMCUgLSAxMCUpIiknLCAnY2FsYygxMDAlIC0gKDEw
MCUgLSAyMHB4KSkgMTAlJyk7CisgICAgICAgICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="297701"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273093</attachid>
            <date>2016-03-05 12:44:03 -0800</date>
            <delta_ts>2016-03-05 13:15:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155065-20160305124348.patch</filename>
            <type>text/plain</type>
            <size>32339</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQyYjNjZWY0OGI4MDZk
NjA1OGI4ODg0NDNhOTBlZmQ4YTI0NGU5My4uMWM0MmU4YjBjOTQwNzVlMDYyNTEwMTM2MWIzMjMy
OWE1ZTJmN2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAzLTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYXJzaW5n
IHN1cHBvcnQgZm9yIG9iamVjdC1wb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgcGFyc2luZyBzdXBwb3J0IGZvciBvYmpl
Y3QtcG9zaXRpb24uIFRoaXMgaXMgdGhlIGZpcnN0IHByb3BlcnR5IHdpdGgKKyAgICAgICAgQ1NT
IDxwb3NpdGlvbj4gdmFsdWVzIHdoaWNoIGRvZXMgbm90IGhhdmUgZXF1aXZhbGVudCAteCBhbmQg
LXkgc2hvcnRoYW5kcywKKyAgICAgICAgc28gd2UgY2FuIHN0b3JlIGl0IGFzIGEgbmV3IExlbmd0
aFBvaW50IHR5cGUuCisgICAgICAgIAorICAgICAgICBQZXIgdGhlIENTUyBWYWx1ZXMgc3BlYywg
Ym90dG9tLSBhbmQgcmlnaHQtcmVsYXRpdmUgdmFsdWVzIGFyZSB0cmFuc2xhdGVkCisgICAgICAg
IGludG8gY2FsYygpIGV4cHJlc3Npb25zLCB3aGljaCBhcmUgZXhwb3NlZCB2aWEgY29tcHV0ZWQg
c3R5bGUuIEZvciBleGFtcGxlLAorICAgICAgICAicmlnaHQgMTBweCBib3R0b20iIGJlY29tZXMg
ImNhbGMoMTAwJSAtIDEwcHgpIDEwMCUiLiBUaGlzIGFsc28gYWxsb3dzIHRyYW5zaXRpb25zCisg
ICAgICAgIGJldHdlZW4sIHNheSwgImxlZnQgMTBweCBib3R0b20iIGFuZCAicmlnaHQgMTBweCBi
b3R0b20iLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL29iamVjdC1wb3NpdGlvbi9wYXJzaW5n
LW9iamVjdC1wb3NpdGlvbi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6aXNQYWlyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL0xlbmd0aFBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aFBvaW50OjpMZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhQb2ludDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6c2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6eCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGhQb2ludDo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6eSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6YmxlbmQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTYtMDMtMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gU3VwcG9y
dCBSZWZsZWN0LmNvbnN0cnVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1NjU4ODk3OTI3OGVm
YjFjYTU2ZWE4NGRkMmY1MTk5OWViM2E0M2U1Li5mOTc2NGVmNGJiMjRlMTVkYzg3ZTFkMWI2YWI4
MjBjNWQ2MTBlMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEwNCw2ICsyMTA0LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiAgICAgcGxh
dGZvcm0vTGFuZ3VhZ2UuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcAorICAgIHBsYXRmb3Jt
L0xlbmd0aFBvaW50LmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aFNpemUuY3BwCiAgICAgcGxhdGZv
cm0vTGlua0hhc2guY3BwCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGI5Yjc3MzM4
YTZiZjg0MWFmMDViZGJmYzM3NmZhN2ZiMGZiOTcwLi41M2FhOWYwYzc0ZDJlNmU0OGNkY2E4Nzhj
YTBkNjg4ZjE2MmJjNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDgsNiArNTA4LDggQEAKIAkJMEY2QTEyQkQxQTAwOTIz
NzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAgKi87IH07CiAJCTBGNkExMkJFMUEwMDkyMzcwMEM2REU3MiAvKiBE
ZWJ1Z1BhZ2VPdmVybGF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2QTEyQkMxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3RDA3
MzMxODg0QzU2QzAwQjRBRjg2IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQg
LyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjg3MTY2RjFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NzE2
NkQxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCAqLzsgfTsKKwkJMEY4NzE2NzAx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3Ro
UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjk3QTY1ODE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5N0E2NTcx
NTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLzsgfTsKIAkJ
MEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5
MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07CiAJCTBGQTI0RDdB
MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMw
IC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc4OTksNiArNzkwMSw4IEBACiAJCTBGNjM4M0RDMTg2MTVC
MjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkExMkJDMUEwMDkyMzcw
MEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWJ1Z1BhZ2VPdmVybGF5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVuZ3RoUG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzgxNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjg3MSw2ICsyMjg3NSw4IEBACiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAq
LywKKwkJCQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovLAor
CQkJCTBGODcxNjZFMUM4NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovLAogCQkJCTBG
RUYyMENEMUJENEEyNDEwMDEyOEU1RCAvKiBMZW5ndGhTaXplLmNwcCAqLywKIAkJCQlCQ0ZGNjQ5
MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlE
MDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yNzgzMyw2ICsyNzgzOSw3IEBACiAJ
CQkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQwMEQ3QTUxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5r
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODcxNjcwMUM4NjlEODMwMDRGRjBERSAv
KiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0QwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTBG
OUYxMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNTMyRUE0MUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMDQ0MSw2ICszMDQ0OCw3IEBACiAJCQkJMzEwNzhDQzkxODgwQUFDOTAw
ODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGREY2QkFGODEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZs
aW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY4NzE2NkYx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
QTkzMjY2MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkRFQTYyNDIxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvck5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCRDFERkMxNjdGRTI3RDAwNTFBMTFFIC8qIEpT
T3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEzMmU3Njli
M2FlODY2ZWIzNGY1OWZlMTg3ZjZkNjc0MTc3MWYyMTQuLjUzNTRmMzI4ZDA1Y2M5OWMxZGQ2NTU0
ZTdjN2JmOTY0OTM5MzA4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yOTcwLDYgKzI5NzAsMTIgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT5taW5XaWR0aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5T2JqZWN0Rml0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS0+b2JqZWN0Rml0KCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0
UG9zaXRpb246IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+b2JqZWN0UG9zaXRpb24o
KS54KCksICpzdHlsZSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueSgpLCAqc3R5bGUpKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBlMDFkZTU2NjI0NzI2NDM0M2NhODBhODk1NjY2OTBiZDUwMGYzYjZjLi5kYmYxZWMzNjI1Yzhm
ZjU4ZDVlZTYxYzU1MzQ4ZGE2NTlkYmQ5OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMjg4Niw2ICsyODg2LDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1u
V2lkdGg6IC8vIGF1dG8gfCA8bGVuZ3RoPgogICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29s
dW1uV2lkdGgoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBv
c2l0aW9uOiB7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsMTsKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwyOworICAgICAgICBwYXJzZUZpbGxQb3Np
dGlvbigqbV92YWx1ZUxpc3QsIHZhbDEsIHZhbDIpOworICAgICAgICBpZiAodmFsMSkgeworICAg
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPYmplY3RQb3NpdGlvbiwgY3JlYXRlUHJp
bWl0aXZlVmFsdWVQYWlyKHZhbDEucmVsZWFzZSgpLCB2YWwyLnJlbGVhc2UoKSksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAgICBj
YXNlIENTU1Byb3BlcnR5V2lsbENoYW5nZTogLy8gYXV0byB8IFtzY3JvbGwtcG9zaXRpb24gfCBj
b250ZW50cyB8IDxjdXN0b20taWRlbnQ+XSMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgKaW5kZXggYWI1Y2Q2MDk0ZDg4ZjYxN2E3YjY4OGNlMjIwZmFlM2I5OTc2NTViZS4uMjMz
NzU4MTVjNjY4MDk4MTNkZDUyZGY3Y2IxNGI5NTNkOGIyZGY5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBib29sIGlzTGVuZ3RoUmVwZWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfTEVOR1RIX1JFUEVBVDsgfQogI2VuZGlm
CisgICAgYm9vbCBpc1BhaXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19QQUlSOyB9CiAgICAgYm9vbCBpc1Byb3BlcnR5SUQoKSBjb25zdCB7IHJldHVybiBtX3By
aW1pdGl2ZVVuaXRUeXBlID09IENTU19QUk9QRVJUWV9JRDsgfQogICAgIGJvb2wgaXNSR0JDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JHQkNPTE9SOyB9
CiAgICAgYm9vbCBpc1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9
PSBDU1NfU0hBUEU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXgg
ZjQ3YWFlZjk4ODRkMGZhMzkzYjY5OWUxMzc1ZmY4MDg0MzBkNjM3NC4uNmY3NTVhYTM1OTRjMWZm
ZGY1MTU3NWZhYmYzMzA3NDVhYjYwZGFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4KQEAgLTI3NCw2ICsyNzQsNyBAQCBtYXgtd2lkdGggW0luaXRpYWw9aW5pdGlhbE1h
eFNpemUsIENvbnZlcnRlcj1MZW5ndGhNYXhTaXppbmddCiBtaW4taGVpZ2h0IFtJbml0aWFsPWlu
aXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogbWluLXdpZHRoIFtJbml0aWFs
PWluaXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogb2JqZWN0LWZpdAorb2Jq
ZWN0LXBvc2l0aW9uIFtDb252ZXJ0ZXI9T2JqZWN0UG9zaXRpb25dCiBvcGFjaXR5CiAvLyBIb25v
ciAtd2Via2l0LW9wYWNpdHkgYXMgYSBzeW5vbnltIGZvciBvcGFjaXR5LiBUaGlzIHdhcyB0aGUg
b25seSBzeW50YXggdGhhdCB3b3JrZWQgaW4gU2FmYXJpIDEuMSwKIC8vIGFuZCBtYXkgYmUgaW4g
dXNlIG9uIHNvbWUgd2Vic2l0ZXMgYW5kIHdpZGdldHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNjc3YTUzNzBhMTAxM2IzZWY4MTYzMGYzMmY3M2Iw
MTZiOGVkYjY1ZC4uMjc5YmU2MWMxOTc4N2JlOGQwMWI4YWNiNThiZDRmNjkzNWNmMDJiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKQEAgLTU2LDcgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gTm90ZSB0aGF0IHdlIGFzc3VtZSB0aGUgQ1NTIHBhcnNlciBv
bmx5IGFsbG93cyB2YWxpZCBDU1NWYWx1ZSB0eXBlcy4KIGNsYXNzIFN0eWxlQnVpbGRlckNvbnZl
cnRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aChTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRM
ZW5ndGhPckF1dG8oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIExlbmd0
aCBjb252ZXJ0TGVuZ3RoU2l6aW5nKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBMZW5ndGggY29udmVydExlbmd0aE1heFNpemluZyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFs
dWUmKTsKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgVCBjb252ZXJ0TGluZVdpZHRoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
ICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0U3BhY2luZyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKICAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0T2JqZWN0UG9zaXRpb24o
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uIGNv
bnZlcnRUZXh0RGVjb3JhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydE51bWJlcihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydE51
bWJlck9yQXV0byhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKQEAgLTE0Nyw2ICsxNDksMTAg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHN0YXRpYyBMZW5n
dGggcGFyc2VTbmFwQ29vcmRpbmF0ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICNlbmRpZgorCisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5n
dGgoY29uc3QgTGVuZ3RoJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21w
b25lbnQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CisKICNpZiBF
TkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0ZUdyaWRU
cmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUmLCBTdHlsZVJlc29sdmVyJik7CiAgICAgc3Rh
dGljIEdyaWRUcmFja1NpemUgY3JlYXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1ZSYsIFN0eWxlUmVz
b2x2ZXImKTsKQEAgLTE1Nyw3ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhIGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21G
YWN0b3IoU3R5bGVSZXNvbHZlciYpOwogfTsKIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRMZW5ndGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25E
YXRhID0gc3R5bGVSZXNvbHZlci51c2VTVkdab29tUnVsZXNGb3JMZW5ndGgoKSA/CkBAIC0yOTcs
NiArMzAzLDU0IEBAIGlubGluZSBMZW5ndGhTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFJhZGl1cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sCiAgICAgcmV0dXJuIExlbmd0aFNp
emUocmFkaXVzV2lkdGgsIHJhZGl1c0hlaWdodCk7CiB9CiAKK2lubGluZSBMZW5ndGggU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKKyAgICAgICAgcmV0
dXJuIExlbmd0aCgxMDAgLSBsZW5ndGgudmFsdWUoKSwgUGVyY2VudCk7CisgICAgCisgICAgLy8g
VHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKKyAg
ICBhdXRvIGxocyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0
aCgxMDAsIFBlcmNlbnQpKTsKKyAgICBhdXRvIHJocyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KGxlbmd0aCk7CisgICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24+KFdURk1vdmUobGhzKSwgV1RGTW92ZShyaHMp
LCBDYWxjU3VidHJhY3QpOworICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3Jl
YXRlKFdURk1vdmUob3ApLCBDYWxjdWxhdGlvblJhbmdlQWxsKSk7Cit9CisKK2lubGluZSBMZW5n
dGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQor
eworICAgIExlbmd0aCBsZW5ndGg7CisKKyAgICBhdXRvKiBsZW5ndGhWYWx1ZSA9ICZ2YWx1ZTsK
KyAgICBib29sIHJlbGF0aXZlVG9UcmFpbGluZ0VkZ2UgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAo
dmFsdWUuaXNQYWlyKCkpIHsKKyAgICAgICAgYXV0byYgZmlyc3QgPSAqdmFsdWUuZ2V0UGFpclZh
bHVlKCktPmZpcnN0KCk7CisgICAgICAgIGlmIChmaXJzdCA9PSBFZGdlOjpSaWdodCB8fCBmaXJz
dCA9PSBFZGdlOjpCb3R0b20pCisgICAgICAgICAgICByZWxhdGl2ZVRvVHJhaWxpbmdFZGdlID0g
dHJ1ZTsKKworICAgICAgICBsZW5ndGhWYWx1ZSA9IHZhbHVlLmdldFBhaXJWYWx1ZSgpLT5zZWNv
bmQoKTsKKyAgICB9CisKKyAgICBsZW5ndGggPSBjb252ZXJ0TGVuZ3RoKHN0eWxlUmVzb2x2ZXIs
ICpsZW5ndGhWYWx1ZSk7CisKKyAgICBpZiAocmVsYXRpdmVUb1RyYWlsaW5nRWRnZSkKKyAgICAg
ICAgbGVuZ3RoID0gY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGxlbmd0aCk7CisKKyAg
ICByZXR1cm4gbGVuZ3RoOworfQorCitpbmxpbmUgTGVuZ3RoUG9pbnQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKKyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZl
VmFsdWUuZ2V0UGFpclZhbHVlKCk7CisgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8
ICFwYWlyLT5zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjppbml0aWFsT2Jq
ZWN0UG9zaXRpb24oKTsKKworICAgIExlbmd0aCBsZW5ndGhYID0gY29udmVydFBvc2l0aW9uQ29t
cG9uZW50KHN0eWxlUmVzb2x2ZXIsICpwYWlyLT5maXJzdCgpKTsKKyAgICBMZW5ndGggbGVuZ3Ro
WSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChzdHlsZVJlc29sdmVyLCAqcGFpci0+c2Vjb25k
KCkpOworCisgICAgcmV0dXJuIExlbmd0aFBvaW50KGxlbmd0aFgsIGxlbmd0aFkpOworfQorCiBp
bmxpbmUgVGV4dERlY29yYXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERl
Y29yYXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBUZXh0RGVj
b3JhdGlvbiByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU2MjM1Y2Zj
NmM3MTQwZWEzMTVlZDM4YWUwYzVmMmFhMTZmMDQ5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCisK
KyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGVuZ3RoUG9pbnQmIHNpemUp
Cit7CisgICAgcmV0dXJuIHRzIDw8IHNpemUueCgpIDw8ICIgIiA8PCBzaXplLnkoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjFiMWEzZjQ3YzhiOThhYzQ3NjdmNTcxODJjNzEyZWE0MGNlYjRlNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTGVuZ3RoUG9pbnRfaAorI2RlZmlu
ZSBMZW5ndGhQb2ludF9oCisKKyNpbmNsdWRlICJMZW5ndGguaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgTGVuZ3RoUG9pbnQgeworcHVibGljOgorICAgIExlbmd0aFBvaW50KCkK
KyAgICB7CisgICAgfQorICAgIAorICAgIExlbmd0aFBvaW50KExlbmd0aCB4LCBMZW5ndGggeSkK
KyAgICAgICAgOiBtX3goV1RGTW92ZSh4KSkKKyAgICAgICAgLCBtX3koV1RGTW92ZSh5KSkKKyAg
ICB7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFBvaW50JiBvKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feCA9PSBvLm1feCAmJiBtX3kgPT0gby5tX3k7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aFBvaW50JiBvKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRYKExlbmd0aCB4KSB7IG1feCA9IFdURk1vdmUoeCk7IH0KKyAgICBjb25zdCBMZW5ndGgm
IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KKworICAgIHZvaWQgc2V0WShMZW5ndGggeSkgeyBt
X3kgPSBXVEZNb3ZlKHkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4g
bV95OyB9CisKKyAgICBMZW5ndGhQb2ludCBibGVuZChjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwg
ZG91YmxlIHByb2dyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIExlbmd0aFBvaW50
KG1feC5ibGVuZChmcm9tLngoKSwgcHJvZ3Jlc3MpLCBtX3kuYmxlbmQoZnJvbS55KCksIHByb2dy
ZXNzKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNl
IHRvIHBhY2sgdGhlIHR3byBMZW5ndGhzIHRvZ2V0aGVyIGJldHRlciBzb21laG93ICh0byBhdm9p
ZCBwYWRkaW5nIGJldHdlZW4gdGhlbSkuCisgICAgTGVuZ3RoIG1feDsKKyAgICBMZW5ndGggbV95
OworfTsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTGVuZ3Ro
UG9pbnQmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTGVuZ3RoUG9p
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
aW5kZXggOTc4ZmU2MTJlYzU5YmM2OTdjZjNkYWM4NjczZjAxOWFlMGFmYmY4MS4uYmIxZDNmZmEy
YWVkNTUwYWZmMzllNTgyNTgzOWVhYjMwMTY1NDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC04MDksNiArODA5LDcgQEAgYm9vbCBS
ZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhl
ciwgdW5zaWduZWQmIGNoYW4KICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJE
cmFnICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZwogICAgICAgICB8fCBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYm9yZGVyRml0CiAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29i
amVjdEZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RGaXQKKyAgICAg
ICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0UG9zaXRpb24gIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0UG9zaXRpb24KICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPm1faW1hZ2VSZW5kZXJpbmcgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1f
aW1hZ2VSZW5kZXJpbmcpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDQ2NWU3ODAyMjI1ODEwYTY2Zjkw
NTcyMDBlMTA5ZmVmZWZmZGQ1MjUuLmIwYjdhNTIyNTg5MzkyYjhhNzFiMjJkNGQ1ZDQyNTMxM2Jj
NzA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiTGVuZ3Ro
Qm94LmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiTGVuZ3RoUG9p
bnQuaCIKICNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiTGluZUNsYW1wVmFsdWUu
aCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgpAQCAtMTAzMSw4ICsxMDMyLDkgQEAgcHVi
bGljOgogICAgIFRleHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxUZXh0T3JpZW50YXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRP
cmllbnRhdGlvbik7IH0KIAogICAgIE9iamVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxPYmplY3RGaXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZp
dCk7IH0KLSAgICAKLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnkgdHJhbnNmb3JtIHJlbGF0ZWQg
cHJvcGVydHkgKGN1cnJlbnRseSB0cmFuc2Zvcm0sIHRyYW5zZm9ybVN0eWxlM0Qgb3IgcGVyc3Bl
Y3RpdmUpIAorICAgIExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0UG9zaXRpb247IH0KKworICAgIC8vIFJldHVy
biB0cnVlIGlmIGFueSB0cmFuc2Zvcm0gcmVsYXRlZCBwcm9wZXJ0eSAoY3VycmVudGx5IHRyYW5z
Zm9ybSwgdHJhbnNmb3JtU3R5bGUzRCBvciBwZXJzcGVjdGl2ZSkKICAgICAvLyBpbmRpY2F0ZXMg
dGhhdCB3ZSBhcmUgdHJhbnNmb3JtaW5nCiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJv
cGVydHkoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm0oKSB8fCBwcmVzZXJ2ZXMzRCgpIHx8
IGhhc1BlcnNwZWN0aXZlKCk7IH0KIApAQCAtMTYwMSw2ICsxNjAzLDcgQEAgcHVibGljOgogICAg
IGJvb2wgc2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmllbnRhdGlvbik7CiAKICAgICB2b2lkIHNl
dE9iamVjdEZpdChPYmplY3RGaXQgZml0KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fb2JqZWN0Rml0LCBmaXQpOyB9CisgICAgdm9pZCBzZXRPYmplY3RQb3NpdGlvbihjb25zdCBM
ZW5ndGhQb2ludCYgcG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9v
YmplY3RQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAKICAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihS
dWJ5UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9ydWJ5
UG9zaXRpb24sIHBvc2l0aW9uKTsgfQogCkBAIC0xODkxLDYgKzE4OTQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFRleHRPcmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1
cm4gVGV4dE9yaWVudGF0aW9uOjoKICAgICBNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQg
aW5pdGlhbE9iamVjdEZpdCgpIHsgcmV0dXJuIE9iamVjdEZpdEZpbGw7IH0KKyAgICBzdGF0aWMg
TGVuZ3RoUG9pbnQgaW5pdGlhbE9iamVjdFBvc2l0aW9uKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQo
TGVuZ3RoKDUwLjBmLCBQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSk7IH0KICAgICBz
dGF0aWMgRUVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIFNIT1c7IH0KICAg
ICBzdGF0aWMgRUxpc3RTdHlsZVBvc2l0aW9uIGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpIHsg
cmV0dXJuIE9VVFNJREU7IH0KICAgICBzdGF0aWMgRUxpc3RTdHlsZVR5cGUgaW5pdGlhbExpc3RT
dHlsZVR5cGUoKSB7IHJldHVybiBEaXNjOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXgg
NGFmNmI5MzJhZjgwZWNhZGQ3YWEwN2VlZDY3OWVhNzI0MzRiZTExNi4uM2M4MTFiOGQ1MTFkZDZk
ZjhmZDdlN2Y5YmVmZjI2MzRhZjBlNjMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAt
NjMsNiArNjMsNyBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhKCkKICNlbmRpZgogICAgICwgbV93aWxsQ2hhbmdlKFJlbmRlclN0eWxlOjppbml0
aWFsV2lsbENoYW5nZSgpKQogICAgICwgbV9tYXNrKEZpbGxMYXllcihNYXNrRmlsbExheWVyKSkK
KyAgICAsIG1fb2JqZWN0UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlv
bigpKQogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgICwgbV9zaGFwZU91dHNpZGUoUmVuZGVy
U3R5bGU6OmluaXRpYWxTaGFwZU91dHNpZGUoKSkKICAgICAsIG1fc2hhcGVNYXJnaW4oUmVuZGVy
U3R5bGU6OmluaXRpYWxTaGFwZU1hcmdpbigpKQpAQCAtMTQ4LDYgKzE0OSw3IEBAIGlubGluZSBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0
IFN0eWxlUmFyZU5vbkluCiAgICAgLCBtX21hc2soby5tX21hc2spCiAgICAgLCBtX21hc2tCb3hJ
bWFnZShvLm1fbWFza0JveEltYWdlKQogICAgICwgbV9wYWdlU2l6ZShvLm1fcGFnZVNpemUpCisg
ICAgLCBtX29iamVjdFBvc2l0aW9uKG8ubV9vYmplY3RQb3NpdGlvbikKICNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKICAgICAsIG1fc2hhcGVPdXRzaWRlKG8ubV9zaGFwZU91dHNpZGUpCiAgICAgLCBt
X3NoYXBlTWFyZ2luKG8ubV9zaGFwZU1hcmdpbikKQEAgLTI1MCw2ICsyNTIsNyBAQCBib29sIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX21hc2sgPT0gby5tX21hc2sKICAgICAgICAg
JiYgbV9tYXNrQm94SW1hZ2UgPT0gby5tX21hc2tCb3hJbWFnZQogICAgICAgICAmJiBtX3BhZ2VT
aXplID09IG8ubV9wYWdlU2l6ZQorICAgICAgICAmJiBtX29iamVjdFBvc2l0aW9uID09IG8ubV9v
YmplY3RQb3NpdGlvbgogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgICAgICAmJiBhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKG1fc2hhcGVPdXRzaWRlLCBvLm1fc2hhcGVPdXRzaWRlKQogICAgICAg
ICAmJiBtX3NoYXBlTWFyZ2luID09IG8ubV9zaGFwZU1hcmdpbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgK
aW5kZXggMTgzY2JlMzAzNzFiOGE2MTQ5ZWNlNDA2YjVjMmY0NDliOWFjZDc2ZS4uNWY4YmM3YjVh
NGRlYmNjYzI5OGQ1OTNkMWZkMzVmN2YwNzhkNzhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ3Vyc29yRGF0YS5oIgogI2luY2x1ZGUgIkRhdGFS
ZWYuaCIKICNpbmNsdWRlICJGaWxsTGF5ZXIuaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgog
I2luY2x1ZGUgIkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIK
ICNpbmNsdWRlICJTaGFwZVZhbHVlLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgcHVibGljOgogICAg
IE5pbmVQaWVjZUltYWdlIG1fbWFza0JveEltYWdlOwogCiAgICAgTGVuZ3RoU2l6ZSBtX3BhZ2VT
aXplOworICAgIExlbmd0aFBvaW50IG1fb2JqZWN0UG9zaXRpb247CiAKICNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKICAgICBSZWZQdHI8U2hhcGVWYWx1ZT4gbV9zaGFwZU91dHNpZGU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDViNDU0NDk2Y2IyNzdmM2FhYzg1NjhiMjZiMzQyOGIxYjdkYzg5MC4uZDdiNjI3YWQwODRkMjFi
ZDlhMDBkMWNjYTBjOWRhOTJiOTAwNjA1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAz
LTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBwYXJzaW5nIHN1cHBvcnQgZm9yIG9iamVjdC1wb3NpdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBvYmplY3QtcG9zaXRpb24gcGFy
c2luZyB0ZXN0LgorCisgICAgICAgICogZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmct
b2JqZWN0LXBvc2l0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mv
b2JqZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLmh0bWw6IEFkZGVkLgorCiAy
MDE2LTAzLTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBiYXNpYyBzdXBwb3J0IGZvciBhdHRyaWJ1dGVDaGFuZ2VkIGxpZmVjeWNsZSBjYWxsYmFjawpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmct
b2JqZWN0LXBvc2l0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL29iamVj
dC1wb3NpdGlvbi9wYXJzaW5nLW9iamVjdC1wb3NpdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTY2NGE4YzM1MjNmMzUxOWRkZDlmNDc2OTY0MjMxYjQ3NzE2NDc0YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL29iamVjdC1wb3NpdGlvbi9wYXJzaW5nLW9iamVj
dC1wb3NpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGhpcyB0ZXN0cyBjaGVj
a3MgdGhhdCBhbGwgb2YgdGhlIGlucHV0IHZhbHVlcyBmb3Igb2JqZWN0LXBvc2l0aW9uIHBhcnNl
IGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdENv
bXB1dGVkU3R5bGUoIjsiKSBpcyAiNTAlIDUwJSIKK1BBU1MgdGVzdCgib2JqZWN0LXBvc2l0aW9u
OiBpbmhlcml0OyIpIGlzICJpbmhlcml0IgorUEFTUyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IGlu
aXRpYWw7IikgaXMgImluaXRpYWwiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlvbjogMjNweDsi
KSBpcyAiMjNweCA1MCUiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlvbjogY2VudGVyIDIzcHg7
IikgaXMgIjUwJSAyM3B4IgorUEFTUyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IDUwJSAyM3B4OyIp
IGlzICI1MCUgMjNweCIKK1BBU1MgdGVzdCgib2JqZWN0LXBvc2l0aW9uOiA1MCUgbGVmdDsiKSBp
cyAiIgorUEFTUyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IGxlZnQgMTBweCB0b3AgMTVweDsiKSBp
cyAibGVmdCAxMHB4IHRvcCAxNXB4IgorUEFTUyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IHJpZ2h0
IDEwcHggYm90dG9tIDE1cHg7IikgaXMgInJpZ2h0IDEwcHggYm90dG9tIDE1cHgiCitQQVNTIHRl
c3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGJvdHRvbSAyMCU7IikgaXMgIjUwJSA1
MCUiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IHJpZ2h0IDIwJTsi
KSBpcyAiMTAwJSAyMCUiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246
IHJpZ2h0IikgaXMgIjEwMCUgNTAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBv
c2l0aW9uOiBjZW50ZXIgYm90dG9tIDIwJTsiKSBpcyAiNTAlIDgwJSIKK1BBU1MgdGVzdENvbXB1
dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgYm90dG9tIikgaXMgIjEwMCUgMTAwJSIK
K1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogbGVmdCAxMHB4IHRvcCAx
NXB4OyIpIGlzICIxMHB4IDE1cHgiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9z
aXRpb246IHJpZ2h0IDEwcHggYm90dG9tIDE1cHg7IikgaXMgImNhbGMoMTAwJSAtIDEwcHgpIGNh
bGMoMTAwJSAtIDE1cHgpIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9u
OiBib3R0b20gMjAlIHJpZ2h0IC0yMHB4OyIpIGlzICJjYWxjKDEwMCUgLSAtMjBweCkgODAlIgor
UEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiBjYWxjKDEwMCUgLSAyMHB4
KSBjYWxjKDEwMCUgLSAxMCUpIikgaXMgImNhbGMoMTAwJSAtIDIwcHgpIDkwJSIKK1BBU1MgdGVz
dENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgY2FsYygxMDAlIC0gMjBweCkg
Ym90dG9tIGNhbGMoMTAwJSAtIDEwJSkiKSBpcyAiY2FsYygxMDAlIC0gKDEwMCUgLSAyMHB4KSkg
MTAlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL29iamVjdC1wb3NpdGlvbi9wYXJzaW5n
LW9iamVjdC1wb3NpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0
aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc0ZmQ1OTVmZjdh
M2VmMzU2Y2VmMDUwNTgxMDJkZGIxZGM3NzJhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL29iamVjdC1wb3NpdGlvbi9wYXJzaW5nLW9iamVjdC1wb3NpdGlvbi5odG1s
CkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUgaW5w
dXQgdmFsdWVzIGZvciBvYmplY3QtcG9zaXRpb24gcGFyc2UgY29ycmVjdGx5LiIpOworCisgICAg
ICAgICAgICBmdW5jdGlvbiB0ZXN0KHZhbHVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAg
ICAgICBkaXYuc2V0QXR0cmlidXRlKCJzdHlsZSIsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICAgICAgICAgICAgICB2YXIgcmVz
dWx0ID0gZGl2LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIm9iamVjdC1wb3NpdGlvbiIpOworICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biB0ZXN0Q29tcHV0ZWRTdHlsZSh2YWx1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICAg
ICAgZGl2LnNldEF0dHJpYnV0ZSgic3R5bGUiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdikub2JqZWN0UG9zaXRpb247CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlKCd0
ZXN0Q29tcHV0ZWRTdHlsZSgiOyIpJywgJyI1MCUgNTAlIicpOworICAgICAgICAgICAgc2hvdWxk
QmUoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogaW5oZXJpdDsiKScsICciaW5oZXJpdCInKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCd0ZXN0KCJvYmplY3QtcG9zaXRpb246IGluaXRpYWw7IiknLCAn
ImluaXRpYWwiJyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygndGVzdCgib2JqZWN0LXBvc2l0aW9uOiAyM3B4OyIpJywgJzIzcHggNTAlJyk7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogY2Vu
dGVyIDIzcHg7IiknLCAnNTAlIDIzcHgnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygndGVzdCgib2JqZWN0LXBvc2l0aW9uOiA1MCUgMjNweDsiKScsICc1MCUgMjNweCcpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJvYmplY3QtcG9zaXRpb246
IDUwJSBsZWZ0OyIpJywgJycpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogbGVmdCAxMHB4IHRvcCAxNXB4OyIp
JywgJ2xlZnQgMTBweCB0b3AgMTVweCcpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd0ZXN0KCJvYmplY3QtcG9zaXRpb246IHJpZ2h0IDEwcHggYm90dG9tIDE1cHg7IiknLCAn
cmlnaHQgMTBweCBib3R0b20gMTVweCcpOworCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGJvdHRvbSAyMCU7Iikn
LCAnNTAlIDUwJScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29t
cHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdodCAyMCU7IiknLCAnMTAwJSAyMCUnKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9i
amVjdC1wb3NpdGlvbjogcmlnaHQiKScsICcxMDAlIDUwJScpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiBjZW50
ZXIgYm90dG9tIDIwJTsiKScsICc1MCUgODAlJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IHJpZ2h0IGJvdHRv
bSIpJywgJzEwMCUgMTAwJScpOworCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGxlZnQgMTBweCB0b3AgMTVweDsi
KScsICcxMHB4IDE1cHgnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVz
dENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgMTBweCBib3R0b20gMTVweDsi
KScsICdjYWxjKDEwMCUgLSAxMHB4KSBjYWxjKDEwMCUgLSAxNXB4KScpOworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9u
OiBib3R0b20gMjAlIHJpZ2h0IC0yMHB4OyIpJywgJ2NhbGMoMTAwJSAtIC0yMHB4KSA4MCUnKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUoIm9i
amVjdC1wb3NpdGlvbjogY2FsYygxMDAlIC0gMjBweCkgY2FsYygxMDAlIC0gMTAlKSIpJywgJ2Nh
bGMoMTAwJSAtIDIwcHgpIDkwJScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdodCBjYWxjKDEwMCUgLSAy
MHB4KSBib3R0b20gY2FsYygxMDAlIC0gMTAlKSIpJywgJ2NhbGMoMTAwJSAtICgxMDAlIC0gMjBw
eCkpIDEwJScpOworICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273094</attachid>
            <date>2016-03-05 13:13:38 -0800</date>
            <delta_ts>2016-03-05 15:25:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155065-20160305131320.patch</filename>
            <type>text/plain</type>
            <size>32149</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQyYjNjZWY0OGI4MDZk
NjA1OGI4ODg0NDNhOTBlZmQ4YTI0NGU5My4uMWM0MmU4YjBjOTQwNzVlMDYyNTEwMTM2MWIzMjMy
OWE1ZTJmN2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAzLTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYXJzaW5n
IHN1cHBvcnQgZm9yIG9iamVjdC1wb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgcGFyc2luZyBzdXBwb3J0IGZvciBvYmpl
Y3QtcG9zaXRpb24uIFRoaXMgaXMgdGhlIGZpcnN0IHByb3BlcnR5IHdpdGgKKyAgICAgICAgQ1NT
IDxwb3NpdGlvbj4gdmFsdWVzIHdoaWNoIGRvZXMgbm90IGhhdmUgZXF1aXZhbGVudCAteCBhbmQg
LXkgc2hvcnRoYW5kcywKKyAgICAgICAgc28gd2UgY2FuIHN0b3JlIGl0IGFzIGEgbmV3IExlbmd0
aFBvaW50IHR5cGUuCisgICAgICAgIAorICAgICAgICBQZXIgdGhlIENTUyBWYWx1ZXMgc3BlYywg
Ym90dG9tLSBhbmQgcmlnaHQtcmVsYXRpdmUgdmFsdWVzIGFyZSB0cmFuc2xhdGVkCisgICAgICAg
IGludG8gY2FsYygpIGV4cHJlc3Npb25zLCB3aGljaCBhcmUgZXhwb3NlZCB2aWEgY29tcHV0ZWQg
c3R5bGUuIEZvciBleGFtcGxlLAorICAgICAgICAicmlnaHQgMTBweCBib3R0b20iIGJlY29tZXMg
ImNhbGMoMTAwJSAtIDEwcHgpIDEwMCUiLiBUaGlzIGFsc28gYWxsb3dzIHRyYW5zaXRpb25zCisg
ICAgICAgIGJldHdlZW4sIHNheSwgImxlZnQgMTBweCBib3R0b20iIGFuZCAicmlnaHQgMTBweCBi
b3R0b20iLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL29iamVjdC1wb3NpdGlvbi9wYXJzaW5n
LW9iamVjdC1wb3NpdGlvbi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6aXNQYWlyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL0xlbmd0aFBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhQb2ludC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aFBvaW50OjpMZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGhQb2ludDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6c2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6eCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGhQb2ludDo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2lu
dDo6eSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQb2ludDo6YmxlbmQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTYtMDMtMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gU3VwcG9y
dCBSZWZsZWN0LmNvbnN0cnVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1NjU4ODk3OTI3OGVm
YjFjYTU2ZWE4NGRkMmY1MTk5OWViM2E0M2U1Li5mOTc2NGVmNGJiMjRlMTVkYzg3ZTFkMWI2YWI4
MjBjNWQ2MTBlMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEwNCw2ICsyMTA0LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiAgICAgcGxh
dGZvcm0vTGFuZ3VhZ2UuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcAorICAgIHBsYXRmb3Jt
L0xlbmd0aFBvaW50LmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aFNpemUuY3BwCiAgICAgcGxhdGZv
cm0vTGlua0hhc2guY3BwCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGI5Yjc3MzM4
YTZiZjg0MWFmMDViZGJmYzM3NmZhN2ZiMGZiOTcwLi41M2FhOWYwYzc0ZDJlNmU0OGNkY2E4Nzhj
YTBkNjg4ZjE2MmJjNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDgsNiArNTA4LDggQEAKIAkJMEY2QTEyQkQxQTAwOTIz
NzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAgKi87IH07CiAJCTBGNkExMkJFMUEwMDkyMzcwMEM2REU3MiAvKiBE
ZWJ1Z1BhZ2VPdmVybGF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2QTEyQkMxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3RDA3
MzMxODg0QzU2QzAwQjRBRjg2IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQg
LyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjg3MTY2RjFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NzE2
NkQxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCAqLzsgfTsKKwkJMEY4NzE2NzAx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3Ro
UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjk3QTY1ODE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5N0E2NTcx
NTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLzsgfTsKIAkJ
MEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5
MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07CiAJCTBGQTI0RDdB
MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMw
IC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc4OTksNiArNzkwMSw4IEBACiAJCTBGNjM4M0RDMTg2MTVC
MjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkExMkJDMUEwMDkyMzcw
MEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWJ1Z1BhZ2VPdmVybGF5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjg3MTY2RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVuZ3RoUG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzgxNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjg3MSw2ICsyMjg3NSw4IEBACiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0
NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oICovLAogCQkJCUJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAq
LywKKwkJCQkwRjg3MTY2RDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuY3BwICovLAor
CQkJCTBGODcxNjZFMUM4NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovLAogCQkJCTBG
RUYyMENEMUJENEEyNDEwMDEyOEU1RCAvKiBMZW5ndGhTaXplLmNwcCAqLywKIAkJCQlCQ0ZGNjQ5
MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlE
MDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCkBAIC0yNzgzMyw2ICsyNzgzOSw3IEBACiAJ
CQkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQwMEQ3QTUxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5r
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODcxNjcwMUM4NjlEODMwMDRGRjBERSAv
KiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0QwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTBG
OUYxMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNTMyRUE0MUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMDQ0MSw2ICszMDQ0OCw3IEBACiAJCQkJMzEwNzhDQzkxODgwQUFDOTAw
ODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGREY2QkFGODEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZs
aW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY4NzE2NkYx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
QTkzMjY2MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkRFQTYyNDIxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvck5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCRDFERkMxNjdGRTI3RDAwNTFBMTFFIC8qIEpT
T3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEzMmU3Njli
M2FlODY2ZWIzNGY1OWZlMTg3ZjZkNjc0MTc3MWYyMTQuLjUzNTRmMzI4ZDA1Y2M5OWMxZGQ2NTU0
ZTdjN2JmOTY0OTM5MzA4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yOTcwLDYgKzI5NzAsMTIgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT5taW5XaWR0aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5T2JqZWN0Rml0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS0+b2JqZWN0Rml0KCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0
UG9zaXRpb246IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+b2JqZWN0UG9zaXRpb24o
KS54KCksICpzdHlsZSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueSgpLCAqc3R5bGUpKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBlMDFkZTU2NjI0NzI2NDM0M2NhODBhODk1NjY2OTBiZDUwMGYzYjZjLi5kYmYxZWMzNjI1Yzhm
ZjU4ZDVlZTYxYzU1MzQ4ZGE2NTlkYmQ5OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMjg4Niw2ICsyODg2LDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1u
V2lkdGg6IC8vIGF1dG8gfCA8bGVuZ3RoPgogICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29s
dW1uV2lkdGgoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBv
c2l0aW9uOiB7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsMTsKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwyOworICAgICAgICBwYXJzZUZpbGxQb3Np
dGlvbigqbV92YWx1ZUxpc3QsIHZhbDEsIHZhbDIpOworICAgICAgICBpZiAodmFsMSkgeworICAg
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPYmplY3RQb3NpdGlvbiwgY3JlYXRlUHJp
bWl0aXZlVmFsdWVQYWlyKHZhbDEucmVsZWFzZSgpLCB2YWwyLnJlbGVhc2UoKSksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAgICBj
YXNlIENTU1Byb3BlcnR5V2lsbENoYW5nZTogLy8gYXV0byB8IFtzY3JvbGwtcG9zaXRpb24gfCBj
b250ZW50cyB8IDxjdXN0b20taWRlbnQ+XSMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgKaW5kZXggYWI1Y2Q2MDk0ZDg4ZjYxN2E3YjY4OGNlMjIwZmFlM2I5OTc2NTViZS4uMjMz
NzU4MTVjNjY4MDk4MTNkZDUyZGY3Y2IxNGI5NTNkOGIyZGY5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBib29sIGlzTGVuZ3RoUmVwZWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfTEVOR1RIX1JFUEVBVDsgfQogI2VuZGlm
CisgICAgYm9vbCBpc1BhaXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19QQUlSOyB9CiAgICAgYm9vbCBpc1Byb3BlcnR5SUQoKSBjb25zdCB7IHJldHVybiBtX3By
aW1pdGl2ZVVuaXRUeXBlID09IENTU19QUk9QRVJUWV9JRDsgfQogICAgIGJvb2wgaXNSR0JDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JHQkNPTE9SOyB9
CiAgICAgYm9vbCBpc1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9
PSBDU1NfU0hBUEU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXgg
ZjQ3YWFlZjk4ODRkMGZhMzkzYjY5OWUxMzc1ZmY4MDg0MzBkNjM3NC4uNmY3NTVhYTM1OTRjMWZm
ZGY1MTU3NWZhYmYzMzA3NDVhYjYwZGFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4KQEAgLTI3NCw2ICsyNzQsNyBAQCBtYXgtd2lkdGggW0luaXRpYWw9aW5pdGlhbE1h
eFNpemUsIENvbnZlcnRlcj1MZW5ndGhNYXhTaXppbmddCiBtaW4taGVpZ2h0IFtJbml0aWFsPWlu
aXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogbWluLXdpZHRoIFtJbml0aWFs
PWluaXRpYWxNaW5TaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogb2JqZWN0LWZpdAorb2Jq
ZWN0LXBvc2l0aW9uIFtDb252ZXJ0ZXI9T2JqZWN0UG9zaXRpb25dCiBvcGFjaXR5CiAvLyBIb25v
ciAtd2Via2l0LW9wYWNpdHkgYXMgYSBzeW5vbnltIGZvciBvcGFjaXR5LiBUaGlzIHdhcyB0aGUg
b25seSBzeW50YXggdGhhdCB3b3JrZWQgaW4gU2FmYXJpIDEuMSwKIC8vIGFuZCBtYXkgYmUgaW4g
dXNlIG9uIHNvbWUgd2Vic2l0ZXMgYW5kIHdpZGdldHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNjc3YTUzNzBhMTAxM2IzZWY4MTYzMGYzMmY3M2Iw
MTZiOGVkYjY1ZC4uYjNkNzgzOWE3YjMyY2E0MTlmZjg0MWQxZGNlZTZjNmY3NmM5YTNmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNTYsNyArNTYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOb3RlIHRoYXQgd2UgYXNzdW1lIHRoZSBDU1Mg
cGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5cGVzLgogY2xhc3MgU3R5bGVCdWls
ZGVyQ29udmVydGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGgo
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVu
Z3RoKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGgg
Y29udmVydExlbmd0aE9yQXV0byhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0
aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGhTaXppbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7
CiAgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOwpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnRMaW5lV2lkdGgoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIGZsb2F0IGNvbnZlcnRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRSYWRpdXMoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aFBvaW50IGNvbnZlcnRPYmplY3RQ
b3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dERlY29y
YXRpb24gY29udmVydFRleHREZWNvcmF0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgVCBj
b252ZXJ0TnVtYmVyT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwpAQCAtMTQ3LDYg
KzE0OCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3Rh
dGljIExlbmd0aCBwYXJzZVNuYXBDb29yZGluYXRlKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogI2VuZGlmCisKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRN
aW51c0xlbmd0aChjb25zdCBMZW5ndGgmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3Np
dGlvbkNvbXBvbmVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsK
KwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgc3RhdGljIEdyaWRMZW5ndGggY3Jl
YXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSYsIFN0eWxlUmVzb2x2ZXImKTsK
ICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlJiwg
U3R5bGVSZXNvbHZlciYpOwpAQCAtMTU3LDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhU
ZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJik7CiB9OwogCi1pbmxpbmUgTGVuZ3RoIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29u
dmVyc2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnVzZVNWR1pvb21SdWxlc0Zvckxlbmd0aCgpID8K
QEAgLTI5Nyw2ICszMDIsNTQgQEAgaW5saW5lIExlbmd0aFNpemUgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKICAgICByZXR1cm4g
TGVuZ3RoU2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKIH0KIAoraW5saW5lIExlbmd0
aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQorICAg
ICAgICByZXR1cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBQZXJjZW50KTsKKyAgICAK
KyAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVu
Z3RoKQorICAgIGF1dG8gbGhzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIGF1dG8gcmhzID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKTsKKyAgICBhdXRvIG9wID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbj4oV1RGTW92ZShsaHMpLCBXVEZN
b3ZlKHJocyksIENhbGNTdWJ0cmFjdCk7CisgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VBbGwpKTsKK30KKworaW5s
aW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVu
dChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYg
dmFsdWUpCit7CisgICAgTGVuZ3RoIGxlbmd0aDsKKworICAgIGF1dG8qIGxlbmd0aFZhbHVlID0g
JnZhbHVlOworICAgIGJvb2wgcmVsYXRpdmVUb1RyYWlsaW5nRWRnZSA9IGZhbHNlOworICAgIAor
ICAgIGlmICh2YWx1ZS5pc1BhaXIoKSkgeworICAgICAgICBhdXRvJiBmaXJzdCA9ICp2YWx1ZS5n
ZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKTsKKyAgICAgICAgaWYgKGZpcnN0LmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZVJpZ2h0IHx8IGZpcnN0LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkK
KyAgICAgICAgICAgIHJlbGF0aXZlVG9UcmFpbGluZ0VkZ2UgPSB0cnVlOworCisgICAgICAgIGxl
bmd0aFZhbHVlID0gdmFsdWUuZ2V0UGFpclZhbHVlKCktPnNlY29uZCgpOworICAgIH0KKworICAg
IGxlbmd0aCA9IGNvbnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgKmxlbmd0aFZhbHVlKTsKKwor
ICAgIGlmIChyZWxhdGl2ZVRvVHJhaWxpbmdFZGdlKQorICAgICAgICBsZW5ndGggPSBjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgobGVuZ3RoKTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9
CisKK2lubGluZSBMZW5ndGhQb2ludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmpl
Y3RQb3NpdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUp
Cit7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUo
KTsKKyAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQor
ICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbigpOworCisg
ICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoc3R5bGVSZXNvbHZl
ciwgKnBhaXItPmZpcnN0KCkpOworICAgIExlbmd0aCBsZW5ndGhZID0gY29udmVydFBvc2l0aW9u
Q29tcG9uZW50KHN0eWxlUmVzb2x2ZXIsICpwYWlyLT5zZWNvbmQoKSk7CisKKyAgICByZXR1cm4g
TGVuZ3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7Cit9CisKIGlubGluZSBUZXh0RGVjb3JhdGlv
biBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIFRleHREZWNvcmF0aW9uIHJlc3VsdCA9IFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aFBvaW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTYyMzVjZmM2YzcxNDBlYTMxNWVkMzhhZTBj
NWYyYWExNmYwNDk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoUG9pbnQuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTGVuZ3RoUG9pbnQuaCIKKworI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBMZW5ndGhQb2ludCYgc2l6ZSkKK3sKKyAgICByZXR1cm4gdHMg
PDwgc2l6ZS54KCkgPDwgIiAiIDw8IHNpemUueSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWIxYTNm
NDdjOGI5OGFjNDc2N2Y1NzE4MmM3MTJlYTQwY2ViNGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuaApAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBMZW5ndGhQb2ludF9oCisjZGVmaW5lIExlbmd0aFBvaW50X2gKKwor
I2luY2x1ZGUgIkxlbmd0aC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBMZW5n
dGhQb2ludCB7CitwdWJsaWM6CisgICAgTGVuZ3RoUG9pbnQoKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgTGVuZ3RoUG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KQorICAgICAgICA6IG1feChXVEZN
b3ZlKHgpKQorICAgICAgICAsIG1feShXVEZNb3ZlKHkpKQorICAgIHsKKyAgICB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9PSBvLm1feTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsg
bV94ID0gV1RGTW92ZSh4KTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJu
IG1feDsgfQorCisgICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdURk1vdmUoeSk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KKworICAgIExlbmd0
aFBvaW50IGJsZW5kKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gTGVuZ3RoUG9pbnQobV94LmJsZW5kKGZyb20ueCgp
LCBwcm9ncmVzcyksIG1feS5ibGVuZChmcm9tLnkoKSwgcHJvZ3Jlc3MpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIG5pY2UgdG8gcGFjayB0aGUgdHdvIExl
bmd0aHMgdG9nZXRoZXIgYmV0dGVyIHNvbWVob3cgKHRvIGF2b2lkIHBhZGRpbmcgYmV0d2VlbiB0
aGVtKS4KKyAgICBMZW5ndGggbV94OworICAgIExlbmd0aCBtX3k7Cit9OworCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBMZW5ndGhQb2ludCYpOworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBMZW5ndGhQb2ludF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA5NzhmZTYxMmVjNTli
YzY5N2NmM2RhYzg2NzNmMDE5YWUwYWZiZjgxLi5iYjFkM2ZmYTJhZWQ1NTBhZmYzOWU1ODI1ODM5
ZWFiMzAxNjU0MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKQEAgLTgwOSw2ICs4MDksNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VS
ZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbgog
ICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCiAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2JvcmRlckZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQK
ICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0ICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdAorICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9vYmplY3RQb3NpdGlvbgogICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJl
bmRlcmluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZykKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKaW5kZXggNDY1ZTc4MDIyMjU4MTBhNjZmOTA1NzIwMGUxMDlmZWZlZmZkZDUy
NS4uYjBiN2E1MjI1ODkzOTJiOGE3MWIyMmQ0ZDVkNDI1MzEzYmM3MDY0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIKICNpbmNsdWRlICJM
ZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgogI2luY2x1ZGUgIkxl
bmd0aFNpemUuaCIKICNpbmNsdWRlICJMaW5lQ2xhbXBWYWx1ZS5oIgogI2luY2x1ZGUgIk5pbmVQ
aWVjZUltYWdlLmgiCkBAIC0xMDMxLDggKzEwMzIsOSBAQCBwdWJsaWM6CiAgICAgVGV4dE9yaWVu
dGF0aW9uIHRleHRPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRP
cmllbnRhdGlvbj4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uKTsgfQogCiAg
ICAgT2JqZWN0Rml0IG9iamVjdEZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9iamVj
dEZpdD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0KTsgfQotICAgIAotICAgIC8v
IFJldHVybiB0cnVlIGlmIGFueSB0cmFuc2Zvcm0gcmVsYXRlZCBwcm9wZXJ0eSAoY3VycmVudGx5
IHRyYW5zZm9ybSwgdHJhbnNmb3JtU3R5bGUzRCBvciBwZXJzcGVjdGl2ZSkgCisgICAgTGVuZ3Ro
UG9pbnQgb2JqZWN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9vYmplY3RQb3NpdGlvbjsgfQorCisgICAgLy8gUmV0dXJuIHRydWUgaWYgYW55IHRyYW5z
Zm9ybSByZWxhdGVkIHByb3BlcnR5IChjdXJyZW50bHkgdHJhbnNmb3JtLCB0cmFuc2Zvcm1TdHls
ZTNEIG9yIHBlcnNwZWN0aXZlKQogICAgIC8vIGluZGljYXRlcyB0aGF0IHdlIGFyZSB0cmFuc2Zv
cm1pbmcKICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIGhhc1RyYW5zZm9ybSgpIHx8IHByZXNlcnZlczNEKCkgfHwgaGFzUGVyc3BlY3RpdmUoKTsg
fQogCkBAIC0xNjAxLDYgKzE2MDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRUZXh0T3JpZW50
YXRpb24oVGV4dE9yaWVudGF0aW9uKTsKIAogICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9iamVjdEZp
dCBmaXQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vYmplY3RGaXQsIGZpdCk7
IH0KKyAgICB2b2lkIHNldE9iamVjdFBvc2l0aW9uKGNvbnN0IExlbmd0aFBvaW50JiBwb3NpdGlv
bikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29iamVjdFBvc2l0aW9uLCBwb3Np
dGlvbik7IH0KIAogICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlv
bikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3J1YnlQb3NpdGlvbiwgcG9zaXRpb24p
OyB9CiAKQEAgLTE4OTEsNiArMTg5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dE9yaWVu
dGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246
OgogICAgIE1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkg
eyByZXR1cm4gT2JqZWN0Rml0RmlsbDsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFs
T2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoNTAuMGYsIFBlcmNl
bnQpLCBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpKTsgfQogICAgIHN0YXRpYyBFRW1wdHlDZWxsIGlu
aXRpYWxFbXB0eUNlbGxzKCkgeyByZXR1cm4gU0hPVzsgfQogICAgIHN0YXRpYyBFTGlzdFN0eWxl
UG9zaXRpb24gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyByZXR1cm4gT1VUU0lERTsgfQog
ICAgIHN0YXRpYyBFTGlzdFN0eWxlVHlwZSBpbml0aWFsTGlzdFN0eWxlVHlwZSgpIHsgcmV0dXJu
IERpc2M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA0YWY2YjkzMmFmODBlY2FkZDdh
YTA3ZWVkNjc5ZWE3MjQzNGJlMTE2Li4zYzgxMWI4ZDUxMWRkNmRmOGZkN2U3ZjliZWZmMjYzNGFm
MGU2MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC02Myw2ICs2Myw3IEBAIFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogI2VuZGlm
CiAgICAgLCBtX3dpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCiAg
ICAgLCBtX21hc2soRmlsbExheWVyKE1hc2tGaWxsTGF5ZXIpKQorICAgICwgbV9vYmplY3RQb3Np
dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0aW9uKCkpCiAjaWYgRU5BQkxFKENT
U19TSEFQRVMpCiAgICAgLCBtX3NoYXBlT3V0c2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBl
T3V0c2lkZSgpKQogICAgICwgbV9zaGFwZU1hcmdpbihSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBl
TWFyZ2luKCkpCkBAIC0xNDgsNiArMTQ5LDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAg
ICAsIG1fbWFzayhvLm1fbWFzaykKICAgICAsIG1fbWFza0JveEltYWdlKG8ubV9tYXNrQm94SW1h
Z2UpCiAgICAgLCBtX3BhZ2VTaXplKG8ubV9wYWdlU2l6ZSkKKyAgICAsIG1fb2JqZWN0UG9zaXRp
b24oby5tX29iamVjdFBvc2l0aW9uKQogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgICwgbV9z
aGFwZU91dHNpZGUoby5tX3NoYXBlT3V0c2lkZSkKICAgICAsIG1fc2hhcGVNYXJnaW4oby5tX3No
YXBlTWFyZ2luKQpAQCAtMjUwLDYgKzI1Miw3IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAg
ICAgICAgICYmIG1fbWFzayA9PSBvLm1fbWFzawogICAgICAgICAmJiBtX21hc2tCb3hJbWFnZSA9
PSBvLm1fbWFza0JveEltYWdlCiAgICAgICAgICYmIG1fcGFnZVNpemUgPT0gby5tX3BhZ2VTaXpl
CisgICAgICAgICYmIG1fb2JqZWN0UG9zaXRpb24gPT0gby5tX29iamVjdFBvc2l0aW9uCiAjaWYg
RU5BQkxFKENTU19TSEFQRVMpCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9z
aGFwZU91dHNpZGUsIG8ubV9zaGFwZU91dHNpZGUpCiAgICAgICAgICYmIG1fc2hhcGVNYXJnaW4g
PT0gby5tX3NoYXBlTWFyZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCAxODNjYmUzMDM3MWI4
YTYxNDllY2U0MDZiNWMyZjQ0OWI5YWNkNzZlLi41ZjhiYzdiNWE0ZGViY2NjMjk4ZDU5M2QxZmQz
NWY3ZjA3OGQ3OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJDdXJzb3JEYXRhLmgiCiAjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkZp
bGxMYXllci5oIgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCiAjaW5jbHVkZSAiTGluZUNsYW1w
VmFsdWUuaCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogI2luY2x1ZGUgIlNoYXBlVmFs
dWUuaCIKQEAgLTE1NCw2ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgTmluZVBpZWNlSW1hZ2UgbV9t
YXNrQm94SW1hZ2U7CiAKICAgICBMZW5ndGhTaXplIG1fcGFnZVNpemU7CisgICAgTGVuZ3RoUG9p
bnQgbV9vYmplY3RQb3NpdGlvbjsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIFJlZlB0
cjxTaGFwZVZhbHVlPiBtX3NoYXBlT3V0c2lkZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNWI0NTQ0OTZjYjI3N2YzYWFj
ODU2OGIyNmIzNDI4YjFiN2RjODkwLi5kN2I2MjdhZDA4NGQyMWJkOWEwMGQxY2NhMGM5ZGE5MmI5
MDA2MDU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMDUgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBhcnNpbmcgc3VwcG9ydCBm
b3Igb2JqZWN0LXBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUwNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIG9iamVjdC1wb3NpdGlvbiBwYXJzaW5nIHRlc3QuCisKKyAgICAg
ICAgKiBmYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3QtcG9zaXRpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24vcGFy
c2luZy1vYmplY3QtcG9zaXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMDQgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9y
IGF0dHJpYnV0ZUNoYW5nZWQgbGlmZWN5Y2xlIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3QtcG9zaXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmct
b2JqZWN0LXBvc2l0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjY0YThjMzUyM2YzNTE5
ZGRkOWY0NzY5NjQyMzFiNDc3MTY0NzRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDI4IEBACitUaGlzIHRlc3RzIGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUg
aW5wdXQgdmFsdWVzIGZvciBvYmplY3QtcG9zaXRpb24gcGFyc2UgY29ycmVjdGx5LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgiOyIpIGlz
ICI1MCUgNTAlIgorUEFTUyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IGluaGVyaXQ7IikgaXMgImlu
aGVyaXQiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlvbjogaW5pdGlhbDsiKSBpcyAiaW5pdGlh
bCIKK1BBU1MgdGVzdCgib2JqZWN0LXBvc2l0aW9uOiAyM3B4OyIpIGlzICIyM3B4IDUwJSIKK1BB
U1MgdGVzdCgib2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgMjNweDsiKSBpcyAiNTAlIDIzcHgiCitQ
QVNTIHRlc3QoIm9iamVjdC1wb3NpdGlvbjogNTAlIDIzcHg7IikgaXMgIjUwJSAyM3B4IgorUEFT
UyB0ZXN0KCJvYmplY3QtcG9zaXRpb246IDUwJSBsZWZ0OyIpIGlzICIiCitQQVNTIHRlc3QoIm9i
amVjdC1wb3NpdGlvbjogbGVmdCAxMHB4IHRvcCAxNXB4OyIpIGlzICJsZWZ0IDEwcHggdG9wIDE1
cHgiCitQQVNTIHRlc3QoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgMTBweCBib3R0b20gMTVweDsi
KSBpcyAicmlnaHQgMTBweCBib3R0b20gMTVweCIKK1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9i
amVjdC1wb3NpdGlvbjogYm90dG9tIDIwJTsiKSBpcyAiNTAlIDUwJSIKK1BBU1MgdGVzdENvbXB1
dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgMjAlOyIpIGlzICIxMDAlIDIwJSIKK1BB
U1MgdGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQiKSBpcyAiMTAwJSA1
MCUiCitQQVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGNlbnRlciBib3R0
b20gMjAlOyIpIGlzICI1MCUgODAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBv
c2l0aW9uOiByaWdodCBib3R0b20iKSBpcyAiMTAwJSAxMDAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRT
dHlsZSgib2JqZWN0LXBvc2l0aW9uOiBsZWZ0IDEwcHggdG9wIDE1cHg7IikgaXMgIjEwcHggMTVw
eCIKK1BBU1MgdGVzdENvbXB1dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgMTBweCBi
b3R0b20gMTVweDsiKSBpcyAiY2FsYygxMDAlIC0gMTBweCkgY2FsYygxMDAlIC0gMTVweCkiCitQ
QVNTIHRlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGJvdHRvbSAyMCUgcmlnaHQg
LTIwcHg7IikgaXMgImNhbGMoMTAwJSAtIC0yMHB4KSA4MCUiCitQQVNTIHRlc3RDb21wdXRlZFN0
eWxlKCJvYmplY3QtcG9zaXRpb246IGNhbGMoMTAwJSAtIDIwcHgpIGNhbGMoMTAwJSAtIDEwJSki
KSBpcyAiY2FsYygxMDAlIC0gMjBweCkgOTAlIgorUEFTUyB0ZXN0Q29tcHV0ZWRTdHlsZSgib2Jq
ZWN0LXBvc2l0aW9uOiByaWdodCBjYWxjKDEwMCUgLSAyMHB4KSBib3R0b20gY2FsYygxMDAlIC0g
MTAlKSIpIGlzICJjYWxjKDEwMCUgLSAoMTAwJSAtIDIwcHgpKSAxMCUiCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvb2JqZWN0LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9vYmplY3QtcG9zaXRpb24vcGFyc2luZy1vYmplY3Qt
cG9zaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzRmZDU5NWZmN2EzZWYzNTZjZWYwNTA1ODEwMmRk
YjFkYzc3MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb2JqZWN0
LXBvc2l0aW9uL3BhcnNpbmctb2JqZWN0LXBvc2l0aW9uLmh0bWwKQEAgLTAsMCArMSw1OSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgY2hlY2tzIHRoYXQgYWxsIG9mIHRoZSBpbnB1dCB2YWx1ZXMgZm9yIG9iamVj
dC1wb3NpdGlvbiBwYXJzZSBjb3JyZWN0bHkuIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRl
c3QodmFsdWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgICAgIGRpdi5zZXRBdHRyaWJ1
dGUoInN0eWxlIiwgdmFsdWUpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZGl2KTsKKworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkaXYuc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgib2JqZWN0LXBvc2l0aW9uIik7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RDb21wdXRlZFN0eWxl
KHZhbHVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuc2V0QXR0cmlidXRl
KCJzdHlsZSIsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRpdik7CisKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZGl2KS5vYmplY3RQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmUoJ3Rlc3RDb21wdXRlZFN0eWxlKCI7
IiknLCAnIjUwJSA1MCUiJyk7CisgICAgICAgICAgICBzaG91bGRCZSgndGVzdCgib2JqZWN0LXBv
c2l0aW9uOiBpbmhlcml0OyIpJywgJyJpbmhlcml0IicpOworICAgICAgICAgICAgc2hvdWxkQmUo
J3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogaW5pdGlhbDsiKScsICciaW5pdGlhbCInKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJvYmplY3Qt
cG9zaXRpb246IDIzcHg7IiknLCAnMjNweCA1MCUnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygndGVzdCgib2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgMjNweDsiKScsICc1MCUg
MjNweCcpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJvYmplY3Qt
cG9zaXRpb246IDUwJSAyM3B4OyIpJywgJzUwJSAyM3B4Jyk7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoIm9iamVjdC1wb3NpdGlvbjogNTAlIGxlZnQ7IiknLCAnJyk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdCgi
b2JqZWN0LXBvc2l0aW9uOiBsZWZ0IDEwcHggdG9wIDE1cHg7IiknLCAnbGVmdCAxMHB4IHRvcCAx
NXB4Jyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoIm9iamVjdC1w
b3NpdGlvbjogcmlnaHQgMTBweCBib3R0b20gMTVweDsiKScsICdyaWdodCAxMHB4IGJvdHRvbSAx
NXB4Jyk7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVk
U3R5bGUoIm9iamVjdC1wb3NpdGlvbjogYm90dG9tIDIwJTsiKScsICc1MCUgNTAlJyk7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3Qt
cG9zaXRpb246IHJpZ2h0IDIwJTsiKScsICcxMDAlIDIwJScpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiByaWdo
dCIpJywgJzEwMCUgNTAlJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rl
c3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGNlbnRlciBib3R0b20gMjAlOyIpJywg
JzUwJSA4MCUnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1
dGVkU3R5bGUoIm9iamVjdC1wb3NpdGlvbjogcmlnaHQgYm90dG9tIiknLCAnMTAwJSAxMDAlJyk7
CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdENvbXB1dGVkU3R5bGUo
Im9iamVjdC1wb3NpdGlvbjogbGVmdCAxMHB4IHRvcCAxNXB4OyIpJywgJzEwcHggMTVweCcpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2Jq
ZWN0LXBvc2l0aW9uOiByaWdodCAxMHB4IGJvdHRvbSAxNXB4OyIpJywgJ2NhbGMoMTAwJSAtIDEw
cHgpIGNhbGMoMTAwJSAtIDE1cHgpJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Rlc3RDb21wdXRlZFN0eWxlKCJvYmplY3QtcG9zaXRpb246IGJvdHRvbSAyMCUgcmlnaHQg
LTIwcHg7IiknLCAnY2FsYygxMDAlIC0gLTIwcHgpIDgwJScpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCd0ZXN0Q29tcHV0ZWRTdHlsZSgib2JqZWN0LXBvc2l0aW9uOiBjYWxj
KDEwMCUgLSAyMHB4KSBjYWxjKDEwMCUgLSAxMCUpIiknLCAnY2FsYygxMDAlIC0gMjBweCkgOTAl
Jyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RDb21wdXRlZFN0eWxl
KCJvYmplY3QtcG9zaXRpb246IHJpZ2h0IGNhbGMoMTAwJSAtIDIwcHgpIGJvdHRvbSBjYWxjKDEw
MCUgLSAxMCUpIiknLCAnY2FsYygxMDAlIC0gKDEwMCUgLSAyMHB4KSkgMTAlJyk7CisgICAgICAg
ICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>
<flag name="review"
          id="297704"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>