<?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>238069</bug_id>
          
          <creation_ts>2022-03-18 02:09:25 -0700</creation_ts>
          <short_desc>[Cocoa] Teach WebKit how to serialize CGColors</short_desc>
          <delta_ts>2022-03-23 12:17:53 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238279</see_also>
          <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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852662</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 02:09:25 -0700</bug_when>
    <thetext>[IPC] Teach WebKit how to serialize CGColors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852663</commentid>
    <comment_count>1</comment_count>
      <attachid>455080</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 02:15:53 -0700</bug_when>
    <thetext>Created attachment 455080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852664</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 02:15:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/90124325&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852665</commentid>
    <comment_count>3</comment_count>
      <attachid>455081</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 02:18:45 -0700</bug_when>
    <thetext>Created attachment 455081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852840</commentid>
    <comment_count>4</comment_count>
      <attachid>455137</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 14:36:31 -0700</bug_when>
    <thetext>Created attachment 455137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852871</commentid>
    <comment_count>5</comment_count>
      <attachid>455137</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-18 15:50:01 -0700</bug_when>
    <thetext>Comment on attachment 455137
Patch

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

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:60
&gt; +- (instancetype _Nullable)initWithCGColor:(CGColorRef)wrappedColor;

no infectious nullable in implementation files, please! (in many places)

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:74
&gt; +    if (CFGetTypeID(object) == CGColorGetTypeID())

should this check the type hierarchy instead of a specific type? what if you have a CGColor subtype? (is that even a thing?)

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:250
&gt; +    // Non-toll-free-bridged CF types do not conform to NSSecureCoding.

Wouldn&apos;t non-bridged CF types also be exploding about messaging them with -isKindOfClass? (maybe not)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852900</commentid>
    <comment_count>6</comment_count>
      <attachid>455137</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 17:14:51 -0700</bug_when>
    <thetext>Comment on attachment 455137
Patch

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

&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:250
&gt;&gt; +    // Non-toll-free-bridged CF types do not conform to NSSecureCoding.
&gt; 
&gt; Wouldn&apos;t non-bridged CF types also be exploding about messaging them with -isKindOfClass? (maybe not)

They behave as NSObject (rather than NSColor or whatever).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852929</commentid>
    <comment_count>7</comment_count>
      <attachid>455137</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 18:54:54 -0700</bug_when>
    <thetext>Comment on attachment 455137
Patch

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

&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:74
&gt;&gt; +    if (CFGetTypeID(object) == CGColorGetTypeID())
&gt; 
&gt; should this check the type hierarchy instead of a specific type? what if you have a CGColor subtype? (is that even a thing?)

(Followed up offline about this)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852930</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-18 19:00:47 -0700</bug_when>
    <thetext>Committed r291518 (248624@trunk): &lt;https://commits.webkit.org/248624@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455080</attachid>
            <date>2022-03-18 02:15:53 -0700</date>
            <delta_ts>2022-03-18 02:18:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238069-20220318021552.patch</filename>
            <type>text/plain</type>
            <size>13288</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiZGMwMDRiMmNhZTNmMzY1ZTYzNTEy
