<?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>140051</bug_id>
          
          <creation_ts>2015-01-03 15:27:33 -0800</creation_ts>
          <short_desc>Move the CSS Grid properties to the new StyleBuilder</short_desc>
          <delta_ts>2015-01-03 22:35:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137910</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058520</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-03 15:27:33 -0800</bug_when>
    <thetext>Move the CSS Grid properties to the new StyleBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058521</commentid>
    <comment_count>1</comment_count>
      <attachid>243921</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-03 16:16:16 -0800</bug_when>
    <thetext>Created attachment 243921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058524</commentid>
    <comment_count>2</comment_count>
      <attachid>243921</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-03 22:35:11 -0800</bug_when>
    <thetext>Comment on attachment 243921
Patch

Clearing flags on attachment: 243921

Committed r177872: &lt;http://trac.webkit.org/changeset/177872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058525</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-03 22:35:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243921</attachid>
            <date>2015-01-03 16:16:16 -0800</date>
            <delta_ts>2015-01-03 22:35:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140051-20150103161620.patch</filename>
            <type>text/plain</type>
            <size>38014</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3ODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdkMjBlYTJiOGYxM2Vk
MzcxMzUwZmI2ZjAzNmZjMzFkMTEwOGU4Ny4uYmMzZWUyYWRjYTBhNmUyZTIwNDdlYzNhYjg2Mjc0
OWVjOTAxYmY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAxLTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSB0aGUgQ1NTIEdyaWQg
cHJvcGVydGllcyB0byB0aGUgbmV3IFN0eWxlQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgQ1NTIEdyaWQgcHJvcGVydGllcyBm
cm9tIFN0eWxlUmVzb2x2ZXIgdG8gdGhlIG5ldworICAgICAgICBTdHlsZUJ1aWxkZXIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yICJDb25kaXRpb25hbENvbnZlcnRlciIg
cGFyYW1ldGVyIGluCisgICAgICAgIENTU1Byb3BlcnR5TmFtZXMuaW4gdG8gc3VwcG9ydCBjYXNl
cyB3aGVyZSB3ZSBvbmx5IHdhbnQgdG8gY2FsbCB0aGUKKyAgICAgICAgcHJvcGVydHkgc2V0dGVy
IGNvbmRpdGlvbmFsbHkuIFRoZSBjb252ZXJ0ZXIgZnVuY3Rpb24gaXMgdGhlbiBleHBlY3RlZAor
ICAgICAgICB0byByZXR1cm4gYSBib29sZWFuIHRvIGluZGljYXRlIGlmIHRoZSBzZXR0ZXIgc2hv
dWxkIGJlIGNhbGxlZCBieSB0aGUKKyAgICAgICAgU3R5bGVCdWlsZGVyIG9yIG5vdC4KKwogMjAx
NS0wMS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEtpbGwg
dGhlIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFt
ZXMuaW4KaW5kZXggODcyOWRiMDZkZGQyNTBlOGMxZGRiM2I1ZGI3M2MzNzEzZWVlMDViZi4uMGYx
YjJjMTRkNjQyZTI1ZjAxYjE3OTQwODQyZjJmM2ViZTE0MDk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTQ0LDYgKzQ0LDEwIEBACiAvLyBjYW4gaW5kaWNhdGUg
dGhhdCBhIENvbnZlcnRlciBoZWxwZXIgZnVuY3Rpb24gaW4KIC8vIGNzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaCBzaG91bGQgYmUgdXNlZC4KIC8vCisvLyAqIENvbmRpdGlvbmFsQ29udmVydGVy
PVhYWDoKKy8vIFNpbWlsYXIgdG8gQ29udmVydGVyPVhYWCBidXQgdGhlIGNvbnZlcnRlciBmdW5j
dGlvbiByZXR1cm5zIGEgYm9vbGVhbgorLy8gdG8gaW5kaWNhdGUgaWYgdGhlIHByb3BlcnR5IHNl
dHRlciBzaG91bGQgYmUgY2FsbGVkIG9yIG5vdC4KKy8vCiAvLyAqIEN1c3RvbT1bSW5pdGlhbHxW
YWx1ZXxJbmhlcml0fEFsbF06CiAvLyBDdXN0b209SW5pdGlhbCBvcHRpb24gaXMgdXNlZCB0byBp
bmRpY2F0ZSB0aGF0IHRoZSBDU1MgcHJvcGVydHkgcmVxdWlyZXMKIC8vIHNwZWNpYWwgaGFuZGxp
bmcgdG8gc2V0IGl0cyBpbml0aWFsIHZhbHVlLgpAQCAtNDI1LDE5ICs0MjksMTkgQEAganVzdGlm
eS1jb250ZW50CiAjaWYgZGVmaW5lZChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAmJiBFTkFCTEVf
Q1NTX0dSSURfTEFZT1VUCiAtd2Via2l0LWdyaWQgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KIC13ZWJr
aXQtZ3JpZC1hcmVhIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCi0td2Via2l0LWdyaWQtYXV0by1jb2x1
bW5zIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCi0td2Via2l0LWdyaWQtYXV0by1yb3dzIFtMZWdhY3lT
dHlsZUJ1aWxkZXJdCi0td2Via2l0LWdyaWQtY29sdW1uLWVuZCBbTGVnYWN5U3R5bGVCdWlsZGVy
XQotLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCBbTGVnYWN5U3R5bGVCdWlsZGVyXQorLXdlYmtp
dC1ncmlkLWF1dG8tY29sdW1ucyBbQ29uZGl0aW9uYWxDb252ZXJ0ZXI9R3JpZFRyYWNrU2l6ZSwg
VHlwZU5hbWU9R3JpZFRyYWNrU2l6ZV0KKy13ZWJraXQtZ3JpZC1hdXRvLXJvd3MgW0NvbmRpdGlv
bmFsQ29udmVydGVyPUdyaWRUcmFja1NpemUsIFR5cGVOYW1lPUdyaWRUcmFja1NpemVdCistd2Vi
a2l0LWdyaWQtY29sdW1uLWVuZCBbQ29uZGl0aW9uYWxDb252ZXJ0ZXI9R3JpZFBvc2l0aW9uLCBU
eXBlTmFtZT1HcmlkUG9zaXRpb24sIE5hbWVGb3JNZXRob2RzPUdyaWRJdGVtQ29sdW1uRW5kXQor
LXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCBbQ29uZGl0aW9uYWxDb252ZXJ0ZXI9R3JpZFBvc2l0
aW9uLCBUeXBlTmFtZT1HcmlkUG9zaXRpb24sIE5hbWVGb3JNZXRob2RzPUdyaWRJdGVtQ29sdW1u
U3RhcnRdCiAtd2Via2l0LWdyaWQtdGVtcGxhdGUgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLS13ZWJr
aXQtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCi0td2Via2l0LWdy
aWQtdGVtcGxhdGUtcm93cyBbTGVnYWN5U3R5bGVCdWlsZGVyXQotLXdlYmtpdC1ncmlkLXJvdy1l
bmQgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLS13ZWJraXQtZ3JpZC1yb3ctc3RhcnQgW0xlZ2FjeVN0
eWxlQnVpbGRlcl0KKy13ZWJraXQtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIFtDdXN0b209QWxsXQor
LXdlYmtpdC1ncmlkLXRlbXBsYXRlLXJvd3MgW0N1c3RvbT1BbGxdCistd2Via2l0LWdyaWQtcm93
LWVuZCBbQ29uZGl0aW9uYWxDb252ZXJ0ZXI9R3JpZFBvc2l0aW9uLCBUeXBlTmFtZT1HcmlkUG9z
aXRpb24sIE5hbWVGb3JNZXRob2RzPUdyaWRJdGVtUm93RW5kXQorLXdlYmtpdC1ncmlkLXJvdy1z
dGFydCBbQ29uZGl0aW9uYWxDb252ZXJ0ZXI9R3JpZFBvc2l0aW9uLCBUeXBlTmFtZT1HcmlkUG9z
aXRpb24sIE5hbWVGb3JNZXRob2RzPUdyaWRJdGVtUm93U3RhcnRdCiAtd2Via2l0LWdyaWQtY29s
dW1uIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCiAtd2Via2l0LWdyaWQtcm93IFtMZWdhY3lTdHlsZUJ1
aWxkZXJdCi0td2Via2l0LWdyaWQtdGVtcGxhdGUtYXJlYXMgW0xlZ2FjeVN0eWxlQnVpbGRlcl0K
LS13ZWJraXQtZ3JpZC1hdXRvLWZsb3cgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KKy13ZWJraXQtZ3Jp
ZC10ZW1wbGF0ZS1hcmVhcyBbQ3VzdG9tPUFsbF0KKy13ZWJraXQtZ3JpZC1hdXRvLWZsb3cgW0Nv
bnZlcnRlcj1HcmlkQXV0b0Zsb3ddCiAjZW5kaWYKIC13ZWJraXQtaHlwaGVuYXRlLWNoYXJhY3Rl
ciBbSW5oZXJpdGVkLCBOYW1lRm9yTWV0aG9kcz1IeXBoZW5hdGlvblN0cmluZywgQ29udmVydGVy
PVN0cmluZ09yQXV0b10KIC13ZWJraXQtaHlwaGVuYXRlLWxpbWl0LWFmdGVyIFtJbmhlcml0ZWQs
IE5hbWVGb3JNZXRob2RzPUh5cGhlbmF0aW9uTGltaXRBZnRlciwgQ29udmVydGVyPU51bWJlcjxz
aG9ydD5dCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXgg
YzJhNWU3YTExZjQzOTg0OGJiNTYzYmNkOWNlYTVlMDYwODg0MTc1OC4uZWQwYWQ5M2M1NTk1NTMz
MDFiZTk0NzAxYTQ0ZGJmZmI2MGZlYTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaApAQCAtMjksNiArMjksOSBAQAogCiAjaW5jbHVkZSAiQmFzaWNTaGFw
ZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NGdW5jdGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgi
CisjaW5jbHVkZSAiQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVNldFZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgpAQCAtNzgsMTEgKzgxLDI1IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgTGluZUJveENvbnRhaW4gY29udmVydExpbmVCb3hDb250YWluKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgY29udmVydFRleHRE
ZWNvcmF0aW9uU2tpcChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTaGFwZVZhbHVlPiBjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiwgQ1NT
VmFsdWUmKTsKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgIHN0YXRpYyBib29sIGNv
bnZlcnRHcmlkVHJhY2tTaXplKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYsIEdyaWRUcmFja1Np
emUmKTsKKyAgICBzdGF0aWMgYm9vbCBjb252ZXJ0R3JpZFBvc2l0aW9uKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYsIEdyaWRQb3NpdGlvbiYpOworICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgY29u
dmVydEdyaWRBdXRvRmxvdyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyNlbmRpZiAvLyBF
TkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTdHls
ZUJ1aWxkZXJDdXN0b207CisKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb1JhZGl1c0xlbmd0
aChDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKICAgICBz
dGF0aWMgVGV4dEVtcGhhc2lzUG9zaXRpb24gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oQ1NTUHJp
bWl0aXZlVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25Ta2lwIHZhbHVlVG9EZWNv
cmF0aW9uU2tpcChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOworI2lmIEVOQUJMRShDU1NfR1JJ
RF9MQVlPVVQpCisgICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmlt
aXRpdmVWYWx1ZSYsIFN0eWxlUmVzb2x2ZXImLCBHcmlkTGVuZ3RoJik7CisgICAgc3RhdGljIGJv
b2wgY3JlYXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1ZSYsIEdyaWRUcmFja1NpemUmLCBTdHlsZVJl
c29sdmVyJik7CisgICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSYs
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcywgTmFtZWRHcmlkTGluZXNNYXAmLCBP
cmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmLCBTdHlsZVJlc29sdmVyJik7CisgICAgc3RhdGljIGJv
b2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlJiwgR3JpZFBvc2l0aW9uJik7CisgICAgc3Rh
dGljIHZvaWQgY3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShjb25zdCBO
YW1lZEdyaWRBcmVhTWFwJiwgTmFtZWRHcmlkTGluZXNNYXAmLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24pOworI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiB9OwogCiBpbmxpbmUg
TGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC02MzgsNiArNjU1LDIwMyBAQCBp
bmxpbmUgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRTaGFwZVZhbHVlKFN0eWxlUmVzbwogfQogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBUEVTKQog
CisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKK2Jvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVy
OjpjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1
ZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgR3JpZExlbmd0aCYgd29ya2luZ0xlbmd0
aCkKK3sKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlV2Vi
a2l0TWluQ29udGVudCkgeworICAgICAgICB3b3JraW5nTGVuZ3RoID0gTGVuZ3RoKE1pbkNvbnRl
bnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCkgeworICAgICAgICB3
b3JraW5nTGVuZ3RoID0gTGVuZ3RoKE1heENvbnRlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNGbGV4KCkpIHsKKyAgICAgICAgLy8g
RnJhY3Rpb25hbCB1bml0LgorICAgICAgICB3b3JraW5nTGVuZ3RoLnNldEZsZXgocHJpbWl0aXZl
VmFsdWUuZ2V0RG91YmxlVmFsdWUoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHdvcmtpbmdMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJ
bnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNp
b24gfCBBdXRvQ29udmVyc2lvbj4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEoKSk7CisgICAgaWYgKHdvcmtpbmdMZW5ndGgubGVuZ3RoKCkuaXNVbmRlZmlu
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlz
TGVuZ3RoKCkpCisgICAgICAgIHdvcmtpbmdMZW5ndGgubGVuZ3RoKCkuc2V0SGFzUXVpcmsocHJp
bWl0aXZlVmFsdWUuaXNRdWlya1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlJiB2
YWx1ZSwgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyKQoreworICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CisgICAgICAg
IEdyaWRMZW5ndGggd29ya2luZ0xlbmd0aDsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tC
cmVhZHRoKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSksIHN0eWxlUmVzb2x2ZXIs
IHdvcmtpbmdMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRy
YWNrU2l6ZS5zZXRMZW5ndGgod29ya2luZ0xlbmd0aCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIENTU1ZhbHVlTGlzdCYgYXJndW1lbnRzID0gKmRvd25jYXN0PENTU0Z1bmN0
aW9uVmFsdWU+KHZhbHVlKS5hcmd1bWVudHMoKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihhcmd1bWVudHMubGVuZ3RoKCkgPT0gMik7CisKKyAgICBHcmlkTGVuZ3RoIG1p
blRyYWNrQnJlYWR0aDsKKyAgICBHcmlkTGVuZ3RoIG1heFRyYWNrQnJlYWR0aDsKKyAgICBpZiAo
IWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCphcmd1
bWVudHMuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSksIHN0eWxlUmVzb2x2ZXIsIG1pblRyYWNr
QnJlYWR0aCkgfHwgIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCphcmd1bWVudHMuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSksIHN0eWxlUmVzb2x2
ZXIsIG1heFRyYWNrQnJlYWR0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHRyYWNr
U2l6ZS5zZXRNaW5NYXgobWluVHJhY2tCcmVhZHRoLCBtYXhUcmFja0JyZWFkdGgpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRy
YWNrTGlzdChDU1NWYWx1ZSYgdmFsdWUsIFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXpl
cywgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZExpbmVzLCBPcmRlcmVkTmFtZWRHcmlkTGlu
ZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRMaW5lcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
cikKK3sKKyAgICAvLyBIYW5kbGUgJ25vbmUnLgorICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworCisgICAgaWYgKCFpczxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgY3Vy
cmVudE5hbWVkR3JpZExpbmUgPSAwOworICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGlzPENTU0dyaWRMaW5l
TmFtZXNWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSkgeworICAgICAgICAgICAgZm9yIChhdXRv
JiBjdXJyZW50R3JpZExpbmVOYW1lIDogZG93bmNhc3Q8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPihj
dXJyZW50VmFsdWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWVkR3JpZExp
bmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudEdyaWRMaW5lTmFtZS5nZXQo
KSkuZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBOYW1lZEdyaWRMaW5lc01hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChuYW1lZEdyaWRMaW5lLCBWZWN0
b3I8dW5zaWduZWQ+KCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
YXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKKyAgICAgICAgICAgICAgICBPcmRlcmVkTmFt
ZWRHcmlkTGluZXNNYXA6OkFkZFJlc3VsdCBvcmRlcmVkUmVzdWx0ID0gb3JkZXJlZE5hbWVkR3Jp
ZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlkTGluZSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAg
ICAgICAgICAgICAgb3JkZXJlZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKG5hbWVkR3Jp
ZExpbmUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICArK2N1cnJlbnROYW1lZEdyaWRMaW5lOworICAgICAgICBHcmlkVHJhY2tTaXpl
IHRyYWNrU2l6ZTsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXplKGN1cnJlbnRWYWx1
ZSwgdHJhY2tTaXplLCBzdHlsZVJlc29sdmVyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICB0cmFja1NpemVzLmFwcGVuZCh0cmFja1NpemUpOworICAgIH0KKworICAgIC8v
IFRoZSBwYXJzZXIgc2hvdWxkIGhhdmUgcmVqZWN0ZWQgYW55IDx0cmFjay1saXN0PiB3aXRob3V0
IGFueSA8dHJhY2stc2l6ZT4gYXMKKyAgICAvLyB0aGlzIGlzIG5vdCBjb25mb3JtYW50IHRvIHRo
ZSBzeW50YXguCisgICAgQVNTRVJUKCF0cmFja1NpemVzLmlzRW1wdHkoKSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkUG9zaXRp
b24oQ1NTVmFsdWUmIHZhbHVlLCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIC8vIFdl
IGFjY2VwdCB0aGUgc3BlY2lmaWNhdGlvbidzIGdyYW1tYXI6CisgICAgLy8gYXV0byB8IDxjdXN0
b20taWRlbnQ+IHwgWyA8aW50ZWdlcj4gJiYgPGN1c3RvbS1pZGVudD4/IF0gfCBbIHNwYW4gJiYg
WyA8aW50ZWdlcj4gfHwgPGN1c3RvbS1pZGVudD4gXSBdCisgICAgaWYgKGlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpIHsKKyAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgICAgICAvLyBXZSB0cmFuc2xhdGUgPGlk
ZW50PiB0byA8c3RyaW5nPiBkdXJpbmcgcGFyc2luZyBhcyBpdCBtYWtlcyBoYW5kbGluZyBpdCBz
aW1wbGVyLgorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAg
ICAgICAgcG9zaXRpb24uc2V0TmFtZWRHcmlkQXJlYShwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdW
YWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
QVNTRVJUKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvJiB2YWx1ZXMgPSBkb3duY2FzdDxD
U1NWYWx1ZUxpc3Q+KHZhbHVlKTsKKyAgICBBU1NFUlQodmFsdWVzLmxlbmd0aCgpKTsKKworICAg
IGF1dG8gaXQgPSB2YWx1ZXMuYmVnaW4oKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY3VycmVu
dFZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdC0+Z2V0KCkpOworICAgIGJv
b2wgaXNTcGFuUG9zaXRpb24gPSBmYWxzZTsKKyAgICBpZiAoY3VycmVudFZhbHVlLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVTcGFuKSB7CisgICAgICAgIGlzU3BhblBvc2l0aW9uID0gdHJ1ZTsK
KyAgICAgICAgKytpdDsKKyAgICAgICAgY3VycmVudFZhbHVlID0gaXQgIT0gdmFsdWVzLmVuZCgp
ID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdC0+Z2V0KCkpIDogbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBpbnQgZ3JpZExpbmVOdW1iZXIgPSAwOworICAgIGlmIChjdXJyZW50VmFsdWUg
JiYgY3VycmVudFZhbHVlLT5pc051bWJlcigpKSB7CisgICAgICAgIGdyaWRMaW5lTnVtYmVyID0g
Y3VycmVudFZhbHVlLT5nZXRJbnRWYWx1ZSgpOworICAgICAgICArK2l0OworICAgICAgICBjdXJy
ZW50VmFsdWUgPSBpdCAhPSB2YWx1ZXMuZW5kKCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGl0LT5nZXQoKSkgOiBudWxscHRyOworICAgIH0KKworICAgIFN0cmluZyBncmlkTGluZU5h
bWU7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUtPmlzU3RyaW5nKCkpIHsK
KyAgICAgICAgZ3JpZExpbmVOYW1lID0gY3VycmVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwor
ICAgICAgICArK2l0OworICAgIH0KKworICAgIEFTU0VSVChpdCA9PSB2YWx1ZXMuZW5kKCkpOwor
ICAgIGlmIChpc1NwYW5Qb3NpdGlvbikKKyAgICAgICAgcG9zaXRpb24uc2V0U3BhblBvc2l0aW9u
KGdyaWRMaW5lTnVtYmVyID8gZ3JpZExpbmVOdW1iZXIgOiAxLCBncmlkTGluZU5hbWUpOworICAg
IGVsc2UKKyAgICAgICAgcG9zaXRpb24uc2V0RXhwbGljaXRQb3NpdGlvbihncmlkTGluZU51bWJl
ciwgZ3JpZExpbmVOYW1lKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShj
b25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcywgTmFtZWRHcmlkTGluZXNNYXAm
IG5hbWVkR3JpZExpbmVzLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIGZvciAoYXV0byYgYXJlYSA6IG5hbWVkR3JpZEFyZWFzKSB7CisgICAgICAgIEdyaWRTcGFu
IGFyZWFTcGFuID0gZGlyZWN0aW9uID09IEZvclJvd3MgPyBhcmVhLnZhbHVlLnJvd3MgOiBhcmVh
LnZhbHVlLmNvbHVtbnM7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXJ0VmVjdG9y
ID0gbmFtZWRHcmlkTGluZXMuYWRkKGFyZWEua2V5ICsgIi1zdGFydCIsIFZlY3Rvcjx1bnNpZ25l
ZD4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgc3RhcnRWZWN0b3IuYXBwZW5kKGFy
ZWFTcGFuLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLnRvSW50KCkpOworICAgICAgICAgICAgc3Rk
Ojpzb3J0KHN0YXJ0VmVjdG9yLmJlZ2luKCksIHN0YXJ0VmVjdG9yLmVuZCgpKTsKKyAgICAgICAg
fQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvJiBlbmRWZWN0b3IgPSBuYW1lZEdyaWRMaW5l
cy5hZGQoYXJlYS5rZXkgKyAiLWVuZCIsIFZlY3Rvcjx1bnNpZ25lZD4oKSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICAgICAgZW5kVmVjdG9yLmFwcGVuZChhcmVhU3Bhbi5yZXNvbHZlZEZpbmFs
UG9zaXRpb24ubmV4dCgpLnRvSW50KCkpOworICAgICAgICAgICAgc3RkOjpzb3J0KGVuZFZlY3Rv
ci5iZWdpbigpLCBlbmRWZWN0b3IuZW5kKCkpOworICAgICAgICB9CisgICAgfQorfQorCitpbmxp
bmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSwgR3JpZFRyYWNrU2l6ZSYg
dHJhY2tTaXplKQoreworICAgIHJldHVybiBjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCB0cmFj
a1NpemUsIHN0eWxlUmVzb2x2ZXIpOworfQorCitpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRHcmlkUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1
ZSwgR3JpZFBvc2l0aW9uJiBncmlkUG9zaXRpb24pCit7CisgICAgcmV0dXJuIGNyZWF0ZUdyaWRQ
b3NpdGlvbih2YWx1ZSwgZ3JpZFBvc2l0aW9uKTsKK30KKworaW5saW5lIEdyaWRBdXRvRmxvdyBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZlciYs
IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0Pih2YWx1ZSk7CisgICAgaWYgKCFsaXN0Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gUmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0Zsb3coKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
JiBmaXJzdCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqbGlzdC5pdGVtKDApKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KGxpc3QuaXRlbSgxKSk7CisKKyAgICBHcmlkQXV0b0Zsb3cgYXV0b0Zsb3cgPSBSZW5kZXJTdHls
ZTo6aW5pdGlhbEdyaWRBdXRvRmxvdygpOworICAgIHN3aXRjaCAoZmlyc3QuZ2V0VmFsdWVJRCgp
KSB7CisgICAgY2FzZSBDU1NWYWx1ZVJvdzoKKyAgICAgICAgaWYgKHNlY29uZCAmJiBzZWNvbmQt
PmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZURlbnNlKQorICAgICAgICAgICAgYXV0b0Zsb3cgPSAg
QXV0b0Zsb3dSb3dEZW5zZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXV0b0Zsb3cgPSBB
dXRvRmxvd1JvdzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUNvbHVtbjoKKyAg
ICAgICAgaWYgKHNlY29uZCAmJiBzZWNvbmQtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZURlbnNl
KQorICAgICAgICAgICAgYXV0b0Zsb3cgPSBBdXRvRmxvd0NvbHVtbkRlbnNlOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBhdXRvRmxvdyA9IEF1dG9GbG93Q29sdW1uOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGF1dG9GbG93OworfQorI2VuZGlmIC8vIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFN0eWxlQnVpbGRlckNvbnZlcnRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKaW5kZXggMjA5NjM5ZmRmOTQwNjA0MGRkZTdiMzgxMTFlMmE1OTM5NGY1MWY0MC4uMDRl
ZDBmZGNkY2I2NzZkNzZlZjY4YTRmMTg2ZGJiOWM1NmE4Nzc1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtNzgsNiArNzgsMTEgQEAgcHVibGljOgogICAgIERF
Q0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKFdlYmtpdEFzcGVjdFJhdGlvKTsKICAgICBE
RUNMQVJFX1BST1BFUlRZX0NVU1RPTV9IQU5ETEVSUyhXZWJraXRCb3hTaGFkb3cpOwogICAgIERF
Q0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKFdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVz
KTsKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgIERFQ0xBUkVfUFJPUEVSVFlfQ1VT
VE9NX0hBTkRMRVJTKFdlYmtpdEdyaWRUZW1wbGF0ZUFyZWFzKTsKKyAgICBERUNMQVJFX1BST1BF
UlRZX0NVU1RPTV9IQU5ETEVSUyhXZWJraXRHcmlkVGVtcGxhdGVDb2x1bW5zKTsKKyAgICBERUNM
QVJFX1BST1BFUlRZX0NVU1RPTV9IQU5ETEVSUyhXZWJraXRHcmlkVGVtcGxhdGVSb3dzKTsKKyNl
bmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIERFQ0xBUkVfUFJPUEVSVFlfQ1VT
VE9NX0hBTkRMRVJTKFdlYmtpdE1hc2tCb3hJbWFnZU91dHNldCk7CiAgICAgREVDTEFSRV9QUk9Q
RVJUWV9DVVNUT01fSEFORExFUlMoV2Via2l0TWFza0JveEltYWdlUmVwZWF0KTsKICAgICBERUNM
QVJFX1BST1BFUlRZX0NVU1RPTV9IQU5ETEVSUyhXZWJraXRNYXNrQm94SW1hZ2VTbGljZSk7CkBA
IC0xNDAyLDYgKzE0MDcsMTA0IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUZvbnRTaXplKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgc3R5bGVS
ZXNvbHZlci5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKIH0KIAorI2lmIEVO
QUJMRShDU1NfR1JJRF9MQVlPVVQpCitpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbFdlYmtpdEdyaWRUZW1wbGF0ZUFyZWFzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCit7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhKFJl
bmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYSgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldE5hbWVkR3JpZEFyZWFSb3dDb3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVk
R3JpZEFyZWFDb3VudCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldE5hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgp
KTsKK30KKworaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJr
aXRHcmlkVGVtcGxhdGVBcmVhcyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQoreworICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYShzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPm5hbWVkR3JpZEFyZWEoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXROYW1lZEdyaWRBcmVhUm93Q291bnQoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5u
YW1lZEdyaWRBcmVhUm93Q291bnQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRO
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5uYW1l
ZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7Cit9CisKK2lubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEdyaWRUZW1wbGF0ZUFyZWFzKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSkgeworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8mIGdyaWRUZW1wbGF0ZUFyZWFzVmFsdWUgPSBkb3duY2FzdDxD
U1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlPih2YWx1ZSk7CisgICAgY29uc3QgTmFtZWRHcmlkQXJl
YU1hcCYgbmV3TmFtZWRHcmlkQXJlYXMgPSBncmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmdyaWRBcmVh
TWFwKCk7CisKKyAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRDb2x1bW5MaW5lcyA9IHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+bmFtZWRHcmlkQ29sdW1uTGluZXMoKTsKKyAgICBOYW1lZEdy
aWRMaW5lc01hcCBuYW1lZEdyaWRSb3dMaW5lcyA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+bmFt
ZWRHcmlkUm93TGluZXMoKTsKKyAgICBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxp
Y2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmV3TmFtZWRHcmlkQXJlYXMsIG5hbWVkR3Jp
ZENvbHVtbkxpbmVzLCBGb3JDb2x1bW5zKTsKKyAgICBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNy
ZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmV3TmFtZWRHcmlkQXJlYXMs
IG5hbWVkR3JpZFJvd0xpbmVzLCBGb3JSb3dzKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldE5hbWVkR3JpZENvbHVtbkxpbmVzKG5hbWVkR3JpZENvbHVtbkxpbmVzKTsKKyAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldE5hbWVkR3JpZFJvd0xpbmVzKG5hbWVkR3JpZFJvd0xpbmVz
KTsKKworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYShncmlkVGVt
cGxhdGVBcmVhc1ZhbHVlLmdyaWRBcmVhTWFwKCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KGdyaWRUZW1wbGF0ZUFyZWFzVmFsdWUucm93Q291
bnQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQoZ3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jb2x1bW5Db3VudCgpKTsKK30KKworaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRHcmlkVGVtcGxhdGVD
b2x1bW5zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCit7CisgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRHcmlkQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRDb2x1bW5z
KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQ29sdW1uTGluZXMo
UmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5MaW5lcygpKTsKKyAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHls
ZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpKTsKK30KKworaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRHcmlkVGVtcGxhdGVDb2x1
bW5zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCit7CisgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRHcmlkQ29sdW1ucyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmdyaWRD
b2x1bW5zKCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQ29sdW1u
TGluZXMoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5uYW1lZEdyaWRDb2x1bW5MaW5lcygp
KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldE9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPm9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcygpKTsKK30KKworaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
V2Via2l0R3JpZFRlbXBsYXRlQ29sdW1ucyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBD
U1NWYWx1ZSYgdmFsdWUpCit7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IHRyYWNrU2l6ZXM7
CisgICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRHcmlkTGluZXM7CisgICAgT3JkZXJlZE5hbWVk
R3JpZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRMaW5lczsKKyAgICBpZiAoIVN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tTaXplcywgbmFtZWRH
cmlkTGluZXMsIG9yZGVyZWROYW1lZEdyaWRMaW5lcywgc3R5bGVSZXNvbHZlcikpCisgICAgICAg
IHJldHVybjsKKyAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcyA9IHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+bmFtZWRHcmlkQXJlYSgpOworICAgIGlmICghbmFtZWRHcmlk
QXJlYXMuaXNFbXB0eSgpKQorICAgICAgICBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUlt
cGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmFtZWRHcmlkQXJlYXMsIG5hbWVkR3Jp
ZExpbmVzLCBGb3JDb2x1bW5zKTsKKworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0R3Jp
ZENvbHVtbnModHJhY2tTaXplcyk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROYW1l
ZEdyaWRDb2x1bW5MaW5lcyhuYW1lZEdyaWRMaW5lcyk7CisgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMob3JkZXJlZE5hbWVkR3JpZExpbmVz
KTsKK30KKworaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJr
aXRHcmlkVGVtcGxhdGVSb3dzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCit7CisgICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRHcmlkUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRSb3dzKCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TmFtZWRHcmlkUm93TGlu
ZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dMaW5lcygpKTsKKyAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6
aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKTsKK30KKworaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRHcmlkVGVtcGxhdGVSb3dzKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCit7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRHcmlkUm93cyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmdyaWRSb3dzKCkpOworICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TmFtZWRHcmlkUm93TGluZXMoc3R5bGVSZXNvbHZl
ci5wYXJlbnRTdHlsZSgpLT5uYW1lZEdyaWRSb3dMaW5lcygpKTsKKyAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhzdHlsZVJlc29sdmVyLnBhcmVu
dFN0eWxlKCktPm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKTsKK30KKworaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0R3JpZFRlbXBsYXRlUm93cyhTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCit7CisgICAgVmVjdG9y
PEdyaWRUcmFja1NpemU+IHRyYWNrU2l6ZXM7CisgICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRH
cmlkTGluZXM7CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRM
aW5lczsKKyAgICBpZiAoIVN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlz
dCh2YWx1ZSwgdHJhY2tTaXplcywgbmFtZWRHcmlkTGluZXMsIG9yZGVyZWROYW1lZEdyaWRMaW5l
cywgc3R5bGVSZXNvbHZlcikpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBOYW1lZEdyaWRB
cmVhTWFwJiBuYW1lZEdyaWRBcmVhcyA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+bmFtZWRHcmlk
QXJlYSgpOworICAgIGlmICghbmFtZWRHcmlkQXJlYXMuaXNFbXB0eSgpKQorICAgICAgICBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFy
ZWEobmFtZWRHcmlkQXJlYXMsIG5hbWVkR3JpZExpbmVzLCBGb3JSb3dzKTsKKworICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0R3JpZFJvd3ModHJhY2tTaXplcyk7CisgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXROYW1lZEdyaWRSb3dMaW5lcyhuYW1lZEdyaWRMaW5lcyk7CisgICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMob3JkZXJl
ZE5hbWVkR3JpZExpbmVzKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTdHlsZUJ1aWxkZXJDdXN0b21f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGJiNjA0ZGM1MjAzOTQyYWQw
Mjc4MDYzNjA0MDY2YWE2NDJlMzlmMjUuLjM5YjgyZjkxZWM5OTc0MjQ2ZGI2OWQ3NmY1YjhkM2Rl
ZmU3ZjA3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5NDcsMTY3
ICsxOTQ3LDYgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjp1c2VTVkdab29tUnVsZXNGb3JMZW5ndGgo
KQogICAgIHJldHVybiBpczxTVkdFbGVtZW50PihtX3N0YXRlLmVsZW1lbnQoKSkgJiYgIShpczxT
VkdTVkdFbGVtZW50PigqbV9zdGF0ZS5lbGVtZW50KCkpICYmIG1fc3RhdGUuZWxlbWVudCgpLT5w
YXJlbnROb2RlKCkpOwogfQogCi0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLXN0YXRpYyB2
b2lkIGNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEoY29uc3QgTmFtZWRH
cmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYXMsIE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRM
aW5lcywgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBmb3IgKGF1
dG8mIGFyZWEgOiBuYW1lZEdyaWRBcmVhcykgewotICAgICAgICBHcmlkU3BhbiBhcmVhU3BhbiA9
IGRpcmVjdGlvbiA9PSBGb3JSb3dzID8gYXJlYS52YWx1ZS5yb3dzIDogYXJlYS52YWx1ZS5jb2x1
bW5zOwotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvJiBzdGFydFZlY3RvciA9IG5hbWVkR3Jp
ZExpbmVzLmFkZChhcmVhLmtleSArICItc3RhcnQiLCBWZWN0b3I8dW5zaWduZWQ+KCkpLml0ZXJh
dG9yLT52YWx1ZTsKLSAgICAgICAgICAgIHN0YXJ0VmVjdG9yLmFwcGVuZChhcmVhU3Bhbi5yZXNv
bHZlZEluaXRpYWxQb3NpdGlvbi50b0ludCgpKTsKLSAgICAgICAgICAgIHN0ZDo6c29ydChzdGFy
dFZlY3Rvci5iZWdpbigpLCBzdGFydFZlY3Rvci5lbmQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ewotICAgICAgICAgICAgYXV0byYgZW5kVmVjdG9yID0gbmFtZWRHcmlkTGluZXMuYWRkKGFyZWEu
a2V5ICsgIi1lbmQiLCBWZWN0b3I8dW5zaWduZWQ+KCkpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICAg
ICAgICAgIGVuZFZlY3Rvci5hcHBlbmQoYXJlYVNwYW4ucmVzb2x2ZWRGaW5hbFBvc2l0aW9uLm5l
eHQoKS50b0ludCgpKTsKLSAgICAgICAgICAgIHN0ZDo6c29ydChlbmRWZWN0b3IuYmVnaW4oKSwg
ZW5kVmVjdG9yLmVuZCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgY3Jl
YXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNv
bnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSwgR3JpZExlbmd0aCYgd29ya2luZ0xlbmd0
aCkKLXsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdl
YmtpdE1pbkNvbnRlbnQpIHsKLSAgICAgICAgd29ya2luZ0xlbmd0aCA9IExlbmd0aChNaW5Db250
ZW50KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50KSB7Ci0gICAgICAg
IHdvcmtpbmdMZW5ndGggPSBMZW5ndGgoTWF4Q29udGVudCk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNGbGV4KCkpIHsKLSAgICAgICAg
Ly8gRnJhY3Rpb25hbCB1bml0LgotICAgICAgICB3b3JraW5nTGVuZ3RoLnNldEZsZXgocHJpbWl0
aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICB3b3JraW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29u
dmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KCkpOwotICAgIGlmICh3b3JraW5nTGVuZ3RoLmxlbmd0aCgpLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkK
LSAgICAgICAgd29ya2luZ0xlbmd0aC5sZW5ndGgoKS5zZXRIYXNRdWlyayhwcmltaXRpdmVWYWx1
ZS0+aXNRdWlya1ZhbHVlKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29s
IGNyZWF0ZUdyaWRUcmFja1NpemUoQ1NTVmFsdWUmIHZhbHVlLCBHcmlkVHJhY2tTaXplJiB0cmFj
a1NpemUsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSkKLXsKLSAgICBpZiAoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAg
ICAgICBHcmlkTGVuZ3RoIHdvcmtpbmdMZW5ndGg7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFRy
YWNrQnJlYWR0aCgmcHJpbWl0aXZlVmFsdWUsIHN0YXRlLCB3b3JraW5nTGVuZ3RoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB0cmFja1NpemUuc2V0TGVuZ3RoKHdvcmtp
bmdMZW5ndGgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBDU1NGdW5jdGlv
blZhbHVlJiBtaW5tYXhGdW5jdGlvbiA9IGRvd25jYXN0PENTU0Z1bmN0aW9uVmFsdWU+KHZhbHVl
KTsKLSAgICBDU1NWYWx1ZUxpc3QqIGFyZ3VtZW50cyA9IG1pbm1heEZ1bmN0aW9uLmFyZ3VtZW50
cygpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGFyZ3VtZW50cy0+bGVu
Z3RoKCkgPT0gMik7Ci0gICAgR3JpZExlbmd0aCBtaW5UcmFja0JyZWFkdGg7Ci0gICAgR3JpZExl
bmd0aCBtYXhUcmFja0JyZWFkdGg7Ci0gICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1bWVudHMtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMCkpLCBzdGF0ZSwgbWluVHJhY2tCcmVhZHRoKSB8fCAhY3JlYXRlR3JpZFRyYWNrQnJlYWR0
aChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJndW1lbnRzLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDEpKSwgc3RhdGUsIG1heFRyYWNrQnJlYWR0aCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHRyYWNrU2l6ZS5zZXRNaW5NYXgobWluVHJhY2tCcmVhZHRoLCBtYXhUcmFja0Jy
ZWFkdGgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJh
Y2tMaXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVz
LCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkTGluZXMsIE9yZGVyZWROYW1lZEdyaWRMaW5l
c01hcCYgb3JkZXJlZE5hbWVkR3JpZExpbmVzLCBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYg
c3RhdGUpCi17Ci0gICAgLy8gSGFuZGxlICdub25lJy4KLSAgICBpZiAoaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZSkpIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwotICAgIH0KLQot
ICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0PigqdmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICB1bnNpZ25lZCBjdXJyZW50TmFtZWRHcmlkTGluZSA9IDA7Ci0gICAgZm9yIChhdXRv
JiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkpIHsKLSAgICAg
ICAgaWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSkgewot
ICAgICAgICAgICAgZm9yIChhdXRvJiBjdXJyZW50R3JpZExpbmVOYW1lIDogZG93bmNhc3Q8Q1NT
R3JpZExpbmVOYW1lc1ZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAg
ICAgU3RyaW5nIG5hbWVkR3JpZExpbmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3Vy
cmVudEdyaWRMaW5lTmFtZS5nZXQoKSkuZ2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgICAg
ICBOYW1lZEdyaWRMaW5lc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFk
ZChuYW1lZEdyaWRMaW5lLCBWZWN0b3I8dW5zaWduZWQ+KCkpOwotICAgICAgICAgICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKLSAgICAg
ICAgICAgICAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXA6OkFkZFJlc3VsdCBvcmRlcmVkUmVz
dWx0ID0gb3JkZXJlZE5hbWVkR3JpZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlkTGluZSwgVmVj
dG9yPFN0cmluZz4oKSk7Ci0gICAgICAgICAgICAgICAgb3JkZXJlZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kKG5hbWVkR3JpZExpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICArK2N1cnJlbnROYW1lZEdyaWRMaW5lOwot
ICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZTsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlk
VHJhY2tTaXplKGN1cnJlbnRWYWx1ZSwgdHJhY2tTaXplLCBzdGF0ZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdHJhY2tTaXplcy5hcHBlbmQodHJhY2tTaXplKTsKLSAg
ICB9Ci0KLSAgICAvLyBUaGUgcGFyc2VyIHNob3VsZCBoYXZlIHJlamVjdGVkIGFueSA8dHJhY2st
bGlzdD4gd2l0aG91dCBhbnkgPHRyYWNrLXNpemU+IGFzCi0gICAgLy8gdGhpcyBpcyBub3QgY29u
Zm9ybWFudCB0byB0aGUgc3ludGF4LgotICAgIEFTU0VSVCghdHJhY2tTaXplcy5pc0VtcHR5KCkp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi0KLXN0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlv
bihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCi17Ci0gICAgLy8gV2Ug
YWNjZXB0IHRoZSBzcGVjaWZpY2F0aW9uJ3MgZ3JhbW1hcjoKLSAgICAvLyBhdXRvIHwgPGN1c3Rv
bS1pZGVudD4gfCBbIDxpbnRlZ2VyPiAmJiA8Y3VzdG9tLWlkZW50Pj8gXSB8IFsgc3BhbiAmJiBb
IDxpbnRlZ2VyPiB8fCA8Y3VzdG9tLWlkZW50PiBdIF0KLSAgICBpZiAoaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZSkpIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgICAgIC8vIFdl
IHRyYW5zbGF0ZSA8aWRlbnQ+IHRvIDxzdHJpbmc+IGR1cmluZyBwYXJzaW5nIGFzIGl0IG1ha2Vz
IGhhbmRsaW5nIGl0IHNpbXBsZXIuCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmlu
ZygpKSB7Ci0gICAgICAgICAgICBwb3NpdGlvbi5zZXROYW1lZEdyaWRBcmVhKHByaW1pdGl2ZVZh
bHVlLmdldFN0cmluZ1ZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLQotICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlQXV0byk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGF1dG8mIHZhbHVl
cyA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKTsKLSAgICBBU1NFUlQodmFsdWVzLmxl
bmd0aCgpKTsKLQotICAgIGJvb2wgaXNTcGFuUG9zaXRpb24gPSBmYWxzZTsKLSAgICBpbnQgZ3Jp
ZExpbmVOdW1iZXIgPSAwOwotICAgIFN0cmluZyBncmlkTGluZU5hbWU7Ci0KLSAgICBhdXRvIGl0
ID0gdmFsdWVzLmJlZ2luKCk7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9
ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXQtPmdldCgpKTsKLSAgICBpZiAoY3VycmVu
dFZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTcGFuKSB7Ci0gICAgICAgIGlzU3BhblBv
c2l0aW9uID0gdHJ1ZTsKLSAgICAgICAgKytpdDsKLSAgICAgICAgY3VycmVudFZhbHVlID0gaXQg
IT0gdmFsdWVzLmVuZCgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdC0+Z2V0KCkp
IDogbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1
ZS0+aXNOdW1iZXIoKSkgewotICAgICAgICBncmlkTGluZU51bWJlciA9IGN1cnJlbnRWYWx1ZS0+
Z2V0SW50VmFsdWUoKTsKLSAgICAgICAgKytpdDsKLSAgICAgICAgY3VycmVudFZhbHVlID0gaXQg
IT0gdmFsdWVzLmVuZCgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdC0+Z2V0KCkp
IDogbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1
ZS0+aXNTdHJpbmcoKSkgewotICAgICAgICBncmlkTGluZU5hbWUgPSBjdXJyZW50VmFsdWUtPmdl
dFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICsraXQ7Ci0gICAgfQotCi0gICAgQVNTRVJUKGl0ID09
IHZhbHVlcy5lbmQoKSk7Ci0gICAgaWYgKGlzU3BhblBvc2l0aW9uKQotICAgICAgICBwb3NpdGlv
bi5zZXRTcGFuUG9zaXRpb24oZ3JpZExpbmVOdW1iZXIgPyBncmlkTGluZU51bWJlciA6IDEsIGdy
aWRMaW5lTmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBwb3NpdGlvbi5zZXRFeHBsaWNpdFBvc2l0
aW9uKGdyaWRMaW5lTnVtYmVyLCBncmlkTGluZU5hbWUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0jZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KLQogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAKIExlbmd0aCBTdHlsZVJlc29sdmVyOjpwYXJzZVNuYXBDb29yZGluYXRl
KENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKQEAgLTI1OTIsMTgyICsyNDMxLDYgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlP
VVQpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRBdXRvQ29sdW1uczogewotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChncmlkQXV0b0NvbHVtbnMsIEdyaWRBdXRvQ29s
dW1ucyk7Ci0gICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXplOwotICAgICAgICBpZiAoIWNy
ZWF0ZUdyaWRUcmFja1NpemUoKnZhbHVlLCB0cmFja1NpemUsIHN0YXRlKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZEF1dG9Db2x1bW5zKHRyYWNr
U2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEdyaWRBdXRvUm93czogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChncmlk
QXV0b1Jvd3MsIEdyaWRBdXRvUm93cyk7Ci0gICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXpl
OwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja1NpemUoKnZhbHVlLCB0cmFja1NpemUsIHN0
YXRlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3Jp
ZEF1dG9Sb3dzKHRyYWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEdyaWRUZW1wbGF0ZUNvbHVtbnM6IHsKLSAgICAgICAgaWYgKGlzSW5o
ZXJpdCkgewotICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRHcmlkQ29sdW1ucyhtX3N0
YXRlLnBhcmVudFN0eWxlKCktPmdyaWRDb2x1bW5zKCkpOwotICAgICAgICAgICAgbV9zdGF0ZS5z
dHlsZSgpLT5zZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhtX3N0YXRlLnBhcmVudFN0eWxlKCktPm5h
bWVkR3JpZENvbHVtbkxpbmVzKCkpOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRP
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMobV9zdGF0ZS5wYXJlbnRTdHlsZSgpLT5vcmRlcmVk
TmFtZWRHcmlkQ29sdW1uTGluZXMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5z
ZXRHcmlkQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRDb2x1bW5zKCkpOwotICAgICAg
ICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHls
ZTo6aW5pdGlhbE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpOwotICAgICAgICAgICAgbV9zdGF0ZS5z
dHlsZSgpLT5zZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRp
YWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IHRyYWNrU2l6ZXM7Ci0gICAg
ICAgIE5hbWVkR3JpZExpbmVzTWFwIG5hbWVkR3JpZExpbmVzOwotICAgICAgICBPcmRlcmVkTmFt
ZWRHcmlkTGluZXNNYXAgb3JkZXJlZE5hbWVkR3JpZExpbmVzOwotICAgICAgICBpZiAoIWNyZWF0
ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMsIG5hbWVkR3JpZExpbmVzLCBvcmRlcmVk
TmFtZWRHcmlkTGluZXMsIHN0YXRlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY29u
c3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYXMgPSBzdGF0ZS5zdHlsZSgpLT5uYW1l
ZEdyaWRBcmVhKCk7Ci0gICAgICAgIGlmICghbmFtZWRHcmlkQXJlYXMuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgY3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShuYW1lZEdy
aWRBcmVhcywgbmFtZWRHcmlkTGluZXMsIEZvckNvbHVtbnMpOwotCi0gICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldEdyaWRDb2x1bW5zKHRyYWNrU2l6ZXMpOwotICAgICAgICBzdGF0ZS5zdHlsZSgp
LT5zZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhuYW1lZEdyaWRMaW5lcyk7Ci0gICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvcmRlcmVkTmFtZWRHcmlk
TGluZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRHcmlkVGVtcGxhdGVSb3dzOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0R3JpZFJvd3MobV9zdGF0ZS5wYXJlbnRTdHlsZSgpLT5n
cmlkUm93cygpKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkUm93
TGluZXMobV9zdGF0ZS5wYXJlbnRTdHlsZSgpLT5uYW1lZEdyaWRSb3dMaW5lcygpKTsKLSAgICAg
ICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKG1fc3Rh
dGUucGFyZW50U3R5bGUoKS0+b3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAg
ICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0R3JpZFJvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlk
Um93cygpKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkUm93TGlu
ZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dMaW5lcygpKTsKLSAgICAgICAgICAg
IG1fc3RhdGUuc3R5bGUoKS0+c2V0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxl
Ojppbml0aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiB0cmFja1NpemVzOwot
ICAgICAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRMaW5lczsKLSAgICAgICAgT3JkZXJl
ZE5hbWVkR3JpZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRMaW5lczsKLSAgICAgICAgaWYgKCFj
cmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja1NpemVzLCBuYW1lZEdyaWRMaW5lcywgb3Jk
ZXJlZE5hbWVkR3JpZExpbmVzLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWFzID0gc3RhdGUuc3R5bGUoKS0+
bmFtZWRHcmlkQXJlYSgpOwotICAgICAgICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmFt
ZWRHcmlkQXJlYXMsIG5hbWVkR3JpZExpbmVzLCBGb3JSb3dzKTsKLQotICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRHcmlkUm93cyh0cmFja1NpemVzKTsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+
c2V0TmFtZWRHcmlkUm93TGluZXMobmFtZWRHcmlkTGluZXMpOwotICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5zZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMob3JkZXJlZE5hbWVkR3JpZExpbmVzKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlk
Q29sdW1uU3RhcnQ6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZ3JpZEl0
ZW1Db2x1bW5TdGFydCwgR3JpZEl0ZW1Db2x1bW5TdGFydCk7Ci0gICAgICAgIEdyaWRQb3NpdGlv
biBjb2x1bW5TdGFydFBvc2l0aW9uOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2
YWx1ZSwgY29sdW1uU3RhcnRQb3NpdGlvbikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldEdyaWRJdGVtQ29sdW1uU3RhcnQoY29sdW1uU3RhcnRQb3NpdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdy
aWRDb2x1bW5FbmQ6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZ3JpZEl0
ZW1Db2x1bW5FbmQsIEdyaWRJdGVtQ29sdW1uRW5kKTsKLSAgICAgICAgR3JpZFBvc2l0aW9uIGNv
bHVtbkVuZFBvc2l0aW9uOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwg
Y29sdW1uRW5kUG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRHcmlkSXRlbUNvbHVtbkVuZChjb2x1bW5FbmRQb3NpdGlvbik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFJvd1N0YXJ0
OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGdyaWRJdGVtUm93U3RhcnQs
IEdyaWRJdGVtUm93U3RhcnQpOwotICAgICAgICBHcmlkUG9zaXRpb24gcm93U3RhcnRQb3NpdGlv
bjsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIHJvd1N0YXJ0UG9zaXRp
b24pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlk
SXRlbVJvd1N0YXJ0KHJvd1N0YXJ0UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93RW5kOiB7Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKGdyaWRJdGVtUm93RW5kLCBHcmlkSXRlbVJvd0VuZCk7Ci0gICAg
ICAgIEdyaWRQb3NpdGlvbiByb3dFbmRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlk
UG9zaXRpb24odmFsdWUsIHJvd0VuZFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZEl0ZW1Sb3dFbmQocm93RW5kUG9zaXRpb24pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkVGVt
cGxhdGVBcmVhczogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhKHN0YXRlLnBhcmVudFN0eWxlKCktPm5hbWVkR3Jp
ZEFyZWEoKSk7Ci0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhUm93
Q291bnQoc3RhdGUucGFyZW50U3R5bGUoKS0+bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpOwotICAg
ICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KHN0YXRl
LnBhcmVudFN0eWxlKCktPm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCgpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXROYW1lZEdyaWRBcmVhKFJlbmRlclN0eWxlOjppbml0aWFsTmFt
ZWRHcmlkQXJlYSgpKTsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFy
ZWFSb3dDb3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKTsKLSAg
ICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChSZW5k
ZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewotICAgICAgICAg
ICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIENTU0dyaWRUZW1wbGF0
ZUFyZWFzVmFsdWUmIGdyaWRUZW1wbGF0ZUFyZWFzVmFsdWUgPSBkb3duY2FzdDxDU1NHcmlkVGVt
cGxhdGVBcmVhc1ZhbHVlPigqdmFsdWUpOwotICAgICAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFw
JiBuZXdOYW1lZEdyaWRBcmVhcyA9IGdyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuZ3JpZEFyZWFNYXAo
KTsKLQotICAgICAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRDb2x1bW5MaW5lcyA9IHN0
YXRlLnN0eWxlKCktPm5hbWVkR3JpZENvbHVtbkxpbmVzKCk7Ci0gICAgICAgIE5hbWVkR3JpZExp
bmVzTWFwIG5hbWVkR3JpZFJvd0xpbmVzID0gc3RhdGUuc3R5bGUoKS0+bmFtZWRHcmlkUm93TGlu
ZXMoKTsKLSAgICAgICAgY3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShu
ZXdOYW1lZEdyaWRBcmVhcywgbmFtZWRHcmlkQ29sdW1uTGluZXMsIEZvckNvbHVtbnMpOwotICAg
ICAgICBjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5ld05hbWVkR3Jp
ZEFyZWFzLCBuYW1lZEdyaWRSb3dMaW5lcywgRm9yUm93cyk7Ci0gICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldE5hbWVkR3JpZENvbHVtbkxpbmVzKG5hbWVkR3JpZENvbHVtbkxpbmVzKTsKLSAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFtZWRHcmlkUm93TGluZXMobmFtZWRHcmlkUm93TGluZXMp
OwotCi0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWEoZ3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZS5ncmlkQXJlYU1hcCgpKTsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TmFt
ZWRHcmlkQXJlYVJvd0NvdW50KGdyaWRUZW1wbGF0ZUFyZWFzVmFsdWUucm93Q291bnQoKSk7Ci0g
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChncmlkVGVt
cGxhdGVBcmVhc1ZhbHVlLmNvbHVtbkNvdW50KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b0Zsb3c6IHsKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwoZ3JpZEF1dG9GbG93LCBHcmlkQXV0b0Zsb3cpOwotICAgICAg
ICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4oKnZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgQ1NTVmFsdWVMaXN0JiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdmFsdWUp
OwotCi0gICAgICAgIGlmICghbGlzdC5sZW5ndGgoKSkgewotICAgICAgICAgICAgc3RhdGUuc3R5
bGUoKS0+c2V0R3JpZEF1dG9GbG93KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9GbG93KCkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUmIGZpcnN0ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpsaXN0Lml0ZW0oMCkp
OwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gbGlzdC5sZW5ndGgoKSA9PSAy
ID8gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGxpc3QuaXRlbSgxKSkgOiBudWxscHRyOwot
Ci0gICAgICAgIEdyaWRBdXRvRmxvdyBhdXRvRmxvdyA9IFJlbmRlclN0eWxlOjppbml0aWFsR3Jp
ZEF1dG9GbG93KCk7Ci0gICAgICAgIHN3aXRjaCAoZmlyc3QuZ2V0VmFsdWVJRCgpKSB7Ci0gICAg
ICAgIGNhc2UgQ1NTVmFsdWVSb3c6Ci0gICAgICAgICAgICBpZiAoc2Vjb25kICYmIHNlY29uZC0+
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRGVuc2UpCi0gICAgICAgICAgICAgICAgYXV0b0Zsb3cg
PSAgQXV0b0Zsb3dSb3dEZW5zZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBh
dXRvRmxvdyA9IEF1dG9GbG93Um93OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTVmFsdWVDb2x1bW46Ci0gICAgICAgICAgICBpZiAoc2Vjb25kICYmIHNlY29uZC0+Z2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlRGVuc2UpCi0gICAgICAgICAgICAgICAgYXV0b0Zsb3cgPSBBdXRv
Rmxvd0NvbHVtbkRlbnNlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGF1dG9G
bG93ID0gQXV0b0Zsb3dDb2x1bW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkQXV0b0Zsb3coYXV0
b0Zsb3cpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJ
RF9MQVlPVVQpICovCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0U2Nyb2xsU25hcFR5cGU6CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKHNjcm9sbFNuYXBUeXBlLCBTY3JvbGxTbmFwVHlwZSk7CkBAIC0zMDg2LDYgKzI3NDks
MTggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQs
IENTU1ZhbHVlKiB2YWx1ZSkKICAgICBjYXNlIENTU1Byb3BlcnR5T3JpZW50YXRpb246CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVVzZXJab29tOgogI2VuZGlmCisjaWYgRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEF1dG9Db2x1bW5zOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b1Jvd3M6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEdyaWRUZW1wbGF0ZUNvbHVtbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRU
ZW1wbGF0ZVJvd3M6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5TdGFydDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZENvbHVtbkVuZDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0R3JpZFJvd1N0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlk
Um93RW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkVGVtcGxhdGVBcmVhczoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEF1dG9GbG93OgorI2VuZGlmIC8vIEVOQUJMRShD
U1NfR1JJRF9MQVlPVVQpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtl
cHJvcC5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA3NDExYTE4YjEx
YzUxZTk4YWE2NzBlNTU4NjY2ODgwZWE1YTQ1ZDQ3Li42MGQ2ODA0NzVmZTE3YjgzNWRiMmM5MzIz
ZmY1NjQ3YjQwZTk0NTUwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3Au
cGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC00NSw2ICs0NSw3IEBA
IG15ICVwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnM7CiBteSAlc3R5bGVCdWlsZGVy
T3B0aW9ucyA9ICgKICAgQW5pbWF0aW9uUHJvcGVydHkgPT4gMSwgIyBEZWZpbmVkIGluIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAogICBBdXRvRnVuY3Rpb25zID0+
IDEsCisgIENvbmRpdGlvbmFsQ29udmVydGVyID0+IDEsCiAgIENvbnZlcnRlciA9PiAxLAogICBD
dXN0b20gPT4gMSwKICAgRmlsbExheWVyUHJvcGVydHkgPT4gMSwKQEAgLTc3Miw2ICs3NzMsOSBA
QCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRlciB7CiAgIG15ICRjb252ZXJ0ZWRWYWx1ZTsKICAgaWYg
KGV4aXN0cygkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiQ29udmVy
dGVyIn0pKSB7CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gIlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiQ29u
dmVydGVyIn0gLiAiKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKSI7CisgIH0gZWxzaWYgKGV4aXN0cygk
cHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiQ29uZGl0aW9uYWxDb252
ZXJ0ZXIifSkpIHsKKyAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAiIC4gJHBy
b3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17IlR5cGVOYW1lIn0gLiAiIGNv
bnZlcnRlZFZhbHVlO1xuIjsKKyAgICAkY29udmVydGVkVmFsdWUgPSAiY29udmVydGVkVmFsdWUi
OwogICB9IGVsc2UgewogICAgICRjb252ZXJ0ZWRWYWx1ZSA9ICJzdGF0aWNfY2FzdDwiIC4gJHBy
b3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17IlR5cGVOYW1lIn0gLiAiPihk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSI7CiAgIH0KQEAgLTgwNiw2ICs4MTAs
MTAgQEAgc3ViIGdlbmVyYXRlVmFsdWVTZXR0ZXIgewogICB9CiAgIGlmICghJGRpZENhbGxTZXRW
YWx1ZSkgewogICAgIG15ICRzZXRWYWx1ZSA9ICRzdHlsZSAuICItPiIgLiAkc2V0dGVyOworICAg
IGlmIChleGlzdHMoJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17IkNv
bmRpdGlvbmFsQ29udmVydGVyIn0pKSB7CisgICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBpZiAoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0IiAuICRwcm9wZXJ0aWVz
V2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJDb25kaXRpb25hbENvbnZlcnRlciJ9IC4g
IihzdHlsZVJlc29sdmVyLCB2YWx1ZSwgIiAuICRjb252ZXJ0ZWRWYWx1ZSAuICIpKVxuIjsKKyAg
ICAgICRzZXR0ZXJDb250ZW50IC49ICIgICAgIjsKKyAgICB9CiAgICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgIiAuICRzZXRWYWx1ZSAuICIoIiAuICRjb252ZXJ0ZWRWYWx1ZSAu
ICIpO1xuIjsKICAgfQogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIn1cbiI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>