<?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>202026</bug_id>
          
          <creation_ts>2019-09-19 20:56:04 -0700</creation_ts>
          <short_desc>[LFC] Introduce LayoutContext class</short_desc>
          <delta_ts>2019-09-20 06:36:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572633</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-19 20:56:04 -0700</bug_when>
    <thetext>LayoutState is not really just a state class at this point. Move some of the functionality out to LayoutContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572634</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-19 20:56:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/55546622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572635</commentid>
    <comment_count>2</comment_count>
      <attachid>379203</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-19 21:13:37 -0700</bug_when>
    <thetext>Created attachment 379203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572734</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 06:35:19 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 379203:

inspector/canvas/setShaderProgramHighlighted.html bug 202046 (author: drousso@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572735</commentid>
    <comment_count>4</comment_count>
      <attachid>379203</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 06:36:07 -0700</bug_when>
    <thetext>Comment on attachment 379203
Patch

Clearing flags on attachment: 379203

Committed r250128: &lt;https://trac.webkit.org/changeset/250128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572736</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 06:36:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379203</attachid>
            <date>2019-09-19 21:13:37 -0700</date>
            <delta_ts>2019-09-20 06:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202026-20190919211331.patch</filename>
            <type>text/plain</type>
            <size>55107</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNhN2JkYjIyM2IyODhl
NmFhNjU2ZWU1MDgzNGExOWI0NDEwMzFhNi4uNGRkYTU4MzM5MTkxYTY5ODU3Y2IxOTc2YzY0YzQz
ZDgwYzBjYjAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTA5LTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gSW50cm9kdWNlIExh
eW91dENvbnRleHQgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjAyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU1NDY2MjI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb250ZXh0
IHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBmcm9tIExheW91dFN0YXRlIHRvIExheW91dENvbnRleHQu
CisgICAgICAgIFRvIGluaXRpYXRlIGEgbGF5b3V0LCBjcmVhdGUgYSBMYXlvdXRDb250ZXh0LCBw
YXNzIHRoZSBjdXJyZW50IExheW91dFN0YXRlIG9iamVjdCBpbiBhbmQgY2FsbCBsYXlvdXQoKS4g
IAorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRP
ZkZsb3dDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c2hyaW5rVG9GaXRX
aWR0aCk6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
dXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0
U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpzdHlsZUNoYW5nZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6bWFya05lZWRzVXBkYXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5
b3V0U3RhdGU6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNGb3JtYXR0aW5nU3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6c2V0UXVp
cmtzTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjppbk5vUXVp
cmtzTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjp1
cGRhdGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0Ojp2ZXJpZnlBbmRPdXRwdXRN
aXNtYXRjaGluZ0xheW91dFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRT
dGF0ZTo6dmVyaWZ5QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlvdXRUcmVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb21wdXRlVXBk
YXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbXB1dGVVcGRhdGVUeXBlRm9y
QW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0ludmFsaWRhdGlvbjo6
aW52YWxpZGF0ZSk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFs
aWRhdGlvbi5oOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUludHJpbnNpY1dpZHRoRm9yRm9ybWF0dGluZ1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRSb290KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJbnZhbGlk
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJbnZhbGlkYXRpb246
OmludmFsaWRhdGUpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUlu
dmFsaWRhdGlvbi5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2
ZURvY3VtZW50cyk6CisgICAgICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0VGFibGVDZWxsQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVByZWZlcnJlZFdpZHRoRm9yQ29sdW1u
cyk6CisgICAgICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUludmFsaWRhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlSW52YWxpZGF0aW9uOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlSW52YWxpZGF0aW9u
Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQpOgorCiAyMDE5LTA5LTE5ICBQ
ZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTFZpZGVvRWxlbWVu
dCB3aXRoIGEgYnJva2VuIHBvc3RlciBpbWFnZSB3aWxsIHRha2Ugc3F1YXJlIGRpbWVuc2lvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCAzMGY0NmJjMTQ5MmIxZTUzNGU2ODlhOTlkZjFjNjNlMWViNzRlY2Mz
Li5mZDRkZDMxMzdlYjRjNWUxMWYyMGIzZTlhNWEzYzI1NzNlMGUyNWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMTQwMCw2ICsxNDAwLDcgQEAgbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAogbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwCiBsYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcAorbGF5b3V0L0xheW91dENv
bnRleHQuY3BwCiBsYXlvdXQvTGF5b3V0UGhhc2UuY3BwCiBsYXlvdXQvTGF5b3V0U3RhdGUuY3Bw
CiBsYXlvdXQvTGF5b3V0VW5pdHMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWVmMzBjZWVkNzRhNDAwZmNiM2UxOGUyZWI2
MzIwMjE5MGVkYzVhNi4uN2U0ZDMwN2E2Y2ZiZmQ0YWNmNjFlZGQzNzViZmZlMTQzMDcwZTczMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjAwMiw2ICsyMDAyLDcgQEAKIAkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0QTI0IC8qIEpT
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0
QXR0cmlidXRlcy5oICovOyB9OwogCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5l
TGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYw
Q0Q2OTQyMjlFRDMyNzAwQzU5OTRFIC8qIElubGluZUxpbmUuaCAqLzsgfTsKIAkJNkYxQ0MxREUy
MjVGOEI0OTAwNzIwQUQyIC8qIElubGluZVRleHRJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjFDQzFERDIyNUY4QjQyMDA3MjBBRDIgLyogSW5s
aW5lVGV4dEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk2RjI2QkI2QzIzMzQzRTZGMDAyRjJCRUEgLyogTGF5b3V0Q29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYyNkJCNkIyMzM0M0U1
QjAwMkYyQkVBIC8qIExheW91dENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2RjNFMUY2MjIxMzYxNDIwMDBBNjVBMDggLyogRmxvYXRC
b3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGM0Ux
RjYxMjEzNjE0MTcwMEE2NUEwOCAvKiBGbG9hdEJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGN0NBM0M2MjA4QzI5NTcwMDJGMjlBQiAvKiBM
YXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkY3Q0EzQzQyMDhDMjk1NjAwMkYyOUFCIC8qIExheW91dFN0YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkY3Q0EzQ0EyMDhDMkIyRTAw
MkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjdDQTNDODIwOEMyQjJFMDAyRjI5QUIgLyogSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTE1Nyw2ICs5MTU4LDggQEAKIAkJNkYyMjJCNzQxQUI1MkQ2NDAw
OTQ2NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZGMjIyQjc1MUFCNTJEOEEwMDk0NjUxQSAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMjVCMjAwMjIw
QTg1QUIwMDAwMDExQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkYyNkJCNjkyMzM0M0U1QTAwMkYyQkVBIC8q
IExheW91dENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0Q29udGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGMjZCQjZCMjMzNDNFNUIwMDJGMkJFQSAv
KiBMYXlvdXRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dENvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYzNUVGQUYyMTg3Q0JENTAwNDRFMEY0IC8qIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGM0UxRjVGMjEzNjE0MTcwMEE2NUEwOCAvKiBGbG9hdEJv
eC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZGM0UxRjYxMjEzNjE0MTcwMEE2NUEwOCAvKiBGbG9hdEJveC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGbG9hdEJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0
MTMsNiArMTY0MTYsOCBAQAogCQkJCTExNUNGQTc1MjA4QUZFMzAwMDFFNjk5MSAvKiBGb3JtYXR0
aW5nU3RhdGUuY3BwICovLAogCQkJCTExNUNGQTc0MjA4QUZFMzAwMDFFNjk5MSAvKiBGb3JtYXR0
aW5nU3RhdGUuaCAqLywKIAkJCQkxMTVGNzgwNTIwOUNCQ0JEMDA3MzlDMTMgLyogSW52YWxpZGF0
aW9uLmggKi8sCisJCQkJNkYyNkJCNjkyMzM0M0U1QTAwMkYyQkVBIC8qIExheW91dENvbnRleHQu
Y3BwICovLAorCQkJCTZGMjZCQjZCMjMzNDNFNUIwMDJGMkJFQSAvKiBMYXlvdXRDb250ZXh0Lmgg
Ki8sCiAJCQkJNkY0QTVCRDUyMkY5RjE2QjAwQTgwRjI1IC8qIExheW91dFBoYXNlLmNwcCAqLywK
IAkJCQk2RkVGRTgxRDIyRjlEMjJBMDAxMTQ5MjcgLyogTGF5b3V0UGhhc2UuaCAqLywKIAkJCQk2
RjdDQTNDNTIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0U3RhdGUuY3BwICovLApAQCAtMzA2ODUs
NiArMzA2OTAsNyBAQAogCQkJCTExNUNGQTk3MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTExMzEwQ0Y2MjBCQTRBNTYwMDY1QThEMCAvKiBMYXlvdXRD
aGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4
Q0MgLyogTGF5b3V0Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RjI2QkI2QzIzMzQz
RTZGMDAyRjJCRUEgLyogTGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBD
RjUyMEJBNEE0QzAwNjVBOEQwIC8qIExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExheW91dEl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWls
ZXN0b25lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCmluZGV4IGJhMTUzZWZhNThjNjhkMGNiNzc4ZWI4MGMzYmZkMjNiOGJjNWVm
N2MuLmJiNTQwYjQ3ZDcwY2Y1NjFhMThlZjZiM2Q3M2U2Nzk2NzQ4OThmZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2lu
Y2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNp
bmNsdWRlICJMYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE1OCw5ICsxNTksMTAgQEAgdm9pZCBGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCgpCiAgICAgICAgIGNvbXB1dGVC
b3JkZXJBbmRQYWRkaW5nKCpvdXRPZkZsb3dCb3gpOwogICAgICAgICBjb21wdXRlT3V0T2ZGbG93
SG9yaXpvbnRhbEdlb21ldHJ5KCpvdXRPZkZsb3dCb3gpOwogICAgICAgICBpZiAoaXM8Q29udGFp
bmVyPigqb3V0T2ZGbG93Qm94KSkgewotICAgICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4
dCA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFp
bmVyPigqb3V0T2ZGbG93Qm94KSk7CisgICAgICAgICAgICBhdXRvJiBvdXRPZkZsb3dSb290Q29u
dGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KTsKKyAgICAgICAgICAg
IGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChvdXRPZkZsb3dSb290Q29udGFpbmVyLCBsYXlvdXRTdGF0ZSgpKTsKICAgICAgICAg
ICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KCk7Ci0gICAgICAgICAg
ICBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSgqb3V0T2ZGbG93Qm94KTsKKyAgICAg
ICAgICAgIGNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KG91dE9mRmxvd1Jvb3RDb250
YWluZXIpOwogICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0Nv
bnRlbnQoKTsgICAgICAgICAgICAKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wdXRl
T3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSgqb3V0T2ZGbG93Qm94KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZmE1M2VkMWFkMmFkNGZjYzhjOGZmMTEy
ZDhhMWM1NGIyNjM0OGMyNS4uZjY3ODFlYjk4OGFkNmJjODAxMGRhN2ViZTg0ZTQwOGI4Y2QxM2U4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTI5LDYg
KzI5LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJMYXlvdXRCb3gu
aCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwCmluZGV4IDkzOTU1Y2U4MmZhNjdhMTYwNjgwM2FiMjZhNTQ3YzhjZjgzZDc1ZjIuLjdmY2Yw
ZWY5NDZkMDQxOTU5N2ZlN2Q1ZjU1YzcwODE3ZDcyMDkzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTI1OCw3ICsy
NTgsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c2hyaW5rVG9G
aXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdSbwogICAgICAgICBhdXRvJiBmb3JtYXR0aW5n
U3RhdGVGb3JSb290ID0gbGF5b3V0U3RhdGUoKS5jcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3Jt
YXR0aW5nUm9vdElmTmVlZGVkKHJvb3QpOwogICAgICAgICBhdXRvIHByZWNvbXB1dGVkSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0ZUZvclJvb3QuaW50cmluc2ljV2lk
dGhDb25zdHJhaW50cygpOwogICAgICAgICBpZiAoIXByZWNvbXB1dGVkSW50cmluc2ljV2lkdGhD
b25zdHJhaW50cykKLSAgICAgICAgICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBsYXlv
dXRTdGF0ZSgpLmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KHJvb3QpLT5jb21wdXRlZEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMoKTsKKyAgICAgICAgICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChyb290LCBsYXlvdXRT
dGF0ZSgpKS0+Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSAqcHJlY29tcHV0ZWRJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTQ5ZDA5MTE3OTg4Mzk0YzgyMDgyMzQyMzAyNmVk
ZTJiZjgwYWRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91
dENvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKworI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiQmxvY2tJbnZh
bGlkYXRpb24uaCIKKyNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKKyNp
bmNsdWRlICJJbmxpbmVJbnZhbGlkYXRpb24uaCIKKyNpbmNsdWRlICJJbnZhbGlkYXRpb24uaCIK
KyNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNp
bmNsdWRlICJMYXlvdXRQaGFzZS5oIgorI2luY2x1ZGUgIkxheW91dFRyZWVCdWlsZGVyLmgiCisj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQg
eworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0Q29udGV4dCk7CisKK0xheW91
dENvbnRleHQ6OkxheW91dENvbnRleHQoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQorICAgIDog
bV9sYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKK3sKK30KKwordm9pZCBMYXlvdXRDb250ZXh0Ojps
YXlvdXQoKQoreworICAgIFBoYXNlU2NvcGUgc2NvcGUoUGhhc2U6OlR5cGU6OkxheW91dCk7CisK
KyAgICBBU1NFUlQoIW1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dC5pc0VtcHR5
KCkpOworICAgIGZvciAoYXV0byogbGF5b3V0Um9vdCA6IG1fZm9ybWF0dGluZ0NvbnRleHRSb290
TGlzdEZvckxheW91dCkKKyAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKCps
YXlvdXRSb290KTsKKyAgICBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdExpc3RGb3JMYXlvdXQuY2xl
YXIoKTsKK30KKwordm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1
YnRyZWUoY29uc3QgQ29udGFpbmVyJiBsYXlvdXRSb290KQoreworICAgIFJFTEVBU0VfQVNTRVJU
KGxheW91dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICBhdXRvIGZv
cm1hdHRpbmdDb250ZXh0ID0gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Um9vdCwgbGF5
b3V0U3RhdGUoKSk7CisgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQo
KTsKKyAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudCgpOworfQor
Cit2b2lkIExheW91dENvbnRleHQ6OnN0eWxlQ2hhbmdlZChjb25zdCBCb3gmIGxheW91dEJveCwg
U3R5bGVEaWZmIHN0eWxlRGlmZikKK3sKKyAgICBQaGFzZVNjb3BlIHNjb3BlKFBoYXNlOjpUeXBl
OjpJbnZhbGlkYXRpb24pOworCisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3Rh
dGUoKS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KTsKKyAgICBjb25zdCBDb250YWlu
ZXIqIGludmFsaWRhdGlvblJvb3QgPSBudWxscHRyOworICAgIGlmIChpczxCbG9ja0Zvcm1hdHRp
bmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKSkKKyAgICAgICAgaW52YWxpZGF0aW9uUm9vdCA9IEJs
b2NrSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlKGxheW91dEJveCwgc3R5bGVEaWZmLCAqdGhpcywg
ZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSkpLnJvb3Q7Cisg
ICAgZWxzZSBpZiAoaXM8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUpKQor
ICAgICAgICBpbnZhbGlkYXRpb25Sb290ID0gSW5saW5lSW52YWxpZGF0aW9uOjppbnZhbGlkYXRl
KGxheW91dEJveCwgc3R5bGVEaWZmLCAqdGhpcywgZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihmb3JtYXR0aW5nU3RhdGUpKS5yb290OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICBBU1NFUlQoaW52YWxpZGF0aW9uUm9vdCk7CisgICAg
bV9mb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0Rm9yTGF5b3V0LmFkZFZvaWQoaW52YWxpZGF0aW9u
Um9vdCk7Cit9CisKK3ZvaWQgTGF5b3V0Q29udGV4dDo6bWFya05lZWRzVXBkYXRlKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBPcHRpb25TZXQ8VXBkYXRlVHlwZT4pCit7CisgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHRyaWdnZXIgcHJvcGVyIGludmFsaWRhdGlvbiBpbnN0ZWFkIG9mIGp1c3QgYWRk
aW5nIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB0byB0aGUgZGlydHkgbGlzdC4gCisgICAg
bV9mb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0Rm9yTGF5b3V0LmFkZFZvaWQoJihsYXlvdXRCb3gu
aXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgPyBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCkgOiBsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkpKTsKK30KKworc3RkOjp1bmlx
dWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlKQoreworICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRS
b290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICBhdXRv
JiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KGxheW91dFN0YXRlLmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVk
ZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGlubGluZUZvcm1h
dHRpbmdTdGF0ZSk7CisgICAgfQorCisgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoZm9ybWF0
dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSk7
CisgICAgICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3Jt
YXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
YmxvY2tGb3JtYXR0aW5nU3RhdGUpOworICAgIH0KKworICAgIGlmIChmb3JtYXR0aW5nQ29udGV4
dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgYXV0
byYgdGFibGVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4o
bGF5b3V0U3RhdGUuY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRl
ZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFi
bGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRp
bmdTdGF0ZSk7CisgICAgfQorCisgICAgQ1JBU0goKTsKK30KKwordm9pZCBMYXlvdXRDb250ZXh0
OjpydW4oY29uc3QgUmVuZGVyVmlldyYgcmVuZGVyVmlldykKK3sKKyAgICBhdXRvIHF1aXJrc01v
ZGUgPSBbJl0geworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IHJlbmRlclZpZXcuZG9jdW1lbnQo
KTsKKyAgICAgICAgaWYgKGRvY3VtZW50LmluTGltaXRlZFF1aXJrc01vZGUoKSkKKyAgICAgICAg
ICAgIHJldHVybiBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZDsKKyAgICAgICAgaWYg
KGRvY3VtZW50LmluUXVpcmtzTW9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIExheW91dFN0YXRl
OjpRdWlya3NNb2RlOjpZZXM7CisgICAgICAgIHJldHVybiBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9k
ZTo6Tm87CisgICAgfTsKKworICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9jayA9IFRyZWVC
dWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVlKHJlbmRlclZpZXcpOworCisgICAgYXV0byBsYXlvdXRT
dGF0ZSA9IExheW91dFN0YXRlIHsgfTsKKyAgICBsYXlvdXRTdGF0ZS5zZXRRdWlya3NNb2RlKHF1
aXJrc01vZGUoKSk7CisgICAgbGF5b3V0U3RhdGUuY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9y
bWF0dGluZ1Jvb3RJZk5lZWRlZCgqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisKKyAgICBhdXRv
IGxheW91dENvbnRleHQgPSBMYXlvdXRDb250ZXh0KGxheW91dFN0YXRlKTsKKworICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbml0aWFs
Q29udGFpbmluZ0Jsb2NrKTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4oeyB9
KTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbih7IH0pOworICAg
IGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyB9KTsKKyAgICBkaXNwbGF5Qm94LnNldEJv
cmRlcih7IH0pOworICAgIGRpc3BsYXlCb3guc2V0UGFkZGluZyh7IH0pOworICAgIGRpc3BsYXlC
b3guc2V0VG9wTGVmdCh7IH0pOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChM
YXlvdXRVbml0KGluaXRpYWxDb250YWluaW5nQmxvY2stPnN0eWxlKCkubG9naWNhbEhlaWdodCgp
LnZhbHVlKCkpKTsKKyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChMYXlvdXRVbml0
KGluaXRpYWxDb250YWluaW5nQmxvY2stPnN0eWxlKCkubG9naWNhbFdpZHRoKCkudmFsdWUoKSkp
OworCisgICAgLy8gTm90IGVmZmljaWVudCwgYnV0IHRoaXMgaXMgdGVtcG9yYXJ5IGFueXdheS4K
KyAgICAvLyBDb2xsZWN0IHRoZSBvdXQtb2YtZmxvdyBkZXNjZW5kYW50cyBhdCB0aGUgZm9ybWF0
dGluZyByb290IGxldmVsIChhcyBvcHBvc2VkIHRvIGF0IHRoZSBjb250YWluaW5nIGJsb2NrIGxl
dmVsLCB0aG91Z2ggdGhleSBtaWdodCBiZSB0aGUgc2FtZSkuCisgICAgZm9yIChhdXRvJiBkZXNj
ZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8Qm94PigqaW5pdGlhbENvbnRhaW5pbmdCbG9jaykp
IHsKKyAgICAgICAgaWYgKCFkZXNjZW5kYW50LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91
dFN0YXRlLmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZGVz
Y2VuZGFudC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7CisgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRPdXRPZkZsb3dCb3goZGVzY2VuZGFudCk7CisgICAgfQorICAgIGxheW91dENvbnRleHQu
bWFya05lZWRzVXBkYXRlKCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKKyAgICBsYXlvdXRDb250
ZXh0LmxheW91dCgpOworICAgIExheW91dENvbnRleHQ6OnZlcmlmeUFuZE91dHB1dE1pc21hdGNo
aW5nTGF5b3V0VHJlZShsYXlvdXRTdGF0ZSwgcmVuZGVyVmlldywgKmluaXRpYWxDb250YWluaW5n
QmxvY2spOworfQorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250
ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODFlZThhNmQ0NDEwMGJhNGQ4MTQ1ZGZhYjg2YTQ0MDZjM2YxZjA5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0
LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJMYXlvdXRDb250YWlu
ZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJWaWV3OworCituYW1lc3BhY2Ug
TGF5b3V0IHsKKworZW51bSBjbGFzcyBTdHlsZURpZmY7CitjbGFzcyBCb3g7CitjbGFzcyBGb3Jt
YXR0aW5nQ29udGV4dDsKKworLy8gTGF5b3V0Q29udGV4dCBpcyB0aGUgZW50cnkgcG9pbnQgZm9y
IGxheW91dC4KKy8vIExheW91dENvbnRleHQ6OmxheW91dCgpIGdlbmVyYXRlcyB0aGUgZGlzcGxh
eSB0cmVlIGZvciB0aGUgcm9vdCBjb250YWluZXIncyBzdWJ0cmVlIChpdCBkb2VzIG5vdCBydW4g
bGF5b3V0IG9uIHRoZSByb290IHRob3VnaCkuCisvLyBOb3RlLCB3aGlsZSB0aGUgaW5pdGlhbCBj
b250YWluaW5nIGJsb2NrIGlzIGVudHJ5IHBvaW50IGZvciB0aGUgaW5pdGlhbCBsYXlvdXQsIGl0
IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG5lZWQgdG8gYmUgdGhlIGVudHJ5IHBvaW50IG9mIGFueQor
Ly8gc3Vic2VxdWVudCBsYXlvdXRzIChzdWJ0cmVlIGxheW91dCkuIEEgbm9uLWluaXRpYWwsIHN1
YnRyZWUgbGF5b3V0IGNvdWxkIGJlIGluaXRpYXRlZCBvbiBtdWx0aXBsZSBmb3JtYXR0aW5nIGNv
bnRleHRzLgorLy8gRWFjaCBmb3JtYXR0aW5nIGNvbnRleHQgaGFzIGFuIGVudHJ5IHBvaW50IGZv
ciBsYXlvdXQsIHdoaWNoIHBvdGVuaXRhbGx5IG1lYW5zIG11bHRpcGxlIGVudHJ5IHBvaW50cyBw
ZXIgbGF5b3V0IGZyYW1lLgorLy8gTGF5b3V0U3RhdGUgaG9sZHMgdGhlIGZvcm1hdHRpbmcgc3Rh
dGVzLiBUaGV5IGNhY2hlIGZvcm1hdHRpbmcgY29udGV4dCBzcGVjaWZpYyBkYXRhIHRvIGVuYWJs
ZSBwZXJmb3JtYW50IGluY3JlbWVudGFsIGxheW91dHMuCitjbGFzcyBMYXlvdXRDb250ZXh0IHsK
KyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExheW91dENvbnRleHQpOworcHVibGljOgorICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGVudHJ5IHBvaW50IGZvciBMRkMgbGF5b3V0
LgorICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBSZW5kZXJWaWV3Jik7CisKKyAgICBMYXlvdXRD
b250ZXh0KExheW91dFN0YXRlJik7CisgICAgdm9pZCBsYXlvdXQoKTsKKworICAgIGVudW0gY2xh
c3MgVXBkYXRlVHlwZSB7CisgICAgICAgIE92ZXJmbG93ID0gMSA8PCAwLAorICAgICAgICBQb3Np
dGlvbiA9IDEgPDwgMSwKKyAgICAgICAgU2l6ZSAgICAgPSAxIDw8IDIKKyAgICB9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFVwZGF0ZVR5cGU+IHVwZGF0ZUFsbCgpIHsgcmV0dXJu
IHsgVXBkYXRlVHlwZTo6T3ZlcmZsb3csIFVwZGF0ZVR5cGU6OlBvc2l0aW9uLCBVcGRhdGVUeXBl
OjpTaXplIH07IH0KKyAgICB2b2lkIG1hcmtOZWVkc1VwZGF0ZShjb25zdCBCb3gmLCBPcHRpb25T
ZXQ8VXBkYXRlVHlwZT4gPSB1cGRhdGVBbGwoKSk7CisgICAgYm9vbCBuZWVkc1VwZGF0ZShjb25z
dCBCb3gmKSBjb25zdDsKKworICAgIHZvaWQgc3R5bGVDaGFuZ2VkKGNvbnN0IEJveCYsIFN0eWxl
RGlmZik7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBj
cmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgTGF5b3V0U3RhdGUmKTsKKworICAgIC8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkK
KyAgICBzdGF0aWMgdm9pZCB2ZXJpZnlBbmRPdXRwdXRNaXNtYXRjaGluZ0xheW91dFRyZWUoY29u
c3QgTGF5b3V0U3RhdGUmLCBjb25zdCBSZW5kZXJWaWV3JiwgY29uc3QgQ29udGFpbmVyJiBpbml0
aWFsQ29udGFpbmluZ0Jsb2NrKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGxheW91dEZvcm1hdHRp
bmdDb250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXImKTsKKyAgICBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUoKSB7IHJldHVybiBtX2xheW91dFN0YXRlOyB9CisKKyAgICBMYXlvdXRTdGF0ZSYg
bV9sYXlvdXRTdGF0ZTsKKyAgICBIYXNoU2V0PGNvbnN0IENvbnRhaW5lcio+IG1fZm9ybWF0dGlu
Z0NvbnRleHRSb290TGlzdEZvckxheW91dDsKK307CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggNmYyYzFiMzc4ZGViMjI4OTQ2ZDBmMWM3NWFk
ZWNkZjg1MWM1NzE5OS4uYWRmMWFiYmQ3ODJhNDU0ZGNiYjVmNmRlYTNkZTU4MWQwYmRlYjdiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC0yOCwyMSArMjgsOSBAQAog
CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIK
LSNpbmNsdWRlICJCbG9ja0ludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIK
LSNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIklubGluZUZv
cm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIklubGluZUludmFsaWRhdGlvbi5oIgotI2luY2x1
ZGUgIkludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxh
eW91dENvbnRhaW5lci5oIgotI2luY2x1ZGUgIkxheW91dFBoYXNlLmgiCi0jaW5jbHVkZSAiTGF5
b3V0VHJlZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTAsMjQgKzM4LDYgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChMYXlvdXRTdGF0ZSk7CiAKLXZvaWQgTGF5b3V0U3RhdGU6OnVwZGF0ZUxh
eW91dCgpCi17Ci0gICAgUGhhc2VTY29wZSBzY29wZShQaGFzZTo6VHlwZTo6TGF5b3V0KTsKLQot
ICAgIEFTU0VSVCghbV9mb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0Rm9yTGF5b3V0LmlzRW1wdHko
KSk7Ci0gICAgZm9yIChhdXRvKiBsYXlvdXRSb290IDogbV9mb3JtYXR0aW5nQ29udGV4dFJvb3RM
aXN0Rm9yTGF5b3V0KQotICAgICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoKmxh
eW91dFJvb3QpOwotICAgIG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dC5jbGVh
cigpOwotfQotCi12b2lkIExheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRy
ZWUoY29uc3QgQ29udGFpbmVyJiBsYXlvdXRSb290KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxh
eW91dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKLSAgICBhdXRvIGZvcm1h
dHRpbmdDb250ZXh0ID0gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Um9vdCk7Ci0gICAg
Zm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoKTsKLSAgICBmb3JtYXR0aW5n
Q29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudCgpOwotfQotCiBEaXNwbGF5OjpCb3gmIExh
eW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBj
b25zdAogewogICAgIHJldHVybiAqbV9sYXlvdXRUb0Rpc3BsYXlCb3guZW5zdXJlKCZsYXlvdXRC
b3gsIFsmbGF5b3V0Qm94XSB7CkBAIC03NSwyOCArNDUsNiBAQCBEaXNwbGF5OjpCb3gmIExheW91
dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotdm9pZCBMYXlvdXRTdGF0ZTo6c3R5bGVD
aGFuZ2VkKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBTdHlsZURpZmYgc3R5bGVEaWZmKQotewotICAg
IFBoYXNlU2NvcGUgc2NvcGUoUGhhc2U6OlR5cGU6OkludmFsaWRhdGlvbik7Ci0KLSAgICBhdXRv
JiBmb3JtYXR0aW5nU3RhdGUgPSBmb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KTsKLSAg
ICBjb25zdCBDb250YWluZXIqIGludmFsaWRhdGlvblJvb3QgPSBudWxscHRyOwotICAgIGlmIChp
czxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKSkKLSAgICAgICAgaW52YWxp
ZGF0aW9uUm9vdCA9IEJsb2NrSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlKGxheW91dEJveCwgc3R5
bGVEaWZmLCAqdGhpcywgZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdT
dGF0ZSkpLnJvb3Q7Ci0gICAgZWxzZSBpZiAoaXM8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihmb3Jt
YXR0aW5nU3RhdGUpKQotICAgICAgICBpbnZhbGlkYXRpb25Sb290ID0gSW5saW5lSW52YWxpZGF0
aW9uOjppbnZhbGlkYXRlKGxheW91dEJveCwgc3R5bGVEaWZmLCAqdGhpcywgZG93bmNhc3Q8SW5s
aW5lRm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUpKS5yb290OwotICAgIGVsc2UKLSAg
ICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKLSAgICBBU1NFUlQoaW52YWxpZGF0
aW9uUm9vdCk7Ci0gICAgbV9mb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0Rm9yTGF5b3V0LmFkZFZv
aWQoaW52YWxpZGF0aW9uUm9vdCk7Ci19Ci0KLXZvaWQgTGF5b3V0U3RhdGU6Om1hcmtOZWVkc1Vw
ZGF0ZShjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uU2V0PFVwZGF0ZVR5cGU+KQotewotICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0cmlnZ2VyIHByb3BlciBpbnZhbGlkYXRpb24gaW5zdGVh
ZCBvZiBqdXN0IGFkZGluZyB0aGUgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QgdG8gdGhlIGRpcnR5
IGxpc3QuIAotICAgIG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dC5hZGRWb2lk
KCYobGF5b3V0Qm94LmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpID8gZG93bmNhc3Q8Q29udGFp
bmVyPihsYXlvdXRCb3gpIDogbGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKSk7Ci19
Ci0KIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmZvcm1hdHRpbmdTdGF0ZUZvckJveChj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBhdXRvJiByb290ID0gbGF5b3V0Qm94
LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpOwpAQCAtMTExLDEwNyArNTksNDYgQEAgRm9ybWF0dGlu
Z1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXQKICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5nZXQoJmZvcm1h
dHRpbmdSb290KTsKIH0KIAotRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9y
bWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdSb290KQorRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0
dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBDb250YWluZXImIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCkKIHsKLSAgICBBU1NFUlQoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNo
ZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290
LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAKLSAgICBpZiAoZm9ybWF0dGluZ1Jv
b3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIHJldHVy
biAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CisgICAg
aWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250
ZXh0KCkpIHsKKyAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBibG9jayBj
b250YWluZXIgYm94IHRoYXQgaW5pdGlhdGVzIHRoaXMgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4
dCBhbHNvIGVzdGFibGlzaGVzIGEgYmxvY2sgY29udGV4dCwgdGhlIGZsb2F0cyBvdXRzaWRlIG9m
IHRoZSBmb3JtYXR0aW5nIHJvb3QKICAgICAgICAgICAgIC8vIHNob3VsZCBub3QgaW50ZXJmZXJl
IHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgogICAgICAgICAgICAgLy8gPGRpdiBzdHlsZT0iZmxv
YXQ6IGxlZnQiPjwvZGl2PjxkaXYgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW4iPiA8LSBpcyBhIG5v
bi1pbnRydXNpdmUgZmxvYXQsIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiB0cmlnZ2VycyBuZXcg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LjwvZGl2PgotICAgICAgICAgICAgaWYgKGZvcm1hdHRp
bmdSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0
ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIGlm
IChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCks
ICp0aGlzKTsKIAogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZm9ybWF0dGluZyBjb250
ZXh0IGluaGVyaXRzIHRoZSBmbG9hdHMgZnJvbSB0aGUgcGFyZW50IGZvcm1hdHRpbmcgY29udGV4
dC4KICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhp
cyBmb3JtYXR0aW5nIHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBp
dHMgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAgICAgICBhdXRvJiBwYXJlbnRGb3JtYXR0aW5nU3Rh
dGUgPSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1h
dHRpbmdSb290LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKTsgCisgICAgICAgICAgICBhdXRvJiBw
YXJlbnRGb3JtYXR0aW5nU3RhdGUgPSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5n
Um9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5mb3JtYXR0aW5nQ29udGV4dFJvb3Qo
KSk7IAogICAgICAgICAgICAgYXV0byYgcGFyZW50RmxvYXRpbmdTdGF0ZSA9IHBhcmVudEZvcm1h
dHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKICAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIAotICAgIGlmIChmb3JtYXR0aW5nUm9v
dC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICByZXR1cm4g
Km1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0geworICAgIGlm
IChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCkpIHsKKyAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0
ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVh
dGUoKnRoaXMsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIH0KIAotICAgIGlmIChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hl
c1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGlu
Z1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0geworICAgIGlmIChmb3JtYXR0aW5n
Q29udGV4dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAg
ICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJv
b3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIFRhYmxlIGZvcm1hdHRpbmcgY29udGV4dCBhbHdh
eXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5cyBlbXB0eS4K
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9h
dGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3Rh
dGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMpOwogICAgICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCiAgICAgQ1JBU0goKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCi17Ci0gICAg
QVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0
KCkpOwotICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9y
Rm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250
ZXh0Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKLSAgICB9Ci0KLSAgICBpZiAoZm9ybWF0
dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0g
ICAgICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0T25seSgpKTsKLSAgICAgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUg
PSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9y
Rm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRl
eHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7Ci0gICAgfQotCi0gICAgaWYgKGZvcm1hdHRp
bmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAg
ICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0dGlu
Z1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZv
cm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZv
cm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0
YXRlKTsKLSAgICB9Ci0KLSAgICBDUkFTSCgpOwotfQotCi12b2lkIExheW91dFN0YXRlOjpydW4o
Y29uc3QgUmVuZGVyVmlldyYgcmVuZGVyVmlldykKLXsKLSAgICBhdXRvIGxheW91dFN0YXRlID0g
TGF5b3V0U3RhdGUgeyB9OwotCi0gICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrID0gVHJl
ZUJ1aWxkZXI6OmNyZWF0ZUxheW91dFRyZWUocmVuZGVyVmlldyk7Ci0gICAgbGF5b3V0U3RhdGUu
Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZCgqaW5pdGlhbENv
bnRhaW5pbmdCbG9jayk7Ci0KLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlz
cGxheUJveEZvckxheW91dEJveCgqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7Ci0gICAgZGlzcGxh
eUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHsgfSk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9u
dGFsQ29tcHV0ZWRNYXJnaW4oeyB9KTsKLSAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2lu
KHsgfSk7Ci0gICAgZGlzcGxheUJveC5zZXRCb3JkZXIoeyB9KTsKLSAgICBkaXNwbGF5Qm94LnNl
dFBhZGRpbmcoeyB9KTsKLSAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoeyB9KTsKLSAgICBkaXNw
bGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoTGF5b3V0VW5pdChpbml0aWFsQ29udGFpbmluZ0Js
b2NrLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS52YWx1ZSgpKSk7Ci0gICAgZGlzcGxheUJveC5z
ZXRDb250ZW50Qm94V2lkdGgoTGF5b3V0VW5pdChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLT5zdHls
ZSgpLmxvZ2ljYWxXaWR0aCgpLnZhbHVlKCkpKTsKLQotICAgIC8vIE5vdCBlZmZpY2llbnQsIGJ1
dCB0aGlzIGlzIHRlbXBvcmFyeSBhbnl3YXkuCi0gICAgLy8gQ29sbGVjdCB0aGUgb3V0LW9mLWZs
b3cgZGVzY2VuZGFudHMgYXQgdGhlIGZvcm1hdHRpbmcgcm9vdCBsZXZlbCAoYXMgb3Bwb3NlZCB0
byBhdCB0aGUgY29udGFpbmluZyBibG9jayBsZXZlbCwgdGhvdWdoIHRoZXkgbWlnaHQgYmUgdGhl
IHNhbWUpLgotICAgIGZvciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEJv
eD4oKmluaXRpYWxDb250YWluaW5nQmxvY2spKSB7Ci0gICAgICAgIGlmICghZGVzY2VuZGFudC5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBh
dXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5jcmVhdGVGb3JtYXR0aW5nU3RhdGVG
b3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGRlc2NlbmRhbnQuZm9ybWF0dGluZ0NvbnRleHRSb290
KCkpOwotICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkT3V0T2ZGbG93Qm94KGRlc2NlbmRhbnQp
OwotICAgIH0KLSAgICBhdXRvIHF1aXJrc01vZGUgPSBbJl0gewotICAgICAgICBhdXRvJiBkb2N1
bWVudCA9IHJlbmRlclZpZXcuZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKGRvY3VtZW50LmluTGlt
aXRlZFF1aXJrc01vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBRdWlya3NNb2RlOjpMaW1pdGVk
OwotICAgICAgICBpZiAoZG9jdW1lbnQuaW5RdWlya3NNb2RlKCkpCi0gICAgICAgICAgICByZXR1
cm4gUXVpcmtzTW9kZTo6WWVzOwotICAgICAgICByZXR1cm4gUXVpcmtzTW9kZTo6Tm87Ci0gICAg
fTsKLSAgICBsYXlvdXRTdGF0ZS5zZXRRdWlya3NNb2RlKHF1aXJrc01vZGUoKSk7Ci0gICAgbGF5
b3V0U3RhdGUubWFya05lZWRzVXBkYXRlKCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKLSAgICBs
YXlvdXRTdGF0ZS51cGRhdGVMYXlvdXQoKTsKLSAgICBsYXlvdXRTdGF0ZS52ZXJpZnlBbmRPdXRw
dXRNaXNtYXRjaGluZ0xheW91dFRyZWUocmVuZGVyVmlldywgKmluaXRpYWxDb250YWluaW5nQmxv
Y2spOwotfQotCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggNDgz
YjU5OGY5ZWYzMzQ5Y2Y4NWQyZTA1NDIwYWFjZWU5YmU5MGMyNS4uOWQxMDY4MDNiNzYxZDg4MDgz
ZmIwNWVlMjhlZTc0OThkYjE2Y2ZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgK
QEAgLTI3LDEyICsyNyw5IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKIAotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNDMgKzQxLDIwIEBAIGNsYXNzIEJveDsKIAog
bmFtZXNwYWNlIExheW91dCB7CiAKLWVudW0gY2xhc3MgU3R5bGVEaWZmOwogY2xhc3MgQm94Owor
Y2xhc3MgQ29udGFpbmVyOwogY2xhc3MgRm9ybWF0dGluZ0NvbnRleHQ7CiBjbGFzcyBGb3JtYXR0
aW5nU3RhdGU7CiAKLS8vIExheW91dFN0YXRlIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgbGF5b3V0
LiBJdCB0YWtlcyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrIHdoaWNoIGFjdHMgYXMgdGhl
IHJvb3Qgb2YgdGhlIGxheW91dCBjb250ZXh0LgotLy8gTGF5b3V0U3RhdGU6OmxheW91dCgpIGdl
bmVyYXRlcyB0aGUgZGlzcGxheSB0cmVlIGZvciB0aGUgcm9vdCBjb250YWluZXIncyBzdWJ0cmVl
IChpdCBkb2VzIG5vdCBydW4gbGF5b3V0IG9uIHRoZSByb290IHRob3VnaCkuCi0vLyBOb3RlLCB3
aGlsZSB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrIGlzIGVudHJ5IHBvaW50IGZvciB0aGUg
aW5pdGlhbCBsYXlvdXQsIGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG5lZWQgdG8gYmUgdGhlIGVu
dHJ5IHBvaW50IG9mIGFueQotLy8gc3Vic2VxdWVudCBsYXlvdXRzIChzdWJ0cmVlIGxheW91dCku
IEEgbm9uLWluaXRpYWwsIHN1YnRyZWUgbGF5b3V0IGNvdWxkIGJlIGluaXRpYXRlZCBvbiBtdWx0
aXBsZSBmb3JtYXR0aW5nIGNvbnRleHRzLgotLy8gRWFjaCBmb3JtYXR0aW5nIGNvbnRleHQgaGFz
IGFuIGVudHJ5IHBvaW50IGZvciBsYXlvdXQsIHdoaWNoIHBvdGVuaXRhbGx5IG1lYW5zIG11bHRp
cGxlIGVudHJ5IHBvaW50cyBwZXIgbGF5b3V0IGZyYW1lLgotLy8gTGF5b3V0U3RhdGUgYWxzbyBo
b2xkcyB0aGUgZm9ybWF0dGluZyBzdGF0ZXMuIFRoZXkgY2FjaGUgZm9ybWF0dGluZyBjb250ZXh0
IHNwZWNpZmljIGRhdGEgdG8gZW5hYmxlIHBlcmZvcm1hbnQgaW5jcmVtZW50YWwgbGF5b3V0cy4K
IGNsYXNzIExheW91dFN0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExheW91dFN0
YXRlKTsKIHB1YmxpYzoKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBlbnRyeSBw
b2ludCBmb3IgTEZDIGxheW91dC4KLSAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgUmVuZGVyVmll
dyYpOwogCi0gICAgdm9pZCB1cGRhdGVMYXlvdXQoKTsKLSAgICB2b2lkIHN0eWxlQ2hhbmdlZChj
b25zdCBCb3gmLCBTdHlsZURpZmYpOwotICAgIGVudW0gY2xhc3MgUXVpcmtzTW9kZSB7IE5vLCBM
aW1pdGVkLCBZZXMgfTsKLSAgICB2b2lkIHNldFF1aXJrc01vZGUoUXVpcmtzTW9kZSBxdWlya3NN
b2RlKSB7IG1fcXVpcmtzTW9kZSA9IHF1aXJrc01vZGU7IH0KLQotICAgIGVudW0gY2xhc3MgVXBk
YXRlVHlwZSB7Ci0gICAgICAgIE92ZXJmbG93ID0gMSA8PCAwLAotICAgICAgICBQb3NpdGlvbiA9
IDEgPDwgMSwKLSAgICAgICAgU2l6ZSAgICAgPSAxIDw8IDIKLSAgICB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgT3B0aW9uU2V0PFVwZGF0ZVR5cGU+IHVwZGF0ZUFsbCgpIHsgcmV0dXJuIHsgVXBk
YXRlVHlwZTo6T3ZlcmZsb3csIFVwZGF0ZVR5cGU6OlBvc2l0aW9uLCBVcGRhdGVUeXBlOjpTaXpl
IH07IH0KLSAgICB2b2lkIG1hcmtOZWVkc1VwZGF0ZShjb25zdCBCb3gmLCBPcHRpb25TZXQ8VXBk
YXRlVHlwZT4gPSB1cGRhdGVBbGwoKSk7Ci0gICAgYm9vbCBuZWVkc1VwZGF0ZShjb25zdCBCb3gm
KSBjb25zdDsKLQotICAgIEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlRm9yQm94KGNv
bnN0IEJveCYpIGNvbnN0OworICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0
YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCk7CiAgICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdT
dGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KSBjb25zdDsKKyAgICBGb3JtYXR0
aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZUZvckJveChjb25zdCBCb3gmKSBjb25zdDsKICAgICBi
b29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KSBj
b25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290
KTsgfQotICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KTsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gY3JlYXRlRm9ybWF0dGluZ0NvbnRl
eHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogI2lmbmRlZiBOREVC
VUcKICAgICB2b2lkIHJlZ2lzdGVyRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgRm9ybWF0dGluZ0Nv
bnRleHQmKTsKICAgICB2b2lkIGRlcmVnaXN0ZXJGb3JtYXR0aW5nQ29udGV4dChjb25zdCBGb3Jt
YXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQpIHsgbV9mb3JtYXR0aW5nQ29udGV4dExp
c3QucmVtb3ZlKCZmb3JtYXR0aW5nQ29udGV4dCk7IH0KQEAgLTg5LDE2ICs2MywxMyBAQCBwdWJs
aWM6CiAgICAgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYg
bGF5b3V0Qm94KSBjb25zdDsKICAgICBib29sIGhhc0Rpc3BsYXlCb3goY29uc3QgQm94JiBsYXlv
dXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0VG9EaXNwbGF5Qm94LmNvbnRhaW5zKCZsYXlv
dXRCb3gpOyB9CiAKKyAgICBlbnVtIGNsYXNzIFF1aXJrc01vZGUgeyBObywgTGltaXRlZCwgWWVz
IH07CisgICAgdm9pZCBzZXRRdWlya3NNb2RlKFF1aXJrc01vZGUgcXVpcmtzTW9kZSkgeyBtX3F1
aXJrc01vZGUgPSBxdWlya3NNb2RlOyB9CiAgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7
IHJldHVybiBtX3F1aXJrc01vZGUgPT0gUXVpcmtzTW9kZTo6WWVzOyB9CiAgICAgYm9vbCBpbkxp
bWl0ZWRRdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9xdWlya3NNb2RlID09IFF1aXJrc01v
ZGU6OkxpbWl0ZWQ7IH0KICAgICBib29sIGluTm9RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9xdWlya3NNb2RlID09IFF1aXJrc01vZGU6Ok5vOyB9Ci0gICAgLy8gRm9yIHRlc3RpbmcgcHVy
cG9zZXMgb25seQotICAgIHZvaWQgdmVyaWZ5QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlvdXRUcmVl
KGNvbnN0IFJlbmRlclZpZXcmLCBjb25zdCBDb250YWluZXImIGluaXRpYWxDb250YWluaW5nQmxv
Y2spIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRT
dWJ0cmVlKGNvbnN0IENvbnRhaW5lciYpOwotCi0gICAgSGFzaFNldDxjb25zdCBDb250YWluZXIq
PiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdExpc3RGb3JMYXlvdXQ7CiAgICAgSGFzaE1hcDxjb25z
dCBDb250YWluZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ1N0YXRlPj4gbV9mb3JtYXR0
aW5nU3RhdGVzOwogI2lmbmRlZiBOREVCVUcKICAgICBIYXNoU2V0PGNvbnN0IEZvcm1hdHRpbmdD
b250ZXh0Kj4gbV9mb3JtYXR0aW5nQ29udGV4dExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJp
ZmljYXRpb24uY3BwCmluZGV4IDU1ZGYxZjk4MzQzZTMxYWVkZTE1ODBjOWQ3NDBhMjRlNWFhN2M2
NmQuLjJhMmNjNTkxYzA3NTU0MGFjNTQ4N2U0M2MxZDliMTZmZTkxYjZjMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRGlzcGxheUJveC5oIgor
I2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZVRleHRC
b3guaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIu
aCIKKyNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIK
QEAgLTMxOCwxNSArMzIwLDE1IEBAIHN0YXRpYyBib29sIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUo
VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgY29udGV4CiAgICAgcmV0dXJu
IG1pc210YWNoaW5nR2VvbWV0cnk7CiB9CiAKLXZvaWQgTGF5b3V0U3RhdGU6OnZlcmlmeUFuZE91
dHB1dE1pc21hdGNoaW5nTGF5b3V0VHJlZShjb25zdCBSZW5kZXJWaWV3JiByZW5kZXJWaWV3LCBj
b25zdCBDb250YWluZXImIGluaXRpYWxDb250YWluaW5nQmxvY2spIGNvbnN0Cit2b2lkIExheW91
dENvbnRleHQ6OnZlcmlmeUFuZE91dHB1dE1pc21hdGNoaW5nTGF5b3V0VHJlZShjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IFJlbmRlclZpZXcmIHJlbmRlclZpZXcsIGNvbnN0
IENvbnRhaW5lciYgaW5pdGlhbENvbnRhaW5pbmdCbG9jaykKIHsKICAgICBUZXh0U3RyZWFtIHN0
cmVhbTsKLSAgICBhdXRvIG1pc21hdGNoaW5nR2VvbWV0cnkgPSB2ZXJpZnlBbmRPdXRwdXRTdWJ0
cmVlKHN0cmVhbSwgKnRoaXMsIHJlbmRlclZpZXcsIGluaXRpYWxDb250YWluaW5nQmxvY2spOwor
ICAgIGF1dG8gbWlzbWF0Y2hpbmdHZW9tZXRyeSA9IHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoc3Ry
ZWFtLCBsYXlvdXRTdGF0ZSwgcmVuZGVyVmlldywgaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAg
ICAgaWYgKCFtaXNtYXRjaGluZ0dlb21ldHJ5KQogICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxF
KFRSRUVfREVCVUdHSU5HKQogICAgIHNob3dSZW5kZXJUcmVlKCZyZW5kZXJWaWV3KTsKLSAgICBz
aG93TGF5b3V0VHJlZShpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCB0aGlzKTsKKyAgICBzaG93TGF5
b3V0VHJlZShpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCAmbGF5b3V0U3RhdGUpOwogI2VuZGlmCiAg
ICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCA0YTM2Yjk5N2QyNjdhMTVmOTcxYmYzMzZjNDNhZjQ2NzE3NDQxYTBiLi5hMDI2OWNkMzEx
MTg0ODk4NWNhYWE1MTU3ZTJkNDNhZGFkMjI3ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTE2NiwxMCArMTY2LDExIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpCiAg
ICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gpOwogICAgIGlmIChp
czxDb250YWluZXI+KGxheW91dEJveCkpIHsKICAgICAgICAgLy8gU3dpY2ggb3ZlciB0byB0aGUg
bmV3IGZvcm1hdHRpbmcgY29udGV4dCAodGhlIG9uZSB0aGF0IHRoZSByb290IGNyZWF0ZXMpLgot
ICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gbGF5b3V0U3RhdGUoKS5jcmVhdGVGb3Jt
YXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkpOworICAgICAgICBh
dXRvJiByb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOworICAg
ICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0
dGluZ0NvbnRleHQocm9vdENvbnRhaW5lciwgbGF5b3V0U3RhdGUoKSk7CiAgICAgICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KCk7CiAgICAgICAgIC8vIENvbWUgYmFj
ayBhbmQgZmluYWxpemUgdGhlIHJvb3QncyBnZW9tZXRyeS4KLSAgICAgICAgY29tcHV0ZUhlaWdo
dEFuZE1hcmdpbihsYXlvdXRCb3gpOworICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKHJv
b3RDb250YWluZXIpOwogICAgICAgICAvLyBOb3cgdGhhdCB3ZSBjb21wdXRlZCB0aGUgcm9vdCdz
IGhlaWdodCwgd2UgY2FuIGdvIGJhY2sgYW5kIGxheW91dCB0aGUgb3V0LW9mLWZsb3cgY29udGVu
dC4KICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRlbnQoKTsK
ICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAppbmRleCA3OGM3Yjc5ODNhZGMwYWE1ZTQ0N2YzZGI2OTk2MTFmMmNkY2ZkODhkLi44MTFiMTYz
ZDc4ZmZhMTE4ZGY0MWRkZjBhNTU4NDZkZWVkMGY0MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgRm9ybWF0dGlu
Z0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsYXlvdXRCb3guZXN0YWJs
aXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpICYmIGlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKLSAg
ICAgICAgICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRv
d25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cygpOworICAgICAgICAgICAgcmV0dXJuIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1h
dHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUo
KSktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwogCiAgICAgICAgIGlmICgh
aXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICByZXR1cm4geyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0lu
dmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrSW52YWxpZGF0aW9uLmNwcAppbmRleCBiZDEyODBjZjNhMGJkMzNlN2Q2YTczNmVkNDM0N2Rl
YTMzMjgxZWNlLi5hMDhhZjdmYWMyNjFlZmJiY2U5NWQyMjQzZDU1ZDE2ZjQ5MzdlNmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrSW52YWxp
ZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrSW52YWxpZGF0aW9uLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkludmFsaWRh
dGlvbi5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5l
ci5oIgotI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMjUgKzQ3LDI0IEBAIHN0YXRp
YyBib29sIGludmFsaWRhdGlvblN0b3BzQXRGb3JtYXR0aW5nQ29udGV4dEJvdW5kYXJ5KGNvbnN0
IENvbnRhaW5lciYgZm9ybWF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBPcHRpb25T
ZXQ8TGF5b3V0U3RhdGU6OlVwZGF0ZVR5cGU+IGNvbXB1dGVVcGRhdGVUeXBlKGNvbnN0IEJveCYs
IFN0eWxlRGlmZiwgQmxvY2tGb3JtYXR0aW5nU3RhdGUmKQorc3RhdGljIE9wdGlvblNldDxMYXlv
dXRDb250ZXh0OjpVcGRhdGVUeXBlPiBjb21wdXRlVXBkYXRlVHlwZShjb25zdCBCb3gmLCBTdHls
ZURpZmYsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJikKIHsKLSAgICByZXR1cm4gTGF5b3V0U3RhdGU6
OnVwZGF0ZUFsbCgpOworICAgIHJldHVybiBMYXlvdXRDb250ZXh0Ojp1cGRhdGVBbGwoKTsKIH0K
IAotc3RhdGljIE9wdGlvblNldDxMYXlvdXRTdGF0ZTo6VXBkYXRlVHlwZT4gY29tcHV0ZVVwZGF0
ZVR5cGVGb3JBbmNlc3Rvcihjb25zdCBDb250YWluZXImLCBTdHlsZURpZmYsIEJsb2NrRm9ybWF0
dGluZ1N0YXRlJikKK3N0YXRpYyBPcHRpb25TZXQ8TGF5b3V0Q29udGV4dDo6VXBkYXRlVHlwZT4g
Y29tcHV0ZVVwZGF0ZVR5cGVGb3JBbmNlc3Rvcihjb25zdCBDb250YWluZXImLCBTdHlsZURpZmYs
IEJsb2NrRm9ybWF0dGluZ1N0YXRlJikKIHsKLSAgICByZXR1cm4gTGF5b3V0U3RhdGU6OnVwZGF0
ZUFsbCgpOworICAgIHJldHVybiBMYXlvdXRDb250ZXh0Ojp1cGRhdGVBbGwoKTsKIH0KIAotSW52
YWxpZGF0aW9uUmVzdWx0IEJsb2NrSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBTdHlsZURpZmYgc3R5bGVEaWZmLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
Ci0gICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKK0ludmFsaWRhdGlv
blJlc3VsdCBCbG9ja0ludmFsaWRhdGlvbjo6aW52YWxpZGF0ZShjb25zdCBCb3gmIGxheW91dEJv
eCwgU3R5bGVEaWZmIHN0eWxlRGlmZiwgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgQmxv
Y2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKIHsKICAgICAvLyBJbnZhbGlkYXRl
IHRoaXMgYm94IGFuZCB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiBhbGwgdGhlIHdheSB1cCB0
byB0aGUgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QgKGFuZCBiZXlvbmQgaWYgbmVlZGVkKS4KLSAg
ICBsYXlvdXRTdGF0ZS5tYXJrTmVlZHNVcGRhdGUobGF5b3V0Qm94LCBjb21wdXRlVXBkYXRlVHlw
ZShsYXlvdXRCb3gsIHN0eWxlRGlmZiwgZm9ybWF0dGluZ1N0YXRlKSk7CisgICAgbGF5b3V0Q29u
dGV4dC5tYXJrTmVlZHNVcGRhdGUobGF5b3V0Qm94LCBjb21wdXRlVXBkYXRlVHlwZShsYXlvdXRC
b3gsIHN0eWxlRGlmZiwgZm9ybWF0dGluZ1N0YXRlKSk7CiAgICAgZm9yIChhdXRvKiBjb250YWlu
aW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5pbmdCbG9jazsg
Y29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKSkgewog
ICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0
KCkgJiYgaW52YWxpZGF0aW9uU3RvcHNBdEZvcm1hdHRpbmdDb250ZXh0Qm91bmRhcnkoKmNvbnRh
aW5pbmdCbG9jaywgbGF5b3V0Qm94LCBzdHlsZURpZmYpKQogICAgICAgICAgICAgcmV0dXJuIHsg
Y29udGFpbmluZ0Jsb2NrIH07Ci0gICAgICAgIGxheW91dFN0YXRlLm1hcmtOZWVkc1VwZGF0ZSgq
Y29udGFpbmluZ0Jsb2NrLCBjb21wdXRlVXBkYXRlVHlwZUZvckFuY2VzdG9yKCpjb250YWluaW5n
QmxvY2ssIHN0eWxlRGlmZiwgZm9ybWF0dGluZ1N0YXRlKSk7CisgICAgICAgIGxheW91dENvbnRl
eHQubWFya05lZWRzVXBkYXRlKCpjb250YWluaW5nQmxvY2ssIGNvbXB1dGVVcGRhdGVUeXBlRm9y
QW5jZXN0b3IoKmNvbnRhaW5pbmdCbG9jaywgc3R5bGVEaWZmLCBmb3JtYXR0aW5nU3RhdGUpKTsK
ICAgICB9CiAgICAgLy8gSW52YWxpZGF0aW9uIGFsd2F5cyBzdG9wcyBhdCB0aGUgaW5pdGlhbCBj
b250YWluaW5nIGJsb2NrLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlv
bi5oCmluZGV4IDUzZGViM2Y3YTcxYWI3YzM1MTg3OTg2NzJlMmM1YjRmOGQ3MDYwNTcuLmFlZDQ0
ZTBhMTk2MTk2MTk1ZWExYWQyOGU2NTk4ODE5ZjBiN2QwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tJbnZhbGlkYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrSW52YWxpZGF0aW9uLmgK
QEAgLTM3LDE0ICszNywxNCBAQCBjbGFzcyBCb3g7CiBjbGFzcyBCbG9ja0Zvcm1hdHRpbmdTdGF0
ZTsKIGNsYXNzIENvbnRhaW5lcjsKIHN0cnVjdCBJbnZhbGlkYXRpb25SZXN1bHQ7Ci1jbGFzcyBM
YXlvdXRTdGF0ZTsKK2NsYXNzIExheW91dENvbnRleHQ7CiBlbnVtIGNsYXNzIFN0eWxlRGlmZjsK
IAogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGJveCBpbnZhbGlkYXRpb24gZm9yIGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dC4KIGNsYXNzIEJsb2NrSW52YWxpZGF0aW9uIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEJsb2NrSW52YWxpZGF0aW9uKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
SW52YWxpZGF0aW9uUmVzdWx0IGludmFsaWRhdGUoY29uc3QgQm94JiwgU3R5bGVEaWZmLCBMYXlv
dXRTdGF0ZSYsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7CisgICAgc3RhdGljIEludmFsaWRhdGlv
blJlc3VsdCBpbnZhbGlkYXRlKGNvbnN0IEJveCYsIFN0eWxlRGlmZiwgTGF5b3V0Q29udGV4dCYs
IEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAppbmRleCBkYzFjZjA2YzViZGU5NDMxNjZhN2Ix
YWFjM2QzZGUyNDAxOWZlMjY4Li5iYjc5NTI3ZjVmZTQ4YWY1N2VjYzQ5OWU5OTMxMTZkYjdkNTQ3
MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgRmxvYXRCb3g7CiBjbGFzcyBGb3JtYXR0aW5nQ29u
dGV4dDsKIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OworY2xhc3MgTGF5b3V0Q29udGV4dDsKIGNsYXNzIExheW91dFN0YXRlOwogY2xhc3MgVGFi
bGVGb3JtYXR0aW5nQ29udGV4dDsKIH0KQEAgLTU4LDYgKzU5LDggQEAgcHVibGljOgogICAgIGZy
aWVuZCBjbGFzcyBMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OwogICAgIGZyaWVuZCBjbGFzcyBM
YXlvdXQ6OkZsb2F0aW5nQ29udGV4dDsKICAgICBmcmllbmQgY2xhc3MgTGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDsKKyAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeSBhbmQgc2hvdWxkIGJl
IHJlbW92ZWQgd2hlbiBMYXlvdXRDb250ZXh0OjpydW4gaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAg
ICBmcmllbmQgY2xhc3MgTGF5b3V0OjpMYXlvdXRDb250ZXh0OwogICAgIGZyaWVuZCBjbGFzcyBM
YXlvdXQ6OkxheW91dFN0YXRlOwogICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6OlRhYmxlRm9ybWF0
dGluZ0NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA5
MDM2MTM3NTc2MzI4MmYyMDFjZjcyNzgyMGY3ZjBjNmQxODZiNmU2Li5jNjZmZDA3YWVhNTE5ZDkx
N2NiYjRjMDViYzc5OGMzNjE2YjJmYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEl0ZW0uaCIKICNp
bmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNs
dWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVGV4dHV0aWwuaCIKQEAgLTE3NSw3ICsxNzYsNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW50cmluc2ljV2lkdGhGb3JGb3Jt
YXR0aW5nUm9vdChjb25zdCBCb3gmCiAgICAgaWYgKGF1dG8gZml4ZWRXaWR0aCA9IGdlb21ldHJ5
KCkuZml4ZWRWYWx1ZShmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpKSkKICAg
ICAgICAgY29uc3RyYWludHMgPSB7ICpmaXhlZFdpZHRoLCAqZml4ZWRXaWR0aCB9OwogICAgIGVs
c2UgaWYgKGlzPENvbnRhaW5lcj4oZm9ybWF0dGluZ1Jvb3QpKQotICAgICAgICBjb25zdHJhaW50
cyA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFp
bmVyPihmb3JtYXR0aW5nUm9vdCkpLT5jb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
KTsKKyAgICAgICAgY29uc3RyYWludHMgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChkb3duY2FzdDxDb250YWluZXI+KGZvcm1hdHRpbmdSb290KSwgbGF5b3V0U3RhdGUo
KSktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwogICAgIGNvbnN0cmFpbnRz
ID0gZ2VvbWV0cnkoKS5jb25zdHJhaW5CeU1pbk1heFdpZHRoKGZvcm1hdHRpbmdSb290LCBjb25z
dHJhaW50cyk7CiAgICAgY29uc3RyYWludHMuZXhwYW5kKGdlb21ldHJ5Rm9yQm94KGZvcm1hdHRp
bmdSb290KS5ob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpKTsKICAgICBmb3JtYXR0
aW5nU3RhdGUoKS5zZXRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94KGZvcm1hdHRpbmdS
b290LCBjb25zdHJhaW50cyk7CkBAIC0yMzcsMTAgKzIzOCwxMSBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiByb290
LCBVc2VkSAogICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3gocm9vdCkuc2V0VG9wTGVm
dCh7IDAsIDAgfSk7CiAgICAgLy8gU3dpY2ggb3ZlciB0byB0aGUgbmV3IGZvcm1hdHRpbmcgY29u
dGV4dCAodGhlIG9uZSB0aGF0IHRoZSByb290IGNyZWF0ZXMpLgogICAgIGlmIChpczxDb250YWlu
ZXI+KHJvb3QpKSB7Ci0gICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBsYXlvdXRTdGF0
ZSgpLmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCkpOwor
ICAgICAgICBhdXRvJiByb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihyb290KTsK
KyAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IExheW91dENvbnRleHQ6OmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KHJvb3RDb250YWluZXIsIGxheW91dFN0YXRlKCkpOwogICAgICAgICBm
b3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudCgpOwogICAgICAgICAvLyBDb21l
IGJhY2sgYW5kIGZpbmFsaXplIHRoZSByb290J3MgaGVpZ2h0IGFuZCBtYXJnaW4uCi0gICAgICAg
IGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4ocm9vdCk7CisgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRN
YXJnaW4ocm9vdENvbnRhaW5lcik7CiAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGNvbXB1dGVkIHRo
ZSByb290J3MgaGVpZ2h0LCB3ZSBjYW4gZ28gYmFjayBhbmQgbGF5b3V0IHRoZSBvdXQtb2YtZmxv
dyBjb250ZW50LgogICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29u
dGVudCgpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lSW52YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUludmFsaWRhdGlvbi5jcHAKaW5kZXggY2EyMzVl
N2JlZmEyNzQyYWY3NjlhMGUyZTlmMGYyZTE2NzdiYWI1Ny4uNGE5NGMzNGU0ZWE4MmM4ZmIxYzk5
MDIyYTQ0ZDg4Mzc0NDMxMzFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lSW52YWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJbnZhbGlkYXRpb24uY3BwCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAi
SW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0
U3RhdGUuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksOSArMzksOSBAQCBu
YW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGluZUlu
dmFsaWRhdGlvbik7CiAKLUludmFsaWRhdGlvblJlc3VsdCBJbmxpbmVJbnZhbGlkYXRpb246Omlu
dmFsaWRhdGUoY29uc3QgQm94JiBsYXlvdXRCb3gsIFN0eWxlRGlmZiwgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmKQorSW52YWxpZGF0aW9uUmVzdWx0IElu
bGluZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZShjb25zdCBCb3gmIGxheW91dEJveCwgU3R5bGVE
aWZmLCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUm
KQogewotICAgIGxheW91dFN0YXRlLm1hcmtOZWVkc1VwZGF0ZShsYXlvdXRCb3gpOworICAgIGxh
eW91dENvbnRleHQubWFya05lZWRzVXBkYXRlKGxheW91dEJveCk7CiAgICAgcmV0dXJuIHsgbnVs
bHB0ciB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVJbnZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUludmFsaWRhdGlvbi5oCmluZGV4IDVhZTg4MjE3ZDQyYjVlMTFi
YTc1MDVjYzUwYzY1YjZiYjUwODViMTYuLmQ3NTU1NjU2NzZiMWY4NTA4NmQ2Y2E4OTk1OTNjMWVi
NzVmNDQ0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUludmFsaWRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUludmFsaWRhdGlvbi5oCkBAIC0zNywxNCArMzcsMTQgQEAgY2xh
c3MgQm94OwogY2xhc3MgQ29udGFpbmVyOwogY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlOwog
c3RydWN0IEludmFsaWRhdGlvblJlc3VsdDsKLWNsYXNzIExheW91dFN0YXRlOworY2xhc3MgTGF5
b3V0Q29udGV4dDsKIGVudW0gY2xhc3MgU3R5bGVEaWZmOwogCiAvLyBUaGlzIGNsYXNzIGltcGxl
bWVudHMgYm94IGludmFsaWRhdGlvbiBmb3IgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4KIGNs
YXNzIElubGluZUludmFsaWRhdGlvbiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxp
bmVJbnZhbGlkYXRpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBJbnZhbGlkYXRpb25SZXN1bHQg
aW52YWxpZGF0ZShjb25zdCBCb3gmLCBTdHlsZURpZmYsIExheW91dFN0YXRlJiwgSW5saW5lRm9y
bWF0dGluZ1N0YXRlJik7CisgICAgc3RhdGljIEludmFsaWRhdGlvblJlc3VsdCBpbnZhbGlkYXRl
KGNvbnN0IEJveCYsIFN0eWxlRGlmZiwgTGF5b3V0Q29udGV4dCYsIElubGluZUZvcm1hdHRpbmdT
dGF0ZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDdhYTQ4YjdmYzA3MjIyNGVmMmU4ZGM3
NDc4YzM3N2Y0ODkwYWY4NTUuLmJkYjRiNGYwYjY1N2NhZjRiZjExYmQ1NDM4YjhmMGUyYjhjM2Fk
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJMYXlvdXRCb3gu
aCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29u
dGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dERl
c2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dFBoYXNlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0U3RhdGUuaCIKQEAgLTM2Nyw3ICszNjgsNyBAQCB2b2lkIHByaW50TGF5b3V0VHJlZUZv
ckxpdmVEb2N1bWVudHMoKQogICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2sgPSBU
cmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKICAgICAgICAgYXV0byBs
YXlvdXRTdGF0ZSA9IExheW91dFN0YXRlIHsgfTsKICAgICAgICAgbGF5b3V0U3RhdGUuc2V0UXVp
cmtzTW9kZShyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5MaW1pdGVkUXVpcmtzTW9kZSgpID8gTGF5
b3V0U3RhdGU6OlF1aXJrc01vZGU6OkxpbWl0ZWQgOiAocmVuZGVyVmlldy5kb2N1bWVudCgpLmlu
UXVpcmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OlllcyA6IExheW91dFN0YXRl
OjpRdWlya3NNb2RlOjpObykpOwotICAgICAgICBsYXlvdXRTdGF0ZS51cGRhdGVMYXlvdXQoKTsK
KyAgICAgICAgTGF5b3V0Q29udGV4dChsYXlvdXRTdGF0ZSkubGF5b3V0KCk7CiAgICAgICAgIHNo
b3dMYXlvdXRUcmVlKCppbml0aWFsQ29udGFpbmluZ0Jsb2NrLCAmbGF5b3V0U3RhdGUpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVm
b3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDJmYWVmOTJmNjM3MzU4
NzBiNjJhYTc1OTg4ZWE4ZGNiNjRlZDhmYjguLjA2NDIxYjY2YTY3NzA2OWYwMjM4NTlkNTllYmQ0
NzAzZTRlODAxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtOTcsNyAr
OTcsNyBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQ2VsbEJveChj
b25zdCBCb3gmIGNlbGxMYXlvdXRCb3gsIGNvbnN0CiAKICAgICBBU1NFUlQoY2VsbExheW91dEJv
eC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGlzPENvbnRh
aW5lcj4oY2VsbExheW91dEJveCkpCi0gICAgICAgIGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0
dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPihjZWxsTGF5b3V0Qm94KSktPmxheW91dElu
Rmxvd0NvbnRlbnQoKTsKKyAgICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0Nv
bnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPihjZWxsTGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUoKSkt
PmxheW91dEluRmxvd0NvbnRlbnQoKTsKICAgICBjZWxsRGlzcGxheUJveC5zZXRWZXJ0aWNhbE1h
cmdpbih7IHsgfSwgeyB9IH0pOwogICAgIGNlbGxEaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWln
aHQoZ2VvbWV0cnkoKS50YWJsZUNlbGxIZWlnaHRBbmRNYXJnaW4oY2VsbExheW91dEJveCkuaGVp
Z2h0KTsKICAgICAvLyBGSVhNRTogQ2hlY2sgd2hhdCB0byBkbyB3aXRoIG91dC1vZi1mbG93IGNv
bnRlbnQuCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5zKCkKICAgICAgICAgaWYgKCFpbnRyaW5zaWNX
aWR0aCkgewogICAgICAgICAgICAgaW50cmluc2ljV2lkdGggPSBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzIHsgfTsKICAgICAgICAgICAgIGlmIChpczxDb250YWluZXI+KHRhYmxlQ2VsbEJveCkp
Ci0gICAgICAgICAgICAgICAgaW50cmluc2ljV2lkdGggPSBsYXlvdXRTdGF0ZSgpLmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4odGFibGVDZWxsQm94KSktPmNvbXB1
dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOworICAgICAgICAgICAgICAgIGludHJpbnNp
Y1dpZHRoID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8
Q29udGFpbmVyPih0YWJsZUNlbGxCb3gpLCBsYXlvdXRTdGF0ZSgpKS0+Y29tcHV0ZWRJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKCk7CiAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aCA9IGdlb21l
dHJ5KCkuY29uc3RyYWluQnlNaW5NYXhXaWR0aCh0YWJsZUNlbGxCb3gsICppbnRyaW5zaWNXaWR0
aCk7CiAgICAgICAgICAgICBhdXRvIGJvcmRlciA9IGdlb21ldHJ5KCkuY29tcHV0ZWRCb3JkZXIo
dGFibGVDZWxsQm94KTsKICAgICAgICAgICAgIGF1dG8gcGFkZGluZyA9ICpnZW9tZXRyeSgpLmNv
bXB1dGVkUGFkZGluZyh0YWJsZUNlbGxCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgVXNlZEhv
cml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgeyB9LCB7IH0gfSB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVJbnZhbGlkYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUludmFsaWRh
dGlvbi5jcHAKaW5kZXggZTQ4MTNmZGI1YTgwNTgzYWJlMzc1MDk3NzQ2MzVkZWViOGQxOWJlZS4u
OWJlNzVhZmRlZGY0NDNlYTYwODkzYjBkMTRmNmI1MjBlYjliOWM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUludmFsaWRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUludmFsaWRh
dGlvbi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkludmFsaWRhdGlvbi5oIgog
I2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiVGFibGVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgogCkBAIC0zOSw5ICszOCw5IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoVGFibGVJbnZhbGlkYXRpb24pOwogCi1JbnZhbGlkYXRpb25SZXN1
bHQgVGFibGVJbnZhbGlkYXRpb246OmludmFsaWRhdGUoY29uc3QgQm94JiBsYXlvdXRCb3gsIFN0
eWxlRGlmZiwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYp
CitJbnZhbGlkYXRpb25SZXN1bHQgVGFibGVJbnZhbGlkYXRpb246OmludmFsaWRhdGUoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIFN0eWxlRGlmZiwgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwg
VGFibGVGb3JtYXR0aW5nU3RhdGUmKQogewotICAgIGxheW91dFN0YXRlLm1hcmtOZWVkc1VwZGF0
ZShsYXlvdXRCb3gpOworICAgIGxheW91dENvbnRleHQubWFya05lZWRzVXBkYXRlKGxheW91dEJv
eCk7CiAgICAgcmV0dXJuIHsgbnVsbHB0ciB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlSW52YWxpZGF0aW9uLmgKaW5kZXgg
YTIwZDQ5YThiOTc0YmZjMzRkYzJmMTgxNjdkOTdjOWJhNjJhODYwYi4uYjdjNTI2NDUxMjYzOGRh
NTUxMmJkNmU0MDliYTliNjExODg3N2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUludmFsaWRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVJbnZhbGlkYXRpb24uaApAQCAtMzYsMTQg
KzM2LDE0IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogY2xhc3MgQm94OwogY2xhc3MgVGFibGVGb3Jt
YXR0aW5nU3RhdGU7CiBzdHJ1Y3QgSW52YWxpZGF0aW9uUmVzdWx0OwotY2xhc3MgTGF5b3V0U3Rh
dGU7CitjbGFzcyBMYXlvdXRDb250ZXh0OwogZW51bSBjbGFzcyBTdHlsZURpZmY7CiAKIC8vIFRo
aXMgY2xhc3MgaW1wbGVtZW50cyBib3ggaW52YWxpZGF0aW9uIGZvciB0YWJsZSBmb3JtYXR0aW5n
IGNvbnRleHQuCiBjbGFzcyBUYWJsZUludmFsaWRhdGlvbiB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChUYWJsZUludmFsaWRhdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEludmFsaWRh
dGlvblJlc3VsdCBpbnZhbGlkYXRlKGNvbnN0IEJveCYsIFN0eWxlRGlmZiwgTGF5b3V0U3RhdGUm
LCBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYpOworICAgIHN0YXRpYyBJbnZhbGlkYXRpb25SZXN1bHQg
aW52YWxpZGF0ZShjb25zdCBCb3gmLCBTdHlsZURpZmYsIExheW91dENvbnRleHQmLCBUYWJsZUZv
cm1hdHRpbmdTdGF0ZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3TGF5b3V0Q29udGV4dC5jcHAKaW5kZXggZTg1OGM5MmNiZjhjMzFhMzIxYmYzODAwOTdhYmE1
NWYxNTcwMDBhZS4uNmFiNDBlYzkwOTc2ZjdmMDJjMDcxZTU2N2FkNDk1YzcwZTkwMzcwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCkBAIC00
MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSNp
bmNsdWRlICJMYXlvdXRTdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRp
ZgogCiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CkBAIC01NCw3ICs1NCw3IEBAIHN0YXRp
YyB2b2lkIGxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgUmVuZGVyVmlldyYgcmVu
ZGVyVmlldykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBMYXlvdXQ6OkxheW91dFN0YXRlOjpydW4ocmVuZGVyVmlldyk7CisgICAgTGF5b3V0OjpM
YXlvdXRDb250ZXh0OjpydW4ocmVuZGVyVmlldyk7CiB9IAogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>