ZjdhOGIwMGU2Yzk4OTM5MDkuLjExZDlmNmE3NTUyNTczN2ZlYWM5OWViN2RlMDdlOGY2ZmQxMGFm
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTggIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBUZWFjaCBXZWJLaXQgaG93IHRv
IHNlcmlhbGl6ZSBDR0NvbG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4MDY5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDEyNDMyNT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybVVzZS5oOgorCiAyMDIyLTAzLTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIHRyeVJlc2VydmVVbmNvbW1pdHRlZEFsaWduZWQgc2hvdWxkIHJv
dW5kIHVwIHRvIGFsaWdubWVudCBub3QgYnl0ZXMgcmVxdWVzdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0
MWFjN2I0NGNlYzg5NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uNWU4ZjczZTEwY2UwYzc4YmIx
ZjM1NWI5NGYzZTY4NjU2Zjc1N2RkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIy
LTAzLTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0lQQ10gVGVhY2ggV2ViS2l0IGhvdyB0byBzZXJpYWxpemUgQ0dDb2xvcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vOTAxMjQzMjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNpbmcgTlNDb2xvcnMvVUlDb2xvcnMgaW4gQ29yZVRleHQgYXZv
aWRzIHRoZSBDR0NvbG9yIHNlcmlhbGl6YXRpb24gY29kZSwgYnV0IGl0CisgICAgICAgIG9ubHkg
aXMgcG9zc2libGUgb24gY2VydGFpbiBPU2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxl
dHRlcyk6CisKIDIwMjItMDMtMTcgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNv
bT4KIAogICAgICAgICBTdWJncmlkIGl0ZW1zIHNob3VsZCBhbHdheXMgYmUgc3RyZXRjaGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAwNzk3Yzg0MjQyZTgyNWQ4YjBhNTU1ZjJiMzk5ZTU5NDQ1ZDRlMjVmLi42ZjYw
YzRmMmVkNWUxMDdmOWNlYWI4OWRhMDhiNTRjZDliMTk3YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDIyLTAzLTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0lQQ10gVGVhY2ggV2ViS2l0IGhvdyB0byBzZXJpYWxpemUgQ0dDb2xv
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNo
IG91ciBPYmplY3RpdmUgQyBJUEMgdHlwZXMgaG93IHRvIHNlcmlhbGl6ZSBDR0NvbG9ycy4gQWxz
bywgYmVjYXVzZQorICAgICAgICB3ZSBoYXZlIGEgcGF0aCB3aGVyZSB3ZSB1c2UgTlNTZWN1cmVD
b2RpbmcgdG8gc2VyaWFsaXplIHVua25vd24gdHlwZXMsCisgICAgICAgIHRoaXMgcGF0Y2ggYWxz
byBhdWdtZW50cyBvdXIgTlNLZXllZEFyY2hpdmVyRGVsZWdhdGUgdG8gaGFuZGxlIENHQ29sb3Jz
CisgICAgICAgIGluIHVua25vd24gdHlwZXMgKGxpa2UgTlNBdHRyaWJ1dGVkU3RyaW5nKSB0b28u
CisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKC1bV0tTZWN1cmVDb2RpbmdBcmNoaXZpbmdEZWxlZ2F0ZSBhcmNoaXZlcjp3aWxsRW5jb2Rl
T2JqZWN0Ol0pOgorICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0FyY2hpdmluZ0RlbGVnYXRlIHVu
YXJjaGl2ZXI6ZGlkRGVjb2RlT2JqZWN0Ol0pOgorICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0NH
Q29sb3JXcmFwcGVyIHdyYXBwZWRDb2xvcl0pOgorICAgICAgICAoK1tXS1NlY3VyZUNvZGluZ0NH
Q29sb3JXcmFwcGVyIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSk6CisgICAgICAgICgtW1dLU2VjdXJl
Q29kaW5nQ0dDb2xvcldyYXBwZXIgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXS1Nl
Y3VyZUNvZGluZ0NHQ29sb3JXcmFwcGVyIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dL
U2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgaW5pdFdpdGhDR0NvbG9yOl0pOgorICAgICAgICAo
SVBDOjp0eXBlRnJvbU9iamVjdCk6CisgICAgICAgIChJUEM6OmVuY29kZUNHQ29sb3JJbnRlcm5h
bCk6CisgICAgICAgIChJUEM6OmRlY29kZUNHQ29sb3JJbnRlcm5hbCk6CisgICAgICAgIChJUEM6
OmRlY29kZVNlY3VyZUNvZGluZ0ludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2RlT2JqZWN0
KToKKyAgICAgICAgKElQQzo6ZGVjb2RlT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorCiAyMDIyLTAzLTE3ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBTdXBwb3J0IFBERiBzZWFyY2ggd2hlbiB1c2luZyBhIGZpbmQgaW50ZXJh
Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDRmNGM2OTAxODRjMzQxNjc1ZWZiYWIzMDJmZWEz
ZWM4Y2JjYzYxMzcuLjI4NmI1ZGFmNzNiNzZkZmM3YmZkMTZlZjFiMTQwOGQyMWNkNTYxZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2UuaApAQCAtMzYxLDMgKzM2MSwxMCBAQAogI2lmICFkZWZpbmVkKFVTRV9J
U09fTUFMTE9DKQogI2RlZmluZSBVU0VfSVNPX01BTExPQyAxCiAjZW5kaWYKKworI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDQwMCkgXAor
ICAgIHx8ICgoUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxNTA1MDApIFwKKyAgICB8fCAoUExBVEZPUk0o
V0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgODA2MDApIFwKKyAg
ICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwg
MTUwNTAwKQorI2RlZmluZSBVU0VfQ09SRV9URVhUX0NHQ09MT1JfSEFORExJTkcgMQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggZTYxNzc5ODFmMWU1ODNlOGY0ZDcxYjEzMWVi
MTYyNzJhNThlNjdiNy4uMGJlN2ZhZThkYTExZTc1YjA0OWJkMWQ2ZGZkNTZiMzNhNGY2MTAxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb2xvckNvY29hLmgi
CiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJGb250Q3JlYXRpb25Db250ZXh0LmgiCkBAIC00OTQsNyArNDk1LDExIEBAIHN0
YXRpYyB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBhdHRyaWJ1dGVzCiAgICAgICAgICAgICBjb25zdCBhdXRvJiBjb2xvciA9IHBh
aXIuc2Vjb25kOwogICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IHBhaXIuZmlyc3Q7IC8v
IFRoZXJlIGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgogICAgICAgICAgICAgYXV0byBudW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJ
bnQ2NFR5cGUsICZyYXdJbmRleCkpOworI2lmIFVTRShDT1JFX1RFWFRfQ0dDT0xPUl9IQU5ETElO
RykKICAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3QgPSBjYWNoZWRDR0NvbG9yKGNvbG9yKTsK
KyNlbHNlCisgICAgICAgICAgICBhdXRvIGNvbG9yT2JqZWN0ID0gY29jb2FDb2xvcihjb2xvcik7
CisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG92ZXJyaWRlRGljdGlv
bmFyeS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdC5nZXQoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldENvdW50KG92ZXJyaWRlRGljdGlvbmFyeS5nZXQo
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQppbmRleCAxMjhhYThjNDg2Yzk2YjliZWQyZTNmNmUwN2Y1NzBhZWY1YzBlNWYwLi4zNTYz
NjEzYzQwNDFlMzg4ZTllMTcyNWI4OWQzMDFjNzZlMzY3NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2LDYgKzU2LDEx
IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TVVJMICogd3JhcHBlZFVSTDsKIEBlbmQKIAorQGludGVyZmFjZSBXS1NlY3VyZUNvZGlu
Z0NHQ29sb3JXcmFwcGVyIDogTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPgorLSAoaW5zdGFuY2V0
eXBlIF9OdWxsYWJsZSlpbml0V2l0aENHQ29sb3I6KENHQ29sb3JSZWYpd3JhcHBlZENvbG9yOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR0NvbG9yUmVmIHdyYXBwZWRDb2xvcjsK
K0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdLU2VjdXJlQ29kaW5nQXJjaGl2aW5nRGVsZWdhdGUK
IAogLSAobnVsbGFibGUgaWQpYXJjaGl2ZXI6KE5TS2V5ZWRBcmNoaXZlciAqKWFyY2hpdmVyIHdp
bGxFbmNvZGVPYmplY3Q6KGlkKW9iamVjdApAQCAtNjMsNiArNjgsOSBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogICAgIGlmIChhdXRvIHVud3JhcHBlZFVSTCA9IGR5bmFtaWNfb2JqY19jYXN0
PE5TVVJMPihvYmplY3QpKQogICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLU2VjdXJlQ29kaW5n
VVJMV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6dW53cmFwcGVkVVJMXSkuYXV0b3JlbGVhc2Uo
KTsKIAorICAgIGlmIChDRkdldFR5cGVJRChvYmplY3QpID09IENHQ29sb3JHZXRUeXBlSUQoKSkK
KyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1NlY3VyZUNvZGluZ0NHQ29sb3JXcmFwcGVyIGFs
bG9jXSBpbml0V2l0aENHQ29sb3I6c3RhdGljX2Nhc3Q8Q0dDb2xvclJlZj4ob2JqZWN0KV0pLmF1
dG9yZWxlYXNlKCk7CisKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC03Miw2ICs4MCw5IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAgICAgaWYgKGF1dG8gd3JhcHBlciA9IGR5bmFtaWNf
b2JqY19jYXN0PFdLU2VjdXJlQ29kaW5nVVJMV3JhcHBlcj4oYWRvcHRlZE9iamVjdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlci53cmFwcGVkVVJMKS5sZWFrUmVmKCk7
CiAKKyAgICBpZiAoYXV0byB3cmFwcGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tTZWN1cmVDb2Rp
bmdDR0NvbG9yV3JhcHBlcj4oYWRvcHRlZE9iamVjdC5nZXQoKSkpCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpZD4ocmV0YWluUHRyKHdyYXBwZXIud3JhcHBlZENvbG9yKS5sZWFrUmVmKCkp
OworCiAgICAgcmV0dXJuIGFkb3B0ZWRPYmplY3QubGVha1JlZigpOwogfQogCkBAIC0xNDMsNiAr
MTU0LDUwIEBAIHN0YXRpYyBjb25zdGV4cHIgTlNTdHJpbmcgKmJhc2VVUkxLZXkgPSBAIldLLmJh
c2VVUkwiOwogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXS1NlY3VyZUNvZGluZ0NHQ29sb3JX
cmFwcGVyIHsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gbV93cmFwcGVkQ29sb3I7Cit9CisK
Ky0gKENHQ29sb3JSZWYpd3JhcHBlZENvbG9yCit7CisgICAgcmV0dXJuIG1fd3JhcHBlZENvbG9y
LmdldCgpOworfQorCisrIChCT09MKXN1cHBvcnRzU2VjdXJlQ29kaW5nCit7CisgICAgcmV0dXJu
IFlFUzsKK30KKworc3RhdGljIGNvbnN0ZXhwciBOU1N0cmluZyAqaW5uZXJDb2xvcktleSA9IEAi
V0suTlNDb2xvciI7CisKKy0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3dyYXBwZWRDb2xvcik7CisgICAgW2NvZGVyIGVuY29k
ZU9iamVjdDpbV2ViQ29yZTo6Q29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOm1fd3JhcHBlZENv
bG9yLmdldCgpXSBmb3JLZXk6aW5uZXJDb2xvcktleV07Cit9CisKKy0gKF9OdWxsYWJsZSBpbnN0
YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCit7CisgICAgYXV0byBzZWxm
UHRyID0gYWRvcHROUyhbc3VwZXIgaW5pdF0pOworICAgIGlmICghc2VsZlB0cikKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIFJldGFpblB0cjxOU0NvbG9yPiBjb2xvciA9IHN0YXRpY19jYXN0
PE5TQ29sb3IgKj4oW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6TlNDb2xvci5jbGFzcyBmb3JL
ZXk6aW5uZXJDb2xvcktleV0pOworICAgIG1fd3JhcHBlZENvbG9yID0gY29sb3IuZ2V0KCkuQ0dD
b2xvcjsKKworICAgIHJldHVybiBzZWxmUHRyLmxlYWtSZWYoKTsKK30KKworLSAoX051bGxhYmxl
IGluc3RhbmNldHlwZSlpbml0V2l0aENHQ29sb3I6KENHQ29sb3JSZWYpY29sb3IKK3sKKyAgICBp
ZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICAgICAgbV93cmFwcGVkQ29sb3IgPSBjb2xvcjsK
KworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKIG5hbWVzcGFjZSBJUEMgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE1OSw2ICsyMTQsNyBAQCBlbnVtIGNsYXNzIE5TVHlw
ZSB7CiAgICAgU2VjdXJlQ29kaW5nLAogICAgIFN0cmluZywKICAgICBVUkwsCisgICAgQ0dDb2xv
ciwKICAgICBVbmtub3duLAogfTsKIApAQCAtMTczLDYgKzIyOSw4IEBAIHN0YXRpYyBOU1R5cGUg
dHlwZUZyb21PYmplY3QoaWQgb2JqZWN0KQogICAgICAgICByZXR1cm4gTlNUeXBlOjpBcnJheTsK
ICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltXZWJDb3JlOjpDb2NvYUNvbG9yIGNsYXNz
XV0pCiAgICAgICAgIHJldHVybiBOU1R5cGU6OkNvbG9yOworICAgIGlmIChDRkdldFR5cGVJRChv
YmplY3QpID09IENHQ29sb3JHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIE5TVHlwZTo6Q0dD
b2xvcjsKICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuIE5TVHlwZTo6RGF0YTsKICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNz
OltOU0RhdGUgY2xhc3NdXSkKQEAgLTI3Myw2ICszMzEsMjIgQEAgc3RhdGljIGlubGluZSBzdGQ6
Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYgZGVj
b2RlcikKICAgICByZXR1cm4geyBjb2NvYUNvbG9yKGNvbG9yKSB9OwogfQogCisjcHJhZ21hIG1h
cmsgLSBDR0NvbG9yCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVDR0NvbG9ySW50ZXJuYWwo
RW5jb2RlciYgZW5jb2RlciwgQ0dDb2xvclJlZiBjb2xvcikKK3sKKyAgICBlbmNvZGVDb2xvcklu
dGVybmFsKGVuY29kZXIsIFtXZWJDb3JlOjpDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y29s
b3JdKTsKK30KKworc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRl
Y29kZUNHQ29sb3JJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcmVzdWx0
ID0gZGVjb2RlQ29sb3JJbnRlcm5hbChkZWNvZGVyKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBSZXRhaW5QdHIgeyBzdGF0aWNf
Y2FzdDxpZD4oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29jb2FDb2xvciAqPihyZXN1bHQtPmdldCgp
KS5DR0NvbG9yKSB9OworfQorCiAjcHJhZ21hIG1hcmsgLSBOU0RhdGEKIAogc3RhdGljIGlubGlu
ZSB2b2lkIGVuY29kZURhdGFJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU0RhdGEgKmRhdGEp
CkBAIC00MzAsNiArNTA0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4g
ZGVjb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlciwKIAogICAgIGF1dG8g
YWxsb3dlZENsYXNzU2V0ID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhB
cnJheTphbGxvd2VkQ2xhc3Nlc10pOwogICAgIFthbGxvd2VkQ2xhc3NTZXQgYWRkT2JqZWN0OldL
U2VjdXJlQ29kaW5nVVJMV3JhcHBlci5jbGFzc107CisgICAgW2FsbG93ZWRDbGFzc1NldCBhZGRP
YmplY3Q6V0tTZWN1cmVDb2RpbmdDR0NvbG9yV3JhcHBlci5jbGFzc107CiAgICAgCiAgICAgQHRy
eSB7CiAgICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3Nl
czphbGxvd2VkQ2xhc3NTZXQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtl
eV07CkBAIC00OTIsNiArNTY3LDkgQEAgdm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYgZW5jb2Rl
ciwgaWQgb2JqZWN0KQogICAgIGNhc2UgTlNUeXBlOjpDb2xvcjoKICAgICAgICAgZW5jb2RlQ29s
b3JJbnRlcm5hbChlbmNvZGVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb2NvYUNvbG9yICo+KG9i
amVjdCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBOU1R5cGU6OkNHQ29sb3I6CisgICAg
ICAgIGVuY29kZUNHQ29sb3JJbnRlcm5hbChlbmNvZGVyLCBzdGF0aWNfY2FzdDxDR0NvbG9yUmVm
PihvYmplY3QpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTlNUeXBlOjpEaWN0aW9uYXJ5
OgogICAgICAgICBlbmNvZGVEaWN0aW9uYXJ5SW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8
TlNEaWN0aW9uYXJ5ICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CkBAIC01NDAsNiArNjE4
LDggQEAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVPYmplY3QoRGVjb2RlciYg
ZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG8KICAgICAgICAgcmV0dXJuIGRlY29kZUFycmF5
SW50ZXJuYWwoZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOwogICAgIGNhc2UgTlNUeXBlOjpDb2xv
cjoKICAgICAgICAgcmV0dXJuIGRlY29kZUNvbG9ySW50ZXJuYWwoZGVjb2Rlcik7CisgICAgY2Fz
ZSBOU1R5cGU6OkNHQ29sb3I6CisgICAgICAgIHJldHVybiBkZWNvZGVDR0NvbG9ySW50ZXJuYWwo
ZGVjb2Rlcik7CiAgICAgY2FzZSBOU1R5cGU6OkRpY3Rpb25hcnk6CiAgICAgICAgIHJldHVybiBk
ZWNvZGVEaWN0aW9uYXJ5SW50ZXJuYWwoZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOwogICAgIGNh
c2UgTlNUeXBlOjpGb250OgpAQCAtNTgwLDYgKzY2MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8SVBDOjpOU1R5cGU+IHsKICAgICAgICAgSVBDOjpOU1R5cGU6OlNlY3VyZUNvZGlu
ZywKICAgICAgICAgSVBDOjpOU1R5cGU6OlN0cmluZywKICAgICAgICAgSVBDOjpOU1R5cGU6OlVS
TCwKKyAgICAgICAgSVBDOjpOU1R5cGU6OkNHQ29sb3IsCiAgICAgICAgIElQQzo6TlNUeXBlOjpV
bmtub3duCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDIxZTA3MjcwMzU2Mzg2ZWE5
NzUzNWM4M2IwYWI1YmNhMzAyNWRiYjQuLmNjM2FkNDVhNTZkYTQzMTgzZjEzNTY1OWY2OThjNDI0
OWI3MTBiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVjb2duaXRp
b25SZXN1bHQuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgpAQCAtNDMyLDcgKzQzMyw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uCiAKICAgICBhdXRvIGN0Rm9udCA9IHBsYXRmb3JtRGF0YS5mb250KCk7CiAg
ICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250Q29weUZvbnREZXNjcmlwdG9y
KGN0Rm9udCkpOwotICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRv
ckNvcHlBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLmdldCgpKSk7CisgICAgYXV0byBhdHRyaWJ1
dGVzID0gYnJpZGdlX2Nhc3QoYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZXMo
Zm9udERlc2NyaXB0b3IuZ2V0KCkpKSk7CiAgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzOwogCiAg
ICAgY29uc3QgYXV0byYgY3JlYXRpb25EYXRhID0gcGxhdGZvcm1EYXRhLmNyZWF0aW9uRGF0YSgp
OwpAQCAtNTIzLDcgKzUyNCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgaWYgKCFz
eW50aGV0aWNPYmxpcXVlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3Rk
OjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gYXR0cmlidXRlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBhdHRyaWJ1dGVzOwogICAgIGRl
Y29kZXIgPj4gYXR0cmlidXRlczsKICAgICBpZiAoIWF0dHJpYnV0ZXMpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC01NTIsNyArNTUzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRl
Y28KICAgICAgICAgYXV0byBiYXNlRm9udERlc2NyaXB0b3IgPSBmb250Q3VzdG9tUGxhdGZvcm1E
YXRhLT5mb250RGVzY3JpcHRvci5nZXQoKTsKICAgICAgICAgaWYgKCFiYXNlRm9udERlc2NyaXB0
b3IpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhdXRvIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1
dGVzKGJhc2VGb250RGVzY3JpcHRvciwgYXR0cmlidXRlcy0+Z2V0KCkpKTsKKyAgICAgICAgYXV0
byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRo
QXR0cmlidXRlcyhiYXNlRm9udERlc2NyaXB0b3IsIGJyaWRnZV9jYXN0KGF0dHJpYnV0ZXMtPmdl
dCgpKSkpOwogICAgICAgICBhdXRvIGN0Rm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZv
bnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCAqc2l6ZSwgbnVsbHB0cikpOwogCiAg
ICAgICAgIGF1dG8gY3JlYXRpb25EYXRhID0gV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhIHsgbG9jYWxGb250RmFjZURhdGEsICppdGVtSW5Db2xsZWN0aW9uIH07CkBAIC01
NzQsNyArNTc1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICBpZiAoIXBvc3RTY3Jp
cHROYW1lIHx8ICEqcG9zdFNjcmlwdE5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBhdXRvIGN0Rm9udCA9IGNyZWF0ZUNURm9udChhdHRyaWJ1dGVzLT5nZXQoKSwgKnNp
emUsICpvcHRpb25zLCByZWZlcmVuY2VVUkwtPmdldCgpLCBwb3N0U2NyaXB0TmFtZS0+Z2V0KCkp
OworICAgIGF1dG8gY3RGb250ID0gY3JlYXRlQ1RGb250KGJyaWRnZV9jYXN0KGF0dHJpYnV0ZXMt
PmdldCgpKSwgKnNpemUsICpvcHRpb25zLCByZWZlcmVuY2VVUkwtPmdldCgpLCBwb3N0U2NyaXB0
TmFtZS0+Z2V0KCkpOwogICAgIGlmICghY3RGb250KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455081</attachid>
            <date>2022-03-18 02:18:45 -0700</date>
            <delta_ts>2022-03-18 14:36:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238069-20220318021844.patch</filename>
            <type>text/plain</type>
            <size>13503</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiZGMwMDRiMmNhZTNmMzY1ZTYzNTEy
ZjdhOGIwMGU2Yzk4OTM5MDkuLjExZDlmNmE3NTUyNTczN2ZlYWM5OWViN2RlMDdlOGY2ZmQxMGFm
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTggIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBUZWFjaCBXZWJLaXQgaG93IHRv
IHNlcmlhbGl6ZSBDR0NvbG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4MDY5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDEyNDMyNT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybVVzZS5oOgorCiAyMDIyLTAzLTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIHRyeVJlc2VydmVVbmNvbW1pdHRlZEFsaWduZWQgc2hvdWxkIHJv
dW5kIHVwIHRvIGFsaWdubWVudCBub3QgYnl0ZXMgcmVxdWVzdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0
MWFjN2I0NGNlYzg5NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uNWU4ZjczZTEwY2UwYzc4YmIx
ZjM1NWI5NGYzZTY4NjU2Zjc1N2RkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIy
LTAzLTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0lQQ10gVGVhY2ggV2ViS2l0IGhvdyB0byBzZXJpYWxpemUgQ0dDb2xvcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vOTAxMjQzMjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNpbmcgTlNDb2xvcnMvVUlDb2xvcnMgaW4gQ29yZVRleHQgYXZv
aWRzIHRoZSBDR0NvbG9yIHNlcmlhbGl6YXRpb24gY29kZSwgYnV0IGl0CisgICAgICAgIG9ubHkg
aXMgcG9zc2libGUgb24gY2VydGFpbiBPU2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxl
dHRlcyk6CisKIDIwMjItMDMtMTcgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNv
bT4KIAogICAgICAgICBTdWJncmlkIGl0ZW1zIHNob3VsZCBhbHdheXMgYmUgc3RyZXRjaGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAwNzk3Yzg0MjQyZTgyNWQ4YjBhNTU1ZjJiMzk5ZTU5NDQ1ZDRlMjVmLi42ZjYw
YzRmMmVkNWUxMDdmOWNlYWI4OWRhMDhiNTRjZDliMTk3YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDIyLTAzLTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0lQQ10gVGVhY2ggV2ViS2l0IGhvdyB0byBzZXJpYWxpemUgQ0dDb2xv
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNo
IG91ciBPYmplY3RpdmUgQyBJUEMgdHlwZXMgaG93IHRvIHNlcmlhbGl6ZSBDR0NvbG9ycy4gQWxz
bywgYmVjYXVzZQorICAgICAgICB3ZSBoYXZlIGEgcGF0aCB3aGVyZSB3ZSB1c2UgTlNTZWN1cmVD
b2RpbmcgdG8gc2VyaWFsaXplIHVua25vd24gdHlwZXMsCisgICAgICAgIHRoaXMgcGF0Y2ggYWxz
byBhdWdtZW50cyBvdXIgTlNLZXllZEFyY2hpdmVyRGVsZWdhdGUgdG8gaGFuZGxlIENHQ29sb3Jz
CisgICAgICAgIGluIHVua25vd24gdHlwZXMgKGxpa2UgTlNBdHRyaWJ1dGVkU3RyaW5nKSB0b28u
CisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKC1bV0tTZWN1cmVDb2RpbmdBcmNoaXZpbmdEZWxlZ2F0ZSBhcmNoaXZlcjp3aWxsRW5jb2Rl
T2JqZWN0Ol0pOgorICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0FyY2hpdmluZ0RlbGVnYXRlIHVu
YXJjaGl2ZXI6ZGlkRGVjb2RlT2JqZWN0Ol0pOgorICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0NH
Q29sb3JXcmFwcGVyIHdyYXBwZWRDb2xvcl0pOgorICAgICAgICAoK1tXS1NlY3VyZUNvZGluZ0NH
Q29sb3JXcmFwcGVyIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSk6CisgICAgICAgICgtW1dLU2VjdXJl
Q29kaW5nQ0dDb2xvcldyYXBwZXIgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXS1Nl
Y3VyZUNvZGluZ0NHQ29sb3JXcmFwcGVyIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dL
U2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgaW5pdFdpdGhDR0NvbG9yOl0pOgorICAgICAgICAo
SVBDOjp0eXBlRnJvbU9iamVjdCk6CisgICAgICAgIChJUEM6OmVuY29kZUNHQ29sb3JJbnRlcm5h
bCk6CisgICAgICAgIChJUEM6OmRlY29kZUNHQ29sb3JJbnRlcm5hbCk6CisgICAgICAgIChJUEM6
OmRlY29kZVNlY3VyZUNvZGluZ0ludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2RlT2JqZWN0
KToKKyAgICAgICAgKElQQzo6ZGVjb2RlT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorCiAyMDIyLTAzLTE3ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBTdXBwb3J0IFBERiBzZWFyY2ggd2hlbiB1c2luZyBhIGZpbmQgaW50ZXJh
Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDRmNGM2OTAxODRjMzQxNjc1ZWZiYWIzMDJmZWEz
ZWM4Y2JjYzYxMzcuLjI4NmI1ZGFmNzNiNzZkZmM3YmZkMTZlZjFiMTQwOGQyMWNkNTYxZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2UuaApAQCAtMzYxLDMgKzM2MSwxMCBAQAogI2lmICFkZWZpbmVkKFVTRV9J
U09fTUFMTE9DKQogI2RlZmluZSBVU0VfSVNPX01BTExPQyAxCiAjZW5kaWYKKworI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDQwMCkgXAor
ICAgIHx8ICgoUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxNTA1MDApIFwKKyAgICB8fCAoUExBVEZPUk0o
V0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgODA2MDApIFwKKyAg
ICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwg
MTUwNTAwKQorI2RlZmluZSBVU0VfQ09SRV9URVhUX0NHQ09MT1JfSEFORExJTkcgMQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggZTYxNzc5ODFmMWU1ODNlOGY0ZDcxYjEzMWVi
MTYyNzJhNThlNjdiNy4uMGJlN2ZhZThkYTExZTc1YjA0OWJkMWQ2ZGZkNTZiMzNhNGY2MTAxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb2xvckNvY29hLmgi
CiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJGb250Q3JlYXRpb25Db250ZXh0LmgiCkBAIC00OTQsNyArNDk1LDExIEBAIHN0
YXRpYyB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JDdXN0b21Gb250UGFsZXR0ZXMoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBhdHRyaWJ1dGVzCiAgICAgICAgICAgICBjb25zdCBhdXRvJiBjb2xvciA9IHBh
aXIuc2Vjb25kOwogICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IHBhaXIuZmlyc3Q7IC8v
IFRoZXJlIGlzIG5vIGtDRk51bWJlclVJbnRUeXBlLgogICAgICAgICAgICAgYXV0byBudW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJ
bnQ2NFR5cGUsICZyYXdJbmRleCkpOworI2lmIFVTRShDT1JFX1RFWFRfQ0dDT0xPUl9IQU5ETElO
RykKICAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3QgPSBjYWNoZWRDR0NvbG9yKGNvbG9yKTsK
KyNlbHNlCisgICAgICAgICAgICBhdXRvIGNvbG9yT2JqZWN0ID0gY29jb2FDb2xvcihjb2xvcik7
CisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG92ZXJyaWRlRGljdGlv
bmFyeS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdC5nZXQoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldENvdW50KG92ZXJyaWRlRGljdGlvbmFyeS5nZXQo
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQppbmRleCAxMjhhYThjNDg2Yzk2YjliZWQyZTNmNmUwN2Y1NzBhZWY1YzBlNWYwLi40NDQ4
NjI1ZjY3OGE2ODQ3NzMzMDEwNGE1ZWU2M2UyYmFiNzk0MTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2LDYgKzU2LDEx
IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TVVJMICogd3JhcHBlZFVSTDsKIEBlbmQKIAorQGludGVyZmFjZSBXS1NlY3VyZUNvZGlu
Z0NHQ29sb3JXcmFwcGVyIDogTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPgorLSAoaW5zdGFuY2V0
eXBlIF9OdWxsYWJsZSlpbml0V2l0aENHQ29sb3I6KENHQ29sb3JSZWYpd3JhcHBlZENvbG9yOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR0NvbG9yUmVmIHdyYXBwZWRDb2xvcjsK
K0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdLU2VjdXJlQ29kaW5nQXJjaGl2aW5nRGVsZWdhdGUK
IAogLSAobnVsbGFibGUgaWQpYXJjaGl2ZXI6KE5TS2V5ZWRBcmNoaXZlciAqKWFyY2hpdmVyIHdp
bGxFbmNvZGVPYmplY3Q6KGlkKW9iamVjdApAQCAtNjMsNiArNjgsMTIgQEAgTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KICAgICBpZiAoYXV0byB1bndyYXBwZWRVUkwgPSBkeW5hbWljX29iamNfY2Fz
dDxOU1VSTD4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1NlY3VyZUNvZGlu
Z1VSTFdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOnVud3JhcHBlZFVSTF0pLmF1dG9yZWxlYXNl
KCk7CiAKKyAgICAvLyBXZSBjYW4ndCBqdXN0IHJldHVybiBhIFdlYkNvcmU6OkNvY29hQ29sb3Ig
aGVyZSwgYmVjYXVzZSB0aGUgZGVjb2RlciB3b3VsZAorICAgIC8vIGhhdmUgbm8gd2F5IG9mIGRp
c3Rpbmd1aXNoaW5nIGFuIGF1dGhlbnRpYyBXZWJDb3JlOjpDb2NvYUNvbG9yIHZzIGEgQ0dDb2xv
cgorICAgIC8vIG1hc3F1ZXJhZGluZyBhcyBhIFdlYkNvcmU6OkNvY29hQ29sb3IuCisgICAgaWYg
KENGR2V0VHlwZUlEKG9iamVjdCkgPT0gQ0dDb2xvckdldFR5cGVJRCgpKQorICAgICAgICByZXR1
cm4gYWRvcHROUyhbW1dLU2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgYWxsb2NdIGluaXRXaXRo
Q0dDb2xvcjpzdGF0aWNfY2FzdDxDR0NvbG9yUmVmPihvYmplY3QpXSkuYXV0b3JlbGVhc2UoKTsK
KwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTcyLDYgKzgzLDkgQEAgTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KICAgICBpZiAoYXV0byB3cmFwcGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tT
ZWN1cmVDb2RpbmdVUkxXcmFwcGVyPihhZG9wdGVkT2JqZWN0LmdldCgpKSkKICAgICAgICAgcmV0
dXJuIHJldGFpblB0cih3cmFwcGVyLndyYXBwZWRVUkwpLmxlYWtSZWYoKTsKIAorICAgIGlmIChh
dXRvIHdyYXBwZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1NlY3VyZUNvZGluZ0NHQ29sb3JXcmFw
cGVyPihhZG9wdGVkT2JqZWN0LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlk
PihyZXRhaW5QdHIod3JhcHBlci53cmFwcGVkQ29sb3IpLmxlYWtSZWYoKSk7CisKICAgICByZXR1
cm4gYWRvcHRlZE9iamVjdC5sZWFrUmVmKCk7CiB9CiAKQEAgLTE0Myw2ICsxNTcsNTAgQEAgc3Rh
dGljIGNvbnN0ZXhwciBOU1N0cmluZyAqYmFzZVVSTEtleSA9IEAiV0suYmFzZVVSTCI7CiAKIEBl
bmQKIAorQGltcGxlbWVudGF0aW9uIFdLU2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgeworICAg
IFJldGFpblB0cjxDR0NvbG9yUmVmPiBtX3dyYXBwZWRDb2xvcjsKK30KKworLSAoQ0dDb2xvclJl
Zil3cmFwcGVkQ29sb3IKK3sKKyAgICByZXR1cm4gbV93cmFwcGVkQ29sb3IuZ2V0KCk7Cit9CisK
KysgKEJPT0wpc3VwcG9ydHNTZWN1cmVDb2RpbmcKK3sKKyAgICByZXR1cm4gWUVTOworfQorCitz
dGF0aWMgY29uc3RleHByIE5TU3RyaW5nICppbm5lckNvbG9yS2V5ID0gQCJXSy5OU0NvbG9yIjsK
KworLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgoreworICAgIFJFTEVB
U0VfQVNTRVJUKG1fd3JhcHBlZENvbG9yKTsKKyAgICBbY29kZXIgZW5jb2RlT2JqZWN0OltXZWJD
b3JlOjpDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6bV93cmFwcGVkQ29sb3IuZ2V0KCldIGZv
cktleTppbm5lckNvbG9yS2V5XTsKK30KKworLSAoX051bGxhYmxlIGluc3RhbmNldHlwZSlpbml0
V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKK3sKKyAgICBhdXRvIHNlbGZQdHIgPSBhZG9wdE5T
KFtzdXBlciBpbml0XSk7CisgICAgaWYgKCFzZWxmUHRyKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IGNvbG9yID0gc3RhdGljX2Nhc3Q8TlNDb2xvciAqPihb
Y29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpOU0NvbG9yLmNsYXNzIGZvcktleTppbm5lckNvbG9y
S2V5XSk7CisgICAgbV93cmFwcGVkQ29sb3IgPSBjb2xvci5nZXQoKS5DR0NvbG9yOworCisgICAg
cmV0dXJuIHNlbGZQdHIubGVha1JlZigpOworfQorCistIChfTnVsbGFibGUgaW5zdGFuY2V0eXBl
KWluaXRXaXRoQ0dDb2xvcjooQ0dDb2xvclJlZiljb2xvcgoreworICAgIGlmIChzZWxmID0gW3N1
cGVyIGluaXRdKQorICAgICAgICBtX3dyYXBwZWRDb2xvciA9IGNvbG9yOworCisgICAgcmV0dXJu
IHNlbGY7Cit9CisKK0BlbmQKKwogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMTU5LDYgKzIxNyw3IEBAIGVudW0gY2xhc3MgTlNUeXBlIHsKICAgICBTZWN1
cmVDb2RpbmcsCiAgICAgU3RyaW5nLAogICAgIFVSTCwKKyAgICBDR0NvbG9yLAogICAgIFVua25v
d24sCiB9OwogCkBAIC0xNzMsNiArMjMyLDggQEAgc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVj
dChpZCBvYmplY3QpCiAgICAgICAgIHJldHVybiBOU1R5cGU6OkFycmF5OwogICAgIGlmIChbb2Jq
ZWN0IGlzS2luZE9mQ2xhc3M6W1dlYkNvcmU6OkNvY29hQ29sb3IgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIE5TVHlwZTo6Q29sb3I7CisgICAgaWYgKENGR2V0VHlwZUlEKG9iamVjdCkgPT0gQ0dD
b2xvckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gTlNUeXBlOjpDR0NvbG9yOwogICAgIGlm
IChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm4g
TlNUeXBlOjpEYXRhOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFz
c11dKQpAQCAtMjczLDYgKzMzNCwyMiBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0
YWluUHRyPGlkPj4gZGVjb2RlQ29sb3JJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJl
dHVybiB7IGNvY29hQ29sb3IoY29sb3IpIH07CiB9CiAKKyNwcmFnbWEgbWFyayAtIENHQ29sb3IK
Kworc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUNHQ29sb3JJbnRlcm5hbChFbmNvZGVyJiBlbmNv
ZGVyLCBDR0NvbG9yUmVmIGNvbG9yKQoreworICAgIGVuY29kZUNvbG9ySW50ZXJuYWwoZW5jb2Rl
ciwgW1dlYkNvcmU6OkNvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjb2xvcl0pOworfQorCitz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQ0dDb2xvcklu
dGVybmFsKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBkZWNvZGVDb2xv
ckludGVybmFsKGRlY29kZXIpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIFJldGFpblB0ciB7IHN0YXRpY19jYXN0PGlkPihzdGF0
aWNfY2FzdDxXZWJDb3JlOjpDb2NvYUNvbG9yICo+KHJlc3VsdC0+Z2V0KCkpLkNHQ29sb3IpIH07
Cit9CisKICNwcmFnbWEgbWFyayAtIE5TRGF0YQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZW5jb2Rl
RGF0YUludGVybmFsKEVuY29kZXImIGVuY29kZXIsIE5TRGF0YSAqZGF0YSkKQEAgLTQzMCw2ICs1
MDcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVTZWN1cmVD
b2RpbmdJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyLAogCiAgICAgYXV0byBhbGxvd2VkQ2xhc3NT
ZXQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OmFsbG93ZWRD
bGFzc2VzXSk7CiAgICAgW2FsbG93ZWRDbGFzc1NldCBhZGRPYmplY3Q6V0tTZWN1cmVDb2RpbmdV
UkxXcmFwcGVyLmNsYXNzXTsKKyAgICBbYWxsb3dlZENsYXNzU2V0IGFkZE9iamVjdDpXS1NlY3Vy
ZUNvZGluZ0NHQ29sb3JXcmFwcGVyLmNsYXNzXTsKICAgICAKICAgICBAdHJ5IHsKICAgICAgICAg
aWQgcmVzdWx0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOmFsbG93ZWRDbGFz
c1NldC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKQEAgLTQ5Miw2
ICs1NzAsOSBAQCB2b2lkIGVuY29kZU9iamVjdChFbmNvZGVyJiBlbmNvZGVyLCBpZCBvYmplY3Qp
CiAgICAgY2FzZSBOU1R5cGU6OkNvbG9yOgogICAgICAgICBlbmNvZGVDb2xvckludGVybmFsKGVu
Y29kZXIsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvY29hQ29sb3IgKj4ob2JqZWN0KSk7CiAgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIE5TVHlwZTo6Q0dDb2xvcjoKKyAgICAgICAgZW5jb2RlQ0dD
b2xvckludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PENHQ29sb3JSZWY+KG9iamVjdCkpOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBOU1R5cGU6OkRpY3Rpb25hcnk6CiAgICAgICAgIGVu
Y29kZURpY3Rpb25hcnlJbnRlcm5hbChlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkg
Kj4ob2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU0MCw2ICs2MjEsOCBAQCBzdGQ6Om9w
dGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiBkZWNvZGVyLCBOU0Fy
cmF5PENsYXNzPiAqYWxsbwogICAgICAgICByZXR1cm4gZGVjb2RlQXJyYXlJbnRlcm5hbChkZWNv
ZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CiAgICAgY2FzZSBOU1R5cGU6OkNvbG9yOgogICAgICAgICBy
ZXR1cm4gZGVjb2RlQ29sb3JJbnRlcm5hbChkZWNvZGVyKTsKKyAgICBjYXNlIE5TVHlwZTo6Q0dD
b2xvcjoKKyAgICAgICAgcmV0dXJuIGRlY29kZUNHQ29sb3JJbnRlcm5hbChkZWNvZGVyKTsKICAg
ICBjYXNlIE5TVHlwZTo6RGljdGlvbmFyeToKICAgICAgICAgcmV0dXJuIGRlY29kZURpY3Rpb25h
cnlJbnRlcm5hbChkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CiAgICAgY2FzZSBOU1R5cGU6OkZv
bnQ6CkBAIC01ODAsNiArNjYzLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxJUEM6
Ok5TVHlwZT4gewogICAgICAgICBJUEM6Ok5TVHlwZTo6U2VjdXJlQ29kaW5nLAogICAgICAgICBJ
UEM6Ok5TVHlwZTo6U3RyaW5nLAogICAgICAgICBJUEM6Ok5TVHlwZTo6VVJMLAorICAgICAgICBJ
UEM6Ok5TVHlwZTo6Q0dDb2xvciwKICAgICAgICAgSVBDOjpOU1R5cGU6OlVua25vd24KICAgICA+
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMjFlMDcyNzAzNTYzODZlYTk3NTM1YzgzYjBhYjVi
Y2EzMDI1ZGJiNC4uY2MzYWQ0NWE1NmRhNDMxODNmMTM1NjU5ZjY5OGM0MjQ5YjcxMGI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZWNvZ25pdGlvblJlc3VsdC5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1R5
cGVDYXN0c0NvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8VUlL
aXQvVUlGb250Lmg+CkBAIC00MzIsNyArNDMzLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpGb250Pj46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb24K
IAogICAgIGF1dG8gY3RGb250ID0gcGxhdGZvcm1EYXRhLmZvbnQoKTsKICAgICBhdXRvIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDb3B5Rm9udERlc2NyaXB0b3IoY3RGb250KSk7Ci0g
ICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0
ZXMoZm9udERlc2NyaXB0b3IuZ2V0KCkpKTsKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBicmlkZ2Vf
Y2FzdChhZG9wdENGKENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlcyhmb250RGVzY3JpcHRv
ci5nZXQoKSkpKTsKICAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXM7CiAKICAgICBjb25zdCBhdXRv
JiBjcmVhdGlvbkRhdGEgPSBwbGF0Zm9ybURhdGEuY3JlYXRpb25EYXRhKCk7CkBAIC01MjMsNyAr
NTI0LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICBpZiAoIXN5bnRoZXRpY09ibGlx
dWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBhdHRyaWJ1dGVzOworICAgIHN0ZDo6b3B0aW9uYWw8
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGF0dHJpYnV0ZXM7CiAgICAgZGVjb2RlciA+PiBhdHRy
aWJ1dGVzOwogICAgIGlmICghYXR0cmlidXRlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTU1Miw3ICs1NTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBh
dXRvIGJhc2VGb250RGVzY3JpcHRvciA9IGZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmZvbnREZXNj
cmlwdG9yLmdldCgpOwogICAgICAgICBpZiAoIWJhc2VGb250RGVzY3JpcHRvcikKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBh
ZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoYmFzZUZvbnRE
ZXNjcmlwdG9yLCBhdHRyaWJ1dGVzLT5nZXQoKSkpOworICAgICAgICBhdXRvIGZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGJh
c2VGb250RGVzY3JpcHRvciwgYnJpZGdlX2Nhc3QoYXR0cmlidXRlcy0+Z2V0KCkpKSk7CiAgICAg
ICAgIGF1dG8gY3RGb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3Io
Zm9udERlc2NyaXB0b3IuZ2V0KCksICpzaXplLCBudWxscHRyKSk7CiAKICAgICAgICAgYXV0byBj
cmVhdGlvbkRhdGEgPSBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgeyBs
b2NhbEZvbnRGYWNlRGF0YSwgKml0ZW1JbkNvbGxlY3Rpb24gfTsKQEAgLTU3NCw3ICs1NzUsNyBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgIGlmICghcG9zdFNjcmlwdE5hbWUgfHwgISpw
b3N0U2NyaXB0TmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8g
Y3RGb250ID0gY3JlYXRlQ1RGb250KGF0dHJpYnV0ZXMtPmdldCgpLCAqc2l6ZSwgKm9wdGlvbnMs
IHJlZmVyZW5jZVVSTC0+Z2V0KCksIHBvc3RTY3JpcHROYW1lLT5nZXQoKSk7CisgICAgYXV0byBj
dEZvbnQgPSBjcmVhdGVDVEZvbnQoYnJpZGdlX2Nhc3QoYXR0cmlidXRlcy0+Z2V0KCkpLCAqc2l6
ZSwgKm9wdGlvbnMsIHJlZmVyZW5jZVVSTC0+Z2V0KCksIHBvc3RTY3JpcHROYW1lLT5nZXQoKSk7
CiAgICAgaWYgKCFjdEZvbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455137</attachid>
            <date>2022-03-18 14:36:31 -0700</date>
            <delta_ts>2022-03-18 15:27:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238069-20220318143630.patch</filename>
            <type>text/plain</type>
            <size>17278</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxMzc4OTQ1YjE5ZTAzZmRj
ODIzMzc2NTVkZTkwMGI4OGQ3NTdlZGMuLjFjNzEwMDBmZGY3NzkxYzA1YTRiOGZlMDJiNTM3MTFh
M2QxZDM3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjItMDMtMTggIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFRlYWNo
IFdlYktpdCBob3cgdG8gc2VyaWFsaXplIENHQ29sb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzkwMTI0MzI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGhhdmUgMiB3YXlzIG9mIHNlcmlhbGl6aW5nIENvY29hIG9iamVjdHM6IE5TIHR5cGUg
aGFuZGxpbmcgaW4gQXJndW1lbnRDb2RlcnNDb2NvYS5tbSwKKyAgICAgICAgYW5kIENGIHR5cGUg
aGFuZGxpbmcgaW4gQXJndW1lbnRDb2RlcnNDRi5tbS4gQ0dDb2xvcnMgYXJlIENGIHR5cGVzLCBz
byB0aGlzIHBhdGNoIGFkZHMKKyAgICAgICAgZGlyZWN0IHN1cHBvcnQgaW4gQXJndW1lbnRDb2Rl
cnNDRiB0byBzZXJpYWxpemUgdGhlbSwgYnkgcm91bmQtdHJpcHBpbmcgdGhlbSB0aHJvdWdoCisg
ICAgICAgIFdlYkNvcmU6OkNvbG9ycy4gSG93ZXZlciwgTlMgY29udGFpbmVycyAobGlrZSBmb250
IGRlc2NyaXB0b3IgYXR0cmlidXRlIGRpY3Rpb25hcmllcykKKyAgICAgICAgY2FuIGNvbnRhaW4g
Q0dDb2xvcnMsIHNvIHRoaXMgcGF0Y2ggYWxzbyB0ZWFjaGVzIEFyZ3VtZW50Q29kZXJzQ29jb2Eg
dGhhdCB0aGVyZSBtYXkgYmUKKyAgICAgICAgQ0YgdHlwZXMgaW5zaWRlIE5TIGNvbnRhaW5lcnMu
IElmIG9uZSBpcyBwcmVzZW50LCBBcmd1bWVudENvZGVyc0NvY29hIGhhcyB0byBjYWxsIGludG8K
KyAgICAgICAgQXJndW1lbnRDb2RlcnNDRiB0byBzZXJpYWxpemUgaXQuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2Vzbid0IGFkZCBzdXBwb3J0IGZvciB0aGUgcmV2ZXJzZSBwYXRoLCB3aGVyZSBh
biBOUyBvYmplY3QgaXMgY29udGFpbmVkCisgICAgICAgIHdpdGhpbiBhIENGIGNvbnRhaW5lci4g
SSBpbnRlbnRpb25hbGx5IG9taXR0ZWQgaW1wbGVtZW50aW5nIHRoaXMgYmVjYXVzZSBJIHdhc24n
dCBzdXJlCisgICAgICAgIGlmIGl0IHdvdWxkIGJlIGEgbGF5ZXJpbmcgdmlvbGF0aW9uOyBBcmd1
bWVudENvZGVyc0NvY29jYS5tbSBhbHJlYWR5ICNpbmNsdWRlcworICAgICAgICBBcmd1bWVudENv
ZGVyc0NGLmgsIGJ1dCBBcmd1bWVudENvZGVyc0NGLm1tIGRvZXNuJ3QgI2luY2x1ZGUgQXJndW1l
bnRDb2RlcnNDb2NvYS5oLgorICAgICAgICBUaGlzIHBhdGggaXNuJ3QgYWN0dWFsbHkgbmVjZXNz
YXJ5IHRvIHNvbHZlIG15IHByb2JsZW0gYXQgaGFuZCwgc28gc29tZW9uZSBlbHNlIGNhbgorICAg
ICAgICBhZGQgc3VwcG9ydCBpZiBuZWNlc3NhcnkgaW4gdGhlIGZ1dHVyZS4gSSBhbHNvIGFkZGVk
IGEgY29tbWVudCBhdCB0aGUgc2l0ZSB3aGVyZSB0aGUKKyAgICAgICAgY29kZSB3b3VsZCBmYWls
LCBkZXNjcmliaW5nIHdoYXQgdGhlIHByb2JsZW0gaXMgYW5kIGEgcG90ZW50aWFsIHdvcmthcm91
bmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgc3VwcG9ydCBmb3Igb3VyIE5TU2Vj
dXJlQ29kaW5nIGltcGxlbWVudGF0aW9uIGZvciBDR0NvbG9ycy4gVGhpcworICAgICAgICBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSBzb21ldGltZXMgd2Ugd2FudCB0byBzZXJpYWxpemUgdGhpbmdzIGxp
a2UgTlNBdHRyaWJ1dGVkU3RyaW5ncywKKyAgICAgICAgd2hpY2ggd2UgZG9uJ3QgaGF2ZSBkaXJl
Y3Qgc3VwcG9ydCBmb3IsIHNvIHdlIHVzZSBOU1NlY3VyZUNvZGluZyB0byBzZXJpYWxpemUgdGhl
bQorICAgICAgICBpbnN0ZWFkLiBOU0F0dHJpYnV0ZWRTdHJpbmdzIGNhbiBjb250YWluIGZvbnRz
IHdob3NlIGRlc2NyaXB0b3IgZGljdGlvbmFyaWVzIGNvbnRhaW4KKyAgICAgICAgQ0dDb2xvcnMs
IHNvIHRoaXMgcGF0aCBuZWVkcyB0byB3b3JrIHdpdGggQ0dDb2xvcnMgdG9vLiBTdXBwb3J0IGlz
IGltcGxlbWVudGVkIHVzaW5nCisgICAgICAgIE5TS2V5ZWRBcmNoaXZlckRlbGVnYXRlIGFuZCBO
U0tleWVkVW5hcmNoaXZlckRlbGVnYXRlLgorCisgICAgICAgIFRlc3Q6IElQQ1Rlc3RpbmdBUEku
Q0dDb2xvckluTlNTZWN1cmVDb2RpbmcKKyAgICAgICAgICAgICAgVGhlIG5vbi1OU1NlY3VyZUNv
ZGluZyBwYXJ0cyBvZiB0aGlzIHBhdGNoIGFyZSB0ZXN0ZWQgYnkgb3VyIHJlZ3VsYXIgTGF5b3V0
VGVzdHMKKyAgICAgICAgICAgICAgd2hlbiBET00gR1BVIFByb2Nlc3MgcmVuZGVyaW5nIGlzIGVu
YWJsZWQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbToK
KyAgICAgICAgKC1bV0tTZWN1cmVDb2RpbmdBcmNoaXZpbmdEZWxlZ2F0ZSBhcmNoaXZlcjp3aWxs
RW5jb2RlT2JqZWN0Ol0pOgorICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0FyY2hpdmluZ0RlbGVn
YXRlIHVuYXJjaGl2ZXI6ZGlkRGVjb2RlT2JqZWN0Ol0pOgorICAgICAgICAoLVtXS1NlY3VyZUNv
ZGluZ0NHQ29sb3JXcmFwcGVyIHdyYXBwZWRDb2xvcl0pOgorICAgICAgICAoK1tXS1NlY3VyZUNv
ZGluZ0NHQ29sb3JXcmFwcGVyIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSk6CisgICAgICAgICgtW1dL
U2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAo
LVtXS1NlY3VyZUNvZGluZ0NHQ29sb3JXcmFwcGVyIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAg
ICgtW1dLU2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgaW5pdFdpdGhDR0NvbG9yOl0pOgorICAg
ICAgICAoSVBDOjp0eXBlRnJvbU9iamVjdCk6CisgICAgICAgIChJUEM6OmRlY29kZVNlY3VyZUNv
ZGluZ0ludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2RlQ0ZJbnRlcm5hbCk6CisgICAgICAg
IChJUEM6OmRlY29kZUNGSW50ZXJuYWwpOgorICAgICAgICAoSVBDOjplbmNvZGVPYmplY3QpOgor
ICAgICAgICAoSVBDOjpkZWNvZGVPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6dHlwZUZyb21DRlR5cGVSZWYpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPENGVHlwZVJlZj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGVHlwZVJlZj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPENHQ29sb3JSZWY+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJldGFpblB0cjxDR0NvbG9yUmVmPj46OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaDoKKwogMjAyMi0wMy0xOCAgQmVuIE5oYW0gIDxu
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4g
YXNzb2NpYXRlZCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb25zIGFyZSByZW1vdmVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRl
eCAxMjhhYThjNDg2Yzk2YjliZWQyZTNmNmUwN2Y1NzBhZWY1YzBlNWYwLi5jZjg2YThkYTU5NDIw
MWU3NjliYTRmYmUyY2M3OWNhZWQ0YjFjMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2LDYgKzU2LDExIEBAIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJM
ICogd3JhcHBlZFVSTDsKIEBlbmQKIAorQGludGVyZmFjZSBXS1NlY3VyZUNvZGluZ0NHQ29sb3JX
cmFwcGVyIDogTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPgorLSAoaW5zdGFuY2V0eXBlIF9OdWxs
YWJsZSlpbml0V2l0aENHQ29sb3I6KENHQ29sb3JSZWYpd3JhcHBlZENvbG9yOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBDR0NvbG9yUmVmIHdyYXBwZWRDb2xvcjsKK0BlbmQKKwog
QGltcGxlbWVudGF0aW9uIFdLU2VjdXJlQ29kaW5nQXJjaGl2aW5nRGVsZWdhdGUKIAogLSAobnVs
bGFibGUgaWQpYXJjaGl2ZXI6KE5TS2V5ZWRBcmNoaXZlciAqKWFyY2hpdmVyIHdpbGxFbmNvZGVP
YmplY3Q6KGlkKW9iamVjdApAQCAtNjMsNiArNjgsMTIgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KICAgICBpZiAoYXV0byB1bndyYXBwZWRVUkwgPSBkeW5hbWljX29iamNfY2FzdDxOU1VSTD4o
b2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1NlY3VyZUNvZGluZ1VSTFdyYXBw
ZXIgYWxsb2NdIGluaXRXaXRoVVJMOnVud3JhcHBlZFVSTF0pLmF1dG9yZWxlYXNlKCk7CiAKKyAg
ICAvLyBXZSBjYW4ndCBqdXN0IHJldHVybiBhIFdlYkNvcmU6OkNvY29hQ29sb3IgaGVyZSwgYmVj
YXVzZSB0aGUgZGVjb2RlciB3b3VsZAorICAgIC8vIGhhdmUgbm8gd2F5IG9mIGRpc3Rpbmd1aXNo
aW5nIGFuIGF1dGhlbnRpYyBXZWJDb3JlOjpDb2NvYUNvbG9yIHZzIGEgQ0dDb2xvcgorICAgIC8v
IG1hc3F1ZXJhZGluZyBhcyBhIFdlYkNvcmU6OkNvY29hQ29sb3IuCisgICAgaWYgKENGR2V0VHlw
ZUlEKG9iamVjdCkgPT0gQ0dDb2xvckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gYWRvcHRO
UyhbW1dLU2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpz
dGF0aWNfY2FzdDxDR0NvbG9yUmVmPihvYmplY3QpXSkuYXV0b3JlbGVhc2UoKTsKKwogICAgIHJl
dHVybiBvYmplY3Q7CiB9CiAKQEAgLTcyLDYgKzgzLDkgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KICAgICBpZiAoYXV0byB3cmFwcGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tTZWN1cmVDb2Rp
bmdVUkxXcmFwcGVyPihhZG9wdGVkT2JqZWN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIHJldGFp
blB0cih3cmFwcGVyLndyYXBwZWRVUkwpLmxlYWtSZWYoKTsKIAorICAgIGlmIChhdXRvIHdyYXBw
ZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1NlY3VyZUNvZGluZ0NHQ29sb3JXcmFwcGVyPihhZG9w
dGVkT2JqZWN0LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlkPihyZXRhaW5Q
dHIod3JhcHBlci53cmFwcGVkQ29sb3IpLmxlYWtSZWYoKSk7CisKICAgICByZXR1cm4gYWRvcHRl
ZE9iamVjdC5sZWFrUmVmKCk7CiB9CiAKQEAgLTE0Myw2ICsxNTcsNTAgQEAgc3RhdGljIGNvbnN0
ZXhwciBOU1N0cmluZyAqYmFzZVVSTEtleSA9IEAiV0suYmFzZVVSTCI7CiAKIEBlbmQKIAorQGlt
cGxlbWVudGF0aW9uIFdLU2VjdXJlQ29kaW5nQ0dDb2xvcldyYXBwZXIgeworICAgIFJldGFpblB0
cjxDR0NvbG9yUmVmPiBtX3dyYXBwZWRDb2xvcjsKK30KKworLSAoQ0dDb2xvclJlZil3cmFwcGVk
Q29sb3IKK3sKKyAgICByZXR1cm4gbV93cmFwcGVkQ29sb3IuZ2V0KCk7Cit9CisKKysgKEJPT0wp
c3VwcG9ydHNTZWN1cmVDb2RpbmcKK3sKKyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMgY29u
c3RleHByIE5TU3RyaW5nICppbm5lckNvbG9yS2V5ID0gQCJXSy5Db2NvYUNvbG9yIjsKKworLSAo
dm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgoreworICAgIFJFTEVBU0VfQVNT
RVJUKG1fd3JhcHBlZENvbG9yKTsKKyAgICBbY29kZXIgZW5jb2RlT2JqZWN0OltXZWJDb3JlOjpD
b2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6bV93cmFwcGVkQ29sb3IuZ2V0KCldIGZvcktleTpp
bm5lckNvbG9yS2V5XTsKK30KKworLSAoX051bGxhYmxlIGluc3RhbmNldHlwZSlpbml0V2l0aENv
ZGVyOihOU0NvZGVyICopY29kZXIKK3sKKyAgICBhdXRvIHNlbGZQdHIgPSBhZG9wdE5TKFtzdXBl
ciBpbml0XSk7CisgICAgaWYgKCFzZWxmUHRyKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
UmV0YWluUHRyPFdlYkNvcmU6OkNvY29hQ29sb3I+IGNvbG9yID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Q29jb2FDb2xvciAqPihbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbV2ViQ29yZTo6Q29j
b2FDb2xvciBjbGFzc10gZm9yS2V5OmlubmVyQ29sb3JLZXldKTsKKyAgICBtX3dyYXBwZWRDb2xv
ciA9IGNvbG9yLmdldCgpLkNHQ29sb3I7CisKKyAgICByZXR1cm4gc2VsZlB0ci5sZWFrUmVmKCk7
Cit9CisKKy0gKF9OdWxsYWJsZSBpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR0NvbG9yOihDR0NvbG9y
UmVmKWNvbG9yCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIG1fd3Jh
cHBlZENvbG9yID0gY29sb3I7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAorCiBuYW1l
c3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xNTksNiArMjE3LDcg
QEAgZW51bSBjbGFzcyBOU1R5cGUgewogICAgIFNlY3VyZUNvZGluZywKICAgICBTdHJpbmcsCiAg
ICAgVVJMLAorICAgIENGLAogICAgIFVua25vd24sCiB9OwogCkBAIC0xODcsNiArMjQ2LDEwIEBA
IHN0YXRpYyBOU1R5cGUgdHlwZUZyb21PYmplY3QoaWQgb2JqZWN0KQogICAgICAgICByZXR1cm4g
TlNUeXBlOjpTdHJpbmc7CiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNVUkwgY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6VVJMOworICAgIC8vIE5vdCBhbGwgQ0YgdHlw
ZXMgYXJlIHRvbGwtZnJlZS1icmlkZ2VkIHRvIE5TIHR5cGVzLgorICAgIC8vIE5vbi10b2xsLWZy
ZWUtYnJpZGdlZCBDRiB0eXBlcyBkbyBub3QgY29uZm9ybSB0byBOU1NlY3VyZUNvZGluZy4KKyAg
ICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiX19OU0NGVHlw
ZSIpXSkKKyAgICAgICAgcmV0dXJuIE5TVHlwZTo6Q0Y7CiAKICAgICAvLyBDaGVjayBOU1NlY3Vy
ZUNvZGluZyBhZnRlciB0aGUgc3BlY2lmaWMgY2FzZXMgc2luY2UKICAgICAvLyBtb3N0IG9mIHRo
ZSBjbGFzc2VzIGFib3ZlIGNvbmZvcm0gdG8gTlNTZWN1cmVDb2RpbmcsCkBAIC00MzAsNiArNDkz
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlU2VjdXJlQ29k
aW5nSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlciwKIAogICAgIGF1dG8gYWxsb3dlZENsYXNzU2V0
ID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhBcnJheTphbGxvd2VkQ2xh
c3Nlc10pOwogICAgIFthbGxvd2VkQ2xhc3NTZXQgYWRkT2JqZWN0OldLU2VjdXJlQ29kaW5nVVJM
V3JhcHBlci5jbGFzc107CisgICAgW2FsbG93ZWRDbGFzc1NldCBhZGRPYmplY3Q6V0tTZWN1cmVD
b2RpbmdDR0NvbG9yV3JhcHBlci5jbGFzc107CiAgICAgCiAgICAgQHRyeSB7CiAgICAgICAgIGlk
IHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczphbGxvd2VkQ2xhc3NT
ZXQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CkBAIC00NzQsNiAr
NTM4LDIyIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNv
ZGVVUkxJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiB7IGJyaWRnZV9jYXN0
KFdURk1vdmUoVVJMKSkgfTsKIH0KIAorI3ByYWdtYSBtYXJrIC0gQ0YKKworc3RhdGljIGlubGlu
ZSB2b2lkIGVuY29kZUNGSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgQ0ZUeXBlUmVmIGNmKQor
eworICAgIEFyZ3VtZW50Q29kZXI8Q0ZUeXBlUmVmPjo6ZW5jb2RlKGVuY29kZXIsIGNmKTsKK30K
Kworc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUNGSW50
ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IEFyZ3VtZW50Q29k
ZXI8UmV0YWluUHRyPENGVHlwZVJlZj4+OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aWQ+KHJlc3VsdC0+Z2V0KCkpOworfQorCiAjcHJhZ21hIG1hcmsgLSBFbnRyeSBQb2ludCBF
bmNvZGVyIC8gRGVjb2RlcgogCiB2b2lkIGVuY29kZU9iamVjdChFbmNvZGVyJiBlbmNvZGVyLCBp
ZCBvYmplY3QpCkBAIC01MTYsNiArNTk2LDkgQEAgdm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYg
ZW5jb2RlciwgaWQgb2JqZWN0KQogICAgIGNhc2UgTlNUeXBlOjpVUkw6CiAgICAgICAgIGVuY29k
ZVVSTEludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TVVJMICo+KG9iamVjdCkpOwogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBOU1R5cGU6OkNGOgorICAgICAgICBlbmNvZGVDRkludGVy
bmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PENGVHlwZVJlZj4ob2JqZWN0KSk7CisgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIE5TVHlwZTo6VW5rbm93bjoKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtNTU2LDYgKzYzOSw4IEBAIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlT2Jq
ZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvCiAgICAgICAgIHJldHVy
biBkZWNvZGVEYXRhSW50ZXJuYWwoZGVjb2Rlcik7CiAgICAgY2FzZSBOU1R5cGU6OlVSTDoKICAg
ICAgICAgcmV0dXJuIGRlY29kZVVSTEludGVybmFsKGRlY29kZXIpOworICAgIGNhc2UgTlNUeXBl
OjpDRjoKKyAgICAgICAgcmV0dXJuIGRlY29kZUNGSW50ZXJuYWwoZGVjb2Rlcik7CiAgICAgY2Fz
ZSBOU1R5cGU6OlVua25vd246CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU4MCw2ICs2NjUs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPElQQzo6TlNUeXBlPiB7CiAgICAgICAg
IElQQzo6TlNUeXBlOjpTZWN1cmVDb2RpbmcsCiAgICAgICAgIElQQzo6TlNUeXBlOjpTdHJpbmcs
CiAgICAgICAgIElQQzo6TlNUeXBlOjpVUkwsCisgICAgICAgIElQQzo6TlNUeXBlOjpDRiwKICAg
ICAgICAgSVBDOjpOU1R5cGU6OlVua25vd24KICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggYzUwZjcxZWIxMmJkYzZlYWQ4YTUz
NDE2MGIxMGNlMGNiYTVhZjhmNC4uYTdjZDc5NWQ4ZWU4YTczNjc0ZTliNzczNTc1MDk4ZDI4YzVi
ZTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnND
Ri5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgpAQCAtNzgsNiArNzksNyBAQCBlbnVtIGNsYXNzIENGVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIFNlY1RydXN0LAogI2VuZGlmCiAgICAgQ0dDb2xvclNwYWNlLAorICAgIENHQ29sb3IsCiAg
ICAgTnVsbHB0ciwKICAgICBVbmtub3duLAogfTsKQEAgLTExMiw2ICsxMTQsOCBAQCBzdGF0aWMg
Q0ZUeXBlIHR5cGVGcm9tQ0ZUeXBlUmVmKENGVHlwZVJlZiB0eXBlKQogICAgICAgICByZXR1cm4g
Q0ZUeXBlOjpDRlVSTDsKICAgICBpZiAodHlwZUlEID09IENHQ29sb3JTcGFjZUdldFR5cGVJRCgp
KQogICAgICAgICByZXR1cm4gQ0ZUeXBlOjpDR0NvbG9yU3BhY2U7CisgICAgaWYgKHR5cGVJRCA9
PSBDR0NvbG9yR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBDRlR5cGU6OkNHQ29sb3I7CiAg
ICAgaWYgKHR5cGVJRCA9PSBTZWNDZXJ0aWZpY2F0ZUdldFR5cGVJRCgpKQogICAgICAgICByZXR1
cm4gQ0ZUeXBlOjpTZWNDZXJ0aWZpY2F0ZTsKICNpZiBIQVZFKFNFQ19LRVlDSEFJTikKQEAgLTEy
Nyw2ICsxMzEsOCBAQCBzdGF0aWMgQ0ZUeXBlIHR5cGVGcm9tQ0ZUeXBlUmVmKENGVHlwZVJlZiB0
eXBlKQogICAgICAgICByZXR1cm4gQ0ZUeXBlOjpTZWNUcnVzdDsKICNlbmRpZgogCisgICAgLy8g
SWYgeW91J3JlIGhpdHRpbmcgdGhpcywgaXQgcHJvYmFibHkgbWVhbnMgdGhhdCB5b3UndmUgcHV0
IGFuIE5TIHR5cGUgaW5zaWRlIGEgQ0YgY29udGFpbmVyLgorICAgIC8vIFRyeSByb3VuZC10cmlw
cGluZyB0aGUgY29udGFpbmVyIHRocm91Z2ggYW4gTlMgdHlwZSBpbnN0ZWFkLgogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBDRlR5cGU6OlVua25vd247CiB9CkBAIC0xNzEs
NiArMTc3LDkgQEAgdm9pZCBBcmd1bWVudENvZGVyPENGVHlwZVJlZj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBDRlR5cGVSZWYgdHlwZVJlZikKICAgICBjYXNlIENGVHlwZTo6Q0dDb2xvclNw
YWNlOgogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PENHQ29sb3JTcGFjZVJlZj4oY29u
c3RfY2FzdDx2b2lkKj4odHlwZVJlZikpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBDRlR5
cGU6OkNHQ29sb3I6CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Q0dDb2xvclJlZj4o
Y29uc3RfY2FzdDx2b2lkKj4odHlwZVJlZikpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBD
RlR5cGU6OlNlY0NlcnRpZmljYXRlOgogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PFNl
Y0NlcnRpZmljYXRlUmVmPihjb25zdF9jYXN0PHZvaWQqPih0eXBlUmVmKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI4MSw2ICsyOTAsMTMgQEAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZUeXBl
UmVmPj4gQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj46OmRlY29kZSgKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKCpjb2xv
clNwYWNlKTsKICAgICB9CisgICAgY2FzZSBDRlR5cGU6OkNHQ29sb3I6IHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGNvbG9yOworICAgICAgICBkZWNvZGVy
ID4+IGNvbG9yOworICAgICAgICBpZiAoIWNvbG9yKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoKmNvbG9yKTsKKyAgICB9CiAgICAgY2Fz
ZSBDRlR5cGU6OlNlY0NlcnRpZmljYXRlOiB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPFNlY0NlcnRpZmljYXRlUmVmPj4gY2VydGlmaWNhdGU7CiAgICAgICAgIGRlY29kZXIgPj4g
Y2VydGlmaWNhdGU7CkBAIC03ODksNiArODA1LDIzIEBAIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRy
PENHQ29sb3JTcGFjZVJlZj4+IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KK3ZvaWQgQXJndW1lbnRDb2RlcjxDR0NvbG9yUmVmPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIENHQ29sb3JSZWYgY29sb3IpCit7CisgICAgZW5jb2RlciA8PCBXZWJDb3JlOjpDb2xvcjo6
Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKGNvbG9yKTsKK30KKwordGVtcGxhdGUgdm9pZCBB
cmd1bWVudENvZGVyPENHQ29sb3JSZWY+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIENHQ29s
b3JSZWYpOwordGVtcGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPENHQ29sb3JSZWY+OjplbmNvZGU8
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgQ0dDb2xv
clJlZik7CisKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBBcmd1bWVudENv
ZGVyPFJldGFpblB0cjxDR0NvbG9yUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4g
Y29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gY2FjaGVkQ0dDb2xvcigqY29sb3IpOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVyPFNlY0NlcnRpZmljYXRlUmVmPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIFNlY0NlcnRpZmljYXRlUmVmIGNlcnRpZmljYXRlKQpAQCAtOTQ2LDYg
Kzk3OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SVBDOjpDRlR5cGU+IHsKICAg
ICAgICAgSVBDOjpDRlR5cGU6OlNlY1RydXN0LAogI2VuZGlmCiAgICAgICAgIElQQzo6Q0ZUeXBl
OjpDR0NvbG9yU3BhY2UsCisgICAgICAgIElQQzo6Q0ZUeXBlOjpDR0NvbG9yLAogICAgICAgICBJ
UEM6OkNGVHlwZTo6TnVsbHB0ciwKICAgICAgICAgSVBDOjpDRlR5cGU6OlVua25vd24KICAgICA+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5oCmluZGV4IGE4MjBh
MTY3MmE2Nzk5Mjc1MDJlMzBmOWZiODBjNWY3OWI5ODg5YmQuLjA0MDRhNWVkMGYyNjMwODBiZWNj
ZWFmZGFmZjg3MjBkZmVjMzZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nm
L0FyZ3VtZW50Q29kZXJzQ0YuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmgKQEAgLTQxLDkgKzQxLDYgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBFbmNv
ZGVyOwogY2xhc3MgRGVjb2RlcjsKIAotLy8gTk9URTogVGhlc2UgY29kZXJzIGFyZSBzdHJ1Y3R1
cmVkIHN1Y2ggdGhhdCB0aGV5IGV4cG9zZSBlbmNvZGVyIGZ1bmN0aW9ucyBmb3IgYm90aCBDRlR5
cGUgYW5kIFJldGFpblB0cjxDRlR5cGU+Ci0vLyBidXQgb25seSBhIGRlY29kZXIgb25seSBmb3Ig
UmV0YWluUHRyPENGVHlwZT4uCi0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ0ZSZXRh
aW5QdHJBcmd1bWVudENvZGVyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmV0YWluUHRyPFQ+JiByZXRh
aW5QdHIpCkBAIC0xMjksNiArMTI2LDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4+IDogQ0ZSZXRhaW5QdHJBcmd1bWVuCiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHQ29sb3JS
ZWY+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIENHQ29sb3JSZWYpOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmV0YWluUHRyPENHQ29sb3JSZWY+PiA6IENGUmV0YWluUHRyQXJndW1lbnRDb2RlcjxDR0Nv
bG9yUmVmPiB7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENHQ29sb3JSZWY+
PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgU2VjQ2VydGlmaWNhdGVSZWYpOwogfTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyOGYzNDA4NzIz
ZDQyOTdjNjEyNzg0YTQ5Y2M0NDFiMDUwNzQ2YmYzLi42YzhkYzNmMjdlN2YzZDQ5NjI1MGYwMDNi
MzdkYjhlNWI1NjRhZDNlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMTggIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFRlYWNoIFdlYktpdCBo
b3cgdG8gc2VyaWFsaXplIENHQ29sb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzgwNjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwMTI0MzI1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JUENUZXN0aW5nQVBJLm1tOgorCiAyMDIyLTAzLTE4ICBC
ZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlw
dGlvbnMgd2hlbiBhc3NvY2lhdGVkIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMgYXJlIHJl
bW92ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKaW5k
ZXggMWMwMGFkNDRiNzg1MjA1NTg0MGQyZmUyM2E5OTlkODk0ZTI2ZTk3YS4uZjMwNjRmYzYwMDgw
NWRjNDg1Y2ZhYmM1ZTkxMzU3M2FjNWY4MzlhOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTI1NDYsNyArMjU0Niw3IEBAIGRlZiBjaGVja19u
YW1lc3BhY2VfaW5kZW50YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVu
c2lvbiwgZmlsZV9zCiAKIAogIyBFbnVtIGRlY2xhcmF0aW9uIGFsbG93bGlzdAotX0FMTE9XX0FM
TF9VUFBFUkNBU0VfRU5VTSA9IFsnSlNUb2tlblR5cGUnLCAnTWVyaWRpZW0nXQorX0FMTE9XX0FM
TF9VUFBFUkNBU0VfRU5VTSA9IFsnSlNUb2tlblR5cGUnLCAnTWVyaWRpZW0nLCAnTlNUeXBlJ10K
IAogCiBkZWYgY2hlY2tfZW51bV9jYXNpbmcoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlbnVt
X3N0YXRlLCBlcnJvcik6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0KaW5kZXggZDVjZTE4MzQxM2RlOTA0ZjY5NWE1YzMw
YTg2MTU2OTVmNTVlMGMzZi4uODU1MGE3OGRhZjU0NmFkMmYwMTcyNzgyZmNkMjgwNjg4YjU4OWQw
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JUENU
ZXN0aW5nQVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SVBDVGVzdGluZ0FQSS5tbQpAQCAtNTQ4LDQgKzU0OCwzMyBAQCBURVNUKElQQ1Rlc3RpbmdBUEks
IENhbkludGVyY2VwdEZpbmRTdHJpbmcpCiAgICAgICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJJUEMud2ViUGFnZVByb3h5SUQudG9TdHJpbmcoKSJdLmludFZhbHVl
KTsKIH0KIAorVEVTVChJUENUZXN0aW5nQVBJLCBDR0NvbG9ySW5OU1NlY3VyZUNvZGluZykKK3sK
KyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5p
dFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKworICAgIFJldGFpblB0cjxpZDxOU0tleWVk
QXJjaGl2ZXJEZWxlZ2F0ZSwgTlNLZXllZFVuYXJjaGl2ZXJEZWxlZ2F0ZT4+IGRlbGVnYXRlID0g
YWRvcHROUyhbW05TQ2xhc3NGcm9tU3RyaW5nKEAiV0tTZWN1cmVDb2RpbmdBcmNoaXZpbmdEZWxl
Z2F0ZSIpIGFsbG9jXSBpbml0XSk7CisgICAgYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKKworICAgIGF1dG8gcGF5bG9hZCA9IEB7IEAiU29tZVN0cmluZyIgOiBzdGF0
aWNfY2FzdDxpZD4oYWRvcHRDRihDR0NvbG9yQ3JlYXRlU1JHQigwLjIsIDAuMywgMC40LCAwLjUp
KS5nZXQoKSkgfTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheWxvYWQgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5n
XTsKKyAgICBbYXJjaGl2ZXIgc2V0RGVsZWdhdGU6bmlsXTsKKworICAgIGF1dG8gZGF0YSA9IFth
cmNoaXZlciBlbmNvZGVkRGF0YV07CisKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6ZGF0YSBlcnJv
cjpudWxscHRyXSk7CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kg
PSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOworICAgIHVuYXJjaGl2ZXIu
Z2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIGF1dG8gYWxsb3dlZENsYXNz
U2V0ID0gYWRvcHROUyhbTlNNdXRhYmxlU2V0IG5ld10pOworICAgIFthbGxvd2VkQ2xhc3NTZXQg
YWRkT2JqZWN0Ok5TRGljdGlvbmFyeS5jbGFzc107CisgICAgW2FsbG93ZWRDbGFzc1NldCBhZGRP
YmplY3Q6TlNTdHJpbmcuY2xhc3NdOworICAgIFthbGxvd2VkQ2xhc3NTZXQgYWRkT2JqZWN0Ok5T
Q2xhc3NGcm9tU3RyaW5nKEAiV0tTZWN1cmVDb2RpbmdDR0NvbG9yV3JhcHBlciIpXTsKKworICAg
IGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczphbGxvd2VkQ2xh
c3NTZXQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgRVhQ
RUNUX1RSVUUoW3BheWxvYWQgaXNFcXVhbDpyZXN1bHRdKTsKKyAgICBbdW5hcmNoaXZlciBmaW5p
c2hEZWNvZGluZ107CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWxlZ2F0ZSA9IG5pbDsKK30KKwog
I2VuZGlmCg==
</data>
<flag name="review"
          id="483016"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>